.yoto-badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-caption2);padding:1px 6px;border-radius:3px;white-space:nowrap;vertical-align:middle;margin-left:8px}.yoto-badge .badge-dot{display:inline-block;width:6px;height:6px;border-radius:50%;flex-shrink:0}.yoto-badge.yoto-uploaded{color:#22c55e}.yoto-badge.yoto-uploaded .badge-dot{background-color:#22c55e}.yoto-badge.yoto-uploading{color:#3b82f6}.yoto-badge.yoto-uploading .badge-dot{background-color:#3b82f6;animation:badge-pulse 1.5s ease-in-out infinite}.yoto-badge.yoto-error{color:#ef4444}.yoto-badge.yoto-error .badge-dot{background-color:#ef4444}@keyframes badge-pulse{0%,to{opacity:1}50%{opacity:.4}}.upload-progress-inline{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-caption2);color:#3b82f6;margin-left:8px;white-space:nowrap}.upload-progress-inline .spinner{animation:spin 1s linear infinite}.icon-picker-popover{position:fixed;z-index:1100;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 8px 24px #0000004d;padding:8px;width:240px}.icon-picker-category{width:100%;font-size:var(--font-caption2);padding:3px 6px;border:1px solid var(--color-border);border-radius:4px;margin-bottom:4px;background:var(--color-bg-primary);color:var(--color-text-primary);font-family:inherit;outline:none;box-sizing:border-box}.icon-picker-filter{width:100%;font-size:var(--font-caption1);padding:4px 8px;border:1px solid var(--color-border);border-radius:4px;margin-bottom:6px;background:var(--color-bg-primary);color:var(--color-text-primary);font-family:inherit;outline:none;box-sizing:border-box}.icon-picker-filter:focus{border-color:var(--color-text-secondary)}.icon-picker-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;max-height:300px;overflow-y:auto}.icon-picker-cell{width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:4px;border:2px solid transparent;background:none;padding:0;transition:background .1s ease,border-color .1s ease}.icon-picker-cell:hover{background:var(--color-hover-bg)}.icon-picker-cell.picking{opacity:.5;cursor:wait}.icon-picker-cell img{width:32px;height:32px;image-rendering:pixelated}.icon-picker-loading,.icon-picker-empty{grid-column:1 / -1;text-align:center;color:var(--color-text-secondary);font-size:var(--font-caption2);padding:12px 0}.icon-picker-count{text-align:center;color:var(--color-text-secondary);font-size:var(--font-caption2);padding:4px 0 0}@media(max-width:767px){.icon-picker-cell{min-height:44px;min-width:44px}.icon-picker-filter,.icon-picker-category{min-height:44px}}.icon-picker-fullscreen{position:fixed;inset:0;z-index:1100;background:var(--color-bg-secondary);display:flex;flex-direction:column;animation:icon-picker-slide-up .2s ease-out}.icon-picker-topbar{display:flex;align-items:center;height:48px;padding:0 8px;border-bottom:1px solid var(--color-border);flex-shrink:0}.icon-picker-close-btn{min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--color-text-primary);cursor:pointer}.icon-picker-topbar-title{flex:1;text-align:center;font-size:var(--font-callout);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.icon-picker-fullscreen .icon-picker-body{flex:1;overflow-y:auto;padding:8px}@keyframes icon-picker-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.upload-preview-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.upload-preview-dialog{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;width:90%;max-width:600px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000004d}.upload-preview-header{display:flex;gap:16px;padding:20px;border-bottom:1px solid var(--color-border);align-items:flex-start}.upload-preview-artwork{width:80px;height:80px;background:var(--color-bg-primary);border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.upload-preview-artwork svg{color:var(--color-text-secondary)}.cover-art-img{width:64px;height:64px;object-fit:cover;border-radius:4px}.upload-preview-meta{flex:1;min-width:0}.upload-preview-meta input{display:block;width:100%;border:1px solid transparent;background:transparent;color:var(--color-text-primary);font-family:inherit;padding:4px 6px;border-radius:4px;transition:border-color .15s ease}.upload-preview-meta input:hover{border-color:var(--color-border)}.upload-preview-meta input:focus{outline:none;border-color:var(--color-text-secondary);background:var(--color-bg-primary)}.upload-preview-meta .artist-input{font-size:var(--font-footnote);color:var(--color-text-secondary);margin-bottom:2px}.upload-preview-meta .album-input{font-size:var(--font-callout);font-weight:var(--font-weight-semibold)}.upload-preview-close{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:4px;display:flex;align-items:center;transition:color .15s ease}.upload-preview-close:hover{color:var(--color-text-primary)}.upload-preview-tracks{flex:1;overflow-y:auto;padding:0}.upload-preview-tracks-header{padding:8px 20px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-secondary);border-bottom:1px solid var(--color-border)}.upload-track-row{display:flex;align-items:center;gap:8px;padding:8px 20px;border-bottom:1px solid var(--color-border);font-size:var(--font-footnote);transition:background .1s ease}.upload-track-row:hover{background:var(--color-hover-bg)}.upload-track-row.drag-over{border-top:2px solid #2563eb}.upload-track-drag{cursor:grab;color:var(--color-text-secondary);display:flex;align-items:center;flex-shrink:0}.upload-track-drag:active{cursor:grabbing}.upload-track-number{width:24px;text-align:center;color:var(--color-text-secondary);flex-shrink:0}.upload-track-icon-group{display:flex;align-items:center;gap:2px;flex-shrink:0;position:relative}.upload-track-icon{width:16px;height:16px;flex-shrink:0;image-rendering:pixelated;border-radius:2px;cursor:pointer}.upload-track-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-primary)}.upload-track-size{color:var(--color-text-secondary);flex-shrink:0;font-size:var(--font-caption1)}.upload-preview-card-section{padding:16px 20px;border-top:1px solid var(--color-border)}.upload-preview-card-section .card-selector label{font-size:var(--font-footnote);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:6px;display:block}.upload-preview-card-section .card-dropdown{width:100%;padding:6px 10px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-footnote);font-family:inherit}.upload-preview-actions{display:flex;justify-content:flex-end;gap:8px;padding:16px 20px;border-top:1px solid var(--color-border)}.upload-preview-actions button{padding:8px 16px;font-size:var(--font-footnote);font-family:inherit;border-radius:4px;cursor:pointer;transition:all .15s ease}.upload-preview-actions .btn-cancel{background:var(--color-bg-primary);border:1px solid var(--color-border);color:var(--color-text-primary)}.upload-preview-actions .btn-cancel:hover{background:var(--color-hover-bg)}.upload-preview-actions .btn-upload{background:#2563eb;border:1px solid #2563eb;color:#fff;font-weight:var(--font-weight-medium)}.upload-preview-actions .btn-upload:hover:not(:disabled){background:#1d4ed8}.upload-preview-actions .btn-upload:disabled{opacity:.5;cursor:not-allowed}.upload-preview-loading{padding:48px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-subhead)}.upload-preview-error{padding:12px 20px;background:#f444441a;border:1px solid rgba(244,68,68,.3);border-radius:4px;color:#f44;font-size:var(--font-footnote);margin:12px 20px}@media(max-width:767px){.upload-preview-dialog{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0;animation:upload-modal-slide-up .2s ease-out}.upload-preview-overlay{align-items:stretch}.upload-preview-header{position:sticky;top:0;z-index:1;background:var(--color-bg-secondary);min-height:48px}.upload-preview-tracks{flex:1;overflow-y:auto}.upload-preview-dialog button,.upload-preview-dialog a{min-height:44px;min-width:44px}.upload-track-row{min-height:44px}.upload-preview-close{min-height:44px;min-width:44px;padding:10px}}@keyframes upload-modal-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.file-browser{display:flex;flex-direction:column;height:100%;overflow:hidden}.file-browser-content{flex:1;min-height:0;overflow-y:auto}.file-browser-toolbar{display:flex;align-items:center;gap:16px;padding:12px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary)}.file-browser-selection-bar{padding:8px 16px;background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);font-size:var(--font-caption1);color:var(--color-text-secondary);display:flex;align-items:center;gap:8px}.file-browser-breadcrumbs{display:flex;align-items:center;gap:4px;flex:1;min-width:0}.file-browser-breadcrumbs .breadcrumb-link{display:inline-flex;align-items:center;gap:4px;padding:4px 6px;border-radius:4px;color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-footnote);transition:all .15s ease;white-space:nowrap}.file-browser-breadcrumbs .breadcrumb-link:hover{color:var(--color-text-primary);background:var(--color-hover-bg)}.file-browser-breadcrumbs .breadcrumb-link.current{color:var(--color-text-primary);font-weight:var(--font-weight-medium)}.file-browser-breadcrumbs .separator{color:var(--color-text-secondary);margin:0 2px;-webkit-user-select:none;user-select:none}.view-mode-selector{display:flex;gap:2px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:4px;padding:2px}.view-mode-selector button{background:none;border:none;cursor:pointer;padding:4px 8px;border-radius:3px;color:var(--color-text-secondary);display:flex;align-items:center;transition:all .15s ease}.view-mode-selector button:hover{color:var(--color-text-primary)}.view-mode-selector button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.view-mode-selector button.active{background:var(--color-bg-primary);color:var(--color-text-primary);box-shadow:0 1px 2px #0000001a}.search-bar{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:4px;min-width:200px;transition:border-color .15s ease}.search-bar:focus-within{border-color:var(--color-text-secondary)}.search-bar .search-icon{color:var(--color-text-secondary);flex-shrink:0}.search-bar input{flex:1;border:none;background:none;outline:none;color:var(--color-text-primary);font-size:var(--font-footnote);font-family:inherit;min-width:0}.search-bar input::placeholder{color:var(--color-text-secondary)}.search-bar input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;height:14px;width:14px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23858585' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E")}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.grid-view,.wall-view,.file-list{animation:fadeIn .15s ease}.file-list{width:100%;border-collapse:collapse;background:var(--color-bg-primary)}.file-list thead{position:sticky;top:0;background:var(--color-bg-primary);z-index:10}.file-list th{text-align:left;padding:8px 16px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);-webkit-user-select:none;user-select:none}.file-list th:hover{color:var(--color-text-primary)}.file-list th .sort-indicator{display:inline-flex;align-items:center;margin-left:4px;vertical-align:middle}.file-list td{padding:8px 16px;font-size:var(--font-footnote);border-bottom:1px solid var(--color-border);line-height:1.5}.file-list tbody tr:hover{background:var(--color-hover-bg)}.file-list tr[data-type=folder]{cursor:pointer}.file-list .icon-cell{width:32px;text-align:center;padding:8px 8px 8px 16px}.file-list .icon-cell svg{width:16px;height:16px;color:var(--color-text-secondary)}.file-list tr[data-type=folder] .icon-cell svg{color:#dcb67a}.folder-thumb{width:20px;height:20px;object-fit:cover;border-radius:3px;vertical-align:middle}.file-list .checkbox-cell{width:32px;text-align:center;padding:8px}.file-list .checkbox-cell input[type=checkbox]{cursor:pointer;width:14px;height:14px;accent-color:#0078d4}.file-list tr.selected,.file-list tr.selected:hover{background:var(--color-active-bg)}.grid-view{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px;padding:16px}.grid-card{cursor:pointer;border-radius:8px;overflow:hidden;background:var(--color-bg-secondary);border:1px solid var(--color-border);transition:transform .15s ease,box-shadow .15s ease}.grid-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.grid-card-art{aspect-ratio:1;background:var(--color-bg-secondary);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-card-art img{width:100%;height:100%;object-fit:cover}.grid-card-art svg{width:48px;height:48px;color:var(--color-text-secondary)}.grid-card-info{padding:8px 10px}.grid-card-name{font-size:var(--font-footnote);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid-card-meta{font-size:var(--font-caption2);color:var(--color-text-secondary);margin-top:2px}.wall-view{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;padding:16px}.wall-card{cursor:pointer;border-radius:8px;overflow:hidden;position:relative;aspect-ratio:1;background:var(--color-bg-secondary);transition:transform .15s ease,box-shadow .15s ease}.wall-card:hover{transform:scale(1.02);box-shadow:0 8px 24px #0003}.wall-card-art{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.wall-card-art img{width:100%;height:100%;object-fit:cover}.wall-card-art svg{width:64px;height:64px;color:var(--color-text-secondary)}.wall-card-overlay{position:absolute;bottom:0;left:0;right:0;padding:12px;background:linear-gradient(transparent,#000000b3);color:#fff}.wall-card-overlay .wall-card-name{font-size:var(--font-subhead);font-weight:var(--font-weight-semibold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wall-card-overlay .wall-card-meta{font-size:var(--font-caption2);opacity:.8;margin-top:2px}.file-browser-empty,.file-browser-loading{padding:48px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-subhead)}.file-browser-error{padding:16px;margin:16px;background:#f444441a;border:1px solid rgba(244,68,68,.3);border-radius:4px;color:#f44;font-size:var(--font-footnote)}.album-view{padding:0}.album-header{display:flex;gap:20px;padding:20px;border-bottom:1px solid var(--color-border);align-items:flex-start}.album-back-btn{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:4px;display:flex;align-items:center;transition:color .15s ease}.album-back-btn:hover{color:var(--color-text-primary)}.album-art-placeholder{width:120px;height:120px;background:var(--color-bg-secondary);border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.album-art-placeholder svg{width:48px;height:48px;color:var(--color-text-secondary)}.album-art-image{width:100%;height:100%;object-fit:cover;border-radius:inherit}.album-info{flex:1}.album-info h2{margin:0 0 4px;font-size:var(--font-headline);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.album-info .album-meta{font-size:var(--font-footnote);color:var(--color-text-secondary);display:flex;gap:12px}.album-header-actions{display:flex;gap:8px;align-items:flex-start;flex-shrink:0}.album-header-actions .album-queue-btn,.album-header-actions .btn-add-to-yoto{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;font-size:var(--font-footnote);font-family:inherit;font-weight:var(--font-weight-medium);border-radius:6px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.album-queue-btn{border:1px solid var(--color-border);background:transparent;color:var(--color-text-secondary)}.album-queue-btn:hover{color:var(--color-text-primary);background:var(--color-hover-bg);border-color:var(--color-text-secondary)}.album-header-actions .btn-add-to-yoto{border:1px solid #2563eb;background:#2563eb;color:#fff}.album-header-actions .btn-add-to-yoto:hover{background:#1d4ed8;border-color:#1d4ed8}.track-list{width:100%;border-collapse:collapse}.track-list tr td{padding:8px 16px;font-size:var(--font-footnote);border-bottom:1px solid var(--color-border)}.track-list tr.selected{background:var(--color-active-bg)}.track-list tr:hover{background:var(--color-hover-bg)}.track-list tr.selected:hover{background:var(--color-active-bg)}.track-list .checkbox-cell{width:32px;text-align:center;padding:8px}.track-list .checkbox-cell input[type=checkbox]{cursor:pointer;width:14px;height:14px;accent-color:#0078d4}.track-list .track-number{width:40px;text-align:center;color:var(--color-text-secondary)}.track-list .track-name{flex:1}.track-list .track-size{width:100px;text-align:right;color:var(--color-text-secondary)}.track-list .track-duration{width:80px;text-align:right;color:var(--color-text-secondary)}.other-files{padding:12px 16px}.other-files h3{font-size:var(--font-caption1);text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-secondary);margin:0 0 8px}.other-files ul{list-style:none;padding:0;margin:0}.other-files li{font-size:var(--font-footnote);color:var(--color-text-secondary);padding:4px 0}.btn-add-to-yoto{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:var(--font-caption1);font-family:inherit;font-weight:var(--font-weight-medium);border:1px solid #2563eb;border-radius:4px;background:#2563eb;color:#fff;cursor:pointer;transition:background .15s ease;white-space:nowrap}.btn-add-to-yoto:hover{background:#1d4ed8}.btn-sync-yoto{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;font-size:var(--font-caption1);font-family:inherit;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;transition:all .15s ease;white-space:nowrap}.btn-sync-yoto:hover:not(:disabled){color:var(--color-text-primary);border-color:var(--color-text-secondary)}.btn-sync-yoto:disabled{opacity:.6;cursor:not-allowed}.btn-sync-yoto .spinning{animation:spin 1s linear infinite}.btn-sync-yoto .sync-message{font-size:var(--font-caption2);margin-left:4px}.recent-imports{padding:10px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-secondary)}.recent-imports-header{display:flex;align-items:center;gap:6px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-secondary);margin-bottom:6px}.recent-imports-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}.recent-imports-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 8px;border-radius:4px;cursor:pointer;transition:background .1s ease;font-size:var(--font-footnote)}.recent-imports-item:hover{background:var(--color-hover-bg)}.recent-imports-info{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-imports-artist{font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.recent-imports-separator,.recent-imports-album{color:var(--color-text-secondary)}.recent-imports-meta{display:flex;align-items:center;gap:8px;flex-shrink:0}.recent-imports-quality{font-size:var(--font-caption2);padding:1px 5px;border-radius:3px;background:var(--color-bg-primary);border:1px solid var(--color-border);color:var(--color-text-secondary);font-family:monospace}.recent-imports-time{font-size:var(--font-caption2);color:var(--color-text-secondary);white-space:nowrap}.recent-imports-empty{padding:12px 16px;color:var(--text-muted, #888);font-size:var(--font-footnote);font-style:italic}.track-play-cell{width:32px;text-align:center;padding:4px 0 4px 16px}.track-play-btn{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:4px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .15s ease}.track-play-btn:hover{color:var(--color-text-primary);background:var(--color-hover-bg)}.track-list tr.playing .track-play-btn,.track-list tr.playing .track-number{color:#2563eb}.track-queue-cell{width:32px;text-align:center;padding:4px 0}.track-queue-btn{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:4px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .15s ease;opacity:.5}.track-queue-btn:hover{color:#2563eb;background:var(--color-hover-bg);opacity:1}.track-list tr:hover .track-queue-btn{opacity:1}.queue-prompt{position:fixed;z-index:100;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;padding:10px 14px;box-shadow:0 4px 16px #00000040;display:flex;flex-direction:column;gap:8px;min-width:180px}.queue-prompt-label{font-size:var(--font-caption2);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.queue-prompt-actions{display:flex;gap:6px}.queue-prompt-replace{flex:1;padding:6px 10px;font-size:var(--font-caption1);font-family:inherit;font-weight:var(--font-weight-medium);border:none;border-radius:4px;background:#2563eb;color:#fff;cursor:pointer;transition:background .15s ease}.queue-prompt-replace:hover{background:#1d4ed8}.queue-prompt-add{flex:1;padding:6px 10px;font-size:var(--font-caption1);font-family:inherit;font-weight:var(--font-weight-medium);border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-primary);color:var(--color-text-primary);cursor:pointer;transition:all .15s ease}.queue-prompt-add:hover{border-color:var(--color-text-secondary)}.queue-prompt-cancel{background:none;border:none;font-size:var(--font-caption2);color:var(--color-text-secondary);cursor:pointer;padding:2px;text-align:center}.queue-prompt-cancel:hover{color:var(--color-text-primary)}.card-queue-btn{position:absolute;bottom:8px;right:8px;width:32px;height:32px;border-radius:50%;border:none;background:#0009;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease,background .15s ease;z-index:2}.card-queue-btn:hover{background:#2563ebd9}.grid-card:hover .card-queue-btn,.wall-card:hover .card-queue-btn{opacity:1}.grid-card-art,.wall-card-art{position:relative}.btn-add-to-queue{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:var(--font-caption1);font-family:inherit;font-weight:var(--font-weight-medium);border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-primary);color:var(--color-text-primary);cursor:pointer;transition:all .15s ease;white-space:nowrap}.btn-add-to-queue:hover{border-color:#2563eb;color:#2563eb}.search-results{display:flex;flex-direction:column}.search-results-header{display:flex;align-items:center;gap:8px;padding:12px 16px;font-size:var(--font-footnote);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border)}.search-truncated{font-size:var(--font-caption1);opacity:.7}.search-results-empty{padding:48px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-subhead)}.search-result-item{display:flex;flex-direction:column;gap:4px;padding:10px 16px;border-bottom:1px solid var(--color-border);cursor:pointer;transition:background .1s ease}.search-result-item:hover{background:var(--color-hover-bg)}.search-result-info{font-size:var(--font-subhead)}.search-result-artist{font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.search-result-sep{color:var(--color-text-secondary);margin:0 2px}.search-result-album{color:var(--color-text-secondary)}.search-result-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.search-match-badge{display:inline-flex;align-items:center;font-size:var(--font-caption2);padding:2px 7px;border-radius:3px;font-weight:var(--font-weight-medium);color:#fff;white-space:nowrap}.search-match-badge--artist{background:#3b82f6}.search-match-badge--album{background:#10b981}.search-match-badge--track{background:#f59e0b;color:#1a1a1a}.search-match-badge--tag{background:#8b5cf6}.search-result-track-count{font-size:var(--font-caption1);color:var(--color-text-secondary)}.tag-badges{display:inline-flex;gap:4px;flex-wrap:wrap;align-items:center}.tag-badge{display:inline-flex;align-items:center;font-size:var(--font-caption2);padding:1px 6px;border-radius:9999px;font-weight:var(--font-weight-medium);line-height:1.4;white-space:nowrap}.tag-badge--slate{background:#64748b33;color:#94a3b8}.tag-badge--blue{background:#3b82f633;color:#60a5fa}.tag-badge--green{background:#22c55e33;color:#4ade80}.tag-badge--amber{background:#f59e0b33;color:#fbbf24}.tag-badge--rose{background:#f43f5e33;color:#fb7185}.tag-badge--purple{background:#a855f733;color:#c084fc}.tag-badge--teal{background:#14b8a633;color:#2dd4bf}.tag-badge--orange{background:#f9731633;color:#fb923c}.tag-manager{position:absolute;z-index:50;background:var(--color-bg-secondary, #1e1e2e);border:1px solid var(--color-border, #3a3a4a);border-radius:8px;padding:8px;min-width:200px;box-shadow:0 4px 16px #0000004d}.tag-manager-input{width:100%;padding:4px 8px;border-radius:4px;background:var(--color-bg-primary, #13131d);border:1px solid var(--color-border, #3a3a4a);color:inherit;font-size:var(--font-footnote);font-family:inherit;outline:none;box-sizing:border-box}.tag-manager-input:focus{border-color:#3b82f6}.tag-manager-input::placeholder{color:var(--color-text-secondary, #666)}.tag-manager-list{list-style:none;padding:0;margin:4px 0 0;max-height:200px;overflow-y:auto}.tag-manager-item{display:flex;align-items:center;gap:6px;padding:4px 8px;cursor:pointer;border-radius:4px;font-size:var(--font-footnote);color:var(--color-text-primary, #e0e0e0);transition:background .1s ease}.tag-manager-item:hover{background:var(--color-hover-bg, rgba(255, 255, 255, .06))}.tag-manager-item input[type=checkbox]{cursor:pointer;accent-color:#3b82f6;width:13px;height:13px;flex-shrink:0}.tag-btn{background:none;border:none;cursor:pointer;padding:2px;color:var(--color-text-secondary, #888);opacity:.6;display:inline-flex;align-items:center;border-radius:3px;transition:opacity .15s ease;vertical-align:middle}.tag-btn:hover{opacity:1}.combo-filter{position:relative;display:inline-flex;flex-direction:column;gap:0}.combo-filter-trigger{display:inline-flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-footnote);cursor:pointer;outline:none;transition:border-color .15s;white-space:nowrap}.combo-filter-trigger:hover,.combo-filter-trigger--open{border-color:var(--color-accent, #6366f1)}.combo-filter-chevron{flex-shrink:0;opacity:.6;transition:transform .15s}.combo-filter-chevron--up{transform:rotate(180deg)}.combo-filter-dropdown{position:absolute;top:calc(100% + 4px);left:0;z-index:50;min-width:240px;max-width:320px;max-height:min(400px,calc(100vh - 120px));display:flex;flex-direction:column;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 12px #00000026}.combo-filter-search-wrap{padding:8px 8px 4px;flex-shrink:0}.combo-filter-search{width:100%;padding:6px 8px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-footnote);outline:none;box-sizing:border-box}.combo-filter-search:focus{border-color:var(--color-accent, #6366f1)}.combo-filter-list{flex:1;overflow-y:auto;padding:4px 0;min-height:0}.combo-filter-item{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:var(--font-footnote);cursor:pointer;transition:background .1s;-webkit-user-select:none;user-select:none}.combo-filter-item:hover{background:var(--color-hover-bg)}.combo-filter-item--checked{background:#6366f112}.combo-filter-item--checked:hover{background:#6366f11f}.combo-filter-item input[type=checkbox]{flex-shrink:0;width:14px;height:14px;accent-color:var(--color-accent, #6366f1);cursor:pointer;margin:0}.combo-filter-item-name{color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.combo-filter-empty{padding:12px;text-align:center;font-size:var(--font-footnote);color:var(--color-text-secondary);opacity:.7}.combo-filter-footer{padding:4px 8px 8px;border-top:1px solid var(--color-border);margin-top:4px;display:flex;justify-content:flex-start;flex-shrink:0}.combo-filter-clear{background:none;border:none;padding:2px 4px;font-size:var(--font-caption1);color:var(--color-text-secondary);cursor:pointer;border-radius:3px;transition:color .15s,background .15s}.combo-filter-clear:hover{color:var(--color-accent, #6366f1)}.combo-filter-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.combo-filter-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 8px;background:var(--color-accent, #6366f1);color:#fff;border-radius:12px;font-size:var(--font-caption2);font-weight:var(--font-weight-medium);white-space:nowrap}.combo-filter-chip-remove{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;color:#fff;cursor:pointer;padding:0;border-radius:50%;width:14px;height:14px;opacity:.75;transition:opacity .15s;flex-shrink:0}.combo-filter-chip-remove:hover{opacity:1}.library-view{display:flex;flex-direction:column;height:100%;overflow:hidden}.library-content{flex:1;min-height:0;overflow-y:auto;padding:16px}.library-toolbar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary);flex-wrap:wrap}.library-title{display:flex;align-items:center;gap:8px;font-size:var(--font-callout);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap}.library-stats{font-size:var(--font-caption1);color:var(--color-text-secondary);white-space:nowrap}.library-toolbar-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.library-sort-select{padding:4px 8px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-caption1);cursor:pointer;outline:none}.library-sort-select:focus{border-color:var(--color-accent, #6366f1)}.view-toggle-group{display:flex;gap:0;border:1px solid var(--color-border);border-radius:4px;overflow:hidden}.view-toggle-btn{display:flex;align-items:center;justify-content:center;padding:5px 8px;background:var(--color-bg-secondary);color:var(--color-text-secondary);border:none;cursor:pointer;transition:background .15s,color .15s}.view-toggle-btn:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.view-toggle-btn--active{background:var(--color-accent, #6366f1);color:#fff}.view-toggle-btn--active:hover{background:var(--color-accent, #6366f1);color:#fff;opacity:.9}.library-refresh-btn{display:flex;align-items:center;padding:5px 8px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;transition:background .15s,color .15s}.library-refresh-btn:hover:not(:disabled){background:var(--color-hover-bg);color:var(--color-text-primary)}.library-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--lib-card-min, 160px),1fr));gap:16px}.library-card{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;overflow:hidden;cursor:pointer;transition:transform .15s,box-shadow .15s}.library-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.library-card:focus-visible{outline:2px solid var(--color-accent, #6366f1);outline-offset:2px}.library-card-art{position:relative;width:100%;aspect-ratio:1;overflow:hidden;background:var(--color-bg-tertiary, var(--color-bg-secondary));display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary)}.library-card-hover-actions{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:center;gap:4px;padding:6px;background:linear-gradient(transparent,#000000bf);opacity:0;transition:opacity .15s}.library-card:hover .library-card-hover-actions{opacity:1}.library-hover-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:#ffffff26;color:#fff;cursor:pointer;transition:background .15s,transform .1s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.library-hover-btn:hover{background:#ffffff4d;transform:scale(1.1)}.library-hover-btn--play{width:38px;height:38px;background:var(--color-accent, #6366f1)}.library-hover-btn--play:hover{background:var(--color-accent-hover, #4f46e5)}.library-card-art-img{width:100%;height:100%;object-fit:cover;display:block}.library-card-art-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--color-text-secondary);opacity:.4}.library-card-info{padding:8px 10px}.library-card-title{font-size:var(--font-footnote);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.library-card-artist{font-size:var(--font-caption1);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.library-card-artist--link{cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-decoration-color:transparent;transition:text-decoration-color .15s,color .15s}.library-card-artist--link:hover{color:var(--color-accent, #6366f1);text-decoration-color:currentColor}.library-list-artist--link{cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-decoration-color:transparent;transition:text-decoration-color .15s,color .15s}.library-list-artist--link:hover{color:var(--color-accent, #6366f1);text-decoration-color:currentColor}.library-card-meta{display:flex;align-items:center;gap:6px;margin-top:4px;flex-wrap:wrap}.library-card-year,.library-card-tracks{font-size:var(--font-caption2);color:var(--color-text-secondary)}.library-card-tags{margin-top:4px}.library-list{display:flex;flex-direction:column}.library-list-header{display:flex;align-items:center;padding:6px 12px;border-bottom:2px solid var(--color-border);font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;gap:8px}.library-list-row{display:flex;align-items:center;padding:6px 12px;border-bottom:1px solid var(--color-border);cursor:pointer;gap:8px;transition:background .1s}.library-list-row:hover{background:var(--color-hover-bg)}.library-list-row:focus-visible{outline:2px solid var(--color-accent, #6366f1);outline-offset:-2px}.library-list-thumb-wrap{width:40px;height:40px;flex-shrink:0}.library-list-thumb{width:40px;height:40px;object-fit:cover;border-radius:4px;display:block}.library-list-thumb--fallback{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:4px;background:var(--color-bg-tertiary, var(--color-bg-secondary));color:var(--color-text-secondary);opacity:.5}.library-list-title{flex:1;font-size:var(--font-footnote);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.library-list-artist{width:200px;flex-shrink:0;font-size:var(--font-caption1);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.library-list-year{width:60px;flex-shrink:0;font-size:var(--font-caption1);color:var(--color-text-secondary)}.library-list-tracks{width:80px;flex-shrink:0;font-size:var(--font-caption1);color:var(--color-text-secondary)}.library-list-tags{flex-shrink:0}.library-list-yoto{flex-shrink:0;width:64px}.library-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;height:300px;color:var(--color-text-secondary);text-align:center}.library-empty p{margin:0;font-size:var(--font-callout)}.library-empty-hint{font-size:var(--font-footnote)!important;color:var(--color-text-secondary);opacity:.7}.library-scan-btn{margin-top:8px;padding:8px 20px;background:var(--color-accent, #6366f1);color:#fff;border:none;border-radius:6px;font-size:var(--font-subhead);cursor:pointer;transition:opacity .15s}.library-scan-btn:hover{opacity:.85}.library-scanning{display:flex;align-items:center;gap:10px;padding:16px;color:var(--color-text-secondary);font-size:var(--font-subhead)}.library-loading{display:flex;align-items:center;gap:10px;padding:32px;justify-content:center;color:var(--color-text-secondary)}.library-error{display:flex;align-items:center;gap:8px;padding:12px 16px;color:var(--color-error, #ef4444);font-size:var(--font-footnote)}.yoto-badge{display:inline-flex;align-items:center;gap:3px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);padding:2px 5px;border-radius:3px;text-transform:uppercase;letter-spacing:.04em}.yoto-badge--uploaded{background:#22c55e26;color:#16a34a}.yoto-badge--uploading{background:#f59e0b26;color:#d97706}.yoto-badge--error{background:#ef444426;color:#dc2626}.library-filter-bar{display:flex;flex-wrap:wrap;gap:8px;padding:8px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary);align-items:center}.library-filter-search{position:relative;flex:1;min-width:180px;max-width:300px}.library-filter-search input{width:100%;padding:6px 8px 6px 28px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-footnote);outline:none;box-sizing:border-box}.library-filter-search input:focus{border-color:var(--color-accent, #6366f1)}.library-filter-search .search-icon{position:absolute;left:8px;top:50%;transform:translateY(-50%);opacity:.5;color:var(--color-text-secondary);pointer-events:none}.library-filter-select{padding:6px 8px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-footnote);max-width:200px;cursor:pointer;outline:none}.library-filter-select:focus{border-color:var(--color-accent, #6366f1)}.library-filter-year{display:flex;align-items:center;gap:4px}.library-filter-year input{width:70px;padding:6px 8px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-footnote);outline:none}.library-filter-year input:focus{border-color:var(--color-accent, #6366f1)}.library-filter-year span{color:var(--color-text-secondary);font-size:var(--font-caption1)}.library-filter-clear{display:flex;align-items:center;padding:4px;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;border-radius:4px;transition:background .15s,color .15s}.library-filter-clear:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.library-pagination{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px;border-top:1px solid var(--color-border)}.library-pagination button{display:flex;align-items:center;gap:4px;padding:6px 12px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-primary);cursor:pointer;font-size:var(--font-footnote);transition:background .15s}.library-pagination button:hover:not(:disabled){background:var(--color-hover-bg)}.library-pagination button:disabled{opacity:.4;cursor:default}.library-pagination-info{font-size:var(--font-footnote);color:var(--color-text-secondary)}.lib-detail{display:flex;flex-direction:column;height:100%}.lib-detail-loading,.lib-detail-error{display:flex;align-items:center;gap:10px;padding:32px;justify-content:center;color:var(--color-text-secondary);font-size:var(--font-subhead)}.lib-detail-error{color:var(--color-error, #ef4444)}.lib-detail-header{display:flex;align-items:flex-start;gap:16px;padding:16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary)}.lib-detail-back-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-secondary);cursor:pointer;transition:background .15s,color .15s;margin-top:2px}.lib-detail-back-btn:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.lib-detail-art{width:100px;height:100px;flex-shrink:0;border-radius:6px;overflow:hidden;background:var(--color-bg-secondary);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);opacity:.6}.lib-detail-art-img{width:100%;height:100%;object-fit:cover;display:block}.lib-detail-art-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--color-text-secondary);opacity:.5}.lib-detail-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.lib-detail-title{margin:0;font-size:var(--font-headline);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lib-detail-artist-link{background:none;border:none;padding:0;font-size:var(--font-subhead);color:var(--color-accent, #6366f1);cursor:pointer;text-align:left;text-decoration:underline;text-underline-offset:2px;transition:opacity .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lib-detail-artist-link:hover{opacity:.75}.lib-detail-meta{display:flex;align-items:center;gap:8px;font-size:var(--font-caption1);color:var(--color-text-secondary);flex-wrap:wrap}.lib-detail-meta span+span:before{content:"·";margin-right:8px}.lib-detail-tags{margin-top:4px}.lib-detail-actions{display:flex;flex-direction:column;gap:8px;flex-shrink:0;align-items:flex-end}.lib-detail-queue-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-primary);font-size:var(--font-footnote);cursor:pointer;transition:background .15s;white-space:nowrap}.lib-detail-queue-btn:hover{background:var(--color-hover-bg)}.lib-detail-tracks{width:100%;border-collapse:collapse;font-size:var(--font-footnote);margin-top:8px}.lib-detail-tracks thead th{padding:6px 12px;text-align:left;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--color-border)}.lib-detail-tracks tbody tr{border-bottom:1px solid var(--color-border);transition:background .1s}.lib-detail-tracks tbody tr:hover{background:var(--color-hover-bg)}.lib-detail-track--active{background:#6366f112}.lib-detail-track--active:hover{background:#6366f11f!important}.lib-detail-tracks td{padding:8px 12px;color:var(--color-text-primary);vertical-align:middle}.lib-detail-track-play{width:36px;padding-right:0!important}.lib-detail-play-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:50%;color:var(--color-text-primary);cursor:pointer;transition:background .15s}.lib-detail-play-btn:hover{background:var(--color-hover-bg)}.lib-detail-track-num{width:36px;color:var(--color-text-secondary);font-size:var(--font-caption1);text-align:right}.lib-detail-track-dur{width:60px;color:var(--color-text-secondary);font-variant-numeric:tabular-nums;font-size:var(--font-caption1)}.lib-detail-track-size{width:70px;color:var(--color-text-secondary);font-size:var(--font-caption1)}.lib-detail-track-queue{width:36px;padding-left:0!important}.lib-detail-queue-track-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;background:none;border:none;border-radius:4px;color:var(--color-text-secondary);cursor:pointer;transition:background .15s,color .15s;opacity:0}.lib-detail-tracks tbody tr:hover .lib-detail-queue-track-btn{opacity:1}.lib-detail-queue-track-btn:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.lib-artist-detail-header{display:flex;align-items:center;gap:16px;padding:16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary)}.lib-artist-detail-info{display:flex;flex-direction:column;gap:4px}.lib-artist-albums-grid{padding:16px}@media(max-width:767px){.library-grid{grid-template-columns:repeat(auto-fill,minmax(var(--lib-card-min, 140px),1fr))}.library-toolbar{gap:8px;padding:8px 12px}.library-stats,.ss-checkbox-label,.library-list-artist,.library-list-year,.library-list-tracks,.library-list-tags,.library-list-header .library-list-artist,.library-list-header .library-list-year,.library-list-header .library-list-tracks,.library-list-header .library-list-tags{display:none}}.library-touch-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--color-border);border-radius:50%;background:var(--color-bg-primary);color:var(--color-text-secondary);cursor:pointer;transition:background .15s;flex-shrink:0}.library-touch-btn:active{background:var(--color-hover-bg)}.library-touch-btn--play{background:var(--color-accent, #6366f1);color:#fff;border:none}.library-touch-btn--play:active{opacity:.85}@media(hover:none){.library-card-hover-actions{display:none}.library-card-touch-actions{display:flex;gap:4px;padding:4px 10px 8px}}@media(hover:hover){.library-card-touch-actions{display:none}}.library-filter-desktop{display:contents}.library-toolbar--mobile{display:none}@media(max-width:767px){.library-toolbar--desktop,.library-filter-desktop{display:none}.library-toolbar--mobile{display:flex;flex-direction:column;padding:8px 12px;gap:8px;border-bottom:1px solid var(--color-border)}.library-mobile-search-row{display:flex;gap:8px;align-items:center}.library-mobile-search-row .library-filter-search{flex:1;max-width:none;min-width:0}.library-mobile-search-row .library-sort-select{flex-shrink:0;width:auto}.library-mobile-search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--color-text-secondary);cursor:pointer;padding:4px;display:flex;align-items:center}.library-mobile-search-row .library-filter-search{position:relative;flex:1;max-width:none;min-width:0}.library-mobile-pill-row{display:flex;gap:8px;align-items:center}.library-mobile-pill-row .library-sort-select{margin-left:auto;flex-shrink:0}.library-mobile-pill{padding:6px 14px;border:1px solid var(--color-border);border-radius:20px;background:var(--color-bg-secondary);color:var(--color-text-secondary);font-size:var(--font-footnote);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background .15s,color .15s,border-color .15s}.library-mobile-pill--active{background:var(--color-accent, #6366f1);color:#fff;border-color:var(--color-accent, #6366f1)}.library-grid-slider{margin-left:auto;width:80px;flex-shrink:0;accent-color:var(--color-accent, #6366f1)}}.toast-container{position:fixed;bottom:24px;right:24px;z-index:9999;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}.toast{pointer-events:auto;padding:10px 16px;border-radius:6px;font-size:var(--font-footnote);font-family:inherit;color:#fff;cursor:pointer;animation:toast-slide-up .25s ease-out;max-width:320px;box-shadow:0 4px 12px #0000004d}.toast-success{background:#16a34a}.toast-error{background:#dc2626}.toast-info{background:#52525b}@keyframes toast-slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.request-btn{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:4px;font-size:var(--font-caption1);font-family:inherit;cursor:pointer;border:1px solid var(--color-border);background:var(--color-bg-secondary);color:var(--color-text-primary);transition:all .15s ease;white-space:nowrap}.request-btn:hover:not(:disabled){background:var(--color-hover-bg)}.request-btn:disabled{opacity:.7;cursor:default}.request-btn .spinner{animation:request-spin 1s linear infinite}.request-btn.request-success,.request-btn.request-owned{color:#22c55e;border-color:#22c55e40}.request-btn.request-error{color:#ef4444;border-color:#ef444440}.request-btn.request-loading{color:var(--color-text-secondary)}.request-error-container{display:flex;flex-direction:column;gap:4px}.request-error-text{font-size:var(--font-caption2);color:#ef4444;max-width:200px;line-height:1.3}@keyframes request-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.request-btn-group{display:flex;align-items:center;gap:6px}.request-btn.request-primary{background:var(--color-bg-secondary);border-color:var(--color-border)}.request-btn.request-secondary{background:none;border:none;color:var(--color-text-secondary);font-size:var(--font-caption2);padding:4px 6px}.request-btn.request-secondary:hover{color:var(--color-text-primary);background:var(--color-hover-bg)}@media(max-width:600px){.request-btn-group{flex-direction:column;gap:4px}}.spin{animation:yc-spin 1s linear infinite}@keyframes yc-spin{to{transform:rotate(360deg)}}.yc-view{display:flex;flex-direction:column;height:100%;overflow:hidden}.yc-content{flex:1;min-height:0;overflow-y:auto;padding:16px}.yc-toolbar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary);flex-wrap:wrap}.yc-title{display:flex;align-items:center;gap:8px;font-size:var(--font-subhead);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap}.yc-stats{font-size:var(--font-caption1);color:var(--color-text-secondary);white-space:nowrap}.yc-toolbar-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.yc-sort-select{padding:4px 8px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-caption1);cursor:pointer;outline:none}.yc-sort-select:focus{border-color:var(--color-accent, #6366f1)}.yc-refresh-btn{display:flex;align-items:center;justify-content:center;padding:5px;background:transparent;border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-secondary);cursor:pointer;transition:background .15s,color .15s}.yc-refresh-btn:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.yc-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.yc-zoom-slider{width:80px;height:4px;accent-color:var(--color-accent, #6366f1);cursor:pointer}.yc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--yc-card-min, 180px),1fr));gap:20px}.yc-card{background:var(--color-bg-secondary);border-radius:14px;box-shadow:0 1px 3px #00000014;overflow:hidden;cursor:pointer;transition:transform .25s ease,box-shadow .25s ease;position:relative}.yc-card:hover{transform:translateY(-3px);box-shadow:0 8px 25px #0000001f}.yc-card-art{position:relative;aspect-ratio:1 / 1.586;border-radius:14px 14px 0 0;overflow:hidden;background:var(--color-bg-primary)}.yc-card-art-img{width:100%;height:100%;object-fit:cover;display:block}.yc-card-art-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);opacity:.4}.yc-status-badge{position:absolute;bottom:10px;left:10px;border-radius:20px;padding:3px 10px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);pointer-events:none;z-index:2}.yc-status-badge--in-library{background:#22c55ed9;color:#fff}.yc-status-badge--not-in-library{background:#00000073;color:#ffffffe6}.yc-status-badge--available{background:#f59e0bd9;color:#fff}.yc-status-badge--uploaded{background:#6366f1d9;color:#fff}.yc-hover-actions{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:8px;padding:8px;background:#00000080;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:0 0 14px 14px;opacity:0;transition:opacity .2s ease;z-index:3}.yc-card:hover .yc-hover-actions{opacity:1}.yc-hover-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:#fff3;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border:none;color:#fff;cursor:pointer;transition:background .15s ease}.yc-hover-btn:hover{background:#ffffff59}.yc-hover-actions--visible{opacity:1}.yc-hover-btn--uploading{background:#ffffff40;cursor:wait}.yc-spin{animation:yc-spin 1s linear infinite}.yc-upload-success-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#22c55e59;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:14px;z-index:5;animation:yc-success-fade 2s ease forwards}.yc-upload-success-check{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:#22c55ee6;color:#fff;animation:yc-check-pop .4s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes yc-check-pop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.15);opacity:1}to{transform:scale(1);opacity:1}}@keyframes yc-success-fade{0%,60%{opacity:1}to{opacity:0}}.yc-card-info{padding:12px 14px}.yc-card-title{font-size:var(--font-subhead);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.yc-card-author{font-size:var(--font-footnote);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.yc-card-meta{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:var(--font-caption1);color:var(--color-text-secondary);opacity:.75}.yc-card-meta-dot{opacity:.5}.yc-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:60px 20px;color:var(--color-text-secondary)}.yc-error{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#ef44441a;color:#ef4444;border-radius:6px;font-size:var(--font-footnote);margin:16px}.yc-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:60px 20px;color:var(--color-text-secondary)}.yc-empty p{margin:0;font-size:var(--font-subhead)}.yc-sentinel{height:1px;width:100%}.yc-load-more-spinner{display:flex;align-items:center;justify-content:center;padding:20px 0 8px;color:var(--color-text-secondary)}.yc-spinning{animation:yc-spin 1s linear infinite}@keyframes yc-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.yc-detail{display:flex;flex-direction:column;height:100%;overflow-y:auto}.yc-detail-header{display:flex;flex-direction:row;align-items:flex-start;gap:20px;padding:20px;background:var(--color-bg-primary);border-bottom:1px solid var(--color-border);flex-shrink:0}.yc-detail-back-btn{display:flex;align-items:center;justify-content:center;padding:6px;background:transparent;border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-secondary);cursor:pointer;transition:background .15s,color .15s;flex-shrink:0;margin-top:2px}.yc-detail-back-btn:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.yc-detail-art{width:200px;aspect-ratio:1.586 / 1;flex-shrink:0;border-radius:12px;overflow:hidden;box-shadow:0 4px 16px #0000001f;background:var(--color-bg-secondary)}.yc-detail-art-img{width:100%;height:100%;object-fit:cover;display:block}.yc-detail-art-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);opacity:.4}.yc-detail-art--portrait{width:140px;height:auto;aspect-ratio:1 / 1.586;position:relative}.yc-detail-art--portrait .yc-status-badge{position:absolute;bottom:8px;left:8px}.yc-detail-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.yc-detail-title{margin:0;font-size:var(--font-title3);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:1.3}.yc-detail-author{font-size:var(--font-subhead);color:var(--color-text-secondary)}.yc-detail-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:var(--font-footnote);color:var(--color-text-secondary);opacity:.8}.yc-detail-meta-dot{opacity:.5;margin-right:0}.yc-status-badge--lg{font-size:var(--font-caption2);padding:4px 12px;align-self:flex-start}.yc-detail-shopify-link{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-caption1);color:var(--color-accent, #6366f1);text-decoration:none;opacity:.8;transition:opacity .15s;align-self:flex-start}.yc-detail-shopify-link:hover{opacity:1;text-decoration:underline}.yc-detail-actions{padding:16px 20px;border-bottom:1px solid var(--color-border);flex-shrink:0}.yc-detail-action-group{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.yc-detail-upload-btn{display:flex;align-items:center;gap:8px;padding:10px 20px;background:var(--color-accent, #6366f1);color:#fff;border:none;border-radius:10px;font-size:var(--font-subhead);font-weight:var(--font-weight-medium);cursor:pointer;transition:opacity .2s,transform .15s}.yc-detail-upload-btn:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.yc-detail-upload-btn:disabled{opacity:.6;cursor:not-allowed}.yc-detail-action-note{font-size:var(--font-caption1);color:var(--color-text-secondary)}.yc-detail-action-error{display:flex;align-items:center;gap:6px;font-size:var(--font-caption1);color:#ef4444}.yc-detail-tracks{flex:1;overflow-y:auto;padding:16px 20px}.yc-detail-track-table{width:100%;border-collapse:collapse}.yc-detail-track-row{border-bottom:1px solid var(--color-border);transition:background .12s}.yc-detail-track-row:last-child{border-bottom:none}.yc-detail-track-row:hover{background:var(--color-hover-bg)}.yc-detail-track-num{width:40px;padding:10px 16px 10px 0;text-align:right;font-size:var(--font-footnote);color:var(--color-text-secondary);opacity:.6}.yc-detail-track-title{padding:10px 0;font-size:var(--font-subhead);color:var(--color-text-primary)}.yc-detail-track-icon{width:24px;padding:4px;text-align:center;vertical-align:middle}.yc-detail-track-icon img{display:block;image-rendering:pixelated}.yc-detail-track-icon-placeholder{color:var(--color-text-tertiary, #999);font-size:var(--font-subhead)}.yc-detail-track-icon.yc-clickable{cursor:pointer}.yc-detail-track-icon.yc-clickable:hover{background:var(--color-bg-hover, rgba(255, 255, 255, .05));border-radius:4px}.yc-detail-tracks-empty{padding:24px 0;font-size:var(--font-subhead);color:var(--color-text-secondary);opacity:.6}.yc-filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary);flex-shrink:0}.yc-segment{display:flex;border:1px solid var(--color-border);border-radius:8px;overflow:hidden}.yc-segment-btn{padding:6px 14px;font-size:var(--font-caption1);font-weight:var(--font-weight-medium);border:none;border-right:1px solid var(--color-border);background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;transition:background .2s,color .2s;white-space:nowrap}.yc-segment-btn:last-child{border-right:none}.yc-segment-btn:hover:not(.yc-segment-btn--active){background:var(--color-hover-bg);color:var(--color-text-primary)}.yc-segment-btn--active{background:var(--color-accent, #6366f1);color:#fff}.yc-search-wrap{position:relative;display:flex;align-items:center}.yc-search-icon{position:absolute;left:8px;color:var(--color-text-secondary);pointer-events:none}.yc-search{padding:6px 8px 6px 30px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-caption1);outline:none;width:220px;transition:border-color .15s}.yc-search:focus{border-color:var(--color-accent, #6366f1)}.yc-clear-filters{display:flex;align-items:center;gap:4px;padding:5px 10px;background:transparent;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-secondary);font-size:var(--font-caption1);cursor:pointer;transition:background .15s,color .15s}.yc-clear-filters:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.yc-source-tabs{margin-right:4px}.yc-status-badge--ready-upload{background:#22c55ed9;color:#fff}.yc-pack-badge{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:#6366f1d9;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-radius:6px;color:#fff;z-index:2;pointer-events:none}.yc-pack-subcards{flex:1;overflow-y:auto;padding:12px 20px;display:flex;flex-direction:column;gap:4px}.yc-pack-subcard{border:1px solid var(--color-border);border-radius:10px;overflow:hidden;background:var(--color-bg-secondary)}.yc-pack-subcard--missing{opacity:.6}.yc-pack-subcard-row{display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;transition:background .12s}.yc-pack-subcard--missing .yc-pack-subcard-row{cursor:default}.yc-pack-subcard-row:hover:not(.yc-pack-subcard--missing .yc-pack-subcard-row){background:var(--color-hover-bg)}.yc-pack-subcard--expanded .yc-pack-subcard-row{background:var(--color-hover-bg);border-bottom:1px solid var(--color-border)}.yc-pack-subcard-thumb{width:48px;height:76px;flex-shrink:0;border-radius:6px;overflow:hidden;background:var(--color-bg-primary);position:relative}.yc-pack-subcard-thumb img{width:100%;height:100%;object-fit:cover;display:block}.yc-pack-subcard-thumb-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);opacity:.4}.yc-pack-subcard-info{flex:1;min-width:0}.yc-pack-subcard-name{font-size:var(--font-subhead);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.yc-pack-subcard-meta{display:flex;align-items:center;gap:8px;margin-top:4px}.yc-pack-subcard-track-count{font-size:var(--font-caption1);color:var(--color-text-secondary);opacity:.7}.yc-pack-subcard-chevron{color:var(--color-text-secondary);flex-shrink:0}.yc-pack-status{display:inline-block;padding:2px 8px;border-radius:12px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold)}.yc-pack-status--assembled{background:#22c55e26;color:#16a34a}.yc-pack-status--pending{background:#f59e0b26;color:#d97706}.yc-pack-status--missing{background:#6b728026;color:var(--color-text-secondary)}.yc-pack-subcard-tracks{padding:12px 16px 14px;background:var(--color-bg-primary)}.yc-pack-subcard-actions{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.yc-pack-subcard-loading{display:flex;align-items:center;gap:8px;padding:12px 0;font-size:var(--font-footnote);color:var(--color-text-secondary)}.yc-grid-upload-loading{position:fixed;bottom:20px;right:20px;padding:8px 12px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 12px #0000001a;display:flex;align-items:center;gap:8px;font-size:var(--font-footnote);color:var(--color-text-secondary);z-index:100}@media(max-width:599px){.yc-grid{--yc-card-min: 140px !important;gap:12px}.yc-card-meta{display:none}.yc-card-info{padding:8px 10px}.yc-toolbar{padding:8px 12px;gap:8px}.yc-zoom-slider{display:block}.yc-filter-bar{padding:8px 12px;gap:6px}.yc-search{width:100%}.yc-content{padding:12px}.yc-detail-header{flex-direction:column;align-items:center;gap:12px;padding:16px}.yc-detail-art{width:120px}.yc-detail-art--portrait{width:100px}.yc-detail-info{align-items:center;text-align:center}.yc-detail-back-btn{min-width:44px;min-height:44px;align-self:flex-start}.yc-detail-title{font-size:var(--font-headline)}.yc-detail-actions,.yc-detail-tracks{padding:12px 16px}.yc-pack-subcard-thumb{width:36px;height:57px}.yc-pack-subcard-chevron{display:none}.yc-pack-subcard-row{padding:8px 10px;gap:8px}}.ss-toolbar{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.ss-toolbar-count{margin-left:auto;font-size:var(--font-footnote);color:var(--color-text-muted, #888)}.ss-paper-select{padding:4px 8px;border-radius:6px;border:1px solid var(--color-border);background:var(--color-bg-secondary);color:var(--color-text);font-size:var(--font-footnote)}.ss-checkbox-label{display:flex;align-items:center;gap:6px;font-size:var(--font-footnote);color:var(--color-text-muted, #888);cursor:pointer;-webkit-user-select:none;user-select:none}.ss-checkbox-label input[type=checkbox]{width:16px;height:16px;cursor:pointer}.ss-card-controls{position:absolute;top:6px;left:6px;display:flex;align-items:center;gap:4px;z-index:2}.ss-card-checkbox-inline{width:18px;height:18px;cursor:pointer;accent-color:var(--color-primary, #4a90e2)}.ss-printed-badge{position:absolute;top:6px;right:6px;color:#22c55e;background:#ffffffd9;border-radius:50%;display:flex;align-items:center;justify-content:center;width:22px;height:22px;z-index:2;pointer-events:none}.ss-card--selected .yc-card-art{outline:3px solid var(--color-primary, #4a90e2);outline-offset:2px}.ss-modal-overlay{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100}.ss-modal{background:var(--color-surface, #1a1a2e);border-radius:8px;padding:1.5rem;max-width:520px;width:90vw;max-height:90vh;overflow-y:auto}.ss-modal h3{margin:0 0 1rem;font-size:var(--font-headline)}.ss-preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:1.25rem}.ss-preview-cell{aspect-ratio:50/80;background:var(--color-surface-alt, #252540);border-radius:4px;overflow:hidden;display:flex;align-items:center;justify-content:center}.ss-preview-cell img{width:100%;height:100%;object-fit:cover}.ss-preview-cell--empty{background:var(--color-surface-alt, #252540);opacity:.3}.ss-modal-actions{display:flex;gap:.5rem;justify-content:flex-end}.ss-history-list{display:flex;flex-direction:column;gap:.75rem}.ss-sheet-row{background:var(--color-surface, #f5f5f5);border:1px solid var(--color-border, #e0e0e0);border-radius:6px;padding:.75rem 1rem;cursor:pointer}.ss-sheet-row-header{display:flex;align-items:center;gap:1rem}.ss-sheet-row-date{font-weight:var(--font-weight-medium)}.ss-sheet-row-count{font-size:var(--font-footnote);color:var(--color-text-muted, #888)}.ss-reprint-btn{margin-left:auto;padding:4px 8px;background:none;border:1px solid transparent;border-radius:6px;color:var(--color-text-muted, #888);cursor:pointer;opacity:0;transition:opacity .15s,color .15s,border-color .15s}.ss-sheet-row:hover .ss-reprint-btn{opacity:1}.ss-reprint-btn:hover{color:var(--color-accent, #6366f1);border-color:var(--color-accent, #6366f1)}.ss-remove-btn{padding:4px 8px;background:none;border:1px solid transparent;border-radius:6px;color:var(--color-text-muted, #888);cursor:pointer;opacity:0;transition:opacity .15s,color .15s,border-color .15s}.ss-sheet-row:hover .ss-remove-btn{opacity:1}.ss-remove-btn:hover{color:#ef4444;border-color:#ef4444}.ss-sheet-thumbs{display:flex;gap:6px;flex-wrap:wrap;margin-top:.75rem}.ss-sheet-thumb{width:44px;height:70px;object-fit:cover;border-radius:3px;background:var(--color-surface, #1a1a2e)}.ss-qty-select{margin-left:6px;padding:1px 2px;border-radius:4px;border:1px solid var(--color-border, #444);background:var(--color-bg-secondary, #2a2a40);color:var(--color-text, #eee);font-size:var(--font-caption1);cursor:pointer;vertical-align:middle}.ss-toolbar .library-grid-slider{width:80px;flex-shrink:0;accent-color:var(--color-accent, #6366f1)}.ss-empty{text-align:center;color:var(--color-text-muted, #888);padding:3rem 0}@media(max-width:599px){.ss-toolbar{gap:6px}.ss-paper-select{padding:3px 6px;font-size:var(--font-caption1)}.ss-checkbox-label{font-size:var(--font-caption1)}.ss-modal{width:95vw;max-width:none;padding:1rem}.ss-sheet-row{padding:.5rem .75rem}.ss-sheet-thumb{width:36px;height:57px}.ss-sheet-thumbs{display:none}.ss-sheet-row--expanded .ss-sheet-thumbs{display:flex}.ss-reprint-btn,.ss-remove-btn{opacity:1}}.confirm-modal-overlay{position:fixed;inset:0;z-index:200;background:#00000080;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.confirm-modal{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:10px;box-shadow:0 8px 32px #0000004d;padding:24px;min-width:320px;max-width:420px}.confirm-modal-title{font-size:var(--font-callout);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:8px}.confirm-modal-message{font-size:var(--font-subhead);color:var(--color-text-secondary);line-height:1.5;margin-bottom:20px}.confirm-modal-actions{display:flex;justify-content:flex-end;gap:8px}.confirm-modal-btn{padding:8px 16px;border-radius:6px;font-size:var(--font-footnote);font-weight:var(--font-weight-medium);cursor:pointer;border:none;transition:background .15s,transform .1s}.confirm-modal-btn:active{transform:scale(.97)}.confirm-modal-btn--cancel{background:var(--color-bg-tertiary, var(--color-bg-primary));color:var(--color-text-secondary);border:1px solid var(--color-border)}.confirm-modal-btn--cancel:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.confirm-modal-btn--confirm{background:var(--color-accent, #6366f1);color:#fff}.confirm-modal-btn--confirm:hover{background:var(--color-accent-hover, #4f46e5)}.confirm-modal-btn--confirm:focus-visible{outline:2px solid var(--color-accent, #6366f1);outline-offset:2px}@media(max-width:767px){.confirm-modal-btn{min-height:44px;padding:12px 16px}.confirm-modal-overlay{align-items:stretch}.confirm-modal{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;min-width:unset;border-radius:0;display:flex;flex-direction:column;padding:0;animation:modal-slide-up .2s ease-out}.confirm-modal-topbar{display:flex;align-items:center;height:48px;padding:0 8px;border-bottom:1px solid var(--color-border);flex-shrink:0}.confirm-modal-topbar-close{min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--color-text-primary);cursor:pointer}.confirm-modal-topbar-title{flex:1;text-align:center;font-size:var(--font-callout);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.confirm-modal-content{flex:1;display:flex;flex-direction:column;justify-content:center;padding:24px}.confirm-modal-content .confirm-modal-title{display:none}.confirm-modal-actions{padding:16px;border-top:1px solid var(--color-border)}}@media(min-width:768px){.confirm-modal-topbar{display:none}}@keyframes modal-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.downloads-view{display:flex;flex-direction:column;height:100%;overflow:hidden}.downloads-content{flex:1;min-height:0;overflow-y:auto;padding:16px}.downloads-toolbar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary)}.downloads-title{display:flex;align-items:center;gap:8px;font-size:var(--font-subhead);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap}.downloads-search-bar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary)}.downloads-search-input-wrap{position:relative;flex:1;display:flex;align-items:center}.downloads-search-icon{position:absolute;left:10px;color:var(--color-text-secondary);pointer-events:none}.downloads-search-input{width:100%;padding:7px 36px 7px 34px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-subhead);outline:none;box-sizing:border-box;transition:border-color .15s}.downloads-search-input:focus{border-color:var(--color-accent, #6366f1)}.downloads-search-input::placeholder{color:var(--color-text-secondary)}.downloads-search-clear{position:absolute;right:8px;display:flex;align-items:center;justify-content:center;padding:2px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:4px;transition:color .15s}.downloads-search-clear:hover{color:var(--color-text-primary)}.downloads-search-status{display:flex;align-items:center;gap:6px;font-size:var(--font-caption1);color:var(--color-text-secondary);white-space:nowrap}.downloads-source-pills{display:flex;align-items:center;gap:6px;padding:8px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary);flex-wrap:wrap}.downloads-source-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:12px;font-size:var(--font-caption2);font-weight:var(--font-weight-medium);border:1px solid currentColor;transition:opacity .2s,background .2s}.downloads-source-pill--pending{color:var(--color-text-secondary);border-color:var(--color-border);background:transparent;opacity:.6}.downloads-source-pill--spotify{color:#1db954;background:#1db9541a;border-color:#1db954}.downloads-source-pill--musicbrainz{color:#ba478f;background:#ba478f1a;border-color:#ba478f}.downloads-source-pill--slskd{color:#e67e22;background:#e67e221a;border-color:#e67e22}.downloads-source-pill--error{opacity:.8}.downloads-results-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.downloads-results-count{font-size:var(--font-caption1);color:var(--color-text-secondary)}.downloads-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.downloads-card{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.downloads-card-art{width:100%;aspect-ratio:1;overflow:hidden;background:var(--color-bg-primary);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);flex-shrink:0}.downloads-card-art-img{width:100%;height:100%;object-fit:cover;display:block}.downloads-card-art-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--color-text-secondary);opacity:.4}.downloads-card-body{padding:10px;display:flex;flex-direction:column;gap:6px;flex:1}.downloads-card-title{font-size:var(--font-footnote);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.downloads-card-artist{font-size:var(--font-caption1);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.downloads-card-year{font-size:var(--font-caption2);color:var(--color-text-secondary)}.downloads-card-badges{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.downloads-source-badge{display:inline-flex;align-items:center;padding:2px 6px;border-radius:10px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);letter-spacing:.02em}.downloads-source-badge--spotify{background:#1db95426;color:#1db954}.downloads-source-badge--musicbrainz{background:#ba478f26;color:#ba478f}.downloads-source-badge--slskd{background:#e67e2226;color:#e67e22}.downloads-in-library-badge{display:inline-flex;align-items:center;gap:3px;padding:2px 6px;border-radius:10px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);background:#1db95426;color:#1db954}.downloads-import-pending-badge{display:inline-flex;align-items:center;padding:2px 6px;border-radius:10px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);background:#f59e0b26;color:#f59e0b}.downloads-card-actions{display:flex;flex-direction:column;gap:4px;margin-top:4px}.downloads-method-btn{display:flex;align-items:center;justify-content:center;gap:5px;padding:5px 8px;border-radius:5px;border:1px solid var(--color-border);background:var(--color-bg-primary);color:var(--color-text-secondary);font-size:var(--font-caption2);font-weight:var(--font-weight-medium);cursor:pointer;width:100%;transition:opacity .15s,background .15s}.downloads-method-btn:disabled{opacity:.5;cursor:not-allowed}.downloads-method-btn--lidarr{color:#4f8ef7;border-color:#4f8ef766;background:#4f8ef714}.downloads-method-btn--lidarr:hover:not(:disabled){background:#4f8ef72e}.downloads-method-btn--zotify{color:#1db954;border-color:#1db95466;background:#1db95414}.downloads-method-btn--zotify:hover:not(:disabled){background:#1db9542e}.downloads-method-btn--slskd{color:#e67e22;border-color:#e67e2266;background:#e67e2214}.downloads-method-btn--slskd:hover:not(:disabled){background:#e67e222e}.downloads-method-btn--deezer{background:#a855f726;color:#c084fc;border-color:#a855f74d}.downloads-method-btn--deezer:hover:not(:disabled){background:#a855f740;border-color:#a855f780}.downloads-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 24px;text-align:center;color:var(--color-text-secondary);gap:8px}.downloads-empty svg{opacity:.3;margin-bottom:8px}.downloads-empty p{margin:0;font-size:var(--font-subhead)}.downloads-empty-hint{font-size:var(--font-caption1);opacity:.7}.spinning{animation:spin 1s linear infinite}.downloads-bottom-sections{display:flex;flex-direction:column;gap:16px;margin-top:24px}.downloads-section{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;overflow:hidden}.downloads-section-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary)}.downloads-section-title{display:flex;align-items:center;gap:8px;font-size:var(--font-footnote);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.downloads-section-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;font-size:var(--font-caption2);font-weight:var(--font-weight-bold);background:var(--color-accent, #6366f1);color:#fff}.downloads-section-refresh{display:flex;align-items:center;justify-content:center;padding:4px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:4px;transition:color .15s}.downloads-section-refresh:hover:not(:disabled){color:var(--color-text-primary)}.downloads-section-refresh:disabled{opacity:.4;cursor:default}.downloads-section-empty{padding:16px 14px;font-size:var(--font-caption1);color:var(--color-text-secondary);opacity:.7}.downloads-history-list{display:flex;flex-direction:column}.downloads-history-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 14px;border-bottom:1px solid var(--color-border);font-size:var(--font-caption1)}.downloads-history-row:last-child{border-bottom:none}.downloads-history-meta{display:flex;align-items:center;gap:4px;min-width:0;flex:1;overflow:hidden}.downloads-history-artist{font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.downloads-history-sep{color:var(--color-text-secondary);flex-shrink:0}.downloads-history-album{color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.downloads-history-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.downloads-history-source{font-size:var(--font-caption2);color:var(--color-text-secondary);opacity:.7;text-transform:capitalize}.downloads-history-time{font-size:var(--font-caption2);color:var(--color-text-secondary);opacity:.7;white-space:nowrap}.downloads-status-badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:10px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);text-transform:capitalize}.downloads-status-badge--completed{background:#1db95426;color:#1db954}.downloads-status-badge--downloading{background:#eab30826;color:#ca8a04}.downloads-status-badge--failed{background:#ef444426;color:#ef4444}.downloads-status-badge--pending{background:var(--color-bg-primary);color:var(--color-text-secondary);border:1px solid var(--color-border)}.downloads-pending-list{display:flex;flex-direction:column}.downloads-pending-row{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid var(--color-border);font-size:var(--font-caption1)}.downloads-pending-row:last-child{border-bottom:none}.downloads-pending-icon{color:var(--color-text-secondary);flex-shrink:0;opacity:.6}.downloads-pending-meta{display:flex;align-items:center;gap:4px;min-width:0;flex:1;overflow:hidden}.downloads-pending-artist{font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.downloads-pending-album{color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.deezer-status-banner{display:flex;align-items:center;gap:12px;padding:10px 14px;margin-bottom:16px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;font-size:var(--font-caption1)}.deezer-status-state{display:flex;align-items:center;gap:6px;font-weight:var(--font-weight-semibold);white-space:nowrap}.deezer-status-state--downloading{color:#c084fc}.deezer-status-state--rate-delay{color:#ca8a04}.deezer-status-state--session-break{color:#f97316}.deezer-status-state--idle{color:var(--color-text-secondary);opacity:.6}.deezer-status-album{font-weight:var(--font-weight-regular);color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:250px}.deezer-status-progress{display:flex;align-items:center;gap:8px;margin-left:auto}.deezer-status-bar-wrap{width:80px;height:6px;background:var(--color-bg-primary);border-radius:3px;overflow:hidden}.deezer-status-bar-fill{height:100%;background:#c084fc;border-radius:3px;transition:width .3s}.deezer-status-bar-label,.deezer-status-queue{font-size:var(--font-caption2);color:var(--color-text-secondary);white-space:nowrap}.deezer-status-countdown{font-variant-numeric:tabular-nums;min-width:48px}.lidarr-badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-caption2);padding:1px 6px;border-radius:3px;white-space:nowrap;vertical-align:middle;margin-left:8px}.lidarr-badge .badge-dot{display:inline-block;width:6px;height:6px;border-radius:50%;flex-shrink:0}.lidarr-badge.lidarr-owned{color:#22c55e}.lidarr-badge.lidarr-owned .badge-dot{background-color:#22c55e}.lidarr-badge.lidarr-wanted{color:#f59e0b}.lidarr-badge.lidarr-wanted .badge-dot{background-color:#f59e0b}.album-search{margin-top:0}.album-result-count{padding:8px 16px;font-size:var(--font-caption1);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border)}.no-results{text-align:center;padding:40px;color:var(--color-text-secondary)}.no-results .suggestion{font-size:var(--font-subhead);color:var(--color-text-secondary);opacity:.7}.album-list{display:flex;flex-direction:column}.album-item-wrapper{border-bottom:1px solid var(--color-border)}.album-card{display:flex;align-items:center;gap:12px;padding:10px 16px;transition:background .15s ease}.album-card:hover,.album-card.expanded{background:var(--color-hover-bg)}.album-card.album-owned{opacity:.55}.album-card.album-owned:hover{opacity:.7}.album-card-art{width:64px;height:64px;border-radius:4px;object-fit:cover;flex-shrink:0;background:var(--color-bg-secondary)}.album-card-art.placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);font-size:var(--font-caption2)}.album-card-info{flex:1;min-width:0}.album-card-title{font-weight:var(--font-weight-medium);font-size:var(--font-subhead);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.album-card-artist{font-size:var(--font-footnote);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.album-card-meta{font-size:var(--font-caption1);color:var(--color-text-secondary);opacity:.7;margin-top:2px;display:flex;align-items:center;flex-wrap:wrap;gap:0}.album-card-actions{flex-shrink:0;margin-left:auto;padding-left:8px}.album-in-library{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-caption1);color:#22c55e;white-space:nowrap;padding:4px 8px;border-radius:4px;background:#22c55e1a}.album-card-expand{color:var(--color-text-secondary);font-size:var(--font-caption2);flex-shrink:0;padding-left:4px}.album-tracks{padding:0 16px 12px;border-top:1px solid var(--color-border)}.loading-tracks{padding:20px;text-align:center;color:var(--color-text-secondary)}.album-actions{margin-top:16px;display:flex;justify-content:flex-end}.add-to-yoto-btn{padding:8px 16px;background:#06c;color:#fff;border:none;border-radius:4px;font-size:var(--font-subhead);font-family:inherit;cursor:pointer;transition:background .15s ease}.add-to-yoto-btn:hover:not(:disabled){background:#05a}.add-to-yoto-btn:disabled{background:#52525b;cursor:not-allowed}.load-more-btn{width:100%;padding:12px;margin-top:0;background:var(--color-bg-secondary);border:none;border-top:1px solid var(--color-border);color:var(--color-text-primary);font-size:var(--font-footnote);font-family:inherit;cursor:pointer;transition:background .15s ease}.load-more-btn:hover:not(:disabled){background:var(--color-hover-bg)}.load-more-btn:disabled{color:var(--color-text-secondary);cursor:not-allowed}.album-skeleton{pointer-events:none}.skeleton-box{background:var(--color-bg-secondary);border-radius:4px;animation:skeleton-shimmer 1.5s ease-in-out infinite}.album-skeleton .album-card-art{animation:skeleton-shimmer 1.5s ease-in-out infinite}.skeleton-title{width:60%;height:16px;margin-bottom:6px}.skeleton-subtitle{width:40%;height:14px;margin-bottom:4px}.skeleton-meta{width:30%;height:12px}.skeleton-btn{width:100px;height:28px}@keyframes skeleton-shimmer{0%,to{opacity:.4}50%{opacity:.8}}@media(max-width:600px){.album-card{flex-wrap:wrap;gap:8px;padding:10px 12px}.album-card-art{width:48px;height:48px}.album-card-info{flex:1 1 calc(100% - 68px);min-width:0}.album-card-actions{width:100%;padding-left:0;margin-left:0;padding-top:4px}.album-card-expand{position:absolute;right:12px;top:50%;transform:translateY(-50%)}.album-item-wrapper{position:relative}}.spotify-tab{display:flex;flex-direction:column;height:100%;overflow:hidden}.spotify-url-bar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary)}.spotify-url-bar input{flex:1;padding:6px 10px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-primary);font-size:var(--font-footnote);font-family:inherit;outline:none;transition:border-color .15s ease}.spotify-url-bar input:focus{border-color:var(--color-text-secondary)}.spotify-url-bar input::placeholder{color:var(--color-text-secondary)}.spotify-url-bar button{padding:6px 12px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-primary);font-size:var(--font-footnote);font-family:inherit;cursor:pointer;transition:all .15s ease}.spotify-url-bar button:hover{background:var(--color-hover-bg)}.spotify-url-bar button:disabled{opacity:.5;cursor:not-allowed}.spotify-url-bar button.icon-button{padding:6px;background:none;border:none;color:var(--color-text-secondary)}.spotify-url-bar button.icon-button:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.spotify-url-error{padding:8px 16px;color:#f44;font-size:var(--font-caption1);background:#f444441a;border-bottom:1px solid rgba(244,68,68,.3)}.spotify-header{display:flex;gap:20px;padding:20px;border-bottom:1px solid var(--color-border);align-items:flex-start}.spotify-header-art{width:120px;height:120px;border-radius:8px;background:var(--color-bg-secondary);flex-shrink:0;overflow:hidden}.spotify-header-art img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.spotify-header-info{flex:1}.spotify-header-info h2{margin:0 0 4px;font-size:var(--font-headline);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.spotify-header-meta{font-size:var(--font-footnote);color:var(--color-text-secondary);display:flex;gap:12px}.spotify-selection-bar{padding:8px 16px;background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);font-size:var(--font-caption1);color:var(--color-text-secondary);display:flex;align-items:center;gap:8px}.spotify-track-list-container{flex:1;overflow-y:auto}.spotify-track-list{width:100%;border-collapse:collapse;background:var(--color-bg-primary)}.spotify-track-list thead{position:sticky;top:0;background:var(--color-bg-primary);z-index:10}.spotify-track-list th{text-align:left;padding:8px 16px;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);-webkit-user-select:none;user-select:none}.spotify-track-list td{padding:8px 16px;font-size:var(--font-footnote);border-bottom:1px solid var(--color-border);line-height:1.5}.spotify-track-list tbody tr:hover{background:var(--color-hover-bg)}.spotify-track-list tr.selected,.spotify-track-list tr.selected:hover{background:var(--color-active-bg)}.spotify-track-list .checkbox-cell{width:32px;text-align:center;padding:8px}.spotify-track-list .checkbox-cell input[type=checkbox]{cursor:pointer;width:14px;height:14px;accent-color:#0078d4}.spotify-track-list .track-number{width:40px;text-align:center;color:var(--color-text-secondary)}.spotify-track-list .track-duration{width:80px;text-align:right;color:var(--color-text-secondary)}.spotify-empty{padding:48px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-subhead);display:flex;flex-direction:column;align-items:center;gap:12px}.spotify-loading{padding:48px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-subhead);display:flex;align-items:center;justify-content:center;gap:8px}.spotify-loading .spinner{animation:spin 1s linear infinite}.spotify-search-header{padding:12px 16px;font-size:var(--font-footnote);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border)}.spotify-search-results{flex:1;overflow-y:auto}.spotify-auth-required{padding:48px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-subhead);display:flex;flex-direction:column;align-items:center;gap:16px}.spotify-auth-required a{color:#0078d4;text-decoration:none;font-weight:var(--font-weight-medium);transition:opacity .15s ease}.spotify-auth-required a:hover{opacity:.8;text-decoration:underline}.spotify-auth-required .btn-connect{margin-top:8px;padding:8px 20px;background:#1db954;color:#fff;border:none;border-radius:20px;font-size:var(--font-subhead);font-weight:var(--font-weight-medium);cursor:pointer;transition:opacity .15s ease}.spotify-auth-required .btn-connect:hover{opacity:.85}.musicbrainz-tab{display:flex;flex-direction:column;height:100%;overflow:hidden}.musicbrainz-search-bar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary)}.musicbrainz-search-bar input{flex:1;padding:6px 10px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-primary);font-size:var(--font-footnote);font-family:inherit;outline:none;transition:border-color .15s ease}.musicbrainz-search-bar input:focus{border-color:var(--color-text-secondary)}.musicbrainz-search-bar input::placeholder{color:var(--color-text-secondary)}.musicbrainz-search-bar button{padding:6px 12px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-primary);font-size:var(--font-footnote);font-family:inherit;cursor:pointer;transition:all .15s ease}.musicbrainz-search-bar button:hover{background:var(--color-hover-bg)}.musicbrainz-search-bar button:disabled{opacity:.5;cursor:not-allowed}.musicbrainz-search-bar button.icon-button{padding:6px;background:none;border:none;color:var(--color-text-secondary)}.musicbrainz-search-bar button.icon-button:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.musicbrainz-filters{display:flex;align-items:center;gap:6px;padding:8px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-primary);flex-wrap:wrap}.musicbrainz-filter-pill{padding:4px 12px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:16px;color:var(--color-text-secondary);font-size:var(--font-caption1);font-family:inherit;cursor:pointer;transition:all .15s ease}.musicbrainz-filter-pill:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.musicbrainz-filter-pill.active{background:var(--color-text-primary);color:var(--color-bg-primary);border-color:var(--color-text-primary)}.musicbrainz-error{padding:8px 16px;color:#f44;font-size:var(--font-caption1);background:#f444441a;border-bottom:1px solid rgba(244,68,68,.3)}.musicbrainz-search-header{padding:12px 16px;font-size:var(--font-footnote);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border)}.musicbrainz-search-results{flex:1;overflow-y:auto}.musicbrainz-empty{padding:48px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-subhead);display:flex;flex-direction:column;align-items:center;gap:12px}.musicbrainz-loading{padding:48px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-subhead);display:flex;align-items:center;justify-content:center;gap:8px}.musicbrainz-loading .spinner{animation:spin 1s linear infinite}.activity-header{display:flex;flex-direction:column;gap:8px;margin-bottom:1.25rem}.activity-header-row{display:flex;align-items:center;justify-content:space-between}.activity-header h1{margin:0;font-size:var(--font-headline);font-weight:var(--font-weight-semibold)}.activity-controls{display:flex;align-items:center;gap:8px}.activity-auto-toggle{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-caption1);color:var(--color-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none}.activity-auto-toggle input{margin:0;cursor:pointer}.activity-controls button{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;font-size:var(--font-caption1);font-family:inherit;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;transition:all .15s ease}.activity-controls button:hover:not(:disabled){color:var(--color-text-primary);border-color:var(--color-text-secondary)}.activity-controls button:disabled{opacity:.6;cursor:not-allowed}.activity-health{display:flex;gap:12px;flex-wrap:wrap}.activity-health-item{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-caption1);color:var(--color-text-secondary);text-transform:capitalize}.activity-health-item.up{color:#22c55e}.activity-health-item.down{color:#ef4444}.activity-health-item.unconfigured{color:#78909c}.activity-filters{display:flex;gap:4px;flex-wrap:wrap}.activity-filter-btn{padding:3px 10px;font-size:var(--font-caption2);font-family:inherit;border:1px solid var(--color-border);border-radius:12px;background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:all .15s ease}.activity-filter-btn:hover{border-color:var(--color-text-secondary);color:var(--color-text-primary)}.activity-filter-btn.active{background:var(--color-bg-secondary);color:var(--color-text-primary);border-color:var(--color-text-primary)}.activity-feed{display:flex;flex-direction:column;border:1px solid var(--color-border);border-radius:6px;overflow:hidden}.activity-event{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--color-border);font-size:var(--font-footnote);transition:background .1s ease}.activity-event:last-child{border-bottom:none}.activity-event:hover{background:var(--color-hover-bg)}.activity-event-icon{flex-shrink:0;display:flex;align-items:center}.activity-event-source{flex-shrink:0;font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.3px;min-width:64px}.activity-event-message{flex:1;min-width:0;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-event-detail{flex-shrink:0;font-size:var(--font-caption2);color:var(--color-text-secondary);max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-event-time{flex-shrink:0;font-size:var(--font-caption2);color:var(--color-text-secondary);min-width:52px;text-align:right}.activity-event.active{background:#f973160a}.activity-event.error{background:#ef44440a}.activity-error{padding:8px 12px;margin-bottom:12px;border-radius:4px;background:#ef44441a;color:#ef4444;font-size:var(--font-caption1)}.activity-empty{padding:64px 32px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-subhead);line-height:1.6}.spinning{animation:spin 1.5s linear infinite}.queues-header{display:flex;flex-direction:column;gap:8px;margin-bottom:1.25rem}.queues-header-row{display:flex;align-items:center;justify-content:space-between}.queues-header h1{margin:0;font-size:var(--font-headline);font-weight:var(--font-weight-semibold)}.queues-header button{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;font-size:var(--font-caption1);font-family:inherit;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;transition:all .15s ease}.queues-header button:hover:not(:disabled){color:var(--color-text-primary);border-color:var(--color-text-secondary)}.queues-header button:disabled{opacity:.6;cursor:not-allowed}.queues-counts{display:flex;flex-wrap:wrap;gap:6px}.queues-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:12px;font-size:var(--font-caption1);font-weight:var(--font-weight-medium)}.queues-badge.active{background:#f9731626;color:#f97316}.queues-badge.waiting{background:#3b82f626;color:#3b82f6}.queues-badge.completed{background:#22c55e26;color:#22c55e}.queues-badge.failed{background:#ef444426;color:#ef4444}.queues-job-list{display:flex;flex-direction:column;gap:6px}.queues-job-entry{border:1px solid var(--color-border);border-radius:6px;overflow:hidden}.queues-job-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--color-bg-secondary);cursor:pointer;transition:background .15s ease;border-left:3px solid transparent}.queues-job-row:hover{background:var(--color-hover-bg)}.queues-job-row.active{border-left-color:#f97316}.queues-job-row.waiting{border-left-color:#3b82f6}.queues-job-row.completed{border-left-color:#22c55e}.queues-job-row.failed{border-left-color:#ef4444}.queues-job-icon{flex-shrink:0;width:16px;height:16px}.queues-job-icon.active{color:#f97316;animation:spin 1.5s linear infinite}.queues-job-icon.waiting{color:#3b82f6}.queues-job-icon.completed{color:#22c55e}.queues-job-icon.failed{color:#ef4444}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.queues-job-info{flex:1;min-width:0}.queues-job-name{font-size:var(--font-footnote);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queues-job-meta{font-size:var(--font-caption2);color:var(--color-text-secondary);display:flex;align-items:center;gap:8px;margin-top:2px;flex-wrap:wrap}.queues-job-error{font-size:var(--font-caption2);color:#ef4444;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:400px}.queues-progress{display:flex;align-items:center;gap:6px;flex-shrink:0}.queues-progress progress{width:100px;height:6px;border-radius:3px;border:none;background:var(--color-border);overflow:hidden;appearance:none;-webkit-appearance:none}.queues-progress progress::-webkit-progress-bar{background:var(--color-border);border-radius:3px}.queues-progress progress::-webkit-progress-value{background:#f97316;border-radius:3px}.queues-progress progress::-moz-progress-bar{background:#f97316;border-radius:3px}.queues-progress-text{font-size:var(--font-caption2);color:var(--color-text-secondary);min-width:32px;text-align:right}.queues-expand-icon{flex-shrink:0;color:var(--color-text-secondary);width:14px;height:14px}.queues-job-detail{background:var(--color-bg-primary);border-top:1px solid var(--color-border);padding:12px 14px}.queues-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin-bottom:12px}.queues-detail-field{display:flex;flex-direction:column;gap:2px}.queues-detail-label{font-size:var(--font-caption2);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.4px}.queues-detail-value{font-size:var(--font-caption1);color:var(--color-text-primary);word-break:break-all}.queues-detail-value.error{color:#ef4444;font-family:Consolas,Monaco,Courier New,monospace}.queues-detail-value.badge{display:inline-block;padding:1px 6px;border-radius:3px;font-size:var(--font-caption2);font-weight:var(--font-weight-medium)}.queues-logs-section{margin-top:10px}.queues-logs-title{font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.4px;color:var(--color-text-secondary);margin-bottom:6px}.queues-logs{max-height:300px;overflow-y:auto;background:var(--color-bg-sidebar);font-family:Consolas,Monaco,Courier New,monospace;font-size:var(--font-caption1);padding:8px;border-radius:4px;border:1px solid var(--color-border)}.queues-log-line{padding:2px 0;border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);line-height:1.5}.queues-log-line:last-child{border-bottom:none}.queues-logs-loading,.queues-logs-empty{color:var(--color-text-secondary);font-size:var(--font-caption1);font-style:italic;padding:4px 0}.queues-empty{padding:64px 32px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-subhead);line-height:1.6}.queues-delete-btn{background:none;border:none;color:#888;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;flex-shrink:0}.queues-delete-btn:hover{color:#ef4444;background:#ef44441a}.settings-section{margin-bottom:1.5rem;padding:1.25rem;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg-secondary)}.settings-section h2{margin:0 0 .75rem;font-size:var(--font-subhead);font-weight:var(--font-weight-semibold)}.settings-section h3{margin:0 0 .5rem;font-size:var(--font-footnote);font-weight:var(--font-weight-semibold)}.status-row{display:flex;align-items:center;gap:8px;margin-bottom:.75rem;font-size:var(--font-footnote)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.connected{background-color:#22c55e}.status-dot.disconnected{background-color:#6b7280}.status-dot.error{background-color:#eab308}.settings-actions{display:flex;gap:8px}.settings-actions button{padding:6px 14px;font-size:var(--font-footnote);border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-primary);color:var(--color-text-primary);cursor:pointer}.settings-actions button:hover{background:var(--color-hover-bg)}.settings-actions .btn-connect{background:#2563eb;color:#fff;border-color:#2563eb}.settings-actions .btn-connect:hover{background:#1d4ed8}.settings-actions .btn-disconnect{color:#dc2626;border-color:#dc2626}.settings-actions .btn-disconnect:hover{background:#fef2f2}.settings-error{color:#dc2626;font-size:var(--font-caption1);margin-top:.5rem}.settings-note{font-size:var(--font-caption1);color:var(--color-text-secondary);margin-top:.5rem}.myo-section{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.account-info{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;font-size:var(--font-footnote)}.account-field{display:flex;gap:8px;align-items:center}.account-field-label{font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);min-width:80px}.password-form{margin-top:12px;border-top:1px solid var(--color-border);padding-top:12px}.password-form h3{margin:0 0 .75rem;font-size:var(--font-footnote);font-weight:var(--font-weight-semibold)}.pw-field{margin-bottom:12px}.pw-field label{display:block;margin-bottom:4px;font-size:var(--font-footnote);font-weight:var(--font-weight-medium)}.pw-field input{width:100%;max-width:300px;padding:6px 10px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-footnote)}.pw-error{display:block;color:#dc2626;font-size:var(--font-caption1);margin-top:4px}.password-success{color:#22c55e;font-size:var(--font-footnote);margin-top:8px;margin-bottom:0}.arl-form{display:flex;gap:8px;margin-top:8px;align-items:center}.arl-input{flex:1;padding:6px 10px;border:1px solid var(--color-border, #333);border-radius:4px;background:var(--color-bg-primary, #1a1a2e);color:var(--color-text-primary, #e0e0e0);font-size:var(--font-footnote);font-family:monospace}.arl-input::placeholder{color:var(--color-text-secondary, #666)}@media(max-width:767px){.settings-section{padding:var(--space-4)}.settings-actions{flex-direction:column}.settings-actions button{width:100%}.pw-field input{max-width:100%}.arl-form{flex-direction:column}.arl-form .arl-input{width:100%}.arl-form button{width:100%;padding:8px 14px;font-size:var(--font-footnote);border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-primary);color:var(--color-text-primary);cursor:pointer}}.admin-tenants{padding:1.5rem}.admin-tenants h2{display:flex;align-items:center;gap:.5rem;margin-bottom:1.5rem}.admin-tenants .error-msg{color:#dc2626;margin-bottom:1rem}.create-tenant-form{display:flex;gap:.5rem;margin-bottom:2rem;align-items:center}.create-tenant-form input{padding:6px 10px;border-radius:6px;border:1px solid var(--color-border);background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--font-footnote)}.create-tenant-form .slug-input{width:120px}.tenant-card{border:1px solid var(--color-border);border-radius:8px;padding:1rem;margin-bottom:1rem;background:var(--color-bg-secondary)}.tenant-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.tenant-card-header h3{margin:0}.tenant-card-header .tenant-slug{color:var(--color-text-secondary);font-size:var(--font-footnote)}.tenant-card-actions{display:flex;gap:.5rem}.tenant-card-actions button{padding:4px 8px;border-radius:4px;border:1px solid var(--color-border);background:transparent;cursor:pointer;display:flex;align-items:center;color:var(--color-text-primary)}.tenant-card-actions .btn-delete-tenant{border-color:#dc2626;color:#dc2626}.tenant-invite-form{display:flex;gap:.5rem;align-items:center}.tenant-invite-form input{flex:1;padding:5px 10px;border-radius:6px;font-size:var(--font-footnote);border:1px solid var(--color-border);background:var(--color-bg-primary);color:var(--color-text-primary)}.tenant-invite-form button{padding:5px 12px;border-radius:6px;font-size:var(--font-footnote);border:1px solid var(--color-border);background:transparent;color:var(--color-text-primary);cursor:pointer}.tenant-invite-form button:disabled{opacity:.4;cursor:default}@media(max-width:767px){.admin-tenants{padding:12px}.create-tenant-form{flex-direction:column;align-items:stretch}.create-tenant-form input,.create-tenant-form .slug-input,.create-tenant-form .btn{width:100%}.tenant-card-header{flex-direction:column;align-items:flex-start;gap:.5rem}.tenant-card-actions{width:100%}.tenant-card-actions button{flex:1;justify-content:center}.tenant-invite-form{flex-direction:column}.tenant-invite-form input,.tenant-invite-form button{width:100%}}:root{--color-bg-primary: #ffffff;--color-bg-secondary: #f5f5f5;--color-bg-sidebar: #f3f3f3;--color-text-primary: #1e1e1e;--color-text-secondary: #616161;--color-border: #e5e5e5;--color-active-bg: #e0e0e0;--color-hover-bg: #ebebeb;--font-title1: 28px;--font-title2: 22px;--font-title3: 20px;--font-headline: 17px;--font-body: 17px;--font-callout: 16px;--font-subhead: 15px;--font-footnote: 13px;--font-caption1: 12px;--font-caption2: 11px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--space-0h: 2px;--space-1: 4px;--space-1h: 6px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--gap-tight: 4px;--gap-default: 8px;--gap-loose: 16px;--gap-section: 24px}@media(prefers-color-scheme:dark){:root{--color-bg-primary: #1e1e1e;--color-bg-secondary: #252526;--color-bg-sidebar: #333333;--color-text-primary: #cccccc;--color-text-secondary: #858585;--color-border: #3e3e42;--color-active-bg: #37373d;--color-hover-bg: #2a2d2e}}[data-theme=light]{--color-bg-primary: #ffffff;--color-bg-secondary: #f5f5f5;--color-bg-sidebar: #f3f3f3;--color-text-primary: #1e1e1e;--color-text-secondary: #616161;--color-border: #e5e5e5;--color-active-bg: #e0e0e0;--color-hover-bg: #ebebeb}[data-theme=dark]{--color-bg-primary: #1e1e1e;--color-bg-secondary: #252526;--color-bg-sidebar: #333333;--color-text-primary: #cccccc;--color-text-secondary: #858585;--color-border: #3e3e42;--color-active-bg: #37373d;--color-hover-bg: #2a2d2e}body{margin:0;padding:0;background:var(--color-bg-primary);color:var(--color-text-primary);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:var(--font-body);line-height:1.47;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.login-card{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:1.25rem}.login-card .form-error{padding:8px 16px;background:#fef2f2;color:#dc2626;border-radius:6px;font-size:var(--font-footnote);text-align:center}.google-login-btn{display:inline-flex;align-items:center;padding:10px 24px;background:#fff;color:#333;border:1px solid #dadce0;border-radius:8px;font-size:var(--font-subhead);font-weight:var(--font-weight-medium);text-decoration:none;cursor:pointer;transition:background .15s,box-shadow .15s}.google-login-btn:hover{background:#f7f8f8;box-shadow:0 1px 3px #0000001a}.app-shell{display:flex;flex-direction:row;height:calc(100vh - 60px);overflow:hidden}.sidebar{flex-shrink:0;width:fit-content;min-width:48px;display:flex;flex-direction:column;background:var(--color-bg-sidebar);border-right:1px solid var(--color-border);transition:width .2s ease-in-out}.sidebar.collapsed{width:48px}.sidebar nav{flex:1;display:flex;flex-direction:column;padding:4px 0}.sidebar nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-footnote);white-space:nowrap;overflow:hidden}.sidebar nav a:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.sidebar nav a.active{background:var(--color-active-bg);color:var(--color-text-primary)}.sidebar nav a svg{flex-shrink:0}.sidebar-footer{padding:8px;border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:4px}.nav-section-label{padding:6px 12px;font-size:var(--font-caption2);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);opacity:.7}.nav-section-divider{margin:4px 8px;border:none;border-top:1px solid var(--color-border);opacity:.5}.collapse-toggle,.theme-toggle,.logout-toggle{display:flex;align-items:center;gap:12px;padding:8px 12px;background:none;border:none;color:var(--color-text-secondary);cursor:pointer;font-size:var(--font-footnote);white-space:nowrap;overflow:hidden;width:100%;text-align:left}.collapse-toggle:hover,.theme-toggle:hover,.logout-toggle:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.content-area{flex:1;overflow:hidden;background:var(--color-bg-primary);height:100%;min-height:0;display:flex;flex-direction:column}.view-container{padding:16px;color:var(--color-text-primary)}.view-container h1{margin:0 0 8px;font-size:var(--font-headline);font-weight:var(--font-weight-semibold)}.view-container p{margin:0;color:var(--color-text-secondary);font-size:var(--font-footnote)}.content-area>div{flex:1;min-height:0;overflow:auto}.content-area>.iframe-view{overflow:hidden}.tenant-switcher{padding:8px 8px 4px;border-bottom:1px solid var(--color-border)}.tenant-switcher.collapsed{display:flex;justify-content:center;padding:8px 0 4px;color:var(--color-text-secondary)}.tenant-select{width:100%;padding:6px 8px;border-radius:4px;border:1px solid var(--color-border);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-caption1);cursor:pointer}@media(max-width:767px){.sidebar,.sidebar-overlay,.mobile-header{display:none!important}.content-area{width:100%}.collapse-toggle,.theme-toggle,.logout-toggle{min-height:44px;padding:12px}.tenant-select{min-height:44px;padding:12px 8px}}@media(min-width:768px){.sidebar-overlay,.mobile-header{display:none}}@media(max-width:768px){.library-toolbar,.yc-toolbar,.ss-toolbar,.downloads-toolbar{flex-wrap:wrap;gap:.5rem}.library-filter-bar{flex-wrap:wrap}.library-filter-search{min-width:100%}}.playlist-preview{max-width:600px;margin:0 auto}.preview-header{display:flex;gap:16px;margin-bottom:24px}.album-art-preview{width:120px;height:120px;border-radius:8px;object-fit:cover}.album-details h2{margin:0 0 8px;font-size:var(--font-title3)}.album-meta{color:#666;font-size:var(--font-subhead)}.album-meta span{margin:0 4px}.placeholder-warning{color:#e67e22;font-size:var(--font-subhead);margin-top:8px}.preview-track{display:flex;align-items:center;gap:12px;padding:8px;border-bottom:1px solid #eee}.preview-track.has-placeholder{background:#fff9e6}.track-drag{cursor:grab;color:#ccc}.track-number{width:24px;text-align:center;color:#666;font-size:var(--font-subhead)}.track-image-container{position:relative}.track-preview-image{width:40px;height:40px;border-radius:4px;object-fit:cover}.placeholder-indicator .track-preview-image{border:2px solid #e67e22}.placeholder-badge{position:absolute;top:-4px;right:-4px;width:16px;height:16px;background:#e67e22;color:#fff;border-radius:50%;font-size:var(--font-caption2);display:flex;align-items:center;justify-content:center;font-weight:var(--font-weight-bold)}.track-info{flex:1}.track-title{font-weight:var(--font-weight-medium)}.track-duration{color:#666;font-size:var(--font-subhead)}.track-actions{display:flex;gap:8px}.btn-sm{padding:4px 8px;font-size:var(--font-caption1);border:1px solid #ddd;border-radius:4px;background:#fff;cursor:pointer}.btn-sm:hover{background:#f5f5f5}.btn-remove:hover{background:#fee;border-color:#fcc}.regenerate-prompt{display:flex;gap:4px}.prompt-input{width:150px;padding:4px 8px;font-size:var(--font-caption1);border:1px solid #ddd;border-radius:4px}.card-selector{margin-top:16px;padding:16px;background:#f9f9f9;border-radius:8px}.card-selector label{display:block;margin-bottom:8px;font-weight:var(--font-weight-medium)}.card-dropdown{width:100%;padding:8px;border:1px solid #ddd;border-radius:4px;font-size:var(--font-callout)}.card-warning{margin-top:12px;padding:12px;background:#fff3cd;border:1px solid #ffc107;border-radius:4px;font-size:var(--font-subhead)}.confirm-overwrite{display:block;margin-top:8px}.always-link-option{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:var(--font-subhead)}.settings-note{color:#666;font-size:var(--font-caption1)}.auto-link-notice{margin-top:16px;padding:12px;background:#d4edda;border:1px solid #28a745;border-radius:4px;font-size:var(--font-subhead);color:#155724}.upload-progress{text-align:center;padding:32px}.progress-bar-container{height:8px;background:#eee;border-radius:4px;overflow:hidden;margin:16px 0}.progress-bar{height:100%;background:#4caf50;transition:width .3s ease}.progress-details{display:flex;justify-content:space-between;margin-bottom:16px}.progress-percent{font-weight:var(--font-weight-bold)}.progress-status{color:#666}.progress-note{color:#666;font-size:var(--font-subhead)}.upload-complete{text-align:center;padding:32px;max-width:400px;margin:0 auto}.success-icon{width:64px;height:64px;background:#4caf50;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--font-title1);margin:0 auto 16px}.playlist-name{margin-bottom:24px}.card-linked-info{color:#4caf50;margin-bottom:16px}.link-card-section{margin:24px 0;padding:16px;background:#f9f9f9;border-radius:8px}.link-error{color:#dc3545;margin:8px 0}.complete-actions{display:flex;gap:12px;justify-content:center;margin-top:24px}.deep-link-note{color:#666;margin-top:16px}.preview-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px;padding-top:16px;border-top:1px solid #eee}.yoto-connect-prompt{background:#fff9e6;border:1px solid #e67e22;border-radius:8px;padding:16px;margin-top:16px;text-align:center}.yoto-connect-prompt p{margin:0 0 12px;color:#333}.connect-yoto-btn{background:#e67e22;color:#fff;border:none;border-radius:4px;padding:10px 20px;font-size:var(--font-subhead);cursor:pointer;font-weight:var(--font-weight-medium)}.connect-yoto-btn:hover{background:#d35400}.pipeline-progress{max-width:600px;margin:0 auto;padding:16px}.pipeline-header{display:flex;align-items:center;gap:12px;margin-bottom:24px}.pipeline-header h3{margin:0;font-size:var(--font-title3)}.pipeline-loading{text-align:center;padding:32px;color:#666}.pipeline-connection-error{background:#fee;border:1px solid #fcc;border-radius:4px;padding:12px;margin-bottom:16px;color:#c00;font-size:var(--font-subhead)}.pipeline-stages{display:flex;align-items:center;justify-content:center;margin-bottom:24px}.pipeline-stage-container{display:flex;align-items:center}.pipeline-stage{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 16px}.stage-icon{width:32px;height:32px;border-radius:50%;background:#eee;color:#666;display:flex;align-items:center;justify-content:center;font-weight:var(--font-weight-medium);font-size:var(--font-subhead)}.pipeline-stage.active .stage-icon,.pipeline-stage.complete .stage-icon{background:#4caf50;color:#fff}.stage-name{font-size:var(--font-caption1);color:#666;text-align:center}.pipeline-stage.active .stage-name{color:#333;font-weight:var(--font-weight-medium)}.pipeline-connector{width:40px;height:2px;background:#eee}.pipeline-connector.complete{background:#4caf50}.pipeline-progress-section{margin-bottom:16px}.progress-percent{text-align:center;font-weight:var(--font-weight-medium);margin-top:8px;color:#666}.pipeline-album-info{display:flex;flex-direction:column;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #eee}.album-artist{font-weight:var(--font-weight-medium);color:#333}.album-name{color:#666;font-size:var(--font-subhead)}.pipeline-tracks{max-height:400px;overflow-y:auto;border:1px solid #eee;border-radius:4px;margin-bottom:16px}.pipeline-track{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid #eee;min-height:36px}.pipeline-track:last-child{border-bottom:none}.pipeline-track.active{border-left:3px solid #4caf50;background:#f9fff9}.pipeline-track.failed{background:#fee;border-left:3px solid #c00;flex-wrap:wrap}.pipeline-track.completed{color:#666}.track-number{width:28px;text-align:right;color:#999;font-size:var(--font-subhead)}.track-name{flex:1;font-size:var(--font-subhead)}.track-status-icon{width:20px;text-align:center;font-size:var(--font-subhead)}.pipeline-track.completed .track-status-icon{color:#4caf50}.pipeline-track.failed .track-status-icon{color:#c00}.spinner{display:inline-block;width:12px;height:12px;border:2px solid #eee;border-top-color:#4caf50;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.track-error{width:100%;margin-top:4px;padding-left:40px;font-size:var(--font-caption1);color:#c00}.pipeline-stage-description{text-align:center;color:#666;font-size:var(--font-subhead);padding:16px;background:#f9f9f9;border-radius:4px}.intervention-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;margin-bottom:16px;background:#fff8e1;border:1px solid #ffd54f;border-radius:4px}.intervention-label{font-size:var(--font-subhead);color:#f57c00;font-weight:var(--font-weight-medium)}.intervention-actions{display:flex;gap:8px}.btn-retry-all,.btn-skip-all{padding:6px 12px;font-size:var(--font-caption1);border:none;border-radius:3px;cursor:pointer;font-weight:var(--font-weight-medium);transition:opacity .2s}.btn-retry-all{background:#2196f3;color:#fff}.btn-retry-all:hover:not(:disabled){background:#1976d2}.btn-skip-all{background:#9e9e9e;color:#fff}.btn-skip-all:hover:not(:disabled){background:#757575}.btn-retry-all:disabled,.btn-skip-all:disabled{opacity:.5;cursor:not-allowed}.track-intervention{width:100%;display:flex;gap:8px;margin-top:6px;padding-left:40px}.btn-retry,.btn-skip{padding:4px 10px;font-size:var(--font-caption1);border:none;border-radius:3px;cursor:pointer;font-weight:var(--font-weight-medium);transition:opacity .2s}.btn-retry{background:#2196f3;color:#fff}.btn-retry:hover:not(:disabled){background:#1976d2}.btn-skip{background:#9e9e9e;color:#fff}.btn-skip:hover:not(:disabled){background:#757575}.btn-retry:disabled,.btn-skip:disabled{opacity:.5;cursor:not-allowed}.pipeline-cancel-section{margin-top:16px;padding-top:16px;border-top:1px solid #eee;text-align:center}.btn-cancel-pipeline{padding:8px 16px;font-size:var(--font-subhead);background:#f44336;color:#fff;border:none;border-radius:4px;cursor:pointer;font-weight:var(--font-weight-medium);transition:background .2s}.btn-cancel-pipeline:hover:not(:disabled){background:#d32f2f}.btn-cancel-pipeline:disabled{opacity:.5;cursor:not-allowed}.btn-view-logs{margin-left:auto;padding:4px 8px;font-size:var(--font-caption1);background:transparent;color:#2196f3;border:1px solid #2196f3;border-radius:3px;cursor:pointer;font-weight:var(--font-weight-medium);transition:all .2s}.btn-view-logs:hover{background:#2196f3;color:#fff}.log-viewer{margin-top:16px;border:1px solid #333;border-radius:4px;overflow:hidden;background:#1e1e1e;max-width:100%}.log-viewer-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:#2d2d2d;border-bottom:1px solid #333}.log-viewer-title{font-size:var(--font-subhead);color:#ccc;font-family:Menlo,Monaco,Courier New,monospace}.log-viewer-controls{display:flex;gap:8px}.btn-refresh,.btn-close{padding:4px 10px;font-size:var(--font-caption1);border:none;border-radius:3px;cursor:pointer;font-weight:var(--font-weight-medium);transition:opacity .2s}.btn-refresh{background:#4caf50;color:#fff}.btn-refresh:hover:not(:disabled){background:#45a049}.btn-refresh:disabled{opacity:.5;cursor:not-allowed}.btn-close{background:#757575;color:#fff}.btn-close:hover{background:#616161}.log-viewer-content{max-height:300px;overflow-y:auto;background:#1e1e1e;color:#e0e0e0;font-family:Menlo,Monaco,Courier New,monospace;font-size:var(--font-caption1)}.log-viewer-loading,.log-viewer-error,.log-viewer-empty{padding:32px;text-align:center;color:#888}.log-viewer-error{color:#f44336}.log-entries{padding:8px 0}.log-entry{display:flex;padding:4px 12px;border-bottom:1px solid #2d2d2d}.log-entry:last-child{border-bottom:none}.log-entry:hover{background:#252525}.log-line-number{width:40px;text-align:right;color:#666;-webkit-user-select:none;user-select:none;flex-shrink:0;margin-right:12px}.log-text{flex:1;white-space:pre-wrap;word-break:break-all}.player-bar-wrapper{position:fixed;bottom:0;left:0;right:0;z-index:100}.audio-player-bar{display:flex;align-items:center;gap:12px;padding:8px 16px;height:60px;box-sizing:border-box;background:var(--color-bg-secondary);border-top:1px solid var(--color-border)}.audio-player-bar--inactive{opacity:.4;pointer-events:none}.audio-player-bar--inactive .player-btn,.audio-player-bar--inactive input[type=range]{cursor:default}.player-album-art{width:40px;height:40px;border-radius:4px;overflow:hidden;flex-shrink:0;background:var(--color-bg-primary);display:flex;align-items:center;justify-content:center}.player-album-art img{width:100%;height:100%;object-fit:cover}.player-album-art svg{color:var(--color-text-secondary)}.player-track-info{min-width:100px;max-width:200px}.player-track-name{font-size:var(--font-footnote);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.player-controls{display:flex;align-items:center;gap:4px;flex-shrink:0}.player-btn{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:6px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .15s ease}.player-btn:hover{color:var(--color-text-primary);background:var(--color-hover-bg)}.player-btn:active{transform:scale(.92)}.player-btn:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.player-btn.play-pause{color:var(--color-text-primary);padding:8px}.player-btn.play-pause:hover{background:var(--color-hover-bg)}.player-progress{flex:1;display:flex;align-items:center;gap:8px}.player-progress input[type=range]{flex:1;height:4px;-webkit-appearance:none;appearance:none;background:var(--color-border);border-radius:2px;outline:none;cursor:pointer}.player-progress input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:#2563eb;cursor:pointer;transition:transform .15s ease,background .15s ease}.player-progress input[type=range]:hover::-webkit-slider-thumb{transform:scale(1.3)}.player-progress input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#2563eb;cursor:pointer;border:none;transition:transform .15s ease,background .15s ease}.player-progress input[type=range]:hover::-moz-range-thumb{transform:scale(1.3)}.player-time{font-size:var(--font-caption2);color:var(--color-text-secondary);font-variant-numeric:tabular-nums;min-width:35px;text-align:center}.player-dismiss-btn{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:6px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .15s ease;flex-shrink:0;margin-left:4px}.player-dismiss-btn:hover{color:var(--color-text-primary);background:var(--color-hover-bg)}.player-dismiss-btn:focus-visible{outline:2px solid #2563eb;outline-offset:2px}@media(max-width:767px){.audio-player-bar--mobile{display:flex;align-items:center;gap:8px;padding:8px 12px;height:56px;cursor:pointer}.audio-player-bar--mobile .player-controls,.audio-player-bar--mobile .player-progress,.audio-player-bar--mobile .player-dismiss-btn{display:none}.audio-player-bar--mobile .player-track-info{flex:1;min-width:0}.audio-player-bar--mobile .player-btn.play-pause{width:36px;height:36px;min-width:44px;min-height:44px;flex-shrink:0;padding:12px}}.now-playing-overlay{position:fixed;inset:0;z-index:200;background:var(--color-bg-primary);display:flex;flex-direction:column;align-items:center;padding:24px;animation:slide-up .3s ease-out;will-change:transform;touch-action:pan-y}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.now-playing-close{position:absolute;top:16px;right:16px;width:44px;height:44px;background:none;border:none;cursor:pointer;color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;border-radius:50%}.now-playing-close:hover{color:var(--color-text-primary);background:var(--color-hover-bg)}.now-playing-art{margin-top:64px;width:280px;height:280px;border-radius:12px;overflow:hidden;background:var(--color-bg-secondary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.now-playing-art img{width:100%;height:100%;object-fit:cover}.now-playing-art svg{color:var(--color-text-secondary)}.now-playing-track-name{margin-top:24px;font-size:var(--font-headline);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);text-align:center;max-width:100%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.now-playing-progress{margin-top:32px;width:100%;padding:0 16px}.now-playing-progress input[type=range]{width:100%;height:4px;-webkit-appearance:none;appearance:none;background:var(--color-border);border-radius:2px;outline:none}.now-playing-progress input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:#2563eb;cursor:pointer}.now-playing-progress input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#2563eb;cursor:pointer;border:none}.now-playing-time-row{display:flex;justify-content:space-between;margin-top:4px;font-size:var(--font-caption2);color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.now-playing-controls{display:flex;align-items:center;justify-content:center;gap:32px;margin-top:24px}.now-playing-btn{background:none;border:none;cursor:pointer;color:var(--color-text-primary);width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .15s ease}.now-playing-btn:hover{background:var(--color-hover-bg)}.now-playing-btn:active{transform:scale(.92)}.now-playing-btn--primary{width:56px;height:56px;background:var(--color-hover-bg);border-radius:50%}.now-playing-secondary{display:flex;align-items:center;justify-content:center;gap:24px;margin-top:16px}.now-playing-btn--small{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .15s ease}.now-playing-btn--small:hover{color:var(--color-text-primary);background:var(--color-hover-bg)}@media(prefers-reduced-motion:reduce){.now-playing-overlay{animation:none}}.queue-panel{position:fixed;right:0;top:0;z-index:50;background:var(--color-bg-secondary);border-left:1px solid var(--color-border);display:flex;flex-direction:column}.queue-panel-collapsed{width:24px;cursor:pointer;align-items:center;padding-top:14px;color:var(--color-text-secondary);transition:background .15s ease}.queue-panel-collapsed:hover{background:var(--color-hover-bg);color:var(--color-text-primary)}.queue-strip-icon{opacity:.4}.queue-panel-collapsed:hover .queue-strip-icon{opacity:.8}.queue-panel--inactive{opacity:.3;pointer-events:none}.queue-panel-expanded{transition:width .2s ease}.queue-resize-handle{position:absolute;left:-2px;top:0;bottom:0;width:4px;cursor:col-resize;z-index:10;border-left:1px solid transparent;transition:border-color .15s ease}.queue-resize-handle:hover{border-left-color:#2563eb}.queue-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 8px;border-bottom:1px solid var(--color-border);flex-shrink:0}.queue-panel-title{display:flex;align-items:center;gap:8px;font-size:var(--font-subhead);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.queue-count-badge{font-size:var(--font-caption2);font-weight:var(--font-weight-semibold);background:var(--color-hover-bg);color:var(--color-text-secondary);border-radius:10px;padding:1px 7px}.queue-panel-actions{display:flex;align-items:center;gap:2px}.queue-header-btn{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:4px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .15s ease}.queue-header-btn:hover{color:var(--color-text-primary);background:var(--color-hover-bg)}.queue-header-btn:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.queue-track-list{flex:1;overflow-y:auto;padding:4px 0}.queue-empty{padding:24px 12px;text-align:center;color:var(--color-text-secondary);font-size:var(--font-footnote)}.queue-track{display:flex;align-items:center;padding:6px 8px 6px 4px;gap:4px;transition:background .1s ease}.queue-track:hover{background:var(--color-hover-bg)}.queue-track.active{background:#2563eb1a;border-left:2px solid #2563eb;padding-left:2px}.queue-track.queue-drag-over{border-top:2px solid #2563eb}.queue-track-drag-handle{cursor:grab;color:var(--color-text-secondary);opacity:.4;padding:2px;display:flex;align-items:center;flex-shrink:0}.queue-track:hover .queue-track-drag-handle{opacity:.8}.queue-track-drag-handle:active{cursor:grabbing}.queue-track-info{flex:1;min-width:0;cursor:pointer}.queue-track-name{font-size:var(--font-footnote);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.queue-track.active .queue-track-name{color:#2563eb;font-weight:var(--font-weight-medium)}.queue-track-remove{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:4px;display:flex;align-items:center;justify-content:center;border-radius:4px;opacity:0;transition:all .15s ease;flex-shrink:0}.queue-track:hover .queue-track-remove{opacity:1}.queue-track-remove:hover{color:#ef4444;background:#ef44441a}.content-area{margin-right:var(--queue-panel-width, 0px);transition:margin-right .2s ease}.queue-overlay{position:fixed;inset:0;z-index:150;background:var(--color-bg-primary);display:flex;flex-direction:column;animation:queue-slide-up .25s ease-out}@keyframes queue-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.queue-overlay-header{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:56px;border-bottom:1px solid var(--color-border);flex-shrink:0}.queue-header-btn--mobile{width:44px;height:44px;display:flex;align-items:center;justify-content:center}.queue-track-list--mobile{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 0}.queue-track--mobile{min-height:48px;padding:8px 16px 8px 8px}.queue-track-drag-handle--mobile{opacity:.6;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.queue-track-remove--mobile{opacity:1;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.queue-track--dragging{opacity:.7;transform:scale(.98);transition:opacity .15s ease,transform .15s ease}.queue-track-drag-handle--mobile.dragging{color:#2563eb}@media(max-width:767px){.queue-panel-collapsed{bottom:56px!important}}@media(prefers-reduced-motion:reduce){.queue-overlay{animation:none}}.admin-users{padding:16px}.admin-users h1{margin:0 0 1.25rem;font-size:var(--font-title3);font-weight:var(--font-weight-semibold)}.admin-users h2{margin:0 0 .75rem;font-size:var(--font-subhead);font-weight:var(--font-weight-semibold)}.admin-section{margin-bottom:1.5rem;padding:1.25rem;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg-secondary)}.users-table{width:100%;border-collapse:collapse;font-size:var(--font-footnote)}.users-table th{text-align:left;padding:8px 12px;border-bottom:2px solid var(--color-border);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.users-table td{padding:8px 12px;border-bottom:1px solid var(--color-border)}.role-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:var(--font-caption2);font-weight:var(--font-weight-medium)}.role-badge.admin{background:#dbeafe;color:#1e40af}.role-badge.member{background:#f3f4f6;color:#4b5563}.invite-result{margin-top:12px;padding:12px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.invite-url{flex:1;font-family:monospace;font-size:var(--font-caption1);word-break:break-all;min-width:0}.btn-generate,.btn-copy,.btn-revoke,.btn-dismiss{padding:6px 14px;font-size:var(--font-footnote);border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-primary);color:var(--color-text-primary);cursor:pointer;white-space:nowrap}.btn-generate:hover,.btn-copy:hover,.btn-revoke:hover,.btn-dismiss:hover{background:var(--color-hover-bg)}.btn-generate{background:#2563eb;color:#fff;border-color:#2563eb}.btn-generate:hover{background:#1d4ed8}.btn-copy.copied{background:#22c55e;color:#fff;border-color:#22c55e}.btn-revoke{color:#dc2626;border-color:#dc2626;padding:4px 10px;font-size:var(--font-caption1)}.btn-revoke:hover{background:#fef2f2}.btn-toggle-enable{padding:4px 10px;font-size:var(--font-caption1);border:1px solid #22c55e;border-radius:4px;background:var(--color-bg-primary);color:#22c55e;cursor:pointer}.btn-toggle-enable:hover{background:#f0fdf4}.btn-toggle-disable{padding:4px 10px;font-size:var(--font-caption1);border:1px solid #dc2626;border-radius:4px;background:var(--color-bg-primary);color:#dc2626;cursor:pointer}.btn-toggle-disable:hover{background:#fef2f2}.btn-toggle-self{padding:4px 10px;font-size:var(--font-caption1);border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-primary);color:var(--color-text-secondary);cursor:not-allowed;opacity:.5}.pending-invites{margin-top:0}.pending-invite-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--color-border);font-size:var(--font-footnote)}.pending-invite-row:last-child{border-bottom:none}.invite-token{font-family:monospace;font-size:var(--font-caption1);color:var(--color-text-secondary)}.invite-expiry{font-size:var(--font-caption1);color:var(--color-text-secondary);margin:0 8px}.invite-meta{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.admin-error{color:#dc2626;font-size:var(--font-caption1);margin-top:8px}.status-dot-sm{display:inline-block;width:8px;height:8px;border-radius:50%}.status-dot-sm.connected{background-color:#22c55e}.status-dot-sm.disconnected{background-color:#6b7280}.permissions-grid{overflow-x:auto;-webkit-overflow-scrolling:touch}.permissions-grid table{border-collapse:collapse;font-size:var(--font-caption1);min-width:max-content}.permissions-grid th,.permissions-grid td{padding:0;border:1px solid var(--color-border)}.permissions-grid .user-col{text-align:left;padding:6px 10px;font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);min-width:120px;white-space:nowrap}.permissions-grid th.tab-header{width:42px;min-width:42px;max-width:42px;height:110px;vertical-align:bottom;text-align:center;padding:0 4px 6px;font-weight:var(--font-weight-medium);color:var(--color-text-secondary);position:relative}.permissions-grid th.tab-header span{display:inline-block;writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;font-size:var(--font-caption2);text-align:center;margin:0 auto}.permissions-grid .actions-col{padding:4px 8px;white-space:nowrap;min-width:70px;text-align:center;font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);font-size:var(--font-caption2)}.permissions-grid td.perm-cell{width:42px;min-width:42px;max-width:42px;text-align:center;vertical-align:middle;padding:6px 0}.permissions-grid td.perm-cell input[type=checkbox]{cursor:pointer;width:14px;height:14px;accent-color:#2563eb}.permissions-grid td.perm-cell input[type=checkbox]:disabled{cursor:default;opacity:.7}.permissions-grid tr.admin-row{background:color-mix(in srgb,#2563eb 6%,var(--color-bg-secondary))}.permissions-grid .user-name-cell{padding:6px 10px;display:flex;align-items:center;gap:6px;min-width:120px;white-space:nowrap}.permissions-grid .admin-tag{font-size:var(--font-caption2);color:#1e40af;background:#dbeafe;border-radius:8px;padding:1px 6px}.btn-seed{padding:3px 8px;font-size:var(--font-caption2);border:1px solid #2563eb;border-radius:3px;background:var(--color-bg-primary);color:#2563eb;cursor:pointer;white-space:nowrap}.btn-seed:hover{background:#eff6ff}.btn-seed:disabled{opacity:.5;cursor:default}@media(max-width:767px){.admin-users{padding:12px}.admin-section{padding:var(--space-4)}.users-table thead{display:none}.users-table,.users-table tbody,.users-table tr,.users-table td{display:block}.users-table tr{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:6px;padding:var(--space-4);margin-bottom:var(--space-3)}.users-table td{padding:4px 0;border-bottom:none;display:flex;justify-content:space-between;align-items:center}.users-table td:before{content:attr(data-label);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);font-size:var(--font-caption1);min-width:70px}.users-table td:first-child{font-weight:var(--font-weight-semibold);font-size:var(--font-footnote)}.users-table td:last-child{margin-top:4px;padding-top:8px;border-top:1px solid var(--color-border)}.users-table .btn-toggle-enable,.users-table .btn-toggle-disable,.users-table .btn-toggle-self{width:100%}}.bottom-tab-bar{position:fixed;left:0;right:0;z-index:101;display:flex;align-items:center;justify-content:space-around;height:52px;background:var(--color-bg-sidebar);border-top:1px solid var(--color-border);box-shadow:0 -1px 4px #00000014;padding-bottom:env(safe-area-inset-bottom,0px)}.tab-bar-item{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;height:52px;min-width:44px;min-height:44px;background:none;border:none;cursor:pointer;color:var(--color-text-secondary);text-decoration:none;position:relative;transition:color .15s ease;-webkit-tap-highlight-color:transparent}.tab-bar-item.active{color:#2563eb}.tab-bar-item.active:after{content:"";position:absolute;bottom:6px;width:4px;height:4px;border-radius:50%;background:#2563eb}.more-menu-backdrop{position:fixed;inset:0;z-index:149;background:#0000004d}.more-menu-sheet{position:fixed;left:0;right:0;bottom:0;z-index:150;background:var(--color-bg-secondary);border-radius:12px 12px 0 0;max-height:60vh;overflow-y:auto;padding:8px 0;padding-bottom:env(safe-area-inset-bottom,0px);box-shadow:0 -4px 16px #00000026;animation:sheet-slide-up .2s ease-out}@keyframes sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.more-menu-item{display:flex;align-items:center;gap:12px;padding:0 16px;height:48px;min-height:44px;color:var(--color-text-primary);text-decoration:none;font-size:var(--font-footnote);border:none;background:none;width:100%;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}.more-menu-item:hover{background:var(--color-hover-bg)}.more-menu-item.active{color:#2563eb}.more-menu-divider{height:1px;background:var(--color-border);margin:4px 16px}.more-menu-section-label{padding:8px 16px 4px;font-size:var(--font-caption2);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);opacity:.7}.qc-backdrop{position:fixed;inset:0;z-index:40}.qc-container{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;flex-direction:column;background:#030712;border-bottom:1px solid #1f2937}.qc-container.qc-open{box-shadow:0 25px 50px -12px #000c}.qc-iframe{width:100%;flex:1;min-height:0;border:0}.qc-drag-handle{flex-shrink:0;height:8px;cursor:ns-resize;background:#1f293780;display:flex;align-items:center;justify-content:center}.qc-drag-handle:hover{background:#4b556380}.qc-drag-pip{width:32px;height:2px;background:#4b5563;border-radius:9999px}.qc-placeholder{flex:1;min-height:0}.service-health-banner{position:fixed;top:0;left:0;right:0;z-index:10000;display:flex;flex-direction:column;gap:0;pointer-events:none}.service-health-banner__item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#b91c1c;color:#fff;font-size:var(--font-footnote);font-family:inherit;pointer-events:auto;border-bottom:1px solid #991b1b}.service-health-banner__icon{font-size:var(--font-subhead);flex-shrink:0}.service-health-banner__text{flex:1;font-weight:var(--font-weight-medium)}.service-health-banner__dismiss{background:none;border:none;color:#ffffffb3;font-size:var(--font-headline);line-height:1;cursor:pointer;padding:0 4px;flex-shrink:0;transition:color .15s}.service-health-banner__dismiss:hover{color:#fff}*{box-sizing:border-box}body{font-family:system-ui,-apple-system,sans-serif;margin:0;padding:0}.loading{text-align:center;padding:40px;color:#666}.login-container{max-width:400px;margin:100px auto;padding:30px;background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a}.login-container h1{margin:0 0 24px;text-align:center;font-size:24px}.login-form .field{margin-bottom:16px}.login-form label{display:block;margin-bottom:6px;font-weight:500}.login-form input[type=text],.login-form input[type=password]{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:16px}.login-form input:focus{outline:none;border-color:#06c}.login-form .checkbox label{display:flex;align-items:center;gap:8px;font-weight:400}.login-form .error{color:#c00;font-size:14px;margin-top:4px}.login-form .form-error{color:#c00;background:#fff0f0;padding:10px;border-radius:4px;margin-bottom:16px}.login-form button{width:100%;padding:12px;background:#06c;color:#fff;border:none;border-radius:4px;font-size:16px;cursor:pointer}.login-form button:hover{background:#05a}.login-form button:disabled{background:#999;cursor:not-allowed}.app-container{max-width:800px;margin:0 auto}.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.app-header h1{margin:0}.header-actions{display:flex;align-items:center;gap:16px}.username{font-size:14px;color:#666}.spotify-status{padding:6px 12px;border:none;border-radius:4px;font-size:14px;cursor:pointer}.spotify-status.connected{background:#1db954;color:#fff}.spotify-status.connected:hover{background:#1aa34a}.yoto-status{padding:6px 12px;border:none;border-radius:4px;font-size:14px;cursor:pointer}.yoto-status.connected{background:#e67e22;color:#fff}.yoto-status.connected:hover{background:#d35400}.yoto-status.disconnected{background:#f5f5f5;color:#666;border:1px solid #ddd}.yoto-status.disconnected:hover{background:#eee;border-color:#ccc}.logout-btn{padding:8px 16px;background:#666;color:#fff;border:none;border-radius:4px;cursor:pointer}.logout-btn:hover{background:#555}.app-main{margin-top:24px}.app-error{background:#fff0f0;color:#c00;padding:12px;border-radius:4px;margin-bottom:16px}.spotify-connect{text-align:center;padding:60px 20px;background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000000d}.spotify-connect p{margin:0 0 20px;color:#666;font-size:16px}.connect-btn{padding:12px 24px;background:#1db954;color:#fff;border:none;border-radius:4px;font-size:16px;cursor:pointer}.connect-btn:hover{background:#1aa34a}.music-input{background:#fff;border-radius:8px;padding:24px;box-shadow:0 2px 10px #0000000d}.input-container{position:relative;display:flex;gap:8px}.input-container input{flex:1;padding:12px;border:1px solid #ddd;border-radius:4px;font-size:16px}.input-container input:focus{outline:none;border-color:#06c}.input-container input:disabled{background:#f5f5f5;cursor:not-allowed}.search-btn{padding:12px 24px;background:#06c;color:#fff;border:none;border-radius:4px;font-size:16px;cursor:pointer;white-space:nowrap}.search-btn:hover:not(:disabled){background:#05a}.search-btn:disabled{background:#999;cursor:not-allowed}.input-error{margin-top:12px;padding:10px;background:#fff0f0;color:#c00;border-radius:4px;font-size:14px}.history-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:60px;background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 8px #0000001a;max-height:300px;overflow-y:auto;z-index:10}.history-header{padding:8px 12px;background:#f5f5f5;font-size:12px;font-weight:500;color:#666;border-bottom:1px solid #eee}.history-item{padding:10px 12px;cursor:pointer;transition:background .15s}.history-item:hover{background:#f5f5f5}.tracks-view{background:#fff;border-radius:8px;padding:24px;box-shadow:0 2px 10px #0000000d}.tracks-header{display:flex;align-items:center;gap:16px;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid #eee}.back-btn{padding:8px 16px;background:#f0f0f0;border:none;border-radius:4px;cursor:pointer;font-size:14px}.back-btn:hover{background:#e0e0e0}.source-info{display:flex;align-items:center;gap:12px}.source-type{display:inline-block;padding:4px 8px;background:#e6f3ff;color:#06c;font-size:12px;font-weight:500;border-radius:4px}.source-name{font-size:18px;font-weight:500}.tracks-actions{margin-top:24px;display:flex;justify-content:flex-end}.search-view{background:#fff;border-radius:8px;padding:24px;box-shadow:0 2px 10px #0000000d}.search-header{display:flex;align-items:center;gap:16px;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid #eee}.search-query{font-size:16px;color:#666}.track-list{background:#fff;border-radius:8px;padding:16px}.track-list-title{margin:0 0 12px}.track-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #eee}.select-all-btn{padding:6px 12px;background:#f0f0f0;border:none;border-radius:4px;cursor:pointer}.select-all-btn:hover{background:#e0e0e0}.selected-count{color:#666;font-size:14px}.track-list-items{display:flex;flex-direction:column;gap:4px}.track-item{display:flex;align-items:center;gap:12px;padding:8px;background:#fafafa;border-radius:4px;-webkit-user-select:none;user-select:none}.track-item.selected{background:#e6f3ff}.track-drag{cursor:grab;padding:4px;color:#999}.track-drag:active{cursor:grabbing}.drag-handle{font-size:14px}.track-checkbox{width:18px;height:18px;cursor:pointer}.track-art{width:40px;height:40px;border-radius:4px;object-fit:cover}.track-info{flex:1;min-width:0}.track-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-artist{font-size:14px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-duration{color:#666;font-size:14px;font-variant-numeric:tabular-nums}.app-footer{margin-top:48px;padding-top:16px;border-top:1px solid #ddd}.admin-links{display:flex;gap:24px;justify-content:center}.admin-links a{color:#666;text-decoration:none;font-size:14px}.admin-links a:hover{color:#06c;text-decoration:underline}
