:root{--dock-bg:#00000073;--dock-blur:20px;--dock-border:1px solid #ffffff1a;--dock-radius:999px;--dock-shadow:0 8px 32px #00000080;--panel-bg:#121212cc;--panel-blur:24px;--panel-radius:20px;--overlay-bg:#000000b8;--overlay-blur:40px;--chrome-fade-ms:.26s;--idle-timeout-ms:3s}*{box-sizing:border-box;margin:0;padding:0}body{background:#000;width:100vw;height:100vh;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,sans-serif;overflow:hidden}#canvas-2d{will-change:transform;width:100%;height:100%;display:block;position:fixed;inset:0}#webgl-container{width:100%;height:100%;display:none;position:fixed;inset:0}#webgl-container canvas{width:100%!important;height:100%!important}#webgpu-canvas{will-change:transform;width:100%;height:100%;display:none;position:fixed;inset:0}#webgpu-mirror{pointer-events:none;opacity:0;z-index:-1;width:100%;height:100%;position:fixed;inset:0}.ipod{transform:translate(calc(-50% + var(--ipod-x,0px)), calc(-50% + var(--ipod-y,0px))) scale(.94);opacity:0;pointer-events:none;z-index:10;-webkit-user-select:none;user-select:none;cursor:grab;background:linear-gradient(160deg,#fff 0%,#e8e8e8 100%);border-radius:28px;flex-direction:column;align-items:center;gap:18px;width:236px;padding:22px 22px 28px;transition:opacity .32s cubic-bezier(.22,1,.36,1),transform .32s cubic-bezier(.22,1,.36,1);display:flex;position:fixed;top:50%;left:50%;box-shadow:inset 0 2px #fffc,inset 0 -1px #00000026,0 28px 70px #000000a6,0 8px 24px #00000059}.ipod.visible{opacity:1;transform:translate(calc(-50% + var(--ipod-x,0px)), calc(-50% + var(--ipod-y,0px))) scale(1);pointer-events:all}.ipod.dragging{cursor:grabbing;transition:none}.ipod-screen-bezel{background:#1a1a1a;border-radius:6px;width:100%;padding:3px;box-shadow:inset 0 1px 3px #0009,0 0 0 1px #0006}.ipod-screen{aspect-ratio:4/3;background:#1c2a1c;border-radius:4px;width:100%;position:relative;overflow:hidden}.screen-view{flex-direction:column;display:flex;position:absolute;inset:0}.screen-view.hidden{display:none}.screen-titlebar{color:#fff;text-align:center;background:linear-gradient(#4a80d9 0%,#2d5fc4 100%);flex-shrink:0;padding:4px 8px;font-size:11px;font-weight:600}.ipod-empty{color:#00000080;text-align:center;background:#c8d8b8;flex:1;justify-content:center;align-items:center;font-size:10px;line-height:1.6;display:flex}.now-playing{background:#c8d8b8;flex-direction:column;flex:1;align-items:center;gap:4px;padding:6px 8px;display:flex}#ipod-art{object-fit:cover;border-radius:3px;width:60px;height:60px;box-shadow:0 2px 6px #0000004d}.np-title{color:#000;text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:10px;font-weight:600;line-height:1.2;overflow:hidden}.np-artist{color:#00000080;text-align:center;font-variant-numeric:tabular-nums;font-size:9px}.np-progress{width:100%;margin-top:4px}.np-bar{background:#00000026;border-radius:2px;width:100%;height:3px;overflow:hidden}.np-fill{background:#2d5fc4;border-radius:2px;width:0%;height:100%;transition:width .25s linear}.wheel{background:linear-gradient(145deg,#f5f5f5 0%,#dcdcdc 100%);border-radius:50%;flex-shrink:0;width:172px;height:172px;position:relative;box-shadow:inset 0 2px #ffffffe6,inset 0 -2px #0000001f,0 4px 12px #0003,0 1px 3px #00000026}.wheel-label{color:#555;letter-spacing:.05em;cursor:pointer;z-index:1;font-size:9px;font-weight:700;position:absolute}.wheel-label:hover{color:#000}.wheel-menu{top:10px;left:50%;transform:translate(-50%)}.wheel-back{top:50%;left:10px;transform:translateY(-50%)}.wheel-forward{top:50%;right:10px;transform:translateY(-50%)}.wheel-play{bottom:10px;left:50%;transform:translate(-50%)}.wheel-center{cursor:pointer;background:linear-gradient(145deg,#f8f8f8 0%,#e0e0e0 100%);border-radius:50%;width:60px;height:60px;transition:box-shadow .1s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2px #fffc,inset 0 -1px #0000001a,0 2px 6px #0000002e}.wheel-center:active{box-shadow:inset 0 1px #fff9,inset 0 -1px #00000026,0 1px 3px #00000026}#controls{-webkit-backdrop-filter:blur(24px);z-index:100;cursor:grab;-webkit-user-select:none;user-select:none;background:#0009;border:1px solid #ffffff1f;border-radius:20px;flex-direction:column;gap:10px;min-width:580px;padding:14px 18px;transition:opacity .28s;display:flex;position:fixed}#controls.dragging{cursor:grabbing;transition:none}#controls.ipod-mode,#controls.controls-hidden{opacity:0;pointer-events:none}#ui-buttons{z-index:200;gap:8px;transition:opacity .28s;display:flex;position:fixed;bottom:20px;right:20px}#ui-buttons.all-hidden{opacity:0;pointer-events:none}.ui-btn{-webkit-backdrop-filter:blur(12px);color:#fff9;cursor:pointer;background:#00000073;border:1px solid #ffffff26;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;line-height:1;transition:background .15s,color .15s;display:flex}.ui-btn:hover{color:#fff;background:#ffffff26}#kbd-hints{-webkit-backdrop-filter:blur(12px);z-index:200;pointer-events:none;-webkit-user-select:none;user-select:none;color:#ffffff8c;white-space:nowrap;background:#00000073;border:1px solid #ffffff26;border-radius:16px;align-items:center;gap:14px;padding:6px 14px;font-size:11px;transition:opacity .28s;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}#kbd-hints span{align-items:center;gap:4px;display:inline-flex}#kbd-hints kbd{color:#ffffffc7;text-align:center;background:#ffffff0d;border:1px solid #ffffff38;border-radius:4px;min-width:18px;padding:1px 5px;font-family:SF Mono,ui-monospace,monospace;font-size:10px;line-height:1.3;display:inline-block}@media (width<=640px){#kbd-hints{display:none}}#ipod-toggle{color:#ffffffd9;cursor:pointer;white-space:nowrap;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:20px;padding:6px 14px;font-size:12px;font-weight:500;transition:background .15s}#ipod-toggle:hover{background:#fff3}#music-row{grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;min-height:42px;display:grid}#track-details{align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}#album-art{object-fit:cover;border:1px solid #ffffff1f;border-radius:5px;flex-shrink:0;width:36px;height:36px}#track-text{flex-direction:column;gap:2px;min-width:0;display:flex;overflow:hidden}#track-name{color:#ffffffe0;white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:500;display:block;overflow:hidden}#track-name.ticker{text-overflow:clip;animation:track-ticker var(--ticker-dur,6s) ease-in-out infinite alternate;overflow:visible}@keyframes track-ticker{0%,18%{transform:translate(0)}82%,to{transform:translateX(var(--ticker-dist,0px))}}#track-time{color:#ffffff61;font-variant-numeric:tabular-nums;font-size:10px;font-weight:400}#music-actions{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.file-label{cursor:pointer}.vol-label{color:#ffffff80;white-space:nowrap;cursor:default;align-items:center;gap:5px;font-size:11px;display:flex}.vol-label input[type=range]{appearance:none;cursor:pointer;background:#ffffff40;border-radius:2px;outline:none;width:64px;height:3px}.vol-label input[type=range]::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#ffffffd9;border-radius:50%;width:12px;height:12px}.vol-label input[type=range]::-moz-range-thumb{cursor:pointer;background:#ffffffd9;border:none;border-radius:50%;width:12px;height:12px}.file-label input[type=file]{display:none}.file-label span{color:#ffffffd9;cursor:pointer;white-space:nowrap;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:20px;padding:6px 14px;font-size:12px;font-weight:500;transition:background .15s}.file-label span:hover{background:#fff3}#playlist-wrap{position:relative}#playlist-btn{color:#ffffffd9;cursor:pointer;white-space:nowrap;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:20px;padding:6px 14px;font-size:12px;font-weight:500;transition:background .15s}#playlist-btn:hover{background:#fff3}#playlist-btn.open{background:#ffffff2e}#playlist-menu{-webkit-backdrop-filter:blur(20px);z-index:200;background:#121212eb;border:1px solid #ffffff1f;border-radius:12px;min-width:220px;max-width:340px;max-height:260px;padding:6px;list-style:none;display:none;position:absolute;bottom:calc(100% + 8px);right:0;overflow-y:auto;box-shadow:0 8px 32px #00000080}#playlist-menu.open{display:block}#playlist-menu li{color:#ffffffbf;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-radius:8px;padding:8px 12px;font-size:12px;transition:background .1s,color .1s;overflow:hidden}#playlist-menu li:hover{color:#fff;background:#ffffff1a}#playlist-menu li.playing{color:#fff;font-weight:600}#playlist-menu .playlist-empty{color:#ffffff4d;cursor:default;font-style:italic}#playlist-menu .playlist-empty:hover{color:#ffffff4d;background:0 0}#dock-signin{justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}#dock-signin .signin-icon{font-size:14px;line-height:1}#dock-signin .signin-dot{box-sizing:border-box;background:0 0;border:1.5px solid #00000073;border-radius:50%;width:8px;height:8px;transition:background .2s;position:absolute;bottom:2px;right:2px}#dock-signin.authed .signin-dot{background:#1ed760;border-color:#fff;box-shadow:0 0 6px #1ed760bf}#dock-signin.open{color:#fff;background:#ffffff2e}#streaming-menu{-webkit-backdrop-filter:blur(20px);z-index:10;background:#121212eb;border:1px solid #ffffff1f;border-radius:12px;width:280px;padding:10px;display:none;position:absolute;bottom:calc(100% + 8px);left:0;box-shadow:0 6px 24px #00000073}#streaming-menu.open{display:block}#streaming-sources{gap:6px;margin-bottom:8px;display:flex}.stream-src-btn{color:#ffffffb3;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:8px;flex:1;padding:6px 8px;font-size:11px;transition:background .1s,color .1s}.stream-src-btn:hover{color:#fff;background:#ffffff1a}.stream-src-btn.active{color:#fff;background:#ffffff2e;border-color:#ffffff47}#streaming-auth{align-items:center;gap:8px;margin-bottom:8px;display:flex}#streaming-connect{color:#fff;cursor:pointer;background:#1ed7602e;border:1px solid #1ed76066;border-radius:8px;padding:5px 10px;font-size:11px;font-weight:500}#streaming-connect:hover{background:#1ed7604d}#streaming-auth-status{color:#ffffff8c;white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}#streaming-hint{color:#ffffff8c;margin:4px 2px 0;font-size:11px;line-height:1.45}#streaming-hint strong{color:#ffffffd9;font-weight:600}#viz-source{border-top:1px solid #ffffff14;margin-top:12px;padding-top:10px}.viz-source-title{text-transform:uppercase;letter-spacing:.5px;color:#ffffff73;margin-bottom:6px;font-size:10px}.viz-source-btns{flex-wrap:wrap;gap:6px;display:flex}.viz-source-btn{color:#ffffffbf;cursor:pointer;white-space:nowrap;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:8px;flex:none;padding:6px 10px;font-size:11px}.viz-source-btn:hover{color:#fff;background:#ffffff1f}.viz-source-btn.active{color:#fff;background:#1ed76040;border-color:#1ed76080}#viz-source-status{color:#ffffff8c;min-height:14px;margin-top:6px;font-size:10px}.viz-source-picker{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}.viz-source-select{color:#ffffffd9;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:8px;outline:none;flex:180px;min-width:150px;padding:6px 8px;font-size:11px}.viz-source-select:focus{border-color:#ffffff59}.viz-source-select option{color:#000}.viz-source-select:disabled,.viz-source-btn:disabled{opacity:.5;cursor:default}#ipod-view-menu{background:#c8d8b8}#ipod-menu-list{background:#c8d8b8;flex:1;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}.ipod-menu-item{color:#1c1c1c;cursor:pointer;border-bottom:1px solid #0000000f;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;font-size:13px;display:flex}.ipod-menu-item.selected{color:#fff;background:linear-gradient(#6c9ffb 0%,#2a5fd0 100%)}.ipod-menu-item .ipod-item-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.ipod-menu-item .ipod-item-chev{color:#0000004d;font-size:14px}.ipod-menu-item.selected .ipod-item-chev{color:#ffffffb3}.ipod-menu-note{text-align:center;color:#00000073;padding:14px 10px;font-size:12px;font-style:italic}.ipod-menu-note.error{color:#b00020;font-style:normal}#transport{justify-self:center;align-items:center;gap:6px;padding:0 12px;display:flex}.transport-btn{color:#ffffff8c;cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;line-height:1;transition:color .12s,background .12s;display:flex}.transport-btn:hover:not(:disabled){color:#fff;background:#ffffff1a}.transport-btn.active{color:#fff;background:#ffffff26}.transport-btn:disabled{opacity:.3;cursor:default}#play-pause{color:#ffffffe6;background:#ffffff24;border:1px solid #fff3;width:32px;height:32px;font-size:14px}#play-pause:hover:not(:disabled){color:#fff;background:#ffffff3d}#progress-wrap{cursor:pointer;background:#ffffff1a;border-radius:3px;height:4px;transition:height .12s,margin .12s;position:relative}#progress-wrap:hover{height:7px;margin-top:-1.5px;margin-bottom:-1.5px}#progress-fill{pointer-events:none;background:#ffffffb8;border-radius:3px;width:0%;height:100%}#scrub-head{pointer-events:none;opacity:0;background:#fff;border-radius:50%;width:13px;height:13px;transition:opacity .1s;position:absolute;top:50%;left:0%;transform:translate(-50%,-50%);box-shadow:0 1px 4px #0006}#bottom-row{flex-direction:column;gap:8px;display:flex}#sliders-row{justify-content:center;align-items:center;gap:20px;min-height:22px;display:flex}#vortex-controls,#waves-controls,#fluid-controls{white-space:nowrap;justify-content:space-evenly;align-items:center;width:100%;display:none}#vortex-controls.visible,#waves-controls.visible,#fluid-controls.visible{animation:.22s sliders-in;display:flex}@keyframes sliders-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}#speed-control{align-items:center;gap:8px;display:flex}.speed-label{color:#ffffff80;white-space:nowrap;align-items:center;gap:7px;font-size:11px;font-weight:500;display:flex}.speed-label input[type=range]{appearance:none;cursor:pointer;background:#fff3;border-radius:2px;outline:none;width:72px;height:3px}.speed-label input[type=range]::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#ffffffd9;border-radius:50%;width:13px;height:13px}#mode-buttons{justify-content:center;align-items:center;gap:6px;padding:4px 0;display:flex}.mode-btn{cursor:pointer;color:#0000;background:#ffffff38;border:none;border-radius:50%;flex-shrink:0;width:7px;height:7px;padding:0;font-size:0;transition:background .18s,transform .18s,box-shadow .18s}.mode-btn:hover{background:#ffffff8c;transform:scale(1.25)}.mode-btn.active{background:#fff;transform:scale(1.35);box-shadow:0 0 8px #ffffff8c}#viz-title-overlay{-webkit-backdrop-filter:blur(12px)saturate(140%);letter-spacing:-.01em;color:#ffffffeb;text-shadow:0 1px 2px #0006;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:0;z-index:200;white-space:nowrap;background:#00000073;border:1px solid #ffffff24;border-radius:14px;align-items:center;padding:8px 14px;font-family:-apple-system,SF Pro Display,BlinkMacSystemFont,system-ui,sans-serif;font-size:13px;font-weight:600;transition:opacity .32s cubic-bezier(.22,1,.36,1),transform .32s cubic-bezier(.22,1,.36,1);display:inline-flex;position:fixed;top:20px;left:20px;transform:translateY(-4px)}#viz-title-overlay:before{content:"";background:#ffffffbf;border-radius:50%;width:6px;height:6px;margin-right:8px;display:inline-block;box-shadow:0 0 6px #ffffff8c}#viz-title-overlay.visible{opacity:1;transform:translateY(0)}.viz-cycle-btn{-webkit-backdrop-filter:blur(16px)saturate(140%);color:#ffffff8c;cursor:pointer;z-index:5;opacity:.55;background:#14141659;border:1px solid #ffffff26;justify-content:center;align-items:center;width:44px;height:96px;font-size:0;transition:background .15s,color .15s,border-color .15s,opacity .2s;display:flex;position:fixed;top:50%;transform:translateY(-50%)}.viz-cycle-btn:hover{color:#fff;opacity:1;background:#1414168c;border-color:#ffffff59}.viz-cycle-btn:active{background:#ffffff1f}#viz-cycle-prev{border-left:none;border-top-right-radius:10px;border-bottom-right-radius:10px;left:0}#viz-cycle-next{border-right:none;border-top-left-radius:10px;border-bottom-left-radius:10px;right:0}.viz-cycle-arrow{font-size:28px;font-weight:300;line-height:1}body.hidden .viz-cycle-btn{display:none}.viz-controls-vertical{flex-direction:column;align-items:stretch;gap:8px;max-width:280px;margin:0 auto}.viz-controls-vertical .speed-label{justify-content:space-between;align-items:center;gap:10px;width:100%;display:flex}.viz-controls-vertical input[type=text]{flex:1;min-width:80px}.viz-controls input[type=text]{color:#fff;background:#ffffff0f;border:1px solid #ffffff2e;border-radius:12px;outline:none;padding:4px 10px;font-family:-apple-system,system-ui,sans-serif;font-size:12px;transition:border-color .15s,background .15s}.viz-controls input[type=text]:focus{background:#ffffff1f;border-color:#ffffff80}.viz-controls .viz-ctl-button{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff40;border-radius:20px;padding:6px 16px;font-size:12px;font-weight:600;transition:background .15s,border-color .15s,transform .1s}.viz-controls .viz-ctl-button:hover{background:#ffffff2e;border-color:#ffffff73}.viz-controls .viz-ctl-button:active{background:#ffffff40;transform:scale(.97)}.viz-controls input[type=checkbox]{appearance:none;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff38;border-radius:10px;flex-shrink:0;width:36px;height:20px;transition:background .15s,border-color .15s;position:relative}.viz-controls input[type=checkbox]:after{content:"";background:#ffffffd9;border-radius:50%;width:14px;height:14px;transition:left .15s,background .15s;position:absolute;top:2px;left:2px}.viz-controls input[type=checkbox]:checked{background:#ffd76473;border-color:#ffd764cc}.viz-controls input[type=checkbox]:checked:after{background:#fff;left:18px}#viz-ctl-fireworks .speed-label input[type=range]{width:72px}.viz-controls input[type=number]{color:#fff;text-align:center;background:#ffffff0f;border:1px solid #ffffff2e;border-radius:10px;outline:none;padding:4px 8px;font-family:-apple-system,ui-monospace,SFMono-Regular,monospace;font-size:12px;transition:border-color .15s,background .15s}.viz-controls input[type=number]:focus{background:#ffffff1f;border-color:#ffffff80}.viz-controls{gap:18px}.viz-controls .viz-ctl-readout{color:#ffffffb3;text-align:right;min-width:36px;font-family:-apple-system,ui-monospace,SFMono-Regular,monospace;font-size:11px}:focus-visible{outline-offset:2px;outline:2px solid #ffffffd9}.mode-btn:focus-visible{outline-offset:3px;border-radius:50%;outline:2px solid #ffffffe6}.transport-btn:focus-visible,.ui-btn:focus-visible,.viz-cycle-btn:focus-visible,.stream-src-btn:focus-visible,.viz-source-btn:focus-visible,#playlist-btn:focus-visible,#ipod-toggle:focus-visible{outline-offset:2px;border-radius:6px;outline:2px solid #ffffffd9}.viz-controls input:focus-visible{outline-offset:1px;outline:2px solid #ffffffd9}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}#viz-title-overlay,.ipod{transition:none!important}#track-name.ticker{animation:none!important}}@media (width<=640px){#controls{width:calc(100vw - 24px);min-width:0;padding:10px 12px}#music-row{flex-wrap:wrap;gap:6px}#transport{justify-content:center;width:100%}#track-details{flex:100%;min-width:0}#music-actions{flex:auto;justify-content:flex-end}#bottom-row{flex-direction:column;align-items:center;gap:6px}#sliders-row{flex-wrap:wrap;justify-content:center;width:100%}}#dock{background:var(--dock-bg);min-width:480px;min-height:56px;-webkit-backdrop-filter:blur(var(--dock-blur));border:var(--dock-border);border-radius:var(--dock-radius);box-shadow:var(--dock-shadow);z-index:110;transition:opacity var(--chrome-fade-ms) ease;-webkit-user-select:none;user-select:none;color:#ffffffd9;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:8px 16px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,sans-serif;display:grid;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}#dock-left,#dock-center,#dock-right{justify-content:center;align-items:center;gap:4px;min-height:40px;display:flex}.dock-btn{color:#ffffffa6;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;padding:0;font-family:inherit;font-size:17px;line-height:1;transition:background .15s,color .15s,transform .1s;display:flex}.dock-btn:hover{color:#fff;background:#ffffff1a}.dock-btn:active{background:#ffffff2e;transform:scale(.92)}.dock-btn:focus-visible{outline-offset:-1px;outline:2px solid #ffffff8c}#dock-prev-viz,#dock-next-viz{color:#ffffffd9;font-size:28px;font-weight:400}#dock-prev-viz:hover,#dock-next-viz:hover{color:#fff}#dock-center{flex:1;min-width:360px;max-width:640px}#dock-scrubber{cursor:pointer;background:#ffffff26;border-radius:2px;flex:1;height:4px;margin:0 8px;transition:height .12s,background .15s;position:relative}#dock-scrubber:hover{background:#ffffff38;height:6px}#dock-scrubber:focus-visible{outline-offset:4px;outline:2px solid #ffffff8c}#dock-scrubber-fill{border-radius:inherit;pointer-events:none;background:#ffffffd9;width:0%;position:absolute;inset:0 auto 0 0}#dock-scrubber-head{opacity:0;pointer-events:none;background:#fff;border-radius:50%;width:12px;height:12px;transition:opacity .15s;position:absolute;top:50%;left:0%;transform:translate(-50%,-50%);box-shadow:0 1px 4px #00000080}#dock-scrubber:hover #dock-scrubber-head{opacity:1}#dock-time{color:#ffffff8c;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;flex-shrink:0;min-width:76px;font-size:11px}.dock-btn:disabled,.dock-btn[disabled]{opacity:.35;cursor:not-allowed}.dock-btn:disabled:hover,.dock-btn[disabled]:hover{color:#ffffffa6;background:0 0}@media (width<=820px){#dock{gap:10px;min-width:0;padding:6px 12px}.dock-btn{width:38px;height:38px;font-size:15px}#dock-prev-viz,#dock-next-viz{font-size:23px}#dock-center{min-width:220px}#dock-time{min-width:60px}}@media (width<=640px){#dock{gap:6px;width:calc(100% - 16px);min-width:0;padding:5px 8px}#dock-left,#dock-center,#dock-right{padding:0}#dock-right{gap:2px}.dock-btn{width:34px;height:34px;font-size:14px}#dock-prev-viz,#dock-next-viz{font-size:20px}#dock-center{min-width:0}#dock-scrubber{margin:0 4px}#dock-time{min-width:0;font-size:10px}}#dock.idle,#viz-name-badge.idle{opacity:0;pointer-events:none}#dock-idle-hint{color:#fff9;background:var(--dock-bg);-webkit-backdrop-filter:blur(var(--dock-blur));border:var(--dock-border);box-shadow:var(--dock-shadow);white-space:nowrap;pointer-events:none;opacity:0;z-index:109;border-radius:999px;padding:8px 16px;font:500 12px/1 -apple-system,BlinkMacSystemFont,SF Pro Display,sans-serif;transition:opacity .5s,transform .5s;position:fixed;bottom:30px;left:50%;transform:translate(-50%)translateY(6px)}#dock-idle-hint.show{opacity:1;transform:translate(-50%)translateY(0)}#controls,#ui-buttons{display:none}#dock-left{position:relative}#dock-left>#streaming-menu{left:0}#viz-name-badge{background:var(--dock-bg);-webkit-backdrop-filter:blur(var(--dock-blur));border:var(--dock-border);border-radius:var(--dock-radius);box-shadow:var(--dock-shadow);color:#ffffffd9;letter-spacing:.02em;z-index:110;-webkit-user-select:none;user-select:none;pointer-events:none;transition:opacity var(--chrome-fade-ms) ease;padding:6px 14px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,sans-serif;font-size:12px;font-weight:500;position:fixed;top:20px;left:20px}#viz-name-badge:empty{display:none}#viz-settings-panel{overscroll-behavior:contain;scrollbar-gutter:stable;background:var(--panel-bg);width:240px;max-height:calc(100vh - 160px);-webkit-backdrop-filter:blur(var(--panel-blur));border-radius:var(--panel-radius);color:#ffffffd9;z-index:115;opacity:0;pointer-events:none;transition:opacity var(--chrome-fade-ms) ease, transform var(--chrome-fade-ms) ease;border:1px solid #ffffff1a;padding:14px 14px 18px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,sans-serif;font-size:12px;position:fixed;bottom:100px;right:20px;overflow-y:auto;transform:translateY(20px);box-shadow:0 8px 32px #00000080}#viz-settings-panel.open{opacity:1;pointer-events:all;transform:translateY(0)}#viz-settings-panel::-webkit-scrollbar{width:8px}#viz-settings-panel::-webkit-scrollbar-track{background:0 0}#viz-settings-panel::-webkit-scrollbar-thumb{background:#ffffff47;border-radius:4px}#viz-settings-panel::-webkit-scrollbar-thumb:hover{background:#ffffff73}#viz-settings-panel.open:after{content:"";pointer-events:none;background:linear-gradient(#0000,#0a0a0ea6);height:18px;margin:0 -14px -18px;display:block;position:sticky;bottom:-18px}#viz-settings-panel.liquidglass-active{-webkit-backdrop-filter:none;background:0 0}.viz-settings-header{border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:8px;display:flex}.viz-settings-title{letter-spacing:.02em;font-size:13px;font-weight:600}.viz-settings-close{color:#ffffff8c;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;padding:0;font-size:18px;line-height:1;transition:background .15s,color .15s;display:flex}.viz-settings-close:hover{color:#fff;background:#ffffff1a}.viz-settings-empty{color:#ffffff73;text-align:center;padding:12px 0;font-size:11px;font-style:italic}#viz-global-controls{border-bottom:1px solid #ffffff14;flex-direction:column;gap:12px;margin-bottom:8px;padding:10px 2px 12px;display:flex}.viz-global-ctl{flex-direction:column;gap:6px;display:flex}.viz-global-ctl>span{color:#ffffffbf;letter-spacing:.02em;justify-content:space-between;font-size:11px;display:flex}.viz-global-ctl output{color:#fff;font-variant-numeric:tabular-nums}.viz-global-ctl input[type=range]{accent-color:#a855f7;width:100%}#viz-global-controls .viz-source-select{flex:none;width:100%;min-width:0}.viz-debug-section-header{color:#fff6;letter-spacing:.08em;text-transform:uppercase;border-top:1px solid #ffffff14;margin-top:14px;margin-bottom:6px;padding-top:14px;font-size:10px;font-weight:700}.viz-controls-vertical{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:10px;display:flex}.viz-control-vertical{flex-direction:column;align-items:center;gap:6px;min-width:44px;display:flex}.viz-control-vertical input[type=range]{writing-mode:vertical-lr;direction:rtl;width:16px;height:100px;margin:0}.viz-control-vertical label{color:#ffffffa6;text-transform:uppercase;letter-spacing:.06em;text-align:center;white-space:nowrap;font-size:10px}.viz-control-vertical .viz-control-value{color:#ffffff73;font-variant-numeric:tabular-nums;min-height:12px;font-size:10px}#library-overlay{background:var(--overlay-bg);-webkit-backdrop-filter:blur(var(--overlay-blur));z-index:200;color:#ffffffeb;opacity:0;pointer-events:none;transition:opacity var(--chrome-fade-ms) ease;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,sans-serif;display:flex;position:fixed;inset:0}#library-overlay.open{opacity:1;pointer-events:all}#library-header{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;gap:24px;padding:20px 28px 16px;display:flex}#library-tabs{gap:4px;display:flex}.library-tab{color:#ffffff8c;letter-spacing:.01em;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:8px 16px;font-family:inherit;font-size:14px;font-weight:500;transition:background .15s,color .15s}.library-tab:hover{color:#fff;background:#ffffff0f}.library-tab.active{color:#fff;background:#ffffff1f;font-weight:600}.library-tab:focus-visible{outline-offset:2px;outline:2px solid #ffffff8c}#library-close{color:#ffffff8c;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:22px;line-height:1;transition:background .15s,color .15s;display:flex}#library-close:hover{color:#fff;background:#ffffff1a}#library-close:focus-visible{outline-offset:1px;outline:2px solid #ffffff8c}#library-body{flex:1;padding:24px 28px 40px;overflow-y:auto}.library-empty{color:#ffffff80;text-align:center;padding:60px 24px;font-size:13px;line-height:1.6}.library-empty code{background:#ffffff0f;border-radius:4px;padding:2px 6px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:11px}.library-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));align-items:start;gap:18px 16px;display:grid}.library-card{text-align:left;cursor:pointer;color:inherit;background:0 0;border:none;flex-direction:column;gap:8px;padding:0;font-family:inherit;transition:transform .12s;display:flex}.library-card:hover{transform:translateY(-2px)}.library-card:focus-visible{outline-offset:4px;border-radius:8px;outline:2px solid #ffffff8c}.library-card-art{aspect-ratio:1;background:#ffffff0d;border-radius:8px;overflow:hidden;box-shadow:0 4px 16px #00000059}.library-card-art img{object-fit:cover;width:100%;height:100%;display:block}img.lib-art{opacity:0;transition:opacity .35s}img.lib-art.art-loaded{opacity:1}.library-card-name{color:#ffffffeb;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.library-card-subtitle{color:#ffffff80;white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.library-back{color:#ffffffa6;cursor:pointer;background:0 0;border:none;border-radius:6px;margin-bottom:8px;padding:6px 10px;font-family:inherit;font-size:13px;font-weight:500;transition:background .12s,color .12s}.library-back:hover{color:#fff;background:#ffffff0f}.library-back:focus-visible{outline-offset:1px;outline:2px solid #ffffff8c}.library-drill-title{letter-spacing:-.01em;color:#fff;max-width:800px;margin:6px 0 18px;font-size:22px;font-weight:700}.library-songs{flex-direction:column;gap:2px;max-width:800px;display:flex}.library-song-row{cursor:pointer;text-align:left;color:inherit;background:0 0;border:none;border-radius:8px;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;padding:8px 12px;font-family:inherit;transition:background .12s;display:grid}.library-song-row:hover{background:#ffffff0f}.library-song-row:focus-visible{outline-offset:-1px;outline:2px solid #ffffff8c}.library-song-art{background:#ffffff0d;border-radius:4px;flex-shrink:0;width:44px;height:44px;overflow:hidden}.library-song-art img{object-fit:cover;width:100%;height:100%;display:block}.library-song-text{flex-direction:column;gap:2px;min-width:0;display:flex}.library-song-name{color:#ffffffeb;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.library-song-subtitle{color:#ffffff80;white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.library-song-duration{color:#ffffff73;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px}@media (width<=640px){.library-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px}.library-drill-title{font-size:18px}}.library-sentinel{height:1px;margin-top:24px}.library-search{max-width:600px;margin:0 auto}.library-search-input{color:#fff;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:999px;outline:none;width:100%;padding:12px 18px;font-family:inherit;font-size:14px;transition:background .15s,border-color .15s}.library-search-input::placeholder{color:#ffffff73}.library-search-input:focus{background:#ffffff1a;border-color:#ffffff47}.library-search-input::-webkit-search-cancel-button{display:none}.library-search-results{margin-top:16px}@media (width<=640px){#library-header{flex-wrap:wrap;padding:12px 16px}#library-tabs{flex:1;overflow-x:auto}.library-tab{padding:6px 12px;font-size:13px}#library-body{padding:16px}}.dock-volume-wrap{justify-content:center;align-items:center;display:flex;position:relative}#dock-volume-popup{background:var(--panel-bg);width:44px;-webkit-backdrop-filter:blur(var(--panel-blur));opacity:0;pointer-events:none;transition:opacity var(--chrome-fade-ms) ease, transform var(--chrome-fade-ms) ease;z-index:116;border:1px solid #ffffff1a;border-radius:14px;flex-direction:column;align-items:center;gap:6px;padding:12px 6px 10px;display:flex;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%)translateY(8px);box-shadow:0 8px 24px #00000080}#dock-volume-popup.open{opacity:1;pointer-events:all;transform:translate(-50%)translateY(0)}#dock-volume-slider{writing-mode:vertical-lr;direction:rtl;width:16px;height:110px;margin:0}#dock-volume-readout{color:#ffffff8c;font-variant-numeric:tabular-nums;text-align:center;letter-spacing:.04em;min-width:18px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,sans-serif;font-size:9px}#debug-hud{color:#c8c8c8;z-index:9999;-webkit-backdrop-filter:blur(12px)saturate(1.4);pointer-events:none;-webkit-user-select:none;user-select:none;background:#000000b8;border:1px solid #ffffff1f;border-radius:10px;min-width:148px;padding:10px 13px 8px;font-family:SF Mono,ui-monospace,Fira Code,monospace;font-size:11px;line-height:1.5;display:none;position:fixed;top:20px;right:20px}body.hud-visible #debug-hud{display:block}.hud-title{letter-spacing:.12em;color:#ffffff59;margin-bottom:4px;font-size:9px}.hud-fps-row{margin-bottom:1px;line-height:1.1}#hud-fps{font-variant-numeric:tabular-nums;color:var(--hud-fps-color,#4eff91);font-size:26px;font-weight:700;transition:color .3s}.hud-row{font-variant-numeric:tabular-nums;margin:1px 0}.hud-unit{color:#ffffff61;font-size:10px}.hud-dim{color:#ffffff73;font-size:10px}.hud-divider{border-top:1px solid #ffffff14;margin:5px 0}#hud-spark{background:#ffffff0a;border-radius:3px;margin:4px 0;display:block}.hud-hint{color:#fff3;letter-spacing:.05em;margin-top:5px;font-size:9px}#viz-loading{z-index:50;opacity:0;pointer-events:none;justify-content:center;align-items:center;transition:opacity .22s;display:flex;position:fixed;inset:0}#viz-loading.visible{opacity:1}#viz-loading.failed{pointer-events:auto}#viz-loading .viz-loading-card{background:var(--dock-bg);-webkit-backdrop-filter:blur(var(--dock-blur));border:var(--dock-border);border-radius:var(--dock-radius);box-shadow:var(--dock-shadow);color:#ffffffd9;flex-direction:column;align-items:center;gap:14px;padding:22px 30px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,sans-serif;font-size:13px;font-weight:500;display:flex}#viz-loading .viz-loading-spinner{border:2.5px solid #ffffff2e;border-top-color:#ffffffd9;border-radius:50%;width:28px;height:28px;animation:.8s linear infinite viz-loading-spin}@keyframes viz-loading-spin{to{transform:rotate(360deg)}}#viz-loading .viz-loading-retry{color:#fff;font:inherit;cursor:pointer;background:#ffffff1f;border:1px solid #ffffff40;border-radius:8px;margin-top:2px;padding:6px 18px;display:none}#viz-loading .viz-loading-retry:hover{background:#fff3}#viz-loading.failed .viz-loading-spinner{display:none}#viz-loading.failed .viz-loading-retry{display:inline-block}
