:root{--bg: #0b0b0d;--bg2: #131316;--bg3: #1a1a1f;--border: rgba(255, 255, 255, .055);--border2: rgba(255, 255, 255, .1);--text: #ddd8cc;--muted: rgba(221, 216, 204, .32);--accent: rgba(255, 255, 255, .55);--danger: #e84a4a;--mono: "Martian Mono", ui-monospace, monospace;--serif: "Instrument Serif", serif;font-family:var(--mono)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--mono)}#app{display:flex;flex-direction:column;min-height:100vh;max-width:1100px;margin:0 auto;padding:14px 18px;gap:12px}.topbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-bottom:10px;border-bottom:.5px solid var(--border)}.topbar h1{margin:0;font-family:var(--serif);font-size:22px;font-style:italic;font-weight:400;letter-spacing:.3px}.file-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.btn{font-family:var(--mono);background:transparent;color:var(--muted);border:.5px solid var(--border2);border-radius:5px;padding:7px 12px;font-size:10px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .13s}.btn:hover:not(:disabled){color:var(--text);border-color:var(--accent)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn.on{background:#ffffff14;color:var(--text);border-color:var(--accent)}.btn.hidden{display:none}select.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:22px;background:var(--bg2);max-width:190px}.filename{color:var(--muted);font-size:9px;letter-spacing:.05em}.activity{width:6px;height:6px;border-radius:50%;background:#ffffff1f;transition:background .12s}.activity.on{background:var(--accent)}.panel{-webkit-user-select:none;user-select:none;background:var(--bg2);border:.5px solid var(--border);border-radius:8px;padding:16px 18px;overflow-x:auto}.device{display:flex;align-items:flex-start;gap:26px;min-width:940px}.device-left{display:flex;flex-direction:column;gap:12px;padding-right:22px;border-right:.5px solid var(--border);align-self:stretch}.lgroup{display:flex;flex-direction:column;gap:6px}.gran-group-label{font-size:8px;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}.lrow{display:flex;gap:3px;flex-wrap:wrap}.nk{position:relative;font-family:var(--mono);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:26px;height:24px;padding:0 6px;border-radius:3px;border:.5px solid var(--border2);background:transparent;color:var(--muted);cursor:pointer;transition:all .1s;white-space:nowrap}.nk.wide{min-width:42px}.nk-glyph{font-size:10px;line-height:1;letter-spacing:.04em}.nk:hover{color:var(--text);border-color:var(--accent)}.nk.on{background:#ffffff17;color:var(--text);border-color:var(--accent);box-shadow:inset 0 0 8px #ffffff0f}.nk-rec.on{background:#e84a4a24;border-color:#e84a4a80;color:#f0a0a0;box-shadow:inset 0 0 8px #e84a4a1f}.nk.hot,.kw.hot canvas.knob,.fw.hot canvas.fader{outline:.5px solid var(--accent);outline-offset:1px;border-radius:3px}.channels{display:flex;gap:14px}.ch{display:flex;flex-direction:column;align-items:center;gap:10px}.ch-body{display:flex;align-items:flex-start;gap:8px}.ch-btns{display:flex;flex-direction:column;gap:4px}.kw{display:flex;flex-direction:column;align-items:center;gap:4px}canvas.knob{cursor:ns-resize;touch-action:none;display:block}.kl{font-size:8px;letter-spacing:.06em;color:var(--muted);text-transform:uppercase;text-align:center}.kv{font-size:9px;font-weight:500;color:var(--text);min-width:34px;text-align:center;font-variant-numeric:tabular-nums}.fw{display:flex;flex-direction:column;align-items:center;gap:4px}canvas.fader{cursor:ns-resize;touch-action:none;display:block}.cc{display:none;font-size:7px;letter-spacing:.05em;color:var(--muted);text-align:center;line-height:1}#app.show-cc .cc{display:block}#app.show-cc .nk{height:28px}.monitor{background:var(--bg2);border:.5px solid var(--border);border-radius:8px;padding:10px 14px;height:200px;overflow-y:auto;font-size:10px;line-height:1.7;color:var(--muted);white-space:pre}.monitor.hidden{display:none}.mrow.known{color:var(--text)}
