*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #06090f;--panel: #080d15;--border: #102a38;--text: #9fd8e8;--text-dim: #47708a;--text-faint: #2c4b5e;--accent: #4fd8ff;--accent-bg: #0c2f40;--accent-border: #1d5a75;--error: #ff7b6b}body{font-family:SF Mono,ui-monospace,Menlo,Consolas,monospace;background:var(--bg);color:var(--text);overflow:hidden}.app{display:flex;flex-direction:column;height:100vh}.header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--panel)}.header h1{font-size:14px;letter-spacing:2px;color:var(--accent);text-transform:uppercase;font-weight:600}.header-actions{display:flex;gap:8px;align-items:center}button{background:var(--accent-bg);color:var(--accent);border:1px solid var(--accent-border);padding:6px 14px;font:600 11px/1 inherit;letter-spacing:1px;text-transform:uppercase;cursor:pointer;border-radius:3px}button:hover{background:#10425a}.settings{position:relative}.settings summary{list-style:none;cursor:pointer;background:var(--accent-bg);border:1px solid var(--accent-border);padding:6px 14px;font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--accent);border-radius:3px}.settings-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:20;background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:12px 14px;display:flex;flex-direction:column;gap:10px;min-width:220px;font-size:11px}.settings-pop label{display:flex;align-items:center;gap:8px;color:var(--text-dim)}.settings-pop .snap-step{width:52px}.main{display:flex;flex:1;min-height:0}.panel{width:330px;min-width:0;flex-shrink:0;display:flex;flex-direction:column;border-right:1px solid var(--border);background:var(--panel);overflow-y:auto;overflow-x:hidden;transition:width .22s ease}.panel.collapsed{width:0;border-right:none}.panel>*{min-width:300px}.sidebar-toggle{position:absolute;top:12px;left:12px;z-index:10;padding:6px 10px;font-size:13px;line-height:1;opacity:.75}.sidebar-toggle:hover{opacity:1}.viewport{flex:1;position:relative;min-width:0}.viewport canvas{display:block}.viewport-hint{position:absolute;bottom:12px;right:16px;font-size:10px;color:var(--text-faint);letter-spacing:1px;pointer-events:none}.upload-zone{margin:12px;padding:16px;border:1px dashed var(--accent-border);border-radius:4px;text-align:center;font-size:11px;color:var(--text-dim);cursor:pointer;transition:background .15s,color .15s}.upload-zone:hover,.upload-zone.over{background:var(--accent-bg);color:var(--accent)}.empty-hint{padding:20px 16px;font-size:11px;color:var(--text-faint)}.empty-hint p{margin-bottom:10px;line-height:1.5}.demo-btn{width:100%;padding:10px;margin-bottom:8px}.demo-note{color:var(--text-faint);font-size:10px}.part-list{list-style:none}.part-list li{display:flex;align-items:center;gap:6px;padding:7px 12px;font-size:12px;cursor:pointer;border-left:2px solid transparent}.part-list li:hover{background:#0a1420}.part-list li.selected{background:#0c1c2c;border-left-color:var(--accent)}.part-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{background:none;border:none;padding:2px 4px;font-size:12px;color:var(--text-dim);text-transform:none;letter-spacing:0}.icon:hover{background:none;color:var(--accent)}.icon.eye.off{color:var(--text-faint)}.icon.active{color:var(--accent)}.icon.danger:hover{color:var(--error)}.chip{font-size:10px;padding:2px 6px;border-radius:8px;white-space:nowrap}.chip.ready{color:#7be8a8;background:#0a2418}.chip.compiling{color:var(--accent);background:var(--accent-bg)}.chip.queued{color:var(--text-dim);background:#0a1420}.chip.error{color:var(--error);background:#2c1210}.library-panel{border-top:1px solid var(--border);padding:12px}.library-panel h2{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--text-dim);margin-bottom:10px;display:flex;align-items:center;gap:6px}.library-panel .info{cursor:help;color:var(--text-faint)}.library-list{list-style:none;margin-bottom:8px}.library-list li{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:11px}.lib-path{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.lib-size{color:var(--text-faint);font-size:10px}.lib-actions{display:flex;gap:8px;margin-top:8px}.lib-actions button{padding:5px 12px;font-size:10px}.inspector,.compile-log{border-top:1px solid var(--border);padding:12px}.inspector h2,.compile-log h2{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--text-dim);margin-bottom:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hint{font-size:11px;color:var(--text-faint);line-height:1.5}.hint.lock{color:#d8b24f;margin-bottom:8px}.axis-row{display:flex;align-items:center;gap:6px;margin-bottom:8px}.axis-label{font-size:10px;color:var(--text-dim);width:74px;flex-shrink:0}.axis-row label{display:flex;align-items:center;gap:3px;font-size:10px;color:var(--text-dim)}input[type=number]{width:56px;background:#0a1420;border:1px solid var(--border);color:var(--text);font:11px inherit;padding:4px 5px;border-radius:3px}input[type=number]:disabled{opacity:.4}input[type=number]:focus{outline:1px solid var(--accent-border)}.compile-log pre{font-size:10px;line-height:1.5;color:var(--text-dim);white-space:pre-wrap;max-height:140px;overflow-y:auto}.explode-slider{position:absolute;bottom:18px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:#080d15d9;border:1px solid var(--border);border-radius:20px;padding:8px 18px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.explode-slider span{font-size:9px;letter-spacing:1.5px;color:var(--text-faint)}.explode-slider span.on{color:var(--accent)}.explode-slider input[type=range]{width:220px;accent-color:var(--accent);cursor:pointer}
