:root{color-scheme:light dark;--chrome: #F2F4F6;--panel: #FAFBFC;--sunken: #EBEFF2;--rule: #D6DCE1;--rule-strong: #B7C0C8;--ink: #16202A;--ink-2: #55636E;--ink-3: #646E76;--accent: #14608C;--accent-soft: #DCEAF4;--danger: #A3392A;--ok: #1E6B43;--row: 28px;--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", monospace}:root[data-theme=dark]{--chrome: #12171C;--panel: #171D23;--sunken: #1E262D;--rule: #29323A;--rule-strong: #3C4750;--ink: #DDE4EA;--ink-2: #96A3AD;--ink-3: #838D95;--accent: #5CACDD;--accent-soft: #15303F;--danger: #DE7565;--ok: #5AB284}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);font-size:13px;color:var(--ink);background:var(--chrome);overflow:hidden;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.app{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:44px 46px 1fr 26px;height:100%}.commandbar{display:flex;align-items:center;gap:6px;padding:0 10px;background:var(--panel);border-bottom:1px solid var(--rule);overflow:hidden;min-width:0}.commandbar>*{flex:none}.wordmark{font-weight:700;letter-spacing:.1em;font-size:12px;text-transform:uppercase;color:var(--accent);margin-right:6px}.projname{font-family:var(--mono);font-size:12px;color:var(--ink-2);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:0 1 auto;min-width:0}.dot{color:var(--accent);margin-left:5px}.spacer{flex:1}.sep{width:1px;height:20px;background:var(--rule);margin:0 5px}.btn{display:inline-flex;align-items:center;gap:5px;height:var(--row);padding:0 9px;background:transparent;border:1px solid transparent;border-radius:3px;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){background:var(--sunken)}.btn:disabled{opacity:.4;cursor:default}.btn.primary{border-color:var(--rule-strong);background:var(--panel)}.btn.icon{padding:0;width:var(--row);justify-content:center}.zoom{font-family:var(--mono);font-size:12px;min-width:58px;text-align:center;color:var(--ink-2);font-variant-numeric:tabular-nums}select.wallpick{height:var(--row);background:var(--panel);color:inherit;border:1px solid var(--rule);border-radius:3px;padding:0 6px;flex:0 1 auto;min-width:74px;max-width:190px}@media (max-width: 1240px){.commandbar .btn .label{display:none}.commandbar .btn{padding:0 7px}}@media (max-width: 1000px){.commandbar .projname{display:none}}@media (max-width: 900px){.commandbar .zoomgroup{display:none}}@media (max-width: 620px){.commandbar .wordmark,.commandbar .newproject{display:none}.commandbar{gap:4px;padding:0 6px}.wallpick{min-width:58px;max-width:120px}}@media (max-width: 430px){.commandbar{gap:2px;padding:0 4px}.commandbar .btn{padding:0 5px}.commandbar .sep{margin:0 2px}.wallpick{max-width:96px}}.stagebar{display:flex;align-items:center;gap:2px;padding:0 10px;background:var(--panel);border-bottom:1px solid var(--rule);overflow:hidden;min-width:0}.stagestep{display:flex;align-items:center;min-width:0}.stagearrow:before{content:"→";color:var(--ink-3);font-size:12px;padding:0 4px}.stagebtn{display:flex;align-items:center;gap:8px;min-width:0;height:36px;padding:0 11px;text-align:left;color:var(--ink-2);background:transparent;border:1px solid transparent;border-radius:4px;cursor:pointer;font:inherit}.stagebtn:hover:not(:disabled){background:var(--sunken)}.stagebtn:disabled{opacity:.45;cursor:default}.stagebtn[aria-current=step]{background:var(--accent-soft);border-color:var(--accent);color:var(--ink)}.stagebtn .num{flex:none;width:17px;height:17px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:700;font-variant-numeric:tabular-nums;background:var(--rule);color:var(--ink-2)}.stagebtn[aria-current=step] .num{background:var(--accent);color:#fff}.stagebtn .text{display:flex;flex-direction:column;line-height:1.25;min-width:0}.stagebtn .name{font-size:12px;font-weight:600;white-space:nowrap}.stagebtn .sub{font-size:10.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 1120px){.stagebtn:not([aria-current=step]) .sub{display:none}}@media (max-width: 620px){.stagebtn .sub{display:none}}@media (max-width: 560px){.stagebtn .name{display:none}.stagebtn{padding:0 8px}}.walllist{display:flex;flex-direction:column;gap:3px}.wallbtn{display:grid;grid-template-columns:1fr auto;gap:0 8px;align-items:baseline;text-align:left;padding:6px 8px;color:inherit;background:transparent;border:1px solid var(--rule);border-radius:3px;cursor:pointer;font:inherit}.wallbtn:hover{border-color:var(--rule-strong)}.wallbtn[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.wallbtn .name{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wallbtn .count{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}.wallbtn .dim{grid-column:1 / -1;font-family:var(--mono);font-size:10px;color:var(--ink-3);font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wallrename{height:var(--row);font:inherit;color:inherit;background:var(--sunken);border:1px solid var(--accent);border-radius:3px;padding:0 8px;min-width:0}.actions .btn.icononly{flex:0 0 auto;padding:0 9px}.body{display:flex;min-height:0;min-width:0}.rail{width:48px;flex:none;background:var(--panel);border-right:1px solid var(--rule);display:flex;flex-direction:column;align-items:center;gap:2px;padding-top:6px}.rail button{width:36px;height:36px;display:grid;place-items:center;border:1px solid transparent;border-radius:4px;background:transparent;cursor:pointer;color:var(--ink-2)}.rail button:hover{background:var(--sunken);color:var(--ink)}.rail button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.panel{width:280px;flex:none;background:var(--panel);overflow-y:auto;display:flex;flex-direction:column}.panel.left{border-right:1px solid var(--rule)}.panel.right{border-left:1px solid var(--rule)}.panel section{border-bottom:1px solid var(--rule);padding:11px 13px 13px}.panel h2{font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin:0 0 9px;font-weight:600}.stage{flex:1;position:relative;min-width:0;min-height:0}.stage canvas{position:absolute;inset:0;display:block}.stage canvas.overlay{pointer-events:none}.stage .surface{position:absolute;inset:0;outline:none}.bricklist{display:flex;flex-direction:column;gap:3px}.brickbtn{display:grid;grid-template-columns:46px 1fr auto;align-items:center;gap:9px;padding:6px 8px;border:1px solid var(--rule);border-radius:3px;background:var(--chrome);cursor:pointer;text-align:left}.brickbtn:hover{border-color:var(--rule-strong)}.brickbtn[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.brickbtn .thumb{height:20px;position:relative}.brickbtn .thumb i{position:absolute;left:0;bottom:0;display:block;background:#b5523b;border:1px solid #5E2B1F}.brickbtn .name{font-size:12px}.brickbtn .dim{font-family:var(--mono);font-size:10px;color:var(--ink-3)}.brickbtn kbd{font-family:var(--mono);font-size:10px;color:var(--ink-3);border:1px solid var(--rule);border-radius:2px;padding:1px 4px}.swatches{display:grid;grid-template-columns:1fr 1fr;gap:4px}.swatch{display:flex;align-items:center;gap:6px;padding:5px 7px;border:1px solid var(--rule);border-radius:3px;background:var(--chrome);cursor:pointer;text-align:left;font-size:11px}.swatch[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.swatch i{width:13px;height:13px;border:1px solid rgba(0,0,0,.35);flex:none;border-radius:2px}.field{display:flex;align-items:center;gap:6px}.field input[type=number],.field input[type=text]{width:100%;height:var(--row);background:var(--chrome);color:inherit;border:1px solid var(--rule);border-radius:3px;padding:0 7px;font-family:var(--mono);font-variant-numeric:tabular-nums}.field .unit{font-family:var(--mono);font-size:11px;color:var(--ink-3)}.check{display:flex;align-items:center;gap:7px;cursor:pointer}.note{font-size:11px;color:var(--ink-3);line-height:1.45;margin:7px 0 0}.note.warn{color:var(--danger)}.note.ok{color:var(--ok)}.readout{font-family:var(--mono);font-size:11.5px;line-height:1.55;white-space:pre-wrap;color:var(--ink-2);font-variant-numeric:tabular-nums}.readout.warn{color:var(--danger)}.actions{display:flex;gap:5px;margin-top:9px}.actions .btn{flex:1;justify-content:center;border:1px solid var(--rule)}.actions .btn.danger:not(:disabled){color:var(--danger);border-color:var(--danger)}.status{display:flex;align-items:center;gap:12px;padding:0 11px;background:var(--panel);border-top:1px solid var(--rule);font-size:11.5px;color:var(--ink-2)}.status .mode{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#fff;padding:2px 7px;border-radius:2px}.status .msg{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status .coord{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink-3)}.scrim{position:fixed;inset:0;background:#0a101673;display:flex;align-items:center;justify-content:center;z-index:40;padding:24px}.dialog{background:var(--panel);border:1px solid var(--rule-strong);border-radius:4px;max-width:620px;width:100%;min-width:0;max-height:82vh;display:flex;flex-direction:column}.dialog header{padding:14px 18px;border-bottom:1px solid var(--rule);font-weight:600;font-size:14px}.dialog .content{padding:16px 18px;overflow:auto;line-height:1.55}.dialog footer{padding:11px 18px;border-top:1px solid var(--rule);display:flex;justify-content:flex-end;gap:7px}.dialog h3{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:16px 0 4px}.dialog h3:first-child{margin-top:0}.dialog p{margin:0 0 10px}.dialog .btn{border:1px solid var(--rule-strong)}.dialog .btn.cta{background:var(--accent);color:#fff;border-color:var(--accent)}.palette input{width:100%;height:36px;background:var(--chrome);color:inherit;border:1px solid var(--rule);border-radius:3px;padding:0 10px;font-size:14px}.palette ul{list-style:none;margin:12px 0 0;padding:0;max-height:46vh;overflow:auto}.palette li{display:flex;align-items:center;gap:10px;padding:7px 9px;border-radius:3px;cursor:pointer}.palette li[aria-selected=true]{background:var(--accent-soft)}.palette li .group{font-size:10.5px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em}.palette li .keys{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-3)}.library{list-style:none;margin:0;padding:0}.library li{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid var(--rule)}.library .meta{font-family:var(--mono);font-size:11px;color:var(--ink-3);margin-left:auto}.busy{position:absolute;left:50%;top:14px;transform:translate(-50%);background:var(--panel);border:1px solid var(--rule-strong);border-radius:3px;padding:6px 12px;font-size:12px;z-index:20}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.panel.floating{width:300px;max-width:calc(100vw - 60px)}.tabs{display:flex;gap:6px;margin-bottom:14px}.tabs .btn{border:1px solid var(--rule)}.tabs .btn[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:9px 12px}@media (max-width: 560px){.grid2{grid-template-columns:1fr}}.grid2 label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--ink-2);min-width:0}.grid2 select,.grid2 input{height:var(--row);background:var(--chrome);color:var(--ink);border:1px solid var(--rule);border-radius:3px;padding:0 7px;font:inherit;font-size:12px;width:100%;min-width:0;box-sizing:border-box}@media print{body{background:#fff;overflow:visible}.commandbar,.rail,.panel,.status,.scrim,.busy{display:none!important}.app{display:block;height:auto}.body{display:block}.stage{position:relative;height:100vh;page-break-inside:avoid}.stage .surface{display:none}.stage:after{content:"Screen view — NOT TO SCALE. Use Export → Drawing sheets for a scaled drawing.";position:absolute;left:0;bottom:0;right:0;font:10px var(--mono);color:#444;padding:4px 6px;border-top:1px solid #999;background:#fff}}.panel.floating{position:absolute;top:0;bottom:0;z-index:25;box-shadow:0 0 0 1px var(--rule),0 12px 32px #080e1438}.panel.floating.left{left:0}.panel.floating.right{right:0}.paneltoggle{position:absolute;top:8px;z-index:24;display:flex;flex-direction:column;gap:4px}.paneltoggle.left{left:8px}.paneltoggle.right{right:8px}.paneltoggle button{width:34px;height:34px;display:grid;place-items:center;background:var(--panel);border:1px solid var(--rule-strong);border-radius:4px;cursor:pointer;color:var(--ink-2)}.paneltoggle button:hover{color:var(--ink)}[data-layout=compact] .app{grid-template-rows:44px 40px 1fr 26px}[data-layout=compact] .rail{position:absolute;left:0;right:0;bottom:0;width:auto;height:56px;flex-direction:row;justify-content:space-around;align-items:center;border-right:0;border-top:1px solid var(--rule);padding:0 6px;z-index:26}[data-layout=compact] .rail button{width:44px;height:44px}[data-layout=compact] .panel.floating{inset:auto 0 56px;width:auto;max-height:62vh;border-left:0;border-right:0;border-top:1px solid var(--rule-strong)}[data-layout=compact] .stage{padding-bottom:56px}[data-layout=compact] .paneltoggle{bottom:64px;top:auto}[data-layout=compact] .commandbar{gap:3px}[data-layout=compact] .commandbar .btn span,[data-layout=compact] .projname{display:none}@media (pointer: coarse){.btn{min-height:40px}.rail button{width:44px;height:44px}.swatch,.brickbtn{min-height:44px}.grid2 select,.grid2 input,.field input{height:40px}.library li{padding:12px 4px}}.panelclose{position:absolute;top:6px;right:8px;z-index:1;width:28px;height:28px;display:grid;place-items:center;background:none;border:0;border-radius:4px;color:var(--ink-3);cursor:pointer}.panelclose:hover{color:var(--ink);background:var(--sunken)}.sheetgrip{height:4px;width:40px;border-radius:2px;background:var(--rule-strong);margin:7px auto 0}.ctxmenu{position:absolute;z-index:30;min-width:210px;background:var(--panel);border:1px solid var(--rule-strong);border-radius:4px;box-shadow:0 10px 28px #080e1447;padding:4px}.ctxmenu button{display:block;width:100%;text-align:left;padding:10px 11px;background:none;border:0;border-radius:3px;cursor:pointer;font-size:13px}.ctxmenu button:hover:not(:disabled){background:var(--sunken)}.ctxmenu button:disabled{opacity:.4;cursor:default}.ctxmenu hr{border:0;border-top:1px solid var(--rule);margin:4px 0}.view3d{position:fixed;inset:0;z-index:45;background:var(--chrome);display:flex;flex-direction:column}.view3d-frame{flex:1;min-height:0;position:relative;outline:none}.view3d-frame:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.view3d-frame canvas{display:block;width:100%;height:100%}.view3d-bar{order:-1;height:44px;flex:none;display:flex;align-items:center;gap:10px;padding:0 10px;background:var(--panel);border-bottom:1px solid var(--rule);overflow:hidden}.view3d-bar .title{font-weight:600;font-size:13px}.view3d-bar .stats{font-family:var(--mono);font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.view3d-describe{position:absolute;top:44px;right:0;bottom:0;width:340px;max-width:100%;overflow:auto;padding:14px 16px 20px;background:var(--panel);border-left:1px solid var(--rule)}.view3d-describe h2{font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin:0 0 8px}.view3d-describe ul{list-style:none;margin:12px 0 0;padding:0}.view3d-describe>ul>li{padding:9px 0;border-top:1px solid var(--rule);font-size:13px}.view3d-describe ul ul{margin:6px 0 0;padding-left:14px}.view3d-describe ul ul li{font-size:11.5px;color:var(--ink-2);padding:2px 0;list-style:disc}.view3d-describe .dim{font-size:11.5px;color:var(--ink-3)}.view3d-describe .readout{margin:0 0 6px}.view3d-state{position:absolute;inset:44px 0 0;display:grid;place-items:center;text-align:center;padding:24px;pointer-events:none}.view3d-state p{margin:0 0 6px;color:var(--ink-2)}.view3d-hint{position:absolute;left:50%;bottom:14px;transform:translate(-50%);margin:0;padding:5px 11px;border-radius:3px;background:color-mix(in srgb,var(--panel) 88%,transparent);border:1px solid var(--rule);font-family:var(--mono);font-size:11px;color:var(--ink-3);max-width:calc(100% - 24px);text-align:center}.view3d~*{pointer-events:none}.emptystate{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;padding:16px}.emptystate .card{pointer-events:auto;text-align:center;flex:0 1 460px;min-width:0;max-width:100%;max-height:100%;overflow:auto;background:color-mix(in srgb,var(--panel) 96%,transparent);border:1px solid var(--rule);border-radius:5px;padding:22px 26px}@media (max-height: 720px){.emptystate .card{padding:14px 18px}.emptystate p{margin-bottom:10px}.emptystate .routes{gap:5px}.emptystate .routes button{padding:7px 11px}.emptystate .hint{margin-top:9px}}.emptystate h2{font-size:17px;margin:0 0 4px}.emptystate p{color:var(--ink-2);margin:0 0 16px;font-size:13px;line-height:1.5}.emptystate .routes{display:grid;gap:7px}.emptystate .routes button{display:flex;align-items:center;gap:10px;padding:10px 13px;text-align:left;background:var(--chrome);border:1px solid var(--rule);border-radius:4px;cursor:pointer}.emptystate .routes button:hover{border-color:var(--accent)}.emptystate .routes b{display:block;font-size:13px}.emptystate .routes span{display:block;font-size:11.5px;color:var(--ink-3)}.emptystate .hint{margin-top:14px;font-size:11px;color:var(--ink-3);font-family:var(--mono)}.outline{max-height:52vh;overflow:auto}.outline .course{border-bottom:1px solid var(--rule)}.outline summary{cursor:pointer;padding:7px 4px;font-size:12.5px;display:flex;gap:10px;align-items:center}.outline summary .meta{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-3)}.outline ul{list-style:none;margin:0;padding:0 0 8px 18px}.outline li button{width:100%;text-align:left;background:none;border:0;cursor:pointer;padding:5px 7px;border-radius:3px;font-family:var(--mono);font-size:11.5px;color:var(--ink-2)}.outline li button:hover{background:var(--sunken);color:var(--ink)}.crash{display:grid;place-items:center;height:100%;padding:30px}.crash .card{max-width:560px;border:1px solid var(--rule-strong);background:var(--panel);padding:22px 26px;border-radius:5px}.crash pre{font-family:var(--mono);font-size:11px;background:var(--sunken);padding:10px;overflow:auto;max-height:220px}.shapelist{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:5px}.shapelist li{border:1px solid var(--rule);border-radius:4px;padding:6px 7px;display:grid;gap:5px;background:var(--chrome)}.shapelist li[data-selected=true]{border-color:var(--accent);background:var(--accent-soft)}.shapelist .row{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;cursor:pointer;text-align:left;padding:0}.shapelist .dot{width:11px;height:11px;border-radius:2px;flex:none;border:1px solid var(--rule-strong)}.shapelist .dot.wall{background:#1f4e6b}.shapelist .dot.window{background:#317aa8}.shapelist .dot.door{background:#a86e20}.shapelist b{display:block;font-size:12.5px}.shapelist .meta{display:block;font-family:var(--mono);font-size:10.5px;color:var(--ink-3)}.shapeactions{display:flex;gap:5px;align-items:center}.shapeactions select{flex:1;height:28px;background:var(--panel);color:inherit;border:1px solid var(--rule);border-radius:3px;font-size:11.5px;padding:0 5px}.shapeactions .btn{border:1px solid var(--rule);padding:0 8px;min-height:28px}.emptystate .dismiss{position:absolute;top:8px;right:10px;background:none;border:0;color:var(--ink-3);font-size:11.5px;cursor:pointer;padding:4px 6px}.emptystate .card{position:relative}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
