:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}body{margin:0}.library{background:#fafafa;border:1px solid #444;border-radius:8px;flex-direction:column;flex-shrink:0;width:320px;padding:12px;transition:border-color .1s,background .1s;display:flex}.library--dragging{background:#e8f1fb;border-color:#4a9eff}.library__header{border-bottom:1px solid #ddd;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:10px;display:flex}.library__title{color:#888;letter-spacing:.5px;flex:1;font-size:11px;font-weight:700}.library__count{color:#4a9eff;margin-left:4px}.library__add{color:#4a9eff;cursor:pointer;background:#fff;border:1px solid #4a9eff;border-radius:4px;padding:4px 10px;font-size:12px;font-weight:700;transition:background .1s,color .1s}.library__add:hover{color:#fff;background:#4a9eff}.library__url-form{gap:6px;margin-bottom:8px;display:flex}.library__url-input{background:#fff;border:1px solid #ccc;border-radius:4px;flex:1;min-width:0;padding:6px 8px;font-size:12px}.library__url-input:focus{border-color:#4a9eff;outline:none}.library__url-input:disabled{color:#999;background:#f4f4f4}.library__url-submit{color:#fff;cursor:pointer;background:#4a9eff;border:none;border-radius:4px;padding:6px 12px;font-size:12px;font-weight:700}.library__url-submit:hover:not(:disabled){background:#1a6abf}.library__url-submit:disabled{cursor:default;background:#cdd9e6}.library__url-status{word-break:break-word;border-radius:4px;margin-bottom:8px;padding:6px 8px;font-size:11px}.library__url-status--loading{color:#555;background:#f0f4fa}.library__url-status--error{color:#b00020;background:#fdecec}.library__list{scrollbar-width:thin;flex-direction:column;flex:1;gap:4px;min-height:0;max-height:60vh;display:flex;overflow-y:auto}.library__empty{text-align:center;color:#aaa;margin:auto;padding:24px 8px;font-size:13px;line-height:1.6}.track-row{cursor:grab;background:#fff;border:1px solid #e4e4e4;border-radius:4px;align-items:center;gap:6px;padding:6px 8px;font-size:12px;display:flex}.track-row>.track-row__name{flex:1;min-width:0}.track-row:active{cursor:grabbing}.track-row:hover{background:#f5f9ff;border-color:#cfe1f9}.track-row--selected{background:#dfeaff;border-color:#4a9eff}.track-row--selected:hover{background:#cfdfff}.track-row--ghost{cursor:default;color:#999;background:#f8f8f8}.track-row--ghost:hover{background:#f8f8f8;border-color:#e4e4e4}.track-row--ghost .track-row__load:disabled{opacity:.4;cursor:not-allowed}.track-row__load,.track-row__remove{cursor:pointer}.track-row__name{text-overflow:ellipsis;white-space:nowrap;color:#222;overflow:hidden}.track-row__bpm{color:#4a9eff;text-align:right;min-width:28px;font-family:Courier New,monospace;font-weight:700}.track-row__bpm--analyzing{color:#aaa}.track-row__bpm--error{color:#c66}.track-row__load{color:#fff;cursor:pointer;background:#4a9eff;border:none;border-radius:3px;width:22px;height:22px;padding:0;font-family:Courier New,monospace;font-size:11px;font-weight:700}.track-row__load:hover{background:#1a6abf}.track-row__remove{color:#aaa;cursor:pointer;background:0 0;border:none;border-radius:3px;width:20px;height:20px;padding:0;font-size:14px;font-weight:700}.track-row__remove:hover{color:#c33;background:#fee}.tempo-fader{background:#1a1a1a;border-radius:6px;flex-direction:column;align-items:center;gap:8px;width:80px;padding:12px;display:flex}.tempo-fader__readout{color:#4a9eff;text-align:center;background:#000;border-radius:4px;min-width:60px;padding:4px 8px;font-family:Courier New,monospace;font-size:14px}.tempo-fader__slider{writing-mode:vertical-lr;cursor:pointer;direction:rtl;width:30px;height:220px}.tempo-fader__reset{color:#888;cursor:pointer;background:0 0;border:1px solid #444;border-radius:50%;width:22px;height:22px;padding:0;font-family:inherit;font-size:11px;font-weight:700;line-height:1;transition:color .15s,border-color .15s,background .15s}.nudge-buttons{justify-content:center;gap:4px;width:100%;display:flex}.nudge-buttons__btn{letter-spacing:.05em;color:#ddd;cursor:pointer;-webkit-user-select:none;user-select:none;background:#2a2a2a;border:1px solid #444;border-radius:4px;flex:1;padding:6px 0;font-size:11px;font-weight:700;transition:background 80ms,border-color 80ms}.nudge-buttons__btn:hover:not(:disabled){background:#3a3a3a}.nudge-buttons__btn:active:not(:disabled){color:#fff;background:#d97706;border-color:#b45309}.nudge-buttons__btn:disabled{opacity:.4;cursor:default}.key-lock-button{color:#888;letter-spacing:.5px;cursor:pointer;background:#2a2a2a;border:1px solid #444;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px 10px;font-size:9px;font-weight:700;transition:all .15s;display:flex}.key-lock-button:hover{color:#ccc;background:#333}.key-lock-button--active{color:#fff;background:#4a9eff;border-color:#4a9eff;box-shadow:0 0 8px #4a9eff80}.key-lock-button__icon{font-size:14px}.tempo-fader__reset{color:#888;letter-spacing:.5px;cursor:pointer;background:#2a2a2a;border:1px solid #444;border-radius:4px;margin-top:4px;padding:4px 8px;font-size:9px;font-weight:700;transition:all .15s}.tempo-fader__reset:hover:not(:disabled){color:#fff;background:#4a9eff;border-color:#4a9eff}.tempo-fader__reset:disabled{opacity:.3;cursor:not-allowed}.sync-button{color:#fff;letter-spacing:1px;cursor:pointer;background:#2a2a2a;border:1px solid #4a9eff;border-radius:4px;padding:8px 16px;font-size:11px;font-weight:700;transition:all .15s}.sync-button:hover:not(:disabled){color:#fff;background:#4a9eff;box-shadow:0 0 10px #4a9eff99}.sync-button:disabled{opacity:.3;cursor:not-allowed;border-color:#444}.sync-button--locked{color:#fff;background:#4a9eff;box-shadow:0 0 10px #4a9eff99}.sync-button--locked:hover:not(:disabled){background:#3b8de6}.transport-controls{align-items:center;gap:8px;margin-bottom:24px;display:flex}.transport-controls__btn{color:#fff;cursor:pointer;background:#2a2a2a;border:1px solid #444;border-radius:6px;min-width:50px;padding:10px 14px;font-size:18px;font-weight:700;transition:all .1s}.transport-controls__btn:hover:not(:disabled){background:#3a3a3a;border-color:#666}.transport-controls__btn:disabled{opacity:.3;cursor:not-allowed}.transport-controls__btn--play{background:#1a6abf;border-color:#4a9eff;font-size:20px}.transport-controls__btn--play:hover:not(:disabled){background:#4a9eff}.transport-controls__btn--playing{background:#c66;border-color:#e88}.transport-controls__btn--playing:hover:not(:disabled){background:#e88}.transport-controls__btn--cue{letter-spacing:1px;background:#c2a000;border-color:#fc3;font-size:11px}.transport-controls__btn--cue:hover:not(:disabled){color:#000;background:#fc3}.transport-controls__btn--cue:active{color:#000;background:#ffe066}.transport-controls__btn--restart{background:#2a2a2a}.hot-cues{gap:6px;margin-bottom:12px;display:flex}.hot-cue{color:#888;cursor:pointer;background:#2a2a2a;border:1px solid #444;border-radius:4px;flex:1;height:40px;font-family:Courier New,monospace;font-size:16px;font-weight:700;transition:background .1s,color .1s,border-color .1s}.hot-cue:hover:not(:disabled){color:#fff;background:#3a3a3a}.hot-cue:active:not(:disabled){transform:translateY(1px)}.hot-cue:disabled{cursor:not-allowed;opacity:.5}.hot-cue--set{color:#fff;background:#ff7e3a;border-color:#ff7e3a}.hot-cue--set:hover:not(:disabled){color:#fff;background:#ff944d}.loop-controls{align-items:center;gap:10px;margin-bottom:12px;display:flex}.loop-controls__label{color:#888;letter-spacing:.5px;min-width:36px;font-size:11px;font-weight:700}.loop-controls__grid{flex-direction:column;flex:1;gap:4px;display:flex}.loop-controls__row{flex:1;gap:4px;display:flex}.loop-button{color:#888;cursor:pointer;background:#2a2a2a;border:1px solid #444;border-radius:4px;flex:1;height:26px;padding:0;font-family:Courier New,monospace;font-size:12px;font-weight:700;transition:background .1s,color .1s,border-color .1s}.loop-button:hover:not(:disabled){color:#fff;background:#3a3a3a}.loop-button:active:not(:disabled){transform:translateY(1px)}.loop-button:disabled{cursor:not-allowed;opacity:.5}.loop-button--active{color:#fff;background:#2cc46a;border-color:#2cc46a}.loop-button--active:hover:not(:disabled){color:#fff;background:#3ed47b}.loop-button--primed{color:#2cc46a;background:#2a2a2a;border-color:#2cc46a}.loop-button--primed:hover:not(:disabled){color:#3ed47b;background:#3a3a3a}.knob-container{-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:4px;display:flex}.knob{cursor:grab;background:radial-gradient(circle at 30% 30%,#4a4a4a,#1a1a1a 70%);border:2px solid #555;border-radius:50%;transition:border-color .1s;position:relative;box-shadow:0 2px 4px #0006,inset 0 1px 2px #ffffff1a}.knob:hover{border-color:#4a9eff}.knob--dragging{cursor:grabbing;border-color:#4a9eff;box-shadow:0 0 8px #4a9eff99,inset 0 1px 2px #ffffff1a}.knob__default-tick{pointer-events:none;justify-content:center;display:flex;position:absolute;inset:-6px}.knob__default-tick-mark{background:#aaa;border-radius:1px;width:2px;height:5px}.knob__indicator{justify-content:center;display:flex;position:absolute;inset:0}.knob__indicator-line{background:#4a9eff;border-radius:2px;width:3px;height:35%;margin-top:4px;box-shadow:0 0 4px #4a9effcc}.knob__label{color:#888;letter-spacing:.5px;font-size:10px;font-weight:700}.fx-toggle{color:#888;letter-spacing:.5px;cursor:pointer;-webkit-user-select:none;user-select:none;background:#e8e8e8;border:1px solid #888;border-radius:4px;width:44px;height:24px;font-size:11px;font-weight:700;transition:background .1s,color .1s,border-color .1s}.fx-toggle:hover{background:#d8d8d8}.fx-toggle:active{transform:translateY(1px)}.fx-toggle--on{color:#fff;background:#2c7a4b;border-color:#1f5a37}.fx-toggle--on:hover{background:#246340}.deck-fx{-webkit-user-select:none;user-select:none;background:#f5f5f5;border:1px solid #d0d0d0;border-radius:4px;margin-bottom:8px;padding:6px 12px 8px}.deck-fx__header{color:#888;letter-spacing:1px;justify-content:space-between;align-items:center;min-height:24px;margin-bottom:4px;font-size:9px;font-weight:700;display:flex}.deck-fx__row{justify-content:space-around;align-items:flex-start;gap:8px;display:flex}.deck-fx__col{flex-direction:column;align-items:center;gap:6px;min-width:56px;display:flex}.deck-fx__pad-spacer{height:20px}.deck-fx__pad{color:#888;letter-spacing:.5px;cursor:pointer;background:#e8e8e8;border:1px solid #bbb;border-radius:3px;min-width:44px;padding:3px 10px;font-family:inherit;font-size:9px;font-weight:700;transition:border-color .1s,background .1s,color .1s}.deck-fx__pad:hover{border-color:#4a9eff}.deck-fx__pad--on{color:#fff;background:#4a9eff;border-color:#2c7adc}.sample-pads{-webkit-user-select:none;user-select:none;background:#f5f5f5;border-radius:4px;flex-direction:column;gap:8px;padding:12px;display:flex}.sample-pads__header{justify-content:space-between;align-items:center;gap:8px;display:flex}.sample-pads__title{letter-spacing:1px;color:#666;font-size:11px;font-weight:700}.sample-pads__grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.sample-pad{aspect-ratio:1;color:#fff;cursor:pointer;text-align:center;word-break:break-word;background:#2a2a2a;border:1px solid #4a9eff;border-radius:4px;padding:4px;font-family:inherit;font-size:10px;font-weight:700;transition:transform 50ms,background .15s}.sample-pad:hover{background:#4a9eff}.sample-pad:active{transform:scale(.95)}.sample-pad--empty{color:#888;background:0 0;border-style:dashed;border-color:#888}.sample-pad--empty:hover{color:#333;background:#ddd;border-style:solid;border-color:#4a9eff}.level-meter{background:#1a1a1a;border-radius:2px;position:relative;overflow:hidden}.level-meter__fill{border-radius:2px;position:absolute;inset:0}.level-meter--vertical .level-meter__fill{clip-path:inset(100% 0 0);background:linear-gradient(#d44b2c 0% 5%,#d4a72c 5% 20%,#2c7a4b 20% 100%)}.level-meter--horizontal .level-meter__fill{clip-path:inset(0 100% 0 0);background:linear-gradient(90deg,#2c7a4b 0% 80%,#d4a72c 80% 95%,#d44b2c 95% 100%)}.level-meter__hold{pointer-events:none;background:#fff;position:absolute}.level-meter--vertical .level-meter__hold{height:1px;bottom:0%;left:0;right:0}.level-meter--horizontal .level-meter__hold{width:1px;top:0;bottom:0;left:0%}.channel-fader{-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:6px;display:flex}.channel-fader__label{color:#4a9eff;letter-spacing:.5px;font-size:11px;font-weight:700}.channel-fader__track{align-items:stretch;gap:6px;display:flex}.channel-fader__input{writing-mode:vertical-lr;direction:rtl;width:30px;height:220px;margin:0}.channel-fader__scale{color:#999;font-variant-numeric:tabular-nums;width:32px;height:220px;font-size:9px;position:relative}.channel-fader__tick{white-space:nowrap;line-height:1;position:absolute;left:0;transform:translateY(-50%)}.channel-fader__tick:before{content:"─";color:#ccc;margin-right:2px}.channel-fader__tick--rec{color:#4a9eff;font-weight:700}.channel-fader__tick--rec:before{color:#4a9eff}.channel-fader__readout{color:#555;font-variant-numeric:tabular-nums;text-align:center;min-width:56px;font-size:11px}.crossfader__header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;display:flex}.crossfader__label{color:#888;letter-spacing:.5px;font-size:11px;font-weight:700}.crossfader__modes{gap:4px;display:flex}.crossfader__mode{letter-spacing:.5px;color:#888;cursor:pointer;background:0 0;border:1px solid #888;border-radius:3px;padding:2px 8px;font-family:inherit;font-size:9px;font-weight:700;transition:all .15s}.crossfader__mode:hover{color:#4a9eff;border-color:#4a9eff}.crossfader__mode--active{color:#fff;background:#4a9eff;border-color:#4a9eff}.crossfader__mode--active:hover{color:#fff;background:#3b8de6}.broadcast-button-wrap{flex-direction:column;align-items:center;gap:6px;display:flex}.broadcast-button{letter-spacing:.02em;color:#f0f0f0;cursor:pointer;background:#2a2a2a;border:1px solid #444;border-radius:6px;width:100%;padding:10px 14px;font-size:13px;font-weight:600;transition:background .12s,border-color .12s}.broadcast-button:hover:not(:disabled){background:#3a3a3a}.broadcast-button:disabled{cursor:default;opacity:.7}.broadcast-button--live{background:#c92a2a;border-color:#a51a1a}.broadcast-button--live:hover{background:#d93636}.broadcast-button--error{background:#5a2a2a;border-color:#8a3a3a}.broadcast-button-error{color:#c92a2a;text-align:center;max-width:220px;font-size:11px}.broadcast-button-status{color:#c92a2a;align-items:center;gap:6px;font-size:11px;font-weight:600;display:flex}.broadcast-button-dot{background:#c92a2a;border-radius:50%;width:8px;height:8px;animation:1.2s ease-in-out infinite broadcast-pulse}@keyframes broadcast-pulse{0%,to{opacity:1}50%{opacity:.3}}.s4-connect{flex-direction:column;gap:4px;display:flex}.s4-connect__btn{letter-spacing:.5px;cursor:pointer;color:#888;background:0 0;border:1px solid #444;border-radius:4px;justify-content:center;align-items:center;gap:6px;padding:6px 10px;font-family:inherit;font-size:11px;font-weight:700;transition:background .15s,border-color .15s;display:flex}.s4-connect__btn:hover:not(:disabled){color:#4a9eff;border-color:#4a9eff}.s4-connect__btn:disabled{cursor:default;opacity:.7}.s4-connect__btn--connected{color:#d6ffd6;background:#2d5a2d;border-color:#4ad14a}.s4-connect__btn--connected:hover:not(:disabled){color:#fff;background:#3a6f3a;border-color:#4ad14a}.s4-connect__btn--error{color:#ffd6d6;background:#5a2d2d;border-color:#d14a4a}.s4-connect__dot{background:#555;border-radius:50%;flex-shrink:0;width:8px;height:8px}.s4-connect__dot--connecting{background:#fa0;animation:1s infinite s4-pulse}.s4-connect__dot--connected{background:#4ad14a}.s4-connect__dot--error{background:#d14a4a}@keyframes s4-pulse{0%,to{opacity:.4}50%{opacity:1}}.s4-connect__error{color:#d14a4a;text-align:center;white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}
