:root{--bg:#121212;--surface:#1e1e1e;--surface-2:#2a2a2a;--text:#f2f2f2;--muted:#a7a7a7;--accent:#1db954;--danger:#e5534b;--radius:10px;--nav-h:58px;--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{width:100%;max-width:900px;padding:8px 16px calc(140px + var(--nav-h));flex:1;margin:0 auto}.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)}.search-results{border-radius:var(--radius);background:var(--surface);margin-bottom:16px;padding:4px 4px 8px}.search-results>header{justify-content:space-between;align-items:center;padding-left:8px;display:flex}.search-results .error,.search-results .empty{margin:8px;padding:0}.search-results .track-main{cursor:default}.result-thumb{object-fit:cover;background:var(--surface-2);border-radius:4px;flex-shrink:0;width:64px;height:36px}.in-library{width:40px;height:40px;color:var(--accent);place-items:center;display:grid}.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{background:var(--surface-2);border-radius:2px;height:3px;position:absolute;bottom:2px;left:68px;right:8px;overflow:hidden}.track-progress>span{background:var(--accent);height:100%;transition:width .9s linear;display:block}@media (prefers-reduced-motion:reduce){.track-progress>span{transition:none}}.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}.section-title{margin:20px 0 10px;font-size:1rem}.segmented{background:var(--surface);border-radius:999px;gap:4px;margin-bottom:12px;padding:4px;display:inline-flex}.segmented button{color:var(--muted);background:0 0;border:none;border-radius:999px;padding:6px 14px}.segmented button.active{background:var(--surface-2);color:var(--text)}.artist-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.artist-grid button{text-align:center;background:0 0;border:none;flex-direction:column;align-items:center;gap:4px;width:100%;padding:0;display:flex}.artist-grid .cover{aspect-ratio:1;border-radius:50%;width:100%!important;height:auto!important}.artist-grid .track-title,.artist-grid .track-sub{max-width:100%}.artist-heading{align-items:center;gap:14px;display:flex}.artist-heading .cover{border-radius:50%}.smart-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.smart-card{border-radius:var(--radius);text-align:left;color:#fff;border:none;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:2px;width:100%;min-height:112px;padding:12px;display:flex}.smart-card svg{opacity:.9;margin-bottom:auto}.smart-card .track-title{white-space:normal;font-weight:600;line-height:1.2}.smart-card .track-sub{color:#ffffffbf}.smart-card.favorites{background:linear-gradient(135deg,#7b2ff7,#c2185b)}.smart-card.recent{background:linear-gradient(135deg,#1565c0,#00838f)}.smart-card.top{background:linear-gradient(135deg,#e65100,#c62828)}.np-info-row{align-items:center;gap:8px;display:flex}.np-crossfade{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.np-crossfade .segmented{margin:0}.np-crossfade .segmented button{padding:5px 10px;font-size:.85rem}.np-info-row .np-info{flex:1}.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{left:0;right:0;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));z-index:20;background:var(--surface);border-top:1px solid var(--surface-2);padding:0 12px 8px;position:fixed}.bottom-nav{z-index:21;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--bg);border-top:1px solid var(--surface-2);justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav button{max-width:200px;color:var(--muted);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:.75rem;display:flex}.bottom-nav button.active{color:var(--text)}.bottom-nav button.active svg{color:var(--accent)}.nav-icon{display:grid;position:relative}.nav-icon .badge{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 2px var(--bg);border-radius:50%;position:absolute;top:-2px;right:-4px}.filter-field{border:1px solid var(--surface-2);color:var(--muted);border-radius:999px;align-items:center;gap:8px;margin-bottom:12px;padding:0 12px;display:flex}.filter-field input{background:0 0;border:none;flex:1;padding:8px 0}.filter-field:focus-within{border-color:var(--accent)}.empty .btn{margin-top:12px}.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}}
