:root{--bg: #0b0d0f;--panel: #121517;--panel-2: #16191c;--line: #23282c;--line-hi: #2f363b;--ink: #dfe6ea;--ink-dim: #8b969e;--ink-faint: #5a646b;--green: #00ae42;--green-hi: #17d060;--amber: #ffb454;--red: #e03131;--display: "Chakra Petch", sans-serif;--mono: "IBM Plex Mono", monospace;--topbar-grad: linear-gradient(180deg, #14171a, #101315);--statusbar-bg: #0d1012;--code-bg: #060809;--code-ink: #17d060;--on-green: #04160b;--weave: rgba(255, 255, 255, .012)}:root[data-theme=light]{--bg: #f4f5f2;--panel: #ffffff;--panel-2: #eef0ec;--line: #d8dcd5;--line-hi: #c2c8be;--ink: #1b2420;--ink-dim: #55605a;--ink-faint: #8b948e;--green: #009038;--green-hi: #007a30;--amber: #b26e00;--red: #c92a2a;--topbar-grad: linear-gradient(180deg, #ffffff, #f0f2ee);--statusbar-bg: #e9ebe6;--code-bg: #10221a;--code-ink: #4ade80;--on-green: #ffffff;--weave: rgba(0, 0, 0, .015)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--mono);font-size:13px;overflow:hidden;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:repeating-linear-gradient(45deg,var(--weave) 0 2px,transparent 2px 6px),repeating-linear-gradient(-45deg,var(--weave) 0 2px,transparent 2px 6px)}.studio{position:relative;z-index:1;height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:20px;height:58px;padding:0 16px;background:var(--topbar-grad);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;min-width:250px}.brand h1{font-family:var(--display);font-size:19px;font-weight:700;letter-spacing:.22em;color:var(--ink)}.brand h1:after{content:"_";color:var(--green);animation:blink 1.4s steps(2) infinite}@keyframes blink{50%{opacity:0}}.brand span{display:block;font-size:9.5px;letter-spacing:.14em;color:var(--ink-faint);text-transform:uppercase}.modebar{display:flex;gap:6px;margin-left:auto}.modebar .mode{font-family:var(--display);font-size:11px;font-weight:600;letter-spacing:.12em;color:var(--ink-dim);background:var(--panel-2);border:1px solid var(--line);padding:7px 12px;cursor:pointer;display:flex;align-items:center;gap:7px;transition:all .15s;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}.modebar .mode kbd{font-family:var(--mono);font-size:9px;color:var(--ink-faint);border:1px solid var(--line-hi);padding:0 4px;border-radius:2px}.modebar .mode:hover{color:var(--ink);border-color:var(--line-hi)}.modebar .mode.on{color:var(--on-green);background:var(--green);border-color:var(--green);box-shadow:0 0 18px #00ae4259}.modebar .mode.on kbd{color:var(--on-green);border-color:#00000059}.modebar .snap.on{color:var(--green-hi);background:var(--panel-2);border-color:var(--green);box-shadow:none}.actions{display:flex;align-items:center;gap:8px;margin-left:auto}.actions .divider{width:1px;height:22px;background:var(--line)}.actions button{font-family:var(--display);font-size:11px;font-weight:600;letter-spacing:.1em;padding:8px 13px;cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--ink-dim);transition:all .15s}.actions button:disabled{opacity:.35;cursor:not-allowed}.actions .ghost:hover:not(:disabled){color:var(--ink);border-color:var(--line-hi)}.actions .primary{color:var(--green-hi);border-color:#00ae4280}.actions .primary:hover:not(:disabled){background:#00ae421f;box-shadow:0 0 14px #00ae4240}.actions .print{color:var(--on-green);background:var(--green);border-color:var(--green);clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px)}.actions .print:hover{background:var(--green-hi);box-shadow:0 0 20px #00ae4280}.workspace{flex:1;display:flex;min-height:0}.viewport{flex:1;position:relative;min-width:0}.viewport canvas{display:block}.leftrail{width:208px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--line);padding:14px 12px;display:flex;flex-direction:column;gap:10px;overflow-y:auto}.leftrail.drag{outline:2px dashed var(--green);outline-offset:-6px}.rail-label{font-family:var(--display);font-size:10px;font-weight:700;letter-spacing:.28em;color:var(--ink-faint);border-bottom:1px solid var(--line);padding-bottom:6px}.prim-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.prim{display:flex;flex-direction:column;align-items:center;gap:6px;padding:11px 4px 9px;background:var(--panel-2);color:var(--ink-dim);border:1px solid var(--line);cursor:pointer;transition:all .15s}.prim svg{width:26px;height:26px}.prim span{font-size:9.5px;letter-spacing:.06em;text-transform:uppercase}.prim:hover{color:var(--green-hi);border-color:#00ae428c;transform:translateY(-1px);box-shadow:0 4px 14px #0006,0 0 10px #00ae421f}.import-btn{font-family:var(--display);font-weight:600;letter-spacing:.08em;font-size:12px;display:flex;flex-direction:column;gap:4px;align-items:center;padding:14px 8px;cursor:pointer;color:var(--ink);background:transparent;border:1px dashed var(--line-hi);transition:all .15s}.import-btn small{font-family:var(--mono);font-size:9.5px;color:var(--ink-faint);letter-spacing:.04em}.import-btn:hover{border-color:var(--green);color:var(--green-hi)}.rail-note{font-size:10px;line-height:1.5;color:var(--ink-faint)}.rail-footer{margin-top:auto;padding-top:10px}button.danger{width:100%;font-family:var(--display);font-size:10.5px;font-weight:600;letter-spacing:.12em;color:var(--red);background:transparent;border:1px solid rgba(224,49,49,.4);padding:8px;cursor:pointer;transition:all .15s}button.danger:hover:not(:disabled){background:#e031311f}button.danger:disabled{opacity:.3;cursor:not-allowed}.rightpanel{width:308px;flex-shrink:0;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column}.tabs{display:flex;border-bottom:1px solid var(--line)}.tabs button{flex:1;padding:11px 4px;font-family:var(--display);font-size:10px;font-weight:700;letter-spacing:.14em;color:var(--ink-faint);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all .15s}.tabs button:hover{color:var(--ink-dim)}.tabs button.on{color:var(--green-hi);border-bottom-color:var(--green);background:#00ae420d}.panelbody{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}.hint{font-size:11px;line-height:1.55;color:var(--ink-dim)}.hint.dim{color:var(--ink-faint);font-size:10px}.hint b{color:var(--ink)}.objlist{display:flex;flex-direction:column;gap:4px}.objrow{display:flex;align-items:center;gap:8px;padding:7px 8px;cursor:pointer;background:var(--panel-2);border:1px solid var(--line);transition:border-color .15s}.objrow:hover{border-color:var(--line-hi)}.objrow.sel{border-color:var(--green);box-shadow:inset 2px 0 0 var(--green)}.swatch{width:12px;height:12px;border-radius:2px;border:1px solid rgba(255,255,255,.18);flex-shrink:0}.objname{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px}.objrow select{font-family:var(--mono);font-size:10px;background:var(--bg);color:var(--ink-dim);border:1px solid var(--line);padding:3px 4px;cursor:pointer}.inspector{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:column;gap:9px}.obj-name{font-family:var(--display);font-size:13px;font-weight:600;letter-spacing:.04em;background:transparent;color:var(--ink);border:1px solid transparent;border-bottom:1px solid var(--line);padding:5px 2px}.obj-name:focus{outline:none;border-bottom-color:var(--green)}.vec3{display:grid;grid-template-columns:58px 1fr 1fr 1fr;gap:5px;align-items:center}.vec3-label{font-size:9.5px;letter-spacing:.1em;color:var(--ink-faint)}.ax{position:relative}.ax em{position:absolute;left:5px;top:50%;transform:translateY(-50%);font-style:normal;font-size:9px;pointer-events:none}.ax-x em{color:#ff6b6b}.ax-y em{color:var(--green-hi)}.ax-z em{color:#4dabf7}.ax input{width:100%;font-family:var(--mono);font-size:11px;background:var(--bg);color:var(--ink);border:1px solid var(--line);padding:5px 3px 5px 15px}.ax input:focus{outline:none;border-color:var(--green)}.ax input::-webkit-inner-spin-button{opacity:0}.btnrow{display:flex;gap:6px}.btnrow button{flex:1;font-family:var(--display);font-size:10px;font-weight:600;letter-spacing:.08em;padding:8px 4px;cursor:pointer;background:var(--panel-2);color:var(--ink-dim);border:1px solid var(--line);transition:all .15s}.btnrow button:hover{color:var(--green-hi);border-color:#00ae4280}.btnrow button.danger{color:var(--red);border-color:#e0313166}.btnrow button.danger:hover{background:#e031311f}.filaments{display:flex;flex-direction:column;gap:10px}.slot{background:var(--panel-2);border:1px solid var(--line);padding:9px;display:flex;flex-direction:column;gap:8px;position:relative}.slot:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:linear-gradient(180deg,var(--green),transparent);opacity:.5}.slot-head{display:flex;align-items:center;gap:8px}.slot-id{font-family:var(--display);font-weight:700;font-size:13px;color:var(--green-hi);min-width:24px}.slot-head input[type=color]{width:26px;height:26px;padding:0;border:1px solid var(--line-hi);background:transparent;cursor:pointer}.slot-brand{flex:1;font-family:var(--mono);font-size:10.5px;background:transparent;color:var(--ink);border:none;border-bottom:1px dashed var(--line);padding:3px 1px}.slot-brand:focus{outline:none;border-bottom-color:var(--green)}.slot-used{font-size:9px;letter-spacing:.08em;color:var(--ink-faint);text-transform:uppercase}.slot-used.on{color:var(--amber)}.slot-body{display:flex;gap:6px}.slot-body select{flex:1;font-family:var(--mono);font-size:10.5px;background:var(--bg);color:var(--ink-dim);border:1px solid var(--line);padding:5px;cursor:pointer}.printtab{display:flex;flex-direction:column;gap:12px}.form{display:flex;flex-direction:column;gap:7px}.form label{display:grid;grid-template-columns:92px 1fr;align-items:center;gap:8px;font-size:10px;letter-spacing:.08em;color:var(--ink-faint);text-transform:uppercase}.form input,.form select{font-family:var(--mono);font-size:11.5px;background:var(--bg);color:var(--ink);border:1px solid var(--line);padding:6px 7px}.form input:focus,.form select:focus{outline:none;border-color:var(--green)}.steps{padding-left:18px;display:flex;flex-direction:column;gap:8px}.steps li{font-size:11px;line-height:1.55;color:var(--ink-dim)}.steps li::marker{color:var(--green);font-family:var(--display);font-weight:700}.steps b{color:var(--ink)}.code{display:flex;align-items:stretch;gap:0;background:var(--code-bg);border:1px solid var(--line)}.code code{flex:1;font-size:10px;line-height:1.5;color:var(--code-ink);padding:9px;word-break:break-all}.code button{font-family:var(--display);font-size:9.5px;font-weight:700;letter-spacing:.1em;padding:0 11px;cursor:pointer;background:var(--panel-2);color:var(--ink-dim);border:none;border-left:1px solid var(--line)}.code button:hover{color:var(--green-hi)}.slotmap{display:flex;flex-wrap:wrap;gap:6px}.slotchip{display:flex;align-items:center;gap:6px;font-size:10px;padding:4px 8px;background:var(--panel-2);border:1px solid var(--line);color:var(--ink-dim)}.slotchip i{width:9px;height:9px;border-radius:2px;border:1px solid rgba(255,255,255,.2)}.statusbar{display:flex;align-items:center;gap:22px;height:30px;padding:0 14px;background:var(--statusbar-bg);border-top:1px solid var(--line);font-size:10px;letter-spacing:.06em;color:var(--ink-faint)}.stat{display:flex;align-items:center;gap:7px;white-space:nowrap}.stat .dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.35}}.stat.sel{color:var(--ink-dim);overflow:hidden;text-overflow:ellipsis}.stat.right{margin-left:auto;color:var(--green)}::-webkit-scrollbar{width:9px}::-webkit-scrollbar-track{background:var(--panel)}::-webkit-scrollbar-thumb{background:var(--line-hi);border:2px solid var(--panel);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--ink-faint)}@media (max-width: 980px){.leftrail{width:170px}.rightpanel{width:260px}.brand span{display:none}}@media (max-width: 1024px){.topbar{height:52px;padding:0 12px;gap:12px}.brand h1{font-size:16px}.brand span{font-size:8px}.leftrail{width:140px;padding:10px 8px;gap:8px}.rightpanel{width:240px}.prim-grid{grid-template-columns:1fr}.prim{padding:8px 3px}.prim svg{width:20px;height:20px}}@media (max-width: 639px){.studio{flex-direction:column}.topbar{height:48px;padding:0 10px;gap:8px}.brand h1{font-size:14px;letter-spacing:.15em}.brand h1:after{display:none}.modebar{order:3;width:100%;margin-left:0;padding-top:8px;border-top:1px solid var(--line);flex-wrap:wrap;gap:4px}.modebar .mode{flex:1;min-width:70px;padding:6px 8px;font-size:9px}.modebar .mode kbd{display:none}.actions{order:2;margin:0;flex-wrap:wrap;gap:4px}.actions button{flex:1;min-width:60px;padding:6px 8px;font-size:9px}.actions .divider{display:none}.workspace{flex-direction:column}.viewport{flex:1;min-height:0}.leftrail{width:100%;height:auto;max-height:120px;flex-direction:row;padding:8px;gap:6px;border-right:none;border-bottom:1px solid var(--line);overflow-x:auto;overflow-y:hidden}.rail-label{display:none}.prim-grid{display:flex;gap:5px;width:max-content}.prim{flex:0 0 auto;width:60px;height:60px;padding:6px 4px}.prim svg{width:18px;height:18px}.prim span{font-size:7px}.rightpanel{width:100%;height:auto;max-height:280px;border-left:none;border-top:1px solid var(--line);display:flex;flex-direction:column}.rightpanel .tabs{flex-wrap:wrap;gap:2px;overflow-x:auto}.rightpanel .tabs button{padding:6px 8px;font-size:8px;white-space:nowrap}.rightpanel .panelbody{flex:1;overflow-y:auto;font-size:11px}.objlist{max-height:80px;overflow-y:auto}.objrow{padding:4px}.inspector{display:none}.vec3-label{display:block;font-size:8px;margin-bottom:2px}.vec3 input{padding:3px 4px;font-size:9px}.filaments .slot{margin-bottom:8px}.slot-head{gap:4px;flex-wrap:wrap}.slot-id,.slot-used{font-size:8px}.statusbar{height:26px;padding:0 8px;gap:10px;font-size:9px}.stat{gap:4px}input,select,button{font-size:13px!important}}@media (max-height: 500px){.topbar{height:40px}.statusbar{height:24px}.leftail,.rightpanel{max-height:200px}}.aichat{display:flex;flex-direction:column;flex:1;min-height:0;gap:10px}.ai-log{flex:1;min-height:120px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:2px}.ai-msg{max-width:94%;padding:8px 10px;border:1px solid var(--line);border-radius:3px;font-size:11px;line-height:1.55}.ai-msg p{margin:0;white-space:pre-wrap}.ai-msg.user{align-self:flex-end;background:var(--green);color:var(--on-green);border-color:transparent}.ai-msg.assistant{align-self:flex-start;background:var(--bg);color:var(--ink)}.ai-msg.err{border-color:#b3402a;color:#e07a5f}.ai-tag{display:block;font-family:var(--mono);font-size:8px;letter-spacing:.14em;color:var(--green);margin-bottom:3px}.ai-added{display:inline-block;margin-top:6px;padding:2px 7px;font-family:var(--mono);font-size:9px;color:var(--code-ink);background:var(--code-bg);border-radius:2px}.ai-thinking i{animation:aiblink 1.2s infinite;font-style:normal}.ai-thinking i:nth-child(2){animation-delay:.2s}.ai-thinking i:nth-child(3){animation-delay:.4s}@keyframes aiblink{0%,60%,to{opacity:.2}30%{opacity:1}}.ai-chips{display:flex;flex-wrap:wrap;gap:5px}.ai-chips button{padding:4px 8px;font-size:9px;font-family:var(--mono);color:var(--ink-dim);background:transparent;border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:border-color .15s,color .15s}.ai-chips button:hover:not(:disabled){border-color:var(--green);color:var(--green)}.ai-chips button:disabled{opacity:.4;cursor:default}.ai-inputrow{display:flex;gap:6px}.ai-inputrow input{flex:1;min-width:0;padding:8px 10px;font-size:11px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:3px}.ai-inputrow input:focus{outline:none;border-color:var(--green)}.ai-inputrow button{padding:8px 12px;font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--on-green);background:var(--green);border:none;border-radius:3px;cursor:pointer;white-space:nowrap}.ai-inputrow button:disabled{opacity:.45;cursor:default}
