: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 1fr 400px;min-height:0}.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}.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}.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}.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}
