.pt-stats{margin-bottom:clamp(24px,3vw,40px)}.pt-tool{gap:var(--sp-4);padding-bottom:var(--sp-6);grid-template-columns:minmax(0,1fr);display:grid}.pt-bar{justify-content:space-between;align-items:center;gap:var(--sp-3) var(--sp-5);flex-wrap:wrap;display:flex}.pt-bar .field{flex:0 auto}.pt-layout{gap:var(--sp-4);grid-template-columns:minmax(0,1fr) 360px;align-items:start;display:grid}.pt-stage{padding:var(--sp-3);gap:var(--sp-3);display:grid;overflow:hidden}.pt-side{min-width:0}.pt-svg{border-radius:var(--r-sm);cursor:crosshair;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:100%;height:auto;max-height:min(84svh,900px);margin-inline:auto;display:block}.pt-svg>*{pointer-events:none}.pt-bg{fill:var(--bg-2)}.pt-field{fill:var(--map-lawn)}.pt-nb-plot{fill:var(--map-neighbour);stroke:var(--rule-2);stroke-width:1px;vector-effect:non-scaling-stroke}.pt-nb-house{fill:var(--map-roof);fill-opacity:.18;stroke:var(--map-roof);stroke-opacity:.4;stroke-width:1px;vector-effect:non-scaling-stroke}.pt-verge{fill:var(--map-paving)}.pt-road{fill:var(--map-road)}.pt-road-centre{fill:none;stroke:var(--surface);stroke-width:1.5px;stroke-dasharray:10 8;opacity:.8;vector-effect:non-scaling-stroke}.pt-plot{fill:var(--map-plot)}.pt-bed[data-kind=mulch]{fill:color-mix(in srgb, var(--ink-3) 30%, var(--map-plot))}.pt-bed[data-kind=gravel]{fill:var(--map-paving);fill-opacity:.6}.pt-paved,.pt-outdoor{fill:var(--map-paving)}.pt-paved[data-kind=garden_path],.pt-paved[data-kind=service_path]{fill-opacity:.8}.pt-paved[data-kind=bins]{fill:color-mix(in srgb, var(--ink) 18%, var(--map-paving))}.pt-outdoor[data-role=deck]{fill:var(--zone-terrace);stroke:var(--plan-fixture);stroke-width:.75px;vector-effect:non-scaling-stroke}.pt-deck-base{fill:var(--zone-terrace)}.pt-deck-board{fill:none;stroke:color-mix(in srgb, var(--ink) 16%, transparent);stroke-width:.6px}.pt-outdoor[data-type=path]{fill-opacity:.8}.pt-outdoor[data-role=pool_coping]{fill:var(--surface-2);stroke:var(--plan-fixture);stroke-width:.75px;vector-effect:non-scaling-stroke}.pt-outdoor[data-covered=true]{stroke:var(--map-roof);stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.pt-water{fill:var(--plan-water,color-mix(in srgb, var(--info) 22%, var(--surface)));stroke:var(--plan-window);stroke-width:.75px;vector-effect:non-scaling-stroke}.pt-tank-body{fill:none;stroke:var(--ink-3);stroke-width:1px;stroke-dasharray:3 2;vector-effect:non-scaling-stroke}.pt-tank-lid{fill:var(--surface-2);stroke:var(--ink-2);stroke-width:1.2px;vector-effect:non-scaling-stroke}.pt-contour{fill:none;stroke:var(--map-contour);stroke-width:.8px;opacity:.75;vector-effect:non-scaling-stroke}.pt-contour[data-major=true]{stroke-width:1.5px;opacity:1}.pt-hedge{fill:none;stroke:var(--map-tree);stroke-linecap:round;stroke-linejoin:round}.pt-fence{fill:none;stroke:var(--ink-2);stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;vector-effect:non-scaling-stroke}.pt-fence[data-kind=mesh_fence]{stroke-width:1px;stroke-dasharray:2 2}.pt-fence-post,.pt-gate-post{fill:var(--ink)}.pt-gate-leaf{fill:var(--ink);stroke:var(--ink);stroke-width:3px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.pt-gate-park{fill:color-mix(in srgb, var(--ink) 6%, transparent);stroke:var(--ink-2);stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.pt-gate-arc{fill:none;stroke:var(--plan-door);stroke-width:1px;vector-effect:non-scaling-stroke}.pt-gate-open{fill:none;stroke:var(--ink-2);stroke-width:1.5px;vector-effect:non-scaling-stroke}.pt-pillar{fill:var(--ink)}.pt-crown{fill:var(--map-tree);fill-opacity:.26;stroke:var(--map-tree);stroke-width:1px;vector-effect:non-scaling-stroke}[data-feature=true]>.pt-crown{fill-opacity:.34;stroke-width:1.8px}.pt-trunk{fill:var(--map-tree)}.pt-shrub{fill:var(--map-tree);fill-opacity:.5}.pt-walls{fill:var(--surface-2)}.pt-garage{fill:var(--zone-garage);fill-opacity:.7}.pt-walls-line{fill:none;stroke:var(--ink);stroke-width:1.5px;stroke-linejoin:miter;vector-effect:non-scaling-stroke}.pt-roof-line{fill:none;stroke:var(--ink-3);stroke-width:.75px;vector-effect:non-scaling-stroke}.pt-roof{fill:none;stroke:var(--ink-3);stroke-width:1px;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.pt-post{fill:var(--ink)}.pt-boundary{fill:none;stroke:var(--map-plot-line);stroke-opacity:.3;stroke-width:6px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.pt-buildable{fill:none;stroke:var(--map-setback);stroke-width:1.25px;stroke-dasharray:6 4;opacity:.8;vector-effect:non-scaling-stroke}.pt-setback{fill:none;stroke:var(--map-setback);stroke-width:2px;vector-effect:non-scaling-stroke}.pt-setback[data-short=true]{stroke:var(--bad)}.pt-t{fill:var(--ink);font-family:var(--font-mono);paint-order:stroke;stroke:var(--surface);stroke-opacity:.75;stroke-width:.3em;stroke-linejoin:round;font-variant-numeric:tabular-nums}.pt-t-contour{fill:var(--ink-2)}.pt-t-contour[data-major=true]{fill:var(--ink);font-weight:var(--weight-strong)}.pt-t-height{fill:var(--ink-2)}.pt-t-place{fill:var(--ink-2);font-family:var(--font-sans);font-weight:var(--weight-strong);letter-spacing:.14em;text-transform:uppercase}.pt-t-setback{font-weight:var(--weight-strong)}.pt-t-setback[data-short=true]{fill:var(--bad)}.pt-t-house{fill:var(--ink);stroke-opacity:.9;font-family:var(--font-sans);font-weight:var(--weight-strong);letter-spacing:.02em}.pt-t-tree{fill:var(--ink-2);font-family:var(--font-sans);letter-spacing:.01em;stroke-opacity:.9;font-style:italic}.pt-cross{fill:none;stroke:var(--ink-3);stroke-width:1px;vector-effect:non-scaling-stroke}.pt-arrow{fill:var(--ink);stroke:var(--surface);stroke-width:2px;paint-order:stroke;stroke-linejoin:round}.pt-arrow-n{fill:var(--ink);font:var(--weight-strong) var(--fs-sm) / 1 var(--font-sans);paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}.pt-arrow-draw{fill:none;stroke:var(--ink-2);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.pt-arrow-label{fill:var(--ink-2);font:var(--weight-medium) var(--fs-2xs) / 1 var(--font-mono);paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}.pt-scale-seg{fill:var(--surface);stroke:var(--ink);stroke-width:1px;vector-effect:non-scaling-stroke}.pt-scale-seg[data-odd=true]{fill:var(--ink)}.pt-scale-text{fill:var(--ink-2);font-family:var(--font-mono);paint-order:stroke;stroke:var(--surface);stroke-width:.3em;stroke-linejoin:round}.pt-measure-line{fill:none;stroke:var(--accent);stroke-width:2.5px;vector-effect:non-scaling-stroke}.pt-measure-dot{fill:var(--accent);stroke:var(--surface);stroke-width:2px;vector-effect:non-scaling-stroke}.pt-measure-tag rect{fill:var(--ink)}.pt-measure-tag text{fill:var(--bg);font:var(--weight-strong) var(--fs-xs) / 1 var(--font-mono)}.pt-readout{min-height:1.5em;font-size:var(--fs-sm);color:var(--ink-2);margin:0;line-height:1.5}.pt-legend{padding:var(--sp-3) var(--sp-1) 0;border-top:1px solid var(--rule);margin:0;list-style:none}.pt-sw{border:1px solid var(--rule-2);border-radius:3px;flex:none;width:14px;height:12px;display:inline-block}.pt-sw-house{background:var(--surface-2);border:1.5px solid var(--ink)}.pt-sw-roof{border:1.5px dashed var(--ink-3);background:0 0}.pt-sw-paving{background:var(--map-paving)}.pt-sw-terrace{background:var(--zone-terrace);border-color:var(--plan-fixture)}.pt-sw-pool{background:var(--plan-water,color-mix(in srgb, var(--info) 22%, var(--surface)));border:2px solid var(--surface-2);outline:1px solid var(--plan-fixture)}.pt-sw-tree{background:color-mix(in srgb, var(--map-tree) 30%, transparent);border-color:var(--map-tree);border-radius:50%;width:13px;height:13px}.pt-sw-fence{border:0;border-top:2px solid var(--ink-2);background:0 0;border-radius:0;height:0;position:relative}.pt-sw-gates{border:0;border-top:1.5px dashed var(--ink-2);height:0;box-shadow:-3px -2px 0 -1px var(--ink);background:0 0;border-radius:0}.pt-sw-pillar{background:var(--ink);border-color:var(--ink);border-radius:1px;width:8px;height:6px}.pt-sw-tank{border:1px dashed var(--ink-3);background:radial-gradient(circle, var(--surface-2) 0 2px, var(--ink-2) 2px 3px, transparent 3px);border-radius:50%;width:12px;height:12px}.pt-sw-buildable{border:0;border-top:2px dashed var(--map-setback);background:0 0;border-radius:0;height:0}.pt-panel-head{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.pt-panel-head .label,.pt-facts h2{margin:0}.pt-measure-box>summary{cursor:pointer;list-style:none}.pt-measure-box>summary::-webkit-details-marker{display:none}.pt-measure-box[open] .method-icon:after{transform:rotate(0)}.pt-measure-title{gap:6px;min-width:0;display:grid}.pt-measure-hint{color:var(--ink-2)}.pt-measure-body{margin-top:var(--sp-4)}.pt-measure-actions{margin-bottom:calc(var(--sp-2) * -1);justify-content:flex-end;display:flex}.pt-pick{gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.pt-pick select.numin{height:40px}@media (pointer:coarse){.pt-pick select.numin{height:var(--touch)}.pt-measure-box>summary{min-height:var(--touch)}}.pt-measure-panel .kv small,.pt-facts .kv small{color:var(--ink-3);font-size:var(--fs-xs);font-family:var(--font-sans);display:block}.pt-side .kv{grid-template-columns:minmax(0,1fr) auto}.pt-side .kv>:nth-child(2n){white-space:nowrap;overflow-wrap:normal}.pt-profile{min-width:0;margin-top:var(--sp-2);overflow:hidden}.pt-profile svg{display:block}.pt-pf-grid{stroke:var(--rule);stroke-width:1px}.pt-pf-text{fill:var(--ink-3);font:var(--fs-2xs) / 1 var(--font-mono)}.pt-pf-area{fill:var(--map-plot);stroke:none}.pt-pf-line{fill:none;stroke:var(--map-plot-line);stroke-width:2px;stroke-linejoin:round}.pt-pf-zero{stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:5 4}.pt-jump{display:none}@keyframes pt-jump-in{0%{opacity:0;transform:translate(-50%,10px)}}.pt-rules{padding-top:clamp(40px,5vw,72px)}.pt-rules .h2{margin-bottom:var(--sp-5)}.pt-rules-card{padding-block:var(--sp-2)}.pt-checks{column-gap:var(--sp-7);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.pt-checks li{gap:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--rule);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;padding:14px 0;display:grid}.pt-check-name{font-size:var(--fs-ui)}.pt-check-name small{color:var(--ink-3);font-size:var(--fs-xs);margin-top:2px;display:block}.pt-checks b{font-weight:var(--weight-medium);text-align:right;font-size:var(--fs-ui)}.pt-status{border-radius:var(--r-pill);font:var(--weight-medium) var(--fs-2xs) / 1 var(--font-mono);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:5px;padding:4px 9px;display:inline-flex}.pt-status[data-ok=true]{color:var(--accent-ink);background:var(--accent-soft)}.pt-status[data-ok=true]:before{content:"✓"}.pt-status[data-ok=false]{color:var(--bad);background:color-mix(in srgb, var(--bad) 12%, transparent)}.pt-status[data-ok=false]:before{content:"✕"}.pt-meter{grid-column:1/-1;gap:6px;display:grid}.pt-meter small{color:var(--ink-2);font-size:var(--fs-xs)}.pt-limit-bar{background:var(--bg-2);border-radius:3px;height:6px;margin-top:4px;display:block;position:relative}.pt-limit-bar i{height:100%;width:var(--v);background:var(--ink-2);border-radius:3px;display:block}.pt-limit-bar[data-ok=false] i{background:var(--bad)}.pt-limit-mark{top:-4px;bottom:-4px;left:var(--at);background:var(--ink);border-radius:1px;width:2px;margin-left:-1px;position:absolute}@media (max-width:1180px){.pt-layout{grid-template-columns:minmax(0,1fr)}.pt-svg{max-height:min(78svh,860px)}.pt-side{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.pt-jump{z-index:calc(var(--z-menu) - 1);left:50%;bottom:max(14px, env(safe-area-inset-bottom));min-height:var(--touch);border-radius:var(--r-pill);background:var(--ink);max-width:calc(100vw - 32px);color:var(--bg);font:var(--weight-medium) var(--fs-ui) / 1 var(--font-sans);box-shadow:var(--shadow-2);animation:pt-jump-in var(--dur-2) var(--ease-out) backwards;border:0;align-items:center;gap:10px;padding:0 18px;display:inline-flex;position:fixed;transform:translate(-50%)}.pt-jump .mono{font-size:var(--fs-sm);opacity:.8}.pt-jump>span{white-space:nowrap}.pt-jump-arrow{border-bottom:1.5px solid;border-right:1.5px solid;flex:none;width:8px;height:8px;margin:-4px 0 0 4px;transform:rotate(45deg)}}@media (max-width:900px){.pt-side,.pt-checks{grid-template-columns:minmax(0,1fr)}}@media (max-width:640px){.pt-stage{padding:var(--sp-2)}.pt-pick{grid-template-columns:minmax(0,1fr)}.pt-checks li{grid-template-columns:minmax(0,1fr) auto}.pt-checks .pt-status{grid-area:auto/1/auto/-1;justify-self:start}}@media (prefers-reduced-motion:reduce){.pt-jump{animation:none}}
