:root{--bg:#121212;--surface:#1e1e1e;--surface-2:#2a2a2a;--text:#f2f2f2;--muted:#a7a7a7;--accent:#1db954;--danger:#e5534b;--radius:10px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;margin:0}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.5}input{font:inherit;color:var(--text);background:var(--surface-2);border-radius:var(--radius);border:1px solid #0000;min-width:0;padding:10px 12px}input:focus{border-color:var(--accent);outline:none}.app{flex-direction:column;min-height:100dvh;display:flex}.login{place-items:center;min-height:100dvh;padding:16px;display:grid}.login-card{flex-direction:column;align-items:center;gap:12px;width:100%;max-width:320px;display:flex}.login-card h1{margin:0 0 8px;font-size:1.4rem}.login-card input,.login-card .btn{justify-content:center;width:100%}.login-card .error{margin:0}.top-bar{z-index:10;background:var(--bg);padding:calc(env(safe-area-inset-top) + 12px) 16px 8px;justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.top-bar h1{margin:0;font-size:1.25rem}.tabs{gap:4px;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;border-radius:999px;padding:6px 12px}.tabs button.active{background:var(--surface-2);color:var(--text)}.content{flex:1;width:100%;max-width:900px;margin:0 auto;padding:8px 16px 140px}.btn{background:var(--surface-2);white-space:nowrap;border:none;border-radius:999px;align-items:center;gap:6px;padding:9px 16px;display:inline-flex}.btn.primary{background:var(--accent);color:#000;font-weight:600}.btn.danger{color:var(--danger)}.icon-btn{width:40px;height:40px;color:var(--muted);background:0 0;border:none;border-radius:50%;place-items:center;display:grid}.icon-btn:hover{color:var(--text);background:var(--surface-2)}.add-form{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.add-form input{flex:1}.add-form .error,.add-form .success{flex-basis:100%;margin:0}.success{color:var(--accent)}.import-choice{border-radius:var(--radius);background:var(--surface);flex-wrap:wrap;flex-basis:100%;align-items:center;gap:8px;padding:12px;display:flex}.import-choice span{color:var(--muted);flex-basis:100%;font-size:.9rem}.search{width:100%;margin-bottom:12px}.error{color:var(--danger)}.empty{color:var(--muted);text-align:center;padding:32px 0}.cover{background:var(--surface-2);color:var(--muted);border-radius:6px;flex-shrink:0;place-items:center;display:grid;overflow:hidden}.cover img{object-fit:cover;width:100%;height:100%}.track-list{margin:0;padding:0;list-style:none}.track-list li{border-radius:var(--radius);align-items:center;display:flex;position:relative}.track-list li:hover{background:var(--surface)}.track-list li.active .track-title{color:var(--accent)}.track-main{text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:12px;min-width:0;padding:8px;display:flex}.track-main:disabled{opacity:1}.track-text{flex-direction:column;flex:1;min-width:0;display:flex}.track-title,.track-sub{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.track-sub{color:var(--muted);font-size:.85rem}.track-duration{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem}.track-actions{display:flex}.list-actions{gap:8px;margin-bottom:12px;display:flex}.cover-wrap{flex-shrink:0;display:grid;position:relative}.cover-overlay{color:#fff;opacity:0;background:#0000008c;border-radius:6px;place-items:center;transition:opacity .15s;display:grid;position:absolute;inset:0}.track-main:hover .cover-overlay,.track-main:focus-visible .cover-overlay,li.active .cover-overlay{opacity:1}.track-progress{appearance:none;background:var(--surface-2);border:none;height:3px;position:absolute;bottom:2px;left:68px;right:8px}.track-progress::-webkit-progress-bar{background:var(--surface-2)}.track-progress::-webkit-progress-value{background:var(--accent)}.track-progress::-moz-progress-bar{background:var(--accent)}.playlist-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.playlist-grid button{text-align:left;background:0 0;border:none;flex-direction:column;gap:4px;width:100%;padding:0;display:flex}.playlist-grid .cover{aspect-ratio:1;width:100%!important;height:auto!important}.playlist-header{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.playlist-header .btn:first-child{align-self:flex-start}.playlist-header h2{margin:0}.playlist-actions{flex-wrap:wrap;gap:8px;display:flex}.player-bar{z-index:20;background:var(--surface);border-top:1px solid var(--surface-2);padding:0 12px calc(env(safe-area-inset-bottom) + 8px);position:fixed;bottom:0;left:0;right:0}.player-row{align-items:center;gap:12px;max-width:900px;margin:0 auto;display:flex}.player-open{text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:12px;min-width:0;padding:0;display:flex}.now-playing{z-index:25;isolation:isolate;background:var(--bg);padding:env(safe-area-inset-top) 16px calc(env(safe-area-inset-bottom) + 24px);position:fixed;inset:0;overflow-y:auto}.np-backdrop{z-index:-2;object-fit:cover;filter:blur(60px)saturate(1.5);opacity:.55;width:120%;height:120%;position:fixed;inset:-10%}.now-playing:before{content:"";z-index:-1;background:linear-gradient(180deg, #12121233 0%, var(--bg) 75%);position:fixed;inset:0}.np-pulse{will-change:transform;width:min(100%,360px);transition:transform 80ms linear}.visualizer{width:100%;height:64px;display:block}.fake-bars{justify-content:center;align-items:center;gap:5px;height:64px;display:flex}.fake-bars span{background:var(--accent);opacity:.8;border-radius:3px;width:5px;height:15%;animation:.9s ease-in-out infinite alternate paused fake-bar}.fake-bars span:nth-child(3n){animation-duration:.7s}.fake-bars span:nth-child(4n+1){animation-duration:1.1s}.fake-bars.playing span{animation-play-state:running}@keyframes fake-bar{0%{height:15%}to{height:90%}}.equalizer{align-items:flex-end;gap:2px;width:16px;height:16px;display:inline-flex}.equalizer span{background:var(--accent);border-radius:1px;flex:1;height:30%;animation:.8s ease-in-out infinite alternate paused eq-bar}.equalizer span:nth-child(2){animation-duration:.55s}.equalizer span:nth-child(3){animation-duration:.95s}.equalizer.playing span{animation-play-state:running}@keyframes eq-bar{0%{height:25%}to{height:100%}}.cover-overlay .hover-only{display:none}.track-main:hover .cover-overlay .hover-only{display:block}.track-main:hover .cover-overlay .equalizer{display:none}@media (prefers-reduced-motion:reduce){.fake-bars span,.equalizer span{animation:none}.np-pulse{transition:none}}.np-header{max-width:480px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;justify-content:space-between;align-items:center;margin:0 auto;padding:8px 0;font-size:.85rem;display:flex}.np-main{flex-direction:column;gap:8px;max-width:480px;margin:0 auto;display:flex}.np-cover{justify-content:center;margin:16px 0;display:flex}.np-cover .cover{aspect-ratio:1;border-radius:12px;box-shadow:0 12px 40px #00000080;width:min(100%,360px)!important;height:auto!important}.np-info{flex-direction:column;min-width:0;display:flex}.np-title{text-overflow:ellipsis;white-space:nowrap;font-size:1.3rem;font-weight:700;overflow:hidden}.np-seek{width:100%;accent-color:var(--accent);background:0 0;margin-top:8px;padding:0}.np-times{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;font-size:.8rem;display:flex}.np-controls{justify-content:space-between;align-items:center;margin:8px 0 16px;display:flex}.icon-btn.big{width:56px;height:56px}.icon-btn.big svg{width:32px;height:32px}.icon-btn.play.big{width:64px;height:64px}.icon-btn.on{color:var(--accent)}.np-queue{max-width:480px;margin:0 auto}.np-queue h3{margin:16px 0 8px;font-size:1rem}.player-controls{align-items:center;display:flex}.icon-btn.play,.icon-btn.play:hover{background:var(--text);color:#000}.seek{width:100%;max-width:900px;height:4px;accent-color:var(--accent);background:0 0;margin:0 auto 4px;padding:0;display:block}.dialog-backdrop{z-index:30;background:#0009;place-items:end center;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);width:100%;max-width:480px;max-height:80dvh;padding:20px 16px calc(env(safe-area-inset-bottom) + 16px);border-radius:16px 16px 0 0;flex-direction:column;gap:12px;display:flex;overflow-y:auto}.dialog h2{margin:0;font-size:1.1rem}.dialog .track-sub{margin:0}.dialog-list{margin:0;padding:0;list-style:none}.dialog-list button{border-radius:var(--radius);text-align:left;background:0 0;border:none;justify-content:space-between;gap:8px;width:100%;padding:12px 8px;display:flex}.dialog-list button:hover{background:var(--surface-2)}.dialog .add-form,.dialog .error{margin:0}.field{flex-direction:column;gap:4px;display:flex}.field span{color:var(--muted);font-size:.85rem}.dialog-actions{justify-content:flex-end;gap:8px;display:flex}.check-list{max-height:200px;margin:0;padding:0;list-style:none;overflow-y:auto}.check-list label{border-radius:var(--radius);cursor:pointer;align-items:center;gap:12px;padding:8px;display:flex}.check-list label:hover{background:var(--surface-2)}.check-list input{width:18px;height:18px;accent-color:var(--accent);padding:0}.add-playlist{align-self:flex-start}.menu-header{align-items:center;gap:12px;min-width:0;display:flex}.menu-list{margin:0;padding:0;list-style:none}.menu-list button{border-radius:var(--radius);text-align:left;background:0 0;border:none;align-items:center;gap:14px;width:100%;padding:12px 8px;display:flex}.menu-list button:hover:not(:disabled){background:var(--surface-2)}.menu-list button svg{color:var(--muted);flex-shrink:0}.menu-list .danger,.menu-list .danger svg{color:var(--danger)}.track-list li.unavailable{opacity:.4}.drag-handle{cursor:grab;touch-action:none;flex-shrink:0;width:32px}.drag-handle:active{cursor:grabbing}.track-list li.dragging{z-index:5;background:var(--surface-2);box-shadow:0 8px 24px #0006}.saved-icon{vertical-align:-2px;width:14px;height:14px;color:var(--accent);margin-right:4px}.update-banner{justify-content:center;align-items:center;gap:12px;display:flex}.update-banner .btn{padding:6px 14px}.worker-status{border-radius:var(--radius);background:var(--surface);color:var(--muted);align-items:center;gap:10px;margin-bottom:12px;padding:10px 12px;font-size:.9rem;display:flex}.worker-status .dot{background:#e0a030;border-radius:50%;flex-shrink:0;width:8px;height:8px}.worker-status.online .dot{background:var(--accent)}.import-list{margin:0 0 12px;padding:0;list-style:none}.import-list li{border-radius:var(--radius);background:var(--surface);align-items:center;gap:8px;margin-bottom:6px;padding:8px;display:flex}.storage-card{border-radius:var(--radius);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:12px;display:flex}.storage-card>span{flex-direction:column;min-width:0;display:flex}.storage-card .track-sub{white-space:normal}.offline-banner{border-radius:var(--radius);background:var(--surface-2);color:var(--muted);text-align:center;margin:0 16px 8px;padding:8px 12px;font-size:.85rem}@media (width>=640px){.dialog-backdrop{place-items:center}.dialog{border-radius:16px}}
