:root{color-scheme:dark;--bg: #0d0f14;--panel: #161a22;--inset: #11151c;--elev: #1b212c;--hover: #1c222d;--button: #232a36;--line: #262c38;--sel: #19324a;--text: #e6e9ef;--muted: #8a92a6;--accent: #6ea8fe;--accent-soft: #1b2533;--on-accent: #0d0f14}:root[data-theme=light]{color-scheme:light;--bg: #eef0f3;--panel: #ffffff;--inset: #e9ebf0;--elev: #ffffff;--hover: #e7eaef;--button: #f1f3f6;--line: #d8dce3;--sel: #d8e8fb;--text: #1b1f27;--muted: #5b6373;--accent: #2f6fe0;--accent-soft: #e4edfb;--on-accent: #ffffff}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.app{display:flex;flex-direction:column;height:100%}.app-header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--line);background:var(--panel)}.app-title{display:flex;align-items:center;gap:12px}.app-title h1{font-size:15px;font-weight:600;margin:0}.app-title .tag{color:var(--muted);font-size:11px;font-weight:400}.show-chip{color:var(--muted);font-size:12px;background:var(--hover);border:1px solid var(--line);padding:2px 8px;border-radius:999px}button{background:var(--button);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 10px;cursor:pointer;font-size:12px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}.dot{width:8px;height:8px;border-radius:50%;background:var(--muted);margin-left:12px;display:inline-block}.dot.open,.dot.ok{background:#38d39f}.dot.connecting,.dot.checking{background:#f0c14b}.dot.closed,.dot.error,.dot.down{background:#ef5a5a}.conn-wrap{position:relative}.conn-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.conn-pill .dot{margin-left:0}.conn-caret{font-size:9px;opacity:.7}.popover-backdrop{position:fixed;inset:0;z-index:40}.conn-popover{position:absolute;top:calc(100% + 6px);right:0;z-index:41;width:260px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px #00000073;padding:10px 12px;display:flex;flex-direction:column;gap:12px}.conn-pop-section{display:flex;flex-direction:column;gap:5px}.conn-pop-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.conn-row{display:flex;align-items:center;gap:8px;font-size:12px}.conn-row .dot{margin-left:0}.conn-row .muted{padding:0;margin-left:auto}.conn-row-sub{margin-left:16px}.link-button{background:none;border:none;padding:0;font-size:12px;color:var(--accent, #5a8cff);cursor:pointer}.link-button:hover{text-decoration:underline}.conn-master{display:flex;align-items:center;gap:8px}.conn-master input[type=range]{flex:1}.engine-banner{display:flex;align-items:center;gap:10px;padding:8px 14px;background:#2a2410;border-bottom:1px solid #5a4a1a;font-size:12px;color:#f0c14b}.engine-banner.login,.engine-banner.offline{background:#2a1414;border-bottom-color:#5a2a2a;color:#ef8a8a}.engine-banner-dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}.engine-banner-msg{flex:1}.engine-banner button{font-size:11px;padding:3px 10px}.settings-body{padding:14px;display:flex;flex-direction:column;gap:14px;max-width:560px;overflow:auto}.settings-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--panel)}.settings-card h3{margin:0 0 6px;font-size:13px}.settings-card p{margin:4px 0;font-size:12px}.settings-row{display:flex;gap:8px;align-items:center;margin-top:8px}.settings-row .text-input{flex:1}.settings-hint{color:var(--muted);font-size:11px}.settings-status{color:#38d39f;font-size:12px}.output-backends{list-style:none;margin:0;padding:0}.output-backends li{justify-content:space-between}.output-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.output-card-head h3{margin:0;font-size:13px}.usb-ports{display:flex;flex-direction:column;gap:8px;margin-top:8px}.usb-port{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--inset)}.usb-port .port-name{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.usb-port .grow{flex:1}.usb-port select{font-size:12px}.usb-port .badge{font-size:10px;font-weight:600;padding:1px 6px;border-radius:999px;background:#1d3a55;color:#9ecbff}.dot-ok{color:#38d39f}.dot-off{color:var(--muted)}.output-universe{margin-top:10px}.output-universe:first-of-type{margin-top:6px}.output-universe-label{font-size:12px;font-weight:600;color:var(--muted)}.output-backend-name{flex:1;font-size:12px}.output-advanced summary{cursor:pointer;font-size:13px;font-weight:600;list-style:revert}.output-advanced[open] summary{margin-bottom:4px}.output-advanced-note{margin:10px 0 4px;font-size:12px}.collab-list{list-style:none;margin:0;padding:0}.collab-list li{justify-content:space-between}.invite-code{font-family:monospace;font-size:14px;background:var(--sel);padding:2px 8px;border-radius:4px;user-select:all}.app-body{flex:1;display:flex;min-height:0}.stage-frame{flex:1;border:0;background:#000;min-width:0}.stage-host-inner{flex:1;position:relative;display:flex;min-width:0}.stage-cam-bar{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:flex;gap:6px;padding:5px 7px;background:#0d0f14b8;border:1px solid var(--line);border-radius:8px;backdrop-filter:blur(6px)}.stage-cam-bar button{font-size:11px;padding:3px 9px}.panel{width:300px;background:var(--panel);display:flex;flex-direction:column;min-height:0}.panel-left{border-right:1px solid var(--line)}.right-column{border-left:1px solid var(--line)}.panel-section{display:flex;flex-direction:column;min-height:0}.right-column>.panel-section:first-child{flex:1;min-height:0}.right-column>.inspector{border-top:1px solid var(--line);max-height:50%;overflow:auto}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap;padding:10px 12px;border-bottom:1px solid var(--line)}.panel-header h2{font-size:13px;margin:0}.panel-actions{display:flex;gap:6px}.fixture-list,.scene-list{list-style:none;margin:0;padding:6px;overflow:auto}.fixture-list li,.scene-list li{border-radius:6px}.scene-list li.active{background:var(--sel)}.scene-row{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;background:transparent;border:0;padding:7px 8px;text-align:left}.scene-row:hover{background:var(--hover);border-radius:6px}.fixture-name,.scene-name{font-weight:500}.fixture-meta,.scene-meta{color:var(--muted);font-size:11px}.fixture-roster,.fixture-roster .fixture-list{flex:1;min-height:0}.fixture-roster .fx-count{color:#38d39f;font-size:11px;font-weight:500;margin-left:7px}.fixture-roster .fx-sel{color:var(--accent);font-size:11px;font-weight:500;margin-left:7px}.fx-search{padding:6px 8px 4px}.fx-search .text-input{width:100%}.fixture-list .fixture-row{display:flex;align-items:center;gap:8px;padding:2px;border-radius:6px;border:1px solid transparent}.fixture-list li:hover .fixture-row{background:var(--hover)}.fixture-list li.active .fixture-row{background:#6ea8fe26;border-color:#6ea8fe66}.fx-power{flex:none;width:15px;height:15px;padding:0;border-radius:50%;background:transparent;border:1.5px solid var(--muted);cursor:pointer}.fx-power:hover{border-color:var(--text)}.fx-power.on{background:#38d39f;border-color:#38d39f;box-shadow:0 0 5px #38d39f80}.fx-power.on:hover{border-color:#38d39f}.fixture-pick{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:1px;background:transparent;border:0;padding:5px 6px;text-align:left}.fixture-pick:hover{border-color:transparent}.fixture-pick .fixture-name{font-size:12px;max-width:100%}.fixture-pick .fixture-name.dim{color:var(--muted)}.fixture-pick .fixture-meta{font-size:10px}.fx-groups{flex:none;padding:8px 8px 6px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:6px}.fx-groups-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.fx-groups-new{display:flex;gap:6px}.fx-groups-new .text-input{flex:1;min-width:0}.fx-groups-new button{flex:none;white-space:nowrap}.fx-groups-empty{margin:0;font-size:11px}.fx-group-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px;max-height:132px;overflow:auto}.fx-group-list li{display:flex;align-items:center;gap:4px}.fx-group-row{flex:1;min-width:0;display:flex;align-items:center;gap:8px;background:var(--inset);border:1px solid var(--line);border-radius:6px;padding:5px 8px;text-align:left}.fx-group-row:hover{border-color:var(--accent)}.fx-group-name{flex:1;min-width:0;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-group-count{flex:none;font-size:10px;color:var(--muted);background:var(--hover);border-radius:4px;padding:1px 6px}.fx-group-del{flex:none;padding:4px 8px;color:var(--muted)}.fx-group-del:hover{color:#ef5a5a;border-color:#ef5a5a}.scene-list li{display:flex;align-items:center;gap:2px;padding-right:4px}.scene-list li.sel{outline:1px solid var(--accent, #5b8def);outline-offset:-1px}.scene-row{flex:1;min-width:0}.scene-play,.scene-edit{flex:none;width:26px;padding:4px 0;background:transparent;border:0;color:var(--muted);cursor:pointer}.scene-play:hover,.scene-edit:hover{color:var(--text)}.scene-edit{font-size:13px}.scene-play.stop{color:#ff6b6b}.scene-play.stop:hover{color:#ff8e8e}.scene-layer{flex:none;width:22px;padding:4px 0;background:transparent;border:0;color:var(--muted);cursor:pointer;font-size:13px;opacity:.7}.scene-layer:hover{color:var(--accent, #5b8def);opacity:1}.scene-meta.playing{color:var(--accent, #5b8def);font-weight:600}.muted{color:var(--muted);padding:8px}.error{color:#ef5a5a;padding:8px 12px;margin:0}.pill{font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}.pill.on{color:#38d39f;border-color:#2a5a48}.pill.off{color:var(--muted)}.inspector-body{padding:10px 12px;display:flex;flex-direction:column;gap:12px}.field{display:flex;align-items:center;gap:8px}.field>label{width:64px;color:var(--muted);flex:none}.field input[type=range]{flex:1}.field input[type=color]{width:42px;height:26px;padding:0;border:1px solid var(--line);border-radius:6px;background:none}.presets{display:flex;gap:5px}.swatch{width:22px;height:22px;padding:0;border-radius:5px;border:1px solid rgba(255,255,255,.25)}.control-value{width:38px;text-align:right;color:var(--text);flex:none}.inspector-meta{color:var(--muted);font-size:11px;margin:0}.chan-section{display:flex;flex-direction:column;gap:7px;background:var(--elev);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.chan-section-head{font-size:11px;font-weight:600;color:var(--text);text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:8px}.chan-section-sub{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-top:6px}.atmo-cooldown{background:#d8b04a2e;color:#d8b04a;padding:2px 6px;border-radius:4px;font-size:10px;font-weight:600;letter-spacing:.04em}.solo-on{background:#c2e29a;color:#1a3210;border-color:#92c053}.motor-reset{background:#c8632a;color:#fff;border:1px solid #e08446;padding:6px 10px;border-radius:6px;font-size:11px;font-weight:600;cursor:pointer}.motor-reset:hover:not(:disabled){background:#d97532}.motor-reset:disabled{background:#4a3320;opacity:.6;cursor:not-allowed}.chan-mode,.inspector-tab{margin-left:auto}.placement-field input[type=range]{flex:1;min-width:0}.placement-card input[type=number]{width:56px;flex:none;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 6px}.placement-unit{color:var(--muted);flex:none;width:8px}.placement-multi{color:var(--muted);font-weight:500;text-transform:none;letter-spacing:0}.inspector-tab button{padding:2px 8px;font-size:10px}.chan-mode button{padding:2px 8px;font-size:10px;text-transform:none;letter-spacing:0}.chan-row{display:flex;align-items:center;gap:8px}.chan-name{width:96px;flex:none;color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chan-select{flex:1;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:3px 6px;font-size:11px}.chan-slider{flex:1}.head-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:6px}.head-cell{position:relative;height:40px;border-radius:6px;border:1px solid rgba(255,255,255,.18);cursor:pointer;overflow:hidden;display:flex;align-items:flex-end;justify-content:flex-end}.head-cell input[type=color]{position:absolute;inset:0;opacity:0;width:100%;height:100%;border:0;cursor:pointer}.head-num{font-size:9px;padding:1px 3px;color:#fff;background:#00000073;border-top-left-radius:4px}.flame-section{border-color:#5a2a30;background:#221318}.flame-armed{color:#ff7a3c;font-weight:700;font-size:10px;margin-left:6px;letter-spacing:.05em}.flame-safe{color:#38d39f;font-weight:700;font-size:10px;margin-left:6px;letter-spacing:.05em}.flame-arm{flex:1;background:#2a1d12;border-color:#5a3a1a;color:#ffb066}.flame-arm.on{background:#3a1f24;border-color:#ef5a5a;color:#ff9a7a}.flame-arm:hover{border-color:#ff7a3c}.flame-hint{margin:0;font-size:11px;color:#ff9a7a}.swatch.sel{outline:2px solid #fff;outline-offset:1px}.xy-pad{position:relative;width:130px;height:130px;background:var(--inset);border:1px solid var(--line);border-radius:8px;touch-action:none;cursor:crosshair;margin:2px 0}.xy-cross-h{position:absolute;left:0;right:0;top:50%;height:1px;background:#ffffff14}.xy-cross-v{position:absolute;top:0;bottom:0;left:50%;width:1px;background:#ffffff14}.xy-dot{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:#4aa3ff;box-shadow:0 0 8px #4aa3ff;pointer-events:none}.gobo-block{display:flex;flex-direction:column;gap:5px}.gobo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:5px}.gobo-cell{font-size:10px;padding:5px 4px;border-radius:6px;border:1px solid var(--line);background:var(--inset);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.gobo-cell.sel{border-color:#4aa3ff;background:#16314d}.gobo-cell:hover{border-color:#4aa3ff}.laser-card{border-color:#2c4a3a}.laser-swatch{width:26px;height:22px;border-radius:5px;border:1px solid rgba(255,255,255,.25);flex:none}.laser-pattern-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:5px}.laser-pat{font-size:10px;padding:6px 4px;border-radius:6px;border:1px solid var(--line);background:var(--inset);color:var(--text);text-align:center}.laser-pat.sel{border-color:#38d39f;background:#133029;color:#7af0c8}.laser-pat:hover{border-color:#38d39f}.led-mode-row{display:flex;gap:4px}.led-mode{flex:1;padding:5px 4px;font-size:11px;border-radius:6px;border:1px solid var(--line);background:var(--inset);color:var(--muted)}.led-mode.active{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.led-mode:hover{border-color:var(--accent)}.led-test-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.led-test{font-size:9px;font-family:ui-monospace,monospace;padding:6px 2px;border-radius:4px;border:1px solid var(--line);background:var(--inset);color:var(--muted)}.led-test.active{background:#d98324;border-color:#d98324;color:#0d0f14;font-weight:600}.led-test:hover{border-color:#d98324}.pixel-grid{display:grid;gap:2px}.pixel-cell{height:18px;padding:0;border-radius:2px;border:1px solid rgba(255,255,255,.12);cursor:pointer}.pixel-cell:hover{border-color:#4aa3ff}.led-bulk{display:flex;gap:6px;flex-wrap:wrap}.led-bulk .mini{flex:1;text-align:center}.blackout-btn{background:#3a1f24;border-color:#5a2a30;color:#ff9a7a;font-weight:600}.blackout-btn:hover{border-color:#ef5a5a}.blackout-btn.on{background:#ef5a5a;border-color:#ef5a5a;color:#fff}.panel-close{padding:2px 9px}.center{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.stage-host{flex:1;display:flex;min-width:0;min-height:0}.view{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.view-toolbar{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid var(--line)}.view-toolbar h2{font-size:13px;margin:0}.seg{display:flex;border:1px solid var(--line);border-radius:6px;overflow:hidden}.seg button{border:0;border-radius:0;background:transparent;padding:4px 12px}.seg button.active{background:var(--accent);color:var(--on-accent)}.view-switcher{margin:0 auto}.topstrip{display:flex;align-items:center;gap:12px;padding:6px 12px;border-bottom:1px solid var(--line);background:var(--panel)}.brand{font-size:14px;font-weight:600;flex:none}.topstrip-spacer{flex:1}.master-faders{display:flex;align-items:center;gap:12px;flex:none}.master-fader{display:flex;align-items:center;gap:6px;cursor:ew-resize}.master-fader-label{font-size:11px;font-weight:600;color:var(--muted);flex:none}.master-fader-input{width:88px;accent-color:var(--accent);cursor:ew-resize}.master-fader-pct{font-size:11px;color:var(--muted);flex:none;width:34px;text-align:right;font-variant-numeric:tabular-nums}.show-switcher{position:relative;display:flex;align-items:center;gap:4px}.show-switcher-btn{display:flex;align-items:center;gap:6px;background:var(--hover);border:1px solid var(--line);border-radius:999px;padding:4px 12px;max-width:280px}.show-switcher-btn:hover{border-color:var(--accent)}.show-switcher-icon{color:var(--accent);font-size:10px}.show-switcher-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.show-switcher-caret{color:var(--muted);font-size:10px}.show-switcher-gear{width:28px;padding:4px 0;background:transparent;border-color:transparent;color:var(--muted)}.show-switcher-gear:hover{color:var(--text);border-color:var(--line)}.show-switcher-scrim{position:fixed;inset:0;z-index:40}.show-switcher-menu{position:absolute;top:36px;left:0;z-index:41;min-width:220px;max-height:60vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:6px;box-shadow:0 12px 32px #00000080;display:flex;flex-direction:column;gap:2px}.show-switcher-menu button{text-align:left;background:transparent;border:0;padding:7px 10px;border-radius:6px}.show-switcher-menu button:hover{background:var(--hover)}.show-switcher-menu button.active{color:var(--accent)}.shell-body{flex:1;display:flex;min-height:0;overflow:hidden;position:relative}.rail{width:48px;flex:none;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;padding:8px 0;gap:2px}.rail-divider{width:28px;height:1px;background:var(--line);margin:6px 0}.rail-spacer{flex:1}.rail-sections{display:flex;flex-direction:column;gap:2px}.rail-btn{position:relative;width:38px;height:38px;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;border:0;border-radius:8px;color:var(--muted)}.rail-btn:hover{background:var(--hover);color:var(--text);border-color:transparent}.rail-btn.active{color:var(--accent);background:#6ea8fe24}.rail-section.active:before{content:"";position:absolute;left:-5px;top:8px;bottom:8px;width:3px;border-radius:2px;background:var(--accent)}.rail-assistant.active{color:#d98cff;background:#d98cff24}.rail-profile{width:28px;height:28px;border-radius:50%;background:#2a3242;color:var(--text);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;margin-top:6px;overflow:hidden;padding:0}.rail-profile img{width:100%;height:100%;object-fit:cover;display:block}.rail-util-wrap{position:relative}.rail-util-scrim{position:fixed;inset:0;z-index:40}.rail-util-menu{position:absolute;left:44px;bottom:0;z-index:41;width:180px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:6px;box-shadow:0 10px 30px #00000080;display:flex;flex-direction:column;gap:2px}.rail-util-title{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:4px 8px}.rail-util-menu button{text-align:left;background:transparent;border:0;padding:7px 8px;border-radius:6px}.rail-util-menu button:hover{background:var(--hover)}.l1-drawer{flex:none;width:280px;position:relative;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;overflow:hidden}.l1-drawer.collapsed{width:40px!important}.l1-content{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.l1-drawer .panel{width:100%;border-right:0}.l1-collapse{position:absolute;bottom:8px;right:8px;z-index:7;width:22px;height:22px;padding:0;border-radius:6px;background:var(--hover);color:var(--muted);font-size:13px;line-height:1;box-shadow:0 1px 4px #0006}.l1-drawer.collapsed .l1-collapse{top:50%;bottom:auto;right:9px;transform:translateY(-50%)}.drawer-resize{position:absolute;top:0;right:0;bottom:0;width:6px;cursor:col-resize;z-index:3;touch-action:none}.drawer-resize:hover{background:var(--accent);opacity:.5}.dock-resize{height:6px;flex:none;cursor:row-resize;background:transparent;touch-action:none}.dock-resize:hover{background:var(--accent);opacity:.5}.l1-stack{display:flex;flex-direction:column;min-height:0;height:100%}.l1-stack>.panel-section,.l1-stack>.panel{flex:1;min-height:0}.l1-drawer .view-toolbar{flex-wrap:wrap;gap:6px 8px;padding:8px}.l1-drawer .view-toolbar h2{width:100%}.group-name,.lib-name,.fixture-name,.scene-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.l1-drawer .fixture-meta,.l1-drawer .lib-meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.l1-drawer .cue-card{gap:6px;padding:6px 8px;flex-wrap:wrap}.l1-drawer .cue-card button{font-size:11px;padding:3px 8px}.tl-track-clipctl{flex-wrap:wrap}.rail-profile{border:1px solid transparent;cursor:pointer}.rail-profile:hover{border-color:var(--accent);color:var(--text)}.dock-resize{height:8px}.dock-resize:hover{background:var(--accent);opacity:1}.drawer-resize:hover{opacity:1}.inspector-overlay{width:clamp(300px,28%,380px)}.manual-btn{font-size:11px;padding:3px 9px;white-space:nowrap}.manual-overlay{position:fixed;inset:0;z-index:60;background:#0009;display:flex;align-items:center;justify-content:center;padding:32px}.manual-card{width:min(900px,92vw);height:min(88vh,1000px);background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 50px #0000008c;display:flex;flex-direction:column;overflow:hidden}.manual-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line)}.manual-title{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.manual-actions{display:flex;align-items:center;gap:8px;flex:none}.manual-open{font-size:12px;color:var(--accent);text-decoration:none}.manual-open:hover{text-decoration:underline}.manual-frame{flex:1;width:100%;border:0;background:#fff}.manual-status{padding:24px;text-align:center;color:var(--muted);font-size:13px}.manual-status.error{color:#ef8a8a}.l1-drawer .view{overflow:auto}.l2-drawer{flex:none;width:640px;background:var(--bg);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;overflow:hidden}.stage-area{flex:1 1 240px;min-width:200px;position:relative;display:flex;flex-direction:column;min-height:0}.stage-area .stage-host{flex:1;display:flex;min-width:0;min-height:0}.inspector-overlay{position:absolute;top:0;left:0;bottom:0;width:360px;z-index:6;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;box-shadow:6px 0 20px #00000059}.inspector-overlay-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--line);font-size:12px;font-weight:600}.inspector-overlay-bar button{width:26px;padding:2px 0}.inspector-overlay .inspector,.inspector-overlay .panel-section{flex:1;min-height:0;max-height:none;overflow:auto}.timeline-dock{flex:none;height:240px;border-top:1px solid var(--line);background:var(--panel);overflow:hidden;display:flex;flex-direction:column}.controllers-main{flex:1;display:flex;flex-direction:column;min-height:0}.controllers-header{padding:8px 12px;border-bottom:1px solid var(--line)}.assistant-dock{position:relative;flex:none;width:360px;max-width:720px;min-width:280px;border-left:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;min-height:0}.assistant-dock .chat-view{flex:1;min-height:0}.drawer-resize-left{position:absolute;top:0;left:0;bottom:0;width:6px;cursor:col-resize;z-index:7;touch-action:none}.drawer-resize-left:hover{background:var(--accent);opacity:1}.assistant-capsule{position:fixed;right:16px;bottom:56px;z-index:30;background:#2a1d33;border:1px solid #5a3a6a;color:#d98cff;border-radius:999px;padding:8px 14px;box-shadow:0 6px 20px #00000080}.utility-overlay{position:fixed;inset:0;z-index:50;background:var(--bg);display:flex;flex-direction:column}.utility-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--line);background:var(--panel)}.utility-title{font-weight:600}.utility-close{width:30px}.utility-body{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.tl-track-list{list-style:none;margin:0;padding:6px;overflow:auto}.tl-track-row{border:1px solid var(--line);border-radius:8px;background:var(--inset);margin-bottom:6px;padding:6px}.tl-track-clipctl{display:flex;gap:6px;margin-top:4px}.tl-track-clipctl .tl-scene-pick{flex:1}.tl-dock{display:flex;flex-direction:column;min-height:0;height:100%}.tl-dock-transport{display:flex;align-items:center;gap:10px;padding:6px 10px;border-bottom:1px solid var(--line)}.tl-dock-transport .seek{flex:1}.tl-dock .tl-lanes{flex:1;overflow:auto}.tl-lane-label{position:absolute;left:0;width:116px;padding:4px 8px;font-size:11px;color:var(--muted)}.help-overlay{position:fixed;inset:0;z-index:60;background:#00000080;display:flex;align-items:center;justify-content:center}.help-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px 22px;min-width:280px}.help-card h3{margin:0 0 10px}.help-card ul{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}.help-card kbd{background:var(--inset);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:11px;margin-right:8px}.stage-host.pip{position:absolute;right:12px;bottom:12px;width:300px;height:180px;flex:none;border:1px solid var(--line);border-radius:10px;overflow:hidden;z-index:8;box-shadow:0 8px 24px #0000008c;pointer-events:none}.stage-settings-btn{position:absolute;left:12px;bottom:12px;z-index:7;background:#0d0f14cc;border:1px solid var(--line);border-radius:8px;padding:6px 12px;backdrop-filter:blur(6px)}.stage-settings-panel{position:absolute;left:12px;bottom:54px;z-index:9;width:480px;max-width:calc(100% - 24px);max-height:72%;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 40px #0009;overflow:hidden}.stage-settings-head{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--line);font-weight:600}.stage-settings-body{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column}.stage-settings-body .view{overflow:auto;flex:1}.semtest-panel{position:absolute;top:0;left:48px;bottom:0;width:380px;z-index:30;display:flex;flex-direction:column;background:var(--panel);border-right:1px solid var(--line);box-shadow:6px 0 20px #00000073;min-height:0}.semtest-head{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}.semtest-back{width:26px;padding:2px 0;flex:none}.semtest-titles{display:flex;flex-direction:column;min-width:0}.semtest-title{font-weight:600;font-size:13px}.semtest-sub{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.semtest-pad{padding:8px 12px;margin:0}.semtest-hint{font-size:11px}.semtest-search{width:100%;box-sizing:border-box;margin-top:6px}.semtest-list{flex:1;min-height:0;overflow:auto}.semtest-prow{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:8px 12px}.semtest-prow:hover:not(:disabled){background:var(--hover)}.semtest-pname{font-size:12px}.semtest-pmeta{font-size:10px;color:var(--muted)}.semtest-tags{display:flex;gap:4px;margin-top:2px}.semtest-tags em{font-style:normal;font-size:9px;font-weight:600;color:var(--accent);background:#6ea8fe1f;border-radius:4px;padding:1px 5px}.semtest-caps{display:flex;flex-wrap:wrap;gap:6px;padding:6px 12px;border-bottom:1px solid var(--line)}.semtest-cap{font-size:9px;font-weight:600;color:var(--muted);opacity:.4;text-transform:uppercase;letter-spacing:.03em}.semtest-cap.on{color:var(--accent);opacity:1}.semtest-pos{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--bg)}.semtest-slider{display:flex;align-items:center;gap:6px;font-size:10px}.semtest-slider input[type=range]{width:90px}.semtest-slabel{color:var(--muted);min-width:14px}.semtest-sval{font-family:ui-monospace,monospace;color:var(--text);min-width:30px}.semtest-check{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--muted)}.semtest-tabs{margin:8px 12px}.semtest-body{flex:1;min-height:0;overflow:auto}.semtest-group{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;padding:10px 12px 4px}.semtest-scenario{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;text-align:left;border:0;border-radius:0;background:transparent;padding:6px 12px;font-size:12px}.semtest-scenario:hover:not(:disabled){background:var(--hover)}.semtest-scenario.active{background:#6ea8fe1f}.semtest-play{color:var(--muted);font-size:9px}.semtest-scenario.active .semtest-play{color:var(--accent)}.semtest-custom,.semtest-seq{padding:4px 12px 12px;display:flex;flex-direction:column;gap:10px}.semtest-field{display:flex;flex-direction:column;gap:4px}.semtest-field>label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.semtest-field select,.semtest-field .text-input{background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px;font-size:12px}.semtest-coords{display:flex;flex-direction:column;gap:4px}.semtest-swatch{width:14px;height:14px;border-radius:4px;border:1px solid var(--line);flex:none;display:inline-block}.semtest-run{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600;align-self:flex-start}.semtest-run:hover:not(:disabled){filter:brightness(1.08);border-color:var(--accent)}.semtest-seqbtns{display:flex;gap:8px}.semtest-steps{max-height:220px;overflow:auto}.semtest-step{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:0;border-radius:0;background:transparent;padding:5px 12px;font-size:11px}.semtest-step:hover{background:var(--hover)}.semtest-step.active{background:#6ea8fe1f}.semtest-stepi{color:var(--muted);min-width:18px;font-family:ui-monospace,monospace}.semtest-stepn{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semtest-stept{color:var(--muted);font-size:10px}.semtest-result{border-top:1px solid var(--line);padding-bottom:10px}.semtest-pt{padding:4px 12px}.mono{font-family:ui-monospace,monospace;font-size:10px}.semtest-headrow{display:flex;align-items:center;gap:6px;padding:2px 12px}.semtest-dmx{padding:0 12px}.semtest-dmxrow{display:flex;gap:8px;padding:1px 0}.semtest-dmxi{color:var(--muted);min-width:32px}.semtest-dmxn{flex:1;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semtest-dmxv{color:var(--accent);min-width:28px;text-align:right}.semtest-cathdr{font-size:9px;font-weight:700;color:var(--text);text-transform:uppercase;letter-spacing:.04em;padding:8px 12px 4px;background:var(--inset);border-bottom:1px solid var(--line);position:sticky;top:0}.semtest-mode{display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--line)}.semtest-mode>label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.semtest-mode select{flex:1;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:3px 8px;font-size:12px}.semtest-presetrow{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;text-align:left;border:0;border-radius:0;background:transparent;padding:6px 12px}.semtest-presetrow:hover:not(:disabled){background:var(--hover)}.semtest-presetrow.active{background:#6ea8fe1f}.semtest-presetdesc{font-size:10px;color:var(--muted)}.semtest-colorrow{display:flex;align-items:center;gap:6px}.semtest-colorrow select{flex:1;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:3px 8px;font-size:12px}.semtest-iconbtn{width:24px;padding:2px 0;flex:none;color:var(--muted)}.semtest-addcolor{align-self:flex-start;background:transparent;border:0;color:var(--accent);font-size:11px;padding:2px 0}.semtest-strip{display:flex;align-items:center;gap:8px}.semtest-strip span{font-size:11px;color:var(--muted)}.semtest-heads{display:flex;gap:2px;flex:none}.semtest-heads .semtest-swatch{width:9px;height:9px;border-radius:2px}.modal-scrim{position:fixed;inset:0;z-index:55;background:#0000008c;display:flex;align-items:center;justify-content:center}.modal-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #0009}.modal-card.show-settings{width:860px;max-width:94vw;height:640px;max-height:88vh}.modal-head{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line)}.modal-title{font-weight:600}.modal-close{margin-left:auto;width:30px}.modal-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.modal-foot{border-top:1px solid var(--line);font-size:11px;margin:0}.modal-card.chat-debug{width:460px;max-width:92vw}.chat-debug-body{padding:14px;gap:10px;overflow:visible}.chat-debug-body .muted{margin:0}.chat-debug-input{width:100%;min-height:96px;resize:vertical;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit}.chat-debug-actions{display:flex;justify-content:flex-end;gap:8px}.modal-card.join-show{width:420px;max-width:92vw}.join-show-body{padding:16px;gap:12px;overflow:visible}.join-show-input{font-family:monospace;font-size:18px;letter-spacing:3px;text-align:center;text-transform:uppercase;padding:10px}.join-show-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.join-show-actions button.primary{align-self:auto;margin-top:0}.join-show-ok{color:var(--accent);font-weight:600;text-align:center;padding:12px 0}.l1-addbar{padding:6px 8px;border-bottom:1px solid var(--line);flex:none}.l1-add{width:100%;background:var(--accent-soft);border-color:var(--line)}.dmx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(36px,1fr));gap:3px;padding:10px;overflow:auto}.dmx-cell{position:relative;height:44px;border:1px solid var(--line);border-radius:4px;background:var(--inset);display:flex;flex-direction:column;align-items:center;overflow:hidden;font-size:9px}.dmx-cell.on{border-color:var(--accent)}.dmx-ch{color:var(--muted);z-index:1}.dmx-val{color:var(--text);z-index:1;margin-top:auto;padding-bottom:2px}.dmx-bar{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(var(--accent),#38d39f);opacity:.35}.logs-view{display:flex;flex-direction:column;height:100%}.seg-btn{border:1px solid var(--line);border-radius:6px;background:transparent;padding:4px 10px;color:var(--text);cursor:pointer}.logs-body{flex:1;overflow:auto;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.logs-empty{padding:20px}.logs-hint{padding:8px 12px}.logs-cloud{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text);cursor:pointer}.log-row{display:grid;grid-template-columns:92px 58px 46px 130px 1fr;gap:8px;align-items:baseline;padding:2px 4px;border-bottom:1px solid var(--panel)}.log-time{color:var(--muted)}.log-who{color:#8aa6ff;font-weight:600}.log-cat{font-weight:600;text-align:center;border-radius:3px;padding:0 4px;font-size:9px;align-self:center}.log-cat-signal{background:#38d39f2e;color:#38d39f}.log-cat-device{background:#78a0ff2e;color:#8aa6ff}.log-type{color:var(--muted)}.log-msg{color:var(--text);white-space:pre-wrap;word-break:break-word}.log-row.log-warn .log-msg{color:#e0b341}.log-row.log-error .log-msg{color:#e06c75}.vc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;padding:12px;overflow:auto}.vc-widget{min-height:70px;border:1px solid var(--line);border-radius:8px;background:var(--hover);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--text);cursor:pointer;padding:10px}.vc-button:hover{border-color:var(--accent)}.vc-fader{position:relative;overflow:hidden;padding:0;justify-content:space-between;cursor:ns-resize;touch-action:none;user-select:none;background:var(--inset)}.vc-fader-fill{position:absolute;left:0;right:0;bottom:0;height:var(--vc-fill, 0%);background:var(--vc-tint, var(--accent));opacity:.85;pointer-events:none}.vc-fader-pct{position:relative;z-index:1;font-size:12px;font-weight:600;padding-top:6px;pointer-events:none}.vc-fader-label{position:relative;z-index:1;padding-bottom:6px;pointer-events:none;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vc-xy{background:var(--inset)}.vc-label{font-weight:500;font-size:12px}.vc-hint{color:var(--muted);font-size:10px}.vc-cell{position:relative;display:flex}.vc-cell>.vc-widget{flex:1;width:100%}.vc-del{position:absolute;top:4px;right:4px;width:20px;height:20px;padding:0;font-size:11px;background:#3a1f24;border-color:#5a2a30;opacity:0;transition:opacity .1s}.vc-cell:hover .vc-del{opacity:1}.vc-pgrid{display:grid;gap:8px;padding:12px;flex:1;min-height:0;grid-auto-flow:dense}.vc-pgrid.editing{background:#12161e;outline:1px dashed var(--line);outline-offset:-8px}.vc-pgrid.editing.dragging{background-image:linear-gradient(to right,rgba(91,141,239,.1) 1px,transparent 1px),linear-gradient(to bottom,rgba(91,141,239,.1) 1px,transparent 1px);background-size:calc(100% / var(--vc-cols, 12)) calc(100% / var(--vc-rows, 8));background-position:0 0}.vc-pgrid .vc-cell{min-height:0}.vc-place{border:1px dashed #46506a;border-radius:8px;background:var(--hover);display:flex;align-items:center;justify-content:center;color:var(--text);cursor:grab;padding:6px;position:relative}.vc-place:active{cursor:grabbing}.vc-ghost{--vc-ghost-color: var(--accent, #5b8def);position:relative;border:2px solid var(--vc-ghost-color);background:color-mix(in srgb,var(--vc-ghost-color) 22%,transparent);border-radius:8px;pointer-events:none;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 1px #00000040,0 0 24px color-mix(in srgb,var(--vc-ghost-color) 35%,transparent);animation:vc-ghost-pulse 1.1s ease-in-out infinite}.vc-ghost:before{content:"";position:absolute;inset:5px;border:1.5px dashed color-mix(in srgb,var(--vc-ghost-color) 70%,transparent);border-radius:5px;pointer-events:none}.vc-ghost-label{font-size:11px;font-weight:600;color:#fff;text-transform:uppercase;letter-spacing:.06em;background:color-mix(in srgb,var(--vc-ghost-color) 75%,transparent);padding:3px 8px;border-radius:999px;white-space:nowrap;pointer-events:none}.vc-ghost.conflict{--vc-ghost-color: #e25a5a}@keyframes vc-ghost-pulse{0%,to{box-shadow:0 0 0 1px #00000040,0 0 18px color-mix(in srgb,var(--vc-ghost-color) 30%,transparent)}50%{box-shadow:0 0 0 1px #00000040,0 0 30px color-mix(in srgb,var(--vc-ghost-color) 55%,transparent)}}.vc-cell.vc-snap{transition:transform .2s cubic-bezier(.2,.7,.3,1)}.vc-main{flex:1;display:flex;min-height:0}.vc-palette{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}.vc-palette-label{color:var(--muted);font-size:11px}.vc-tile{padding:6px 14px;border:1px dashed #46506a;border-radius:8px;background:var(--hover);cursor:grab;font-size:12px}.vc-tile:active{cursor:grabbing}.vc-place{flex-direction:column;gap:2px}.vc-place.sel{border-color:var(--accent);box-shadow:0 0 0 2px #6ea8fe66}.vc-type{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.vc-resize{position:absolute;right:2px;bottom:2px;width:12px;height:12px;cursor:nwse-resize;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);border-bottom-right-radius:4px;opacity:0}.vc-cell:hover .vc-resize{opacity:.8}.vc-midi-badge{position:absolute;top:4px;left:4px;height:18px;min-width:18px;padding:0 6px;font-family:ui-monospace,monospace;font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;cursor:pointer;line-height:1}.vc-midi-badge.bound{background:color-mix(in srgb,var(--accent) 25%,transparent);border:1px solid var(--accent);color:#fff}.vc-midi-badge.unbound{background:transparent;border:1px dashed #46506a;color:var(--muted);opacity:0;transition:opacity .1s}.vc-cell:hover .vc-midi-badge.unbound{opacity:.8}.vc-midi-badge.learning{background:#f0c14b;border-color:#f0c14b;color:#1a1a1a;animation:vc-ghost-pulse 1s ease-in-out infinite}.vc-empty-quick{padding:24px 16px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}.vc-empty-quick .vc-empty-buttons{display:flex;flex-wrap:wrap;gap:8px}.vc-empty-quick .vc-empty-buttons button{font-size:12px;padding:8px 14px;border-radius:8px;background:var(--accent-soft);border:1px solid var(--line);cursor:pointer}.vc-empty-quick .vc-empty-buttons button:hover:not(:disabled){border-color:var(--accent)}.vc-empty-quick .vc-empty-buttons button:disabled{opacity:.5;cursor:not-allowed}.vc-empty-hint{font-size:11px}.vc-inspector{flex:none;width:260px;border-left:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;min-height:0}.vc-inspector-head{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--line);font-weight:600;font-size:12px;text-transform:capitalize}.vc-inspector-head button{width:26px;padding:2px 0}.vc-inspector-body{padding:10px 12px;display:flex;flex-direction:column;gap:10px;overflow:auto}.vc-inspector-body .field{flex-direction:column;align-items:stretch;gap:4px}.vc-inspector-body .field>label{width:auto;color:var(--muted);font-size:11px}.vc-current{margin:0;font-size:11px}.vc-empty{padding:16px}.shows-list{list-style:none;margin:0;padding:8px;overflow:auto;max-width:520px}.shows-list li{border-radius:6px}.shows-list li.active{background:var(--sel)}.show-row{width:100%;display:flex;gap:6px;justify-content:space-between;align-items:center;background:transparent;border:0;padding:9px 10px;text-align:left}.show-row:hover{background:var(--hover);border-radius:6px}.show-name{font-weight:500}.show-switch{flex:1;display:flex;justify-content:space-between;align-items:center;gap:8px;background:transparent;border:0;text-align:left;color:var(--text);cursor:pointer;padding:0}.show-row.editing input,.shows-view .scene-name{min-width:160px}.bpm-control{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.beat-sync{flex:1 0 100%;background:var(--button);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 6px;font-size:11px}.bpm-readout{flex:1;font-variant-numeric:tabular-nums;font-size:12px;min-width:72px;text-align:center}.bpm-readout .muted{padding:0}.editor-view .view-toolbar{gap:8px;flex-wrap:wrap}.editor-view .view-toolbar h2,.editor-view .view-toolbar button{flex:none;white-space:nowrap}.editor-view .view-toolbar .toolbar-spacer{flex:1 1 auto}.editor-view .view-toolbar button.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600}.editor-view .view-toolbar button.primary:hover:not(:disabled){filter:brightness(1.08);border-color:var(--accent)}.editor-view .view-toolbar select{background:var(--button);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px}.editor-close{width:26px;padding:4px 0;margin-left:auto}.matrix-scroll{overflow:auto;padding:10px}.matrix{border-collapse:separate;border-spacing:3px}.matrix th{font-size:11px;font-weight:500;color:var(--muted);padding:4px 6px;text-align:left;white-space:nowrap;position:sticky;top:0;background:var(--panel)}.matrix th.corner{left:0;z-index:2}.matrix .step-rail{position:sticky;left:0;background:var(--panel);z-index:1;display:flex;align-items:center;gap:4px}.prev-btn{width:26px;height:26px;border-radius:6px;padding:0}.tm-badge{font-size:9px;font-weight:700;color:#0d0f14;background:#f0c14b;border-radius:3px;padding:1px 4px}.matrix td.cell{padding:0}.cell-swatch{display:block;width:54px;height:34px;border-radius:5px;border:1px solid var(--line);cursor:pointer;position:relative;overflow:hidden}.cell.empty .cell-swatch{background:repeating-linear-gradient(45deg,var(--inset),var(--inset) 5px,var(--panel) 5px,var(--panel) 10px)}.cell-swatch input[type=color]{opacity:0;width:100%;height:100%;cursor:pointer;border:0}.editor-view .scene-name{flex:0 1 240px;min-width:140px;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px}button.danger{color:#ef5a5a}button.danger:hover:not(:disabled){background:#ef5a5a1f}.scene-menu{position:relative;display:inline-flex}.scene-menu-btn{width:28px;padding:4px 0;font-size:15px;line-height:1}.scene-menu-scrim{position:fixed;inset:0;z-index:40}.scene-menu-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:41;min-width:256px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:6px;box-shadow:0 12px 32px #00000080;display:flex;flex-direction:column;gap:2px}.scene-menu-rowwrap{display:contents}.scene-menu-item{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:transparent;border:0;border-radius:6px;padding:8px 10px;font-size:12px}.scene-menu-item:hover:not(:disabled){background:var(--hover)}.scene-menu-item:disabled{opacity:.5;cursor:default}.scene-menu-item.danger{color:#ef5a5a}.scene-menu-item.danger:hover:not(:disabled){background:#ef5a5a1f}.scene-menu-label{flex:1}.scene-menu-key{color:var(--muted);font-size:10px;font-family:inherit;background:var(--inset);border:1px solid var(--line);border-radius:4px;padding:1px 5px;white-space:nowrap}.scene-menu-sep{height:1px;background:var(--line);margin:4px 2px}.scene-menu-swatch{width:14px;height:14px;border-radius:4px;border:1px solid var(--line);flex:none}.scene-menu-ico{width:14px;text-align:center;flex:none}.scene-menu-confirm{padding:8px 10px;display:flex;flex-direction:column;gap:10px}.scene-menu-confirm p{margin:0;font-size:12px}.scene-menu-confirm-actions{display:flex;justify-content:flex-end;gap:8px}.scene-menu-confirm-actions button{padding:4px 12px}.scene-menu-confirm-actions .danger{color:#ef5a5a;border-color:#ef5a5a66}.scene-menu-confirm-actions .danger:hover{background:#ef5a5a1f}.notice{color:var(--accent);padding:8px 12px;margin:0;font-size:12px}.editor-actions{display:flex;gap:10px;align-items:center;padding:6px 12px}.editor-actions select{background:var(--button);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px}.matrix th .slot-name{margin-right:4px}.slot-x,.cell-x{border:0;background:none;color:var(--muted);cursor:pointer;padding:0 3px;font-size:12px;line-height:1}.slot-x:hover,.cell-x:hover{color:#ef5a5a}.cell-x{position:absolute;top:1px;right:1px;z-index:2;background:#00000059;border-radius:3px}.cell-edit{position:absolute;top:1px;left:1px;z-index:2;border:0;background:#00000059;color:#cfd6e2;border-radius:3px;padding:0 3px;font-size:10px;line-height:1.4;cursor:pointer;opacity:0}.matrix td.cell:hover .cell-edit{opacity:1}.matrix td.cell.cell-selected{outline:2px solid var(--accent, #5b8def);outline-offset:-2px;border-radius:5px}.matrix td.cell{position:relative}.cell-pct{position:absolute;bottom:0;right:2px;z-index:2;font-size:9px;color:#fff;text-shadow:0 0 2px #000,0 0 2px #000;pointer-events:none}.cell-inherit{position:absolute;bottom:0;left:2px;z-index:2;font-size:11px;line-height:1;color:#e6e9ef;pointer-events:none}.cell-feat{position:absolute;top:1px;left:50%;transform:translate(-50%);z-index:2;font-size:9px;color:#ffd27a;pointer-events:none;text-shadow:0 0 2px #000}.cell-strobe{position:absolute;inset:0;z-index:1;pointer-events:none;border-radius:5px;background:repeating-linear-gradient(45deg,rgba(255,255,255,.55),rgba(255,255,255,.55) 2px,transparent 2px,transparent 5px)}.cell.inherited .cell-swatch{border-style:dashed;border-color:#46506a}.cell-detail .cd-swatch{display:inline-block;width:22px;height:18px;border-radius:4px;border:1px solid var(--line);vertical-align:middle}.cell-detail-color{position:relative;display:inline-flex}.cell-detail-color input[type=color]{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;border:0}.cd-field{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}.cd-field input[type=range]{width:120px}.cell-detail-channels{display:flex;flex-direction:column;gap:6px;padding-top:8px;max-height:220px;overflow:auto}.matrix tr.row-selected .step-rail .prev-btn{outline:2px solid var(--accent, #5b8def)}.step-detail{border-top:1px solid var(--line);padding:10px 12px;display:flex;flex-direction:column;gap:8px}.step-detail-head{display:flex;align-items:center;gap:8px}.step-detail-head .step-name{flex:1;max-width:240px;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px}.step-detail-fields{display:flex;gap:16px;flex-wrap:wrap}.step-detail-fields label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted)}.step-detail-fields input,.step-detail-fields select{background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 6px;width:110px}.view-toolbar .text-input{background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px}.view-toolbar input[type=color]{width:32px;height:26px;padding:0;border:1px solid var(--line);border-radius:6px;background:none}.palette-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;padding:12px;overflow:auto}.palette-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);position:relative}.palette-swatch{width:100%;height:48px;border-radius:6px;border:1px solid rgba(255,255,255,.15);display:block;position:relative;overflow:hidden}.palette-swatch input[type=color]{opacity:0;width:100%;height:100%;cursor:pointer;border:0}.palette-name{font-size:12px;font-weight:500;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-tag{font-size:10px;color:var(--muted)}.palette-del{position:absolute;top:4px;right:4px;width:20px;height:20px;padding:0;font-size:11px;background:#3a1f24;border-color:#5a2a30}.palette-section{padding:0 4px}.palette-section-title{font-size:12px;font-weight:600;margin:10px 12px 0;color:var(--text)}.palette-empty{padding:4px 12px 8px;font-size:12px}.palette-icon{display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--muted);background:var(--panel)}.palette-card .palette-name{cursor:default}.palette-rename{width:100%;font-size:12px;padding:2px 6px}.groups-body{flex:1;display:flex;gap:16px;padding:12px;overflow:hidden}.groups-col{flex:1;display:flex;flex-direction:column;min-height:0}.groups-col h3{font-size:12px;color:var(--muted);margin:0 0 8px}.groups-list,.pick-list{list-style:none;margin:0;padding:0;overflow:auto}.group-card{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);margin-bottom:6px}.group-name{font-weight:500;flex:1}.group-count{color:var(--muted);font-size:11px}.group-del{width:24px;padding:0;background:#3a1f24;border-color:#5a2a30}.pick-list li{padding:2px 0}.pick-list label{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;cursor:pointer}.pick-list label:hover{background:var(--hover)}.pick-list label>span:first-of-type{flex:1}.midi-body{flex:1;display:flex;gap:16px;padding:12px;overflow:hidden}.midi-col{flex:1;display:flex;flex-direction:column;min-height:0;overflow:auto}.midi-col h3{font-size:12px;color:var(--muted);margin:12px 0 6px}.midi-list{list-style:none;margin:0;padding:0}.midi-list li{display:flex;justify-content:space-between;gap:10px;padding:6px 8px;border-radius:6px}.midi-list li:nth-child(odd){background:var(--inset)}.midi-meta{color:var(--muted);font-size:11px}.midi-list.events li{font-variant-numeric:tabular-nums}.midi-bind{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}.midi-bind select{background:var(--button);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px}.midi-learning{font-size:12px;color:#f0c14b;display:flex;align-items:center;gap:8px}.midi-col h3{display:flex;align-items:center;gap:10px}.midi-clear{font-size:10px;padding:2px 8px}.midi-del{margin-left:8px;padding:0 6px;background:#3a1f24;border-color:#5a2a30}.midi-src{color:var(--muted);font-size:11px;min-width:90px}.midi-evt{flex:1;text-align:right}.midi-device{background:var(--button);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px;font-size:12px}.midi-spacer{flex:1}.midi-view .error{color:#ff6b6b;margin:8px 12px 0;font-size:12px}.midi-learning{margin:8px 12px 0;font-size:12px;color:#f0c14b;display:flex;align-items:center;gap:8px}.midi-pads-tab,.midi-knobs-tab{padding:12px;overflow:auto;display:flex;flex-direction:column;gap:12px}.midi-hint{margin:0}.midi-quick-setup{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--elev)}.midi-quick-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.midi-quick-btn{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:5px 10px;border-radius:999px;background:var(--accent-soft);border:1px solid var(--line);color:var(--text);cursor:pointer}.midi-quick-btn:hover{border-color:var(--accent)}.midi-quick-btn.bound{background:color-mix(in srgb,var(--accent) 25%,transparent);border-color:var(--accent);color:#fff}.midi-quick-action{font-weight:600}.midi-quick-arrow{color:var(--muted)}.midi-quick-target{font-family:ui-monospace,monospace;font-weight:700}.midi-quick-check{color:#6ab26a;font-weight:700}.midi-banks{display:flex;align-items:center;gap:6px}.midi-bank{width:30px;height:26px;padding:0;font-family:ui-monospace,monospace;font-weight:700}.midi-bank.active{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.midi-bank.live:not(.active){border-color:#f0c14b}.midi-bank-hint{font-size:11px;color:#f0c14b}.midi-pad-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;max-width:360px}.midi-pad{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;padding:4px;border-radius:8px;border:1px solid var(--line);background:var(--inset);color:var(--muted);text-align:center;overflow:hidden}.midi-pad:hover{border-color:var(--accent)}.midi-pad.sel{outline:2px solid var(--accent);outline-offset:-2px}.midi-pad-num{font-family:ui-monospace,monospace;font-size:13px;font-weight:700}.midi-pad-label{font-size:9px;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.midi-pad.bound{color:#fff}.midi-pad.bound.t-scene{background:#2b3a66;border-color:#4a6cc0}.midi-pad.bound.t-blackout{background:#4a2126;border-color:#8a3a44}.midi-pad.bound.t-transport{background:#1f4030;border-color:#2f7a55}.midi-pad.bound.t-cont{background:#4a3a1a;border-color:#9a7a2a}.midi-bind-editor{border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:12px 14px;display:flex;flex-direction:column;gap:10px;max-width:480px}.midi-bind-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;font-weight:600;color:var(--text);flex-wrap:wrap}.midi-bound-summary{font-weight:400;font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:8px}.midi-bind-prompt,.midi-bind-empty{margin:0;font-size:11px}.midi-bind-rows{display:flex;flex-direction:column;gap:6px}.midi-bind-pick{display:grid;grid-template-columns:120px 1fr;align-items:center;gap:10px}.midi-bind-pick-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;display:inline-flex;align-items:center;gap:6px}.midi-bind-help-btn{width:16px;height:16px;padding:0;border-radius:50%;background:var(--button);border:1px solid var(--line);color:var(--muted);font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;line-height:1}.midi-bind-help-btn:hover{border-color:var(--accent);color:var(--text)}.midi-bind-help{background:var(--elev);border:1px solid var(--line);border-radius:6px;padding:8px 10px;font-size:11px;color:var(--text);line-height:1.4}.midi-bind-help ul{margin:4px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:2px}.midi-bind-pick select{background:var(--button);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:12px;width:100%;cursor:pointer}.midi-bind-pick select:hover{border-color:var(--accent)}.midi-del-btn{font-size:11px;padding:2px 8px;background:#3a1f24;border-color:#5a2a30}.midi-knob-row{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:8px;background:var(--inset);padding:8px 10px}.midi-knob-id{display:flex;align-items:baseline;gap:6px;min-width:64px}.midi-knob-q{font-family:ui-monospace,monospace;font-weight:700}.midi-knob-row select{background:var(--button);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px;font-size:12px}.midi-invert{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--muted);white-space:nowrap}.midi-learn-link{font-size:11px;padding:2px 8px;margin-left:auto}.midi-status{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text)}.midi-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}.midi-dot.ok{background:#38d39f}.midi-live-bank{font-size:11px;color:#f0c14b}.midi-instructions{padding:12px 16px;overflow:auto}.midi-instructions h3{font-size:13px;margin:0 0 10px;color:var(--text)}.midi-instructions ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px}.midi-instructions li{font-size:12px;line-height:1.5;color:var(--muted)}.layout-body{flex:1;display:flex;gap:16px;padding:12px;overflow:hidden}.layout-view .group-card button{padding:3px 8px}.layout-view select.text-input{width:100%;margin-bottom:12px}.pos-editor{display:flex;flex-direction:column;gap:10px;max-width:420px}.pos-editor .field>label{width:70px}.stage-grid-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin-top:4px}.pos-editor .field input[type=range]{flex:1}.element-palette{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}.element-cat{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.element-cat-name{font-size:11px;color:var(--muted);width:64px}.element-add{padding:4px 8px;font-size:12px;background:var(--accent-soft);border-color:var(--line)}.element-add:hover{background:var(--hover)}.element-list{list-style:none;margin:0 0 10px;padding:0;overflow:auto;max-height:180px}.element-row{display:flex;align-items:center;gap:10px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);margin-bottom:6px;cursor:pointer}.element-row:hover{background:var(--hover)}.element-row.sel{border-color:#ff9f0a;background:#241d12}.element-name{font-weight:500;flex:1}.element-type{color:var(--muted);font-size:11px}.element-editor .text-input{margin-bottom:4px}.text-input{background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px;font-size:12px}.patch-body{flex:1;display:flex;gap:16px;padding:12px;min-height:0;overflow:hidden}.patch-library{flex:1.1}.patch-add{flex:1}.patch-roster{flex:1.3}.l2-drawer .patch-body{flex-direction:column;overflow:auto}.l2-drawer .patch-library,.l2-drawer .patch-add,.l2-drawer .patch-roster{flex:none}.l2-drawer .lib-list{max-height:220px}.cat-chips{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0}.chip{padding:3px 9px;font-size:11px;background:var(--panel);border:1px solid var(--line);border-radius:999px;color:var(--text);cursor:pointer}.chip.on{background:var(--sel);border-color:#2a4a6a}.lib-list{list-style:none;margin:0;padding:0;overflow:auto}.lib-row{display:flex;flex-direction:column;gap:1px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);margin-bottom:5px;cursor:grab}.lib-row:hover{background:var(--hover);border-color:var(--accent)}.lib-row:active{cursor:grabbing}.lib-row.sel{border-color:#2a4a6a;background:var(--sel)}.lib-name{font-weight:500;font-size:12px}.lib-meta{color:var(--muted);font-size:10px}.mode-field{align-items:flex-start;flex-direction:column;gap:4px}.mode-chips{display:flex;flex-wrap:wrap;gap:5px}.addr-range{margin:2px 0;font-size:11px}.addr-conflict{display:flex;align-items:center;gap:8px}.mini{padding:2px 8px;font-size:11px}button.primary{background:#2a6cff;border-color:#2a6cff;color:#fff;align-self:flex-start;margin-top:4px}button.primary:disabled{opacity:.5}.patch-add .field>label{width:64px;color:var(--muted);font-size:12px}.patch-add .field input[type=number]{width:80px;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 6px}.roster-list{list-style:none;margin:0;padding:0;overflow:auto}.roster-row{border:1px solid var(--line);border-radius:8px;background:var(--panel);margin-bottom:5px}.roster-row.editing{border-color:#2a4a6a}.roster-head{display:flex;align-items:center;gap:8px;padding:6px 10px}.roster-name{font-weight:500;font-size:12px;flex:1}.roster-meta{color:var(--muted);font-size:10px}.roster-edit{padding:4px 10px 10px;gap:6px}.roster-edit .field>label{width:64px;color:var(--muted);font-size:12px}.roster-edit input[type=number]{width:80px;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 6px}.cues-list{list-style:none;margin:0;padding:12px;overflow:auto;max-width:640px}.cue-card{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel);margin-bottom:8px}.cue-card.active{background:var(--sel);border-color:#2a4a6a}.cue-name{font-weight:500;flex:1}.cue-count{color:var(--muted);font-size:11px}.cue-transport{display:flex;gap:6px}.cue-del{width:24px;padding:0;background:#3a1f24;border-color:#5a2a30}.cue-card.sel{outline:1px solid var(--accent, #5b8def)}.cue-pick{flex:1;display:flex;align-items:center;gap:12px;background:transparent;border:0;color:var(--text);text-align:left;cursor:pointer;padding:0}.cue-content{padding:0 12px 16px;max-width:760px}.cue-content-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.cue-content-head select{background:var(--button);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 8px}.cue-table{width:100%;border-collapse:collapse;font-size:12px}.cue-table th{text-align:left;color:var(--muted);font-weight:500;font-size:11px;padding:4px 6px;border-bottom:1px solid var(--line)}.cue-table td{padding:4px 6px;border-bottom:1px solid #1a1f29}.cue-table select{background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:3px 6px;max-width:180px}.cue-num{color:var(--muted);width:28px}.cue-cell-name{width:130px}.cue-num-input{width:60px;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:3px 6px}.cue-row-actions{display:flex;gap:4px}.cue-row-actions button{padding:2px 6px}.timeline-view .seek{width:200px}.tl-lanes{position:relative;flex:1;overflow:auto;padding:8px 0}.tl-track{display:flex;flex-wrap:wrap;align-items:stretch;border-bottom:1px solid var(--line);min-height:48px}.tl-track-head{width:120px;flex:none;display:flex;flex-direction:column;justify-content:center;gap:2px;padding:4px 8px;border-right:1px solid var(--line)}.tl-scene-pick{width:100%;font-size:10px;background:var(--button);color:var(--text);border:1px solid var(--line);border-radius:4px;padding:2px}.tl-fx-btn{background:transparent;border:0;color:var(--muted);font-size:10px;cursor:pointer;text-align:left;padding:0}.tl-fx-editor{flex-basis:100%;display:flex;flex-wrap:wrap;gap:4px 14px;padding:6px 10px;background:var(--inset);border-top:1px dashed var(--line)}.tl-fx-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text)}.tl-track-name{font-weight:500;font-size:12px}.tl-track-meta{color:var(--muted);font-size:10px}.tl-track-head button{font-size:10px;padding:2px 6px;align-self:flex-start}.tl-lane{position:relative;flex:1;background:var(--inset)}.tl-clip{position:absolute;top:6px;bottom:6px;border-radius:4px;cursor:pointer;opacity:.85;border:1px solid rgba(255,255,255,.2)}.tl-clip:hover{opacity:1;outline:1px solid #ef5a5a}.tl-playhead{position:absolute;top:0;bottom:0;width:2px;background:#ef5a5a;pointer-events:none}.tl-hint{padding:6px 12px;font-size:11px}.tl-body{display:flex;flex:1;min-height:0;overflow:hidden}.tl-headers{width:132px;flex:none;border-right:1px solid var(--line);background:var(--inset);overflow:hidden}.tl-ruler-spacer{height:22px;border-bottom:1px solid var(--line)}.tl-headers .tl-track-head{width:auto;flex-direction:row;align-items:center;gap:6px;border-right:0;border-bottom:1px solid var(--line);padding:0 8px}.tl-track-fx{font-size:10px;margin-left:auto}.tl-scroll{flex:1;overflow-x:auto;overflow-y:hidden}.tl-content{position:relative;min-width:100%}.tl-ruler{position:relative;height:22px;border-bottom:1px solid var(--line);cursor:pointer;touch-action:none}.tl-tick{position:absolute;top:0;bottom:0;width:1px;background:#ffffff12}.tl-tick.major{background:#ffffff2e}.tl-tick-lbl{position:absolute;top:3px;left:3px;font-size:9px;color:var(--muted);white-space:nowrap}.tl-body .tl-lane{border-bottom:1px solid var(--line)}.tl-body .tl-clip{top:5px;bottom:5px;display:flex;align-items:center;cursor:grab;opacity:.9;overflow:hidden;touch-action:none}.tl-body .tl-clip:hover{opacity:1;outline:none}.tl-body .tl-clip.sel{border:2px solid #fff;opacity:1}.tl-clip-label{font-size:10px;color:#fff;padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.tl-clip-resize{position:absolute;right:0;top:0;bottom:0;width:8px;cursor:ew-resize;background:#ffffff38;pointer-events:none}.tl-zoom{display:inline-flex;gap:2px}.tl-zoom button{padding:2px 8px}.tl-clip-inspect{display:inline-flex;align-items:center;gap:6px;font-size:11px;margin-left:auto}.tl-clip-inspect input{width:60px;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:4px;padding:2px 4px}.tl-clip-inspect label{color:var(--muted)}.tl-clip-del{font-size:10px}.tl-empty{padding:10px}.chat-gate{padding:12px;max-width:640px}.chat-gate p{margin:0 0 8px}.empty-hint{padding:10px 12px;line-height:1.45}.output-browser-note{margin:8px 16px;padding:10px 12px;line-height:1.45;border:1px solid var(--border, #2a2a30);border-radius:8px;background:#ffffff08}.chat-messages{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:10px}.chat-msg{max-width:78%;display:flex;flex-direction:row;align-items:flex-start;gap:8px}.chat-msg.user{align-self:flex-end;flex-direction:row-reverse}.chat-msg.assistant,.chat-msg.system{align-self:flex-start}.chat-body{display:flex;flex-direction:column;gap:3px;min-width:0}.chat-msg.user .chat-body{align-items:flex-end}.chat-avatar{flex:none;width:28px;height:28px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;line-height:1;user-select:none}.chat-avatar img{width:100%;height:100%;object-fit:cover;display:block}.chat-avatar.assistant{background:linear-gradient(135deg,#6d5dfc,#38d39f);font-size:14px}.chat-avatar.user{background:#2a4a6a;color:#cfe3ff}.chat-role{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.chat-content{background:var(--hover);border:1px solid var(--line);border-radius:10px;padding:8px 12px;white-space:pre-wrap}.chat-msg.user .chat-content{background:var(--sel);border-color:#2a4a6a}.chat-chip{display:inline-block;margin-left:8px;font-size:10px;color:#38d39f;border:1px solid #2a5a48;border-radius:999px;padding:1px 7px}.chat-fixture-options{display:flex;flex-direction:column;gap:5px;margin-top:6px}.chat-fixture-options-question{margin:0 0 2px;font-size:11px;color:var(--muted)}.chat-fixture-option{display:flex;align-items:baseline;gap:8px;text-align:left;background:var(--hover);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 12px;cursor:pointer}.chat-fixture-option:hover:not(:disabled){background:#232b38;border-color:#355}.chat-fixture-option:disabled{opacity:.5;cursor:default}.chat-fixture-option-label{flex:1;font-size:12px}.chat-fixture-option-detail{font-size:10px;color:var(--muted)}.chat-thinking{align-self:flex-start;display:flex;flex-direction:row;align-items:center;gap:8px;color:var(--muted);font-size:12px}.chat-thinking .chat-avatar{animation:chat-thinking-pulse 1.4s ease-in-out infinite}.chat-thinking-text{display:inline-flex;align-items:baseline}.chat-thinking-dots span{animation:chat-thinking-blink 1.4s infinite both}.chat-thinking-dots span:nth-child(2){animation-delay:.2s}.chat-thinking-dots span:nth-child(3){animation-delay:.4s}@keyframes chat-thinking-blink{0%,80%,to{opacity:.2}40%{opacity:1}}@keyframes chat-thinking-pulse{0%,to{opacity:.6}50%{opacity:1}}.chat-input{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}.chat-input input{flex:1;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 12px}.palette-bar{display:flex;flex-direction:column;gap:4px;padding:6px 0;border-top:1px dashed var(--line);margin-top:4px}.pb-title{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.pb-row{display:flex;align-items:center;gap:6px;font-size:11px}.pb-kind{width:60px;color:var(--muted);flex:none}.pb-chip{background:#16314d;border:1px solid #2f5d8a;border-radius:10px;padding:1px 8px;font-size:10px;color:#cfe3ff}.palette-bar .chan-select{flex:1;max-width:220px}.stage-drag-lib{border-bottom:1px solid var(--line)}.sdl-toggle{width:100%;text-align:left;background:transparent;border:0;border-radius:0;padding:6px 10px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.sdl-toggle:hover{color:var(--text);border-color:transparent}.sdl-body{padding:0 8px 8px}.sdl-search{width:100%;margin-bottom:6px}.sdl-list{list-style:none;margin:0;padding:0;max-height:180px;overflow:auto}.sdl-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 8px;border:1px solid var(--line);border-radius:6px;margin-bottom:4px;background:var(--inset);cursor:grab}.sdl-row:hover{border-color:var(--accent)}.sdl-row:active{cursor:grabbing}.sdl-name{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sdl-meta{color:var(--muted);font-size:10px;flex:none}.atmo-section{border-color:#3a3a2a}.atmo-presets{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.atmo-presets .mini{font-size:10px;padding:3px 8px}.atmo-burst{margin-left:auto}.curve-seg{flex:1}.curve-seg button{padding:2px 6px;font-size:10px;text-transform:none;letter-spacing:0}.chat-actions{margin-left:auto;display:flex;gap:5px;align-items:center}.chat-actions .icon-btn{padding:3px 8px;font-size:12px}.chat-actions .icon-btn.on{border-color:var(--accent);color:var(--accent)}.chat-notice{margin:0;padding:5px 12px;font-size:11px;color:#38d39f;background:#122019;border-bottom:1px solid var(--line)}.chat-editing-banner{margin:0;padding:5px 12px;font-size:11px;color:var(--muted);background:var(--inset);border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-editing-banner strong{color:var(--accent, #5b8def);font-weight:600}.chat-degraded-banner{display:flex;align-items:center;gap:8px;margin:0;padding:6px 12px;font-size:11px;color:#f0c14b;background:#2a2410;border-bottom:1px solid #5a4a1a}.chat-degraded-dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none;animation:chat-degraded-pulse 1.2s ease-in-out infinite}@keyframes chat-degraded-pulse{0%,to{opacity:1}50%{opacity:.35}}.chat-feedback{display:flex;flex-direction:column;gap:6px;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--inset)}.chat-feedback textarea{width:100%;resize:vertical;background:var(--inset);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font:inherit}.chat-feedback-actions{display:flex;gap:6px}.chat-feedback-actions .primary{background:#1d3a55;border-color:#2f5d8a}.tl-name-input{font-size:12px;padding:2px 6px;width:110px}.vc-learn{display:inline-flex;align-items:center;gap:6px}.vc-learn-hint{font-size:11px;color:#f0c14b}.template-picker{display:flex;align-items:center;gap:8px;padding:8px 12px;flex-wrap:wrap}.cmdk-scrim{position:fixed;inset:0;z-index:80;background:#00000073;display:flex;justify-content:center;align-items:flex-start}.cmdk-card{width:640px;max-width:calc(100vw - 32px);margin-top:11vh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 70px #0009;overflow:hidden}.cmdk-search{display:flex;align-items:center;gap:10px;padding:12px 14px}.cmdk-search-icon{display:flex;color:var(--muted)}.cmdk-input{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-size:15px}.cmdk-input::placeholder{color:var(--muted)}.cmdk-clear{background:none;border:none;padding:0;display:flex;color:var(--muted);cursor:pointer}.cmdk-clear:hover{color:var(--text)}.cmdk-divider{height:1px;background:var(--line)}.cmdk-list{list-style:none;margin:0;padding:6px;max-height:360px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.cmdk-section{padding:6px 10px 2px;font-size:11px;font-weight:600;letter-spacing:.03em;color:var(--muted);text-transform:uppercase}.cmdk-empty{padding:14px;color:var(--muted);font-size:13px}.cmdk-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer}.cmdk-row.selected{background:#6ea8fe29}.cmdk-row.disabled{opacity:.45;cursor:default}.cmdk-row-icon{display:flex;width:22px;justify-content:center;color:var(--muted);flex:none}.cmdk-row.selected .cmdk-row-icon{color:var(--text)}.cmdk-row-text{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.cmdk-row-title{font-size:13.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cmdk-row.disabled .cmdk-row-title{color:var(--muted)}.cmdk-row-subtitle{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cmdk-row-hint{font-size:11px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;flex:none}.cmdk-confirm{padding:18px 16px 14px;display:flex;flex-direction:column;gap:8px}.cmdk-confirm-title{font-size:14px;font-weight:600}.cmdk-confirm-msg{font-size:13px;color:var(--muted);line-height:1.5}.cmdk-confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}.cmdk-btn{background:var(--inset);border:1px solid var(--line);border-radius:8px;color:var(--text);padding:6px 14px;cursor:pointer;font-size:13px}.cmdk-btn:hover{border-color:var(--accent)}.cmdk-btn.danger{background:#3a1518;border-color:#5c2228;color:#ff9a9a}.cmdk-btn.danger:hover{border-color:#ff6b6b}.signout-btn{background:var(--panel);border:1px solid var(--line);color:var(--muted);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer}.signout-btn:hover{border-color:var(--accent);color:var(--text)}.boot-screen{height:100%;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);background:var(--bg);font-size:14px}.boot-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);animation:boot-pulse 1.1s ease-in-out infinite}@keyframes boot-pulse{0%,to{opacity:.3}50%{opacity:1}}.login-view{height:100%;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 600px at 50% -10%,#1a2030,var(--bg))}.login-card{width:340px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:26px 24px;display:flex;flex-direction:column;gap:12px;box-shadow:0 16px 48px #0006}.login-brand{font-size:22px;font-weight:700;letter-spacing:.3px}.login-sub{font-size:13px;color:var(--muted);margin-bottom:6px}.login-error{background:#3a1518;border:1px solid #5c2228;color:#ff9a9a;border-radius:8px;padding:8px 10px;font-size:12px}.login-provider,.login-primary,.login-guest{width:100%;border-radius:8px;padding:10px 12px;font-size:14px;cursor:pointer;border:1px solid var(--line);background:var(--accent-soft);color:var(--text)}.login-provider:hover,.login-guest:hover{border-color:var(--accent)}.login-provider:disabled,.login-primary:disabled,.login-guest:disabled{opacity:.5;cursor:default}.login-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.login-form{display:flex;flex-direction:column;gap:8px}.login-form input{background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:9px 11px;font-size:13px}.login-form input:focus{outline:none;border-color:var(--accent)}.login-link{background:none;border:none;color:var(--accent);font-size:12px;cursor:pointer;padding:2px;align-self:flex-start}.login-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:11px}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--line)}.login-guest{background:transparent;color:var(--muted)}
