:root{--bg: #0e1116;--panel: #161b22;--panel2: #1c232d;--line: #2a323d;--text: #e6edf3;--muted: #8b97a7;--accent: #4f9dff;--accent2: #38c172;--danger: #ff5d5d}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);overflow:hidden}.app{height:100vh;display:flex;flex-direction:column}.topbar{height:52px;flex:0 0 52px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:linear-gradient(90deg,#131922,#0f141b);border-bottom:1px solid var(--line)}.brand{font-size:18px;display:flex;align-items:center;gap:8px}.brand .tag{font-size:12px;color:var(--muted);font-weight:400;margin-left:6px}.brand .ver{font-size:11px;font-weight:700;color:#07203f;background:linear-gradient(90deg,#4f9dff,#38c172);padding:2px 7px;border-radius:10px;margin-left:4px}.top-actions{display:flex;align-items:center;gap:12px}.flybtn{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 12px;cursor:pointer}.flybtn.on{background:var(--accent);border-color:var(--accent);color:#07203f;font-weight:600}.layout{flex:1;display:grid;grid-template-columns:320px 6px 1fr 6px 400px;min-height:0}.col-resizer{background:var(--line);cursor:col-resize;transition:background .12s}.col-resizer:hover{background:var(--accent)}.sidebar{background:var(--panel);border-right:1px solid var(--line);overflow-y:auto;padding:14px}.sidebar h2{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:18px 0 8px}.sidebar h2:first-child{margin-top:0}.feature{background:var(--panel2);border:1px solid var(--line);border-radius:10px;margin-bottom:10px;overflow:hidden}.feature.disabled{opacity:.55}.feature-head{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:#20283340}.feature-title{display:flex;align-items:center;gap:8px;font-weight:600;cursor:pointer}.feature-body{padding:10px;display:flex;flex-direction:column;gap:9px}.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.field.row{flex-direction:row;align-items:center;gap:10px}.field b{color:var(--text);float:right}.field span{display:block}.field input[type=range]{width:100%;accent-color:var(--accent)}.field input[type=text]{background:#0e141b;border:1px solid var(--line);border-radius:6px;color:var(--text);padding:6px 8px}.field input[type=color]{width:100%;height:26px;border:1px solid var(--line);border-radius:6px;background:none;cursor:pointer}.field input[type=number]{background:#0e141b;border:1px solid var(--line);border-radius:6px;color:var(--text);padding:6px 8px;width:100%}.layers-cap{font-size:11px;color:var(--muted);margin:8px 0 4px}.layer-row{display:flex;align-items:center;gap:6px;margin-bottom:5px}.layer-row input[type=color]{width:34px;height:24px;border:1px solid var(--line);border-radius:5px;background:none;padding:0}.layer-row .layer-th{width:56px;background:#0e141b;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:4px 6px}.layer-name{flex:1;font-size:12px;color:var(--muted);text-transform:capitalize}.layer-tex{flex:1;min-width:0;background:#0e141b;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:4px 6px;font-size:11.5px}.tex-glow{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:3px;white-space:nowrap}.swatch{width:22px;height:18px;border-radius:4px;border:1px solid var(--line);display:inline-block}.script-ok{color:var(--accent2);font-size:12px;margin:6px 0 0}.cm-status{font-size:11px}.cm-status.ok{color:var(--accent2)}.cm-status.bad{color:var(--danger)}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px}.feature-tools{display:flex;gap:2px}.things-head{display:flex;align-items:center;justify-content:space-between}.ultra-badge{margin-left:4px;font-size:11px}.style-row{display:flex;gap:6px;margin-bottom:8px}.mini{flex:1;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:6px;padding:5px 6px;font-size:11px;cursor:pointer}.mini:hover{border-color:var(--accent)}.mini.danger:hover{border-color:var(--danger);color:var(--danger)}.script{width:100%;min-height:150px;background:#0a0e13;border:1px solid var(--line);border-radius:8px;color:#b8e6c4;font-family:Consolas,monospace;font-size:11.5px;line-height:1.45;padding:8px;resize:vertical;white-space:pre}.script-err{color:var(--danger);font-size:12px;margin:6px 0 0;word-break:break-word}.mini:disabled{opacity:.4;cursor:default}.place-toggle{width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:9px;cursor:pointer;font-weight:600}.place-toggle.on{background:var(--accent);border-color:var(--accent);color:#07203f}.hint.place{background:#16314fdd;border-color:var(--accent);color:#cfe6ff}.selpanel{position:absolute;top:12px;right:12px;width:232px;max-width:calc(100% - 24px);background:#0f151ea8;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 28px #00000073;z-index:20;display:flex;flex-direction:column;max-height:calc(100% - 24px);overflow:hidden}.selpanel-body{padding:0 12px 12px;overflow-y:auto}.selpanel.min{width:180px}.selpanel-head{display:flex;align-items:center;gap:6px;padding:9px 12px;cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;border-bottom:1px solid var(--line)}.selpanel.min .selpanel-head{border-bottom:none}.selpanel-head strong{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selpanel-head .grip{color:var(--muted);font-size:13px;cursor:move}.selpanel-head .head-btns{display:flex;gap:2px}.seg{display:flex;gap:4px;margin-bottom:10px}.seg button{flex:1;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:6px;padding:6px;font-size:12px;cursor:pointer}.seg button.on{background:var(--accent);border-color:var(--accent);color:#07203f;font-weight:600}.sel-field{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted);margin-bottom:7px}.sel-field.row{flex-direction:row;align-items:center;justify-content:space-between}.sel-field b{color:var(--text)}.sel-field input[type=range]{width:100%;accent-color:var(--accent)}.sel-field select{background:#0e141b;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:5px}.sel-field input[type=color]{width:50px;height:24px;border:1px solid var(--line);border-radius:5px;background:none}.sel-field input.sel-num{width:92px;background:#0e141b;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:4px 6px;font-size:12px}.sel-row{display:flex;gap:5px;margin-bottom:6px}.sel-row button{flex:1;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:6px;padding:6px 4px;font-size:11.5px;cursor:pointer}.sel-row button:hover{border-color:var(--accent)}.sel-row button.danger:hover{border-color:var(--danger);color:var(--danger)}.sel-cap{font-size:11px;color:var(--muted);margin:4px 0 3px}.sel-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin-bottom:7px}.sel-grid label{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.sel-grid input{width:100%;min-width:0;background:#0e141b;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:5px 6px;font-size:12px}.scene-row{display:flex;align-items:center;justify-content:space-between;background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:6px 9px;margin-bottom:5px;font-size:12.5px}.scene-row b{color:var(--accent)}.cm{border:1px solid var(--line);border-radius:8px;padding:7px;margin-bottom:8px;background:#0e141b}.cm-head{display:flex;align-items:center;gap:4px}.cm-name{flex:1;background:#0e141b;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:5px 7px}.place-line{margin:4px 0}.clear{font-size:11px;color:var(--muted)}.clear:hover{color:var(--danger)}.seed-row{display:flex;gap:6px}.seed-row input{flex:1}.dice{background:var(--panel);border:1px solid var(--line);border-radius:6px;color:var(--text);cursor:pointer;padding:0 8px}.field select{background:#0e141b;border:1px solid var(--line);border-radius:6px;color:var(--text);padding:6px 8px}.chip{background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:20px;padding:6px 10px;font-size:12px;cursor:pointer}.chip:hover{border-color:var(--accent)}.x{background:none;border:none;color:var(--muted);cursor:pointer;font-size:14px}.x:hover{color:var(--danger)}.stage{position:relative;min-width:0}.stage canvas{display:block;width:100%!important;height:100%!important}.stage>.r3f-canvas{width:100%;height:100%}.hint{position:absolute;bottom:12px;left:50%;transform:translate(-50%);background:#0b0f14cc;border:1px solid var(--line);color:var(--muted);font-size:12px;padding:7px 14px;border-radius:20px;pointer-events:none;white-space:nowrap}.export{background:var(--panel);border-left:1px solid var(--line);overflow-y:auto;padding:14px;display:flex;flex-direction:column}.export h2{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:14px 0 8px}.export h2:first-child{margin-top:0}.export button,.filebtn{background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:8px 10px;cursor:pointer;font-size:13px}.export button:hover,.filebtn:hover{border-color:var(--accent)}.project-row{display:flex;gap:8px;margin-bottom:8px}.project-row button,.project-row .filebtn{flex:1;text-align:center}.filebtn{display:inline-flex;align-items:center;justify-content:center}.model-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-bottom:8px}.model-grid button{text-align:center}.model-grid button:disabled{opacity:.5}.search{width:100%;background:#0e141b;border:1px solid var(--line);border-radius:8px;color:var(--text);padding:8px 10px;margin-bottom:10px}.cat{margin-bottom:10px}.cat-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:4px 0}.targets{display:grid;grid-template-columns:1fr 1fr;gap:6px}.target{display:flex;align-items:center;gap:6px;text-align:left;font-size:12px}.target.sel{border-color:var(--accent);background:#16314f}.ticon{font-size:14px}.code-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.code-actions{display:flex;gap:4px}.code-actions button{padding:6px 8px;font-size:12px}.code{flex:1;min-height:240px;background:#0a0e13;border:1px solid var(--line);border-radius:8px;color:#b8e6c4;font-family:Consolas,SFMono-Regular,monospace;font-size:11.5px;line-height:1.45;padding:10px;resize:vertical;white-space:pre;overflow:auto}.canvas-fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:20px}.muted{color:var(--muted)}.small{font-size:12px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000a;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--panel);border:1px solid var(--line);border-radius:12px;width:min(560px,92vw);max-height:80vh;overflow:auto;padding:18px}.modal-head{display:flex;align-items:center;justify-content:space-between}.tutorial{white-space:pre-wrap;background:#0a0e13;border:1px solid var(--line);border-radius:8px;padding:14px;line-height:1.55;font-size:13px;color:var(--text)}.primary{background:var(--accent);border:none;color:#07203f;font-weight:600;border-radius:8px;padding:9px 16px;cursor:pointer;margin-top:12px}
