:root{--ink:#1e2a2b;--muted:#65716f;--line:#d8d3c8;--bg:#f2f0ea;--panel:#fffefb;--accent:#0f7f76;--accent-dark:#0b625b;--accent-2:#c9712a;--ok:#2e9d48;--ok-dark:#23803a;--tool:#5b5fc7;--tool-dark:#4448a8;--focus:#0f7f7638;--warn:#9a5b00;--warn-bg:#fdf1dc;--error:#b3261e;--shadow:0 1px 2px #1e2a2b0f, 0 2px 8px #1e2a2b0d;--input-bg:#fff;--surface-2:#f6f3ec;--hover:#ece8df;--code-bg:#ebe7de;--chip-ok:#dff1e3;--chip-ok-ink:#1e5e2a;--chip-review:#fbefc4;--chip-review-ink:#7a5a00;--chip-missing:#ffe0c2;--chip-missing-ink:#9a3412;--chip-error:#fde8e6;--notice-bg:#fbf3dc;--chat-user:#dff1ee;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);font-family:Segoe UI,system-ui,sans-serif;font-size:14px}:root[data-theme=dark]{--ink:#e5e8e3;--muted:#9ba8a4;--line:#33403f;--bg:#13191a;--panel:#1b2325;--accent:#3cb9ad;--accent-dark:#2fa094;--accent-2:#e2955a;--ok:#3aa85a;--ok-dark:#2e8c49;--tool:#7579e0;--tool-dark:#5c60c9;--focus:#3cb9ad4d;--warn:#e0a24a;--warn-bg:#3a2e17;--error:#f08a80;--shadow:0 1px 2px #0006, 0 2px 8px #0000004d;--input-bg:#222c2e;--surface-2:#1f292b;--hover:#263234;--code-bg:#263033;--chip-ok:#1f3a26;--chip-ok-ink:#8fd49c;--chip-review:#3d3412;--chip-review-ink:#f1cf6b;--chip-missing:#4a2a12;--chip-missing-ink:#ffb27a;--chip-error:#4a1f1c;--notice-bg:#3a2e17;--chat-user:#1d3a37;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--bg);color:var(--ink);margin:0}a{color:var(--accent)}a:visited{color:var(--accent-dark)}:root[data-theme=dark] a:visited{color:#7fd1c7}.app{max-width:1200px;margin:0 auto;padding:0 24px 48px}.topbar{border-bottom:1px solid var(--line);align-items:baseline;gap:16px;margin-bottom:24px;padding:16px 0;display:flex}.brand{color:var(--accent-dark);letter-spacing:.01em;font-size:18px;font-weight:700;text-decoration:none}.topbar .nav{gap:12px;display:flex}.topbar .nav a{color:var(--muted);text-decoration:none}.topbar .nav a.active{color:var(--ink);font-weight:600}.library{grid-template-columns:260px 1fr;align-items:start;gap:16px;display:grid}.library .offices{margin:0;padding:0;list-style:none}.library .offices li{cursor:pointer;border-radius:6px;justify-content:space-between;gap:8px;padding:6px 8px;display:flex}.library .offices li.active{background:var(--code-bg);font-weight:600}.library .offices li:hover{background:var(--code-bg)}.library td.nowrap{white-space:nowrap}@media (width<=800px){.library{grid-template-columns:1fr}}h1{margin:0 0 16px;font-size:22px}h2{margin:0 0 8px;font-size:17px}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--error)}.warn{color:var(--warn)}.warn-row td{background:var(--warn-bg)}input.warn-input{border-color:var(--warn)}.panel{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:8px;margin-bottom:16px;padding:16px 20px;animation:.18s ease-out rise}@keyframes rise{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.panel{animation:none}}.row{flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0;display:flex}.row label{align-items:center;gap:8px;display:flex}input,select,textarea{font:inherit;border:1px solid var(--line);background:var(--input-bg);color:var(--ink);border-radius:6px;min-width:140px;padding:6px 8px;transition:border-color .12s,box-shadow .12s}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus);outline:none}textarea{resize:vertical;box-sizing:border-box;width:100%}input[type=file],input[type=checkbox]{border:0;min-width:0;padding:0}button,a.button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:6px;align-items:center;gap:7px;padding:7px 14px;text-decoration:none;transition:background-color .12s,border-color .12s,transform 60ms,box-shadow .12s;display:inline-flex}button:hover:not(:disabled),a.button:hover{background:var(--accent-dark);border-color:var(--accent-dark);box-shadow:var(--shadow)}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible,a.button:focus-visible{box-shadow:0 0 0 3px var(--focus);outline:none}button:disabled{opacity:.55;cursor:default}button.link{color:var(--accent);background:0 0;border:0;padding:0 4px}button.quiet{color:var(--accent);background:0 0}button.quiet:hover:not(:disabled){color:#fff}.drop{border:1px dashed var(--line);border-radius:8px;margin:12px 0;padding:0 12px;transition:border-color .12s,background-color .12s}.drop.over{border-color:var(--accent);background:var(--surface-2)}button.link svg{vertical-align:middle;width:14px;height:14px}table{border-collapse:collapse;background:var(--panel);width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:6px 8px}th{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:12px;font-weight:600}tr.sub td{background:var(--surface-2)}tbody tr:hover>td,tbody tr.sub:hover>td{background:var(--hover)}td.indent{padding-left:32px}code{background:var(--code-bg);border-radius:3px;padding:1px 4px;font-size:12px}.steps{z-index:5;background:var(--bg);grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin-bottom:16px;padding:6px 0;display:grid;position:sticky;top:0}.steps .step-buttons{flex-wrap:wrap;grid-column:2;justify-content:center;gap:8px;display:flex}.savebar{grid-column:3;justify-self:end;align-items:center;gap:8px;display:flex}.savebar .unsaved{color:var(--accent-2);font-weight:600}.steps .savebar button{background:var(--accent);color:#fff;border-color:var(--accent)}.steps button{background:var(--panel);color:var(--ink);border-color:var(--line)}.steps button:hover:not(:disabled){background:var(--hover);border-color:var(--accent);color:var(--ink)}.steps button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.status{background:var(--code-bg);border-radius:10px;padding:2px 8px;font-size:12px}.status.ran{background:var(--chip-ok)}.status.error{background:var(--chip-error)}.status.missing_info{background:var(--chip-missing);color:var(--chip-missing-ink);font-weight:600}.status.needs_review{background:var(--chip-review);color:var(--chip-review-ink)}.status.high_confidence,.status.confirmed{background:var(--chip-ok);color:var(--chip-ok-ink)}.feedback{margin-top:12px}.spinner{vertical-align:-2px;border:2px solid #fff6;border-top-color:#fff;border-radius:50%;flex:none;width:13px;height:13px;animation:.7s linear infinite spin;display:inline-block}.spinner.dark{border-color:var(--focus);border-top-color:var(--accent)}@keyframes spin{to{transform:rotate(360deg)}}.canvas-loading{color:var(--muted);pointer-events:none;background:#ffffffbf;border-radius:4px;justify-content:center;align-items:center;gap:8px;display:flex;position:absolute;inset:0}.skeleton{background:linear-gradient(90deg, var(--code-bg) 25%, var(--surface-2) 45%, var(--code-bg) 65%);background-size:200% 100%;border-radius:4px;height:14px;animation:1.2s linear infinite shimmer;display:block}@keyframes shimmer{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.spinner,.skeleton{animation-duration:2s}}pre{background:var(--code-bg);padding:12px;overflow-x:auto}.rooms-layout{--canvas-h:max(420px, calc(100vh - 262px));grid-template-columns:minmax(0,1fr) 480px;align-items:start;gap:16px;display:grid}.rooms-layout .canvas,.rooms-layout .viewer-loading{height:var(--canvas-h)}.rooms-layout .split-plan.on{--canvas-h:max(420px, calc(100vh - 296px))}.rooms-layout>.room-side{max-height:calc(var(--canvas-h) + 42px);padding-right:4px;overflow-y:auto}.rooms-layout.with-types{grid-template-columns:auto minmax(0,1fr) 480px}.rooms-layout.with-types>.room-side{grid-column:3}.room-side .toolbar{gap:6px;margin:0 0 6px}.room-side .toolbar button{white-space:nowrap;padding:6px 10px}.room-side .fields{grid-template-columns:1fr 2fr;gap:8px;display:grid}.room-side .fields input{box-sizing:border-box;width:100%;min-width:0}.room-side .fields-row{flex-wrap:nowrap;align-items:flex-end;margin:4px 0}.room-side .fields-row>label{flex:1;align-items:stretch;min-width:0}.room-side .fields-row select,.room-side .fields-row input,.room-side .fields-row .search-select{box-sizing:border-box;width:100%;min-width:0}.room-side .fields-row>button{white-space:nowrap}.room-side .field-grid{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:6px 8px;margin:4px 0;display:grid}.room-side .field-grid>.height-form{display:contents}.room-side .field-grid select,.room-side .field-grid input:not([type=checkbox]),.room-side .field-grid .search-select{box-sizing:border-box;width:100%;min-width:0}.room-side .field-grid button{white-space:nowrap;justify-content:center;width:100%}.room-side .field-grid>.check{grid-column:1/-1}.room-side label.check{flex-direction:row;align-items:center;gap:6px}.room-side .legend{margin:2px 0 6px}.room-side textarea{min-width:0}.canvas-wrap{border:1px solid var(--line);background:#fff;border-radius:4px;position:relative}.canvas{-webkit-user-select:none;user-select:none;width:100%;height:640px;display:block}.canvas-tools{background:#ffffffe6;border-radius:4px;align-items:center;gap:2px;padding:2px 6px;display:flex;position:absolute;top:8px;right:8px}.canvas-tools button.link{border-radius:4px;padding:2px 4px}.canvas-tools button.link:hover:not(:disabled){box-shadow:none;background:#0f7f761f}.canvas-tools button.link svg{width:16px;height:16px}.room polygon{fill:#0f7f761a;stroke:#0f7f76;stroke-width:.03px;cursor:pointer}.room.high_confidence polygon{fill:#2e7d321a;stroke:#2e7d32}.room.needs_review polygon,.room.missing_info polygon{fill:#9a5b0024;stroke:#9a5b00;stroke-dasharray:.15 .08}.room.confirmed polygon{fill:#0f7f761f;stroke:#0f7f76}.room.manually_corrected polygon{fill:#6a3d9a1f;stroke:#6a3d9a}.room.selected polygon{stroke-width:.08px;fill-opacity:.35}.room.deleted polygon{opacity:.3;stroke-dasharray:.05 .05}.room.no-height polygon{stroke:#b3261e;stroke-width:.05px;stroke-dasharray:.12 .08}.room.no-height text{fill:#b3261e}.room text{fill:#1d2733;pointer-events:none;font-weight:600}.draft polygon,.draft polyline{fill:#0f7f7626;stroke:#0f7f76;stroke-width:.04px;stroke-dasharray:.1 .06}.draft circle{fill:#0f7f76}.queued polygon{fill:#e0a1001f;stroke:#e0a100;stroke-width:2px;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.queued polyline{fill:none;stroke:#e0a100;stroke-width:3px;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.room.queued polygon{fill:#e0a10029;stroke:#e0a100;stroke-width:2px;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.draft.split polyline{fill:none;stroke-width:3px;vector-effect:non-scaling-stroke}.draft.bulkhead polyline{fill:none;stroke:#d81b60;stroke-width:3px;stroke-dasharray:none;vector-effect:non-scaling-stroke}.draft.bulkhead circle{fill:#d81b60}.bulkhead-line{fill:none;stroke:#d81b60;stroke-width:2px;vector-effect:non-scaling-stroke;pointer-events:none}.bulkhead-line.queued{stroke-dasharray:6 4}.draft circle.first{fill:#e0a100;r:.16}.pending.reverted>span:first-child{color:var(--muted);text-decoration:line-through}.room-side details summary{cursor:pointer;color:var(--muted)}.notice{background:var(--notice-bg);border-left:3px solid #e0a100;margin:.4rem 0;padding:.4rem .6rem}.room-side{flex-direction:column;gap:8px;display:flex}.room-side h3{margin:4px 0 2px;font-size:15px}.room-side label{color:var(--muted);flex-direction:column;gap:2px;font-size:12px;display:flex}.room-side button.active{background:var(--accent-dark)}.pending{border-bottom:1px solid var(--line);justify-content:space-between;gap:8px;padding:2px 0;display:flex}.room-faint{fill:none;stroke:#c9d0d9;stroke-width:.015px}.wall-type-fills{opacity:.55;pointer-events:none}.wall-type-fills>*{stroke:none}.wall polyline{fill:none;stroke-width:.12px;stroke-linecap:butt;cursor:pointer;opacity:.85}.wall.needs_review polyline,.wall.missing_info polyline{stroke-dasharray:.25 .12}.legend .missing{color:var(--chip-missing-ink);font-weight:600}.legend .missing i{background:#e8590c}.wall.confirmed polyline{opacity:1}.wall.manually_corrected polyline{stroke-width:.14px}.wall.selected polyline{stroke-width:.22px;opacity:1}.wall.excluded polyline{opacity:.25;stroke-dasharray:.05 .1}.wall.dim{opacity:.15}.wall.bulkhead polyline{stroke-width:.07px}.wall.bulkhead.selected polyline{stroke-width:.16px}.wall line.opening,.wall-openings line.opening{fill:none;stroke-width:.24px;stroke-linecap:butt;pointer-events:none}.wall.open-edge polyline{stroke-dasharray:.05 .11;stroke-linecap:round;stroke-width:.13px}.wall.open-edge.selected polyline{stroke-width:.22px}.wall polyline.opening,.wall-openings polyline.opening{fill:none;stroke-width:.26px;stroke-dasharray:none;stroke-linecap:butt;opacity:.45;pointer-events:none}i.swatch{vertical-align:-1px;border-radius:2px;width:10px;height:10px;display:inline-block}.opening.door,.legend i.door,i.swatch.door{stroke:#0b6e4f;background:#0b6e4f}.opening.window,.legend i.window,i.swatch.window{stroke:#00a5cf;background:#00a5cf}.opening.technical,.opening.other,.legend i.other,i.swatch.other{stroke:#c2410c;background:#c2410c}.opening.open,.legend i.open{stroke:#0d9488;background:#0d9488}.wall text{fill:#1d2733;pointer-events:none;font-weight:600}.legend{flex-wrap:wrap;gap:6px 14px;font-size:12px;display:flex}.legend i{vertical-align:-2px;border-radius:2px;width:12px;height:12px;display:inline-block}.table-scroll{border:1px solid var(--line);border-radius:4px;max-height:640px;overflow:auto}.table-scroll.short{max-height:420px}table.qty{font-size:12px}table.qty th,table.qty td{white-space:nowrap;padding:4px 6px}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}th button.sort{color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;padding:0}tr.missing-row td{color:var(--error)}.kpis{flex-wrap:wrap;gap:12px;margin:8px 0 16px;display:flex}.kpi{border:1px solid var(--line);border-radius:6px;flex-direction:column;gap:2px;min-width:150px;padding:10px 16px;display:flex}.kpi span{color:var(--muted);font-size:12px}.kpi b{font-size:20px}.kpi-warn{border-color:var(--warn);background:var(--warn-bg)}.kpi-ok{background:var(--chip-ok);border-color:#2e7d32}.warn-box{background:var(--warn-bg);border:1px solid var(--warn);border-radius:6px;margin-bottom:12px;padding:10px 14px}.warn-box ul{margin:4px 0;padding-left:20px}.summary-grid{grid-template-columns:1fr 1fr;gap:24px;margin-top:8px;display:grid}.pricing-type{margin:12px 0 18px}.pricing-type h3{margin:0}table.pricing input{width:100%;min-width:0}table.pricing input.short{width:90px}button.secondary{color:inherit;border:1px solid var(--line);background:0 0}.docs-panel{width:min(460px,45vw);margin-left:auto;font-size:14px;font-weight:400;position:relative}h1{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.docs-results{z-index:25;background:var(--panel);border:1px solid var(--line);width:520px;max-height:70vh;box-shadow:var(--shadow);border-radius:8px;padding:8px 12px;position:absolute;top:calc(100% + 4px);right:0;overflow:auto}.search-bar{border:1px solid var(--line);background:var(--input-bg);border-radius:8px;align-items:center;gap:6px;padding:4px 6px 4px 10px;display:flex}.search-bar:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}.search-bar>svg{width:18px;height:18px;color:var(--muted);flex:none}.search-bar input{background:0 0;border:0;flex:1;min-width:0;padding:6px 4px;font-size:15px}.search-bar input:focus-visible{box-shadow:none}.search-bar button{padding:5px 12px}.docs-folder summary{cursor:pointer}.docs-results .history{padding:3px 0;font-size:14px;display:block}.search-bar .spinner{margin-right:4px}.docs-folder input{box-sizing:border-box;width:100%;min-width:0}.docs-hits{word-break:break-all;margin:4px 0 0;padding-left:18px}.canvas-wrap{outline:none}.canvas-wrap.active .canvas{outline:2px solid var(--accent);outline-offset:-2px}.debug{border-style:dashed}.debug h3{margin:16px 0 6px;font-size:14px}.debug details{margin:4px 0}.debug summary{cursor:pointer}.debug-block pre{white-space:pre-wrap;word-break:break-word;background:var(--code-bg);border:1px solid var(--line);border-radius:6px;max-height:320px;margin:0 0 8px;padding:8px;font-size:12px;overflow:auto}.debug-block .row{margin:4px 0}.debug-counts{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px 16px;margin:0;display:grid}.debug-counts dt{color:var(--muted)}.debug-counts dd{margin:0 0 4px}.topbar .topbar-slot{margin-left:auto;display:inline-flex}.topbar .gear .badge{background:var(--warn,#d08700);color:#fff;border-radius:10px;margin-left:4px;padding:0 6px;font-size:.75rem;display:inline-block}.settings-tabs{gap:8px;margin:8px 0 16px;display:flex}.settings-tabs button{background:var(--panel);color:var(--ink);border-color:var(--line)}.settings-tabs button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.heights-table td.num{text-align:right;white-space:nowrap}.topbar .debug-toggle{align-items:center;gap:6px;margin-left:8px;display:flex}.topbar .ai{color:var(--accent-2);font-weight:600}.topbar .ai[aria-pressed=true]{text-decoration:underline}.topbar .ai svg{width:15px;height:15px}.chat{z-index:30;background:var(--panel);border-left:1px solid var(--line);flex-direction:column;width:min(440px,100vw);display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-4px 0 18px #1d27331f}.chat-head{margin:12px 0 8px;padding:0 16px}.chat-head .grow{flex:1}.chat-log{flex-direction:column;flex:1;gap:10px;padding:0 16px;display:flex;overflow-y:auto}.chat-turn{white-space:pre-wrap;border-radius:8px;max-width:92%;padding:8px 12px;line-height:1.45}.chat-turn.user{background:var(--chat-user);align-self:flex-end}.chat-turn.assistant{background:var(--surface-2);align-self:flex-start}.chat-input{border-top:1px solid var(--line);align-items:flex-end;gap:8px;padding:12px 16px;display:flex}.chat-input textarea{font:inherit;border:1px solid var(--line);resize:vertical;border-radius:6px;flex:1;padding:6px 8px}.app:has(.split-plan){max-width:none;padding-bottom:16px}.app:has(.split-plan) .panel.rooms{margin-bottom:0}.split-tools{gap:8px;margin:0 0 6px}.split-tools button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.split-panes{grid-template-columns:1fr;gap:12px;display:grid}.split-plan.on .split-panes{grid-template-columns:1fr 1fr;align-items:start}.plan-viewer{flex-direction:column;gap:6px;min-width:0;display:flex}.viewer-pick{margin:0}.viewer-pick>.search-select:first-child{flex:1;min-width:0}.viewer-pick>.search-select:first-child input{min-width:0}.viewer-loading{height:640px;color:var(--muted);justify-content:center;align-items:center;gap:8px;display:flex}.viewer-tabs{gap:4px;margin:2px 0 0}.viewer-tabs .link.active{font-weight:600;text-decoration:underline}.viewer-layers{max-height:360px;overflow:auto}.viewer-layers .search-select input{min-width:0;padding:2px 22px 2px 4px}.viewer-layers .row{margin:4px 0}.viewer-docs{white-space:nowrap;position:relative}.viewer-docs summary{cursor:pointer}.viewer-docs-list{z-index:5;white-space:normal;background:var(--panel);border:1px solid var(--line);width:440px;max-height:320px;box-shadow:var(--shadow);border-radius:6px;padding:8px 10px;position:absolute;top:26px;right:0;overflow:auto}.viewer-docs-list>div{margin-bottom:6px}.highlight{fill:#ffc4002e;stroke:#e0a100;stroke-width:.08px;vector-effect:non-scaling-stroke}polyline.highlight{fill:none;stroke-width:4px}polygon.highlight{stroke-width:3px}.pick-marker line{fill:none;stroke:#d1242f;stroke-width:2px;vector-effect:non-scaling-stroke}.pane-head{flex-wrap:nowrap;height:34px;margin:0;overflow:visible}.ingest-progress{align-items:center;gap:12px;margin-top:12px;display:flex}.ingest-progress progress{max-width:480px;height:10px;accent-color:var(--accent);flex:1}.office-banner{border:1px solid var(--line);background:var(--surface-2);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 12px;padding:8px 12px;display:flex}.office-banner.suggest{background:var(--notice-bg);border-color:#c9a227}.office-banner .muted{flex-basis:100%}.change-box{border:1px solid var(--line);background:var(--surface-2);border-radius:6px;margin:12px 0;padding:8px 12px}.change-box summary{cursor:pointer;font-size:14px;font-weight:600}.panel>details>summary{cursor:pointer}.change-box table{border-collapse:collapse}.change-box td,.change-box th{text-align:right;padding:2px 10px 2px 0}.change-box td:first-child{text-align:left}.change-box .good{color:#2e7d32;font-weight:600}.change-box .bad{color:#b3261e;font-weight:600}input.narrow{width:9em}.element-hit{border:1px solid var(--line);white-space:pre-line;border-radius:6px;margin:6px 0;padding:6px 8px}.element-hit .row{flex-wrap:wrap;gap:8px;margin-top:4px}.viewer-dialog{z-index:50;background:#00000073;justify-content:center;align-items:flex-start;padding:24px 16px;display:flex;position:fixed;inset:0;overflow:auto}.viewer-dialog-body{background:var(--panel);width:min(1400px,100%);color:var(--ink)}.viewer-dialog-close{margin-left:auto}h1 .viewer-open{margin-left:12px;font-size:14px;font-weight:500}.room.editing polygon{fill-opacity:.04;stroke-opacity:.3}.shape-edit polygon{fill:#0f7f761a;stroke:#0f7f76;stroke-width:2px;vector-effect:non-scaling-stroke}.shape-edit.invalid polygon{fill:#d1242f1f;stroke:#d1242f;stroke-dasharray:6 4}.shape-edit .sel-edge{fill:none;stroke:#e0a100;stroke-width:4px;vector-effect:non-scaling-stroke}.shape-edit.line-edit polyline{fill:none;stroke:#d81b60;stroke-width:3px;vector-effect:non-scaling-stroke}.ceiling-zone{fill:#d81b600f;stroke:#d81b60;stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke;cursor:pointer}.ceiling-zone.high{fill:#0f7f761a}.ceiling-zone.low{fill:#d81b601f}.ceiling-zone.selected{stroke-width:3px;stroke-dasharray:none}.ceiling-zone-label{fill:#8a1040;pointer-events:none;font-weight:700}.shape-edit .grip{fill:#fff;stroke:#0f7f76;stroke-width:1.5px;vector-effect:non-scaling-stroke;cursor:move}.shape-edit .grip.mid{fill:#0f7f76;stroke:#fff}.shape-edit .grip.sel{fill:#d1242f;stroke:#fff}.shape-edit .snap-marker{fill:none;stroke:#0b8f3a;pointer-events:none}.shape-edit .snap-marker>:not(text){stroke-width:2px;vector-effect:non-scaling-stroke}.shape-edit .snap-marker text{fill:#0b8f3a;stroke:none;font-weight:600}.shape-edit .snap-line{stroke:#0b8f3a;stroke-width:3px;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.wall.editing polyline{opacity:.25}.wall-edit .face{fill:none;stroke:#0f7f76;stroke-width:5px;vector-effect:non-scaling-stroke;stroke-linecap:butt}.wall-edit .neighbour{fill:none;stroke:#0f7f76;stroke-width:2px;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.wall-edit .split-mark{fill:none;stroke:#d1242f;stroke-width:2px;vector-effect:non-scaling-stroke}.shape-panel{border:1px solid var(--line);background:var(--surface-2,var(--panel));border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.shape-panel .icon-row,.shape-panel .snap-row{flex-wrap:wrap;align-items:center;gap:4px}button.icon{background:var(--panel);color:var(--ink);border:1px solid var(--line);padding:4px 6px;line-height:0}button.icon:hover:not(:disabled){background:var(--hover,var(--panel));color:var(--ink)}button.icon.active{background:var(--accent);color:#fff;border-color:var(--accent)}button.icon.snap svg{fill:none;stroke:currentColor;stroke-width:1.6px}button.icon-text{align-items:center;gap:6px;display:inline-flex}.bulkhead-sides text{paint-order:stroke;stroke:#fff;stroke-width:.06px;pointer-events:none;font-weight:700}.bulkhead-sides text.high{fill:#0f7f76}.bulkhead-sides text.low{fill:#b3125a}.wall-types{width:290px;height:calc(var(--canvas-h) + 42px);box-sizing:border-box;background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.wall-types button.plain,.wall-types button.plain:hover:not(:disabled){color:inherit;box-shadow:none;background:0 0;border:0;padding:0;transform:none}.wall-types-head{justify-content:space-between;align-items:center;display:flex}.wall-types-head h3{margin:0;font-size:15px}.wall-types button.wall-types-close,.wall-types button.wall-types-close:hover:not(:disabled){color:var(--muted);padding:2px;line-height:0}.wall-types-close svg{transform:rotate(180deg)}.wall-types-search{box-sizing:border-box;width:100%;min-width:0}.wall-types-found{align-self:flex-start}.wall-types-filters{gap:4px;display:flex}.wall-types-filters>*{flex:1 1 0;min-width:0}.wall-types-filters .dropdown>summary,.wall-types-filters .multi-select-off{box-sizing:border-box;text-align:center;white-space:nowrap;justify-content:center;width:100%;padding:4px 6px;font-size:12px}.wall-types-filters .dropdown.on>summary{border-color:var(--accent);color:var(--accent);font-weight:600}.wall-types-sum{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.wall-types-sum button.link:disabled{color:var(--muted)}.wall-types-listhead{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:0 2px 4px 0;display:flex}.wall-types-mode{border:1px solid var(--line);border-radius:5px;display:inline-flex;overflow:hidden}.wall-types .wall-types-mode button.plain,.wall-types .wall-types-mode button.plain:hover:not(:disabled){color:var(--muted);padding:1px 8px;font-size:11px}.wall-types .wall-types-mode button.plain.on,.wall-types .wall-types-mode button.plain.on:hover:not(:disabled){background:var(--accent);color:#fff}.wall-types button.wall-types-eye,.wall-types button.wall-types-eye:hover:not(:disabled){color:var(--muted);flex:none;padding:2px;line-height:0}.wall-types button.wall-types-eye:hover:not(:disabled){color:var(--ink)}.wall-types-eye svg{width:16px;height:16px}.wall-types-list{flex:1;min-height:0;margin-right:-4px;padding-right:4px;overflow-y:auto}.wall-types-none{margin:12px 4px}.wall-type-row{border-radius:5px;align-items:center;gap:6px;padding:3px 0 3px 2px;display:flex}.wall-type-row:hover{background:var(--hover)}.wall-types button.wall-type-main{text-align:left;flex:1;align-items:center;gap:5px;min-width:0;display:flex}.wall-type-chevron{color:var(--muted);flex:none;line-height:0;transition:transform .1s}.wall-type-chevron svg{width:13px;height:13px}.wall-type-chevron.open{transform:rotate(90deg)}.wall-type-color{border-radius:3px;flex:none;width:12px;height:12px}.wall-type-text{flex-direction:column;min-width:0;font-size:13px;line-height:1.2;display:flex}.wall-type-text>*{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.wall-type-len{font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:12px}.wall-type-review{text-align:center;background:var(--chip-review);min-width:12px;color:var(--chip-review-ink);border-radius:8px;flex:none;padding:0 4px;font-size:11px;font-weight:600}.wall-types button.wall-type-only{color:var(--accent);flex:none;font-size:11px;display:none}.wall-type-row:hover button.wall-type-only,.wall-type-row:focus-within button.wall-type-only,.wall-types button.wall-type-only.on{display:inline}.wall-type.off .wall-type-color{opacity:.25}.wall-type.off .wall-type-text,.wall-type.off .wall-type-len{opacity:.5}.wall-type-walls{border-left:1px solid var(--line);margin:0 0 4px 8px;padding:0 0 0 6px;list-style:none}.wall-types button.wall-item,.wall-types button.wall-item:hover:not(:disabled){text-align:left;border-radius:4px;align-items:center;gap:5px;width:100%;padding:2px 4px;font-size:12px;display:flex}.wall-types button.wall-item:hover:not(:disabled){background:var(--hover)}.wall-types button.wall-item.selected,.wall-types button.wall-item.selected:hover:not(:disabled){background:var(--focus);font-weight:600}.wall-item.out .wall-item-room,.wall-item.out .wall-item-label,.wall-item.out .wall-item-len{opacity:.55}.wall-item-room{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.wall-item-label{color:var(--muted);flex:none}.wall-item-len{font-variant-numeric:tabular-nums;flex:none}.wall-item-dot{background:var(--ok);border-radius:50%;flex:none;width:7px;height:7px}.wall-item-dot.needs_review,.wall-item-dot.auto_detected{background:#e0a800}.wall-item-dot.missing_info{background:#e8590c}.wall-item-dot.excluded{background:var(--muted)}button.wall-types-rail{width:34px;height:calc(var(--canvas-h) + 42px);box-sizing:border-box;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;flex-direction:column;align-items:center;gap:8px;padding:6px 0;display:flex;overflow:hidden}button.wall-types-rail:hover:not(:disabled){background:var(--hover);border-color:var(--line);color:var(--ink)}.wall-types-rail svg{flex:none}.wall-types-rail-name{writing-mode:vertical-rl;flex:none;font-size:13px;font-weight:600;transform:rotate(180deg)}.wall-types-badge{text-align:center;background:var(--accent);color:#fff;border-radius:8px;flex:none;min-width:16px;font-size:11px;line-height:16px}.wall-types-rail-colors{flex-direction:column;gap:3px;min-height:0;display:flex;overflow:hidden}.wall-types-rail-colors i{border-radius:3px;flex:none;width:12px;height:12px}.multi-select .dropdown-menu{box-sizing:border-box;width:230px;max-height:320px}.wall-types-filters>:nth-child(2) .dropdown-menu{left:-60px}.wall-types-filters>:nth-child(3) .dropdown-menu{left:auto;right:0}.multi-select-search{box-sizing:border-box;flex:none;width:100%;min-width:0}.multi-select-list{flex-direction:column;gap:1px;min-height:0;display:flex;overflow-y:auto}.multi-select-option{color:var(--ink);cursor:pointer;border-radius:4px;align-items:center;gap:6px;padding:2px;font-size:13px;display:flex}.multi-select-option:hover{background:var(--hover)}.multi-select-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.multi-select-clear{align-self:flex-start}.wall-flash{pointer-events:none}.wall-flash polyline{fill:none;stroke-width:5px;vector-effect:non-scaling-stroke;opacity:.8}.wall-type-fills>.dim{opacity:.15}.legend button.link.on{font-weight:600;text-decoration:underline}.dropdown{display:inline-block;position:relative}.dropdown>summary{cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--ink);-webkit-user-select:none;user-select:none;border-radius:6px;padding:5px 10px;list-style:none}.dropdown>summary::-webkit-details-marker{display:none}.dropdown>summary:after{content:" ▾";color:var(--muted)}.dropdown[open]>summary{border-color:var(--accent)}.dropdown-menu{z-index:20;background:var(--panel);border:1px solid var(--line);min-width:180px;box-shadow:var(--shadow);border-radius:6px;flex-direction:column;gap:6px;padding:8px 10px;display:flex;position:absolute;top:calc(100% + 4px);left:0}.dropdown-menu label{white-space:nowrap}button.ok{background:var(--ok);border-color:var(--ok);color:#fff}button.ok:hover:not(:disabled){background:var(--ok-dark);border-color:var(--ok-dark)}button.tool{background:var(--tool);border-color:var(--tool);color:#fff}button.tool:hover:not(:disabled),.room-side button.tool.active{background:var(--tool-dark);border-color:var(--tool-dark)}button.danger{border-color:var(--error);color:var(--error);background:0 0}button.danger:hover:not(:disabled){background:var(--error);border-color:var(--error);color:#fff}.review-list .dropdown-menu{align-items:flex-start;gap:2px;max-height:60vh;overflow:auto}.review-list button.current{font-weight:700}.review-list button svg{visibility:hidden;width:12px;height:12px}.review-list button.seen svg{visibility:visible;color:#2e9d48}.search-select{vertical-align:middle;grid-template-columns:minmax(0,1fr);align-items:center;display:inline-grid;position:relative}.search-select>input,.search-select>.search-select-sizer,.search-select:after{grid-area:1/1}.search-select>input{box-sizing:border-box;text-overflow:ellipsis;cursor:pointer;width:100%;padding-right:24px}.search-select.open>input{cursor:text}.search-select>input:disabled{cursor:default;opacity:.6}.search-select-sizer{visibility:hidden;white-space:pre;pointer-events:none;height:0;padding:0 24px 0 9px;overflow:hidden}.search-select:after{content:"▾";color:var(--muted);pointer-events:none;justify-self:end;margin-right:8px}.search-select-list{z-index:1000;box-sizing:border-box;background:var(--panel);max-width:min(640px,96vw);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:6px;margin:0;padding:4px 0;font-size:14px;list-style:none;position:fixed;overflow:auto}.search-select-list [role=option]{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;padding:5px 10px;overflow:hidden}.search-select-list [role=option].active{background:var(--focus)}.search-select-list [role=option].chosen{font-weight:600}.search-select-list [role=option].disabled{color:var(--muted);cursor:default}.search-select-group{color:var(--muted);padding:6px 10px 2px;font-size:12px;font-weight:600}.search-select-none{color:var(--muted);padding:5px 10px}.login{justify-content:center;align-items:center;min-height:100vh;padding:24px 16px;display:flex}.login-card{flex-direction:column;gap:12px;width:min(380px,100%);margin:0;display:flex}.login-card h1{margin:0;font-size:26px}.login-card p{margin:0}.login-card label{color:var(--muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.login-card input{box-sizing:border-box;width:100%;min-width:0}.login-card button[type=submit]{margin-top:4px}.login-version{text-align:right}.topbar .whoami{white-space:nowrap;margin-left:8px}.release-notes{width:min(720px,100%)}.release-notes .viewer-dialog-close{padding:2px 10px;font-size:16px;line-height:1}.release-notes .release{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.release-notes .release h3{align-items:baseline;gap:10px;margin:0 0 6px;display:flex}.markdown p,.markdown ul{margin:6px 0}.markdown h4,.markdown h5{margin:10px 0 4px}.canvas-wrap:after{content:attr(data-watermark);color:#1e2a2b61;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:11px;position:absolute;bottom:6px;right:10px}
