:root{--bg: #0e0f13;--panel: #16171d;--panel2: #1c1d25;--border: #272933;--text: #d3d6dd;--text-dim: #8b8f9c;--accent: #e0a458;--accent-dim: #9c7440;--danger: #d96a6a;--radius: 8px;--topbar-h: 52px;--transport-h: 58px;--panel-w: 304px;font-size:14px}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%;overflow:hidden}body{background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}#app{display:flex;flex-direction:column}#topbar{height:var(--topbar-h);display:flex;align-items:center;gap:14px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border);flex:0 0 auto}#brand{font-weight:800;letter-spacing:.12em;font-size:15px;color:var(--text);white-space:nowrap}#brand span{color:var(--accent);font-weight:400}#presets{display:flex;gap:8px;overflow-x:auto;flex:1 1 auto;padding:4px 2px;scrollbar-width:thin}.preset{flex:0 0 auto;width:64px;cursor:pointer;text-align:center;border:1px solid transparent;border-radius:6px;padding:3px 2px 2px;transition:border-color .15s,background .15s}.preset:hover{border-color:var(--accent-dim);background:var(--panel2)}.preset canvas{width:44px;height:44px;border-radius:5px;display:block;margin:0 auto 2px;background:#efece4}.preset .pname{font-size:9px;color:var(--text-dim);line-height:1.15;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tb-group{display:flex;gap:6px;align-items:center;flex:0 0 auto}.tb-btn{background:var(--panel2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 11px;font-size:12px;cursor:pointer;white-space:nowrap}.tb-btn:hover{border-color:var(--accent-dim)}.tb-btn.active{border-color:var(--accent);color:var(--accent)}.drawer-btn{display:none}main{flex:1 1 auto;display:flex;min-height:0;position:relative}.panel{width:var(--panel-w);flex:0 0 auto;background:var(--panel);overflow-y:auto;overflow-x:hidden;padding:10px 12px 28px;scrollbar-width:thin}#panel-left{border-right:1px solid var(--border)}#panel-right{border-left:1px solid var(--border)}#viewport{flex:1 1 auto;position:relative;min-width:0;background:#000}#viewport canvas.webgl{display:block;width:100%;height:100%}#fps{position:absolute;top:8px;right:10px;font-size:11px;color:var(--text-dim);font-variant-numeric:tabular-nums;background:#0e0f138c;padding:2px 7px;border-radius:4px;pointer-events:none}#toast{position:absolute;bottom:14px;left:50%;transform:translate(-50%);background:#16171df0;border:1px solid var(--border);color:var(--text);padding:8px 16px;border-radius:6px;font-size:12.5px;pointer-events:none;transition:opacity .3s;max-width:70%;text-align:center}#toast.hidden{opacity:0}#fatal{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text);padding:40px;text-align:center;font-size:15px;line-height:1.6}#fatal.hidden{display:none}#export-menu{position:absolute;top:8px;right:10px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:12px;width:250px;z-index:30;box-shadow:0 8px 30px #00000080}#export-menu.hidden{display:none}#export-menu h4{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);margin:10px 0 6px}#export-menu h4:first-child{margin-top:0}.em-row{display:flex;gap:6px;margin-bottom:6px;align-items:center}.em-row button{flex:1;background:var(--panel2);border:1px solid var(--border);color:var(--text);border-radius:5px;padding:6px 4px;font-size:11.5px;cursor:pointer}.em-row button:hover{border-color:var(--accent-dim)}.em-row label{font-size:11.5px;color:var(--text-dim);display:flex;gap:6px;align-items:center;cursor:pointer}.folder{margin-bottom:8px;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.folder>.fhead{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:var(--panel2);cursor:pointer;user-select:none;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text)}.folder>.fhead .chev{color:var(--text-dim);font-size:10px;transition:transform .15s}.folder.closed>.fhead .chev{transform:rotate(-90deg)}.folder>.fbody{padding:9px 10px 4px}.folder.closed>.fbody{display:none}.folder.advanced>.fhead{color:var(--text-dim)}.ctl{display:flex;align-items:center;gap:8px;margin-bottom:8px;min-height:22px}.ctl>label{flex:0 0 108px;font-size:11.5px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:default}.ctl input[type=range]{flex:1 1 auto;min-width:0;appearance:none;-webkit-appearance:none;height:4px;border-radius:2px;background:#2c2e39;outline:none;cursor:pointer}.ctl input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;border-radius:50%;background:var(--accent);border:2px solid #14151a;cursor:grab}.ctl input[type=range]::-moz-range-thumb{width:11px;height:11px;border-radius:50%;background:var(--accent);border:2px solid #14151a}.ctl .num{flex:0 0 48px;width:48px;min-width:0;font-size:11px;font-variant-numeric:tabular-nums;color:var(--text);background:var(--panel2);border:1px solid var(--border);border-radius:4px;text-align:right;padding:2px 5px}.ctl select{flex:1;background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:5px;padding:4px 6px;font-size:12px}.ctl input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}.ctl input[type=color]{width:34px;height:24px;border:1px solid var(--border);border-radius:4px;background:none;padding:0;cursor:pointer}.ctl .btn,.wide-btn{background:var(--panel2);border:1px solid var(--border);color:var(--text);border-radius:5px;padding:5px 10px;font-size:11.5px;cursor:pointer}.ctl .btn:hover,.wide-btn:hover{border-color:var(--accent-dim)}.wide-btn{width:100%;margin-bottom:8px}.colorseq{margin-bottom:8px}.colorseq .seqrow{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.swatch{width:26px;height:26px;border-radius:5px;border:1px solid rgba(255,255,255,.18);cursor:pointer;position:relative}.swatch.seq:after{content:"×";position:absolute;top:-7px;right:-6px;font-size:11px;color:var(--text-dim);background:var(--panel2);border:1px solid var(--border);border-radius:50%;width:14px;height:14px;line-height:12px;text-align:center;opacity:0;transition:opacity .12s}.swatch.seq:hover:after{opacity:1}.swatch.add{background:var(--panel2);color:var(--text-dim);display:flex;align-items:center;justify-content:center;font-size:16px;border:1px dashed var(--border)}.palette-label{font-size:10px;color:var(--text-dim);margin:4px 0;text-transform:uppercase;letter-spacing:.06em}.swatch.pal{width:20px;height:20px;border-radius:4px}#transport{height:var(--transport-h);flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:0 14px;background:var(--panel);border-top:1px solid var(--border)}.t-btn{background:var(--panel2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 14px;font-size:12.5px;cursor:pointer;white-space:nowrap}.t-btn:hover{border-color:var(--accent-dim)}.t-btn.primary{background:var(--accent);color:#17120a;border-color:var(--accent);font-weight:700}.t-btn.primary.off{background:var(--panel2);color:var(--accent)}.t-btn.warn:hover{border-color:var(--danger);color:var(--danger)}.t-spacer{flex:1}.t-speed{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text-dim)}.t-speed input[type=range]{width:110px;appearance:none;-webkit-appearance:none;height:4px;border-radius:2px;background:#2c2e39}.t-speed input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid #14151a}#vol-wrap{display:flex;flex-direction:column;gap:3px;width:130px}#vol-wrap .vlabel{font-size:10px;color:var(--text-dim);display:flex;justify-content:space-between}#vol-bar{height:6px;background:#2c2e39;border-radius:3px;overflow:hidden}#vol-fill{height:100%;background:var(--accent);width:100%;transition:width .2s}@media (max-width: 1180px){.drawer-btn{display:inline-block}.panel{position:absolute;top:0;bottom:0;z-index:20;transform:translate(-110%);transition:transform .2s ease;box-shadow:0 0 30px #00000080}#panel-left{left:0}#panel-right{right:0;transform:translate(110%)}.panel.open{transform:translate(0)}#presets{max-width:40vw}}
