:root{--bg:#f4f5f6;--panel:#fff;--ink:#1f2a33;--muted:#66727c;--line:#d6dbe0;--accent:#2f6fa8;--accent-ink:#fff;--danger:#b3412f;--toolbar:#1f2a33;--toolbar-ink:#f3f5f7;--plan-bg:#fbfbf9;--grid-minor:#eceeee;--grid-major:#d5d9db;--block-fill:#efe6d6;--block-stroke:#3b3226;--wall-line:#22262a;--wall-layer:#8c949a;--fill-framing:#f1e4c6;--fill-sheathing:#d9c28f;--fill-cladding:#e9ecee;--fill-finish:#fff;--fill-concrete:#d2d2cc;--fill-insulation:#f6dbe2;--room-fill:#fdfcf8;--ghost:#b9c0c6;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px}@media (prefers-color-scheme:dark){:root{--bg:#15191d;--panel:#1d2329;--ink:#e7ebee;--muted:#9aa5ae;--line:#313a42;--plan-bg:#1a1f24;--grid-minor:#232a30;--grid-major:#2f383f;--block-fill:#3a3329;--block-stroke:#e6dccb;--wall-line:#e8ebee;--wall-layer:#77828b;--fill-framing:#5a4c33;--fill-sheathing:#6d5a35;--fill-cladding:#3b434a;--fill-finish:#2b3238;--fill-concrete:#4a4c4c;--fill-insulation:#5b4048;--room-fill:#1e2328;--ghost:#3c464f}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}button{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:6px;min-height:34px;padding:6px 12px}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.danger{color:var(--danger);border-color:var(--danger);background:0 0}.loading{color:var(--muted);padding:24px}.app{flex-direction:column;height:100%;display:flex}.app>.workspace{flex:1}.toolbar{padding:8px 12px;padding-top:max(8px, env(safe-area-inset-top));background:var(--toolbar);color:var(--toolbar-ink);flex-wrap:wrap;align-items:center;gap:12px;display:flex}.toolbar .brand{white-space:nowrap;text-overflow:ellipsis;max-width:40vw;font-weight:600;overflow:hidden}.toolbar .tools{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.toolbar button:not(.primary){color:var(--toolbar-ink);background:0 0;border-color:#46525c}.toolbar .sep{background:#46525c;width:1px;margin:0 2px}.notice{color:#173d5e;border-bottom:1px solid var(--line);background:#e5f0fa;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.notice.error{color:#6d1f12;background:#fbe7e3}.notice button{min-height:0;color:inherit;background:0 0;border:none;padding:0 6px;font-size:18px}.tabs{display:none}.workspace{grid-template-columns:1fr 1fr 300px;min-height:0;display:grid}.pane{border-right:1px solid var(--line);min-width:0;min-height:0;position:relative}.pane-panels{background:var(--panel);border-right:none;overflow:auto}.plan-view,.viewport-3d{position:absolute;inset:0}.plan-svg{background:var(--plan-bg);touch-action:none;-webkit-user-select:none;user-select:none;display:block}.viewport-3d canvas{touch-action:none;width:100%;height:100%;display:block}.grid-minor{stroke:var(--grid-minor)}.grid-major{stroke:var(--grid-major)}.origin{stroke:#c0392b;opacity:.6}.block rect{fill:var(--block-fill);stroke:var(--block-stroke);cursor:move}.block.selected rect{stroke:var(--accent);fill:color-mix(in srgb, var(--block-fill) 75%, var(--accent))}.block text{fill:var(--block-stroke);pointer-events:none;font-family:inherit}.block .block-name{font-weight:600}.view-tools{gap:6px;display:flex;position:absolute;bottom:10px;right:10px}.view-tools button{min-width:38px;box-shadow:0 1px 3px #0000001f}.view-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);pointer-events:none;font-size:12px;font-weight:600;position:absolute;top:8px;left:10px}.panel{border-bottom:1px solid var(--line);padding:12px 14px}.panel h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 10px;font-size:13px}.hint{color:var(--muted);margin:6px 0;line-height:1.4}.field{grid-template-columns:120px 1fr;align-items:center;gap:4px 8px;margin-bottom:6px;display:grid}.field input{font:inherit;font-variant-numeric:tabular-nums;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:6px;min-width:0;padding:6px 8px;font-size:16px}.field.error input{border-color:var(--danger)}.field small{color:var(--danger);grid-column:2}.inspector .danger{margin-top:8px}.history ol{margin:0;padding:0;list-style:none}.history li{margin:0}.history .row-button{text-align:left;background:0 0;border:none;border-radius:4px;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;width:100%;min-height:0;padding:6px 4px;display:grid}.history .row-button:hover:not(:disabled){background:var(--bg)}.history .row-button:disabled{opacity:1;font-weight:600}.history li.undone{opacity:.45;text-decoration:line-through}.history li.start .row-button{color:var(--muted);display:block}.history .actor{background:var(--line);border-radius:10px;padding:1px 6px;font-size:11px}.history .actor-ai{color:#4b2a78;background:#e8dcf7}.history .time{color:var(--muted);font-size:12px}.statusbar{padding:4px 12px;padding-bottom:max(4px, env(safe-area-inset-bottom));color:var(--muted);border-top:1px solid var(--line);background:var(--panel);justify-content:space-between;gap:12px;font-size:12px;display:flex}.statusbar a{color:var(--accent)}.drawbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding:6px 12px;display:flex}.segmented{border:1px solid var(--line);border-radius:7px;display:inline-flex;overflow:hidden}.segmented button{border:none;border-right:1px solid var(--line);border-radius:0;min-height:32px;padding:4px 10px}.segmented button:last-child{border-right:none}.segmented button.active{background:var(--accent);color:var(--accent-ink)}.level-select,.field select{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:6px;min-width:0;padding:5px 8px;font-size:16px}.command{flex:1;min-width:200px}.command input{width:100%;font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:6px;padding:6px 10px;font-size:16px}.plan-svg.tool-wall,.plan-svg.tool-box,.plan-svg.tool-door,.plan-svg.tool-window{cursor:crosshair}.room{fill:var(--room-fill)}.fill{stroke:none}.fill-framing{fill:var(--fill-framing);background:var(--fill-framing)}.fill-sheathing{fill:var(--fill-sheathing);background:var(--fill-sheathing)}.fill-cladding{fill:var(--fill-cladding);background:var(--fill-cladding)}.fill-finish{fill:var(--fill-finish);background:var(--fill-finish)}.fill-concrete{fill:var(--fill-concrete);background:var(--fill-concrete)}.fill-insulation{fill:var(--fill-insulation);background:var(--fill-insulation)}.wl{stroke:var(--wall-line);stroke-linecap:square}.wl-layer{stroke:var(--wall-layer)}.door-sym line,.door-sym path,.window-sym line{stroke:var(--wall-line)}.ghost{stroke:var(--ghost);stroke-dasharray:6 4}.slab{fill:none;stroke:var(--wall-layer)}.hit{fill:#0000;stroke:#0000}.plan-svg.tool-select .hit{cursor:move}.hit.selected{stroke:var(--accent);fill:color-mix(in srgb, var(--accent) 12%, transparent)}.slab.selected{stroke:var(--accent)}.room-label text,.block-label text{fill:var(--muted);pointer-events:none;font-family:inherit}.block-label text{fill:var(--block-stroke)}.live-dim text{fill:var(--accent);paint-order:stroke;stroke:var(--plan-bg);stroke-width:3px;pointer-events:none;font-weight:600}.chain-pt{fill:var(--accent)}.snap{fill:none;stroke:var(--accent)}.snap-end{stroke:#c0392b}.draw-hint{background:color-mix(in srgb, var(--panel) 92%, transparent);border:1px solid var(--line);pointer-events:none;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;font-size:13px;display:flex;position:absolute;top:30px;left:10px;right:10px}.draw-hint button{pointer-events:auto}.draw-hint .error,.error-text{color:var(--danger)}.scope{flex-wrap:wrap;align-items:center;gap:4px 8px;margin-bottom:10px;display:flex}.scope small{color:var(--muted);flex-basis:100%}.panel h4{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:12px 0 6px;font-size:12px}.field.readonly span:last-child{font-variant-numeric:tabular-nums}.buttons{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.layers{margin:6px 0;padding:0;font-size:13px;list-style:none}.layers li{align-items:center;gap:6px;padding:2px 0;display:flex}.layers em{color:var(--muted);margin-left:auto;font-style:normal}.swatch{border:1px solid var(--wall-layer);border-radius:2px;width:12px;height:12px;display:inline-block}.walltype .row-button{text-align:left;background:0 0;border:none;justify-content:space-between;width:100%;min-height:0;padding:6px 2px;display:flex}.walltype .row-button em{color:var(--muted);font-style:normal}.walltype-layers{border-left:2px solid var(--line);padding:4px 0 8px 8px}@media (width<=820px){.tabs{border-bottom:1px solid var(--line);background:var(--panel);display:flex}.tabs button{background:0 0;border:none;border-bottom:3px solid #0000;border-radius:0;flex:1}.tabs button.active{border-bottom-color:var(--accent);font-weight:600}.workspace{grid-template-columns:1fr}.pane{border-right:none;display:none}.tab-plan .pane-plan,.tab-3d .pane-3d,.tab-panels .pane-panels{display:block}.toolbar .brand{width:100%;max-width:100%}.toolbar .tools{margin-left:0}.command{flex-basis:100%}}.bench{grid-template-rows:auto 1fr;height:100%;display:grid}.bench header{background:var(--toolbar);color:var(--toolbar-ink);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;display:flex}.bench header a{color:var(--toolbar-ink)}.bench header button:not(.primary){color:var(--toolbar-ink);background:0 0;border-color:#46525c}.bench-body{grid-template-columns:1fr 360px;min-height:0;display:grid}.bench-canvas{min-height:0;position:relative}.bench-canvas canvas{width:100%;height:100%;position:absolute;inset:0}.bench-results{background:var(--panel);border-left:1px solid var(--line);padding:12px 14px;overflow:auto}.bench-results table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.bench-results td{border-bottom:1px solid var(--line);padding:4px 0}.bench-results td:last-child{text-align:right}.pass{color:#22783a;font-weight:600}.fail{color:var(--danger);font-weight:600}.bench-results pre{white-space:pre-wrap;word-break:break-all;background:var(--bg);border-radius:6px;padding:8px;font-size:11px}@media (width<=820px){.bench-body{grid-template-rows:50vh auto;grid-template-columns:1fr}.bench-results{border-left:none}}
