:root{--bg:#0d0f14;--panel:#15181f;--panel-2:#1c2029;--panel-3:#232836;--line:#2a3040;--text:#e6e9f0;--dim:#8b92a6;--faint:#5d6478;--accent:#7c5cff;--accent-2:#00e0b8;--hot:#ff4d6e;--warn:#ffb547;--x:#ff5a6e;--y:#5adc7a;--z:#5a9bff;--font:"Segoe UI Variable Text", "Segoe UI", Inter, system-ui, sans-serif;--mono:"Cascadia Mono", Consolas, ui-monospace, monospace}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font:12px/1.4 var(--font);-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}input,textarea,select{-webkit-user-select:text;user-select:text}button,input,textarea,select{font:inherit;color:inherit}kbd{font:10px/1 var(--mono);color:var(--faint)}.hidden{display:none!important}.dim{color:var(--dim)}hr{border:0;border-top:1px solid var(--line);margin:4px 0}body{grid-template:"menu menu menu"38px"opts opts opts"36px"tools view dock"1fr"status status status"24px/44px 1fr 340px;display:grid}#menubar{border-bottom:1px solid var(--line);background:#11131a;grid-area:menu;align-items:center;gap:10px;padding:0 10px;display:flex}.brand{letter-spacing:.2em;align-items:center;gap:6px;margin-right:6px;font-size:13px;font-weight:800;display:flex}.brand .logo{color:var(--accent);filter:drop-shadow(0 0 6px var(--accent))}#menus{display:flex}.menu{position:relative}.menu-btn{cursor:pointer;color:var(--dim);background:0 0;border:0;border-radius:6px;padding:6px 10px}.menu-btn:hover,.menu.open .menu-btn{background:var(--panel-2);color:var(--text)}.menu-list{z-index:60;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;min-width:250px;padding:5px;display:none;position:absolute;top:100%;left:0;box-shadow:0 18px 50px #000a}.menu.open .menu-list{display:block}.menu-list button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:space-between;align-items:center;gap:20px;width:100%;padding:6px 10px;display:flex}.menu-list button:hover{background:var(--accent)}.menu-list button:hover kbd{color:#fff}.menu-list .sub{color:var(--faint);text-transform:uppercase;letter-spacing:.1em;padding:6px 10px 2px;font-size:10px}.project{align-items:center;gap:8px;margin-left:auto;display:flex}.project input{text-align:center;background:0 0;border:1px solid #0000;border-radius:6px;width:200px;padding:4px 8px;font-weight:600}.project input:hover,.project input:focus{border-color:var(--line);background:var(--panel);outline:none}#saveState{color:var(--faint);min-width:56px;font-size:11px}.top-actions{align-items:center;gap:6px;display:flex}.pc-pill{border:1px solid var(--line);background:var(--panel);color:var(--dim);cursor:pointer;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:600}.pc-pill:hover{border-color:var(--accent);color:var(--text)}.pc-pill.local,.pc-pill.tunnel{color:#5fd38d}.pc-pill.locked{color:#ffb547}.pc-pill.offline{color:var(--faint)}.pc-key{letter-spacing:.12em;text-transform:uppercase;text-align:center;width:100%;font:600 18px ui-monospace,Consolas,monospace}.icon-btn{cursor:pointer;width:28px;height:28px;color:var(--dim);background:0 0;border:0;border-radius:6px;font-size:15px}.icon-btn:hover{background:var(--panel-2);color:var(--text)}.pill{border:1px solid var(--line);background:var(--panel-2);cursor:pointer;border-radius:999px;padding:5px 12px;font-weight:600}.pill:hover:not(:disabled){border-color:var(--accent)}.pill:disabled{opacity:.35;cursor:default}.pill.accent{background:linear-gradient(135deg, var(--accent), #5a3cf0);border-color:#0000}.pill.accent:hover{box-shadow:0 0 16px #7c5cff77}#optionsbar{background:var(--panel);border-bottom:1px solid var(--line);white-space:nowrap;grid-area:opts;align-items:center;gap:12px;padding:0 12px;display:flex;overflow-x:auto}#optionsbar .tool-name{color:var(--text);border-right:1px solid var(--line);padding-right:12px;font-weight:700}#optionsbar label{color:var(--dim);align-items:center;gap:6px;display:flex}#optionsbar .grp{border-right:1px solid var(--line);align-items:center;gap:4px;padding-right:12px;display:flex}#optionsbar .grp:last-child{border-right:0}.seg{background:var(--bg);border:1px solid var(--line);border-radius:7px;padding:2px;display:inline-flex}.seg button{cursor:pointer;color:var(--dim);background:0 0;border:0;border-radius:5px;padding:3px 9px}.seg button.active{background:var(--panel-3);color:var(--text);box-shadow:inset 0 0 0 1px var(--accent)}.seg button:hover{color:var(--text)}.btn{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:7px;padding:4px 10px}.btn:hover{border-color:var(--accent)}.btn.small{padding:2px 7px;font-size:11px}.btn.primary{background:linear-gradient(135deg, var(--accent), #5a3cf0);border-color:#0000;font-weight:700}.btn.primary:hover{filter:brightness(1.12)}.btn.danger:hover{border-color:var(--hot);color:var(--hot)}.btn:disabled{opacity:.4;cursor:default}.icon-row{gap:2px;display:inline-flex}.icon-row .btn{padding:3px 7px;font-size:13px}#toolbar{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;grid-area:tools;align-items:center;gap:3px;padding:8px 0;display:flex}#toolbar button{cursor:pointer;width:34px;height:34px;color:var(--dim);background:0 0;border:1px solid #0000;border-radius:8px;place-items:center;font-size:16px;display:grid;position:relative}#toolbar button kbd{font-size:7.5px;position:absolute;bottom:1px;right:2px}#toolbar button:hover{background:var(--panel-2);color:var(--text)}#toolbar button.active{border-color:var(--accent);color:#fff;background:#7c5cff2a}.tool-sep{background:var(--line);width:22px;height:1px;margin:5px 0}#viewport{background:var(--bg);grid-area:view;position:relative;overflow:hidden}#viewport canvas{outline:none;display:block}#views{border:1px solid var(--line);z-index:3;background:#15181fcc;border-radius:9px;gap:2px;padding:3px;display:flex;position:absolute;top:10px;right:10px}#views button{cursor:pointer;color:var(--dim);background:0 0;border:0;border-radius:6px;padding:4px 9px}#views button:hover{background:var(--panel-2);color:var(--text)}#overlay{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0}#overlay text{font:600 12px var(--font);fill:#fff;paint-order:stroke;stroke:#000a;stroke-width:3px}.chip{border:1px solid var(--line);color:var(--dim);z-index:3;background:#15181fdd;border-radius:999px;padding:4px 10px;position:absolute;top:10px;left:12px}#empty{text-align:center;pointer-events:none;place-content:center;display:grid;position:absolute;inset:0}.empty-title{background:linear-gradient(90deg,#b4a2ff,#00e0b8);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:24px;font-weight:800}.empty-sub{color:var(--dim);margin-top:6px}#toast{opacity:0;border:1px solid var(--line);pointer-events:none;white-space:nowrap;z-index:5;background:#1c2029f0;border-radius:999px;padding:8px 16px;transition:all .25s;position:absolute;bottom:22px;left:50%;transform:translate(-50%)translateY(16px);box-shadow:0 10px 30px #0008}#toast.show{opacity:1;transform:translate(-50%)}#toast.err{border-color:var(--hot)}#viewport.drop:after{content:"Drop to import";border:2px dashed var(--accent);z-index:6;background:#7c5cff18;border-radius:16px;place-items:center;font-size:20px;font-weight:700;display:grid;position:absolute;inset:12px}#dock{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;grid-area:dock;min-height:0;display:flex}.dock-panel{flex-direction:column;min-height:80px;display:flex;overflow:hidden}#dockTop{flex:62%}#dockBottom{flex:38%}#dockSplit{cursor:row-resize;background:var(--line);flex:none;height:5px}#dockSplit:hover{background:var(--accent)}.dock-tabs{border-bottom:1px solid var(--line);background:#11131a;flex:none;display:flex}.dock-tabs button{cursor:pointer;color:var(--dim);background:0 0;border:0;border-bottom:2px solid #0000;padding:8px 12px;font-weight:600}.dock-tabs button.active{color:var(--text);border-bottom-color:var(--accent);background:var(--panel)}.dock-body{flex:1;min-height:0;overflow-y:auto}.sec{border-bottom:1px solid var(--line)}.sec-h{text-transform:uppercase;letter-spacing:.08em;color:var(--dim);cursor:pointer;justify-content:space-between;align-items:center;padding:8px 12px;font-size:11px;font-weight:700;display:flex}.sec-h:hover{color:var(--text)}.sec-b{flex-direction:column;gap:6px;padding:0 12px 10px;display:flex}.sec.closed .sec-b{display:none}.sec-h .caret{transition:transform .15s}.sec.closed .caret{transform:rotate(-90deg)}.note{color:var(--dim);margin:0;font-size:11.5px}.note.ok{color:var(--accent-2)}.note.warn{color:var(--warn)}.note.err{color:var(--hot)}.row{align-items:center;gap:6px;display:flex}.grow{flex:1}.name-input{background:var(--bg);border:1px solid var(--line);border-radius:7px;width:100%;padding:6px 8px;font-weight:600}.name-input:focus{border-color:var(--accent);outline:none}.fields{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.fields.two{grid-template-columns:repeat(2,1fr)}.fields.one{grid-template-columns:1fr}.field{background:var(--bg);border:1px solid var(--line);border-radius:6px;align-items:stretch;min-width:0;display:flex;overflow:hidden}.field:focus-within{border-color:var(--accent)}.field .lab{color:var(--dim);cursor:ew-resize;background:var(--panel-2);white-space:nowrap;justify-content:center;align-items:center;min-width:22px;padding:0 6px;font-size:11px;display:flex}.field .lab:hover{color:var(--text)}.field.x .lab{color:var(--x)}.field.y .lab{color:var(--y)}.field.z .lab{color:var(--z)}.field input{text-align:right;width:100%;min-width:0;font:12px var(--mono);background:0 0;border:0;outline:none;padding:5px 4px}.field .unit{color:var(--faint);align-items:center;padding:0 5px 0 0;font-size:10px;display:flex}.field.wide{grid-column:1/-1}select.sel,input.txt{background:var(--bg);border:1px solid var(--line);border-radius:6px;width:100%;padding:5px 6px}select.sel:focus,input.txt:focus,textarea:focus{border-color:var(--accent);outline:none}.lbl{color:var(--faint);text-transform:uppercase;letter-spacing:.08em;margin-top:4px;font-size:10.5px}.stack{flex-direction:column;gap:4px;display:flex}.feat{background:var(--panel-2);border:1px solid var(--line);border-radius:8px}.feat-h{cursor:pointer;align-items:center;gap:6px;padding:5px 6px 5px 8px;display:flex}.feat-h .ico{text-align:center;width:18px;color:var(--accent-2)}.feat-h .nm{flex:1;font-weight:600}.feat-h .mini{color:var(--faint);cursor:pointer;background:0 0;border:0;padding:0 3px;font-size:12px}.feat-h .mini:hover{color:var(--text)}.feat-b{flex-direction:column;gap:4px;padding:0 8px 8px;display:flex}.feat.closed .feat-b{display:none}.feat.warn{border-color:#ffb54788}.add-feat{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.add-feat button{background:var(--bg);border:1px dashed var(--line);cursor:pointer;color:var(--dim);border-radius:7px;padding:6px 2px;font-size:11px}.add-feat button:hover{border-color:var(--accent);color:var(--text);border-style:solid}.swatches{grid-template-columns:repeat(8,1fr);gap:3px;display:grid}.swatches button{aspect-ratio:1;cursor:pointer;border:2px solid #0000;border-radius:5px}.swatches button:hover{border-color:#fff}.color-row{align-items:center;gap:6px;display:flex}.color-row input[type=color]{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:6px;flex:none;width:34px;height:28px;padding:0}input[type=range]{width:100%;accent-color:var(--accent)}.slider{color:var(--dim);grid-template-columns:70px 1fr 36px;align-items:center;gap:6px;display:grid}.slider span:last-child{text-align:right;font:11px var(--mono);color:var(--text)}.dims{background:var(--bg);font:12px var(--mono);border-radius:7px;justify-content:space-between;padding:6px 10px;display:flex}.dims b{color:var(--accent-2);font-weight:600}.actions{grid-template-columns:1fr 1fr;gap:4px;display:grid}.actions .btn{text-align:left;font-size:11.5px}.layers{margin:0;padding:4px 0;list-style:none}.layer{cursor:pointer;border-left:2px solid #0000;align-items:center;gap:4px;height:28px;padding-right:6px;display:flex}.layer:hover{background:var(--panel-2)}.layer.sel{background:#7c5cff26}.layer.active{border-left-color:var(--accent)}.layer.drop-in{box-shadow:inset 0 0 0 1px var(--accent)}.layer.drop-above{box-shadow:inset 0 2px 0 var(--accent)}.layer .tw{text-align:center;width:14px;color:var(--faint);cursor:pointer;flex:none}.layer .ty{text-align:center;width:16px;color:var(--dim);flex:none;font-size:11px}.layer .sw{border-radius:3px;flex:none;width:10px;height:10px}.layer .nm{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.layer .nm input{background:var(--bg);border:1px solid var(--accent);border-radius:4px;width:100%;padding:1px 4px}.layer .tg{color:var(--faint);cursor:pointer;background:0 0;border:0;width:20px;padding:0;font-size:12px}.layer .tg.on{color:var(--text)}.layer .tg:hover{color:#fff}.layer.off .nm,.layer.off .sw{opacity:.4}.layer.tool .nm{color:#ff8aa0;font-style:italic}.layers-foot{border-top:1px solid var(--line);background:var(--panel);gap:4px;padding:6px 8px;display:flex;position:sticky;bottom:0}.empty-list{color:var(--faint);text-align:center;padding:14px}.history{margin:0;padding:4px 0;list-style:none}.history li{cursor:pointer;color:var(--dim);align-items:center;gap:8px;padding:5px 12px;display:flex}.history li:hover{background:var(--panel-2);color:var(--text)}.history li.now{color:var(--text);background:#7c5cff26}.history li.future{opacity:.45}.history li .n{font:10px var(--mono);color:var(--faint);width:18px}.lib-tabs{flex-wrap:wrap;gap:4px;padding:8px 10px;display:flex}.lib-grid{grid-template-columns:repeat(4,1fr);gap:6px;padding:0 10px 10px;display:grid}.lib-grid.three{grid-template-columns:repeat(3,1fr)}.tile{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;color:var(--dim);text-align:center;border-radius:9px;flex-direction:column;align-items:center;gap:3px;padding:4px;font-size:10.5px;display:flex}.tile:hover{border-color:var(--accent);color:var(--text)}.tile.active{border-color:var(--accent-2);color:var(--text)}.tile img,.tile .thumb{aspect-ratio:1;object-fit:cover;width:100%;color:var(--text);background:#0b0d12;border-radius:6px;place-items:center;font-size:22px;display:grid}.lib-cat{color:var(--faint);text-transform:uppercase;letter-spacing:.08em;padding:8px 12px 4px;font-size:10.5px}.ai-wrap{flex-direction:column;gap:8px;padding:10px 12px;display:flex}.ai-status{background:var(--bg);border:1px solid var(--line);color:var(--dim);border-radius:7px;padding:6px 9px;font-size:11.5px}.ai-status.ok{color:var(--accent-2);border-color:#00e0b844}.ai-status.off{color:var(--warn);border-color:#ffb54744}textarea.prompt{background:var(--bg);border:1px solid var(--line);resize:vertical;border-radius:8px;width:100%;min-height:64px;padding:8px 10px}.progress{color:var(--dim);flex-direction:column;gap:4px;font-size:11.5px;display:flex}.progress .bar{background:var(--bg);border-radius:999px;height:5px;overflow:hidden}.progress .bar i{background:linear-gradient(90deg, var(--accent), var(--accent-2));width:0;height:100%;transition:width .4s;display:block}.progress.indeterminate .bar i{width:30%;animation:1.2s ease-in-out infinite slide}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(340%)}}.concepts{grid-template-columns:1fr 1fr;gap:6px;display:grid}.concepts:empty{display:none}.concepts button{cursor:pointer;aspect-ratio:1;background:#fff;border:2px solid #0000;border-radius:9px;padding:0;overflow:hidden}.concepts button img{object-fit:cover;width:100%;height:100%;display:block}.concepts button:hover{border-color:var(--accent)}.concepts button.active{border-color:var(--accent-2);box-shadow:0 0 14px #00e0b866}.chips{flex-wrap:wrap;gap:5px;display:flex}.chips button{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;color:var(--dim);border-radius:999px;padding:3px 9px;font-size:11px}.chips button:hover{border-color:var(--accent-2);color:var(--text)}.ai-log{font:11px var(--mono);color:var(--dim);background:var(--bg);white-space:pre-wrap;border-radius:7px;max-height:120px;padding:6px 8px;overflow-y:auto}.check{cursor:pointer;color:var(--dim);align-items:center;gap:7px;display:flex}.check input{accent-color:var(--accent)}#status{border-top:1px solid var(--line);color:var(--faint);background:#11131a;grid-area:status;align-items:center;gap:16px;padding:0 12px;font-size:11px;display:flex}#statusTip{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}#statusMeasure{color:var(--accent-2);font-family:var(--mono)}#modal{z-index:80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;place-items:center;display:grid;position:fixed;inset:0}.modal-card{background:var(--panel);border:1px solid var(--line);-webkit-user-select:text;user-select:text;border-radius:16px;flex-direction:column;gap:10px;width:min(560px,94vw);max-height:88vh;padding:20px;display:flex;overflow-y:auto;box-shadow:0 30px 80px #000a}.modal-card.wide{width:min(1100px,96vw)}.modal-card h2{margin:0 0 4px;font-size:17px}.modal-card .report{background:var(--bg);border-radius:10px;grid-template-columns:auto 1fr;gap:4px 14px;padding:10px 12px;display:grid}.modal-card .report span:nth-child(odd){color:var(--dim)}.modal-card .foot{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.lib-list{flex-direction:column;gap:4px;max-height:50vh;display:flex;overflow-y:auto}.lib-list .item{background:var(--bg);border-radius:8px;align-items:center;gap:8px;padding:8px 10px;display:flex}.lib-list .item .nm{flex:1;font-weight:600}.help-grid{grid-template-columns:auto 1fr;gap:4px 14px;display:grid}.steps{flex-direction:column;gap:6px;margin:0;padding-left:20px;display:flex}.url{font:600 15px var(--mono);color:var(--accent-2);background:var(--bg);-webkit-user-select:all;user-select:all;border-radius:8px;padding:8px 10px}.render-stage{background:repeating-conic-gradient(#1a1d25 0 25%, #14171e 0 50%) 0 0 / 20px 20px;border-radius:10px;place-items:center;min-height:300px;display:grid;position:relative;overflow:hidden}.render-stage canvas{max-width:100%;max-height:62vh;display:block}.render-meta{font:11px var(--mono);background:#000a;border-radius:999px;padding:4px 10px;position:absolute;bottom:10px;left:10px}#selbox{pointer-events:none;z-index:4;background:#ffb54714;border:1px dashed #ffb547;display:none;position:absolute}.mode-chip{color:#111;letter-spacing:.08em;z-index:3;pointer-events:none;background:#ff9a1fdd;border-radius:999px;padding:4px 14px;font-weight:800;position:absolute;top:10px;left:50%;transform:translate(-50%)}.modal-readout{font:600 14px var(--mono);z-index:5;pointer-events:none;background:#11131aee;border:1px solid #ff9a1f;border-radius:10px;padding:8px 16px;position:absolute;bottom:60px;left:50%;transform:translate(-50%)}.paint-cursor{pointer-events:none;z-index:4;border:1.5px solid #fff;border-radius:50%;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #0008}
