:root{--accent-rgb: 255, 255, 255;--type-visual: 0, 168, 0;--type-shader: 255, 255, 0;--type-actor: 0, 151, 255;--type-post: 255, 101, 0;--type-particles: 255, 255, 0;--type-global: 0, 0, 202;--font-size-xs: 10px;--font-mono: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}*{margin:0;padding:0;box-sizing:border-box}.material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 200,"GRAD" 0,"opsz" 20;font-size:1.25em;line-height:1;vertical-align:middle}.material-symbols-outlined.filled{font-variation-settings:"FILL" 1,"wght" 200,"GRAD" 0,"opsz" 20}input,select,button,textarea{font-family:Inter,sans-serif;font-variant-numeric:tabular-nums}body{margin:0;padding:0;overflow:hidden;background-color:#000;font-family:Inter,sans-serif;color-scheme:dark}#title-screen{position:fixed;inset:0;z-index:10000;background:#000;display:flex;align-items:center;justify-content:center;transition:opacity .6s ease}#title-screen.loaded{opacity:0;pointer-events:none}.title-screen-content{--title-width: 512px;display:flex;flex-direction:column;align-items:center;gap:32px}.title-screen-logo{width:var(--title-width, 512px);height:auto}.title-screen-progress{width:var(--title-width, 512px);height:1px;background:#ffffff1a;overflow:hidden}.title-screen-progress-bar{height:100%;width:0%;background:#ffffff80;transition:width .2s ease}#mobile-warning[hidden]{display:none}#mobile-warning{position:fixed;inset:0;z-index:20000;background:#000000d9;display:flex;align-items:center;justify-content:center;padding:24px;font-family:Inter,system-ui,sans-serif;color:#fff}.mobile-warning-card{max-width:360px;background:#0a0a0a;border:1px solid rgba(255,255,255,.1);border-radius:6px;padding:24px}.mobile-warning-card h2{font-size:18px;font-weight:600;margin:0 0 12px}.mobile-warning-card p{font-size:14px;line-height:1.5;color:#ffffffb3;margin:0 0 20px}.mobile-warning-actions{display:flex;flex-direction:column;gap:12px}#mobile-warning-continue{background:#fff;color:#000;border:none;border-radius:3px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}.mobile-warning-link{color:#ffffffb3;font-size:13px;text-decoration:underline;text-underline-offset:3px;text-align:center}body:not(.app-loaded):not(.ui-window) #control-panel,body:not(.app-loaded):not(.ui-window) #canvas{opacity:0}#canvas{display:block;width:100vw;height:100vh;position:absolute;top:0;left:0;z-index:0}#view-info{position:absolute;top:56px;left:8px;z-index:200;background:#000000b3;border-radius:4px;padding:6px 10px;font-family:var(--font-mono);font-size:12px;color:#ffffffe6;opacity:0;pointer-events:none;transition:opacity .15s ease}#view-info.visible{opacity:1}#map-overlay{position:absolute;inset:0;z-index:50;pointer-events:none;opacity:0;transition:opacity .15s ease}#map-overlay.visible{opacity:1}#map-overlay canvas{width:100%;height:100%}.view-info-row{display:flex;gap:4px}.view-info-row .label{color:rgba(var(--accent-rgb),.8);margin-right:2px}.view-info-row .value{min-width:60px;text-align:right}#control-panel{position:absolute;inset:0;z-index:100;padding:16px;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;align-items:center}#control-panel>*{pointer-events:auto}button{outline:none;-webkit-tap-highlight-color:transparent}.tracks-wrapper{position:absolute;left:0;right:0;bottom:16px;margin:0 auto;width:fit-content;display:flex;flex-direction:column;align-items:center;gap:8px}.tracks-wrapper.hidden,.transport.hidden,.transport-group.hidden,.transport-row.hidden,.edit-controls.hidden,.edit-controls.playing-hidden,.view-controls.hidden,.view-controls.playing-hidden{display:none}.clip-tooltip,.presets-tooltip,.main-controls-tooltip,.pad-controls-tooltip{color:#fff;font-size:var(--font-size-xs);text-align:center;max-height:0;opacity:0;overflow:hidden;transition:max-height .15s ease,opacity .15s ease,margin .15s ease;-webkit-user-select:none;user-select:none;pointer-events:none}.clip-tooltip.visible,.presets-tooltip.visible,.main-controls-tooltip.visible,.pad-controls-tooltip.visible{max-height:20px;margin-bottom:4px;opacity:1}.tracks-column,.presets-panel,.main-controls-panel,.pad-controls-panel,.beat-counter-panel{background:#000c;border-radius:4px;padding:4px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.tracks-column{display:flex;flex-direction:column;align-items:center}.tracks-container{display:flex;flex-direction:row;justify-content:center}.tracks-row{display:flex;flex-direction:row;align-items:flex-end;gap:32px}.left-panel-column{position:relative;margin-bottom:32px}.main-controls-panel{position:absolute;bottom:160px;left:0;right:0}.main-controls-grid{display:grid;grid-template-columns:repeat(4,32px);grid-auto-rows:32px}.main-controls-cell{width:32px;height:32px;display:flex;align-items:center;justify-content:center;position:relative;border:none;background:transparent;cursor:pointer}.main-controls-cell:not(.assigned){display:none}.main-controls-cell.disabled{opacity:.25;pointer-events:none}.presets-grid{display:grid;grid-template-columns:repeat(4,32px);grid-template-rows:repeat(4,32px)}.presets-cell.saved:before{background:var(--cell-color, #fff)}.presets-cell:after{content:"";position:absolute;inset:1px;background:var(--cell-color, #fff);border-radius:50%;transform:scale(0);transition:transform .5s ease;pointer-events:none}.presets-cell.active:not(.assigned):after{transform:scale(1)}.presets-cell.active:not(.assigned):before{background:var(--dot-color, #000);z-index:1}.presets-cell.assigned:before{background:#ffffff1a}.presets-cell.assigned.active:before{background:var(--cell-color, #fff)}.right-panel-column{position:relative;margin-bottom:32px}.pad-controls-panel{position:absolute;bottom:100%;left:0;margin-bottom:24px}.pad-controls-grid,.beat-counter-grid{display:grid;grid-template-columns:repeat(4,32px)}.pad-controls-grid{grid-auto-rows:32px}.beat-counter-grid{grid-template-rows:repeat(4,32px)}.presets-cell,.pad-controls-cell{width:32px;height:32px;display:flex;align-items:center;justify-content:center;position:relative;border:none;background:transparent;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.pad-controls-cell:not(.assigned){display:none}.pad-controls-cell.disabled{opacity:.2;pointer-events:none}.pad-controls-cell.spacer{display:flex;visibility:hidden;pointer-events:none}.presets-cell:before,.main-controls-cell:before,.pad-controls-cell:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:#ffffff1a;transition:background .1s ease}body.has-mouse .presets-cell.saved:hover:before,body.has-mouse .presets-cell.assigned:hover:before{inset:1px;width:auto;height:auto;transform:none;border-radius:0;background:radial-gradient(circle 4px at center,transparent 4px,var(--cell-color, #fff) 4px)}body.has-mouse .presets-cell.active:hover:after{display:none}body.has-mouse .presets-cell.danger:hover:before,body.has-mouse .main-controls-cell.danger:hover:before{background:radial-gradient(circle 4px at center,transparent 4px,#dc0000 4px)}body.has-mouse .pad-controls-cell:hover:before,body.has-mouse .pad-controls-cell.active:hover:before{inset:1px;width:auto;height:auto;transform:none;border-radius:0;background:radial-gradient(circle 4px at center,transparent 4px,var(--cell-color, rgba(255, 255, 255, .3)) 4px)}.pad-controls-cell:active:before{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:#ffffff1a}.pad-controls-cell.active:before{background:var(--cell-color, #fff)}body.has-mouse .main-controls-cell:hover:before,body.has-mouse .main-controls-cell.active:hover:before,body.has-mouse .main-controls-cell.active.donut:hover:before{inset:1px;width:auto;height:auto;transform:none;border-radius:0;background:radial-gradient(circle 4px at center,transparent 4px,var(--cell-color, rgba(255, 255, 255, .3)) 4px);box-shadow:none}.main-controls-cell:active:before{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:#ffffff1a}.main-controls-cell.active:before{background:var(--cell-color, #fff)}.main-controls-cell.active.donut:before{inset:1px;width:auto;height:auto;transform:none;border-radius:50%;background:radial-gradient(circle 4px at center,#000 4px,var(--cell-color, #fff) 4px)}.main-controls-cell.pulsing:before{animation:dot-pulse .8s ease-in-out infinite}.beat-counter-panel{display:flex;flex-direction:column}.beat-counter-grid{cursor:pointer}.beat-counter-cell{width:32px;height:32px;display:flex;align-items:center;justify-content:center;position:relative}.beat-counter-cell:before{content:"";width:8px;height:8px;border-radius:50%;background:#ffffff1a;transition:background .05s ease}.beat-counter-cell.active:before{background:#fff}.beat-counter-cell.filled{background:radial-gradient(circle 4px at center,transparent 4px,rgba(255,255,255,.1) 4px)}.beat-counter-cell.filled:not(.active):before{background:transparent}.bpm-row{display:flex;flex-direction:row;gap:0}.bpm-minus-button,.bpm-plus-button{width:32px;height:32px;border:none;background:transparent;cursor:pointer;position:relative}.bpm-minus-button:before,.bpm-plus-button:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:#ffffff1a}body.has-mouse .bpm-minus-button:hover:before,body.has-mouse .bpm-plus-button:hover:before{inset:1px;width:auto;height:auto;transform:none;border-radius:0}body.has-mouse .bpm-minus-button:hover:before{background:radial-gradient(circle 4px at center,transparent 4px,#dc0000 4px)}body.has-mouse .bpm-plus-button:hover:before{background:radial-gradient(circle 4px at center,transparent 4px,#00a800 4px)}.bpm-minus-button:active:before,.bpm-plus-button:active:before{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%}.bpm-minus-button:active:before{background:#dc0000}.bpm-plus-button:active:before{background:#00a800}.bpm-display{width:64px;height:32px;display:flex;align-items:center;justify-content:center;color:#fffc;font-size:10px;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;cursor:pointer;position:relative;background:#000;border:1px solid #1a1a1a;border-radius:4px;box-sizing:border-box}body.has-mouse .bpm-display:hover{color:#fff}.track{display:flex;flex-direction:column;gap:0}.track-sync-button{width:32px;height:32px;border:none;background:transparent;cursor:pointer;position:relative}.track-sync-button:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:#ffffff1a}body.has-mouse .track-sync-button:hover:before{inset:1px;width:auto;height:auto;transform:none;border-radius:0;background:radial-gradient(circle 4px at center,transparent 4px,#0000ca 4px)}.track-sync-button:active:before{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:#ffffff1a}.track-sync-button.active:before{background:#0000ca}.track-eject-button{width:32px;height:32px;border:none;background:transparent;cursor:pointer;position:relative}.track-eject-button:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:#ffffff1a}body.has-mouse .track-eject-button:hover:before{inset:1px;width:auto;height:auto;transform:none;border-radius:0;background:radial-gradient(circle 4px at center,transparent 4px,#dc0000 4px)}.track-eject-button:active:before{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:#ffffff1a}.track-eject-button.active:before{background:#dc0000}@keyframes record-blink{0%,49%{background:#dc0000}50%,to{background:#ff00004d}}.track-eject-button.recording:before{animation:record-blink .5s steps(1) infinite}@keyframes armed-recording-pulse{0%,to{background:#dc0000}50%{background:#ff000080}}.track-eject-button.armed-recording:before{animation:armed-recording-pulse 1s ease-in-out infinite}.track-fader{width:32px;height:32px;border:none;background:transparent;position:relative;cursor:pointer}.track-fader:before{content:"";position:absolute;inset:1px;background:#ffffff1a}.track-fader-fill{position:absolute;left:1px;right:1px;height:2px;background:#fffc;z-index:1;pointer-events:none}.clips-container{display:flex;flex-direction:column-reverse;gap:0}.clip-button{--clip-color: #666666;position:relative;width:32px;height:32px;border:none;border-radius:0;background:transparent;color:#fff;font-size:10px;font-weight:500;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:4px;word-break:break-word;line-height:1.2;gap:2px;-webkit-user-select:none;user-select:none}.clip-button:before{content:"";position:absolute;inset:1px;background:var(--clip-color);border-radius:0;transition:border-radius .25s ease-out;z-index:0}body.has-mouse .clip-button:hover:not(.empty):not(.disabled):before{border-radius:50%;transition:border-radius .05s ease-out}.clip-button:active:before{transform:scale(.95)}.clip-button.layer-first:before{border-radius:0 0 50% 50%}body.has-mouse .clip-button.layer-first:hover:not(.empty):not(.disabled):before{border-radius:50% 50% 0 0}.clip-button.layer-last:before{border-radius:50% 50% 0 0}body.has-mouse .clip-button.layer-last:hover:not(.empty):not(.disabled):before{border-radius:0 0 50% 50%}.clip-button.layer-only:before{border-radius:50%}body.has-mouse .clip-button.layer-only:hover:not(.empty):not(.disabled):before{border-radius:0}.clip-indicator{width:8px;height:8px;border-radius:50%;opacity:0;position:relative;z-index:2}.clip-button.active .clip-indicator{opacity:1}.clip-button.active .clip-indicator.light{background:#fff}.clip-button.active .clip-indicator.dark{background:#000}@property --clip-radius{syntax: "<length-percentage>"; initial-value: 100%; inherits: false;}.clip-button.empty,.clip-button.disabled,body.has-mouse .clip-button.empty:hover,body.has-mouse .clip-button.disabled:hover{--clip-radius: 100%}.clip-button.empty{color:#ffffff4d;cursor:default}.clip-button.disabled:before{background:#ffffff1a;border-radius:0}.clip-button .disabled-line{display:none;position:absolute;top:50%;left:10%;right:10%;height:2px;background:#fff9;transform:rotate(-45deg);z-index:3;pointer-events:none}.clip-button.disabled .disabled-line{display:block}@keyframes cue-blink{0%,49%{opacity:1}50%,to{opacity:0}}.clip-button.cued .clip-indicator{opacity:1;animation:cue-blink .5s steps(1) infinite}.clip-button.cued .clip-indicator.light{background:#fffc}.clip-button.cued .clip-indicator.dark{background:#0009}.clip-button.active.cued-off .clip-indicator{animation:cue-blink .5s steps(1) infinite}.layer-index{display:none;position:absolute;top:50%;right:4px;transform:translateY(-50%);font-size:9px;font-weight:700;pointer-events:none;z-index:2}.layer-index.light{color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.5)}.layer-index.dark{color:#000c;text-shadow:0 1px 2px rgba(255,255,255,.3)}.track.editing .layer-index{display:block}.track.editing-track{outline:2px dashed #ffffff;outline-offset:-2px;animation:pulse-outline 1.5s ease-in-out infinite}@keyframes pulse-outline{0%,to{outline-color:#fff}50%{outline-color:#fff6}}.clip-button.swap-source,.presets-cell.swap-source{outline:2px solid rgba(255,255,255,.8);outline-offset:-2px}.clip-button.editing{z-index:1}.clip-button.editing:after{content:"";position:absolute;inset:-3px;width:auto;height:auto;pointer-events:none;background:linear-gradient(90deg,#fff 50%,#000 50%) 0 0 / 8px 3px repeat-x,linear-gradient(90deg,#fff 50%,#000 50%) 0 100% / 8px 3px repeat-x,linear-gradient(0deg,#fff 50%,#000 50%) 0 0 / 3px 8px repeat-y,linear-gradient(0deg,#fff 50%,#000 50%) 100% 0 / 3px 8px repeat-y;animation:marching-ants .4s linear infinite;transform:none;z-index:2}@keyframes marching-ants{to{background-position:8px 0,-8px 100%,0 -8px,100% 8px}}.transport-group{display:flex;flex-direction:column;align-items:center;gap:4px}.transport{display:flex;flex-direction:column;gap:4px;background:#000c;border-radius:8px;padding:4px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.transport-row{display:flex;align-items:center;justify-content:center;gap:4px}.edit-controls{position:absolute;bottom:16px;left:16px;display:flex;gap:4px;background:#000c;border-radius:8px;padding:4px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.view-controls{position:absolute;bottom:16px;right:16px;z-index:10;display:flex;gap:4px;background:#000c;border-radius:8px;padding:4px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.clip-editor-save-footer{margin-top:auto;padding-top:12px;display:flex;gap:4px}.toolbar-button{width:32px;height:32px;border:none;border-radius:4px;background:#ffffff1a;color:#fff;font-size:16px;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center;position:relative;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}body.has-mouse .toolbar-button:hover{background:#fff3}.play-button .material-symbols-outlined{font-size:2em}.play-button.paused .material-symbols-outlined{transform:rotate(90deg)}.pause-button .material-symbols-outlined{font-size:1.4em}.stop-button .material-symbols-outlined{font-size:1.1em;font-variation-settings:"FILL" 0,"wght" 300,"GRAD" 0,"opsz" 20}.stop-button.stop-mode .material-symbols-outlined{font-size:2em;font-variation-settings:"FILL" 0,"wght" 200,"GRAD" 0,"opsz" 20}.mute-button .material-symbols-outlined{font-size:1.4em;font-variation-settings:"FILL" 0,"wght" 300,"GRAD" 0,"opsz" 20}.settings-button .material-symbols-outlined,.fullscreen-button .material-symbols-outlined{font-size:1.4em}.toolbar-button.has-changes:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#ff6500;border-radius:50%}.toolbar-button.has-dot:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#fff;border-radius:50%}.toolbar-button.has-dot[data-dot-color=green]:after{background:#00a800}.remote-button .material-symbols-outlined{font-size:1.4em}#settings-panel.remote-only .settings-toolbar{display:none}body.ui-window,body.ui-window *{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}body.ui-window input,body.ui-window textarea{user-select:text;-webkit-user-select:text}.play-button,.pause-button,.stop-button{position:relative}.play-button.playing:after,.play-button.standby:after,.play-button.paused:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#00a800;border-radius:50%}.play-button.standby:after{animation:dot-pulse .8s ease-in-out infinite}.play-button.session-recording.playing:after{background:#dc0000}.pause-button.playing:after,.pause-button.standby:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#ff0;border-radius:50%}.pause-button.standby:after{animation:dot-pulse .8s ease-in-out infinite}@keyframes dot-pulse{0%,to{opacity:1}50%{opacity:.3}}@keyframes param-revert-flash{0%{background-color:#ffffff26}to{background-color:transparent}}.param-reverted{animation:param-revert-flash .3s ease}.session-standby:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#dc0000;border-radius:50%;animation:dot-pulse .8s ease-in-out infinite}.session-actions{display:flex;flex-direction:column;gap:4px;padding:8px}.session-action-btn{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;border:none;background:#ffffff0d;color:#ffffffe6;font-size:12px;cursor:pointer;border-radius:6px;text-align:left;transition:background .1s ease}body.has-mouse .session-action-btn:hover:not(:disabled){background:#ffffff1a}.session-action-btn:disabled{opacity:.35;cursor:default}.session-action-btn i{font-size:16px;opacity:.7}.stop-button:active{background:#ff646480}.toolbar-button.view-active:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;border-radius:50%;background:#ff0}.toolbar-button.edit-mode-active:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;border-radius:50%;background:#ff0}.view-mode-options{position:absolute;bottom:100%;left:0;display:flex;flex-direction:column;gap:4px;margin-bottom:4px;padding:4px;background:#000c;border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;pointer-events:none;transition:opacity .15s ease}.view-mode-options.visible{opacity:1;pointer-events:auto}.view-option-button{position:relative}.view-option-button.wrap-disabled:after,.view-option-button.fog-disabled:after,.view-option-button.post-disabled:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#dc0000;border-radius:50%}.view-option-button.move-enabled:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#00a800;border-radius:50%}.view-option-button.map-enabled:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#0097ff;border-radius:50%}.toolbar-button.project-button.panel-open{background:#ffffff4d}.composition-list{flex:1;overflow-y:auto;padding:4px 0}.composition-empty{padding:16px;text-align:center;color:#fff6;font-size:12px}.composition-item{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;cursor:pointer;color:#ffffffb3;font-size:12px;transition:background .1s ease}body.has-mouse .composition-item:hover{background:#ffffff0d}.composition-item.active{color:#fff;background:#ffffff1a}.composition-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composition-item-actions{display:flex;gap:4px;margin-left:8px}.composition-item-delete{background:none;border:none;color:#ffffff4d;cursor:pointer;padding:2px 4px;font-size:12px}body.has-mouse .composition-item-delete:hover{color:#dc0000}.composition-item-details{background:none;border:none;color:#ffffff4d;cursor:pointer;padding:2px 4px;font-size:12px;transition:color .1s ease}body.has-mouse .composition-item-details:hover:not(:disabled){color:#fff}.composition-item-details:disabled{opacity:.3;cursor:default}.composition-actions{display:flex;gap:4px;padding:8px 12px;border-top:1px solid rgba(255,255,255,.1)}.composition-action-btn{flex:1;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:4px;color:#ffffffb3;padding:6px 8px;font-size:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;transition:all .1s ease}body.has-mouse .composition-action-btn:hover{background:#ffffff1a;color:#fff}.composition-action-btn.primary{background:#ffffff26;color:#fff}.composition-save-modal{display:none;padding:12px 16px;border-top:1px solid rgba(255,255,255,.1)}.composition-save-modal.visible{display:block}.composition-save-input{width:100%;padding:6px 8px;background:#ffffff0d;border:1px solid rgba(255,255,255,.15);border-radius:3px;color:#fff;font-size:12px;margin-bottom:8px;box-sizing:border-box}.composition-save-input:focus{outline:none;border-color:#ffffff4d}.composition-save-buttons{display:flex;gap:8px}#project-panel{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;pointer-events:none;transition:opacity .2s ease}#project-panel.visible{opacity:1;pointer-events:auto}#project-panel .panel-content{background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:8px;width:680px;height:500px;overflow:hidden;display:flex;flex-direction:column}.project-panel-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;color:#fff;font-size:14px;font-weight:500;-webkit-user-select:none;user-select:none;border-bottom:1px solid rgba(255,255,255,.1)}.project-panel-main{display:flex;flex:1;overflow:hidden}.project-toolbar{display:flex;flex-direction:column;gap:2px;padding:8px;border-right:1px solid rgba(255,255,255,.1)}.project-tab-btn{width:36px;height:36px;border:none;border-radius:4px;background:transparent;color:#ffffff80;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;transition:all .1s ease}body.has-mouse .project-tab-btn:hover{color:#fffc}.project-tab-btn.active{background:#ffffff1a;color:#ffffffe6}.project-tab-btn[data-tab=session]{font-size:19px}.project-tab-btn[data-tab=composition]{font-size:20px}.project-content{flex:1;overflow-y:auto;display:flex;flex-direction:column}.music-track-list{display:flex;flex-direction:column;gap:4px;padding:8px;overflow-y:auto}.music-track-item{display:flex;align-items:center;padding:12px;background:#ffffff0d;border:none;border-radius:6px;cursor:pointer;text-align:left;transition:background .15s ease}body.has-mouse .music-track-item:hover{background:#ffffff1a}.music-track-item.active{background:#64ff9633}.music-track-info{flex:1;background:none;border:none;padding:0;cursor:pointer;text-align:left}.music-track-title{color:#fff;font-size:13px;font-weight:500;margin-bottom:2px;display:flex;align-items:center;gap:6px}.music-track-meta{color:#ffffff80;font-size:11px}.music-lyrics-icon{font-size:12px;opacity:.5}.music-track-empty{color:#fff6;font-size:12px;text-align:center;padding:20px}.music-upload-section{padding:12px;border-top:1px solid rgba(255,255,255,.1)}.music-drop-zone{border:2px dashed rgba(255,255,255,.15);border-radius:8px;padding:16px;text-align:center;color:#ffffff80;cursor:pointer;transition:all .15s ease;display:flex;flex-direction:column;align-items:center;gap:6px}.music-drop-zone i{font-size:20px}.music-drop-zone .drop-zone-text{font-size:11px}body.has-mouse .music-drop-zone:hover{border-color:#fff6;color:#ffffffb3}.music-drop-zone.drag-over{border-color:rgba(var(--accent-rgb),.6);background:rgba(var(--accent-rgb),.1);color:#fff}.music-drop-zone.analyzing{pointer-events:none;opacity:.6;border-style:solid}.music-track-item.uploaded .music-track-meta{color:rgba(var(--accent-rgb),.7)}.music-track-edit{background:none;border:none;color:#ffffff4d;padding:8px;cursor:pointer;opacity:0;transition:opacity .15s ease,color .15s ease}body.has-mouse .music-track-item:hover .music-track-edit{opacity:1}body.has-mouse .music-track-edit:hover{color:#fffc}.music-track-item.editing .music-track-edit{opacity:1;color:rgba(var(--accent-rgb),.8)}.music-track-eject{background:none;border:none;color:#ffffff80;padding:8px;cursor:pointer;transition:color .15s ease}body.has-mouse .music-track-eject:hover{color:#fff}.music-editor-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1400;opacity:0;pointer-events:none;transition:opacity .15s ease}.music-editor-overlay.visible{opacity:1;pointer-events:auto}.music-editor{background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:8px;width:90vw;max-width:1400px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.music-editor-header{padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.1)}.music-editor-header-controls{display:flex;align-items:center;gap:8px}.music-editor-view-toggle{display:flex;gap:2px;background:#ffffff0d;border-radius:4px;padding:2px}.music-editor-eject-btn{width:28px;height:28px;border:none;background:#ffffff0d;color:#ffffffb3;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .1s ease}body.has-mouse .music-editor-eject-btn:hover{background:#ffffff26;color:#fff}.music-editor-view-toggle-btn{width:24px;height:24px;border:none;background:transparent;color:#ffffff80;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .1s ease}body.has-mouse .music-editor-view-toggle-btn:hover{color:#ffffffe6}.music-editor-view-toggle-btn.active{background:#ffffff26;color:#fff}.music-editor-detail-view,.music-editor-grid-view{display:flex;flex-direction:column;flex:1;min-height:0}.music-editor.view-grid .music-editor-detail-view,.music-editor.view-detail .music-editor-grid-view{display:none}.music-editor-grid-view{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;padding:16px;overflow-y:auto;align-content:start}.music-editor-grid-tile{position:relative;display:flex;flex-direction:column;gap:8px;padding:0;border:1px solid rgba(255,255,255,.08);background:#ffffff08;border-radius:6px;cursor:pointer;overflow:hidden;transition:all .1s ease;text-align:left;color:#ffffffe6}.music-editor-grid-tile-edit,.music-editor-grid-tile-meta{position:absolute;top:6px;height:26px;display:flex;align-items:center;justify-content:center;background:#000000bf;color:#ffffffe6;border-radius:4px;opacity:0;transition:opacity .1s ease,background .1s ease}.music-editor-grid-tile-edit{left:6px;width:26px;font-size:14px;pointer-events:none}.music-editor-grid-tile-meta{right:6px;padding:0 8px;font-size:10px;letter-spacing:.3px;white-space:nowrap;pointer-events:none}body.has-mouse .music-editor-grid-tile:hover .music-editor-grid-tile-edit,body.has-mouse .music-editor-grid-tile:hover .music-editor-grid-tile-meta{opacity:1}body.has-mouse .music-editor-grid-tile:hover .music-editor-grid-tile-edit{pointer-events:auto}body.has-mouse .music-editor-grid-tile-edit:hover{background:#000000e6}body.has-mouse .music-editor-grid-tile:hover{background:#ffffff14;border-color:#fff3}.music-editor-grid-tile.active{border-color:#fff6;background:#ffffff1a}.music-editor-grid-tile-image{aspect-ratio:1;background:#ffffff0d;display:flex;align-items:center;justify-content:center;color:#ffffff40;font-size:48px;overflow:hidden}.music-editor-grid-tile-image img{width:100%;height:100%;object-fit:cover;display:block}.music-editor-grid-tile-title{padding:0 10px 10px;font-size:11px;letter-spacing:.3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:4px}.music-editor-grid-tile-title .music-lyrics-icon{font-size:12px;opacity:.5;flex-shrink:0}.music-editor-grid-upload-tile{border-style:dashed;cursor:pointer}.music-editor-grid-upload-tile.dragover{border-color:#ffffff80;background:#ffffff14}.music-editor-grid-upload-tile .music-editor-grid-tile-image{font-size:32px;color:#fff6}.music-editor-title{color:#fff;font-size:14px;font-weight:500;-webkit-user-select:none;user-select:none}.music-editor-waveform-wrapper{position:relative;width:100%;height:280px;background:#000;flex-shrink:0}.music-editor-waveform-legend{padding:10px 16px;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#ffffff80}.music-editor-waveform-wrapper .waveform-container{height:100%;border-radius:0}.music-editor-content{display:grid;grid-template-columns:minmax(280px,1fr) 2fr;gap:0;flex:1;min-height:0;overflow:hidden}.music-editor-library{display:flex;flex-direction:column;border-right:1px solid rgba(255,255,255,.08);min-height:0;padding:12px;gap:8px}.music-editor-library-tabs{display:flex;gap:2px;border-bottom:1px solid rgba(255,255,255,.08);margin:-12px -12px 0;padding:0 12px}.music-editor-library-tab{background:transparent;border:none;color:#ffffff80;font-size:12px;font-weight:500;padding:10px 12px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .1s ease,border-color .1s ease}body.has-mouse .music-editor-library-tab:hover{color:#ffffffd9}.music-editor-library-tab.active{color:#fff;border-bottom-color:#ffffffb3}.music-editor-library-panel{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0}.music-editor-track-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:2px;min-height:0}.music-editor-track-row{background:#ffffff0a;border:1px solid transparent;border-radius:4px;padding:10px 12px;text-align:left;cursor:pointer;transition:all .1s ease;display:flex;flex-direction:column;gap:2px;color:#fff}body.has-mouse .music-editor-track-row:hover{background:#ffffff14}.music-editor-track-row.active{background:#ffffff0f;border-color:#ffffff40}.music-editor-track-row-title{font-size:12px;color:#fffffff2;display:flex;align-items:center;gap:6px}.music-editor-track-row-meta{font-size:10px;color:#ffffff73;letter-spacing:.3px}.music-editor-drop-zone{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 12px;border:1px dashed rgba(255,255,255,.18);border-radius:4px;color:#ffffff80;font-size:11px;cursor:pointer;transition:all .1s ease;flex-shrink:0}body.has-mouse .music-editor-drop-zone:hover,.music-editor-drop-zone.dragover{border-color:#fff6;color:#ffffffd9;background:#ffffff0a}.music-editor-detail{padding:12px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:12px;min-height:0}.music-editor-future-params{min-height:0;display:flex;flex-direction:column;gap:8px}.music-editor-time-display{display:flex;align-items:baseline;gap:8px;padding:6px 12px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:4px}.music-editor-time-display-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#fff9}.music-editor-time-display-value{font-family:var(--font-mono);font-size:12px;color:#fff;margin-left:auto}.music-editor-section-panel,.music-editor-lyrics-panel{display:flex;flex-direction:column;gap:6px;padding:10px 12px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:4px}.music-editor-lyrics-panel-title{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#fff9}.music-editor-lyrics-remove{align-self:flex-start;height:24px;padding:0 10px;border:1px solid rgba(255,255,255,.15);border-radius:3px;background:#ffffff0a;color:#ffffffb3;font-size:11px;cursor:pointer;transition:border-color .1s ease,color .1s ease}body.has-mouse .music-editor-lyrics-remove:hover{border-color:#fff6;color:#fff}.music-editor-section-panel-title{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#fff9}.music-editor-section-panel-row{display:flex;align-items:center;gap:8px}.section-type-empty{height:24px;width:24px;flex-shrink:0;border:1px solid rgba(255,255,255,.15);border-radius:3px;cursor:pointer;position:relative;padding:0;background:#ffffff0a;transition:border-color .1s ease}body.has-mouse .section-type-empty:hover{border-color:#ffffff80}.section-type-empty:after{content:"";position:absolute;top:50%;left:10%;right:10%;height:1px;background:#fff9;transform:rotate(-45deg);pointer-events:none}.music-editor-section-swatches{display:flex;gap:4px}.section-type-swatch{width:24px;height:24px;flex:0 0 24px;border:1px solid rgba(255,255,255,.15);border-radius:3px;cursor:pointer;position:relative;padding:0;transition:border-color .1s ease}body.has-mouse .section-type-swatch:hover{border-color:#ffffff80}.section-type-swatch.selected:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:6px;height:6px;border-radius:50%;background:#fff}.section-type-swatch.selected.swatch-light:after{background:#000}.music-editor-section-panel-row button{background:#ffffff1a;border:none;border-radius:4px;padding:6px 12px;color:#ffffffb3;font-size:11px;cursor:pointer;transition:all .15s ease;margin-left:auto}.music-editor-section-panel-row button+button{margin-left:4px}body.has-mouse .music-editor-section-panel-row button:hover{background:#fff3;color:#fff}.music-editor-section-panel-row .track-editor-save{background:rgba(var(--accent-rgb),.2)!important;color:#fff!important}body.has-mouse .music-editor-section-panel-row .track-editor-save:hover{background:rgba(var(--accent-rgb),.3)!important}.music-editor-section-panel-row .track-editor-delete{background:#ff646433!important;color:#fff!important}body.has-mouse .music-editor-section-panel-row .track-editor-delete:hover{background:#ff64644d!important}.music-editor-detail-view>.track-editor-actions{padding:10px 16px;margin-top:0;border-top:1px solid rgba(255,255,255,.08)}.music-track-editor{background:#0006;padding:12px;border-bottom:1px solid rgba(255,255,255,.1)}.track-editor-params{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.music-editor-params-row{display:grid;grid-template-columns:repeat(4,1fr);gap:0 12px;align-items:center;padding:0 16px 10px}.track-editor-actions{display:flex;justify-content:space-between;align-items:center;margin-top:3px}.track-editor-actions-right{display:flex;gap:8px;margin-left:auto}.track-editor-actions button{background:#ffffff1a;border:none;border-radius:4px;padding:6px 12px;color:#ffffffb3;font-size:11px;cursor:pointer;transition:all .15s ease}body.has-mouse .track-editor-actions button:hover{background:#fff3;color:#fff}.track-editor-save,.track-editor-delete{color:#fff!important}.track-editor-save{background:rgba(var(--accent-rgb),.2)!important}body.has-mouse .track-editor-save:hover{background:rgba(var(--accent-rgb),.3)!important}.track-editor-delete{background:#ff646433!important}body.has-mouse .track-editor-delete:hover{background:#ff64644d!important}.pattern-editor-section{margin-top:8px;margin-bottom:8px;border-top:1px solid rgba(255,255,255,.08);padding-top:8px;-webkit-user-select:none;user-select:none}.pattern-editor-section>label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#ffffff80;margin-bottom:6px}.pattern-table{display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:auto 1fr;gap:2px}.pattern-col-header{background:#ffffff0f;border-radius:2px;margin:0 2px;padding:4px 0;text-align:center;font-size:9px;letter-spacing:.5px;text-transform:uppercase;color:#fff6;cursor:pointer;transition:all .1s ease}body.has-mouse .pattern-col-header:hover{background:#ffffff1a;color:#fff9}.pattern-col-header.selected{background:#ffffff26;color:#ffffffe6}.pattern-col-grid{border-radius:3px;padding:2px;transition:all .1s ease}.pattern-col-grid.selected{background:#ffffff0a}.pattern-button-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:2px}.pattern-grid-btn{border:none;border-radius:2px;background:#ffffff1a;cursor:pointer;padding:0;aspect-ratio:1;min-width:0;transition:all .1s ease}body.has-mouse .pattern-grid-btn:hover{background:#ffffff26}.pattern-grid-btn.active{background:#ffffffe6}.pattern-sidebar{grid-row:1 / -1;grid-column:6;display:flex;flex-direction:column;gap:2px;padding:2px;justify-content:center}.pattern-sidebar button{flex:1;border:none;border-radius:2px;background:#ffffff1a;color:#ffffff80;font-size:9px;letter-spacing:.5px;text-transform:uppercase;cursor:pointer;padding:4px;transition:all .1s ease}body.has-mouse .pattern-sidebar button:hover:not(:disabled){background:#ffffff26;color:#ffffffe6}.pattern-sidebar button:disabled{opacity:.3;cursor:default}.pattern-step-select{width:100%;background:#ffffff1a;border:none;border-radius:2px;color:#ffffffb3;font-size:9px;letter-spacing:.5px;padding:4px;cursor:pointer;text-transform:uppercase}.pattern-col-grid .pattern-step-select{margin-top:2px}.pattern-step-select:disabled{opacity:.3;cursor:default}.pattern-step-select option{background:#222}#edit-panel{position:absolute;top:0;right:0;width:420px;height:100vh;background:#000000d9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:100;padding:16px;transform:translate(100%);transition:transform .2s ease;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;pointer-events:auto}#edit-panel.visible{transform:translate(0)}.edit-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.edit-panel-title{color:#fff;font-size:14px;font-weight:500;-webkit-user-select:none;user-select:none}.edit-panel-title.section-title{margin-top:20px;padding-top:16px;border-top:1px solid rgba(255,255,255,.1)}.edit-panel-close{background:none;border:none;color:#fff9;font-size:20px;cursor:pointer;padding:4px 8px}body.has-mouse .edit-panel-close:hover{color:#fff}.clip-header-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}.clip-name-input{flex:1;padding:8px 10px;border:none;border-radius:4px;background:#ffffff1a;color:#fff;font-size:14px;font-weight:500}.clip-name-input:focus{outline:none;background:#ffffff26}.clip-name-input::placeholder{color:#fff6}.clip-enabled-toggle{flex-shrink:0}.clip-meta-row{display:flex;align-items:flex-end;gap:12px;margin-bottom:12px}.meta-field{position:relative;flex:1;display:flex;flex-direction:column;gap:4px}.meta-field label{color:#fff9;font-size:10px;text-transform:uppercase;letter-spacing:.5px;-webkit-user-select:none;user-select:none}.meta-field input[type=color]{width:100%;height:32px;padding:0;border:none;border-radius:4px;background:#ffffff1a;cursor:pointer;box-sizing:border-box}.meta-field .edit-select{width:100%;height:32px;box-sizing:border-box}.meta-field .integer-input{width:100%;height:32px}.meta-field .integer-input input{width:46px;height:32px;box-sizing:border-box}.meta-field .integer-input button{width:25px;height:32px;box-sizing:border-box}.clip-color-container{position:relative;width:100%;height:32px}.clip-color-button{width:100%;height:100%;border:none;border-radius:4px;cursor:pointer;box-sizing:border-box}.clip-color-input-hidden{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.clip-color-palette{display:none;position:absolute;top:0;left:0;flex-wrap:wrap;width:100%;border-radius:4px;overflow:hidden;z-index:100}.clip-color-palette.visible{display:flex}.palette-swatch{width:12.5%;height:16px;cursor:pointer;box-sizing:border-box}.edit-field{margin-bottom:16px}.edit-field-row{display:flex;gap:12px}.edit-field-row .edit-field{flex:1;margin-bottom:16px}.edit-field label{display:block;color:#fff9;font-size:11px;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;-webkit-user-select:none;user-select:none}.edit-field input[type=text],.edit-field input[type=number]{width:100%;padding:8px 10px;border:none;border-radius:4px;background:#ffffff1a;color:#fff;font-size:14px}.edit-field input:focus{outline:none;background:#ffffff26}.edit-field input[type=color]{width:100%;height:36px;padding:2px;border:none;border-radius:4px;background:#ffffff1a;cursor:pointer}.edit-field input[type=color]::-webkit-color-swatch-wrapper{padding:2px}.edit-field input[type=color]::-webkit-color-swatch{border:none;border-radius:2px}.edit-field select,.edit-select{width:100%;padding:5px 10px;border:none;border-radius:4px;background:#ffffff1a;color:#fff;font-size:12px;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='rgba(255,255,255,0.6)' d='M6 8L2 4h8z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.edit-field select:focus,.edit-select:focus{outline:none;background-color:#ffffff26}.edit-field select option,.edit-select option{background:#2a2a2a;color:#fff}.edit-select:disabled{cursor:default;color:#ffffff26;pointer-events:none}.icon-select{display:flex;gap:4px}.icon-select-btn{display:flex;align-items:center;justify-content:center;width:32px;height:28px;padding:0;border:none;border-radius:4px;background:#ffffff14;color:#ffffff80;cursor:pointer;transition:all .15s ease;font-size:16px}body.has-mouse .icon-select-btn:hover{background:#ffffff26;color:#fffc}.icon-select-btn.active{background:rgba(var(--accent-rgb),.25);color:rgb(var(--accent-rgb))}.icon-select-btn i{font-size:18px}.param-control-animatable{display:flex;align-items:center;gap:6px}.param-control-animatable .anim-slider{flex:2;min-width:0}.param-control-animatable .anim-icons{flex:1;display:flex;gap:2px;justify-content:flex-end}.anim-icon-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:3px;background:transparent;color:#ffffff59;cursor:pointer;transition:all .15s ease}body.has-mouse .anim-icon-btn:hover{background:#ffffff1a;color:#ffffffb3}.anim-icon-btn.active{background:rgba(var(--accent-rgb),.2);color:rgb(var(--accent-rgb))}.anim-icon-btn i{font-size:14px}.anim-subparams{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;margin-top:6px;margin-left:0;padding:8px 10px;background:#ffffff08;border-radius:4px}.anim-subparam{display:flex;align-items:center;gap:6px}.anim-subparam label{color:#ffffff80;font-size:11px;min-width:38px;flex-shrink:0}.anim-subparam-slider{flex:1;min-width:0;display:flex}.anim-subparam-slider .param-inline-slider-fill{border-radius:3px}.anim-subparam-slider .anim-subparam-input{flex:1}.anim-subparam-input{width:100%;padding:4px 6px;border:none;border-radius:3px;background:#ffffff14;color:#fffc;font-size:11px;font-variant-numeric:tabular-nums;text-align:left;outline:none;cursor:ew-resize}.anim-subparam-input:focus{background:#ffffff1f;color:#fff;cursor:text}.variant-row{display:flex;align-items:center;gap:4px;cursor:grab;transition:opacity .15s ease}.variant-row.dragging{opacity:.5;cursor:grabbing}.variant-row.drag-over{border-top:2px solid rgba(var(--accent-rgb),.8);margin-top:-2px}.variant-enabled-toggle{margin-right:2px}.variant-delete{padding:4px 8px;border:none;border-radius:3px;background:transparent;color:#ffffff4d;font-size:18px;font-weight:300;line-height:1;cursor:pointer;transition:all .15s ease}body.has-mouse .variant-delete:hover:not(:disabled){background:#ff505033;color:#ff6464e6}.variant-delete:disabled{opacity:.2;cursor:default}.variant-delete.content-delete{flex-shrink:0}.content-picker-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;pointer-events:auto}.content-picker{background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:8px;min-width:350px;max-width:540px;height:50vh;overflow:hidden;display:flex;flex-direction:column}.content-picker-header{padding:12px 12px 8px}.content-picker-title{color:#fff;font-size:14px;font-weight:500}.content-picker-search{display:flex;align-items:center;gap:8px;margin:0 12px 8px;padding:6px 10px;background:#ffffff14;border-radius:4px}.content-picker-search-icon{color:#fff6;font-size:14px}.content-picker-search-input{flex:1;background:transparent;border:none;outline:none;color:#fff;font-size:13px}.content-picker-search-input::placeholder{color:#fff6}.content-picker-filters{display:flex;gap:6px;padding:0 12px 8px;flex-wrap:wrap}.content-picker-filter-chip{display:flex;align-items:center;gap:5px;padding:4px 8px;background:#ffffff14;border:1px solid transparent;border-radius:4px;color:#fff9;font-size:11px;cursor:pointer;transition:all .15s ease}body.has-mouse .content-picker-filter-chip:hover{background:#ffffff1f;color:#fffc}.content-picker-filter-chip.active{color:#fff}.content-picker-filter-chip.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.content-picker-filter-chip i{font-size:12px}.content-picker-filter-chip[data-type=visual] i{color:rgb(var(--type-visual))}.content-picker-filter-chip[data-type=shader] i{color:rgb(var(--type-shader))}.content-picker-filter-chip[data-type=actor] i{color:rgb(var(--type-actor))}.content-picker-filter-chip[data-type=post] i{color:rgb(var(--type-post))}.content-picker-filter-chip[data-type=particles] i{color:rgb(var(--type-particles))}.content-picker-filter-chip[data-type=global] i{color:rgb(var(--type-global))}body.has-mouse .content-picker-filter-chip[data-type=visual]:hover,.content-picker-filter-chip[data-type=visual].active{background:rgba(var(--type-visual),.15);border-color:rgba(var(--type-visual),.4)}body.has-mouse .content-picker-filter-chip[data-type=shader]:hover,.content-picker-filter-chip[data-type=shader].active{background:rgba(var(--type-shader),.15);border-color:rgba(var(--type-shader),.4)}body.has-mouse .content-picker-filter-chip[data-type=actor]:hover,.content-picker-filter-chip[data-type=actor].active{background:rgba(var(--type-actor),.15);border-color:rgba(var(--type-actor),.4)}body.has-mouse .content-picker-filter-chip[data-type=post]:hover,.content-picker-filter-chip[data-type=post].active{background:rgba(var(--type-post),.15);border-color:rgba(var(--type-post),.4)}body.has-mouse .content-picker-filter-chip[data-type=particles]:hover,.content-picker-filter-chip[data-type=particles].active{background:rgba(var(--type-particles),.15);border-color:rgba(var(--type-particles),.4)}body.has-mouse .content-picker-filter-chip[data-type=global]:hover,.content-picker-filter-chip[data-type=global].active{background:rgba(var(--type-global),.15);border-color:rgba(var(--type-global),.4)}.content-picker-empty{padding:24px 16px;text-align:center;color:#fff6;font-size:13px}.content-picker-list{overflow-y:auto;padding:8px;border-top:1px solid rgba(255,255,255,.08)}.content-picker-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:4px;cursor:pointer;transition:background .15s ease}body.has-mouse .content-picker-item:hover{background:#ffffff1a}.content-picker-item-name{color:#ffffffe6;font-size:13px}.content-picker-template-icon{margin-left:auto;color:#ffffff4d;font-size:12px}.content-picker-thumb{width:32px;height:32px;border-radius:3px;object-fit:cover;flex-shrink:0}.content-picker-section{margin-bottom:4px}.content-picker-section:last-child{margin-bottom:0}.content-picker-section-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;cursor:pointer;border-radius:4px;transition:background .15s ease}body.has-mouse .content-picker-section-header:hover{background:#ffffff0d}.content-picker-section-header-left{display:flex;align-items:center;gap:8px}.content-picker-chevron{font-size:12px;color:#ffffff80;transition:transform .15s ease}.content-picker-section.collapsed .content-picker-chevron{transform:rotate(-90deg)}.content-picker-section-label{color:#ffffffb3;font-size:11px;text-transform:uppercase;letter-spacing:.5px;font-weight:500}.content-picker-section-count{color:#fff6;font-size:11px;min-width:20px;text-align:right}.content-picker-section-content{padding-left:12px;overflow:hidden;transition:max-height .2s ease}.content-picker-section.collapsed .content-picker-section-content{display:none}.content-picker-section .content-picker-item{padding:8px 10px}.content-picker.grid-mode{width:90vw;max-width:1642px}.content-picker-header{display:flex;align-items:center;justify-content:space-between}.content-picker-view-toggle{background:#ffffff14;border:none;border-radius:4px;color:#fff9;cursor:pointer;padding:4px 6px;font-size:14px;line-height:1;transition:all .1s ease}body.has-mouse .content-picker-view-toggle:hover{background:#ffffff26;color:#ffffffe6}.content-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,128px);gap:8px}.content-picker-grid-item{width:128px;cursor:pointer}body.has-mouse .content-picker-grid-item:hover .content-picker-grid-preview{border-color:#ffffff4d}.content-picker-grid-preview{width:128px;height:128px;background:#000;border-radius:4px;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.08);transition:border-color .1s ease}.content-picker-grid-thumb{width:100%;height:100%;object-fit:cover;position:absolute;top:0;left:0}.content-picker-grid-canvas{width:100%;height:100%;position:absolute;top:0;left:0}.content-picker-grid-icon.content-type-icon{font-size:28px;color:#fff3}.content-picker-grid-name{font-size:11px;color:#ffffffb3;text-align:center;padding:4px 2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-picker-grid-section-header{display:flex;align-items:center;gap:8px;padding:8px 12px 0;color:#fff9;font-size:11px;text-transform:uppercase;letter-spacing:.5px}.section-header-with-action{display:flex;align-items:center;gap:8px}.section-add-button{width:22px;height:22px;padding:0;border:none;border-radius:4px;background:#ffffff1a;color:#fff9;font-size:12px;line-height:1;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center}body.has-mouse .section-add-button:hover{background:#fff3;color:#fff}.content-name{color:#ffffffe6;font-size:13px;font-weight:500}.content-type{color:#ffffff80;font-size:10px;text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;background:#ffffff1a;border-radius:3px}.content-type-icon{color:#ffffff80;font-size:14px;flex-shrink:0}.inline-preview-container{border-radius:6px;overflow:hidden;background:#000;cursor:pointer;position:relative;border:1px solid #444}.preview-border-overlay{position:fixed;border:1px solid #444;box-sizing:border-box;pointer-events:none;display:none;z-index:10}.inline-preview-container canvas{display:block}.inline-preview-container.disabled{opacity:.4}.inline-preview-container.disabled:after{content:"";position:absolute;inset:0;background:#0000004d}.inline-preview-wrapper{display:flex;align-items:stretch;gap:8px;margin-bottom:8px;width:50%}.inline-preview-wrapper .inline-preview-container{flex:1;margin-bottom:0}.preview-controls-container{flex:1;display:flex;flex-direction:column;gap:4px}.preview-controls-label{font-size:9px;font-weight:600;color:#ffffff80;text-transform:uppercase;letter-spacing:.5px}.preview-controls-label:not(:first-child){margin-top:6px}.preview-control-button{flex:1;padding:0 8px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:4px;color:#fff9;font-size:10px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;gap:4px;white-space:nowrap}body.has-mouse .preview-control-button:hover{background:#fff3;border-color:#fff6;color:#fff}.preview-control-button.active{background:rgba(var(--accent-rgb),.2);border-color:rgba(var(--accent-rgb),.5);color:rgb(var(--accent-rgb))}.content-params{padding:0}.content-params:has(.inline-preview-wrapper){padding-top:12px}.content-params.collapsed{display:none}.params-category{margin-top:8px}.params-category:first-child,.inline-preview-container+.params-category{margin-top:0}.category-header{display:flex;align-items:center;gap:6px;padding:6px 10px;min-height:32px;position:relative;box-sizing:border-box;cursor:pointer;-webkit-user-select:none;user-select:none;background:#ffffff0d;border-radius:4px;margin-bottom:2px;transition:background .15s ease}body.has-mouse .category-header:hover{background:#ffffff1a}.category-toggle{display:flex;align-items:center;margin-right:2px}.category-toggle-spacer{width:16px;margin-right:2px}.category-title{color:#ffffffb3;font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;flex:1}.category-arrow{font-size:12px;color:#ffffff80;width:12px;margin-left:auto;transition:transform .15s ease}.params-category.disabled .category-title{opacity:.35}.stack-add-btn{padding:2px 6px;border:none;border-radius:3px;background:transparent;color:#ffffff4d;font-size:14px;font-weight:300;line-height:1;cursor:pointer;opacity:0;flex-shrink:0;transition:opacity .15s ease,background .15s ease}body.has-mouse .category-header:hover .stack-add-btn{opacity:1}body.has-mouse .stack-add-btn:hover{background:#50ff5033;color:#64ff64e6}.params-category.has-toggle.disabled .category-arrow,.params-category.empty .category-arrow{visibility:hidden}.params-category.has-header-select .category-title{flex:0 0 auto}.params-category.has-header-select .category-arrow{margin-left:0}.category-header-select{margin-left:8px;flex:1 1 auto;min-width:0;height:24px;font-size:11px}.params-category.disabled .category-content{opacity:.4;pointer-events:none}.category-content{padding:8px 0 4px}.category-content.collapsed{display:none}.category-section-title{color:#fff;font-size:14px;font-weight:500;-webkit-user-select:none;user-select:none;margin-top:16px;padding-top:12px;margin-bottom:8px;border-top:1px solid rgba(255,255,255,.1)}.category-section-title:first-child{border-top:none;margin-top:8px;padding-top:0}.category-section-title i{margin-right:6px}.param-row{display:grid;grid-template-columns:repeat(12,1fr);gap:0 6px;align-items:center;margin-bottom:8px}.param-row>label{grid-column:span 2;color:#ffffffb3;font-size:12px;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;line-height:28px}.param-nonlive-icon{font-size:10px;color:#ff0;margin-right:3px;vertical-align:baseline}.param-row>.param-control{grid-column:span 10}.param-row>.anim-subparams{grid-column:1 / -1}.param-separator{height:0;border-top:1px solid rgba(255,255,255,.2);margin:4px 0 10px}.param-row-grouped[data-cols="1"] .param-cell{grid-column:span 12}.param-row-grouped[data-cols="2"] .param-cell{grid-column:span 6}.param-row-grouped[data-cols="3"] .param-cell{grid-column:span 4}.param-row-grouped[data-cols="4"] .param-cell{grid-column:span 3}.param-cell{display:flex;align-items:center;gap:4px;min-width:0}.param-cell-collapsed{visibility:hidden;height:0;min-height:0;overflow:hidden;padding:0!important}.param-row-grouped .param-cell{display:grid;grid-template-columns:subgrid;align-items:center;gap:0 6px}.param-row-grouped .param-cell label{grid-column:span 2;width:auto;text-align:right}.param-row-grouped .param-cell .param-control{grid-column:3 / -1}.param-cell label{color:#ffffffb3;font-size:12px;line-height:24px;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}.param-row>label.param-modified,.param-cell label.param-modified{color:#ff6500}.param-cell .param-control{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.param-cell .param-inline-slider{flex:1}.inline-preview-container+.param-row{margin-top:8px}.param-control{display:flex;align-items:center;gap:6px}.param-value-input{width:100%;padding:4px 6px;border:none;border-radius:3px;background:#ffffff1a;color:#fff;font-size:12px;font-variant-numeric:tabular-nums;text-align:left;outline:none}.param-value-input:focus{background:#ffffff26}.param-value-input.out-of-range,.anim-subparam-input.out-of-range{color:#ff6060}.param-value-input.input-only{width:100%}.param-display-value{display:block;width:100%;padding:4px 6px;border-radius:3px;border:1px solid rgba(255,255,255,.2);background:transparent;color:#ffffff80;font-size:12px;font-variant-numeric:tabular-nums;text-align:left;box-sizing:border-box}.param-text-input{display:block;width:100%;padding:4px 6px;border:none;border-radius:3px;background:#ffffff1a;color:#fff;font-size:12px;outline:none}.param-text-input:focus{background:#ffffff26}.param-inline-slider{position:relative;flex:1;min-width:0;border-radius:3px;overflow:hidden}.param-inline-slider-fill{position:absolute;top:0;left:0;bottom:0;background:rgba(var(--accent-rgb),.15);border-radius:3px;pointer-events:none}.param-inline-slider .param-value-input{position:relative;width:100%;z-index:1;background:#ffffff1a;cursor:ew-resize}.param-inline-slider .param-value-input:focus{background:#ffffff26;cursor:text}.param-inline-slider.dragging{-webkit-user-select:none;user-select:none;cursor:ew-resize}.param-inline-slider.dragging .param-value-input{pointer-events:none}body.slider-dragging,body.slider-dragging *{cursor:ew-resize!important;-webkit-user-select:none!important;user-select:none!important}.param-color-input{width:100%;height:28px;padding:2px;border:none;border-radius:4px;background:#ffffff1a;cursor:pointer}.param-color-input::-webkit-color-swatch-wrapper{padding:2px}.param-color-input::-webkit-color-swatch{border:none;border-radius:2px}.preview-channels-separator{border-top:1px solid rgba(255,255,255,.2);margin:8px 0}.channels-row{margin-bottom:12px}.channels-section-title{color:#fff;font-size:14px;font-weight:500;-webkit-user-select:none;user-select:none;margin-bottom:8px}.channels-section-title i{margin-right:6px;color:#ff0097}.channels-input{width:100%;padding:6px 8px;border:none;border-radius:3px;background:#ffffff1a;color:#fff;font-size:12px;font-family:inherit;outline:none}.channels-input:focus{background:#ffffff26}.channels-input::placeholder{color:#fff6}.channels-input-container{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px;align-items:stretch}.channels-input-container .channels-input{width:auto;height:auto}.channels-input-container .channel-button-grid{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:1fr 1fr;gap:2px;height:100%}.channel-btn{border:none;border-radius:2px;background:#ffffff1a;cursor:pointer;padding:0;min-width:0;transition:all .1s ease}body.has-mouse .channel-btn:hover{background:#ffffff26}.channel-btn.active{background:#ffffffe6}.texture-control{flex:1;display:flex;align-items:center;gap:6px;min-width:0}.texture-name{flex:1;min-width:0;padding:4px 8px;border:none;border-radius:3px;background:#ffffff1a;color:#ffffffe6;font:inherit;font-size:12px;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .1s ease}body.has-mouse .texture-name:hover{background:#ffffff26}.texture-name.empty{color:#fff6;font-style:italic}.texture-clear-btn{flex:0 0 auto;width:24px;height:24px;padding:0;border:none;border-radius:3px;background:#ffffff1a;color:#ffffff80;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .1s ease}body.has-mouse .texture-clear-btn:hover{background:#ff3c3c40;color:#fff}.texture-clear-btn[hidden]{display:none}.texture-clear-btn .material-symbols-outlined{font-size:14px}.texture-thumbnail{flex:0 0 auto;width:24px;height:24px;padding:0;border:1px solid rgba(255,255,255,.25);border-radius:3px;background:linear-gradient(45deg,#2a2a2a 25%,transparent 25%),linear-gradient(-45deg,#2a2a2a 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2a2a2a 75%),linear-gradient(-45deg,transparent 75%,#2a2a2a 75%);background-size:8px 8px;background-position:0 0,0 4px,4px -4px,-4px 0;background-color:#111;overflow:hidden;cursor:pointer;transition:all .1s ease}body.has-mouse .texture-thumbnail:hover:not(:disabled){background:#fff3;transform:scale(1.1)}.texture-thumbnail:disabled{cursor:default;opacity:.4}.texture-thumbnail.empty{background:transparent}.texture-thumbnail-image{width:100%;height:100%;object-fit:cover;display:block;image-rendering:pixelated}.texture-thumbnail.empty .texture-thumbnail-image{display:none}.texture-preview-modal{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1500;opacity:0;pointer-events:none;transition:opacity .2s ease}.texture-preview-modal.visible{opacity:1;pointer-events:auto}.texture-preview-modal-content{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:85vw;max-height:85vh}.texture-preview-modal-image{max-width:85vw;max-height:calc(85vh - 40px);object-fit:contain;background:linear-gradient(45deg,#222 25%,transparent 25%),linear-gradient(-45deg,#222 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#222 75%),linear-gradient(-45deg,transparent 75%,#222 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0;background-color:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:4px;image-rendering:pixelated}.texture-preview-modal-meta{display:flex;gap:16px;color:#ffffffb3;font-size:12px;font-family:monospace}.texture-preview-modal-name{color:#fff}.texture-browser-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1400;opacity:0;pointer-events:none;transition:opacity .15s ease}.texture-browser-overlay.visible{opacity:1;pointer-events:auto}.texture-browser{background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:8px;width:90vw;max-width:1100px;height:75vh;overflow:hidden;display:flex;flex-direction:column}.texture-browser-header{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 8px}.texture-browser-title{color:#fff;font-size:14px;font-weight:500}.texture-browser-close{background:transparent;border:none;color:#fff9;cursor:pointer;padding:4px;border-radius:3px;display:flex;align-items:center;justify-content:center;transition:all .1s ease}body.has-mouse .texture-browser-close:hover{background:#ffffff1a;color:#fff}.texture-browser-search{display:flex;align-items:center;gap:8px;margin:0 12px 8px;padding:6px 10px;background:#ffffff14;border-radius:4px}.texture-browser-search-icon{color:#fff6;font-size:14px}.texture-browser-search-input{flex:1;background:transparent;border:none;outline:none;color:#fff;font-size:13px}.texture-browser-search-input::placeholder{color:#fff6}.texture-browser-filters{display:flex;gap:6px;padding:0 12px 8px;flex-wrap:wrap}.texture-browser-filter-chip{display:flex;align-items:center;padding:4px 10px;background:#ffffff14;border:1px solid transparent;border-radius:4px;color:#fff9;font-size:11px;cursor:pointer;transition:all .15s ease}body.has-mouse .texture-browser-filter-chip:hover{background:#ffffff1f;color:#ffffffe6}.texture-browser-filter-chip.active{background:#ffffff26;border-color:#ffffff40;color:#fff}.texture-browser-filter-chip.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.texture-browser-grid{flex:1;overflow-y:auto;padding:12px;border-top:1px solid rgba(255,255,255,.08);display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;align-content:start}.texture-browser-empty{grid-column:1 / -1;text-align:center;padding:32px 16px;color:#fff6;font-size:13px}.texture-browser-item{display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:6px;background:#ffffff0a;border:1px solid transparent;border-radius:4px;cursor:pointer;transition:all .1s ease;color:#fffc;font:inherit;text-align:left}body.has-mouse .texture-browser-item:hover{background:#ffffff1a;border-color:#fff3}.texture-browser-item.selected{background:#29adff26;border-color:#29adff80}.texture-browser-item-image{width:100%;aspect-ratio:1;object-fit:contain;background:linear-gradient(45deg,#222 25%,transparent 25%),linear-gradient(-45deg,#222 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#222 75%),linear-gradient(-45deg,transparent 75%,#222 75%);background-size:12px 12px;background-position:0 0,0 6px,6px -6px,-6px 0;background-color:#111;border-radius:3px;image-rendering:pixelated}.texture-browser-item-name{font-size:11px;color:#ffffffb3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.texture-browser-item.selected .texture-browser-item-name{color:#fff}.font-control{flex:1}.font-select{width:100%;padding:4px 24px 4px 6px;border:none;border-radius:3px;background:#ffffff1a;color:#fff;font-size:12px;font-family:inherit;outline:none;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='rgba(255,255,255,0.6)' d='M6 8L2 4h8z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.font-select:focus{background-color:#ffffff26}.font-select option{background:#2a2a2a;color:#fff}.model-control{flex:1}.model-select{width:100%;padding:4px 24px 4px 6px;border:none;border-radius:3px;background:#ffffff1a;color:#fff;font-size:12px;font-family:inherit;outline:none;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='rgba(255,255,255,0.6)' d='M6 8L2 4h8z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.model-select:focus{background-color:#ffffff26}.model-select option{background:#2a2a2a;color:#fff}.vec2-control,.vec3-control{display:flex;gap:6px}.vec4-control{display:flex;gap:4px}.vec2-field,.vec3-field,.vec4-field{flex:1;min-width:0}.vec2-slider.vec2-x .param-value-input,.vec3-slider.vec3-x .param-value-input,.vec4-slider.vec4-x .param-value-input{background:#b43c3c66}.vec2-slider.vec2-y .param-value-input,.vec3-slider.vec3-y .param-value-input,.vec4-slider.vec4-y .param-value-input{background:#3c8c3c66}.vec3-slider.vec3-z .param-value-input,.vec4-slider.vec4-z .param-value-input{background:#3c50b466}.vec4-slider.vec4-w .param-value-input{background:#8c8c8c66}.vec2-slider.vec2-x .param-value-input:focus,.vec3-slider.vec3-x .param-value-input:focus,.vec4-slider.vec4-x .param-value-input:focus{background:#b43c3c8c}.vec2-slider.vec2-y .param-value-input:focus,.vec3-slider.vec3-y .param-value-input:focus,.vec4-slider.vec4-y .param-value-input:focus{background:#3c8c3c8c}.vec3-slider.vec3-z .param-value-input:focus,.vec4-slider.vec4-z .param-value-input:focus{background:#3c50b48c}.vec4-slider.vec4-w .param-value-input:focus{background:#8c8c8c8c}.vec2-slider.vec2-x .param-inline-slider-fill,.vec3-slider.vec3-x .param-inline-slider-fill,.vec4-slider.vec4-x .param-inline-slider-fill{background:#b43c3c4d}.vec2-slider.vec2-y .param-inline-slider-fill,.vec3-slider.vec3-y .param-inline-slider-fill,.vec4-slider.vec4-y .param-inline-slider-fill{background:#3c8c3c4d}.vec3-slider.vec3-z .param-inline-slider-fill,.vec4-slider.vec4-z .param-inline-slider-fill{background:#3c50b44d}.vec4-slider.vec4-w .param-inline-slider-fill{background:#8c8c8c4d}.integer-input{display:flex;align-items:center;gap:4px}.integer-input input{flex:1;padding:8px 10px;border:none;border-radius:4px;background:#ffffff1a;color:#fff;font-size:14px}.integer-input input:focus{outline:none;background:#ffffff26}.integer-input-button{width:28px;height:36px;border:none;border-radius:4px;background:#ffffff1a;color:#ffffffb3;font-size:16px;cursor:pointer;transition:all .1s ease;display:flex;align-items:center;justify-content:center}body.has-mouse .integer-input-button:hover{background:#fff3;color:#fff}.integer-input-button:active{background:#ffffff4d}#midi-panel{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;pointer-events:none;transition:opacity .2s ease}#midi-panel.visible{opacity:1;pointer-events:auto}#midi-panel .panel-content{background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:8px;width:350px;max-height:500px;overflow:hidden;display:flex;flex-direction:column}.midi-panel-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;color:#fff;font-size:14px;font-weight:500;-webkit-user-select:none;user-select:none;border-bottom:1px solid rgba(255,255,255,.1)}.midi-panel-body{padding:12px 16px;overflow-y:auto}.midi-enable-row{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:#ffffff0d;border-radius:6px;margin-bottom:12px}.midi-enable-label{color:#fff;font-size:12px;font-weight:500}.midi-status{display:flex;align-items:center;justify-content:space-between;padding:12px;background:#ffffff0d;border-radius:6px;margin-bottom:12px}.midi-status-connected{color:#00a800;font-size:12px;display:flex;align-items:center;gap:6px}.midi-status-disconnected{color:#fff6;font-size:12px}.midi-disconnect-btn{background:#ff646433;border:none;color:#ff6060;font-size:11px;padding:4px 10px;border-radius:4px;cursor:pointer}body.has-mouse .midi-disconnect-btn:hover{background:#ff64644d}.midi-section-header{display:flex;justify-content:space-between;align-items:center;color:#ffffff80;font-size:10px;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;-webkit-user-select:none;user-select:none}.midi-refresh-btn{background:none;border:none;color:#fff6;cursor:pointer;padding:2px 6px;font-size:14px}body.has-mouse .midi-refresh-btn:hover{color:#fff}.midi-device-list,.midi-controller-list{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.midi-controller-list{display:none}.midi-controller-list.expanded{display:flex}.midi-section-toggle{cursor:pointer;-webkit-user-select:none;user-select:none}body.has-mouse .midi-section-toggle:hover{color:#fff}.midi-section-toggle i{margin-right:4px}.midi-device-item,.midi-controller-item{display:flex;flex-direction:column;align-items:flex-start;padding:10px 12px;background:#ffffff0d;border:1px solid transparent;border-radius:6px;cursor:pointer;text-align:left;width:100%;transition:background .15s ease,border-color .15s ease}body.has-mouse .midi-device-item:hover,body.has-mouse .midi-controller-item:hover{background:#ffffff1a}.midi-device-item.selected,.midi-controller-item.selected{border-color:rgba(var(--accent-rgb),.5);background:rgba(var(--accent-rgb),.1)}.midi-device-item.active,.midi-controller-item.active{border-color:#64ff6480;background:#64ff641a}.midi-device-name,.midi-controller-name{color:#fff;font-size:12px;font-weight:500}.midi-device-mfr,.midi-controller-info{color:#fff6;font-size:10px;margin-top:2px}.midi-empty{color:#ffffff4d;font-size:11px;text-align:center;padding:16px}.midi-connect-btn{width:100%;padding:12px;background:rgba(var(--accent-rgb),.2);border:none;border-radius:6px;color:rgb(var(--accent-rgb));font-size:13px;font-weight:500;cursor:pointer;transition:background .15s ease}body.has-mouse .midi-connect-btn:hover:not(:disabled){background:rgba(var(--accent-rgb),.3)}.midi-connect-btn:disabled{opacity:.4;cursor:not-allowed}.project-button{position:relative}.project-button.music-loaded:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#00a800;border-radius:50%}.mute-button{position:relative}.mute-button.muted:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#dc0000;border-radius:50%}.remote-button{position:relative}.remote-button.remote-connected:after{content:"";position:absolute;top:3px;right:3px;width:4px;height:4px;background:#00a800;border-radius:50%}.waveform-wrapper{width:256px;min-width:0;overflow:hidden;background:#000c;border-radius:4px;padding:4px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.waveform-wrapper.hidden{display:none}.waveform-outer{display:flex;flex-direction:column;width:100%;height:100%;min-height:0}.waveform-outer .waveform-container{flex:1;min-height:0}.waveform-lyrics-svg{display:none;flex:0 0 22px;width:100%;background:#000;margin-top:1px}.waveform-lyrics-svg.has-lyrics{display:block}.waveform-container{position:relative;width:100%;height:32px;background:#000;border-radius:4px;overflow:hidden;cursor:default}.waveform-svg{position:absolute;top:0;left:0;width:100%;height:100%}.waveform-line{stroke:none}.waveform-playhead{stroke:#fff;stroke-width:2}.waveform-svg.markers-hidden .waveform-grid,.waveform-svg.markers-hidden .waveform-section-dividers,.waveform-svg.markers-hidden .waveform-grid-marker,.waveform-svg.markers-hidden .waveform-playhead,.waveform-svg.markers-hidden .waveform-hover{display:none}.waveform-lyrics-svg.markers-hidden{display:none!important}.waveform-hover{stroke:#fff;stroke-width:1;stroke-opacity:.5;pointer-events:none}.waveform-grid-marker polygon{fill:#fff}.waveform-grid line{stroke:#ffffff4d;stroke-width:1}.waveform-grid line.bar{stroke:#ffffff80;stroke-width:1;stroke-dasharray:1 2}.waveform-grid line.phrase{stroke:#ffffff80;stroke-width:1}.waveform-grid line.beat-marker{stroke:#ffffff80;stroke-width:1;pointer-events:none}.waveform-grid line.beat-marker.bar-tick{stroke:#fff}.waveform-section-divider{stroke:#fff;stroke-width:1;pointer-events:none}.waveform-lyric-marker{fill:#fff;fill-opacity:.5;transition:fill-opacity .1s ease}body.has-mouse .waveform-lyric-marker:hover{fill-opacity:.85}.waveform-lyric-marker.selected{fill-opacity:1}.waveform-lyric-marker-text{fill:#000000d9;font-size:11px;font-family:inherit;pointer-events:none;-webkit-user-select:none;user-select:none}.waveform-lyric-line-underline{stroke:#fff;stroke-width:1;pointer-events:none}.music-editor .waveform-lyric-marker{fill:#fff;fill-opacity:.1;transition:fill-opacity .1s ease}body.has-mouse .music-editor .waveform-lyric-marker:hover{fill-opacity:.13}.music-editor .waveform-lyric-marker.in-selected-line{fill-opacity:.25}.music-editor .waveform-lyric-marker.selected{fill-opacity:1}body.has-mouse .music-editor .waveform-lyric-marker.selected:hover{fill-opacity:.75}.music-editor .waveform-lyric-marker-text{fill:#fff}.music-editor .waveform-lyric-marker.selected+.waveform-lyric-marker-text{fill:#000}.music-editor .waveform-lyrics-svg{margin-bottom:6px}.waveform-selection-bg{fill:#fff;pointer-events:none}.lyrics-wrapper{width:256px;min-width:0;overflow:hidden;background:#000c;border-radius:4px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.lyrics-wrapper.hidden,.lyrics-wrapper:has(.lyrics-line:empty){display:none}.lyrics-wrapper.lyrics-expanded{position:fixed;left:50%;transform:translate(-50%);z-index:91}.lyrics-display{padding:1px 0 0;text-align:center;-webkit-user-select:none;user-select:none}.lyrics-line{height:15px;line-height:15px;font-size:10px;color:#ffffffe6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.lyrics-word{transition:color .1s ease}.lyrics-word-active{color:#fff}.lyrics-word-past{color:#ffffff80}.lyrics-word-future{color:#ffffff4d}.stats-container{position:relative;width:128px;height:32px;background:#000;border:1px solid #1a1a1a;border-radius:4px;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none;box-sizing:border-box}.stats-svg{display:block;width:100%;height:100%}.stats-line-green,.stats-line-yellow,.stats-line-red{fill:none;stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}.stats-line-green{stroke:#00a800}.stats-line-yellow{stroke:#ff0}.stats-line-red{stroke:#dc0000}.stats-grid-line{stroke:#ffffff1a;stroke-width:1;stroke-dasharray:1 2}.stats-grid-line-major{stroke:#fff3;stroke-width:1}.stats-label{position:absolute;inset:0;-webkit-user-select:none;user-select:none;display:grid;grid-template-columns:1.5fr 1fr;align-content:center;gap:1px 4px;padding:0 6px;font-size:10px;font-variant-numeric:tabular-nums;color:#ffffffe6;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.8);letter-spacing:.5px}.stats-label i{font-size:9px;opacity:.6;margin-right:2px}.stats-mode{position:absolute;bottom:1px;left:3px;font-size:10px;color:#fff;pointer-events:none;-webkit-user-select:none;user-select:none;text-shadow:0 0 3px rgba(0,0,0,.8)}.stats-value{position:absolute;bottom:1px;right:3px;font-size:10px;font-variant-numeric:tabular-nums;color:#fff;pointer-events:none;-webkit-user-select:none;user-select:none;text-shadow:0 0 3px rgba(0,0,0,.8)}#edit-panel.two-panel-mode{display:none}.clip-editor-panel{position:absolute;top:0;left:0;width:320px;height:100vh;background:#000000d9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:100;padding:16px;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;pointer-events:auto;transform:translate(-100%);transition:transform .2s ease}.clip-editor-panel.visible{transform:translate(0)}.content-editor-panel{position:absolute;top:0;right:0;width:640px;height:100vh;background:#000000d9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:100;padding:16px;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;pointer-events:auto;transform:translate(100%);transition:transform .2s ease}.content-editor-panel.visible{transform:translate(0)}.content-editor-header{display:flex;align-items:center;gap:8px;padding:10px 12px;background:#ffffff14;border-radius:6px;margin-bottom:12px}.content-editor-header .content-name{flex:1}.content-editor-copy-btn{border:none;background:transparent;color:#ffffff4d;font-size:14px;cursor:pointer;padding:2px 4px;border-radius:3px;opacity:0;transition:all .1s ease}body.has-mouse .content-editor-header:hover .content-editor-copy-btn{opacity:1}body.has-mouse .content-editor-copy-btn:hover{color:#ffffffe6;background:#ffffff1a}.content-editor-header .content-type-label{color:#ffffff80;font-size:9px;text-transform:uppercase;letter-spacing:.5px;padding:2px 8px;background:#ffffff1a;border-radius:3px;flex-shrink:0}.preset-control{display:flex;align-items:center;gap:4px}.preset-select{flex:1;appearance:none;background:#ffffff1a;border:none;border-radius:3px;color:#fff;padding:4px 24px 4px 8px;font-size:12px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='rgba(255,255,255,0.6)' d='M6 8L2 4h8z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.preset-select:focus{outline:none;background-color:#ffffff26}.preset-select option{background:#2a2a2a;color:#fff}.preset-select option.user-preset{font-style:italic}.preset-add-btn,.preset-delete-btn,.preset-export-btn{width:28px;height:24px;padding:0;border:none;border-radius:3px;background:#ffffff1a;color:#fff9;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .1s ease}body.has-mouse .preset-add-btn:hover,body.has-mouse .preset-export-btn:hover{background:#ffffff26;color:#ffffffe6}.preset-delete-btn{display:none}.preset-delete-btn.visible{display:flex}body.has-mouse .preset-delete-btn:hover{background:#ff64644d;color:#ff6464e6}.preset-add-btn i,.preset-delete-btn i,.preset-export-btn i{font-size:14px}.preset-toast{position:fixed;bottom:80px;left:50%;transform:translate(-50%) translateY(20px);background:#000000e6;color:#ffffffe6;padding:8px 16px;border-radius:4px;font-size:12px;z-index:1000;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.preset-toast.visible{opacity:1;transform:translate(-50%) translateY(0)}.cursor-hint{position:fixed;background:#000000e6;color:#ffffffe6;padding:4px 8px;border-radius:3px;font-size:var(--font-size-xs);pointer-events:none;z-index:10000;opacity:0;transition:opacity .1s ease;white-space:nowrap}.cursor-hint.visible{opacity:1}.variant-accordion{display:flex;flex-direction:column;gap:2px;margin-top:8px}.variant-accordion-item{background:#ffffff08;border-radius:4px;overflow:hidden;transition:background .15s ease}.variant-accordion-item.expanded{background:#ffffff0d}.variant-accordion-item.selected{background:#ffffff14;border:1px solid rgba(var(--accent-rgb),.6);border-radius:4px}.variant-accordion-item.disabled,.variant-accordion-item.dragging{opacity:.5}.variant-accordion-item.drag-over{border-top:2px solid rgba(var(--accent-rgb),.8);margin-top:-2px}.variant-accordion-header{display:flex;align-items:center;gap:6px;padding:8px 10px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s ease}body.has-mouse .variant-accordion-header:hover{background:#ffffff0d}.variant-arrow{color:#ffffff80;font-size:12px;width:12px;flex-shrink:0}.variant-accordion-item.expanded .variant-arrow{color:#fffc}.variant-accordion-header .variant-enabled-toggle{flex-shrink:0}.variant-name-wrapper{flex:1;display:flex;align-items:center;position:relative;overflow:hidden}.variant-accordion-name{flex:1;color:#ffffffb3;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.variant-accordion-item.expanded .variant-accordion-name{color:#fff}.variant-accordion-name-input{flex:1;background:#0000004d;border:1px solid rgba(255,255,255,.2);border-radius:3px;color:#fff;font-size:12px;padding:2px 6px;outline:none}.variant-accordion-name-input:focus{border-color:rgba(var(--accent-rgb),.6)}.variant-add-content-btn{padding:4px 8px;border:none;border-radius:3px;background:transparent;color:#ffffff4d;font-size:18px;font-weight:300;line-height:1;cursor:pointer;transition:opacity .15s ease,background .15s ease}body.has-mouse .variant-add-content-btn:hover{background:#50ff5033;color:#64ff64e6}.variant-paste-content-btn{font-size:14px;padding:4px 6px}.variant-solo-btn{padding:4px 7px;border:none;border-radius:3px;background:transparent;color:#ffffff4d;font-size:11px;font-weight:600;letter-spacing:.5px;line-height:1;cursor:pointer;transition:opacity .15s ease,background .15s ease,color .15s ease}body.has-mouse .variant-solo-btn:hover{background:#50ff5033;color:#64ff64e6}.variant-solo-btn.active{color:#64ff64e6}.variant-name-wrapper .variant-delete,.variant-name-wrapper .variant-add-content-btn,.variant-name-wrapper .variant-solo-btn,.category-header .variant-add-content-btn{opacity:0;flex-shrink:0;transition:opacity .15s ease}body.has-mouse .variant-accordion-header:hover .variant-delete,body.has-mouse .variant-accordion-header:hover .variant-add-content-btn,body.has-mouse .variant-accordion-header:hover .variant-solo-btn,body.has-mouse .category-header:hover .variant-add-content-btn,.variant-name-wrapper .variant-solo-btn.active{opacity:1}.variant-name-wrapper.editing .variant-delete,.variant-name-wrapper.editing .variant-add-content-btn,.variant-name-wrapper.editing .variant-solo-btn{display:none}.variant-accordion-item.solo .variant-accordion-name{color:#64ff64e6}.variant-accordion.has-solo .variant-accordion-item:not(.solo) .variant-accordion-name{color:#ff6464b3}.variant-accordion.has-solo .variant-accordion-item:not(.solo).expanded .variant-accordion-name{color:#ff6464f2}.variant-accordion-content{display:none;padding:0 10px 10px}.variant-accordion-item.expanded .variant-accordion-content{display:block}.variant-accordion-content .content-list{margin-top:4px;gap:1px}.variant-accordion-content .content-list-item{padding:0 8px;font-size:10px;height:26px;display:flex;align-items:center;gap:8px}.variant-accordion-content .content-list-item .content-type-icon{font-size:12px}.content-list-readonly{opacity:.7}.variant-content-empty{color:#fff6;font-size:10px;font-style:italic;padding:4px 8px}.track-section-content{margin-top:8px;margin-bottom:8px}.content-list{display:flex;flex-direction:column;gap:2px}.content-list-item{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#ffffff0d;border-radius:4px;border:1px solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s ease,border-color .15s ease}body.has-mouse .content-list-item:hover{background:#ffffff14}.content-list-item.selected{background:#ffffff1f;border-color:rgba(var(--accent-rgb),.4)}.content-list-item.disabled{opacity:.5}.content-list-item .content-name{flex:1;color:#fffc;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-list-item.selected .content-name{color:#fff}.content-list-item .content-type-icon{font-size:13px;flex-shrink:0}.content-type-icon[data-content-type=global]{color:rgb(var(--type-global))}.content-type-icon[data-content-type=actor]{color:rgb(var(--type-actor))}.content-type-icon[data-content-type=visual]{color:rgb(var(--type-visual))}.content-type-icon[data-content-type=shader]{color:rgb(var(--type-shader))}.content-type-icon[data-content-type=post]{color:rgb(var(--type-post))}.content-type-icon[data-content-type=particles]{color:rgb(var(--type-particles))}.content-list-item .content-delete{opacity:0;transition:opacity .15s ease}body.has-mouse .content-list-item:hover .content-delete{opacity:1}.content-list-item-wrapper{cursor:grab;transition:opacity .15s ease}.content-list-item-wrapper.dragging{opacity:.5;cursor:grabbing}.content-list-item-wrapper.drag-over{border-top:2px solid rgba(var(--accent-rgb),.8);margin-top:-2px}.content-editor-empty{display:flex;align-items:center;justify-content:center;height:100%;color:#fff6;font-size:12px;font-style:italic}.content-editor-panel .params-category{margin-top:4px}.content-editor-panel .params-category:first-child{margin-top:0}.icon-toggle{display:flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;border-radius:4px;background:transparent;color:#ffffffe6;cursor:pointer}body.has-mouse .icon-toggle:hover{color:#fff}.icon-toggle:disabled{cursor:default;color:#ffffff26;pointer-events:none}.icon-toggle.category-icon{color:var(--category-color, rgba(255, 255, 255, .9))}.icon-toggle i{font-size:12px}.curve-control{flex-direction:column}.curve-editor{width:100%;background:#0003;border-radius:4px;padding:8px}.curve-editor-top-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.curve-preset-select{flex:1;padding:4px 24px 4px 8px;border:none;border-radius:3px;background:#ffffff1a;color:#fff;font-size:12px;outline:none;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='rgba(255,255,255,0.6)' d='M6 8L2 4h8z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.curve-preset-select:focus{background:#ffffff26}.curve-preset-select option{background:#2a2a2a;color:#fff}.curve-flip-btn{display:flex;align-items:center;justify-content:center;width:28px;height:24px;border:none;border-radius:3px;background:transparent;color:#ffffff80;cursor:pointer;transition:all .1s ease}body.has-mouse .curve-flip-btn:hover{color:#fffc}.curve-interp-select{padding:4px 24px 4px 8px;border:none;border-radius:3px;background:#ffffff1a;color:#fff;font-size:12px;outline:none;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='rgba(255,255,255,0.6)' d='M6 8L2 4h8z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.curve-interp-select:focus{background:#ffffff26}.curve-interp-select:disabled{opacity:.3;cursor:default}.curve-interp-select option{background:#2a2a2a;color:#fff}.curve-editor-canvas{display:block;width:calc(100% + 12px);height:112px;margin:0 -6px;cursor:crosshair}.curve-editor-bottom-row{display:flex;align-items:center;gap:4px;margin-top:8px}.curve-point-btn{display:flex;align-items:center;justify-content:center;gap:4px;flex:1;height:22px;padding:0;border:none;border-radius:3px;background:#ffffff1a;color:#fffc;font-size:11px;cursor:pointer;transition:all .1s ease}body.has-mouse .curve-point-btn:hover:not(:disabled){background:#fff3;color:#fff}.curve-point-btn:disabled{opacity:.4;cursor:default}.curve-point-btn i{font-size:12px}.curve-point-slider{position:relative;flex:1;height:22px;border-radius:3px;overflow:hidden}.curve-point-slider-fill{position:absolute;top:0;left:0;bottom:0;border-radius:3px;pointer-events:none}.curve-point-input{position:relative;width:100%;height:100%;padding:0 6px;border:none;border-radius:3px;color:#fff;font-size:11px;font-family:Inter,sans-serif;font-variant-numeric:tabular-nums;text-align:right;outline:none;z-index:1;cursor:ew-resize}.curve-point-input:disabled{opacity:.4;cursor:default}.curve-point-slider.curve-x .curve-point-input{background:#b43c3c66}.curve-point-slider.curve-x .curve-point-input:focus{background:#b43c3c8c;cursor:text}.curve-point-slider.curve-x .curve-point-slider-fill{background:#b43c3c4d}.curve-point-slider.curve-y .curve-point-input{background:#3c8c3c66}.curve-point-slider.curve-y .curve-point-input:focus{background:#3c8c3c8c;cursor:text}.curve-point-slider.curve-y .curve-point-slider-fill{background:#3c8c3c4d}.curve-point-slider.dragging{-webkit-user-select:none;user-select:none;cursor:ew-resize}.curve-point-slider.dragging .curve-point-input{pointer-events:none}.remote-button.remote-connected{color:#fff}.remote-button.active{background:#ffffff26}.remote-section-title{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#fff6;margin-bottom:8px}.remote-featured-section{background:#ffffff08;border-radius:4px;padding:12px;margin-bottom:16px}.remote-featured-section .remote-preset-featured{margin-bottom:0}.remote-connection-grid{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:start;gap:8px;margin-bottom:16px}.remote-conn-cell{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.remote-conn-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#ffffff80}.remote-status-value{display:inline-flex;align-items:center;gap:6px;color:#ffffffe6;justify-self:start}.remote-status-dot{width:8px;height:8px;border-radius:50%;background:#fff6}.remote-status-value.connected .remote-status-dot{background:#00a800}.remote-status-value.disconnected .remote-status-dot{background:#ff0097}.remote-clients-value{color:#fff9;justify-self:start}.remote-code-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;background:#ffffff1a;border:none;border-radius:3px;color:#ffffffb3;cursor:pointer;transition:all .1s ease;justify-self:start}body.has-mouse .remote-code-chip:hover{background:#ffffff26;color:#ffffffe6}.remote-code-value{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.5px}#changes-modal{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;pointer-events:none;transition:opacity .2s ease}#changes-modal.visible{opacity:1;pointer-events:auto}#changes-modal .panel-content{background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:8px;width:500px;max-height:70vh;overflow:hidden;display:flex;flex-direction:column}.changes-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;color:#fff;font-size:14px;font-weight:500;-webkit-user-select:none;user-select:none;border-bottom:1px solid rgba(255,255,255,.1)}.changes-modal-body{overflow-y:auto;padding:8px}.changes-modal-empty{text-align:center;color:#fff6;font-size:12px;padding:32px 16px;-webkit-user-select:none;user-select:none}.changes-group{margin-bottom:8px}.changes-group-header{display:flex;align-items:center;gap:8px;padding:6px 8px;font-size:10px;text-transform:uppercase;letter-spacing:.5px;-webkit-user-select:none;user-select:none}.changes-group-clip{color:#ffffffe6;font-weight:500}.changes-group-content{color:#fff6}.changes-param-row{display:flex;align-items:center;gap:8px;padding:4px 8px 4px 16px;border-radius:3px;transition:background .1s ease}body.has-mouse .changes-param-row:hover{background:#ffffff0d}.changes-param-label{color:#ff6500;font-size:11px;min-width:100px;flex-shrink:0}.changes-param-values{display:flex;align-items:center;gap:6px;flex:1;font-size:11px;min-width:0;overflow:hidden}.changes-value-old{color:#fff6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.changes-value-arrow{color:#ffffff4d;flex-shrink:0}.changes-value-new{color:#ffffffe6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.changes-revert-btn{background:none;border:none;color:#ffffff4d;cursor:pointer;font-size:14px;padding:4px;line-height:1;flex-shrink:0;border-radius:3px;transition:all .1s ease}body.has-mouse .changes-revert-btn:hover{color:#fff;background:#ffffff1a}#settings-panel{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;pointer-events:none;transition:opacity .2s ease}#settings-panel.visible{opacity:1;pointer-events:auto}#settings-panel .panel-content{background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:8px;width:640px;overflow:hidden;display:flex;flex-direction:column}.settings-panel-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;color:#fff;font-size:14px;font-weight:500;-webkit-user-select:none;user-select:none;border-bottom:1px solid rgba(255,255,255,.1)}.app-mode-chip{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:#fff9;background:#ffffff1a;padding:2px 6px;border-radius:3px}.settings-panel-main{display:flex;min-height:320px}.settings-toolbar{display:flex;flex-direction:column;gap:2px;padding:8px;border-right:1px solid rgba(255,255,255,.1)}.settings-tab-btn{width:36px;height:36px;border:none;border-radius:4px;background:transparent;color:#ffffff80;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;font-size:18px;transition:all .1s ease}body.has-mouse .settings-tab-btn:hover{color:#fffc}.settings-tab-btn.active{background:#ffffff1a;color:#ffffffe6}.settings-tab-btn.has-dot:after{content:"";position:absolute;top:4px;right:4px;width:4px;height:4px;border-radius:50%;background:#fff}.settings-tab-btn.has-dot[data-dot-color=green]:after{background:#00a800}.settings-content{flex:1;padding:12px 16px;overflow-y:auto;max-height:400px}.settings-perf-info{margin-bottom:16px}.settings-perf-info-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05)}.settings-perf-info-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#ffffff80}.settings-perf-info-value{font-size:12px;color:#ffffffe6;text-align:right;word-break:break-word}.settings-perf-controls{display:flex;flex-direction:column;gap:12px}.settings-version{margin-top:16px;color:#ffffff4d;font-size:10px}.settings-perf-row{display:flex;align-items:center;justify-content:space-between}.settings-perf-row label{font-size:12px;color:#fff9}.settings-btn-group{display:flex;gap:2px;background:#ffffff0d;border-radius:4px;padding:2px}.settings-btn-group button{padding:4px 12px;border:none;border-radius:3px;background:transparent;color:#ffffff80;font-size:12px;cursor:pointer;transition:all .1s ease}.settings-btn-group button.active{background:#ffffff26;color:#ffffffe6}body.has-mouse .settings-btn-group button:hover:not(.active){color:#ffffffb3}.settings-slider-container{position:relative;width:120px;height:28px;background:#ffffff1a;border-radius:3px;cursor:ew-resize;-webkit-user-select:none;user-select:none}.settings-slider-fill{position:absolute;top:0;left:0;height:100%;background:#ffffff26;border-radius:3px;pointer-events:none}.settings-slider-input{position:relative;width:100%;height:100%;background:transparent;border:none;color:#fff;text-align:center;font-size:12px;cursor:ew-resize;pointer-events:none}.settings-remote-content{font-size:12px}.remote-preset-list{margin-top:12px;border-top:1px solid rgba(255,255,255,.1);padding-top:8px}.remote-preset-item{margin-bottom:2px}.remote-preset-featured{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:0;margin-bottom:16px;background:transparent}.featured-preview{width:100%;display:flex;align-items:flex-start;justify-content:flex-start;align-self:start}.featured-preview svg{width:100%;max-width:156px;height:auto}.featured-info{display:flex;flex-direction:column;gap:8px;min-width:0}.featured-title{font-size:14px;font-weight:500;color:#fff}.featured-description{font-size:11px;color:#fff9;line-height:1.5}.featured-actions{display:flex;gap:8px;margin-top:4px}.featured-action-btn{display:flex;align-items:center;gap:6px;padding:6px 10px;background:#ffffff1a;color:#fff;border:none;border-radius:3px;font-size:11px;cursor:pointer;transition:background .1s ease}body.has-mouse .featured-action-btn:hover{background:#fff3}.featured-qr{justify-self:end;align-self:start;cursor:pointer;background:#fff;border-radius:3px;overflow:hidden;width:97.5px;height:97.5px;transition:opacity .1s ease}body.has-mouse .featured-qr:hover{opacity:.85}.featured-qr svg{display:block;width:100%;height:100%}.remote-preset-header{display:flex;align-items:center;gap:6px;padding:8px 10px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s ease}body.has-mouse .remote-preset-header:hover{background:#ffffff0d}.remote-preset-name{flex:1;color:#ffffffb3;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.remote-preset-item.expanded .remote-preset-name{color:#fff}.remote-preset-name-input{flex:1;background:#0000004d;border:1px solid rgba(255,255,255,.2);border-radius:3px;color:#fff;font-size:12px;padding:2px 6px;outline:none}.remote-preset-name-input:focus{border-color:#fff6}.remote-preset-action-btn{opacity:0;flex-shrink:0;padding:2px 4px;background:transparent;border:none;color:#ffffff4d;cursor:pointer;font-size:14px;transition:opacity .15s ease}body.has-mouse .remote-preset-header:hover .remote-preset-action-btn{opacity:1}body.has-mouse .remote-preset-action-btn:hover{color:#fffc}.remote-preset-header.editing .remote-preset-action-btn{display:none}.remote-preset-arrow{color:#ffffff80;font-size:12px;width:12px;flex-shrink:0;transition:transform .15s ease}.remote-preset-item.expanded .remote-preset-arrow{transform:rotate(180deg);color:#fffc}.remote-preset-body{display:none;padding:4px 0 8px 16px}.remote-preset-item.expanded .remote-preset-body{display:block}.remote-mode-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.remote-mode-row label{font-size:11px;color:#fff9;flex-shrink:0}.remote-mode-row label.disabled{color:#ffffff26}.remote-mode-select{flex:1;width:auto}.remote-toggles-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.remote-toggle-row{display:flex;align-items:center;gap:8px}.remote-toggle-row label{font-size:11px;color:#fff9}.remote-toggle-row label.disabled{color:#ffffff26}.remote-preset-add{width:100%;padding:6px;margin-top:4px;background:#ffffff0d;border:1px dashed rgba(255,255,255,.15);border-radius:3px;color:#ffffff80;font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;transition:all .1s ease}body.has-mouse .remote-preset-add:hover{background:#ffffff1a;color:#fffc}.qr-modal-overlay{position:fixed;inset:0;z-index:20000;background:#000000e6;display:flex;align-items:center;justify-content:center;cursor:pointer}.qr-modal svg{border-radius:8px}.scene-editor-overlay{position:fixed;inset:0;z-index:500;background:#0009}.scene-editor-panel{position:fixed;background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:6px;padding:16px;width:220px}.scene-editor-title{font-size:14px;font-weight:500;color:#fff;margin-bottom:12px}.scene-editor-input{width:100%;padding:8px 10px;background:#ffffff1a;border:none;border-radius:4px;color:#fff;font-size:14px;font-weight:500;box-sizing:border-box;outline:none;margin-bottom:12px}.scene-editor-input:focus{background:#ffffff26}.scene-editor-field{margin-bottom:8px}.scene-editor-field label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#fff9;margin-bottom:4px;-webkit-user-select:none;user-select:none}.scene-editor-save-btn{width:100%;margin-top:12px;padding:8px;background:#ffffff1a;color:#fff;border:none;border-radius:3px;font-size:11px;cursor:pointer;transition:background .1s ease}body.has-mouse .scene-editor-save-btn:hover:not(:disabled){background:#fff3}.scene-editor-save-btn:disabled{opacity:.3;cursor:default}.composition-details-overlay{position:fixed;inset:0;z-index:500;background:#0009;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.composition-details-overlay.visible{opacity:1}.composition-details-panel{background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:6px;padding:20px;width:320px;max-width:90vw}.composition-details-title{font-size:14px;font-weight:500;color:#fff;margin-bottom:16px}.composition-details-field{margin-bottom:12px}.composition-details-field label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#fff9;margin-bottom:4px;-webkit-user-select:none;user-select:none}.composition-details-input{width:100%;padding:8px 10px;background:#ffffff1a;border:none;border-radius:3px;color:#fff;font-size:12px;box-sizing:border-box;outline:none;font-family:inherit}.composition-details-input:focus{background:#ffffff26}.composition-details-textarea{resize:vertical;min-height:56px}.composition-details-info{font-size:11px;color:#fff6;margin:4px 0 8px}.composition-details-note{font-size:10px;color:#ffffff80;font-style:italic;margin-bottom:12px}.composition-details-buttons{display:flex;gap:8px;margin-top:16px}#remote-title-screen{position:fixed;inset:0;z-index:20000;background:#000;display:flex;align-items:center;justify-content:center;cursor:pointer}#remote-title-screen.hidden{display:none}@media(orientation:portrait){#remote-title-screen .title-screen-logo{transform:rotate(-90deg)}}.scene-grid-view{position:fixed;inset:0;background:#000}.ripple-effect-canvas{position:fixed;inset:0;pointer-events:none;z-index:10}.scene-grid-fullscreen{width:100%;height:100%;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:2px;padding:2px;box-sizing:border-box}.scene-grid-cell{display:flex;align-items:flex-end;justify-content:flex-start;background:#000;border:0;border-radius:0;cursor:default;transition:background .08s linear;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;position:relative}.scene-grid-cell.saved{background:color-mix(in srgb,var(--scene-color, #fff) 35%,#000);cursor:pointer}body.has-mouse .scene-grid-cell.saved:hover{background:color-mix(in srgb,var(--scene-color, #fff) 60%,#000)}.scene-grid-cell.saved:active{background:color-mix(in srgb,var(--scene-color, #fff) 85%,#000)}.scene-grid-cell.active,body.has-mouse .scene-grid-cell.active:hover,.scene-grid-cell.active:active{background:var(--scene-color, #fff)}.scene-grid-cell.flash{animation:scene-grid-flash .5s ease-out}@keyframes scene-grid-flash{0%{background:#fff}}.scene-grid-cell-name{padding:10px 12px;font-family:var(--font-mono);font-size:11px;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:#ffffff59;-webkit-user-select:none;user-select:none}.scene-grid-cell.saved .scene-grid-cell-name{color:#ffffffd9}.scene-grid-cell.active .scene-grid-cell-name{color:var(--text-color, #fff)}.settings-shortcuts-content{display:flex;gap:32px}.settings-shortcuts-column{flex:1;display:flex;flex-direction:column;gap:4px}.settings-shortcuts-section-title{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#fff6;margin-top:8px;margin-bottom:2px}.settings-shortcuts-section-title:first-child{margin-top:0}.settings-shortcuts-row{display:flex;align-items:center;gap:8px;padding:4px 0}.settings-shortcuts-keys{font-size:11px;color:#ffffffe6;font-family:inherit;background:#ffffff14;padding:2px 8px;border-radius:3px;border:1px solid rgba(255,255,255,.1)}.settings-shortcuts-action{font-size:11px;color:#ffffff80}.settings-reset-section{display:flex;align-items:center;gap:16px;padding:16px 0;border-top:1px solid rgba(255,255,255,.08)}.settings-reset-section:first-child{border-top:none}.settings-reset-text{flex:1}.settings-reset-title{font-size:13px;font-weight:600;color:#ffffffe6;margin-bottom:4px}.settings-reset-desc{font-size:12px;color:#ffffff80;margin:0;line-height:1.5}.settings-reset-btn{padding:10px 0;width:80px;text-align:center;background:#ff646426;border:1px solid rgba(255,100,100,.3);border-radius:4px;color:#ff9696e6;font-size:12px;cursor:pointer;transition:all .1s ease;white-space:nowrap;flex-shrink:0}body.has-mouse .settings-reset-btn:hover{background:#ff646440}.settings-reset-btn.reset-flash{background:#64ff9626;border-color:#64ff964d;color:#96ff96e6}.settings-build-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px}.settings-build-desc{font-size:12px;color:#ffffff80;margin:0;line-height:1.5}.settings-build-btn{padding:10px 16px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:4px;color:#ffffffe6;font-size:12px;cursor:pointer;transition:all .1s ease}body.has-mouse .settings-build-btn:hover{background:#ffffff26}body.ui-window{background:#0a0a0a;overflow-x:hidden;overflow-y:auto}body.ui-window #control-panel{position:relative;min-height:100vh;padding-bottom:20px;justify-content:flex-start}body.ui-window #control-panel.remote-scaled{transform-origin:0 0}body.ui-window:has(#control-panel.remote-scaled){overflow:hidden}body.ui-window #control-panel.remote-scaled .clip-tooltip,body.ui-window #control-panel.remote-scaled .presets-tooltip,body.ui-window #control-panel.remote-scaled .main-controls-tooltip,body.ui-window #control-panel.remote-scaled .pad-controls-tooltip{display:none}body.remote-single-section{background:#000}body.remote-operator-mode .left-panel-column{display:flex;gap:0;align-items:center;margin-bottom:0}.operator-spacer-block,.operator-row-block{display:grid;gap:0;grid-auto-flow:row;grid-auto-rows:32px}.operator-extra-cell.disabled{pointer-events:none}.operator-extra-cell.disabled:before{background:transparent;box-shadow:inset 0 0 0 .5px #ffffff20}.operator-extra-cell.disabled.lit:before{background:#fff;box-shadow:none}.operator-spacer-block{touch-action:none;cursor:grab}.operator-spacer-block.dragging{cursor:grabbing}.operator-extra-block{display:grid;gap:0;grid-auto-flow:row;grid-auto-rows:32px;padding:4px;border-radius:4px}body.remote-single-section .operator-extra-block{box-shadow:inset 0 0 0 1px #ffffff1a}body.remote-operator-mode.remote-single-section .operator-extra-block,body.remote-operator-mode.remote-single-section .presets-panel{padding:0;box-shadow:none;position:relative}body.remote-operator-mode.remote-single-section .operator-extra-block:before,body.remote-operator-mode.remote-single-section .presets-panel:before{content:"";position:absolute;inset:-4px;box-shadow:inset 0 0 0 .5px #ffffff20;border-radius:4px;pointer-events:none}#remote-extra-strip:before{content:"";position:absolute;inset:calc(-4px * var(--strip-scale, 1));box-shadow:inset 0 0 0 calc(.5px * var(--strip-scale, 1)) #ffffff20;border-radius:calc(4px * var(--strip-scale, 1));pointer-events:none}.operator-extra-cell{width:32px;height:32px;display:flex;align-items:center;justify-content:center;position:relative;border:none;background:transparent;cursor:pointer}.operator-extra-cell:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:var(--cell-color, rgba(255, 255, 255, .125));transition:background .1s ease;z-index:1}.operator-extra-cell:after{content:"";position:absolute;inset:1px;border-radius:50%;background:var(--cell-color, #fff);transform:scale(0);transition:transform .5s ease;pointer-events:none}.operator-extra-cell.active:after{transform:scale(1)}.operator-extra-cell.active:before{background:#000}.operator-extra-cell.pulsing:before{animation:dot-pulse .8s ease-in-out infinite}.operator-extra-cell:disabled,.operator-extra-cell.dim{opacity:.25}body.remote-operator-mode .presets-cell:not(.saved):not(.assigned):not(.active):before{background:#ffffff20}@media(orientation:portrait){body.remote-operator-mode .left-panel-column{flex-direction:column}body.remote-operator-mode .operator-extra-block,body.remote-operator-mode .operator-spacer-block,body.remote-operator-mode .operator-row-block{grid-template-columns:repeat(4,32px)}}@media(orientation:landscape){body.remote-operator-mode .left-panel-column{flex-direction:row}body.remote-operator-mode .operator-extra-block{grid-template-columns:repeat(2,32px)}body.remote-operator-mode .operator-spacer-block,body.remote-operator-mode .operator-row-block{grid-template-columns:repeat(1,32px)}}.touch-ripple{position:absolute;top:50%;left:50%;width:8px;height:8px;margin:-4px 0 0 -4px;pointer-events:none;border-radius:50%;border:1px solid #fff;opacity:0;animation:touch-ripple .5s ease-out forwards;z-index:5}@keyframes touch-ripple{0%{transform:scale(1);opacity:1}50%{opacity:1}to{transform:scale(6);opacity:0}}body.remote-single-section .tracks-column,body.remote-single-section .presets-panel,body.remote-single-section .main-controls-panel,body.remote-single-section .pad-controls-panel,body.remote-single-section .beat-counter-panel,body.remote-single-section .remote-stats-panel{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:inset 0 0 0 1px #ffffff1a}body.ui-window .tracks-wrapper{order:100;margin-top:auto;position:static;width:100%;max-height:none;align-self:center}body.ui-window .tracks-container{max-height:none}body.ui-window .edit-controls{position:fixed!important;top:auto!important;bottom:16px!important;left:16px!important;z-index:1000}body.ui-window .view-controls{position:fixed!important;top:auto!important;bottom:16px!important;right:16px!important;z-index:1000}.remote-stats-panel{position:absolute;bottom:100%;left:0;margin-bottom:24px;background:#000c;border-radius:4px;padding:4px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;flex-direction:column;justify-content:space-between;height:136px;box-sizing:border-box}body.ui-window .remote-button,body.ui-window .remote-panel{display:none}#connection-overlay{position:fixed;inset:0;background:#000000fa;display:flex;align-items:center;justify-content:center;z-index:9999;transition:opacity .3s ease}#connection-overlay.hidden{opacity:0;pointer-events:none}.connection-dialog{text-align:center;padding:40px;max-width:400px}.connection-dialog h1{font-size:24px;font-weight:600;color:#fffffff2;margin-bottom:4px}.connection-dialog .subtitle{font-size:14px;color:#ffffff80;margin-bottom:32px}#connection-status{margin-bottom:24px}#connection-status .status-text{font-size:14px;color:#ffffffb3}#connection-status.connecting .status-text{color:#ffec27e6}#connection-status.connected .status-text{color:#00e436e6}#connection-status.disconnected .status-text{color:#ffffff80}#connection-status.error .status-text{color:#ff77a8e6}.room-code-section{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.room-code-section.hidden{display:none}.room-code-section label{font-size:12px;color:#fff9;text-transform:uppercase;letter-spacing:.5px}#room-code{font-family:var(--font-mono);font-size:24px;font-weight:600;letter-spacing:4px;text-align:center;text-transform:uppercase;padding:16px 20px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;outline:none;transition:all .15s ease}#room-code::placeholder{color:#ffffff4d;letter-spacing:2px}#room-code:focus{background:#ffffff26;border-color:#ffffff4d}#connect-btn{width:100%;padding:14px 24px;font-size:14px;font-weight:500;background:#ffffff26;border:none;border-radius:6px;color:#ffffffe6;cursor:pointer;transition:all .15s ease}body.has-mouse #connect-btn:hover:not(:disabled){background:#fff3}#connect-btn:disabled{opacity:.5;cursor:not-allowed}.error-message{margin-top:16px;padding:12px;background:#ff77a81a;border:1px solid rgba(255,119,168,.3);border-radius:6px;color:#ff77a8e6;font-size:13px}.error-message.hidden{display:none}.midi-status-info{color:#fff9;font-size:12px}.midi-activity{display:flex;align-items:center;gap:8px;padding:12px;background:#ffffff0d;border-radius:4px;margin-top:12px}.midi-activity-label{color:#fff9;font-size:12px}.midi-activity-value{font-family:var(--font-mono);font-size:12px;color:#ffffffe6;transition:color .1s ease}.midi-activity-value.flash{color:#00e436e6}body.ui-window .waveform-wrapper{display:none}body.ui-window #waveform-panel{width:100%;padding:8px 16px 16px;box-sizing:border-box;align-self:stretch}body.ui-window #waveform-panel .waveform-container{position:relative;width:100%;height:80px;background:#000;border-radius:6px;overflow:hidden;cursor:default}body.ui-window #waveform-panel .waveform-svg{position:absolute;top:0;left:0;width:100%;height:100%}.context-menu{position:fixed;z-index:1001;background:#1e1e1ef2;border:1px solid rgba(255,255,255,.15);border-radius:4px;padding:4px 0;min-width:140px;box-shadow:0 4px 12px #00000080}.context-menu-item{display:flex;align-items:center;gap:6px;padding:6px 12px;color:#ffffffe6;font-size:12px;cursor:pointer}body.has-mouse .context-menu-item:hover{background:#ffffff1a}.context-menu-item .material-symbols-outlined{font-size:14px;width:14px}.context-menu-backdrop{position:fixed;inset:0;z-index:1000}.param-controlled .param-inline-slider .param-value-input,.param-controlled .param-value-input,.param-controlled .edit-select,.param-controlled .param-inline-slider{background:#b43cb466}.param-controlled .param-inline-slider-fill{display:none}.param-controlled .param-inline-slider .param-value-input{visibility:hidden}.param-controlled .param-inline-slider .param-value-input:focus,.param-controlled .param-value-input:focus{background:#b43cb48c}.param-controlled .param-inline-slider{cursor:ew-resize}.dashboard-label{position:absolute;top:0;bottom:0;padding:4px 6px;border:none;background:transparent;color:#fff;font-size:12px;font-variant-numeric:tabular-nums;outline:none;z-index:2;pointer-events:none;cursor:ew-resize}.dashboard-label:focus{pointer-events:auto;cursor:text}.dashboard-range-min{left:0;text-align:left;width:40%}.dashboard-range-max{right:0;text-align:right;width:40%}.dashboard-channel{display:inline-block;width:22px;height:22px;margin-right:5px;padding:0;border:none;border-radius:3px;background:#b43cb466;color:#fff;font-size:11px;text-align:center;line-height:22px;outline:none;cursor:pointer;vertical-align:middle}.dashboard-range-bar{position:absolute;top:0;bottom:0;background:#b43cb440;border-radius:3px;z-index:0;pointer-events:none}@media(max-width:768px){#room-code{font-size:20px;padding:14px 16px}}.chaser-preview-wrapper{display:flex;gap:8px;align-items:stretch}.chaser-preview-left{flex:3;display:flex;flex-direction:column;gap:4px}.chaser-preview-params{flex:9;min-width:0}.chaser-preview-params .param-row{grid-template-columns:repeat(8,1fr)}.chaser-preview-params .param-row>.param-control{grid-column:span 6}.chaser-preview-params .param-row-grouped[data-cols="2"] .param-cell{grid-column:span 4}.chaser-grid-wrapper{padding:4px 0;display:flex;gap:6px}.chaser-grid-wrapper.hidden{display:none}.pattern-source-warning{color:#ff6500;margin-right:5px;font-size:12px;position:relative;top:1px}.chaser-button-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:2px;flex:1;aspect-ratio:1}.chaser-pattern-toolbar{display:flex;flex-direction:column;gap:2px;flex:1}.chaser-pattern-action{flex:1;border:none;border-radius:2px;background:#ffffff1a;color:#ffffff80;font-size:10px;letter-spacing:.5px;text-transform:uppercase;cursor:pointer;padding:2px 0;transition:all .1s ease}body.has-mouse .chaser-pattern-action:hover{background:#ffffff26;color:#ffffffe6}.chaser-grid-btn{border:none;border-radius:2px;background:#ffffff1a;cursor:pointer;padding:0;min-width:0;min-height:8px;transition:all .1s ease}body.has-mouse .chaser-grid-btn:hover{background:#ffffff26}.chaser-grid-btn.active{background:#ffffffe6}.chaser-grid-btn.current{position:relative}.chaser-grid-btn.current:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:6px;height:6px;border-radius:50%;background:#fff}.chaser-grid-btn.active.current:after{background:#000}.param-row>.modifier-stack-control,.param-row>.model-stack-control,.param-row>.splat-stack-control{flex-direction:column;grid-column:1 / -1}.param-row:has(.modifier-stack-control)>label,.param-row:has(.model-stack-control)>label,.param-row:has(.splat-stack-control)>label{display:none}.param-row:has(.model-stack-control),.param-row:has(.modifier-stack-control),.param-row:has(.splat-stack-control){margin-bottom:5px}.param-row:has(.model-stack-control)+.param-separator,.param-row:has(.modifier-stack-control)+.param-separator,.param-row:has(.splat-stack-control)+.param-separator{margin:0 0 8px}.modifier-stack{width:100%}.modifier-list{display:flex;flex-direction:column;gap:2px}.modifier-block{transition:opacity .1s ease}.modifier-block.dragging{opacity:.4}.modifier-block.drag-over{box-shadow:0 -2px #fff6}.modifier-header{display:flex;align-items:center;gap:4px;padding:2px 4px;margin-bottom:4px;background:#ffffff0d;border-radius:3px;cursor:grab}.modifier-header:active{cursor:grabbing}.modifier-enabled-toggle{flex-shrink:0}.modifier-block.disabled{opacity:.4}.modifier-title{flex:1;font-size:11px;font-weight:500;color:#fff9;text-transform:uppercase;letter-spacing:.5px}.modifier-remove-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;border-radius:3px;background:transparent;color:#ffffff4d;cursor:pointer;transition:all .1s ease;flex-shrink:0}body.has-mouse .modifier-remove-btn:hover{background:#ffffff1a;color:#fffc}.modifier-remove-btn i{font-size:12px}.modifier-block>.param-row{margin-bottom:4px;min-height:24px}.modifier-block>.param-row:last-child{margin-bottom:0}.modifier-picker-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;pointer-events:auto}.modifier-picker{background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:8px;min-width:350px;max-width:540px;height:50vh;overflow:hidden;display:flex;flex-direction:column}.modifier-picker-header{padding:12px 12px 8px;color:#fff;font-size:14px;font-weight:500}.modifier-picker-filters{display:flex;gap:6px;padding:0 12px 8px;flex-wrap:wrap}.modifier-picker-filter-chip{padding:4px 8px;background:#ffffff14;border:1px solid transparent;border-radius:4px;color:#fff9;font-size:11px;cursor:pointer;transition:all .15s ease}body.has-mouse .modifier-picker-filter-chip:hover{background:#ffffff1f;color:#fffc}.modifier-picker-filter-chip.active{color:#fff}.modifier-picker-list{overflow-y:auto;padding:8px;border-top:1px solid rgba(255,255,255,.08)}.modifier-picker-item{display:block;width:100%;padding:10px 12px;border:none;border-radius:4px;background:transparent;color:#ffffffe6;font-size:13px;text-align:left;cursor:pointer;transition:background .15s ease}body.has-mouse .modifier-picker-item:hover{background:#ffffff1a}.chaser-grid-canvas{width:100%;aspect-ratio:1;display:block;border-radius:6px;border:1px solid #444}.shader-import-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:2000;background:#000000b3;display:none;align-items:center;justify-content:center;pointer-events:none}.shader-import-overlay.visible{display:flex}.shader-import-overlay-content{border:2px dashed rgba(255,255,255,.4);border-radius:12px;padding:48px 64px;display:flex;flex-direction:column;align-items:center;gap:12px;color:#fffc}.shader-import-overlay-content i{font-size:48px;opacity:.6}.shader-import-overlay-content span{font-size:14px;letter-spacing:.5px}.content-picker-imported-badge{font-size:12px;opacity:.4}.content-picker-delete-imported{margin-left:auto;opacity:0;transition:opacity .15s ease}body.has-mouse .content-picker-item:hover .content-picker-delete-imported{opacity:1}.visual-preview-modal{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1500;opacity:0;pointer-events:none;transition:opacity .2s ease}.visual-preview-modal.visible{opacity:1;pointer-events:auto}.visual-preview-modal-content{background:#1a1a1a;border:1px solid rgba(255,255,255,.15);border-radius:8px;display:flex;flex-direction:column;max-height:85vh;overflow:hidden}.visual-preview-modal-header{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.1);-webkit-user-select:none;user-select:none}.visual-preview-modal-title{display:flex;align-items:center;gap:8px;color:#fff;font-size:14px;font-weight:500}.visual-preview-modal-title i{font-size:16px;opacity:.6}.visual-preview-modal-body{display:flex;flex:1;min-height:0;overflow:hidden}.visual-preview-modal-preview{flex:0 0 auto;display:flex;align-items:center;justify-content:center;background:#000}.visual-preview-modal-canvas{display:block}.visual-preview-modal-params{width:640px;flex-shrink:0;overflow-y:auto;padding:8px;border-left:1px solid rgba(255,255,255,.1)}.visual-preview-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid rgba(255,255,255,.1)}.visual-preview-modal-btn{padding:6px 16px;border:1px solid rgba(255,255,255,.2);border-radius:4px;background:#ffffff0f;color:#fffc;font-size:12px;cursor:pointer;transition:all .1s ease;display:flex;align-items:center;gap:6px}body.has-mouse .visual-preview-modal-btn:hover{background:#ffffff1f;color:#fff}.visual-preview-modal-btn.import{background:#29adff26;border-color:#29adff66;color:#0097ff}body.has-mouse .visual-preview-modal-btn.import:hover{background:#29adff40}
