:root{--colour-page:#f4f1ea;--colour-ink:#23201c;--colour-ink-soft:#6b6459;--colour-rule:#d9d3c6;--colour-plot-empty:#eae5da;--colour-plot-garden:#dae2cd;--colour-plot-legal:#e2ecdf;--colour-plot-legal-edge:#7d9c81;--colour-fabric:#cfc6b4;--colour-fabric-edge:#a3987f;--colour-front-door:#8c5a3c;--colour-tier-threshold:#c8b8a1;--colour-tier-daily:#b7c3a8;--colour-tier-private:#a9b6c4;--colour-tier-outside:#a8bfa0;--colour-tier-roof:#cb9f8c;--colour-tier-wildcard:#c4b0bd;--colour-street:#8d8577;--colour-garden:#778a6b;--colour-selected:#3f6a4a;--colour-selected-ink:#f4f1ea;--colour-focus:#3f6a4a;--colour-button:#23201c;--colour-button-ink:#f4f1ea;--colour-observation:#efeadd;--colour-observation-edge:#8d8577;--colour-consent:#6b6459;--colour-consent-permitted:#8d9c85;--colour-consent-householder:#8d8577;--colour-consent-sensitive:#a08a6a;--colour-consent-demolition:#8c5a3c;--colour-demolition:#f1e8e0;--colour-demolition-edge:#8c5a3c;--colour-button-quiet:#6b6459;--colour-report-heading:#6b6459;--colour-report-care:#23201c;--colour-report-care-mark:#8c5a3c;--colour-closing:#23201c;--font-body:ui-serif, Georgia, "Times New Roman", serif;--font-ui:ui-sans-serif, system-ui, -apple-system, sans-serif;--size-title:2rem;--size-closing:1.375rem;--size-observation:1.1875rem;--size-body:1rem;--size-small:.8125rem;--size-cell-name:.6875rem;--size-cell-ref:.625rem;--size-cell-note:.5625rem;--leading-body:1.55;--space-1:.25rem;--space-2:.5rem;--space-3:1rem;--space-4:1.5rem;--space-5:2.5rem;--radius:2px;--border:1px;--focus-offset:2px;--cell-size:clamp(3.25rem, 11vmin, 5.5rem);--measure-app:40rem;--measure-prose:30rem;--measure-card:34rem;--measure-note:32rem;--measure-report:46rem;--plan-min-width:9rem;--plan-min-height:4.5rem;--measure-label:4rem}*{box-sizing:border-box}body{background:var(--colour-page);color:var(--colour-ink);font-family:var(--font-body);font-size:var(--size-body);line-height:var(--leading-body);margin:0}.app{max-width:var(--measure-app);padding:var(--space-5) var(--space-3);margin:0 auto}:focus-visible{outline:2px solid var(--colour-focus);outline-offset:var(--focus-offset)}.app__header{justify-content:space-between;align-items:baseline;gap:var(--space-3);border-bottom:1px solid var(--colour-rule);padding-bottom:var(--space-2);margin-bottom:var(--space-4);display:flex}.app__title{font-size:var(--size-title);margin:0;font-weight:400}.app__status{align-items:baseline;gap:var(--space-3);display:flex}.app__round{font-family:var(--font-ui);font-size:var(--size-small);color:var(--colour-ink-soft);font-variant-numeric:tabular-nums;margin:0}.app__rules-button{cursor:pointer;font-family:var(--font-ui);font-size:var(--size-small);color:var(--colour-ink-soft);text-underline-offset:.2em;background:0 0;border:0;padding:0;text-decoration:underline}.app__rules-button:hover,.app__rules-button[aria-expanded=true]{color:var(--colour-ink)}.app__prompt{font-size:var(--size-small);color:var(--colour-ink-soft);text-align:center;margin:var(--space-3) 0}.intro{max-width:var(--measure-prose);text-align:center;margin:0 auto}.intro__premise{font-size:var(--size-title);margin:var(--space-5) 0 var(--space-2)}.intro__why{color:var(--colour-ink-soft);margin:0 0 var(--space-4);font-style:italic}.intro__situation{font-size:var(--size-closing);border-top:1px solid var(--colour-rule);border-bottom:1px solid var(--colour-rule);padding:var(--space-4) 0;margin:0 0 var(--space-4);line-height:1.4}.rules{text-align:left;margin:0 0 var(--space-4)}.rules--open{max-width:var(--measure-card);margin:0 auto var(--space-4);padding:var(--space-4);border:1px solid var(--colour-rule);border-radius:var(--radius);background:var(--colour-observation);text-align:center}.rules--open .rules__list{text-align:left}.rules__heading{font-family:var(--font-ui);font-size:var(--size-small);letter-spacing:.08em;text-transform:uppercase;color:var(--colour-report-heading);margin:0 0 var(--space-2);font-weight:400}.rules__objective{margin:0 0 var(--space-3)}.rules__list{margin:0 0 var(--space-3);font-size:var(--size-small);color:var(--colour-ink-soft);padding:0;list-style:none}.rules__point{padding-left:var(--space-3);text-indent:calc(var(--space-3) * -1);margin-bottom:var(--space-2)}.rules__point:before{content:"·";padding-right:var(--space-2)}.plot__levels{justify-content:center;gap:var(--space-1);margin:var(--space-2) auto 0;flex-wrap:wrap;display:flex}.plot__level{font-family:var(--font-ui);font-size:var(--size-small);letter-spacing:.04em;padding:var(--space-1) var(--space-3);border:1px solid var(--colour-rule);border-radius:var(--radius);color:var(--colour-ink-soft);background:0 0}.plot__level:not([aria-pressed=true]):hover{border-color:var(--colour-ink-soft);color:var(--colour-ink)}.plot__level[aria-pressed=true]{background:var(--colour-fabric);border-color:var(--colour-ink-soft);color:var(--colour-ink)}.plot__level[data-legal=true]:after,.plot__level[data-cause=true]:after{content:"";vertical-align:.1em;background:var(--colour-plot-legal-edge);border-radius:50%;width:.4em;height:.4em;margin-left:.5em;display:inline-block}.plot__level[data-cause=true]:after{background:var(--colour-observation-edge)}.plot__level[data-cause=true]{border-color:var(--colour-observation-edge)}.plot__edge{font-family:var(--font-ui);font-size:var(--size-small);letter-spacing:.08em;text-transform:uppercase;text-align:center;margin:var(--space-2) 0}.plot__edge--street{color:var(--colour-street)}.plot__edge--garden{color:var(--colour-garden)}.plot__edge--garden[data-shown=false]{visibility:hidden}.plot__sun{text-transform:none;letter-spacing:0;opacity:.75}.plot__frame{min-height:calc(var(--plot-max-rows) * var(--cell-size) + (var(--plot-max-rows) - 1) * var(--space-1));justify-content:center;align-items:flex-start;display:flex}.plot__grid{grid-template-columns:repeat(5, var(--cell-size));grid-auto-rows:var(--cell-size);gap:var(--space-1);display:grid}.cell{justify-content:flex-start;align-items:center;gap:var(--space-1);padding:var(--space-1);border:var(--border) solid transparent;border-radius:var(--radius);background:var(--colour-plot-empty);color:var(--colour-ink);font-family:var(--font-ui);font-size:var(--size-small);text-align:center;cursor:default;flex-direction:column;line-height:1.15;display:flex}.cell:not(:disabled){cursor:pointer}.cell__ref{font-size:var(--size-cell-ref);letter-spacing:.06em;color:var(--colour-ink-soft)}.cell__name{font-size:var(--size-cell-name);overflow-wrap:anywhere}.cell__inherited{font-size:var(--size-cell-note);letter-spacing:.04em;color:var(--colour-ink-soft);opacity:.75;margin-top:auto}.cell--inherited{background:var(--colour-fabric);border-color:var(--colour-fabric-edge);border-style:solid}.cell--fabric{border-style:dashed}.cell--door{border-color:var(--colour-front-door)}.cell--door .cell__name{color:var(--colour-front-door)}.cell--empty[data-garden=true]:not(.cell--legal){background:var(--colour-plot-garden)}.cell--legal{background:var(--colour-plot-legal);border-color:var(--colour-plot-legal-edge);border-style:solid}.cell--fabric.cell--legal{background:var(--colour-fabric);border-color:var(--colour-plot-legal-edge);border-style:solid}.cell--placed[data-tier=threshold]{background:var(--colour-tier-threshold)}.cell--placed[data-tier=daily]{background:var(--colour-tier-daily)}.cell--placed[data-tier=private]{background:var(--colour-tier-private)}.cell--placed[data-tier=outside]{background:var(--colour-tier-outside)}.cell--placed[data-tier=roof]{background:var(--colour-tier-roof)}.cell--placed[data-tier=wildcard]{background:var(--colour-tier-wildcard)}.plot--reading .cell{opacity:.4;transition:opacity .12s ease-out}.plot--reading .cell--subject,.plot--reading .cell--cause{opacity:1}.plot--reading .cell--subject{border-color:var(--colour-observation-edge);box-shadow:0 0 0 2px var(--colour-observation-edge);border-style:solid}.plot--reading .cell--cause{border-color:var(--colour-observation-edge);border-style:solid}.observation{align-items:center;gap:var(--space-2);width:100%;margin-top:var(--space-3);padding:var(--space-4) var(--space-3);border:1px solid var(--colour-rule);border-left:var(--space-1) solid var(--colour-observation-edge);border-radius:var(--radius);background:var(--colour-observation);color:var(--colour-ink);font-family:var(--font-body);cursor:pointer;text-align:center;flex-direction:column;display:flex}.observation__cause{font-family:var(--font-ui);font-size:var(--size-small);color:var(--colour-observation-edge)}.observation__line{font-size:var(--size-observation);line-height:var(--leading-body);max-width:var(--measure-prose)}.observation__dismiss{font-family:var(--font-ui);font-size:var(--size-small);letter-spacing:.06em;text-transform:uppercase;color:var(--colour-ink-soft)}.hand{grid-template-columns:repeat(auto-fit, minmax(var(--plan-min-width), 1fr));gap:var(--space-2);margin:var(--space-3) 0 0;padding:0;list-style:none;display:grid}.plan{align-items:flex-start;gap:var(--space-1);width:100%;min-height:var(--plan-min-height);padding:var(--space-2) var(--space-3);border:1px solid var(--colour-rule);border-radius:var(--radius);background:var(--colour-plot-empty);color:var(--colour-ink);font-family:var(--font-ui);text-align:left;cursor:pointer;flex-direction:column;display:flex}.plan[data-tier=threshold]{border-left:var(--space-1) solid var(--colour-tier-threshold)}.plan[data-tier=daily]{border-left:var(--space-1) solid var(--colour-tier-daily)}.plan[data-tier=private]{border-left:var(--space-1) solid var(--colour-tier-private)}.plan[data-tier=outside]{border-left:var(--space-1) solid var(--colour-tier-outside)}.plan[data-tier=roof]{border-left:var(--space-1) solid var(--colour-tier-roof)}.plan[data-tier=wildcard]{border-left:var(--space-1) solid var(--colour-tier-wildcard)}.plan--selected{background:var(--colour-selected);color:var(--colour-selected-ink);border-color:var(--colour-selected)}.plan__name{font-size:var(--size-body)}.plan__tier{font-size:var(--size-small);letter-spacing:.08em;text-transform:uppercase;opacity:.7}.plan__consent{align-items:center;gap:var(--space-1);font-size:var(--size-small);color:var(--colour-consent);margin-top:auto;display:flex}.plan__consent:before{content:"";background:var(--consent-dot,var(--colour-consent));border-radius:50%;width:.5em;height:.5em}.plan[data-consent=permitted]{--consent-dot:var(--colour-consent-permitted)}.plan[data-consent=householder]{--consent-dot:var(--colour-consent-householder)}.plan[data-consent=sensitive]{--consent-dot:var(--colour-consent-sensitive)}.plan[data-consent=demolition]{--consent-dot:var(--colour-consent-demolition)}.plan--selected .plan__consent{color:var(--colour-selected-ink);opacity:.85}.demolition{width:100%;margin-top:var(--space-3);padding:var(--space-4) var(--space-3);border:1px solid var(--colour-rule);border-left:var(--space-1) solid var(--colour-demolition-edge);border-radius:var(--radius);background:var(--colour-demolition);text-align:center}.demolition__line{font-size:var(--size-observation);max-width:var(--measure-note);margin:0 auto}.demolition__note{font-family:var(--font-ui);font-size:var(--size-small);letter-spacing:.08em;text-transform:uppercase;color:var(--colour-demolition-edge);margin:var(--space-3) 0 0}.demolition__choices{justify-content:center;gap:var(--space-2);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.finished{text-align:center}.finished__line{font-size:var(--size-title);margin:var(--space-4) 0 var(--space-2)}.report{max-width:var(--measure-report);margin:var(--space-5) auto 0;text-align:left}.report__pairs{grid-template-columns:1fr;gap:0;display:grid}.report__pair{grid-template-columns:subgrid;border-top:1px solid var(--colour-rule);padding:var(--space-3) 0;grid-column:1/-1;display:grid}.report__name{font-family:var(--font-ui);font-size:var(--size-small);letter-spacing:.06em;color:var(--colour-ink-soft);margin:0 0 var(--space-2);grid-column:1/-1;font-weight:400}.report__have,.report__care{margin:0}.report__care{color:var(--colour-report-care);border-left:2px solid var(--colour-report-care-mark);padding-left:var(--space-3);margin-top:var(--space-2)}.report__heading{font-family:var(--font-ui);font-size:var(--size-small);letter-spacing:.08em;text-transform:uppercase;color:var(--colour-report-heading);margin:0 0 var(--space-2);font-weight:400}.report__heading--have,.report__heading--care{display:none}@media (width>=44rem){.report__pairs{column-gap:var(--space-4);grid-template-columns:1fr 1.15fr}.report__heading--have,.report__heading--care{display:block}.report__pair{column-gap:var(--space-4);row-gap:var(--space-2)}.report__care{margin-top:0}}.report__notes{margin:var(--space-4) 0 0;border-top:1px solid var(--colour-rule);padding-top:var(--space-3);font-size:var(--size-small)}.report__note{gap:var(--space-3);margin-bottom:var(--space-2);display:flex}.report__note-label{flex:0 0 var(--measure-label);font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--colour-report-heading)}.report__note-line{color:var(--colour-ink-soft);margin:0}.report__obligation{margin-bottom:var(--space-2);display:block}.report__obligation:last-child{margin-bottom:0}.planning{max-width:var(--measure-note);margin:var(--space-5) auto 0;padding-top:var(--space-4);border-top:1px solid var(--colour-rule);text-align:center}.planning__heading{margin:0 0 var(--space-2);font-family:var(--font-ui);font-size:var(--size-small);letter-spacing:.08em;text-transform:uppercase;color:var(--colour-report-heading);font-weight:400}.planning__needed{margin:0 0 var(--space-2);color:var(--colour-ink)}.planning__route,.planning__record{margin:0 0 var(--space-2);color:var(--colour-ink-soft)}.planning__source{margin:var(--space-3) 0 0;font-family:var(--font-ui);font-size:var(--size-small);color:var(--colour-ink-soft);opacity:.75}.report__closing{font-size:var(--size-closing);text-align:center;color:var(--colour-closing);margin:var(--space-5) 0}.report__answer{max-width:var(--measure-note);margin:0 auto var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--colour-rule);text-align:center;color:var(--colour-ink-soft)}.button{padding:var(--space-2) var(--space-4);border-radius:var(--radius);background:var(--colour-button);color:var(--colour-button-ink);font-family:var(--font-ui);font-size:var(--size-body);cursor:pointer;border:none}.button--quiet{color:var(--colour-button-quiet);border:1px solid var(--colour-rule);background:0 0}
