:root{--bg:#f6f7f9;--panel:#fff;--text:#1d232b;--muted:#687382;--line:#e2e6eb;--accent:#2f6f62;--accent-soft:#e3f0ec;--warn-bg:#fff6e0;--warn-text:#7a5300;--danger:#b3261e;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}button,select,input{font:inherit;color:inherit}.site-overlay{pointer-events:none}.site-f .hit{fill:none;stroke:#0000;stroke-width:12px;pointer-events:stroke;cursor:pointer}.site-f circle.hit{fill:#0000;stroke:none;pointer-events:all}.site-f .edge{fill:none;pointer-events:stroke;stroke-width:1.1px;cursor:pointer}.site-f .fill{pointer-events:none}.site-f .line{fill:none;stroke-width:1.3px;pointer-events:none}.site-label{fill:#3b424b;paint-order:stroke;stroke:#fbfbf9;stroke-width:3px;stroke-linejoin:round;cursor:pointer;font-size:10.5px}.t-tree .canopy{fill:#5d8a551a;stroke:#5d8a55;stroke-width:1px;pointer-events:none}.t-tree .trunk{fill:#fff;stroke:#4d6b3c;stroke-width:1.4px;cursor:pointer}.t-tree.removed .canopy{fill:none;stroke-dasharray:3 3;opacity:.7}.t-tree .cross{stroke:#a63a2a;stroke-width:1.4px;pointer-events:none}.t-tree .tpz{fill:none;stroke:#7f9a73;stroke-width:1px;stroke-dasharray:5 4;opacity:.75;pointer-events:none}.t-tree.warned .tpz{fill:#c27a000f;stroke:#c27a00;opacity:1}.t-tree .srz{fill:none;stroke:#9a6a4f;stroke-width:1px;stroke-dasharray:1.5 3;pointer-events:none}.t-easement .fill{fill:url(#site-hatch)}.t-easement .edge{stroke:#b8622f;stroke-dasharray:7 3}.t-easement .site-label{fill:#8f4a22;font-weight:600}.t-fence .line,.t-fence .ticks{stroke:#3f4650}.t-fence .ticks{fill:none;stroke-width:1px;pointer-events:none}.t-paving .fill{fill:#82889029}.t-paving .edge{stroke:#8d949c}.t-building .fill{fill:#464c541f}.t-building .edge{stroke:#59606a;stroke-width:1.3px}.t-building.neighbour .fill{fill:#464c540f}.t-building.neighbour .edge{stroke-dasharray:5 3}.t-building.removed .edge{stroke-dasharray:2 3}.t-building .bldg-mark{fill:#464c541f;stroke:#59606a;stroke-width:1.2px;cursor:pointer}.t-service .svc-line{fill:none;stroke:var(--svc);stroke-width:1.6px;stroke-dasharray:10 4;pointer-events:none}.t-service .svc-pit{fill:#fff;stroke:var(--svc);stroke-width:1.6px;cursor:pointer}.t-service .svc-code,.t-service .site-label{fill:var(--svc);paint-order:stroke;stroke:#fbfbf9;stroke-width:3px;pointer-events:none;font-size:10px;font-weight:600}.t-kerb .line{stroke:#5b6068;stroke-width:1.8px}.t-kerb.edge-road .line{stroke-width:1.1px}.t-kerb.edge-footpath .line{stroke-width:1.1px;stroke-dasharray:2 3}.t-other .line,.t-other .edge{stroke:#7a7f87;stroke-dasharray:4 3}.t-other .fill{fill:#787c8c12}.t-other .mark{stroke:#5b6068;stroke-width:1.4px}.site-f.warned .edge,.site-f.warned .line,.site-f.warned .trunk{stroke:#c27a00}.site-f.selected .edge,.site-f.selected .line,.site-f.selected .trunk,.site-f.selected .svc-pit,.site-f.selected .bldg-mark{stroke:var(--accent);stroke-width:2.2px}.site-f.selected .canopy{stroke:var(--accent)}.site-f.preview,.site-f.preview *{pointer-events:none}.site-f.preview .edge,.site-f.preview .line,.site-f.preview .canopy,.site-f.preview .svc-line,.site-f.preview .ticks{stroke:var(--accent);stroke-width:1.8px}.site-f.preview .fill,.site-f.preview .canopy{fill:color-mix(in srgb, var(--accent) 10%, transparent)}.site-mark{fill:none;stroke:var(--accent);stroke-width:2px;pointer-events:none;animation:1.6s ease-in-out infinite site-mark}@keyframes site-mark{50%{stroke-opacity:.25}}@media (prefers-reduced-motion:reduce){.site-mark{animation:none}}.site-draft{fill:none;stroke:var(--accent);stroke-width:1.5px;pointer-events:none}.site-draft.area{fill:color-mix(in srgb, var(--accent) 6%, transparent)}.site-draft-dot{fill:var(--accent);pointer-events:none}.site-align-pair circle{fill:color-mix(in srgb, var(--accent) 15%, transparent);stroke:var(--accent);stroke-width:1.5px}.site-align-pair text{fill:var(--accent);paint-order:stroke;stroke:#fff;stroke-width:3px;font-size:12px;font-weight:700}.site-align-pair path{stroke:var(--accent);stroke-width:2px}.site-align-pair,.site-align-cursor{pointer-events:none}.site-align-cursor{stroke:var(--accent);stroke-width:1.5px}.site-align-cursor.snapped{stroke:#d0743c;stroke-width:2px}.plan-svg.site-tool{cursor:crosshair}.site-toolbar{z-index:3;border:1px solid var(--line);border-radius:var(--r-lg,8px);background:var(--panel);align-items:center;gap:8px;max-width:calc(100% - 32px);padding:6px 6px 6px 12px;font-size:13px;display:flex;position:absolute;top:66px;left:50%;transform:translate(-50%);box-shadow:0 1px 2px #14181e0f}.site-toolbar-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.site-toolbar-hint{display:none}.site-toolbar button{border:1px solid var(--line);background:var(--panel);border-radius:var(--r,6px);cursor:pointer;white-space:nowrap;padding:5px 10px}.site-toolbar button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.site-check{white-space:nowrap;cursor:pointer;align-items:center;gap:6px;display:flex}.site-warnings.on-plan{z-index:2;flex-direction:column;align-items:flex-start;gap:6px;max-width:min(380px,100% - 32px);display:flex;position:absolute;top:64px;left:16px}.site-chip{border:1px solid var(--line);border-radius:var(--r,6px);background:var(--panel);color:var(--text);text-align:left;padding:4px 9px;font-size:12px;line-height:1.35;display:inline-block}.site-chip.note{color:var(--muted);cursor:pointer}.site-chip.attn{color:#5c3d00;cursor:pointer;background:#fbe7b5;border-color:#e0a526;font-weight:600}.site-chip.more-narrow{display:none}.plan-editor:has(.site-toolbar) .site-warnings.on-plan{display:none}.app-shell .site-toolbar{top:12px;left:calc(var(--free-left,0px) + (100% - var(--free-left,0px)) / 2);max-width:calc(100% - var(--free-left,0px) - 32px)}.app-shell.phone .site-toolbar{max-width:none;top:8px;left:8px;right:64px;transform:none}.app-shell .site-warnings.on-plan{display:none}.app-shell .plan-editor:has(.site-toolbar) .ground-key{display:none}.app-shell .plan-status>.notice{white-space:normal}@media (width<=760px){.site-toolbar{flex-wrap:wrap;gap:2px 6px;max-width:none;padding:4px 4px 6px 10px;font-size:14px;top:8px;left:8px;right:8px;transform:none}.site-toolbar-title{flex:1 1 0;order:-2;min-width:0}.site-toolbar-hint{color:var(--muted);flex:100%;order:1;font-size:14px;line-height:1.35;display:block}:is(.plan-editor:has(.site-toolbar) .ground-key,.plan-editor:has(.site-toolbar) .plan-actions){display:none}.site-toolbar button,.site-check{min-height:44px;font-size:14px}.site-toolbar button{flex:none}.plan-editor:has(.site-toolbar) .level-chip{display:none}.site-warnings.on-plan{max-width:none;inset:auto 8px 12px}.plan-editor:has(.plan-status .notice) .site-warnings.on-plan{display:none}.site-chip.second,.site-chip.more-wide{display:none}.site-chip.more-narrow{display:inline-block}.site-chip{min-height:36px;padding:8px 10px;font-size:14px}}.sf{grid-template-columns:minmax(0,1fr);gap:14px;display:grid}.sf>*,.sf-drawing>*{min-width:0}.sf .num:has(>input.text){grid-template-columns:auto minmax(0,1fr)}.sf .num>input.text{width:100%;min-width:0}.sf h3{margin:0 0 6px;font-size:13px}.sf p{margin:0}.sf .muted.small,.sf .small{font-size:12px}.sf button.sf-btn{border:1px solid var(--line);background:var(--panel);border-radius:var(--r,6px);cursor:pointer;text-align:left;padding:6px 10px}.sf button.sf-btn:hover:not(:disabled){border-color:var(--accent)}.sf button.sf-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.sf button.sf-btn.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);color:var(--accent)}.sf button:disabled{opacity:.55;cursor:default}.sf button.sf-link{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-size:12px}.sf-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sf-warnings{gap:6px;margin:0;padding:0;list-style:none;display:grid}.sf-warnings .site-chip{white-space:normal;overflow-wrap:anywhere;width:100%}.sf-warnings p{color:var(--muted);margin:4px 2px 2px;font-size:12px}.sf-drawing{border:1px solid var(--line);border-radius:var(--r-lg,8px);grid-template-columns:minmax(0,1fr);gap:8px;padding:8px 10px;display:grid}.sf-drawing-head{justify-content:space-between;gap:8px;display:flex}.sf-drawing-head b{overflow-wrap:anywhere;min-width:0;font-weight:600}.sf-status{color:var(--muted);white-space:nowrap;font-size:12px}.sf-status.ok{color:var(--accent)}.sf-opacity{color:var(--muted);align-items:center;gap:8px;font-size:12px;display:flex}.sf-opacity input{accent-color:var(--accent);flex:1}.sf-checks{flex-wrap:wrap;gap:2px 14px;display:flex}.sf-checks .check{font-size:13px}.sf-found{border-top:1px solid var(--line);gap:0;margin:0;padding:0;list-style:none;display:grid}.sf-found>li{border-bottom:1px solid var(--line);gap:4px;padding:8px 0;display:grid}.sf-found .sf-found-title{justify-content:space-between;align-items:baseline;gap:8px;font-weight:600;display:flex}.sf-found ul{color:var(--muted);margin:0;padding:0 0 0 14px;font-size:12px}.sf-found .sf-hint{color:var(--warn-text);font-size:12px}.sf-found li.added .sf-found-title{color:var(--muted);font-weight:500}.sf-found select{border:1px solid var(--line);border-radius:var(--r,6px);background:var(--panel);flex:80px;min-width:0;padding:3px 4px;font-size:12px}.sf-tick{color:var(--accent);font-size:12px;font-weight:600}.sf-tools{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.sf-tools .sf-btn{text-align:center;padding:6px 4px}.sf-tool-options{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.sf-tool-options select{border:1px solid var(--line);border-radius:var(--r,6px);background:var(--panel);padding:4px 6px}.sf-types{margin:0;padding:0;list-style:none;display:grid}.sf-types>li{border-bottom:1px solid var(--line)}.sf-type-row{align-items:center;gap:8px;padding:5px 0;display:flex}.sf-type-row .check{flex:1;padding:0}.sf-type-row .count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.sf-key{flex:none;width:18px;height:12px}.sf-items{margin:0 0 6px;padding:0 0 0 26px;list-style:none;display:grid}.sf-items button{border-radius:var(--r,6px);text-align:left;cursor:pointer;background:0 0;border:0;justify-content:space-between;gap:8px;width:100%;padding:3px 4px;font-size:13px;display:flex}.sf-items button:hover{background:#eef1fb}.sf-items button.on{color:#1a35a3;background:#e3e9fb}.sf-items .attn-dot{color:#b77400;font-weight:700}.sf-inspector{border:1px solid var(--accent);border-radius:var(--r-lg,8px);gap:8px;padding:10px;display:grid}.sf-inspector .num,.sf-inspector label.num{margin:0}.sf-inspector-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.sf-inspector-head b{font-weight:600}.sf-levels{grid-template-columns:1fr auto;gap:2px 10px;margin:0;font-size:12px;display:grid}.sf-levels dt{color:var(--muted)}.sf-levels dd{font-variant-numeric:tabular-nums;margin:0}.sf-pages{align-items:center;gap:8px;display:flex}.sf-error{color:var(--danger);font-size:13px}@media (width<=760px){.sf,.sf .small,.sf .muted.small,.sf-found ul,.sf-found .sf-hint,.sf-warnings p,.sf-status,.sf-opacity,.sf-type-row .count,.sf-levels,.sf h3,.sf-tick,.sf-error,.sf-checks .check{font-size:14px}.sf button.sf-btn,.sf-items button,.sf-found select,.sf-tool-options select,.sf .check,.sf button.sf-link{min-height:44px;font-size:14px}}.fc-layer{pointer-events:none}.contour-minor.fc-existing,.contour-major.fc-existing{stroke-dasharray:3 3;opacity:.75}.fc-finished{fill:none;stroke:#16181b;stroke-linejoin:round;stroke-linecap:round}.fc-finished.minor{stroke-width:.7px;stroke-opacity:.55}.fc-finished.major{stroke-width:1.2px;stroke-opacity:.9}.contour-label.fc-label{fill:#16181b;font-weight:600}.fc-key{border-top:1px solid var(--line);margin-top:6px;padding-top:6px}.ground-key i.fc-swatch{vertical-align:3px;opacity:1;border-radius:0;height:0}.ground-key i.fc-swatch.proposed{border-top:1.5px solid #16181b}.ground-key i.fc-swatch.existing{border-top:1.5px dashed #a8927a}.fc-narrow{display:none}@container (width<=700px){.ground-key label.check{min-height:44px}.fc-key{margin-top:0}.ground-key .fc-key ul{gap:14px;margin-top:0;display:flex}.fc-key li.small,.fc-key .fc-wide{display:none}.fc-key .fc-narrow{display:inline}}.rw-panel,.rw-marks{--rw-ink:#16181b;--rw-muted:#6b7077;--rw-line:#e1e4e7;--rw-line-soft:#eef0f2;--rw-field-line:#cfd3d8;--rw-accent:#2346d0;--rw-warn-ink:#9a4a00;--rw-amber:#d07a12;--rw-cut:#e3874a;--rw-fill:#5d8fca;--rw-r:3px}.rw-panel{color:var(--rw-ink);flex-direction:column;gap:16px;font-size:13px;display:flex}.rw-panel .rw-head{border-bottom:1px solid var(--rw-line);gap:3px;padding-bottom:12px;display:grid}.rw-panel .rw-head h2{letter-spacing:-.005em;text-transform:none;color:var(--rw-ink);margin:0;font-size:17px;font-weight:500}.rw-panel .rw-head p{color:var(--rw-muted);margin:0}.rw-group{gap:10px;display:grid}.rw-panel h3{color:var(--rw-muted);margin:0;font-size:12.5px;font-weight:600}.rw-group-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.rw-group-head h3{color:var(--rw-ink);font-size:14px;font-weight:500}.rw-seg{border:1px solid var(--rw-line-soft);border-radius:calc(var(--rw-r) + 2px);background:#fff;gap:2px;padding:3px;display:inline-flex}.rw-seg-full{display:flex}.rw-seg button{border-radius:var(--rw-r);min-width:0;min-height:30px;color:var(--rw-muted);text-align:center;cursor:pointer;background:0 0;border:0;flex:1;justify-content:center;align-items:center;gap:5px;padding:3px 10px;font-weight:550;line-height:1.25;display:inline-flex}.rw-seg button.on{color:var(--rw-ink);box-shadow:0 0 0 1px var(--rw-ink)}.rw-seg button:focus-visible,.rw-btn:focus-visible,.rw-link:focus-visible,.rw-warnchip:focus-visible{outline:2px solid var(--rw-accent);outline-offset:2px}.rw-seg svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.rw-row{grid-template-columns:20px minmax(0,1fr) 140px;align-items:center;gap:3px 10px;display:grid}.rw-row-plain{grid-template-columns:minmax(0,1fr) 140px}.rw-row-label{min-width:0;font-weight:600}.rw-hint{color:var(--rw-muted);flex-wrap:wrap;grid-column:2/-1;align-items:center;gap:2px 4px;font-size:12.5px;display:flex}.rw-row-plain .rw-hint{grid-column:1/-1}.rw-tag{background:var(--rw-ink);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:11px;font-weight:700;display:inline-flex}.rw-field{border:1px solid var(--rw-field-line);border-radius:var(--rw-r);background:#fff;align-items:center;gap:6px;min-width:0;min-height:34px;padding:0 8px;font-weight:600;display:flex}.rw-field:focus-within{border-color:var(--rw-ink)}.rw-field em{color:var(--rw-ink);font-style:normal;font-weight:600}.rw-field input{text-align:right;font-variant-numeric:tabular-nums;background:0 0;border:0;outline:none;flex:1;width:100%;min-width:0;padding:0;font-weight:600}.rw-field input::placeholder{color:var(--rw-muted);font-size:12.5px;font-weight:400}.rw-field-num em{color:var(--rw-muted);font-weight:500}.rw-bench{flex-wrap:wrap;align-items:center;gap:5px;display:inline-flex}.rw-bench .rw-field{width:74px;min-height:26px;padding:0 6px}.rw-link{color:var(--rw-accent);font-size:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline;text-decoration-thickness:1px}.rw-note{color:var(--rw-muted);margin:0;font-size:12.5px}.rw-warn-text{color:var(--rw-warn-ink)}.rw-section{border:1px solid var(--rw-line-soft);border-radius:var(--rw-r);background:#fff;margin:0;overflow:hidden}.rw-section svg{width:100%;height:auto;display:block}.rw-sec-earth{fill:#f4f4f2}.rw-sec-cut{fill:var(--rw-cut);fill-opacity:.32}.rw-sec-fill{fill:var(--rw-fill);fill-opacity:.32}.rw-sec-natural{fill:none;stroke:var(--rw-muted);stroke-width:1.2px;stroke-dasharray:4 3}.rw-sec-finished{fill:none;stroke:var(--rw-ink);stroke-width:1.6px;stroke-linejoin:round}.rw-sec-wall{fill:var(--rw-ink)}.rw-sec-slab{fill:var(--rw-ink);fill-opacity:.85}.rw-sec-tag circle{fill:var(--rw-ink)}.rw-sec-tag text{fill:#fff;font-size:10.5px;font-weight:700}.rw-sec-label{fill:var(--rw-muted);font-size:10.5px}.rw-kv{margin:0;display:grid}.rw-kv>div{border-top:1px solid var(--rw-line-soft);justify-content:space-between;align-items:center;gap:12px;min-height:30px;display:flex}.rw-kv dt{color:var(--rw-muted)}.rw-kv dd{text-align:right;overflow-wrap:anywhere;min-width:0;margin:0;font-weight:600}.rw-warnchip{border:1px solid var(--rw-line);max-width:100%;min-height:30px;color:var(--rw-warn-ink);cursor:help;background:#fff;border-radius:999px;align-self:flex-start;align-items:center;gap:7px;padding:4px 11px;font-weight:600;display:inline-flex}.rw-warnchip svg{fill:none;width:16px;height:16px;stroke:var(--rw-amber);stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.rw-more{border-top:1px solid var(--rw-line-soft);padding-top:10px}.rw-more summary{color:var(--rw-ink);cursor:pointer;font-weight:550}.rw-more[open]{gap:10px;display:grid}.rw-size{gap:2px;display:grid}.rw-side-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.rw-sum{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;display:flex}.rw-sentence{color:var(--rw-ink);margin:0;font-size:14px;font-weight:600}.rw-sec-side{fill:var(--rw-ink);font-size:12px;font-weight:650}.rw-sec-push{fill:none;stroke:var(--rw-accent);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.inspector>.rw-panel{padding:16px 18px 18px}.rw-foot{border-top:1px solid var(--rw-line);gap:8px;padding-top:14px;display:flex}.rw-btn{border:1px solid var(--rw-line);border-radius:var(--rw-r);min-height:36px;color:var(--rw-ink);cursor:pointer;background:#fff;padding:0 14px;font-weight:600}.rw-btn.rw-pri{background:var(--rw-ink);border-color:var(--rw-ink);color:#fff;flex:1}.rw-btn.rw-danger{color:#b3261e}.rw-marks{pointer-events:none}.rw-label rect{fill:#fff;stroke:var(--rw-ink);stroke-width:1.2px}.rw-label text{fill:var(--rw-ink);font-size:12px;font-weight:650}.rw-tallest path{fill:none;stroke:var(--rw-ink);stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round}.rw-flag{pointer-events:auto;cursor:help}.rw-flag circle{fill:#fff;stroke:var(--rw-line)}.rw-flag path{fill:none;stroke:var(--rw-amber);stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round}.wall.preview.retaining{fill:#16181b66}@media (width<=760px){.rw-panel{font-size:15px}.rw-panel h3,.rw-hint,.rw-note,.rw-group-head h3{font-size:14px}.rw-seg button,.rw-btn,.rw-field{min-height:44px;font-size:15px}.rw-bench .rw-field{width:84px;min-height:40px}.rw-link{min-height:32px}.rw-row{grid-template-columns:24px minmax(0,1fr) 150px}.rw-row-plain{grid-template-columns:minmax(0,1fr) 150px}.rw-tag{width:24px;height:24px;font-size:14px}.rw-warnchip{min-height:36px;font-size:14px}.rw-sec-label{font-size:12px}}.setbacks{pointer-events:none}.setback-line,.setback-tick{fill:none;stroke:var(--accent);stroke-width:1px}.setback-tick{stroke-width:1.4px}.setback-label{fill:var(--accent);font-variant-numeric:tabular-nums;paint-order:stroke;stroke:#fbfbf9;stroke-width:4px;stroke-linejoin:round;font-size:11px;font-weight:600}.setbacks-key{margin-top:2px}.zoom-row{align-items:center;gap:8px;display:flex}.zoom-buttons{border:1px solid var(--line);background:var(--panel);border-radius:6px;display:inline-flex;overflow:hidden}.zoom-buttons button{width:34px;height:32px;color:inherit;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.zoom-buttons button+button{border-left:1px solid var(--line)}.zoom-buttons button:hover{background:var(--accent-soft);color:var(--accent)}.zoom-buttons svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;width:16px;height:16px}.canvas-controls>.zoom-buttons{background:0 0;border:0;border-radius:0}.canvas-controls>.zoom-buttons button{width:38px;height:34px}.canvas-controls>.zoom-buttons button+button,.canvas-controls>.zoom-buttons+button{border-left:1px solid var(--overlay-line)}.canvas-controls>.zoom-buttons button:hover{background:var(--line-soft);color:inherit}.flow-tip{z-index:8;color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background:#16181be6;border-radius:4px;max-width:280px;padding:5px 9px;font-size:12.5px;line-height:1.35;position:absolute;overflow:hidden;box-shadow:0 4px 14px -6px #00000059}.flow-pick-line{fill:none;stroke:var(--accent);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.flow-earth{pointer-events:none}.flow-earth-band{fill:#b07d4a38;stroke:#8a643c99;stroke-width:1px;stroke-dasharray:4 3}.flow-earth-arrow{fill:none;stroke:var(--accent);stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round}.plan-svg.flow-picking{cursor:crosshair}.flow-bar{z-index:7;border:1px solid var(--line);max-width:min(560px,100% - 32px);color:var(--text);background:#fff;border-radius:6px;align-items:center;gap:12px;padding:7px 8px 7px 14px;font-size:13px;display:flex;position:absolute;top:58px;left:50%;transform:translate(-50%);box-shadow:0 10px 28px -16px #0000004d}.flow-bar button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:4px;flex:none;align-items:center;gap:6px;min-height:30px;padding:0 10px;font-weight:600;display:inline-flex}.flow-bar kbd{font:inherit;color:var(--muted);font-size:11px}.plan-editor .flow-chip-btn{pointer-events:auto;border:1px solid var(--line);color:var(--accent);cursor:pointer;background:#fff;border-radius:4px;margin-left:8px;padding:1px 7px;font-size:11.5px;font-weight:600}.plan-editor .flow-chip-btn:hover{border-color:var(--accent)}.flow-card{bottom:64px;left:calc(50% + var(--free-left,0px) / 2);z-index:7;width:min(460px, calc(100% - var(--free-left,0px) - 32px));border:1px solid var(--line);color:var(--text);background:#fff;border-radius:6px;gap:10px;padding:14px 16px;font-size:13px;display:grid;position:absolute;transform:translate(-50%);box-shadow:0 16px 40px -20px #00000059}.flow-card header{gap:3px;display:grid}.flow-card h2{letter-spacing:-.005em;text-transform:none;color:var(--text);margin:0;font-size:15px;font-weight:600}.flow-card header p,.flow-note{color:var(--muted);margin:0;font-size:12.5px;line-height:1.45}.flow-choices{gap:6px;display:grid}.plan-editor .flow-choice{border:1px solid var(--line);text-align:left;cursor:pointer;background:#fff;border-radius:4px;gap:2px;min-width:0;padding:8px 11px;font-size:13px;display:grid}.plan-editor .flow-choice:hover,.plan-editor .flow-choice.on{border-color:var(--text)}.plan-editor .flow-choice b{font-weight:600}.plan-editor .flow-choice span{color:var(--muted);font-size:12.5px;line-height:1.4}.plan-editor .flow-radio{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px}.plan-editor .flow-radio>input{accent-color:var(--text);margin:3px 0 0}.plan-editor .flow-radio-body{gap:2px;display:grid}.plan-editor .flow-radio-body>b,.plan-editor .flow-choice .flow-gap{color:var(--text)}.plan-editor .flow-gap input{border:1px solid var(--line);text-align:right;font-variant-numeric:tabular-nums;background:#fff;border-radius:3px;width:46px;padding:1px 5px;font-weight:600}.flow-card footer{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.plan-editor .flow-pri,.plan-editor .flow-quiet,.plan-editor .flow-link{cursor:pointer;border-radius:4px;min-height:34px;padding:0 12px;font-weight:600}.plan-editor .flow-pri{border:1px solid var(--text);background:var(--text);color:#fff}.plan-editor .flow-quiet{border:1px solid var(--line);background:#fff}.plan-editor .flow-link{color:var(--accent);text-underline-offset:3px;background:0 0;border:0;padding:0 4px;text-decoration:underline}.plan-editor .flow-pri:focus-visible,.plan-editor .flow-quiet:focus-visible,.plan-editor .flow-link:focus-visible,.plan-editor .flow-choice:focus-within,.plan-editor .flow-chip-btn:focus-visible,.flow-bar button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}body:has(.toast,.sf-toast) .flow-card{bottom:108px}body:has(.app-shell .toast):has(.sf-toast) .flow-card{bottom:162px}@media (width<=760px){.flow-card{width:calc(100% - 24px);max-height:70%;font-size:14px;bottom:12px;left:50%;overflow-y:auto}.flow-card header p,.flow-note,.plan-editor .flow-choice span{font-size:14px}.plan-editor .flow-choice,.plan-editor .flow-pri,.plan-editor .flow-quiet,.plan-editor .flow-link,.flow-bar button{min-height:44px;font-size:15px}.plan-editor .flow-gap input{width:60px;min-height:44px;font-size:15px}.flow-bar{justify-content:space-between;max-width:none;font-size:14px;inset:auto 12px 12px;transform:none}:is(body:has(.toast,.sf-toast) .flow-card,body:has(.toast,.sf-toast) .flow-bar){bottom:144px}body:has(.toast,.sf-toast) .flow-card{max-height:55%}}.cloud-ui{--cl-ink:#16181b;--cl-muted:#6b7077;--cl-line:#e1e4e7;--cl-line-soft:#eef0f2;--cl-field-line:#cfd3d8;--cl-accent:#2346d0;--cl-accent-soft:#eef1fc;--cl-warn-bg:#fff6e0;--cl-warn-line:#f0deae;--cl-warn-text:#7a5300;--cl-danger:#b3261e;--cl-r:3px;--cl-r-lg:4px;--cl-fs:13px;--cl-tap:32px;color:var(--cl-ink);font-family:IBM Plex Sans,Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:var(--cl-fs);-webkit-font-smoothing:antialiased;line-height:1.45}.cloud-ui *,.cloud-ui :before,.cloud-ui :after{box-sizing:border-box}.cloud-ui button,.cloud-ui input{font:inherit;color:inherit}.cloud-ui .ic{flex:none;display:block}.cl-btn{min-height:var(--cl-tap);border:1px solid var(--cl-line);border-radius:var(--cl-r);white-space:nowrap;cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:7px;padding:0 12px;font-weight:500;display:inline-flex}.cl-btn:hover:not(:disabled){border-color:var(--cl-ink)}.cl-btn.primary{background:var(--cl-ink);border-color:var(--cl-ink);color:#fff}.cl-btn.primary:hover:not(:disabled){background:#000}.cl-btn.big{min-height:42px;padding:0 18px;font-size:14px}.cl-btn:disabled{opacity:.45;cursor:default}.cl-link{color:var(--cl-accent);text-underline-offset:2px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline;display:inline}.cl-link.quiet{color:var(--cl-muted)}.cl-link:disabled{opacity:.5;cursor:default}.cloud-ui :is(.cl-btn,.cl-link,.cl-x,.cl-chip,input[type=checkbox]):focus-visible{outline:2px solid var(--cl-accent);outline-offset:2px}.cl-muted{color:var(--cl-muted)}.cl-grow{flex:1}.cl-scrim{z-index:210;background:#16181b52;place-items:center;padding:24px 16px;animation:.12s ease-out cl-fade;display:grid;position:fixed;inset:0}@keyframes cl-fade{0%{opacity:0}}.cl-sheet{border:1px solid var(--cl-line);border-radius:var(--cl-r-lg);background:#fff;flex-direction:column;width:min(460px,100%);max-height:calc(100dvh - 48px);display:flex;overflow:hidden;box-shadow:0 1px 2px #0000000f,0 18px 48px -12px #00000047}.cl-sheet.wide{width:min(560px,100%)}.cl-head{align-items:flex-start;gap:12px;padding:20px 20px 4px 24px;display:flex}.cl-head h2{letter-spacing:-.005em;flex:1;margin:2px 0 0;font-size:17px;font-weight:500}.cl-x{border-radius:var(--cl-r);width:32px;height:32px;color:var(--cl-muted);cursor:pointer;background:0 0;border:0;place-items:center;margin:-4px -6px 0 0;display:grid}.cl-x:hover:not(:disabled){background:var(--cl-line-soft);color:var(--cl-ink)}.cl-body{padding:4px 24px 22px;overflow-y:auto}.cl-body p{margin:0 0 10px}.cl-points{color:var(--cl-muted);margin:0 0 14px;padding-left:18px}.cl-points li{margin:3px 0}.cl-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.cl-actions.split{justify-content:space-between}.cl-actions.split>p{flex:1;margin:0}.cl-actions .cl-btn.big{flex:1}.cl-alt{color:var(--cl-muted);flex-wrap:wrap;gap:4px 16px;display:flex;margin:14px 0 0!important}.cl-problem{border:1px solid var(--cl-warn-line);border-radius:var(--cl-r);background:var(--cl-warn-bg);color:var(--cl-warn-text);padding:8px 12px}.cl-field{gap:5px;margin:14px 0 4px;display:grid}.cl-field>span{font-weight:500}.cl-field input{border:1px solid var(--cl-field-line);border-radius:var(--cl-r);background:#fff;height:36px;padding:0 10px}.cl-field input:focus{border-color:var(--cl-accent);box-shadow:0 0 0 3px var(--cl-accent-soft);outline:none}.cl-field small{color:var(--cl-muted);font-size:12px}.cl-code-input{letter-spacing:.04em;text-transform:uppercase;font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace!important}.cl-code-input::placeholder{color:#b4b9bf}.cl-check{cursor:pointer;align-items:center;gap:10px;min-height:36px;margin-top:8px;font-weight:500;display:flex}.cl-check input,.cl-pick input{width:18px;height:18px;accent-color:var(--cl-ink);flex:none;margin:0}.cl-code{border:1px dashed var(--cl-field-line);border-radius:var(--cl-r-lg);text-align:center;background:#fcfcfd;margin:14px 0 10px;padding:16px 12px}.cl-code code{letter-spacing:.06em;word-break:break-word;-webkit-user-select:all;user-select:all;font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:19px;font-weight:500}.cl-code-actions{justify-content:center;gap:8px;margin-bottom:14px;display:flex}.cl-pick{border:1px solid var(--cl-line);border-radius:var(--cl-r-lg);max-height:46vh;margin:12px 0 0;padding:0;list-style:none;overflow-y:auto}.cl-pick li+li{border-top:1px solid var(--cl-line-soft)}.cl-pick label{cursor:pointer;align-items:center;gap:12px;min-height:48px;padding:8px 14px;display:flex}.cl-pick-text{min-width:0;display:grid}.cl-pick-text b{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.cl-pick-text span{color:var(--cl-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.cl-who{align-items:center;gap:12px;margin:6px 0 14px;display:flex}.cl-who>span:last-child{display:grid}.cl-who b{font-size:14px;font-weight:500}.cl-avatar{background:var(--cl-accent-soft);width:36px;height:36px;color:var(--cl-accent);border-radius:50%;place-items:center;font-weight:600;display:grid}.cl-status{border:1px solid var(--cl-line);border-radius:var(--cl-r-lg);background:#fcfcfd;align-items:center;gap:10px;padding:10px 12px;display:flex}.cl-status>p{flex:1;margin:0!important}.cl-status .ic{color:var(--cl-muted)}.cl-status.quiet .ic{color:var(--cl-accent)}.cl-status.warn{border-color:var(--cl-warn-line);background:var(--cl-warn-bg);color:var(--cl-warn-text)}.cl-status.warn .ic{color:currentColor}.cl-row{flex-wrap:wrap;gap:6px;display:flex;margin:12px 0 0!important}.cl-section{border-top:1px solid var(--cl-line-soft);margin-top:16px;padding-top:14px}.cl-section h3{margin:0 0 4px;font-size:13px;font-weight:500}.cl-section p{margin-bottom:8px}.cl-chip-wrap{flex:none;position:relative}.cl-chip{height:30px;color:var(--cl-muted);white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:0 10px 0 8px;font-weight:500;display:flex;position:relative}.cl-chip:hover,.cl-chip[aria-expanded=true]{background:var(--cl-line-soft);color:var(--cl-ink)}.cl-chip.quiet .ic{color:var(--cl-accent)}.cl-chip.busy .ic{animation:1.4s ease-in-out infinite cl-breathe}@keyframes cl-breathe{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.cl-chip.busy .ic{animation:none}}.cl-chip.warn{border-color:var(--cl-warn-line);background:var(--cl-warn-bg);color:var(--cl-warn-text)}.cl-dot{background:#d07a12;border:1.5px solid #fff;border-radius:50%;width:7px;height:7px;position:absolute;top:3px;right:3px}.cl-pop{z-index:45;border:1px solid var(--cl-line);border-radius:var(--cl-r-lg);background:#fff;width:320px;padding:10px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 18px 50px -12px #00000047,0 2px 6px #0000000f}.cl-notices{max-height:40vh;margin:10px 0 0;padding:0 2px;list-style:none;overflow-y:auto}.cl-notices li{border-top:1px solid var(--cl-line-soft);padding:8px 2px}.cl-notices li:first-child{border-top:0}.cl-pop-actions{align-items:center;gap:12px;margin-top:10px;display:flex}.cl-card{border:1px solid var(--cl-line);border-radius:var(--cl-r-lg);background:#fff;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:4px 16px;margin:0 0 20px;padding:16px 18px;display:grid}.cl-card-icon{background:var(--cl-accent-soft);width:40px;height:40px;color:var(--cl-accent);border-radius:50%;place-items:center;display:grid}.cl-card-text h2{margin:0 0 2px;font-size:15px;font-weight:500}.cl-card-text p{color:var(--cl-muted);max-width:62ch;margin:0}.cl-card-actions{align-items:center;gap:8px;display:flex}.cl-card-actions .cl-link{margin-left:6px}.cl-line{color:var(--cl-muted);flex-wrap:wrap;align-items:center;gap:4px 8px;margin:-8px 0 18px;display:flex}.cl-line .ic{color:var(--cl-accent)}.cl-line.muted .ic{color:var(--cl-muted)}.cl-line.warn{color:var(--cl-warn-text)}.cl-line.warn .ic{color:currentColor}.cl-sep{color:#b4b9bf}.cl-mark{color:var(--cl-muted,#6b7077)}.cl-grp{flex-wrap:wrap;align-items:center;gap:4px 8px;display:inline-flex}.cl-grp+.cl-grp:before{content:"·";color:#b4b9bf}.cl-start{color:var(--cl-muted);flex-wrap:wrap;align-items:center;gap:4px 8px;margin:-12px 0 22px;font-size:14px;display:flex}.cl-start .ic{color:var(--cl-accent)}@media (width<=760px),(pointer:coarse){.cloud-ui{--cl-tap:44px}.cl-x{width:44px;height:44px;margin:-10px -12px 0 0}.cl-link{align-items:center;min-height:44px;display:inline-flex}.cl-check{min-height:44px}.cl-field input{height:44px;font-size:16px}.cl-chip{height:44px}.cl-line,.cl-grp,.cl-start{row-gap:0}}@media (width<=760px){.cloud-ui{--cl-fs:15px}.cl-grp{flex-basis:100%}.cl-grp+.cl-grp:before{display:none}.cl-line{margin-top:-14px}.cl-start{margin:-6px 0 14px;font-size:15px}.cl-field small,.cl-pick-text span{font-size:14px}.cl-scrim{align-items:end;padding:0}.cl-sheet,.cl-sheet.wide{border-bottom:0;border-radius:14px 14px 0 0;width:100%;max-height:92dvh}.cl-head{padding:18px 16px 2px}.cl-body{padding:4px 16px calc(18px + env(safe-area-inset-bottom))}.cl-actions,.cl-actions.split{flex-direction:column-reverse;align-items:stretch}.cl-actions .cl-btn{width:100%}.cl-actions.split>p{text-align:center}.cl-alt{flex-direction:column;gap:0}.cl-code code{font-size:17px}.cl-code-actions .cl-btn{flex:1}.cl-status{flex-wrap:wrap}.cl-status>p{flex-basis:calc(100% - 40px)}.cl-status>.cl-btn{width:100%}.cl-card{grid-template-columns:auto minmax(0,1fr);padding:14px}.cl-card-actions{flex-wrap:wrap;grid-column:1/-1;margin-top:8px}.cl-card-actions .cl-btn{flex:1}.cl-card-actions .cl-link{flex-basis:100%;justify-content:center;margin:0}.cl-pop{width:auto;padding:14px 16px calc(14px + env(safe-area-inset-bottom));border-radius:14px 14px 0 0;position:fixed;top:auto;bottom:0;right:0;left:0!important}.cl-pop-actions .cl-btn{flex:none}}.menu-item .cl-menu-name{color:#6b7077}.app-shell.phone .cl-chip-wrap.cl-in-shell .cl-chip{border-radius:var(--cl-r);justify-content:center;width:44px;height:44px;padding:0}.app-shell.phone .cl-chip-wrap.cl-in-shell .cl-chip-label,.app-shell.phone .cl-chip-wrap.cl-in-shell.calm{display:none}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff")}.projects-home{--ph-ink:#16181b;--ph-muted:#6b7077;--ph-line:#e1e4e7;--ph-line-soft:#eef0f2;--ph-field-line:#cfd3d8;--ph-accent:#2346d0;--ph-accent-soft:#eef1fc;--ph-accent-light:#8da0e6;--ph-paper:#fcfcfd;--ph-grid:#f1f3f6;--ph-grid-major:#e2e6ec;--ph-danger:#b3261e;--ph-r:3px;--ph-r-lg:4px;--ph-fs:13px;height:100%;color:var(--ph-ink);font-family:IBM Plex Sans,Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:var(--ph-fs);-webkit-font-smoothing:antialiased;background:#fff;line-height:1.45;overflow-y:auto}.projects-home *{box-sizing:border-box}.projects-home button{font:inherit;color:inherit}.ph-ic{flex:none;display:block}.ph-top{z-index:5;border-bottom:1px solid var(--ph-line);background:#fff;justify-content:space-between;align-items:center;gap:12px;height:52px;padding:0 20px;display:flex;position:sticky;top:0}.ph-brand{letter-spacing:-.005em;white-space:nowrap;align-items:center;gap:10px;font-size:14px;font-weight:500;display:flex}.ph-top-actions{gap:8px;display:flex}.ph-top-actions[hidden],.ph-short{display:none}.ph-btn{border:1px solid var(--ph-line);border-radius:var(--ph-r);white-space:nowrap;cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:6px;height:32px;padding:0 12px;font-weight:500;display:inline-flex}.ph-btn:hover{border-color:var(--ph-ink)}.ph-btn.primary{background:var(--ph-ink);border-color:var(--ph-ink);color:#fff}.ph-btn.primary:hover{background:#000}.ph-btn.danger{background:var(--ph-danger);border-color:var(--ph-danger);color:#fff}.ph-btn.big{height:40px;padding:0 18px}.ph-btn:focus-visible,.ph-icon-btn:focus-visible,.ph-thumb:focus-visible,.ph-link:focus-visible,.ph-seg button:focus-visible,.ph-menu button:focus-visible{outline:2px solid var(--ph-accent);outline-offset:2px}.ph-icon-btn{border-radius:var(--ph-r);width:32px;height:32px;color:var(--ph-muted);cursor:pointer;background:0 0;border:0;place-items:center;margin:-4px -8px -4px 0;display:grid}.ph-icon-btn:hover,.ph-icon-btn[aria-expanded=true]{background:var(--ph-line-soft);color:var(--ph-ink)}.ph-link{color:var(--ph-accent);text-underline-offset:2px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.ph-link.danger{color:var(--ph-danger)}.ph-main{max-width:1180px;margin:0 auto;padding:32px 32px 72px}.ph-head{justify-content:space-between;align-items:center;gap:12px;min-height:32px;margin-bottom:20px;display:flex}.ph-head h1{letter-spacing:-.005em;margin:0;font-size:22px;font-weight:500}.ph-seg{border:1px solid var(--ph-line);border-radius:var(--ph-r);display:inline-flex;overflow:hidden}.ph-seg button{height:30px;color:var(--ph-muted);cursor:pointer;background:#fff;border:0;padding:0 12px}.ph-seg button+button{border-left:1px solid var(--ph-line)}.ph-seg button.on{background:var(--ph-ink);color:#fff}.ph-count{font-variant-numeric:tabular-nums;opacity:.7;margin-left:4px}.ph-note{border-radius:var(--ph-r);margin:0 0 16px;padding:10px 12px}.ph-note.warn{color:#7a5300;background:#fff6e0;border:1px solid #f0deae}.ph-note.error{color:var(--ph-danger);background:#fdf1f0;border:1px solid #f2cbc7}.ph-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;margin:0;padding:0;list-style:none;display:grid}.ph-card{border:1px solid var(--ph-line);border-radius:var(--ph-r-lg);background:#fff;flex-direction:column;min-width:0;display:flex}.ph-card.current{border-color:var(--ph-ink)}.ph-thumb{aspect-ratio:16/10;border:0;border-bottom:1px solid var(--ph-line-soft);border-radius:var(--ph-r-lg) var(--ph-r-lg) 0 0;background-color:var(--ph-paper);background-image:linear-gradient(var(--ph-grid-major) 1px, transparent 1px), linear-gradient(90deg, var(--ph-grid-major) 1px, transparent 1px), linear-gradient(var(--ph-grid) 1px, transparent 1px), linear-gradient(90deg, var(--ph-grid) 1px, transparent 1px);background-position:-1px -1px;background-size:60px 60px,60px 60px,12px 12px,12px 12px;place-items:center;width:100%;padding:16px;display:grid}button.ph-thumb{cursor:pointer}.ph-thumb{position:relative;overflow:hidden}.ph-thumb>svg{width:calc(100% - 28px);height:calc(100% - 28px);position:absolute;inset:14px;overflow:visible}.ph-thumb>.ph-thumb-empty{place-content:center;position:absolute;inset:0}.ph-block{fill:#fff;stroke:var(--ph-ink);stroke-width:1.2px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.ph-house{fill:var(--ph-ink);stroke:var(--ph-ink);stroke-width:.6px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.ph-thumb-empty{color:var(--ph-muted);justify-items:center;gap:6px;display:grid}.ph-thumb-empty svg{width:96px;height:auto}.ph-thumb-empty rect{fill:#fff;stroke:var(--ph-field-line);stroke-dasharray:4 3}.ph-body{flex-direction:column;flex:1;gap:6px;min-width:0;padding:14px 16px 16px;display:flex}.ph-title-row{justify-content:space-between;align-items:center;gap:8px;min-height:30px;display:flex}.ph-name{letter-spacing:-.005em;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:15px;font-weight:500;overflow:hidden}.ph-rename{border:1px solid var(--ph-accent);border-radius:var(--ph-r);width:100%;min-width:0;box-shadow:0 0 0 3px var(--ph-accent-soft);font:inherit;color:var(--ph-ink);outline:0;margin-left:-8px;padding:3px 7px;font-size:15px;font-weight:500}.ph-when{color:var(--ph-muted);flex-wrap:wrap;gap:0 8px;margin:0;display:flex}.ph-when>span+span:before{content:"·";margin-right:8px}.ph-current{color:var(--ph-accent);font-weight:500}.ph-file{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.ph-numbers{color:var(--ph-muted);flex-wrap:wrap;gap:2px 14px;margin:0;display:flex}.ph-numbers b{color:var(--ph-ink);font-variant-numeric:tabular-nums;font-weight:500}.ph-card-actions{align-items:center;gap:14px;margin-top:auto;padding-top:8px;display:flex}.ph-menu-wrap{flex:none;position:relative}.ph-menu{z-index:10;border-radius:var(--ph-r-lg);background:#fff;border:1px solid #dcdfe3;min-width:220px;padding:4px;position:absolute;top:calc(100% + 6px);right:-8px;box-shadow:0 10px 28px -14px #16181b4d}.ph-menu button{border-radius:var(--ph-r);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;width:100%;height:34px;padding:0 10px;display:flex}.ph-menu button:hover{background:var(--ph-line-soft)}.ph-menu button .ph-ic{color:var(--ph-muted)}.ph-empty{text-align:center;max-width:460px;margin:72px auto 0}.ph-empty h2{margin:0 0 6px;font-size:18px;font-weight:500}.ph-empty p{color:var(--ph-muted);margin:0 0 20px}.ph-empty-art{width:150px;margin-bottom:18px}.ph-empty-art .ph-block{stroke-width:1.2px}.ph-empty .ph-empty-alt{margin:18px 0 0}.ph-card.skeleton .ph-thumb{background-image:none;background-color:var(--ph-line-soft)}.ph-card.skeleton i{background:var(--ph-line-soft);border-radius:2px;width:60%;height:12px;display:block}.ph-card.skeleton i+i{width:85%}.ph-toast{z-index:30;border-radius:var(--ph-r-lg);background:var(--ph-ink);color:#fff;align-items:center;gap:16px;width:max-content;max-width:calc(100vw - 32px);padding:10px 16px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.ph-toast .ph-link{color:var(--ph-accent-light);font-weight:500}.ph-scrim{z-index:40;background:#16181b52;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.ph-dialog{border:1px solid var(--ph-line);border-radius:var(--ph-r-lg);background:#fff;width:100%;max-width:540px;padding:22px 24px 20px}.ph-dialog h2{margin:0 0 8px;font-size:17px;font-weight:500}.ph-dialog p{margin:0 0 8px}.ph-dialog ul{margin:0 0 14px;padding-left:20px}.ph-dialog li{margin:2px 0}.ph-dialog .muted{color:var(--ph-muted)}.ph-dialog-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:18px;display:flex}.ph-grow{flex:1}@media (width<=760px){.projects-home{--ph-fs:15px}.ph-top{height:56px;padding:0 16px}.ph-brand span,.ph-long{display:none}.ph-short{display:inline}.ph-btn{height:44px;padding:0 14px}.ph-icon-btn{width:44px;height:44px;margin:-8px -10px -8px 0}.ph-main{padding:20px 16px 96px}.ph-head h1{font-size:20px}.ph-seg button{height:42px;padding:0 14px}.ph-grid{grid-template-columns:1fr;gap:14px}.ph-thumb{aspect-ratio:2}.ph-name,.ph-rename{font-size:17px}.ph-when,.ph-numbers{font-size:14px}.ph-card-actions .ph-btn{flex:1}.ph-card-actions .ph-link{min-height:44px}.ph-empty-alt .ph-link,.ph-toast .ph-link{margin:-12px -6px;padding:12px 6px}.ph-menu button{height:48px}.ph-empty{margin-top:40px}.ph-scrim{align-items:end;padding:0}.ph-dialog{max-width:none;padding:22px 16px calc(16px + env(safe-area-inset-bottom));border-radius:12px 12px 0 0}.ph-dialog-actions{flex-direction:column;align-items:stretch}.ph-a-del{order:1}.ph-a-dl{order:2}.ph-a-keep{order:3}.ph-grow{display:none}.ph-toast{bottom:calc(16px + env(safe-area-inset-bottom))}}.bhp-save-problem{z-index:6;color:#7a5300;background:#fff6e0;border:1px solid #f0deae;border-radius:4px;max-width:calc(100% - 32px);margin:0;padding:6px 12px;position:absolute;top:60px;left:50%;transform:translate(-50%)}.projects-home.in-shell .ph-head{flex-wrap:wrap;justify-content:flex-start}.projects-home.in-shell .ph-head .ph-top-actions{margin-left:auto}.app-shell .bhp-save-problem{top:var(--gap,14px)}@media (width<=760px){.projects-home.in-shell .ph-head .ph-top-actions{order:3;width:100%;margin-left:0}.projects-home.in-shell .ph-head .ph-btn{flex:1}.app-shell .bhp-save-problem{top:56px}}.app-shell.phone .ph-toast{bottom:calc(80px + env(safe-area-inset-bottom))}.app-shell{--ok:#1f7a4d;--ok-line:#b9dcc9}.app-shell .tnum{font-variant-numeric:tabular-nums}.float-col.report{width:min(560px,100% - 100px)}.float-col.report>.tab-panel:has(.costs-est){flex:1}.app-shell .panel-body:has(>.costs-est){flex-direction:column;flex:1;padding:0;display:flex;overflow:hidden}.costs-est{flex-direction:column;flex:1;min-height:0;display:flex}.ce-total{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;align-items:end;gap:4px 16px;padding:16px 20px;display:grid}.ce-big{letter-spacing:-.01em;font-size:30px;font-weight:500;line-height:1.2}.ce-range,.ce-right{color:var(--muted);font-size:13px}.ce-right{text-align:right}.ce-right b{color:var(--text);font-weight:500}.ce-guide{color:var(--muted);flex-wrap:wrap;grid-column:1/3;justify-content:space-between;align-items:center;gap:4px 10px;margin:6px 0 0;font-size:12.5px;display:flex}.ce-guide b{color:var(--text);font-weight:500}.ce-guide-tag{white-space:nowrap;border-radius:999px;padding:1px 7px;font-size:12px;font-weight:500}.ce-guide-tag.in{color:#1e6b3a;background:#e8f3ec}.ce-guide-tag.under,.ce-guide-tag.over{color:#8a5a00;background:#fdf3e1}.ce-split{background:var(--line-soft);border-radius:4px;grid-column:1/3;height:8px;margin-top:8px;overflow:hidden}.ce-split i{background:var(--text);height:100%;display:block}.ce-split-labels{color:var(--muted);grid-column:1/3;justify-content:space-between;gap:12px;font-size:12px;display:flex}.ce-who{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 20px;display:flex}.ce-seg{border:1px solid var(--line);border-radius:var(--r);display:inline-flex;overflow:hidden}.ce-seg button{height:30px;color:var(--muted);cursor:pointer;background:#fff;border:0;padding:0 10px;font-size:12.5px}.ce-seg button+button{border-left:1px solid var(--line)}.ce-seg button.on{background:var(--text);color:#fff}.ce-list{overscroll-behavior:contain;flex:1;min-height:0;overflow-y:auto}.ce-grp{border-bottom:1px solid var(--line-soft)}.ce-gh{text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:16px 1fr auto auto;align-items:center;gap:10px;width:100%;padding:11px 20px;font-size:14px;display:grid}.ce-gh:hover{background:#fafbfc}.ce-gh>svg{color:var(--muted);transition:transform .15s}.ce-grp.open .ce-gh>svg{transform:rotate(90deg)}.ce-gh .ce-amt{text-align:right;min-width:92px;font-weight:500}.ce-qchip{border:1px solid var(--ok-line);color:var(--ok);border-radius:10px;padding:0 7px;font-size:11.5px}.ce-lines{padding:0 20px 10px 46px}.ce-colhead,.ce-ln-main{grid-template-columns:minmax(0,1fr) 104px 84px 92px;gap:8px;display:grid}.ce-colhead{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;padding:2px 0 4px;font-size:11.5px}.ce-colhead span{text-align:right}.ce-ln{border-top:1px dashed var(--line-soft)}.ce-colhead+.ce-ln,.ce-ln:first-child{border-top:0}.ce-ln-main{text-align:left;background:0 0;border:0;align-items:baseline;width:100%;padding:6px 0;font-size:13px}button.ce-ln-main{cursor:pointer}.ce-ln.on{background:linear-gradient(90deg, var(--accent-soft), transparent 70%)}@media (hover:hover){.ce-ln:hover{background:linear-gradient(90deg, var(--accent-soft), transparent 70%)}}.ce-what small{color:var(--muted);font-size:12px;display:block}.ce-ln.missing .ce-what small{color:var(--warn-ink)}.ce-qty,.ce-rate{color:var(--muted);text-align:right}.ce-ln .ce-amt{text-align:right}.ce-amt.quoted{color:var(--ok);font-weight:500}.ce-amt s{color:var(--muted);font-size:11.5px;font-weight:400;display:block}.ce-quote{padding:4px 0 10px}.ce-quote-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ce-quote input,.cr-input input{border:1px solid var(--field-line);border-radius:var(--r);height:34px;font:inherit;background:#fff;padding:0 8px}.ce-quote input:first-child{width:130px}.ce-quote input+input{width:150px}.ce-quote .muted.small{margin-top:6px}.ce-nowrap{white-space:nowrap}.ce-foot{border-top:1px solid var(--line);align-items:center;gap:12px;padding:12px 20px;display:flex}.ce-foot p{flex:1;margin:0;font-size:12.5px}.ce-foot button.secondary{flex:none;align-items:center;gap:7px;display:inline-flex}.cm-rows{flex-direction:column;display:flex}.cm-row{border-top:1px solid var(--line-soft);grid-template-columns:76px minmax(0,1fr);align-items:center;gap:8px;padding:8px 0;display:grid}.cm-row:first-child{border-top:0}.cm-rows.detail .cm-row{align-items:start;padding:12px 0}.cm-rows.detail .cm-k{padding-top:5px}.cm-k{color:var(--muted)}.cm-linked{color:var(--muted);font-size:12.5px}.cm-chips{flex-wrap:wrap;gap:6px;display:flex}.cm-chip{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:14px;min-height:28px;padding:3px 9px;font-size:12.5px}.cm-chip:hover{border-color:var(--text)}.cm-chip.on{border-color:var(--text);background:var(--text);color:#fff}.cm-chip em{color:var(--muted);margin-left:4px;font-size:11.5px;font-style:normal}.cm-rows.detail .muted.small{margin-top:6px}.costs-materials{top:var(--gap);right:var(--gap);z-index:5;width:360px;max-height:calc(100% - 2 * var(--gap) - 50px);position:absolute;overflow-y:auto}.app-shell .costs-materials>header{align-items:center;padding:10px 12px 10px 16px}.app-shell .costs-materials>header h3{color:var(--text);margin:0;font-size:14px;font-weight:500}.app-shell .costs-materials>header button.link{font-size:13px;text-decoration:none}.costs-materials .cm-rows{padding:4px 16px 8px}.costs-legend{top:var(--gap);left:var(--free-left,16px);right:calc(360px + 2 * var(--gap) + 16px);z-index:4;color:var(--muted);padding:10px 14px;font-size:12.5px;position:absolute}.costs-legend b{color:var(--text);font-weight:500}.shell-main.report .plan-status,.shell-main.report .plan-actions,.shell-main.report .level-chip{display:none}.cq-sum{margin:0 0 12px}.cq-empty{padding:14px 0}.cq-row{border-top:1px solid var(--line-soft);padding:10px 0}.cq-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.cq-what small{font-size:12px;display:block}.cq-amt{flex-direction:column;flex:none;align-items:flex-end;display:flex}.cq-amt .quoted{color:var(--ok);font-weight:500}.cq-amt s{color:var(--muted);font-size:11.5px}.cq-actions{gap:14px;margin-top:4px;display:flex}.cr-group h3{margin-top:18px}.cr-row{border-top:1px solid var(--line-soft);padding:8px 0}.cr-label{justify-content:space-between;align-items:center;gap:12px;display:flex}.cr-input{color:var(--muted);flex:none;align-items:center;gap:4px;display:inline-flex}.cr-input em{font-style:normal}.cr-input .cr-unit{width:74px}.cr-input input{text-align:right;font-variant-numeric:tabular-nums;width:86px}.cr-row.changed .cr-input input{border-color:var(--accent);color:var(--accent)}.cr-row .muted.small{margin-top:4px}.costs-sources{margin:6px 0 0;padding-left:18px;font-size:12.5px}.costs-sources li+li{margin-top:4px}.costs-sources a{color:var(--accent)}.chip .dot.accent{background:var(--accent)}.costs-highlight{pointer-events:none}.costs-highlight .ch-fill{fill:#2346d01f;stroke:var(--accent,#2346d0);stroke-width:2px;stroke-linejoin:round}.costs-highlight .ch-line{fill:none;stroke:var(--accent,#2346d0);stroke-width:1.5px;stroke-dasharray:5 4}.costs-highlight .ch-solid{fill:var(--accent,#2346d0);stroke:var(--accent,#2346d0);stroke-width:1px;stroke-linejoin:round}.costs-highlight .ch-roof{fill:#2346d014;stroke:var(--accent,#2346d0);stroke-width:1.5px;stroke-dasharray:6 4}.costs-highlight .ch-dug{opacity:.45}.shell-main.report .plan-editor:has(.costs-highlight) .ground-overlay{opacity:.3}.app-shell.phone:has(.costs-strip){--strip-h:46px}.app-shell.phone .summary-strip.costs-strip{display:flex}.app-shell.phone .shell-main.report{background:#fff}.app-shell.phone .shell-main.report .plan-editor,.app-shell.phone .shell-main.report .canvas-3d,.app-shell.phone .shell-main.report canvas{visibility:hidden}.app-shell.phone .float-col.report{width:auto;max-height:none;top:0}.app-shell.phone .float-col.report>.tab-panel{box-shadow:none;border:0;border-radius:0}.app-shell.phone .tab-panel.report>.sheet-grab{display:none}.app-shell.phone .tab-panel.report>header{padding:14px 16px 10px}.app-shell.phone .float-col.report .panel-body{padding:12px 16px 18px}.app-shell.phone .float-col.report>.tab-panel{flex:1}.app-shell.phone .float-col.report .panel-body:has(>.costs-est){padding:0;display:block;overflow-y:auto}.app-shell.phone .costs-est,.app-shell.phone .ce-list{display:block;overflow:visible}.app-shell.phone .cq-amt small,.app-shell.phone .costs-sources li{font-size:14px}.app-shell.phone .costs-sources a{padding:12px 0;display:inline-block}.app-shell.phone .costs-sources li+li{margin-top:0}.app-shell.phone .ce-total{padding:14px 16px}.app-shell.phone .ce-big{font-size:32px}.app-shell.phone .ce-range,.app-shell.phone .ce-right,.app-shell.phone .ce-guide,.app-shell.phone .ce-split-labels{font-size:14px}.app-shell.phone .ce-split-labels{flex-direction:column;gap:2px}.app-shell.phone .ce-who{padding:10px 16px;font-size:15px}.app-shell.phone .ce-seg button{min-height:44px;padding:0 12px;font-size:15px}.app-shell.phone .ce-gh{min-height:52px;padding:12px 16px;font-size:15px}.app-shell.phone .ce-lines{padding:0 16px 12px}.app-shell.phone .ce-colhead,.app-shell.phone .ce-ln-main{grid-template-columns:minmax(0,1fr) auto;font-size:15px}.app-shell.phone .ce-ln-main{min-height:44px;padding:8px 0}.app-shell.phone .ce-qty,.app-shell.phone .ce-rate,.app-shell.phone .ce-colhead span:nth-child(2){display:none}.app-shell.phone .costs-est.ob .ce-colhead,.app-shell.phone .costs-est.ob .ce-ln-main{grid-template-columns:minmax(0,1fr) auto auto}.app-shell.phone .ce-what small,.app-shell.phone .ce-amt s,.app-shell.phone .ce-qchip,.app-shell.phone .ce-colhead{font-size:14px}.app-shell.phone .ce-quote input{height:44px;font-size:16px}.app-shell.phone .ce-quote input:first-child,.app-shell.phone .ce-quote input+input{flex:140px;width:auto}.app-shell.phone .ce-quote button{min-height:44px}.app-shell.phone .ce-foot{padding:12px 16px calc(12px + env(safe-area-inset-bottom));flex-wrap:wrap}.app-shell.phone .ce-foot p{flex-basis:100%;font-size:14px}.app-shell.phone .cm-row{grid-template-columns:1fr;gap:6px}.app-shell.phone .cm-rows.detail .cm-k{padding-top:0}.app-shell.phone .cm-chip{border-radius:22px;min-height:44px;padding:6px 12px;font-size:15px}.app-shell.phone .cm-chip em,.app-shell.phone .cm-linked,.app-shell.phone .cq-what small,.app-shell.phone .cq-amt s,.app-shell.phone .costs-sources{font-size:14px}.app-shell.phone .cm-linked button.link,.app-shell.phone .ce-quote button.link,.app-shell.phone .cr-row button.link{position:relative}.app-shell.phone .cm-linked button.link:after,.app-shell.phone .ce-quote button.link:after,.app-shell.phone .cr-row button.link:after{content:"";height:44px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.app-shell.phone .cq-actions button,.app-shell.phone .ce-quote-row button,.app-shell.phone .costs-est .ce-foot button{min-height:44px}.app-shell.phone .cr-input input{width:96px;height:44px;font-size:16px}.app-shell.phone .chip .dot.accent{flex:none}.tool-modes{margin:2px 0 8px}.segmented.mode-switch{width:100%;box-shadow:none}.segmented.mode-switch button{min-height:32px;font:inherit;flex:1 1 0;padding:5px 8px;font-size:13px}.app-shell .segmented.mode-switch button.on{background:var(--accent-soft,#e8ecfb)}body:has(.app-shell.phone) .segmented.mode-switch button{min-height:44px;font-size:14px}.drive-levels{gap:2px;margin:6px 0 8px;display:grid}.drive-levels h4,h4.drive-ground{letter-spacing:.02em;color:var(--muted);margin:8px 0 0;font-size:12px;font-weight:600}.drive-grade{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 8px;margin:8px 0 4px;display:flex}.drive-grade b{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:18px}.drive-chip{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12.5px;font-weight:600;display:inline-flex}.drive-chip.ok{color:#24704a;background:#e7f2ec}.drive-chip.warn{border:1px solid var(--warn-line,#f0deae);background:var(--warn-bg,#fff6e0);color:var(--warn-text,#7a5300)}.drive-chip.warn:before{content:"";background:var(--warn-dot,#d07a12);border-radius:50%;width:6px;height:6px}body:has(.app-shell.phone) .drive-levels h4{font-size:14px}body:has(.app-shell.phone) h4.drive-ground{font-size:14px}body:has(.app-shell.phone) .drive-chip{font-size:14px}.app-shell .checks{gap:8px;display:grid}.app-shell .segmented-choice{border:1px solid var(--field-line);border-radius:var(--r);justify-self:start;display:inline-flex;overflow:hidden}.app-shell .segmented-choice button{cursor:pointer;background:#fff;border:0;min-width:64px;padding:6px 14px;font-weight:500}.app-shell .segmented-choice button+button{border-left:1px solid var(--field-line)}.app-shell .segmented-choice button.on{background:var(--text);color:#fff}.app-shell .segmented-choice button:disabled{color:var(--muted);cursor:not-allowed;opacity:.55}.app-shell .checks-summary{margin:0;font-weight:600}.app-shell .check-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none;display:grid}.app-shell .check-row{border-bottom:1px solid var(--line-soft);padding:8px 0}.app-shell .check-head{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;width:100%;padding:0;display:flex}.app-shell .check-title{flex:1;font-weight:500}.app-shell .check-dot{border:1.5px solid var(--muted);border-radius:50%;flex:none;width:9px;height:9px}.app-shell .check-dot.pass{background:#2e7d4f;border-color:#2e7d4f}.app-shell .check-dot.warn{border-color:var(--warn-dot);background:var(--warn-dot)}.app-shell .check-dot.fail{border-color:var(--danger);background:var(--danger)}.app-shell .check-dot.pending{border-style:dashed;border-color:var(--text)}.app-shell .check-status{color:var(--muted);font-size:12px}.app-shell .check-status.fail{color:var(--danger);font-weight:600}.app-shell .check-status.warn{color:var(--warn-ink);font-weight:600}.app-shell .check-value{color:var(--text);margin:2px 0 0 17px}.app-shell .check-detail{gap:4px;margin:4px 0 0 17px;font-size:12px;display:grid}.app-shell .check-detail p{margin:0}.app-shell .check-source{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.app-shell .conf{border:1px solid var(--line);border-radius:var(--r);white-space:nowrap;padding:0 5px;font-size:11px;font-weight:600}.app-shell .conf.secondary{color:var(--muted)}.app-shell .conf.unverified{border-color:var(--warn-line);background:var(--warn-bg);color:var(--warn-text)}.app-shell .checks-more{border-top:1px solid var(--line);padding-top:8px}.app-shell .checks-more summary{cursor:pointer;font-weight:600}.app-shell .checks-more ul{margin:6px 0;padding-left:18px}.app-shell .lot-facts{gap:6px;display:grid}.app-shell.phone .check-head{min-height:44px}.app-shell.phone .check-detail,.app-shell.phone .check-status,.app-shell.phone .conf{font-size:14px}.app-shell.phone .segmented-choice button{min-height:44px}.share-links{--sl-ink:#16181b;--sl-muted:#6b7077;--sl-line:#e1e4e7;--sl-line-soft:#eef0f2;--sl-accent:#2346d0;--sl-accent-soft:#eef1fc;--sl-danger:#b3261e;--sl-r:3px;--sl-tap:34px;border-bottom:1px solid var(--sl-line-soft);color:var(--sl-ink);margin:0 0 18px;padding:0 0 16px;font-size:13px;line-height:1.45}.share-links *{box-sizing:border-box}.share-links .ic{flex:none;display:block}.share-links .sl-title{color:var(--sl-ink);align-items:center;gap:7px;margin:0 0 6px;font-size:13.5px;font-weight:600;display:flex}.share-links .sl-line{margin:0 0 10px;font-size:12.5px;line-height:1.5}.share-links .sl-who{color:var(--sl-ink)}.share-links .muted{color:var(--sl-muted)}.share-links .sl-btn{min-height:var(--sl-tap);border:1px solid var(--sl-line);border-radius:var(--sl-r);color:var(--sl-ink);font:inherit;white-space:nowrap;cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:7px;padding:0 13px;font-weight:600;display:inline-flex}.share-links .sl-btn:hover:not(:disabled){border-color:var(--sl-ink)}.share-links .sl-btn.primary{border-color:var(--sl-ink);background:var(--sl-ink);color:#fff;width:100%}.share-links .sl-btn.primary:hover:not(:disabled){background:#000}.share-links .sl-btn.quiet{min-height:30px;padding:0 10px;font-weight:500}.share-links .sl-btn:disabled{opacity:.55;cursor:default}.share-links :is(.sl-btn,.sl-url):focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}.share-links .sl-problem{border-radius:var(--sl-r);color:var(--sl-danger);background:#fdecea;margin:10px 0 0;padding:7px 10px;font-size:12.5px}.share-links .sl-fresh{border:1px solid var(--sl-accent);border-radius:var(--sl-r);background:var(--sl-accent-soft);margin-top:12px;padding:10px}.share-links .sl-url{border-radius:var(--sl-r);width:100%;height:34px;color:var(--sl-ink);font:inherit;text-overflow:ellipsis;background:#fff;border:1px solid #c9d2f3;padding:0 9px;font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.share-links .sl-fresh-actions{gap:8px;margin:8px 0;display:flex}.share-links .sl-fresh-actions .sl-btn{flex:1}.share-links .sl-fresh .sl-line{margin:0}.share-links .sl-list{margin-top:16px}.share-links .sl-list h4{color:var(--sl-muted);margin:0 0 4px;font-size:12.5px;font-weight:600}.share-links .sl-list ul{margin:0 0 8px;padding:0;list-style:none}.share-links .sl-list li{border-top:1px solid var(--sl-line-soft);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"made acts""meta meta";align-items:center;gap:2px 10px;padding:8px 0;display:grid}.share-links .sl-list li:first-child{border-top:0}.share-links .sl-list li.fresh .sl-made:after{content:" · new";color:var(--sl-accent);font-weight:600}.share-links .sl-made{grid-area:made;font-weight:500}.share-links .sl-meta{grid-area:meta;font-size:12.5px}@media (width<=760px),(pointer:coarse){.share-links{--sl-tap:44px;font-size:15px}.share-links .sl-title{font-size:15px}.share-links .sl-line,.share-links .sl-list h4,.share-links .sl-meta,.share-links .sl-problem{font-size:14px}.share-links .sl-btn.quiet{min-height:44px;padding:0 14px}.share-links .sl-url{height:44px;font-size:14px}}.share-links .sl-length{align-items:center;gap:10px;margin:0 0 10px;display:flex}.share-links .sl-length-label{color:var(--sl-muted);flex:none;font-size:12.5px}.share-links .sl-seg{flex:1;min-width:0;display:flex}.share-links .sl-seg button{border:1px solid var(--sl-line);min-height:30px;color:var(--sl-ink);font:inherit;white-space:nowrap;cursor:pointer;background:#fff;flex:1;margin-left:-1px;padding:0 8px;font-size:12.5px}.share-links .sl-seg button:first-child{border-radius:var(--sl-r) 0 0 var(--sl-r);margin-left:0}.share-links .sl-seg button:last-child{border-radius:0 var(--sl-r) var(--sl-r) 0}.share-links .sl-seg button[aria-checked=true]{border-color:var(--sl-accent);background:var(--sl-accent-soft);color:var(--sl-accent);font-weight:600;position:relative}.share-links .sl-seg button:disabled{opacity:.55;cursor:default}.share-links .sl-seg button:focus-visible{outline:2px solid var(--sl-accent);outline-offset:1px;position:relative}.share-links .sl-acts{grid-area:acts;gap:6px;display:flex}.share-links .sl-soon{color:#8a5a00;font-weight:500}@media (width<=760px),(pointer:coarse){.share-links .sl-length-label{font-size:14px}.share-links .sl-seg button{min-height:44px;font-size:14px}.share-links .sl-list li{grid-template-columns:minmax(0,1fr);grid-template-areas:"made""meta""acts"}.share-links .sl-acts{margin-top:6px}.share-links .sl-acts .sl-btn{flex:1}}.start-screen{--st-ink:#16181b;--st-muted:#6b7077;--st-line:#e1e4e7;--st-line-soft:#eef0f2;--st-field-line:#cfd3d8;--st-accent:#2346d0;--st-accent-soft:#eef1fc;--st-paper:#fcfcfd;--st-danger:#b3261e;--st-r:3px;--st-r-lg:4px;height:100%;min-height:100%;color:var(--st-ink);-webkit-font-smoothing:antialiased;background:#fff;font-family:IBM Plex Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px;line-height:1.45;overflow-y:auto}.start-screen *{box-sizing:border-box}.start-screen button,.start-screen input{font:inherit;color:inherit}.start-screen :focus-visible{outline:2px solid var(--st-accent);outline-offset:1px}.st-top{z-index:2;border-bottom:1px solid var(--st-line-soft);background:#fff;justify-content:space-between;align-items:center;gap:12px;height:56px;padding:0 24px;display:flex;position:sticky;top:0}.st-brand{white-space:nowrap;align-items:center;gap:10px;font-size:14px;font-weight:550;display:flex}.st-back{border-radius:var(--st-r);cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;min-height:34px;padding:0 10px 0 4px;font-weight:550;display:inline-flex}.st-back:hover{background:var(--st-line-soft)}.st-btn{border:1px solid var(--st-field-line);border-radius:var(--st-r);cursor:pointer;white-space:nowrap;background:#fff;justify-content:center;align-items:center;gap:7px;min-height:34px;padding:0 14px;font-weight:550;display:inline-flex}.st-btn:hover{border-color:var(--st-ink)}.st-btn.primary{background:var(--st-ink);border-color:var(--st-ink);color:#fff}.st-btn.primary:hover{background:#000}.st-btn:disabled{opacity:.6;cursor:progress}.st-short{display:none}.st-main{width:min(900px,100%);margin:0 auto;padding:44px 24px 56px}.st-step{color:var(--st-muted);align-items:center;gap:10px;margin:0 0 12px;font-weight:600;display:flex}.st-step i{background:var(--st-accent-soft);width:22px;height:22px;color:var(--st-accent);border-radius:50%;place-items:center;font-size:12px;font-style:normal;font-weight:700;display:grid}.st-main h1{letter-spacing:-.01em;margin:0 0 8px;font-size:30px;font-weight:600;line-height:1.12}.st-lede{max-width:56ch;color:var(--st-muted);margin:0 0 26px;font-size:15px}.st-choices{grid-template-columns:1fr 1fr;align-items:stretch;gap:18px;display:grid}.st-card{border:1px solid var(--st-line);border-radius:var(--st-r-lg);background:#fff;flex-direction:column;gap:10px;padding:18px;display:flex;box-shadow:0 1px 2px #0000000a}.st-art{border-radius:var(--st-r);background-color:var(--st-paper);background-image:linear-gradient(#f1f3f6 1px,#0000 1px),linear-gradient(90deg,#f1f3f6 1px,#0000 1px);background-size:14px 14px;height:140px;overflow:hidden}.st-card h2{margin:4px 0 0;font-size:17px;font-weight:600}.st-card>p{color:var(--st-muted);margin:0}.st-drop{border:1.5px dashed var(--st-field-line);border-radius:var(--st-r);color:var(--st-muted);text-align:center;justify-items:center;gap:10px;margin-top:auto;padding:18px;transition:background .15s,border-color .15s;display:grid}.st-drop.dragging{border-color:var(--st-accent);background:var(--st-accent-soft)}.st-drop-hint{justify-items:center;gap:4px;display:grid}.st-drop .st-btn{min-width:160px}.st-form{gap:7px;margin-top:auto;display:grid}.st-label{color:var(--st-muted);margin-bottom:4px;font-size:12.5px;font-weight:550;display:block}.st-form>.st-label{margin-bottom:-3px}.st-opt{font-weight:400}.st-size{grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;display:grid}.st-x{color:var(--st-muted)}.st-size>*,.st-row2>*{min-width:0}.st-row2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.st-field{border:1px solid var(--st-field-line);border-radius:var(--st-r);background:#fff;align-items:center;min-height:34px;padding:0 10px;display:flex}.st-field:focus-within{border-color:var(--st-accent);box-shadow:0 0 0 1px var(--st-accent)}.start-screen .st-field input:focus-visible{outline:none}.st-field input{font-variant-numeric:tabular-nums;background:0 0;border:0;outline:0;flex:1;min-width:0;padding:6px 0}.st-field span{color:var(--st-muted)}.st-seg{border:1px solid var(--st-field-line);border-radius:var(--st-r);grid-template-columns:repeat(4,1fr);min-height:34px;display:grid;overflow:hidden}.st-seg button{border:0;border-left:1px solid var(--st-line);cursor:pointer;background:#fff;font-weight:550}.st-seg button:first-child{border-left:0}.st-seg button.on{background:var(--st-ink);color:#fff}.st-note{color:var(--st-muted);margin:2px 0 0;font-size:12.5px}.st-error{color:var(--st-danger);margin:0}.st-form .st-btn{margin-top:4px}@media (width<=760px),(pointer:coarse){.start-screen{font-size:15px}.st-top{height:56px;padding:0 12px 0 16px}.st-btn,.st-back,.st-field,.st-seg{min-height:44px}.st-label,.st-note,.st-step i{font-size:14px}.st-step i{width:26px;height:26px}.st-field input{font-size:16px}}@media (width<=760px){.st-long{display:none}.st-short{display:inline}.st-main{padding:20px 16px 40px}.st-main h1{font-size:27px}.st-lede{margin-bottom:18px}.st-choices{grid-template-columns:minmax(0,1fr);gap:14px}.st-card{padding:14px 16px 16px}.st-art{height:96px}.st-drop{border:0;padding:4px 0 0}.st-drop .st-btn,.st-form .st-btn{width:100%}}.sketch-chip{z-index:4;color:#16181b;white-space:nowrap;background:#fffffff7;border:1px solid #dcdfe3;border-radius:4px;align-items:center;gap:10px;max-width:calc(100% - 32px);padding:4px 4px 4px 12px;font-size:12.5px;display:flex;position:absolute;top:60px;left:50%;transform:translate(-50%);box-shadow:0 1px 2px #0000000d}.sketch-chip>span{text-overflow:ellipsis;overflow:hidden}.sketch-chip b{font-weight:600}.sketch-chip button{color:#2346d0;min-height:26px;font:inherit;cursor:pointer;background:#eef1fc;border:0;border-radius:3px;flex:none;padding:0 10px;font-weight:600}.sketch-chip button:hover{color:#fff;background:#2346d0}.app-shell .sketch-chip{top:12px;left:calc(var(--free-left,14px) + (100% - var(--free-left,14px)) / 2)}.app-shell.phone .sketch-chip{justify-content:space-between;max-width:none;font-size:14px;top:64px;left:12px;right:64px;transform:none}.app-shell.phone .sketch-chip button{min-height:36px}.sketch-notice{background:#fcfcfd;border:1px solid #e1e4e7;border-radius:4px;margin:4px 0 10px;padding:10px 12px}.sketch-notice p{margin:0 0 8px}.sketch-size{grid-template-columns:1fr 1fr;gap:6px 10px;display:grid}.sketch-size label{color:#6b7077;gap:2px;font-size:12.5px;display:grid}.sketch-size input,.sketch-size select{min-height:30px;font:inherit;color:#16181b}.sketch-size .row,.sketch-size .sketch-error{grid-column:1/-1}.sketch-error{color:#b3261e;margin:0}body:has(.app-shell){--bg:#fff;--panel:#fff;--text:#16181b;--muted:#6b7077;--line:#e1e4e7;--line-soft:#eef0f2;--field-line:#cfd3d8;--accent:#2346d0;--accent-soft:#eef1fc;--primary:#16181b;--warn-bg:#fff6e0;--warn-line:#f0deae;--warn-text:#7a5300;--warn-ink:#9a4a00;--warn-dot:#d07a12;--danger:#b3261e;--overlay:#fffffff7;--overlay-line:#dcdfe3;--r:3px;--r-lg:4px;--nav-w:88px;--top-h:52px;--strip-h:42px;--panel-w:332px;--gap:14px;color:var(--text);background:#fff;font-family:IBM Plex Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px;line-height:1.45}.app-shell{grid-template-columns:var(--nav-w) minmax(0, 1fr);grid-template-rows:var(--top-h) var(--strip-h) minmax(0, 1fr);background:#fff;grid-template-areas:"rail top""rail strip""rail main";height:100%;display:grid}.app-shell button{font:inherit;color:inherit}.app-shell :focus-visible{outline:2px solid var(--accent);outline-offset:1px}.app-shell .phone-only,.app-shell .bottom-bar{display:none}.area-rail{border-right:1px solid var(--line);background:#fff;flex-direction:column;grid-area:rail;align-items:center;gap:10px;padding:14px 6px;display:flex}.rail-logo{border-radius:var(--r-lg);place-items:center;width:44px;height:44px;margin-bottom:18px;display:grid}.area-link{color:#454a51;justify-items:center;row-gap:5px;width:74px;padding:10px 2px 8px;text-decoration:none;display:grid;position:relative}.area-link span{font-size:11.5px;font-weight:500}.area-link:hover,.area-link.on{color:var(--text)}.area-link.on:before{content:"";background:var(--accent);width:2px;position:absolute;top:10px;bottom:10px;left:-6px}.top-bar{border-bottom:1px solid var(--line);background:#fff;grid-area:top;align-items:stretch;gap:12px;min-width:0;padding:0 12px 0 14px;display:flex}.top-title{flex:1;align-items:center;padding:0 4px;font-size:15px;font-weight:600;display:flex}.tab-bar{scrollbar-width:none;flex:1;align-items:stretch;min-width:0;display:flex;overflow-x:auto}.tab-bar::-webkit-scrollbar{display:none}.tab{color:var(--muted);white-space:nowrap;align-items:center;gap:6px;padding:0 12px;font-weight:500;text-decoration:none;display:flex}.tab:hover{color:var(--text)}.tab.on{color:var(--text);box-shadow:inset 0 -2px 0 var(--text)}.top-actions{flex:none;align-items:center;gap:8px;display:flex}.view-switch{border:1px solid var(--line);border-radius:calc(var(--r) + 2px);background:#fff;gap:2px;padding:3px;display:inline-flex}.view-switch button{border-radius:var(--r);height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0 11px;font-weight:500;display:flex}.view-switch button.on{background:var(--text);color:#fff}.undo-redo{border-left:1px solid var(--line);border-right:1px solid var(--line);gap:2px;padding:0 4px;display:flex}.undo-redo button,.icon-button{border-radius:var(--r);width:34px;height:34px;color:var(--text);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid;position:relative}.undo-redo button:hover:not(:disabled),.icon-button:hover{background:var(--line-soft)}.undo-redo button:disabled{color:var(--muted);opacity:.45;cursor:default}.undo-redo button[data-tip]:hover:after,.undo-redo button[data-tip]:focus-visible:after{content:attr(data-tip);z-index:30;background:var(--text);color:#fff;white-space:nowrap;pointer-events:none;border-radius:6px;padding:5px 9px;font-size:12px;font-weight:500;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.search-button{border:1px solid var(--line);border-radius:var(--r);width:188px;height:34px;color:var(--muted);cursor:pointer;background:#fff;align-items:center;gap:8px;padding:0 6px 0 10px;display:flex}.search-button kbd,.app-shell kbd{border:1px solid var(--line);color:var(--muted);border-radius:4px;margin-left:auto;padding:3px 5px;font:500 11px/1 IBM Plex Sans,system-ui,sans-serif}.app-shell .row kbd,.app-shell h2 kbd{margin-left:6px}.project-menu{position:relative}.project-button{border:1px solid var(--line);border-radius:var(--r);cursor:pointer;background:#fff;align-items:center;gap:6px;max-width:220px;height:34px;padding:0 8px 0 12px;font-weight:600;display:flex}.project-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.menu-pop{z-index:40;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;width:290px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 18px 50px -12px #00000047,0 2px 6px #0000000f}.menu-item{border-radius:var(--r);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;min-height:34px;padding:0 10px;display:flex}.menu-item:hover,.menu-item:focus-visible{background:var(--line-soft);outline:none}.menu-item .ic{color:var(--muted)}.menu-item.danger{color:var(--danger)}.menu-item.danger .ic{color:currentColor}.menu-pop [data-item=project-name],.menu-pop [data-item=save-project],.menu-pop [data-item=import-plan],.menu-pop [data-item=replace-survey]{border-top:1px solid var(--line-soft);margin-top:5px;padding-top:5px}.menu-pop button[data-item]:is([data-item=save-project],[data-item=import-plan],[data-item=replace-survey]){border-radius:0 0 var(--r) var(--r)}.menu-field{padding:6px 10px 4px}.menu-field .num{grid-template-columns:1fr;gap:4px}.menu-field .num input.text{width:100%}.menu-note{gap:1px;padding:4px 10px 8px;font-size:12px;display:grid}.menu-note .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.flash{animation:1.6s ease-out flash}@keyframes flash{0%,30%{background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent)}to{background:0 0;box-shadow:0 0 0 2px #0000}}.summary-strip{z-index:6;border-bottom:1px solid var(--line);white-space:nowrap;background:#fff;grid-area:strip;align-items:center;gap:8px;min-width:0;padding:0 10px 0 4px;display:flex;position:relative}.chips{scrollbar-width:none;flex:1;align-items:center;min-width:0;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{height:24px;color:var(--text);white-space:nowrap;background:0 0;border:0;flex:none;align-items:center;gap:5px;padding:0 12px;font-size:12.5px;display:inline-flex}.chips>*+*{border-left:1px solid var(--line)}button.chip{cursor:pointer}button.chip:hover .chip-label{color:var(--text);text-underline-offset:3px;text-decoration:underline}.chip-label{color:var(--muted)}.chip b{font-weight:600}.chip .badge.warn{color:var(--warn-ink);margin-left:4px;font-size:12px;font-weight:500}.chip.ghost{border:1px dashed var(--line);border-radius:var(--r);color:var(--muted);margin:0 6px}.chips>.chip.ghost+*{border-left-color:#0000}.chip.ghost em{opacity:.85;font-style:normal}.chip.warn{color:var(--warn-ink);font-weight:500}.chip.fail{color:var(--danger);font-weight:500}.chip.fail .dot{background:var(--danger)}.chip .dot{background:var(--warn-dot);border-radius:50%;width:6px;height:6px}.chip.attn{border:1px solid var(--warn-line);background:var(--warn-bg);height:28px;color:var(--warn-text);border-radius:999px;margin:0 8px;padding:0 3px 0 9px}.chips>.chip.attn+*{border-left-color:#0000}.chip.attn .attn-text{color:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.chip.attn .act{background:var(--primary);color:#fff;cursor:pointer;border:0;border-radius:999px;align-items:center;height:22px;margin-left:4px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.overview-button{border-radius:var(--r);cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:4px;height:30px;padding:0 6px 0 10px;font-weight:600;display:inline-flex}.overview-button.on{background:var(--accent-soft);color:var(--accent)}.app-shell .shell-main{background:#fcfcfd;grid-area:main;min-width:0;height:auto;min-height:0;position:relative;overflow:hidden}.shell-main.projects{background:#fafbfc;overflow:auto}.app-shell .shell-main.projects{grid-row:strip-start/main-end}.app-shell .plan-actions>button.secondary:first-child,.app-shell .view-actions{display:none}.app-shell .readout{left:var(--free-left,16px);bottom:var(--gap);max-width:calc(100% - var(--free-left,16px) - 340px);border-radius:var(--r-lg);flex-wrap:nowrap;overflow:hidden}.app-shell .readout>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.app-shell .readout>span:has(b){flex:none}.app-shell .plan-actions{top:auto;right:auto;left:var(--free-left,16px);align-items:flex-start;bottom:54px}.app-shell .ground-key,.app-shell .readout,.app-shell .level-chip,.app-shell .print-key,.app-shell .segmented{border-radius:var(--r-lg)}.app-shell .scalebar{bottom:62px}.app-shell .canvas-print .readout{left:var(--free-left,16px)}.app-shell .level-chip{top:var(--gap);left:var(--free-left,16px)}.app-shell .has-col .level-chip{left:calc(var(--free-left,16px))}.app-shell .has-inspector .plan-compass{right:326px}.app-shell .canvas-3d .compass{top:var(--gap);right:var(--gap)}.app-shell .canvas-3d .legend{top:82px;right:20px}.tool-rail{top:var(--gap);left:var(--gap);z-index:4;border:1px solid var(--overlay-line);border-radius:calc(var(--r) + 3px);background:var(--overlay);flex-direction:column;gap:2px;padding:5px;display:flex;position:absolute}.tool-rail .tool-gap{border-top:1px solid var(--overlay-line);margin-top:4px;padding-top:6px}.tool-rail button{border-radius:var(--r);width:38px;height:38px;color:var(--text);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.tool-rail button:hover{background:var(--line-soft)}.tool-rail button.on{background:var(--text);color:#fff}.float-col{top:var(--gap);bottom:var(--gap);left:var(--gap);z-index:5;width:var(--panel-w);pointer-events:none;flex-direction:column;gap:10px;display:flex;position:absolute}.has-rail .float-col{left:70px}.float-col>*{pointer-events:auto}.float-card{border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;box-shadow:0 1px #00000005,0 12px 32px -18px #0000002e}.float-card>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:10px;padding:16px 16px 12px 20px;display:flex}.float-card h2{letter-spacing:-.005em;text-transform:none;color:var(--text);margin:0;font-size:17px;font-weight:500}.float-card>header p{margin:3px 0 0}.tool-card{flex:none}.tool-card>header{align-items:center;padding:10px 12px 10px 16px}.tool-card h2{font-size:14px;font-weight:600}.tool-card .tool-options,.tool-card>p{margin:0;padding:12px 16px 14px}.tab-panel{flex-direction:column;min-height:0;max-height:100%;display:flex}.panel-body{min-height:0;padding:14px 20px 20px;overflow-y:auto}.panel-pill{cursor:pointer;align-self:flex-start;align-items:center;gap:6px;height:34px;padding:0 12px 0 8px;font-weight:600;display:inline-flex}.plain{color:var(--accent);cursor:pointer;background:0 0;border:0;font-weight:600}.plain.small{font-size:12.5px}.inspector{top:var(--gap);right:var(--gap);z-index:5;width:300px;max-height:calc(100% - 92px);position:absolute;overflow-y:auto}.inspector .selection{background:0 0;border:0;margin:0;padding:16px}.inspector .selection h2{margin:0 30px 4px 0}.inspector-close{z-index:1;position:absolute;top:10px;right:8px}.float-col.wide{width:min(440px,100% - 100px)}.inspector.wide{width:min(440px, calc(100% - 2 * var(--gap)))}.canvas-controls{right:var(--gap);bottom:var(--gap);z-index:4;border:1px solid var(--overlay-line);border-radius:calc(var(--r) + 1px);background:var(--overlay);display:inline-flex;position:absolute;overflow:hidden}.canvas-controls button{white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;height:34px;padding:0 11px;font-weight:500;display:inline-flex}.canvas-controls>button+button,.canvas-controls>span+button{border-left:1px solid var(--overlay-line)}.canvas-controls button:hover{background:var(--line-soft)}.canvas-controls button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.app-shell .float-card h3,.app-shell .ov-group h4{color:var(--muted);margin:16px 0 8px;font-size:12.5px;font-weight:600}.app-shell .panel-body>h3:first-child,.app-shell .panel-body>div>h3:first-child,.app-shell .area-summary:first-child h3{margin-top:0}.app-shell p{margin:0 0 10px}.app-shell p.small,.app-shell .muted.small{margin:8px 0 0;font-size:12.5px;line-height:1.5}.app-shell .notice{color:var(--warn-ink)}.app-shell p.notice.small{border-radius:var(--r);background:var(--warn-bg);color:var(--warn-text);padding:7px 10px}.app-shell .stats{gap:0}.app-shell .stats dt{padding-right:12px}.app-shell .stats dt,.app-shell .stats dd{border-top:1px solid var(--line-soft);padding:6px 0}.app-shell .stats dt:first-of-type,.app-shell .stats dd:first-of-type{border-top:0}.app-shell .stats dd{font-weight:500}.app-shell button.secondary{border:1px solid var(--line);border-radius:var(--r);background:#fff;height:34px;padding:0 13px;font-weight:600}.app-shell button.secondary:hover:not(:disabled){border-color:var(--text)}.app-shell button.secondary.on{border-color:var(--text);box-shadow:0 0 0 1px var(--text)}.app-shell button.danger{color:var(--danger)}.app-shell button.primary,.app-shell a.button.primary{border:1px solid var(--primary);border-radius:var(--r);background:var(--primary);color:#fff;cursor:pointer;justify-content:center;align-items:center;height:34px;padding:0 14px;font-weight:600;text-decoration:none;display:inline-flex}.app-shell .secondary-sm{border:1px solid var(--line);border-radius:var(--r);cursor:pointer;background:#fff;height:30px;margin-left:auto;padding:0 12px;font-weight:600}.app-shell button.link{color:var(--accent);text-underline-offset:3px}.app-shell button.link.quiet{margin-left:auto;font-size:12.5px;font-weight:600;text-decoration:none}.app-shell .num{min-height:36px}.app-shell .num select,.app-shell .num-input input,.app-shell .num input.text,.app-shell .layers select{border:1px solid var(--field-line);border-radius:var(--r);background:#fff;height:32px}.app-shell .num-input input{font-weight:600}.app-shell .tool-options{margin-top:0}.app-shell .levels li.on .level-btn{border-color:var(--text);color:var(--text);box-shadow:0 0 0 1px var(--text);background:#fff}.app-shell .level-btn{border-radius:var(--r)}.app-shell .check input,.app-shell .slider input{accent-color:var(--accent)}.app-shell .warnings p{border-radius:var(--r)}.app-shell .error{color:var(--danger)}.pick-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}.pick-list button{border:1px solid var(--line);border-radius:var(--r);text-align:left;cursor:pointer;background:#fff;justify-content:space-between;gap:8px;width:100%;padding:8px 10px;display:flex}.pick-list button.on{border-color:var(--text);box-shadow:0 0 0 1px var(--text)}.drive+.drive{border-top:1px solid var(--line);margin-top:14px;padding-top:4px}.drive h3 button.link{color:var(--text);font-weight:600}.drive.on h3 button.link{color:var(--accent)}.more-list{display:grid}.more-item{border-radius:var(--r);scroll-margin-top:8px}.more-item+.more-item{border-top:1px solid var(--line-soft)}.more-item .panel h2{color:var(--text);margin:0;font-size:13px;font-weight:600}.more-item .panel-toggle{all:unset;box-sizing:border-box;cursor:pointer;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:11px 2px;display:flex}.more-item .panel-toggle>span{align-items:center;gap:8px;display:flex}.more-item .panel-toggle svg:not(.ic){fill:none;stroke:currentColor;stroke-width:1.6px;width:12px;height:12px;transition:transform .15s}.more-item .panel.folded .panel-toggle svg:not(.ic){transform:rotate(-90deg)}.more-item .panel>:not(h2){margin-bottom:0}.more-item .panel{padding-bottom:12px}.more-item .panel.folded{padding-bottom:0}.sheet-backdrop{z-index:20;background:#14181c1a;position:fixed;inset:0}.overview-sheet{top:calc(var(--top-h) + var(--strip-h) + 8px);z-index:21;width:min(920px, calc(100vw - var(--nav-w) - 32px));max-height:calc(100vh - var(--top-h) - var(--strip-h) - 24px);border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;position:fixed;right:16px;overflow-y:auto;box-shadow:0 18px 50px -12px #00000047,0 2px 6px #0000000f}.overview-sheet:focus{outline:none}.overview-sheet>header{align-items:baseline;gap:10px;padding:18px 18px 0 26px;display:flex}.overview-sheet h2{margin:0;font-size:17px;font-weight:500}.overview-sheet>header .icon-button{align-self:center;margin-left:auto}.sheet-grab{display:none}.ov-cols{grid-template-columns:1fr 1fr;gap:34px;padding:12px 26px 24px;display:grid}.ov-cols>div{align-content:start;gap:22px;display:grid}.ov-group>h3{border-bottom:1px solid var(--line);min-height:34px;color:var(--text);align-items:center;gap:8px;margin:0 0 4px;padding-bottom:4px;font-size:15px;font-weight:500;display:flex}.ov-problem{justify-content:space-between;align-items:center;gap:10px;padding:8px 0 2px;display:flex}.ov-problem .chip{white-space:normal;border-radius:999px;gap:7px;height:auto;min-height:30px;padding:4px 11px}.ov-problem button{flex:none}.ov-problem .chip.warn{border:1px solid var(--line)}.palette-backdrop{z-index:50;background:#14181c2e;justify-content:center;align-items:flex-start;padding:12vh 16px 16px;display:flex;position:fixed;inset:0}.palette{border:1px solid var(--line);background:#fff;border-radius:6px;flex-direction:column;width:min(620px,100%);max-height:70vh;display:flex;overflow:hidden;box-shadow:0 24px 60px -16px #00000059,0 2px 6px #0000000f}.palette-input{border-bottom:1px solid var(--line);color:var(--muted);align-items:center;gap:10px;padding:0 14px;display:flex}.palette-input input:focus-visible{outline:none}.palette-input input{height:52px;color:var(--text);background:0 0;border:0;outline:none;flex:1;font-size:16px}.palette-list{flex:1;margin:0;padding:6px;list-style:none;overflow-y:auto}.palette-list li{border-radius:var(--r-lg);cursor:pointer;align-items:center;gap:10px;min-height:42px;padding:6px 10px;display:flex}.palette-list li.on{background:var(--accent-soft)}.palette-empty{cursor:default}.pi-icon{width:20px;color:var(--muted);flex:none;place-items:center;display:grid}.pi-dot{background:var(--line);border-radius:50%;width:5px;height:5px;box-shadow:0 0 0 1px #c3c7cc}.pi-text{flex:1;min-width:0;display:grid}.pi-label{overflow-wrap:anywhere}.pi-where{color:var(--muted);font-size:12px}.pi-kind{color:var(--muted);flex:none;font-size:11.5px}.pi-kind.run{color:var(--accent);font-weight:600}.palette-list li kbd{margin-left:0}.palette-foot{border-top:1px solid var(--line);gap:16px;padding:8px 14px;font-size:12px;display:flex}.palette-foot kbd{margin:0 2px 0 0}.palette-offer{padding:18px 20px}.palette-offer .row{gap:8px}.toast{z-index:60;background:var(--text);color:#fff;border-radius:6px;align-items:center;gap:8px;max-width:min(560px,100vw - 32px);padding:8px 8px 8px 14px;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}.toast .icon-button{color:#fff;width:26px;height:26px}.toast .icon-button:hover{background:#ffffff1f}.app-shell.phone{--top-h:52px;--strip-h:46px;--gap:10px;grid-template-columns:minmax(0,1fr);grid-template-rows:var(--top-h) var(--strip-h) minmax(0, 1fr) auto;grid-template-areas:"top""strip""main""bottom";font-size:15px}.app-shell.phone .area-rail,.app-shell.phone .desk-only{display:none}.app-shell.phone .phone-only{display:contents}.app-shell.phone .phone-logo{flex:none;place-items:center;width:44px;display:grid}.app-shell.phone .top-bar{gap:2px;padding:0 2px 0 8px}.app-shell.phone .tab{flex:none;justify-content:center;min-width:44px;padding:0 11px;font-size:15px}.app-shell.phone .top-actions{gap:0}.app-shell.phone .undo-redo{border:0;padding:0}.app-shell.phone .undo-redo button,.app-shell.phone .icon-button{width:44px;height:44px}.app-shell.phone .search-button{width:44px;height:44px;color:var(--text);border:0;justify-content:center;padding:0}.app-shell.phone .project-button{border:0;justify-content:center;width:44px;height:44px;padding:0}.app-shell.phone .project-title{display:none}.app-shell.phone .project-button:before{content:"⋯";font-size:20px;line-height:1}.app-shell.phone .project-button .ic{display:none}.app-shell.phone .menu-pop{width:auto;max-height:80vh;padding:10px 12px calc(12px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0;position:fixed;inset:auto 0 0;overflow-y:auto}.app-shell.phone .menu-item{min-height:48px}.app-shell.phone .bottom-bar{height:calc(66px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--line);background:#fff;grid-area:bottom;grid-template-columns:repeat(5,1fr);display:grid}.app-shell.phone .bottom-bar .area-link{width:auto;min-height:44px;color:var(--muted);padding:8px 2px 6px}.app-shell.phone .bottom-bar .area-link span{font-size:14px}.app-shell.phone .bottom-bar .area-link.on{color:var(--text);font-weight:600}.app-shell.phone .bottom-bar .area-link.on:before{display:none}.app-shell.phone .summary-strip{padding:0 4px 0 0}.app-shell.phone .chip{height:30px;font-size:14px}.app-shell.phone .chip.attn,.app-shell.phone .chip.warn,.app-shell.phone .chip.fail{order:-1}.app-shell.phone .chip.ghost{display:none}.app-shell.phone .chip.attn{height:34px}.app-shell.phone .chip.attn .act{height:28px;padding:0 11px;font-size:14px}.app-shell.phone .overview-button{height:44px;font-size:14px}.app-shell.phone .tool-rail{top:var(--gap);left:var(--gap);max-height:calc(100% - 2 * var(--gap));padding:3px;overflow-y:auto}.app-shell.phone .tool-rail button{width:44px;height:44px}.app-shell.phone .float-col{gap:0;width:auto;max-height:48%;position:absolute;inset:auto 0 0}.app-shell.phone .float-card{border-radius:18px 18px 0 0;box-shadow:0 -8px 28px -8px #00000038}.app-shell.phone .tab-panel:before,.app-shell.phone .inspector:before{content:"";background:var(--line);border-radius:3px;flex:none;width:38px;height:5px;margin:8px auto 0;display:block}.app-shell.phone .float-card>header{padding:8px 8px 10px 18px}.app-shell.phone .panel-body{padding:12px 18px 18px}.app-shell.phone .tool-card{border-radius:18px 18px 0 0}.app-shell.phone .tool-card+.tab-panel{box-shadow:none;border-radius:0}.app-shell.phone .panel-pill{bottom:var(--gap);border-radius:999px;height:44px;position:absolute;left:50%;transform:translate(-50%)}.app-shell.phone .inspector{z-index:7;border-radius:18px 18px 0 0;width:auto;max-height:60%;inset:auto 0 0;box-shadow:0 -8px 28px -8px #00000038}.app-shell.phone .inspector-close{top:16px}.app-shell.phone .canvas-controls{top:var(--gap);background:0 0;border:0;flex-direction:column;gap:8px;bottom:auto;overflow:visible}.app-shell.phone .canvas-controls button{border:1px solid var(--overlay-line);border-radius:var(--r-lg);background:var(--overlay);justify-content:center;width:44px;height:44px;padding:0}.app-shell.phone .canvas-controls button span{display:none}.app-shell.phone .canvas-controls>button+button,.app-shell.phone .canvas-controls>span+button{border-left:1px solid var(--overlay-line)}.app-shell.phone .has-col .canvas-controls,.app-shell.phone .has-inspector .canvas-controls{bottom:auto}.app-shell.phone .level-chip{top:var(--gap);left:calc(var(--gap) + 62px);width:max-content;max-width:calc(100% - 140px);right:64px}.app-shell.phone .shell-main:not(.has-rail) .level-chip{left:var(--gap)}.app-shell.phone .plan-compass{top:auto;bottom:var(--gap);right:var(--gap);width:44px;height:44px}.app-shell.phone .canvas-3d .compass{top:auto;bottom:14px;right:var(--gap);width:44px;height:44px}.app-shell.phone .canvas-3d .legend{height:110px;top:auto;bottom:70px;right:16px}.app-shell.phone .plan-actions{bottom:var(--gap)}.app-shell.phone .readout,.app-shell.phone .scalebar,.app-shell.phone .print-key{display:none}.app-shell.phone .num,.app-shell.phone .check{min-height:44px}.app-shell.phone .num select,.app-shell.phone .num-input input,.app-shell.phone .num input.text{height:44px;font-size:15px}.app-shell.phone button.secondary,.app-shell.phone button.primary,.app-shell.phone a.button.primary,.app-shell.phone .pick-list button,.app-shell.phone .level-btn{min-height:44px}.app-shell.phone .small,.app-shell.phone p.small,.app-shell.phone .muted.small,.app-shell.phone .pi-where,.app-shell.phone .chip .badge.warn{font-size:14px}.app-shell.phone .overview-sheet{border-radius:18px 18px 0 0;width:auto;max-height:88vh;inset:auto 0 0}.app-shell.phone .sheet-grab{background:var(--line);border-radius:3px;width:38px;height:5px;margin:8px auto 0;display:block}.app-shell.phone .overview-sheet>header{padding:8px 8px 0 18px}.app-shell.phone .ov-cols{grid-template-columns:1fr;gap:22px;padding:8px 18px 24px}.app-shell.phone .palette-backdrop{align-items:stretch;padding:0}.app-shell.phone .palette{border-radius:0;max-height:none}.app-shell.phone .palette-list li{min-height:52px}.app-shell.phone .palette-foot{display:none}.app-shell.phone .toast{bottom:calc(80px + env(safe-area-inset-bottom))}.app-shell .sel-figure{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:baseline;gap:12px;margin:2px 0 12px;padding-bottom:10px;display:flex}.app-shell .sel-figure span{color:var(--muted)}.app-shell .sel-figure b{font-variant-numeric:tabular-nums;font-size:20px;font-weight:600}.app-shell.phone .chip,.app-shell.phone .chip.attn .attn-text,.app-shell.phone .chip.attn .act{position:relative}.app-shell.phone .chip:after,.app-shell.phone .chip.attn .attn-text:after,.app-shell.phone .chip.attn .act:after{content:"";height:44px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.app-shell.phone .chip.attn:after{content:none}.app-shell.phone .chip.attn .attn-net{display:none}.app-shell.phone .float-card .icon-button{flex:none;width:44px;height:44px}.app-shell.phone .more-item .panel-toggle{min-height:44px}.app-shell.phone .level-chip,.app-shell.phone .ground-key,.app-shell.phone .ground-key li.small,.app-shell.phone .more-item .panel-toggle,.app-shell.phone .num em,.app-shell.phone .float-card h3{font-size:14px}.app-shell.phone kbd{display:none}.app-shell .preset-bar{top:var(--gap);z-index:4;gap:8px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.app-shell .preset-group{border:1px solid var(--overlay-line);border-radius:calc(var(--r) + 1px);background:var(--overlay);display:inline-flex;overflow:hidden}.app-shell .preset-group button,.app-shell .preset-done{white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;height:34px;padding:0 12px;font-weight:500;display:inline-flex}.app-shell .preset-group button+button{border-left:1px solid var(--overlay-line)}@media (hover:hover){.app-shell .preset-group button:hover{background:var(--line-soft)}}.app-shell .preset-group button.on{background:var(--accent-soft);color:var(--accent)}.app-shell .preset-done{border:1px solid var(--overlay-line);border-radius:calc(var(--r) + 1px);background:var(--overlay)}.ground-pin{pointer-events:none;justify-items:center;gap:4px;font-family:IBM Plex Sans,system-ui,sans-serif;display:grid;transform:translate(-50%,calc(7px - 100%))}.ground-pin-tip{color:#fff;white-space:nowrap;background:#16181b;border-radius:4px;gap:1px;padding:7px 12px 8px;display:grid;box-shadow:0 6px 18px -6px #00000073}.ground-pin-tip b{font-variant-numeric:tabular-nums;font-size:16px;font-weight:600}.ground-pin-tip span{color:#d5d8dc;font-size:14px}.ground-pin-dot{background:#fff;border:3px solid #16181b;border-radius:50%;width:14px;height:14px;box-shadow:0 0 0 2px #fffc}.app-shell .peek-sheet,.app-shell .view-edit,.app-shell .view-lock-note,.app-shell .preset-done{display:none}.app-shell .view-lock{border:0;min-width:0;margin:0;padding:0}:is(html:has(.app-shell.phone),body:has(.app-shell.phone)){overscroll-behavior:none}body:has(.app-shell.phone){-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;position:fixed;inset:0;overflow:hidden}.app-shell.phone{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left);box-sizing:border-box}.app-shell.phone input,.app-shell.phone textarea{-webkit-user-select:text;user-select:text}.app-shell.phone button,.app-shell.phone a,.app-shell.phone label,.app-shell.phone select,.app-shell.phone input,.app-shell.phone [role=button]{touch-action:manipulation}.app-shell.phone canvas{-webkit-touch-callout:none;touch-action:none}.app-shell.phone{--strip-h:0px}.app-shell.phone .summary-strip{display:none}.app-shell.phone.presenting{--top-h:0px;padding-top:0}.app-shell.phone.presenting .top-bar,.app-shell.phone.presenting .bottom-bar,.app-shell.phone.presenting .panel-pill,.app-shell.phone.presenting .float-col{display:none}.app-shell.phone.presenting .preset-bar{top:calc(env(safe-area-inset-top) + var(--gap))}.app-shell.phone.presenting .peek-sheet{padding-bottom:calc(12px + env(safe-area-inset-bottom))}.app-shell.phone .shell-main{--peek-h:0px}.app-shell.phone .shell-main.has-peek{--peek-h:var(--peek-size,150px)}.app-shell.phone .plan-actions,.app-shell.phone .plan-compass,.app-shell.phone .canvas-3d .compass,.app-shell.phone .panel-pill{bottom:calc(var(--peek-h) + var(--gap))}.app-shell.phone .canvas-3d.has-peek .legend{display:none}.app-shell.phone .peek-sheet{z-index:6;border-top:1px solid var(--line);cursor:pointer;touch-action:none;background:#fff;border-radius:18px 18px 0 0;grid-area:main;align-self:end;gap:10px;padding:0 18px 14px;transition:transform .2s ease-out;display:grid;box-shadow:0 -8px 28px -10px #0003}.app-shell.phone .peek-sheet.pulling{transition:none}.app-shell.phone .peek-sheet .sheet-grab{margin-bottom:0}.peek-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.peek-head h2{margin:0;font-size:18px;font-weight:500}.peek-head .muted{white-space:nowrap;align-items:center;gap:4px;font-size:14px;display:inline-flex}.peek-numbers{grid-template-columns:1fr 1fr 1.3fr;gap:10px;margin:0;display:grid}.peek-numbers>div{align-content:start;gap:2px;min-width:0;display:grid}.peek-numbers dt{color:var(--muted);font-size:14px}.peek-numbers dd{font-variant-numeric:tabular-nums;margin:0;font-size:17px;font-weight:500;line-height:1.2}.peek-status{flex-wrap:wrap;gap:6px;display:flex}.app-shell.phone .peek-status .chip{text-overflow:ellipsis;white-space:nowrap;border-radius:999px;max-width:100%;height:auto;min-height:30px;padding:4px 11px;overflow:hidden}.app-shell.phone .peek-status .chip:after{content:none}.peek-range{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:10px;font-size:14px;display:flex}.peek-range i{border-radius:4px;flex:1;height:8px}.peek-line{display:none}.peek-dot{background:var(--warn-dot);border-radius:50%;flex:none;width:10px;height:10px}.app-shell.phone .peek-sheet.slim{gap:0;padding:0 14px 8px}.app-shell.phone .peek-sheet.slim>:not(.sheet-grab,.peek-line){display:none}.app-shell.phone .peek-sheet.slim .peek-line{min-height:40px;color:var(--muted);white-space:nowrap;align-items:center;gap:16px;font-size:14px;display:flex;overflow:hidden}.peek-line b{color:var(--text);font-variant-numeric:tabular-nums;font-weight:500}.peek-line>.ic:last-child{flex:none;margin-left:auto}.app-shell.phone .view-edit{top:var(--gap);right:var(--gap);z-index:4;border:1px solid var(--overlay-line);border-radius:calc(var(--r) + 3px);background:var(--overlay);padding:2px;display:inline-flex;position:absolute}.app-shell.phone .view-edit button{border-radius:calc(var(--r) + 1px);height:44px;color:var(--muted);background:0 0;border:0;align-items:center;gap:6px;padding:0 12px;font-size:15px;font-weight:500;display:inline-flex}.app-shell.phone .view-edit button.on{background:var(--text);color:#fff}.app-shell.phone .canvas-controls{top:calc(var(--gap) + 58px)}.app-shell.phone .shell-main .level-chip.phone-level{top:var(--gap);left:var(--gap);max-width:calc(100% - 2 * var(--gap) - 190px);border:1px solid var(--overlay-line);border-radius:calc(var(--r) + 3px);background:var(--overlay);pointer-events:auto;padding:0;display:block;right:auto}.level-chip-button{text-align:left;background:0 0;border:0;align-items:center;gap:6px;width:100%;height:46px;padding:0 12px;font-size:15px;display:flex}.level-chip-text{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;min-width:0;overflow:hidden}.level-chip-text b{font-weight:600}.level-pick{border:1px solid var(--overlay-line);border-radius:calc(var(--r) + 3px);background:#fff;min-width:100%;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 6px);left:-1px;box-shadow:0 10px 28px -8px #00000040}.level-pick button{border-radius:var(--r);white-space:nowrap;background:0 0;border:0;justify-content:space-between;gap:16px;width:100%;min-height:44px;padding:0 10px;font-size:15px;display:flex}.level-pick button.on{background:var(--accent-soft);color:var(--accent)}.app-shell.phone .has-rail .tool-rail{top:calc(var(--gap) + 56px);max-height:calc(100% - var(--gap) * 2 - 56px - var(--peek-h))}.app-shell.phone .plan-actions{left:var(--gap);align-items:flex-start}.app-shell.phone .has-rail .plan-actions{left:calc(var(--gap) + 62px)}.key-chip{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.key-chip-button{border:1px solid var(--overlay-line);background:var(--overlay);border-radius:999px;align-items:center;gap:8px;height:44px;padding:0 15px 0 12px;font-size:15px;font-weight:500;display:inline-flex}.key-swatches{gap:3px;display:inline-flex}.key-swatches i{border-radius:2px;width:10px;height:10px}.key-swatches .fill{background:#5d8fcaa6}.key-swatches .cut{background:#e3874aa6}.key-pop{width:min(320px, calc(100vw - 2 * var(--gap) - 16px))}.app-shell.phone .key-pop .ground-key{border-radius:calc(var(--r) + 3px);box-shadow:0 10px 28px -8px #00000038}.app-shell.phone .preset-bar{left:var(--gap);right:var(--gap);transform:none}.app-shell.phone .preset-done{flex:none;justify-content:center;min-width:44px;height:44px;padding:0 12px;font-size:15px;display:inline-flex}.app-shell.phone .preset-group{flex:1;min-width:0}.app-shell.phone .preset-group button{flex:1;justify-content:center;height:44px;padding:0 8px;font-size:15px}.app-shell.phone .tab-panel:before,.app-shell.phone .inspector:before{content:none}.app-shell .float-card>.sheet-grab{display:none}.app-shell.phone .float-card>.sheet-grab{touch-action:none;cursor:grab;background:0 0;width:auto;height:20px;margin:0;display:block;position:relative}.app-shell.phone .float-card>.sheet-grab:before{content:"";background:var(--line);border-radius:3px;width:38px;height:5px;position:absolute;top:8px;left:50%;transform:translate(-50%)}.app-shell.phone .tab-panel>header,.app-shell.phone .overview-sheet>header,.app-shell.phone .overview-sheet>.sheet-grab{touch-action:none}.app-shell.phone .overview-sheet{padding-bottom:env(safe-area-inset-bottom);overscroll-behavior:contain}.app-shell.phone .inspector,.app-shell.phone .panel-body{overscroll-behavior:contain}.app-shell.phone .view-lock-note{border-bottom:1px solid var(--line-soft);color:var(--muted);justify-content:space-between;align-items:center;gap:10px;margin:0 0 12px;padding:8px 0 10px;font-size:14px;display:flex}.app-shell.phone .view-lock-note.after{border-top:1px solid var(--line-soft);border-bottom:0;margin:0 16px 14px;padding:10px 0 0}.app-shell.phone .view-lock-note button{flex:none;align-items:center;gap:5px;min-height:44px;padding:0 14px;display:inline-flex}.app-shell.phone .view-lock input,.app-shell.phone .view-lock select,.app-shell.phone .view-lock textarea{color:var(--text);opacity:1;-webkit-text-fill-color:var(--text);appearance:none;background:0 0;border-color:#0000}.app-shell.phone .view-lock .num-input,.app-shell.phone .view-lock .num-input input{background:0 0;border-color:#0000}.app-shell.phone .view-lock button.danger,.app-shell.phone .view-lock .delete-row,.app-shell.phone .view-lock input[type=checkbox],.app-shell.phone .view-lock input[type=range]{opacity:.5}@media (orientation:landscape) and (height<=500px){.app-shell.phone{--top-h:46px}.app-shell.phone .bottom-bar{height:calc(48px + env(safe-area-inset-bottom))}.app-shell.phone .bottom-bar .area-link{flex-direction:row;justify-content:center;gap:8px;padding:0 4px}.app-shell.phone .peek-sheet{gap:0;padding:0 14px 6px;left:auto}.app-shell.phone .peek-sheet>:not(.sheet-grab,.peek-line){display:none}.app-shell.phone .peek-sheet .peek-line{min-height:36px;color:var(--muted);white-space:nowrap;align-items:center;gap:16px;font-size:14px;display:flex;overflow:hidden}.app-shell.phone .float-col,.app-shell.phone .inspector,.app-shell.phone .overview-sheet{max-height:70%}.app-shell.phone .overview-sheet{max-height:86vh}}.app-shell .street-side{margin:14px 0}.app-shell .street-side h3{margin:0 0 4px;font-size:13px}.app-shell .street-side .segmented{margin-top:8px;display:inline-flex}.app-shell .street-side .segmented button{min-width:40px;min-height:32px}.app-shell .share-first{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}.app-shell .share-big{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);width:100%;min-height:60px;color:var(--text);font:inherit;text-align:left;cursor:pointer;align-items:center;gap:12px;padding:10px 14px;display:flex}.app-shell .share-big.first{border-color:var(--primary);background:var(--primary);color:#fff}.app-shell .share-big>span{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.app-shell .share-big b{font-size:15px;font-weight:600}.app-shell .share-big small{color:var(--muted);font-size:12.5px}.app-shell .share-big.first small{color:#ffffffbf}.app-shell .share-big:active{transform:translateY(1px)}.app-shell .share-first [role=status]{margin:6px 2px 0}.app-shell .share-next{border:1px solid var(--line-soft);border-radius:var(--r-lg);min-height:48px;color:var(--text);align-items:center;gap:12px;padding:0 14px;font-weight:500;text-decoration:none;display:flex}.app-shell .share-next>span{flex:1}.app-shell.phone .plan-editor .site-toolbar{top:64px}.app-shell .plan-editor:has(.site-toolbar) .key-chip{display:none}.app-shell.phone .canvas-3d .panel-pill{left:var(--gap);transform:none}@media (orientation:landscape) and (height<=500px){.app-shell.phone .bottom-bar .area-link{flex-direction:row;justify-content:center;align-items:center;gap:8px;min-height:0;padding:0 4px;display:flex}.app-shell.phone .canvas-controls{top:var(--gap);flex-direction:row}.app-shell.phone .canvas-plan .canvas-controls{right:calc(var(--gap) + 168px)}.app-shell.phone .preset-bar{right:auto}.app-shell.phone .preset-group button{padding:0 16px}}.sf-scrim,.sf-toast{--sf-ink:#16181b;--sf-muted:#6b7077;--sf-line:#e1e4e7;--sf-line-soft:#eef0f2;--sf-accent:#2346d0;--sf-accent-soft:#eef1fc;--sf-accent-light:#8da0e6;--sf-paper:#fcfcfd;--sf-warn-bg:#fff6e0;--sf-warn-line:#f0deae;--sf-warn-text:#7a5300;--sf-r:3px;--sf-r-lg:4px;-webkit-font-smoothing:antialiased;font-family:IBM Plex Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px;line-height:1.45}.sf-scrim *,.sf-toast *{box-sizing:border-box}.sf-scrim button,.sf-toast button{font:inherit}.sf-scrim{z-index:200;background:#16181b52;place-items:center;padding:24px 16px;animation:.12s ease-out sf-fade;display:grid;position:fixed;inset:0}.sf-sheet{width:min(620px,100%);max-height:calc(100vh - 48px);color:var(--sf-ink);border:1px solid var(--sf-line);border-radius:var(--sf-r-lg);background:#fff;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 1px 2px #0000000f,0 18px 48px -12px #00000047}.sf-grab{display:none}.sf-head{border-bottom:1px solid var(--sf-line-soft);padding:18px 22px 12px}.sf-step{color:var(--sf-muted);letter-spacing:.01em;margin-bottom:4px;font-size:12px;font-weight:550;display:block}.sf-head h2{letter-spacing:-.005em;overflow-wrap:anywhere;margin:0;font-size:18px;font-weight:600;line-height:1.25}.sf-body{gap:14px;padding:14px 22px 4px;display:grid;overflow-y:auto}.sf-facts{flex-wrap:wrap;gap:8px 26px;margin:0;display:flex}.sf-facts dt{color:var(--sf-muted);font-size:12px}.sf-facts dd{font-variant-numeric:tabular-nums;margin:1px 0 0;font-weight:600}.sf-warn{border:1px solid var(--sf-warn-line);border-radius:var(--sf-r);background:var(--sf-warn-bg);color:var(--sf-warn-text);margin:0;padding:9px 12px;font-weight:550}.sf-choices{border:0;min-width:0;margin:0;padding:0}.sf-choices legend{color:var(--sf-muted);margin-bottom:8px;padding:0;font-size:12px;font-weight:600}.sf-choice-row{grid-template-columns:168px minmax(0,1fr);align-items:start;gap:14px;display:grid}.sf-pic{aspect-ratio:1;border:1px solid var(--sf-line);border-radius:var(--sf-r);background-color:var(--sf-paper);background-image:linear-gradient(#f1f3f6 1px,#0000 1px),linear-gradient(90deg,#f1f3f6 1px,#0000 1px);background-size:14px 14px;padding:10px;display:grid}.sf-pic.solo{width:168px}.sf-thumb{width:100%;height:100%;display:block}.sf-block{fill:#fff;stroke:var(--sf-ink);stroke-width:1px;vector-effect:non-scaling-stroke}.sf-house{fill:var(--sf-accent-soft);stroke:var(--sf-accent);stroke-width:1.4px;vector-effect:non-scaling-stroke}.sf-options{gap:8px;display:grid}.sf-option{border:1px solid var(--sf-line);border-radius:var(--sf-r);cursor:pointer;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;padding:10px 12px;display:grid}.sf-option.on{border-color:var(--sf-accent);box-shadow:inset 0 0 0 1px var(--sf-accent)}.sf-option input{accent-color:var(--sf-accent);margin:2px 0 0}.sf-option b{flex-wrap:wrap;align-items:center;gap:6px;font-weight:600;display:flex}.sf-tag{color:var(--sf-accent);background:var(--sf-accent-soft);border-radius:999px;padding:0 7px;font-size:11px;font-style:normal;font-weight:600}.sf-detail{color:var(--sf-muted);margin-top:2px;display:block}.sf-lists{grid-template-columns:1fr 1fr;gap:16px;padding-bottom:10px;display:grid}.sf-lists h3{color:var(--sf-muted);margin:0 0 4px;font-size:12px;font-weight:600}.sf-lists ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.sf-lists li{overflow-wrap:anywhere;padding-left:14px;position:relative}.sf-lists li:before{content:"";background:var(--sf-ink);width:6px;height:1.5px;position:absolute;top:.62em;left:2px}.sf-lists ul.kept li:before{background:var(--sf-accent);border-radius:50%;width:5px;height:5px;top:.5em}.sf-actions{border-top:1px solid var(--sf-line-soft);justify-content:flex-end;gap:8px;padding:12px 22px 16px;display:flex}.sf-btn{border-radius:var(--sf-r);min-height:34px;color:var(--sf-ink);cursor:pointer;background:#fff;border:1px solid #cfd3d8;padding:0 16px;font-weight:550}.sf-btn:hover{border-color:var(--sf-ink)}.sf-btn.primary{background:var(--sf-ink);border-color:var(--sf-ink);color:#fff}.sf-btn.primary:hover{background:#000}.sf-scrim :focus-visible,.sf-toast :focus-visible{outline:2px solid var(--sf-accent);outline-offset:1px}.sf-toast{z-index:190;border-radius:var(--sf-r-lg);background:var(--sf-ink);color:#fff;align-items:center;gap:6px;max-width:min(600px,100vw - 32px);padding:6px 6px 6px 14px;animation:.16s ease-out sf-rise;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}.sf-toast>span{padding:4px 0}.sf-undo{border-radius:var(--sf-r);min-height:30px;color:var(--sf-accent-light);cursor:pointer;background:0 0;border:0;flex:none;padding:0 12px;font-weight:600}.sf-undo:hover{color:#fff;background:#ffffff1a}.sf-link{border-radius:var(--sf-r);color:#fff;text-underline-offset:3px;white-space:nowrap;cursor:pointer;background:0 0;border:0;flex:none;min-height:30px;padding:0 10px;font-weight:500;-webkit-text-decoration:underline #ffffff73;text-decoration:underline #ffffff73}.sf-link:hover{background:#ffffff1a;text-decoration-color:#fff}.sf-close{border-radius:var(--sf-r);color:#fff;cursor:pointer;background:0 0;border:0;flex:none;place-items:center;width:30px;height:30px;display:grid}.sf-close:hover{background:#ffffff1f}body:has(.app-shell .toast) .sf-toast{bottom:76px}body:has(.app-shell.phone) .sf-toast{bottom:calc(84px + env(safe-area-inset-bottom))}@keyframes sf-fade{0%{opacity:0}}@keyframes sf-rise{0%{opacity:0;transform:translate(-50%,8px)}}@media (width<=760px),(pointer:coarse){.sf-scrim,.sf-toast{font-size:15px}.sf-scrim{place-items:end stretch;padding:0}.sf-sheet{width:100%;max-height:92vh;padding-bottom:env(safe-area-inset-bottom);border-bottom:0;border-radius:12px 12px 0 0;animation:.18s ease-out sf-up}.sf-grab{background:#d5d8dc;border-radius:2px;width:38px;height:4px;margin:8px auto 0;display:block}.sf-head{padding:10px 16px}.sf-step,.sf-facts dt,.sf-choices legend,.sf-lists h3{font-size:14px}.sf-head h2{font-size:19px}.sf-body{padding:12px 16px 4px}.sf-choice-row{grid-template-columns:minmax(0,1fr)}.sf-pic{aspect-ratio:auto;height:150px}.sf-pic.solo{width:auto}.sf-option{min-height:44px;padding:12px}.sf-option input{width:20px;height:20px}.sf-tag{font-size:13px}.sf-lists{grid-template-columns:minmax(0,1fr);gap:12px}.sf-actions{padding:12px 16px 14px}.sf-btn{flex:1;min-height:46px}.sf-undo,.sf-link,.sf-close{min-width:44px;min-height:44px}.sf-toast{width:calc(100vw - 24px);max-width:none}.sf-toast>span{flex:1}}@keyframes sf-up{0%{opacity:.6;transform:translateY(24px)}}@media (prefers-reduced-motion:reduce){.sf-scrim,.sf-sheet,.sf-toast{animation:none}}button.link{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}button.secondary{background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:6px;margin-top:10px;padding:6px 12px}button.secondary:hover{border-color:var(--accent)}.stats{grid-template-columns:auto 1fr;gap:4px 12px;margin:0;display:grid}.stats dt{color:var(--muted)}.stats dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.warnings p{background:var(--warn-bg);color:var(--warn-text);border-radius:6px;margin:0 0 6px;padding:8px 10px}.slider{gap:4px;margin-bottom:10px;display:grid}.slider input{width:100%;accent-color:var(--accent)}.check{cursor:pointer;align-items:center;gap:8px;padding:3px 0;display:flex}.check input{accent-color:var(--accent)}.muted{color:var(--muted)}.layers{gap:10px;margin:0;padding:0;list-style:none;display:grid}.layers li{gap:4px;display:grid}.layers li>div{justify-content:space-between;gap:8px;font-size:13px;display:flex}.layer-name{overflow-wrap:anywhere;font-weight:600}.layers select{border:1px solid var(--line);background:var(--panel);border-radius:6px;width:100%;padding:5px 6px}.viewport{min-width:0;min-height:0;position:relative}.compass{border:1px solid var(--line);pointer-events:none;background:#ffffffe6;border-radius:50%;width:52px;height:52px;position:absolute;top:16px;right:16px;box-shadow:0 1px 3px #00000014}.needle{justify-content:center;display:flex;position:absolute;inset:6px}.needle:before{content:"";border-bottom:18px solid #c0392b;border-left:6px solid #0000;border-right:6px solid #0000;position:absolute;top:12px;left:50%;transform:translate(-50%)}.needle span{font-size:11px;font-weight:700;line-height:1}.legend{pointer-events:none;gap:6px;height:140px;font-size:11px;display:flex;position:absolute;top:84px;right:16px}.ramp{border:1px solid #0000001f;border-radius:3px;width:12px}.ramp-labels{color:var(--muted);font-variant-numeric:tabular-nums;flex-direction:column;justify-content:space-between;display:flex}.readout{border:1px solid var(--line);font-variant-numeric:tabular-nums;pointer-events:none;background:#ffffffeb;border-radius:8px;flex-wrap:wrap;gap:4px 14px;width:fit-content;max-width:calc(100% - 32px);padding:8px 12px;display:flex;position:absolute;bottom:16px;left:16px;right:16px}.problem{text-align:center;place-content:center;height:100%;padding:24px;display:grid}.lede{color:var(--muted);margin:0 0 20px}.error{color:var(--danger);margin:12px 0 0}.hint{color:var(--muted);margin:16px 0 0;font-size:13px}.found-line{margin:0 0 8px;font-weight:600}@media (width<=760px){.viewport{grid-row:1;height:60vh}.legend,.controls-hint{display:none}}.plan-editor{position:absolute;inset:0;overflow:hidden}.plan-svg{touch-action:none;-webkit-user-select:none;user-select:none;cursor:crosshair;background:#fbfbf9;width:100%;height:100%;display:block}.plan-svg.tool-select,.plan-svg.tool-move{cursor:default}.plan-svg.tool-move{cursor:grab}.site-boundary{fill:#f1f5ec;stroke:#3c4a3a;stroke-width:1.5px}.contour-minor{fill:none;stroke:#d6c9b6;stroke-width:.7px}.contour-major{fill:none;stroke:#a8927a;stroke-width:1.1px}.contour-label{fill:#8b7660;font-size:10px}.wall{fill:#474c54;stroke:none}.wall.internal{fill:#7d838c}.wall.retaining{fill:url(#retaining-hatch);stroke:#6e5f4b;stroke-width:1px}.wall.retaining.selected{fill:var(--accent);stroke:none}.wall.selected{fill:var(--accent)}.wall.ghost{fill:none;stroke:#9aa3ad;stroke-width:1px;stroke-dasharray:4 3}.wall.preview{fill:#2f6f6273}.opening-gap{fill:#fbfbf9}.opening{fill:none;stroke:#2a2f36;stroke-width:1.2px}.opening.swing{stroke-width:.8px}.opening.head{stroke-dasharray:5 3}.opening.garage-panel{stroke-dasharray:7 3;stroke-width:1.8px}.opening.selected{stroke:var(--accent);stroke-width:2px}.opening.ghost{stroke:var(--accent);opacity:.7}.room-fill{fill:#f4efe4}.room-name{fill:#2c323a;font-size:12px;font-weight:600}.room-area{fill:#5f6874;font-variant-numeric:tabular-nums;font-size:11px}.room-area.open{fill:var(--danger)}.room-label{cursor:move}.room-label.selected .room-name{fill:var(--accent)}.area{fill:#7a9a6a29;stroke:#6f8f60;stroke-width:1px;stroke-dasharray:6 4}.area.kind-slab{fill:#9696913d;stroke:#8b8b85;stroke-dasharray:none}.area.kind-driveway{fill:#70706e4d;stroke:#66665f;stroke-dasharray:none}.area.kind-deck{fill:#b084583d;stroke:#9a6d45;stroke-dasharray:none}.area.kind-garden{fill:#7a9a6a33;stroke:#6f8f60}.area.selected{stroke:var(--accent);stroke-width:2px}.room-fill.piers{fill:url(#piers-hatch)}.stair-body{fill:#fbfaf6;stroke:#2a2f36;stroke-width:1.2px}.stair-treads,.stair-walk{fill:none;stroke:#2a2f36;stroke-width:.8px}.stair-label{fill:#2a2f36;font-size:10px;font-weight:700}.stair.selected .stair-body,.stair.selected .stair-treads,.stair.selected .stair-walk{stroke:var(--accent)}.stair.selected .stair-body{stroke-width:2px}.stair.ghost .stair-body{fill:none;stroke:#9aa3ad;stroke-width:1px;stroke-dasharray:4 3}.stair.preview{opacity:.6}.roof-outline{fill:none;stroke:#a0613f;stroke-width:1.2px;stroke-dasharray:9 4}.roof-lines{fill:none;stroke:#a0613f;stroke-width:1px}.roof.selected .roof-outline,.roof.selected .roof-lines{stroke:var(--accent);stroke-width:2px}.roof.broken .roof-outline{stroke:var(--danger)}.roof-draft{fill:#a0613f14;stroke:#a0613f;stroke-width:1px;stroke-dasharray:6 4}.roof-marker circle{fill:#fff;stroke:#a0613f;stroke-width:1.5px;cursor:pointer}.roof-marker.on circle{fill:#a0613f}.roof-marker text{fill:#a0613f;pointer-events:none;font-size:10px;font-weight:700}.roof-marker.on text{fill:#fff}.area.drawing{fill:#7a9a6a1a}.handle{fill:#fff;stroke:var(--accent);stroke-width:2px;cursor:move}.chain{fill:none;stroke:var(--accent);stroke-width:1px}.guide{stroke:#d0743c;stroke-width:1px;stroke-dasharray:3 3}.snap{fill:none;stroke:#d0743c;stroke-width:1.6px}.tag rect{fill:#1d232bd9}.tag text{fill:#fff;font-variant-numeric:tabular-nums;font-size:11px}.dim{fill:#5f6874;font-variant-numeric:tabular-nums;font-size:10px}.live-dim{fill:#2b3138;font-variant-numeric:tabular-nums;paint-order:stroke;stroke:#fbfbf9;stroke-width:4px;stroke-linejoin:round;pointer-events:none;font-size:11px;font-weight:600}.plan-compass{border:1px solid var(--line);pointer-events:none;background:#ffffffe6;border-radius:50%;width:52px;height:52px;position:absolute;top:16px;right:16px}.plan-actions{position:absolute;top:86px;right:16px}.plan-actions button{margin:0}.scalebar{color:var(--muted);pointer-events:none;align-items:center;gap:6px;font-size:11px;display:flex;position:absolute;bottom:18px;right:16px}.scalebar div{border:1.5px solid #4a4f57;border-top:0;height:6px}.plan-status{max-width:calc(100% - 140px);right:auto}.notice{color:var(--warn-text)}kbd{color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:2px 4px;font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace}.row{flex-wrap:wrap;gap:6px;display:flex}.row button.secondary{margin-top:10px}button.secondary:disabled{opacity:.45;cursor:default;border-color:var(--line)}button.danger{color:var(--danger)}.tool-options{gap:8px;margin-top:12px;display:grid}.num{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.num>span:first-child{color:var(--muted)}.num select{border:1px solid var(--line);background:var(--panel);border-radius:6px;max-width:190px;padding:4px}.num-input{align-items:center;gap:4px;display:flex}.num-input input,.num input.text{border:1px solid var(--line);text-align:right;font-variant-numeric:tabular-nums;border-radius:6px;width:96px;padding:4px 6px}.num input.text{text-align:left;width:160px}.num-input em{color:var(--muted);min-width:18px;font-size:12px;font-style:normal}.selection{background:#f7faf9;gap:8px;margin-left:-18px;margin-right:-18px;padding-bottom:14px;padding-left:18px;padding-right:18px;display:grid}.selection h2{margin-bottom:2px}.levels{gap:4px;margin:0;padding:0;list-style:none;display:grid}.level-btn{border:1px solid var(--line);background:var(--panel);cursor:pointer;border-radius:6px;justify-content:space-between;width:100%;padding:7px 10px;display:flex}.levels li.on .level-btn{border-color:var(--accent);background:var(--accent-soft);font-weight:600}.small{font-size:12px}.area-summary h3:first-child{margin-top:0}.stats dt.strong,.stats dd.strong{color:var(--text);font-weight:600}.dim,.room-name,.room-area,.contour-label{paint-order:stroke;stroke:#fbfbf9;stroke-width:3px;stroke-linejoin:round}@media (width<=760px){.plan-status .muted,.plan-actions,.view-actions{display:none}.plan-status:not(:has(.notice)){display:none}}.panel-toggle svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px;transition:transform .15s}.panel.folded .panel-toggle svg{transform:rotate(-90deg)}.view-actions{z-index:2;position:absolute;top:16px;right:80px}.orientation{border:1px solid var(--line);background:#fffffff2;border-radius:8px;gap:6px;padding:8px 10px;font-size:12px;display:grid}.orientation label{color:var(--muted);gap:3px;display:grid}.orientation select,.orientation input{font:inherit;color:var(--text);border:1px solid var(--line);background:var(--panel);border-radius:5px;padding:3px 4px}.orientation .bearing{grid-template-columns:auto 1fr auto;align-items:center;gap:6px}.orientation .bearing input{width:64px}.orientation em{font-style:normal}.clearance path{fill:none;stroke:var(--accent);stroke-width:1.2px;stroke-dasharray:4 3}.clearance circle{fill:var(--accent)}.clearance-label{fill:var(--accent);font-variant-numeric:tabular-nums;paint-order:stroke;stroke:#fbfbf9;stroke-width:4px;stroke-linejoin:round;font-size:11px;font-weight:600}.print-actions{z-index:2;position:absolute;top:64px;right:16px}.segmented{border:1px solid var(--line);background:#fffffff2;border-radius:8px;padding:3px;display:flex;box-shadow:0 1px 3px #0000000f}.segmented button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:6px;padding:5px 12px}.segmented button.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.print-key{border:1px solid var(--line);color:var(--muted);pointer-events:none;background:#ffffffeb;border-radius:8px;gap:12px;padding:8px 12px;font-size:12px;display:flex;position:absolute;bottom:16px;right:16px}.print-key span{align-items:center;gap:5px;display:flex}.swatch{border:1px solid #0000002e;border-radius:3px;flex:none;width:11px;height:11px;display:inline-block}.swatch.kind-terrain{background:#9dba86}.swatch.kind-floor{background:#eee8dc}.swatch.kind-roof{background:#6d7581}.parts{gap:4px;margin:0;padding:0;list-style:none;display:grid}.parts li{border:1px solid var(--line);font-variant-numeric:tabular-nums;border-radius:6px;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:5px 8px;display:grid}.parts li .muted{font-size:12px}.parts li.too-big{background:var(--warn-bg);border-color:#e9c46a}.part-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.print-notes{color:var(--warn-text);margin:8px 0 0;padding-left:18px;font-size:12px}.fine-tuning{margin-top:10px}.fine-tuning summary{cursor:pointer;color:var(--accent)}@media (width<=760px){.print-key{display:none}}.viewport{container-type:inline-size}@container (width<=700px){.view-actions{top:64px;left:16px;right:auto}}.ground-overlay{pointer-events:none}.ground-meets,.ground-meets-halo{fill:none;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}.ground-meets-halo{stroke:#fffc;stroke-width:5px}.ground-meets{stroke:#23395b;stroke-width:2.25px}.ground-meets-label{fill:#23395b;paint-order:stroke;stroke:#fbfbf9;stroke-width:4px;stroke-linejoin:round;font-size:11px;font-weight:600}.corner-offset{font-variant-numeric:tabular-nums;paint-order:stroke;stroke:#fbfbf9;stroke-width:3px;stroke-linejoin:round;pointer-events:none;font-size:10px;font-weight:600}.corner-offset.above{fill:#2c5d97}.corner-offset.below{fill:#a14e2a}.level-chip{z-index:2;border:1px solid var(--line);font-variant-numeric:tabular-nums;pointer-events:none;background:#fffffff2;border-radius:8px;gap:1px;padding:6px 11px;font-size:12px;display:grid;position:absolute;top:16px;left:16px}.plan-actions{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.ground-key{border:1px solid var(--line);background:#fffffff2;border-radius:8px;padding:6px 10px 8px;font-size:12px}.ground-key ul{color:var(--muted);gap:3px;margin:4px 0 0;padding:0;list-style:none;display:grid}.ground-key i{vertical-align:-1px;opacity:.55;border-radius:2px;width:14px;height:10px;margin-right:4px;display:inline-block}.ground-key i.meets{vertical-align:3px;opacity:1;border-top:2.5px solid #23395b;border-radius:0;height:0}.ground-key li.small{font-size:11px}.ground-readout{flex-basis:100%}@container (width<=920px){.level-chip{top:58px}}@container (width<=700px){.level-chip{top:128px}}@media (width<=760px){.level-chip{top:58px}}.furniture-fill{fill:#fffefb;stroke:#6b737d;stroke-width:.9px;stroke-linejoin:round}.furniture-lines{fill:none;stroke:#6b737d;stroke-width:.7px}.furniture-code{fill:#6b737d;pointer-events:none;font-size:9px;font-weight:600}.furniture.selected .furniture-fill,.furniture.selected .furniture-lines{stroke:var(--accent)}.furniture.selected .furniture-fill{stroke-width:1.6px}.furniture.ghost{opacity:.55;pointer-events:none}.turn-handle path{fill:none;stroke:var(--accent);stroke-width:1px}.turn-handle circle{fill:#fff;stroke:var(--accent);stroke-width:2px;cursor:grab}.furniture-items{grid-template-columns:repeat(2,1fr);gap:6px;display:grid}.furniture-items button{border:1px solid var(--line);background:var(--panel);cursor:pointer;text-align:left;border-radius:6px;align-items:center;gap:6px;padding:5px 8px;font-size:12px;line-height:1.25;display:flex}.furniture-items button:hover{border-color:var(--accent)}.furniture-items button.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.furniture-thumb{fill:none;stroke:currentColor;stroke-width:.8px;stroke-linejoin:round;flex:none;width:26px;height:26px}.furniture-thumb .fill{fill:#fff}.app-shell.shared-view{grid-template-columns:minmax(0,1fr);grid-template-areas:"top""strip""main"}.app-shell.shared-view.phone{grid-template-rows:var(--top-h) var(--strip-h) minmax(0, 1fr)}.shared-view .top-bar{align-items:center}.shared-mark{flex:none;place-items:center;width:32px;height:32px;display:grid}.shared-title{flex:1;min-width:0;line-height:1.25;display:grid}.shared-title>b{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.shared-by{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.shared-view .shared-pdf{align-items:center;gap:7px;display:inline-flex}.app-shell.phone.shared-view .top-bar{gap:6px;padding:0 2px 0 10px}.app-shell.phone.shared-view .shared-title>b{font-size:16px}.app-shell.phone.shared-view .shared-by{font-size:13px}.shared-skeleton .summary-strip{gap:10px;padding-left:14px}.shared-skeleton .shell-main{padding:18px}.sk{background:#eef0f2;border-radius:3px;display:block}.sk-name{width:180px;height:14px;margin-bottom:5px}.sk-by{width:130px;height:10px}.sk-chip{width:96px;height:22px}.sk-plan{background:#fcfcfd;border:1px dashed #e1e4e7;border-radius:4px;height:100%}@media (width<=760px),(pointer:coarse){.shared-skeleton .summary-strip{display:none}.sk-name{width:60vw}}.shared-trouble{--t-text:#16181b;--t-muted:#6b7077;--t-line:#e1e4e7;box-sizing:border-box;min-height:100%;color:var(--t-text);background:#fff;place-items:center;padding:24px 16px;font-family:IBM Plex Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5;display:grid}.shared-trouble-card{justify-items:start;gap:4px;width:100%;max-width:420px;display:grid}.shared-trouble-card h1{margin:14px 0 2px;font-size:22px;font-weight:600;line-height:1.25}.shared-trouble-card p{margin:0}.shared-trouble-card .muted{color:var(--t-muted)}.shared-trouble-card .small{border-top:1px solid var(--t-line);width:100%;margin-top:28px;padding-top:12px;font-size:13px}.shared-retry{border:1px solid var(--t-text);background:var(--t-text);color:#fff;min-height:44px;font:inherit;cursor:pointer;border-radius:3px;margin-top:12px;padding:0 18px;font-weight:600}.shared-retry:focus-visible{outline-offset:2px;outline:2px solid #2346d0}.app-shell.shared-view:not(.phone) .shell-main .level-chip.phone-level{pointer-events:auto;padding:0;display:block}.app-shell.shared-view:not(.phone) .level-chip-button{cursor:pointer;height:32px;padding:0 10px;font-size:13px}.app-shell.shared-view:not(.phone) .level-pick button{min-height:32px;font-size:13px}.app-shell.shared-view .view-lock-note{color:var(--muted);font-size:13px;display:block}.app-shell.shared-view .view-lock-note.after{border-top:1px solid var(--line-soft);margin:4px 16px 14px;padding:10px 0 0}.app-shell.phone.shared-view .view-lock-note.after{margin:0 16px 14px;font-size:14px}.app-shell.shared-view .view-lock input,.app-shell.shared-view .view-lock select,.app-shell.shared-view .view-lock textarea,.app-shell.shared-view .view-lock .num-input{color:var(--text);opacity:1;-webkit-text-fill-color:var(--text);appearance:none;background:0 0;border-color:#0000}.app-shell.shared-view .view-lock button.danger,.app-shell.shared-view .view-lock .delete-row,.app-shell.shared-view .view-lock .floor-more{display:none}
