*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d0d0d;--bg-panel:#141414;--bg-row:#1a1a1a;--bg-row-hover:#222;--bg-input:#1e1e1e;--border:#2a2a2a;--text:#c8c8c8;--text-dim:#777;--text-bright:#eee;--accent:#e8a030;--accent-dim:#b07820;--danger:#d44;--green:#3a3;--mono:"JetBrains Mono", "Fira Code", monospace;--sans:system-ui, -apple-system, sans-serif;--radius:6px;--player-h:108px;--sidebar-w:600px}html{font-size:21px}body{font-family:var(--sans);background:var(--bg);color:var(--text);flex-direction:column;height:100vh;display:flex;overflow:hidden}#app{flex-direction:column;height:100%;display:flex;overflow:hidden}.icon{vertical-align:middle;flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:inline-flex}.icon svg{fill:currentColor;width:1em;height:1em;display:block}::-webkit-scrollbar{width:9px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:#333;border-radius:5px}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;width:100%;max-width:540px;padding:2.5rem 2rem}.login-logo{font-family:var(--mono);color:var(--accent);letter-spacing:.08em;text-transform:uppercase;text-align:center;margin-bottom:2rem;font-size:1.1rem;font-weight:600}.login-field{margin-bottom:1rem}.login-field label{font-size:.75rem;font-family:var(--mono);color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.35rem;display:block}.login-field input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);outline:none;padding:.55rem .7rem;font-size:.9rem}.login-field input:focus{border-color:var(--accent-dim)}.login-error{color:var(--danger);min-height:1.2em;margin-bottom:.75rem;font-size:.8rem}.login-submit{background:var(--accent);color:#111;border-radius:var(--radius);cursor:pointer;border:none;width:100%;padding:.6rem;font-size:.9rem;font-weight:600;transition:background .15s}.login-submit:hover{background:#f0b040}.login-submit:disabled{opacity:.5;cursor:not-allowed}.dot-connected{background:var(--green)}.dot-reconnecting{background:var(--accent)}.dot-disconnected{background:var(--danger)}.main{flex:1;display:flex;overflow:hidden}.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);border-right:1px solid var(--border);background:var(--bg-panel);flex-direction:column;display:flex;overflow:hidden}.search-bar{flex-shrink:0;padding:0 1rem .35rem}.search-bar input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);font-size:.75rem;font-family:var(--mono);outline:none;padding:.35rem .5rem}.search-bar input:focus{border-color:var(--accent-dim)}.search-bar input::placeholder{color:#555}.track-list{flex:1;padding:0;overflow-y:auto}.track-row{cursor:pointer;border-bottom:1px solid #ffffff05;grid-template-columns:33px 1fr 75px 108px;align-items:center;gap:.2rem;padding:.3rem .8rem;transition:background .12s;display:grid;position:relative}.track-row:hover{background:var(--bg-row-hover)}.track-row.playing{background:#e8a03014}.track-idx{font-family:var(--mono);color:var(--text-dim);text-align:center;font-size:.65rem}.track-row.playing .track-idx{color:var(--accent)}.track-info{overflow:hidden}.track-title{color:var(--text-bright);white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.track-artist{color:var(--text-dim);font-size:.72rem;font-family:var(--mono);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.track-dur{font-family:var(--mono);color:var(--text-dim);text-align:right;font-size:.72rem}.track-add-btn{color:var(--text-dim);cursor:pointer;border-radius:var(--radius);text-align:center;background:0 0;border:none;padding:3px;font-size:1rem;transition:color .15s,background .15s}.track-add-btn:hover{color:var(--accent);background:#e8a0301a}.track-actions{justify-content:flex-end;align-items:center;gap:1px;display:flex}.track-action-btn{color:#555;cursor:pointer;border-radius:var(--radius);opacity:0;background:0 0;border:none;justify-content:center;align-items:center;padding:3px 5px;font-size:.82rem;transition:opacity .15s;display:inline-flex}.track-row:hover .track-action-btn{opacity:1}.track-action-btn:hover{color:var(--accent)}.track-action-btn.danger:hover{color:var(--danger)}.move-popup{background:var(--bg-panel);border:1px solid var(--border);z-index:100;border-radius:9px;min-width:240px;padding:.3rem 0;position:absolute;top:100%;right:0;box-shadow:0 12px 36px #00000080}.move-popup-title{font-family:var(--mono);color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;padding:.25rem .7rem .2rem;font-size:.6rem}.move-popup-item{padding:.35rem .7rem;padding-left:calc(.7rem + var(--folder-indent,0rem));color:var(--text);cursor:pointer;align-items:center;gap:.4rem;font-size:.75rem;transition:background .1s;display:flex}.move-popup-item:hover{background:var(--bg-row-hover)}.move-popup-item.current{color:var(--text-dim);cursor:default}.move-popup-item .mp-icon{text-align:center;flex-shrink:0;width:24px;font-size:.8rem}.move-popup-sep{background:var(--border);height:1px;margin:.2rem 0}.import-section{flex-direction:column;flex-shrink:0;display:flex}.import-toggle-bar{border-top:1px solid var(--border);width:100%;color:inherit;cursor:pointer;font:inherit;-webkit-user-select:none;user-select:none;background:0 0;border-bottom:0;border-left:0;border-right:0;flex-shrink:0;align-items:center;gap:.5rem;padding:.45rem 1rem;transition:background .15s;display:flex}.import-toggle-bar:hover,.import-toggle-bar:focus-visible{background:var(--bg-row-hover)}.import-toggle-bar:focus-visible{outline:1px solid var(--accent-dim);outline-offset:-1px}.import-toggle-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);font-size:.7rem;font-weight:600}.import-toggle-indicator{font-family:var(--mono);align-items:center;gap:.35rem;margin-left:auto;font-size:.65rem;display:flex}.import-toggle-indicator .activity-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block}.activity-dot.idle{background:var(--green)}.activity-dot.active{background:var(--accent);animation:1.5s ease-in-out infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1;box-shadow:0 0 #e8a03066}50%{opacity:.7;box-shadow:0 0 0 4px #e8a03000}}.import-toggle-indicator .activity-text{color:var(--text-dim)}.import-toggle-indicator .activity-text.has-active{color:var(--accent)}.import-toggle-chevron{color:var(--text-dim);align-items:center;margin-left:.3rem;font-size:.55rem;transition:transform .25s;display:inline-flex}.import-toggle-chevron.open{transform:rotate(180deg)}.import-slider{border-top:0 solid var(--border);max-height:0;transition:max-height .35s cubic-bezier(.4,0,.2,1);overflow:hidden}.import-slider.open{border-top-width:1px;max-height:500px;overflow-y:auto}.import-slider-inner{padding:.75rem 1rem}.import-row{align-items:center;gap:.4rem;margin-bottom:.5rem;display:flex}.import-row input[type=url]{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);min-width:0;color:var(--text);font-size:.78rem;font-family:var(--mono);outline:none;flex:1;padding:.35rem .5rem}.import-row input[type=url]:focus{border-color:var(--accent-dim)}.import-yt-btn,.import-upload-btn{flex-shrink:0;justify-content:center;align-items:center;min-width:36px;height:32px;padding:0 .4rem;font-size:1rem;display:inline-flex}.import-target-folder{font-family:var(--mono);color:var(--text-dim);align-items:center;gap:.3rem;font-size:.65rem;display:flex}.import-target-folder strong{color:var(--accent)}.import-target-folder-empty{opacity:.7}.import-meta-row{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.5rem;display:flex}.import-secret-toggle{font-family:var(--mono);color:var(--text-dim);-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:.45rem;font-size:.65rem;display:inline-flex}.import-secret-toggle input{accent-color:var(--accent);margin:0}.btn{background:var(--accent);color:#111;border-radius:var(--radius);cursor:pointer;white-space:nowrap;border:none;padding:.35rem .7rem;font-size:.78rem;font-weight:600;transition:background .15s}.btn:hover{background:#f0b040}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-outline{border:1px solid var(--accent-dim);color:var(--accent);background:0 0}.btn-outline:hover{background:#e8a0301a}.btn-sm{padding:.22rem .5rem;font-size:.68rem}.btn-danger{border:1px solid var(--danger);color:var(--danger);border-radius:var(--radius);cursor:pointer;background:0 0;padding:.22rem .5rem;font-size:.68rem;transition:background .15s}.btn-danger:hover{background:#dd44441a}.import-job{background:var(--bg-row);border-radius:var(--radius);margin-top:.4rem;padding:.4rem .6rem}.import-job-header{justify-content:space-between;align-items:center;gap:.35rem;margin-bottom:.3rem;display:flex}.import-job-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:.75rem;overflow:hidden}.import-job-status{font-family:var(--mono);font-size:.7rem}.import-cancel-btn{border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);cursor:pointer;font-family:var(--mono);background:0 0;padding:2px 7px;font-size:.62rem}.import-cancel-btn:hover{border-color:var(--danger);color:var(--danger)}.import-cancel-btn:disabled{cursor:not-allowed;opacity:.45}.import-local-status,.import-local-error{font-family:var(--mono);margin-top:.3rem;font-size:.65rem}.import-local-status{color:var(--text-dim)}.import-local-error{color:var(--danger)}.import-status-running{color:var(--accent)}.import-status-queued{color:var(--text-dim)}.import-status-completed{color:var(--green)}.import-status-failed{color:var(--danger)}.import-status-cancelled{color:var(--text-dim)}.import-progress-track{background:#222;border-radius:3px;height:6px;overflow:hidden}.import-progress-fill{background:var(--accent);border-radius:3px;height:100%;transition:width .3s}.import-job-folder{color:var(--text-dim);font-size:.6rem;font-family:var(--mono);margin-top:.15rem}.pane-folders{border-bottom:1px solid var(--border);flex-direction:column;flex:none;max-height:38%;display:flex}.pane-header{flex-shrink:0;align-items:center;gap:.5rem;padding:.6rem 1rem .35rem;display:flex}.pane-header h2{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);flex:1;font-size:.75rem;font-weight:600}.pane-header .pane-action{font-family:var(--mono);color:var(--accent);cursor:pointer;background:0 0;border:none;font-size:.65rem}.pane-header .pane-action:hover{text-decoration:underline}.folder-error{color:var(--danger);font-family:var(--mono);padding:0 1rem .35rem;font-size:.65rem}.folder-list{flex:1;padding:0;overflow-y:auto}.folder-row{padding:.35rem .8rem;padding-left:calc(.8rem + var(--folder-indent,0rem));cursor:pointer;border-bottom:1px solid #ffffff05;grid-template-columns:30px 1fr 48px 93px;align-items:center;gap:.25rem;transition:background .12s;display:grid}.folder-row:hover{background:var(--bg-row-hover)}.folder-row.selected{border-left:4px solid var(--accent);padding-left:calc(.8rem + var(--folder-indent,0rem) - 4px);background:#e8a0301a}.folder-row .f-icon{text-align:center;color:var(--accent);font-size:.85rem}.folder-row .f-icon.root{color:var(--text-dim);font-size:.75rem}.folder-row .f-name{color:var(--text-bright);white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.folder-row.selected .f-name{color:var(--accent)}.folder-row .f-count{font-family:var(--mono);color:var(--text-dim);text-align:center;font-size:.62rem}.folder-row .f-actions{opacity:0;justify-content:flex-end;gap:1px;transition:opacity .15s;display:flex}.folder-row:hover .f-actions,.folder-row.selected .f-actions{opacity:1}.f-action-btn{color:var(--text-dim);cursor:pointer;border-radius:var(--radius);background:0 0;border:none;justify-content:center;align-items:center;padding:3px 5px;font-size:.8rem;display:inline-flex}.f-action-btn:hover{color:var(--accent)}.f-action-btn.danger:hover{color:var(--danger)}.pane-tracks{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.pane-tracks-header{flex-shrink:0;align-items:center;gap:.4rem;padding:.5rem 1rem .35rem;display:flex}.pane-tracks-header h3{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);font-size:.72rem;font-weight:600}.pane-tracks-header .folder-badge{font-family:var(--mono);color:var(--accent);background:#e8a0301a;border:1px solid #e8a03033;border-radius:15px;align-items:center;gap:.2rem;padding:2px 10px;font-size:.62rem;display:inline-flex}.pane-tracks-header .track-count-label{font-family:var(--mono);color:var(--text-dim);margin-left:auto;font-size:.65rem}.center{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.queue-header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.6rem;padding:.5rem 1.2rem;display:flex}.queue-logo{font-family:var(--mono);color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin-right:auto;font-size:.8rem;font-weight:600}.queue-header h2{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);font-size:.8rem;font-weight:600}.queue-header .queue-count{font-family:var(--mono);color:var(--text-dim);font-size:.7rem}.queue-status{font-family:var(--mono);color:var(--text-dim);align-items:center;gap:.4rem;font-size:.7rem;display:flex}.queue-status .dot{border-radius:50%;width:8px;height:8px;display:inline-block}.queue-header-btn{border:1px solid var(--border);color:var(--text-dim);border-radius:var(--radius);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:4px 7px;font-size:.9rem;transition:color .15s,border-color .15s;display:inline-flex}.queue-header-btn:hover{color:var(--text);border-color:var(--text-dim)}.queue-clear-btn:hover{color:var(--danger);border-color:var(--danger)}.queue-list{flex:1;padding:.3rem 0;overflow-y:auto}.queue-item{border-bottom:1px solid #ffffff08;grid-template-columns:45px auto 90px 100px;align-items:center;padding:.5rem 1.2rem;transition:background .12s;display:grid}.queue-item:hover{background:var(--bg-row-hover)}.queue-item.active{border-left:4px solid var(--accent);background:#e8a03014;padding-left:calc(1.2rem - 4px)}.queue-pos{font-family:var(--mono);color:var(--text-dim);font-size:.72rem}.queue-item.active .queue-pos{color:var(--accent)}.queue-info{overflow:hidden}.queue-title{color:var(--text-bright);white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.queue-artist{color:var(--text-dim);font-size:.72rem;font-family:var(--mono)}.queue-folder-tag{font-family:var(--mono);color:var(--accent-dim);background:#e8a0300f;border-radius:5px;margin-left:.3rem;padding:0 6px;font-size:.58rem}.queue-dur{font-family:var(--mono);color:var(--text-dim);text-align:right;font-size:.72rem}.queue-actions{justify-content:flex-end;align-items:center;gap:3px;display:flex}.queue-move-btn,.queue-remove{color:#555;cursor:pointer;border-radius:var(--radius);background:0 0;border:none;justify-content:center;align-items:center;padding:3px 6px;font-size:.85rem;transition:color .15s;display:inline-flex}.queue-move-btn:hover{color:var(--text)}.queue-remove:hover{color:var(--danger)}.queue-move-btn:disabled{opacity:.2;cursor:default}.queue-empty{color:var(--text-dim);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.5rem;font-size:.85rem;display:flex}.queue-empty-icon{opacity:.3;font-size:2rem}.player{height:var(--player-h);background:var(--bg-panel);border-top:1px solid var(--border);flex-shrink:0;grid-template-columns:1fr minmax(0,3fr) 1fr;align-items:center;display:grid}.player-info{cursor:pointer;padding:0 1rem;overflow:hidden}.player-track-title{color:var(--text-bright);white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;overflow:hidden}.player-track-artist{color:var(--text-dim);font-size:.75rem;font-family:var(--mono)}.player-center{flex-direction:column;align-items:center;gap:.3rem;padding:0 1rem;display:flex}.player-controls{align-items:center;gap:.8rem;display:flex}.player-btn{color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;padding:6px;font-size:1.1rem;transition:color .15s,background .15s;display:flex}.player-btn:hover{color:var(--text-bright);background:#ffffff0f}.player-btn-play{background:var(--accent);color:#111;border-radius:50%;width:60px;height:60px;font-size:2rem}.player-btn-play:hover{color:#111;background:#f0b040}.player-progress-row{align-items:center;gap:.5rem;width:100%;max-width:900px;display:flex}.player-time{font-family:var(--mono);color:var(--text-dim);text-align:center;min-width:57px;font-size:.68rem}.vu-meter{cursor:pointer;background:#222;border-radius:2px;flex:1;height:12px;overflow:hidden}.vu-progress-fill{background:var(--accent);transform-origin:0;will-change:transform;width:100%;height:100%;transition:transform .1s linear;transform:scaleX(0)}.player-volume{justify-self:end;align-items:center;gap:.4rem;padding:0 1rem;display:flex}.vol-icon{color:var(--text-dim);cursor:pointer;font-size:.9rem}.vol-value{text-align:right;font-variant-numeric:tabular-nums;flex:0 0 4ch;min-width:4ch}.vol-slider{appearance:none;background:#333;border-radius:3px;outline:none;flex:1;width:100%;max-width:300px;height:6px}.vol-slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);cursor:pointer;border-radius:50%;width:18px;height:18px}@media (width<=1200px){.player{grid-template-rows:auto auto;grid-template-columns:1fr 1fr;height:auto;padding:.4rem .5rem}.player-info{grid-area:1/1;min-width:0}.player-volume{grid-area:1/2;justify-self:end}.player-center{grid-area:2/1/auto/-1}.vol-slider{flex:1;width:auto;max-width:160px}}@media (width<=768px){.main{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--border);width:100%;min-width:0;max-height:50vh}.player{grid-template-rows:auto auto;grid-template-columns:1fr 1fr;gap:.3rem;height:auto;padding:.5rem}.player-info{grid-area:1/1;min-width:0}.player-volume{grid-area:1/2;justify-self:end}.player-center{grid-area:2/1/auto/-1}.vol-slider{flex:1;width:auto;max-width:100px}.vol-value,.queue-status .status-text{display:none}.import-slider.open{max-height:40vh}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;position:absolute;overflow:hidden}
