:root{--color-bg:#0e0e10;--color-surface-1:#16161a;--color-surface-2:#15151a;--color-surface-deep:#131316;--color-surface-base:#121216;--color-border:#26262b;--color-border-2:#2a2a31;--color-border-3:#232329;--color-hover-1:#161619;--color-hover-2:#222228;--color-accent:#3d8ad8;--color-accent-tint-10:#3d8ad81a;--color-accent-tint-12:#3d8ad81f;--color-accent-tint-16:#3d8ad829;--color-accent-tint-32:#3d8ad852;--color-accent-light:#9ac2eb;--color-spotify:#1db954;--color-text-primary:#f4f4f6;--color-text-primary-2:#f0f0f2;--color-text-primary-3:#e7e7ea;--color-text-muted:#83838a;--color-text-muted-2:#7a7a82;--color-text-muted-3:#6a6a72;--color-danger:#e0635f;--font-family:"Schibsted Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-tabular:tabular-nums;--radius-cover:9px;--radius-field:12px;--radius-pill:21px;--radius-round:50%;--radius-menu:14px;--shadow-card:0 6px 18px #0000006b;--shadow-menu:0 16px 40px #0000008c;--shadow-modal:0 24px 70px #0009;--shadow-queue:-24px 0 60px #00000073;--spacing-side:clamp(16px, 4.5vw, 40px);--spacing-gap:clamp(16px, 2vw, 24px);--player-bar-height:74px;--toolbar-control-height:38px;--z-player-bar:900;--z-queue-panel:910;--z-device-picker:920;--z-modal:1000;--z-artist-overlay:1050;--z-sheet:1060;--z-toast:1100}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background:var(--color-bg);color:var(--color-text-primary);min-height:100vh}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes eqbar{0%,to{transform:scaleY(.3)}50%{transform:scaleY(1)}}@keyframes qflash{0%{background:#1eb95433}to{background:0 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}.loading{color:#888;justify-content:center;align-items:center;height:100vh;font-size:1.2rem;display:flex}.login-page{flex-direction:column;justify-content:center;align-items:center;gap:1rem;height:100vh;display:flex}.login-page h1{color:#1db954;font-size:3rem}.login-button{color:#fff;background:#1db954;border-radius:2rem;padding:.8rem 2rem;font-size:1.1rem;font-weight:600;text-decoration:none;transition:background .2s;display:inline-block}.login-button:hover{background:#1ed760}.app{max-width:1180px;padding:calc(1rem + env(safe-area-inset-top,0px)) var(--spacing-side) 5rem;margin:0 auto}.app:before{content:"";height:env(safe-area-inset-top,0px);background:color-mix(in srgb, var(--color-bg) 93%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:40;pointer-events:none;position:fixed;top:0;left:0;right:0}.app-header{justify-content:space-between;align-items:center;padding:1rem 0;display:flex}.app-logo{align-items:center;gap:11px;display:flex}.app-logo-mark{align-items:flex-end;gap:2.5px;display:flex}.app-logo-mark span{border-radius:1.5px;width:5px;display:block}.app-logo-mark span:first-child{background:var(--color-accent);height:22px}.app-logo-mark span:nth-child(2){background:#3a3a42;height:15px}.app-logo-mark span:nth-child(3){background:#5a5a64;height:27px}.app-logo-word{letter-spacing:-.02em;color:var(--color-text-primary);font-size:clamp(21px,2.4vw,25px);font-weight:700;line-height:1}.profile-wrapper{position:relative}.profile-avatar-btn{cursor:pointer;background:#282828;border:2px solid #444;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;padding:0;transition:border-color .2s;display:flex;overflow:hidden}.profile-avatar-btn:hover{border-color:#1db954}.profile-avatar-img{object-fit:cover;width:100%;height:100%}.profile-avatar-fallback{fill:#aaa;width:22px;height:22px}.profile-menu{z-index:100;background:#282828;border:1px solid #444;border-radius:8px;min-width:200px;padding:.5rem 0;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 4px 16px #00000080}.profile-menu-name{color:#fff;border-bottom:1px solid #333;margin-bottom:.25rem;padding:.5rem 1rem;font-weight:600}.profile-menu-item{color:#b3b3b3;text-align:left;cursor:pointer;background:0 0;border:none;width:100%;padding:.5rem 1rem;font-size:.9rem;text-decoration:none;transition:background .15s,color .15s;display:block}.profile-menu-item:hover{color:#fff;background:#333}.profile-menu-item:disabled{opacity:.6;cursor:not-allowed}.profile-menu-logout{border-top:1px solid #333;margin-top:.25rem;padding-top:.5rem}.profile-menu-message{color:#1db954;padding:.25rem 1rem;font-size:.8rem}.profile-menu-sync-status{color:#888;padding:.25rem 1rem;font-size:.75rem}.auto-sync-toast{color:#000;text-align:center;background:#1db954;padding:.4rem 1rem;font-size:.85rem;font-weight:500}.update-banner{left:50%;bottom:calc(var(--player-bar-height) + 16px + env(safe-area-inset-bottom,0px));z-index:var(--z-toast);background:var(--color-surface-1);border:1px solid var(--color-border);border-radius:var(--radius-pill);max-width:calc(100vw - 32px);box-shadow:var(--shadow-menu);color:var(--color-text-primary);font:500 14px/1 var(--font-family);align-items:center;gap:14px;padding:10px 12px 10px 18px;display:flex;position:fixed;transform:translate(-50%)}.update-banner-text{white-space:nowrap}.update-banner-actions{align-items:center;gap:6px;display:flex}.update-banner-reload{background:var(--color-accent);color:#fff;border-radius:var(--radius-pill);font:600 14px/1 var(--font-family);cursor:pointer;border:none;padding:9px 18px;transition:filter .15s}.update-banner-reload:hover{filter:brightness(1.08)}.update-banner-dismiss{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:6px 8px;font-size:15px;line-height:1;transition:color .15s}.update-banner-dismiss:hover{color:var(--color-text-primary)}.tabs{flex-wrap:wrap;gap:7px;padding:4px 0 0;display:flex}.tab{font:500 14px/1 var(--font-family);color:#a0a0a8;background:var(--color-surface-1);border:1px solid var(--color-border);cursor:pointer;border-radius:22px;padding:9px 17px;transition:color .15s,background .15s,border-color .15s}.tab:hover:not(.is-active){color:var(--color-text-primary);border-color:var(--color-border-2)}.tab.is-active{color:#fff;background:var(--color-accent);border-color:var(--color-accent);font-weight:600}.list-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:4px;padding:18px 0 0;display:flex}.search-wrapper{flex:1;min-width:160px;max-width:360px;position:relative}.search-icon{color:var(--color-text-muted-3);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search-input{box-sizing:border-box;width:100%;height:var(--toolbar-control-height);background:var(--color-surface-1);color:var(--color-text-primary-2);border:1px solid var(--color-border);font:400 13px/1 var(--font-family);border-radius:9px;outline:none;padding:0 34px;transition:border-color .15s}.search-input::placeholder{color:var(--color-text-muted-3)}.search-input:focus{border-color:var(--color-accent)}.search-clear{width:24px;height:24px;color:var(--color-text-muted-2);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:1.1rem;line-height:1;transition:background .15s,color .15s;display:flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.search-clear:hover{background:var(--color-hover-2);color:#fff}.toolbar-btn{box-sizing:border-box;height:var(--toolbar-control-height);background:var(--color-surface-1);color:#dcdce0;border:1px solid var(--color-border);font:500 13px/1 var(--font-family);cursor:pointer;border-radius:9px;flex:none;align-items:center;gap:7px;padding:0 12px;transition:color .15s,border-color .15s;display:flex}.toolbar-btn:hover{color:#fff;border-color:var(--color-border-2)}.sort-menu{flex:none;position:relative}.sort-menu__btn{box-sizing:border-box;height:var(--toolbar-control-height);background:var(--color-surface-1);color:#c4c4ca;border:1px solid var(--color-border);font:500 13px/1 var(--font-family);cursor:pointer;border-radius:9px;align-items:center;gap:7px;padding:0 11px;transition:color .15s,border-color .15s;display:flex}.sort-menu__btn:hover{color:#fff;border-color:var(--color-border-2)}.sort-menu__icon{flex:none}.sort-menu__caret{color:var(--color-text-muted-2);flex:none;margin-left:1px}.sort-menu__list{background:var(--color-surface-1);border:1px solid var(--color-border-2);width:212px;box-shadow:var(--shadow-menu);z-index:45;border-radius:12px;padding:6px;position:absolute;top:46px;right:0}.sort-menu__item{color:#b6b6bd;width:100%;font:400 13px/1 var(--font-family);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:9px 11px;transition:background .12s,color .12s;display:flex}.sort-menu__item:hover{background:var(--color-hover-2);color:#fff}.sort-menu__item.is-active{color:var(--color-accent-light);font-weight:600}.jump-bar{top:env(safe-area-inset-top,0px);z-index:30;margin:16px calc(-1 * var(--spacing-side)) 0;background:color-mix(in srgb, var(--color-bg) 93%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid #1c1c21;position:sticky}.jump-bar__inner{padding:13px var(--spacing-side);scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;display:flex;overflow-x:auto}.jump-bar__inner::-webkit-scrollbar{display:none}.jump-chip{font:500 13px/1 var(--font-family);color:#c4c4ca;border:1px solid var(--color-border-2);cursor:pointer;white-space:nowrap;background:#1b1b20;border-radius:18px;flex:none;padding:10px 16px;transition:background .15s,border-color .15s,color .15s}.jump-chip:hover{color:#fff;border-color:var(--color-accent)}.jump-chip.is-active{color:var(--color-accent-light);background:var(--color-accent-tint-16);border-color:color-mix(in srgb, var(--color-accent) 55%, transparent);font-weight:600}.shelf-recent{padding:20px 0 0}.shelf-recent__title{font:600 16px/1 var(--font-family);color:var(--color-text-primary-2);margin-bottom:13px}.shelf-recent__row{scrollbar-width:none;-webkit-overflow-scrolling:touch;margin:0 calc(-1 * var(--spacing-side));padding:0 var(--spacing-side) 2px;gap:14px;display:flex;overflow-x:auto}.shelf-recent__row::-webkit-scrollbar{display:none}.shelf-recent__cell{flex:none;width:128px}.shelf-recent__cell .lib-tile__play{width:36px;height:36px}.shelf-section{padding:26px 0 0}.shelf-section__header{cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:0 0 14px;display:flex}.shelf-section__chevron{color:#9a9aa2;flex:none;transition:transform .18s}.shelf-section__chevron.is-collapsed{transform:rotate(-90deg)}.shelf-section__title{font:600 17px/1 var(--font-family);color:var(--color-text-primary-2)}.shelf-section__count{font:500 13px/1 var(--font-family);color:var(--color-text-muted-3)}.shelf-grid{gap:var(--spacing-gap) clamp(12px, 1.6vw, 18px);grid-template-columns:repeat(auto-fill,minmax(clamp(110px,25vw,158px),1fr));display:grid}.lib-tile{cursor:pointer;border-radius:var(--radius-field);margin:-8px;padding:8px;transition:background .15s}.lib-tile:hover{background:var(--color-hover-1)}.lib-tile__cover{aspect-ratio:1;border-radius:var(--radius-cover);background:var(--color-surface-2);box-shadow:var(--shadow-card);position:relative;overflow:hidden}.lib-tile__img{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.lib-tile__placeholder{justify-content:center;align-items:center;font-size:2rem;display:flex}.lib-tile__play{background:var(--color-accent);color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;padding:0;transition:transform .12s,opacity .16s;display:flex;position:absolute;bottom:9px;right:9px;box-shadow:0 5px 14px #00000080}.lib-tile__play:hover{transform:scale(1.12)}.lib-tile__name{font:600 13px/1.25 var(--font-family);color:var(--color-text-primary-2);white-space:nowrap;text-overflow:ellipsis;padding-top:10px;overflow:hidden}.lib-tile__sub{font:400 11px/1.3 var(--font-family);color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;overflow:hidden}@media (hover:hover) and (pointer:fine) and (width>=821px){.lib-tile__play{opacity:0;pointer-events:none}.lib-tile:hover .lib-tile__play,.lib-tile:focus-within .lib-tile__play,.lib-tile__play:focus-visible{opacity:1;pointer-events:auto}}.flat-grid{padding:18px 0 0}.flat-grid__hint{font:400 13px/1 var(--font-family);color:#8a8a92;margin-bottom:16px}.shelf-skeleton{padding:20px 0 0}.skel-tile__cover{aspect-ratio:1;border-radius:var(--radius-cover);background:var(--color-surface-2)}.skel-tile__name,.skel-tile__sub{background:var(--color-surface-2);border-radius:4px;height:11px;margin-top:10px}.skel-tile__sub{width:60%;margin-top:6px}.skel-tile__cover,.skel-tile__name,.skel-tile__sub{animation:1.4s ease-in-out infinite skel-pulse}@keyframes skel-pulse{0%,to{opacity:.55}50%{opacity:1}}.library-empty{text-align:center;flex-direction:column;align-items:center;gap:1rem;padding:64px 1rem;display:flex}.library-empty__text{font:400 15px/1.4 var(--font-family);color:var(--color-text-muted)}.library-empty__btn{background:var(--color-accent);color:#fff;border-radius:var(--radius-pill);font:600 14px/1 var(--font-family);cursor:pointer;border:none;align-items:center;gap:8px;padding:11px 20px;transition:filter .15s;display:inline-flex}.library-empty__btn:hover:not(:disabled){filter:brightness(1.08)}.library-empty__btn:disabled{opacity:.6;cursor:not-allowed}.genre-tag{color:#ffffff73;background:#ffffff14;border-radius:.8rem;padding:.15rem .5rem;font-size:.7rem}.modal-overlay{z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-content{background:#1e1e1e;border-radius:12px;flex-direction:column;width:100%;max-width:480px;max-height:80vh;display:flex;overflow:hidden}.modal-header{border-bottom:1px solid #333;justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.modal-title{font-size:1.1rem;font-weight:600}.modal-close{color:#888;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.2rem .5rem;font-size:1.5rem;line-height:1}.modal-close:hover{color:#fff;background:#333}.modal-body{overscroll-behavior:contain;flex-direction:column;flex:1;min-height:0;padding:1.25rem;display:flex;overflow-y:auto}.genre-manager-list{flex-direction:column;gap:.4rem;margin-bottom:1rem;display:flex}.genre-manager-item{background:#282828;border-radius:8px;justify-content:space-between;align-items:center;padding:.5rem .75rem;font-size:.9rem;display:flex}.genre-manager-delete{color:#666;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.2rem .5rem;font-size:1.2rem;transition:all .2s}.genre-manager-delete:hover{color:#e74c3c;background:#e74c3c26}.genre-manager-empty{color:#666;text-align:center;padding:1rem;font-size:.85rem}.genre-manager-add{gap:.5rem;display:flex}.genre-manager-add input{color:#e0e0e0;background:#282828;border:1px solid #444;border-radius:8px;flex:1;padding:.5rem .75rem;font-size:.9rem}.genre-manager-add input::placeholder{color:#666}.genre-manager-add button{color:#fff;cursor:pointer;background:#1db954;border:none;border-radius:8px;padding:.5rem 1rem;font-size:.9rem;font-weight:600;transition:background .2s}.genre-manager-add button:hover:not(:disabled){background:#1ed760}.genre-manager-add button:disabled{opacity:.5;cursor:not-allowed}.album-genre-chips{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.album-genre-chip{color:#ccc;cursor:pointer;background:#282828;border:1px solid #444;border-radius:1.2rem;padding:.4rem .9rem;font-size:.85rem;transition:all .2s}.album-genre-chip:hover{color:#fff;border-color:#1db954}.album-genre-chip.selected{color:#fff;background:#1db954;border-color:#1db954}.album-genre-add{gap:.5rem;display:flex}.album-genre-add input{color:#e0e0e0;background:#282828;border:1px solid #444;border-radius:1.2rem;flex:1;padding:.4rem .75rem;font-size:.85rem}.album-genre-add input::placeholder{color:#666}.album-genre-add button{color:#1db954;cursor:pointer;background:#282828;border:1px solid #444;border-radius:50%;padding:.4rem .7rem;font-size:1rem;line-height:1;transition:all .2s}.album-genre-add button:hover:not(:disabled){color:#fff;background:#1db954}.album-genre-add button:disabled{opacity:.5;cursor:not-allowed}.tracklist-header{border-bottom:1px solid #333;align-items:flex-start;gap:1rem;margin-bottom:.5rem;padding-bottom:.75rem;display:flex}.tracklist-close{flex-shrink:0;margin-left:auto}.tracklist-cover{object-fit:cover;border-radius:4px;flex-shrink:0;width:120px;height:120px}.tracklist-meta{min-width:0}.tracklist-title{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:1rem;font-weight:600;overflow:hidden}.tracklist-artist{color:#b3b3b3;margin-top:.2rem;font-size:.85rem}.tracklist-stats{color:#999;margin-top:.25rem;font-size:.8rem}.episode-sort-select{max-width:12rem;margin-top:.5rem}.tracklist-genres{flex-wrap:wrap;align-items:center;gap:.3rem;margin-top:.4rem;display:flex}.tracklist-genre-edit-btn{color:#ffffff4d;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:.15rem;transition:color .15s;display:flex}.tracklist-genre-edit-btn:hover{color:#ffffffb3}.tracklist-genre-editor{border-bottom:1px solid #333;margin-bottom:.5rem;padding:.75rem 0}.tracklist-genre-editor .album-genre-chips{margin-bottom:.5rem}.track-list-loading{text-align:center;color:#999;padding:1rem}.track-list{flex-direction:column;flex:1;gap:2px;min-height:0;display:flex;overflow-y:auto}.track-item{border-radius:4px;align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.track-item:hover{background:#282828}.track-item.clickable{cursor:pointer}.track-item.playing{background:#1db9541a}.track-item.playing .track-number,.track-item.playing .track-name{color:#1db954}.track-number{color:#999;text-align:right;min-width:1.5rem;font-size:.8rem}.track-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.track-name{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.track-artist{color:#999;white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.track-duration{color:#999;text-align:right;flex-shrink:0;min-width:3em;font-size:.8rem}.popularity-bar{background:#ffffff1f;border-radius:2px;flex-shrink:0;width:40px;height:4px;overflow:hidden}.popularity-bar-fill{background:#1db954;border-radius:2px;height:100%}@media (width<=600px){.popularity-bar{width:28px}}.track-item.episode-item .track-name{white-space:normal;text-overflow:clip;overflow:visible}.episode-progress{background:#404040;border-radius:1px;height:2px;margin-top:4px;overflow:hidden}.episode-progress-bar{background:#1db954;height:100%}.episode-fully-played{color:#1db954;text-transform:uppercase;letter-spacing:.05em;margin-top:2px;font-size:.7rem;display:inline-block}.modal-overlay.modal-overlay--detail{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#000000a8}.modal-overlay--detail .modal-content--detail{background:var(--color-surface-1);border:1px solid var(--color-border);width:min(540px,100%);max-width:min(540px,100%);max-height:88vh;box-shadow:var(--shadow-modal);border-radius:16px;align-self:center;position:relative}.modal-content--detail .modal-body{padding:0;overflow:hidden}.detail-controls{z-index:5;gap:6px;display:flex;position:absolute;top:14px;right:14px}.detail-icon-btn{color:#c4c4ca;cursor:pointer;background:#141418b3;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;padding:0;transition:background .15s,color .15s;display:flex}.detail-icon-btn:hover{color:#fff;background:#26262e}.detail-menu-wrap{position:relative}.detail-menu{width:210px;box-shadow:var(--shadow-menu);z-index:8;background:#1c1c21;border:1px solid #2c2c33;border-radius:12px;padding:6px;position:absolute;top:38px;right:0}.detail-menu-item{width:100%;color:var(--color-text-primary-3);font:500 13px/1 var(--font-family);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;display:flex}.detail-menu-item--danger{color:var(--color-danger)}.detail-menu-item--danger:hover{background:#e0635f1f}.detail-header{gap:clamp(14px,3vw,20px);padding:clamp(20px,4vw,26px) clamp(20px,4vw,26px) 16px;display:flex}.detail-cover{object-fit:cover;border-radius:8px;flex:none;width:clamp(96px,26vw,132px);height:clamp(96px,26vw,132px);box-shadow:0 8px 22px #00000080}.detail-meta{flex:1;min-width:0;padding-top:2px}.detail-title{font:700 clamp(19px, 3.4vw, 23px)/1.15 var(--font-family);color:var(--color-text-primary);letter-spacing:-.01em}.detail-artist{font:500 14px/1.2 var(--font-family);color:var(--color-text-muted-2);text-align:left;background:0 0;border:none;margin-top:4px;padding:0;display:inline-block}.detail-artist--link{color:#a7c6e6;cursor:pointer}.detail-artist--link:hover{text-decoration:underline}.detail-sub{font:400 12px/1.2 var(--font-family);color:var(--color-text-muted-2);margin-top:6px}.detail-genres{flex-wrap:wrap;align-items:center;gap:6px;margin-top:11px;display:flex}.detail-chip{font:500 11px/1 var(--font-family);color:#a7c6e6;background:#3d8ad826;border:1px solid #3d8ad84d;border-radius:14px;padding:5px 11px}.detail-chip-edit{color:#8a8a92;cursor:pointer;background:0 0;border:1px solid #2e2e35;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;padding:0;transition:border-color .15s,color .15s;display:flex}.detail-chip-edit:hover{border-color:var(--color-accent);color:var(--color-accent)}.detail-genre-editor{background:#121215;border:1px solid #24242a;border-radius:12px;margin:0 clamp(20px,4vw,26px) 4px;padding:14px}.detail-genre-editor__label{font:600 11px/1 var(--font-family);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted-2);margin-bottom:11px}.detail-genre-options{flex-wrap:wrap;gap:7px;display:flex}.detail-genre-option{font:500 12px/1 var(--font-family);color:#9a9aa2;cursor:pointer;background:0 0;border:1px solid #2e2e35;border-radius:15px;padding:7px 13px}.detail-genre-option.selected{color:#fff;background:var(--color-accent);border-color:var(--color-accent);font-weight:600}.detail-actions{align-items:center;gap:10px;padding:12px clamp(20px,4vw,26px) 14px;display:flex}.detail-play-all{background:var(--color-accent);color:#fff;font:600 14px/1 var(--font-family);cursor:pointer;border:none;border-radius:22px;align-items:center;gap:8px;padding:11px 22px;transition:transform .15s;display:flex}.detail-play-all:hover{transform:scale(1.03)}.detail-shuffle{color:#9a9aa2;cursor:pointer;background:0 0;border:1px solid #2a2a31;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;padding:0;transition:background .15s,border-color .15s,color .15s;display:flex}.detail-shuffle.active{color:var(--color-accent);background:#3d8ad829;border-color:#3d8ad866}.detail-actions__spacer{flex:1}.detail-count{font:400 12px/1 var(--font-family);color:var(--color-text-muted-2);font-variant-numeric:tabular-nums}.detail-tracks{overscroll-behavior:contain;flex:1;min-height:0;padding:0 clamp(12px,3vw,18px) 16px;overflow-y:auto}.detail-tracks::-webkit-scrollbar{width:8px}.detail-tracks::-webkit-scrollbar-thumb{background:#2a2a31;border-radius:8px}.detail-track{border-radius:8px;align-items:center;gap:12px;padding:9px 10px;display:flex}.detail-track.clickable{cursor:pointer}.detail-track:hover{background:#202027}.detail-track.playing{background:#3d8ad81a}.detail-track__num{width:26px;font:400 12px/1 var(--font-family);color:#6f6f78;font-variant-numeric:tabular-nums;flex:none;justify-content:center;align-items:center;display:flex}.detail-track__info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.detail-track__name{font:500 14px/1.3 var(--font-family);color:#ecedef;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.detail-track.playing .detail-track__name{color:var(--color-accent)}.detail-track__artist{font:400 12px/1.2 var(--font-family);color:var(--color-text-muted-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.detail-track__dur{text-align:right;width:38px;font:400 12px/1 var(--font-family);color:var(--color-text-muted-2);font-variant-numeric:tabular-nums;flex:none}.detail-pop{background:#2a2a30;border-radius:3px;flex:none;width:42px;height:4px;overflow:hidden}.detail-pop__fill{background:#4a4a55;border-radius:3px;height:100%}.detail-tracks__loading{text-align:center;color:var(--color-text-muted-2);font:400 13px/1 var(--font-family);padding:1rem}.detail-eq{align-items:flex-end;gap:2px;height:14px;display:flex}.detail-eq i{background:var(--color-accent);transform-origin:bottom;width:2.5px;height:100%}.detail-eq i:first-child{animation:.9s ease-in-out infinite eqA}.detail-eq i:nth-child(2){animation:.9s ease-in-out infinite eqB}.detail-eq i:nth-child(3){animation:.9s ease-in-out infinite eqC}@keyframes eqA{0%,to{transform:scaleY(.35)}50%{transform:scaleY(1)}}@keyframes eqB{0%,to{transform:scaleY(.7)}50%{transform:scaleY(.25)}}@keyframes eqC{0%,to{transform:scaleY(.45)}50%{transform:scaleY(.85)}}@media (prefers-reduced-motion:reduce){.detail-eq i{animation:none;transform:scaleY(.6)}}@media (width<=600px){.app-header{padding:.5rem 0}.tracklist-cover{width:80px;height:80px}.modal-content{border-radius:12px 12px 0 0;align-self:flex-end;max-width:100%;max-height:90dvh}.list-toolbar{gap:8px}.toolbar-btn__label{display:none}}.scroll-top-btn{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#b3b3b3;cursor:pointer;z-index:90;background:#282828d9;border:1px solid #444;border-radius:20px;align-items:center;gap:.35rem;padding:.4rem 1.2rem;font-size:.8rem;line-height:1;transition:opacity .25s,color .15s,border-color .15s;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #0006}.scroll-top-btn:hover{color:#fff;border-color:#666}.scroll-top-btn:active{transform:translate(-50%)scale(.95)}.app:has(.player-bar) .scroll-top-btn{bottom:75px}@media (width<=600px){.scroll-top-btn{bottom:20px}.app:has(.player-bar) .scroll-top-btn{bottom:130px}}.player-bar{background:var(--color-surface-deep);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:var(--z-player-bar);border-top:1px solid #232328;position:fixed;bottom:0;left:0;right:0}.player-bar__inner{flex-wrap:wrap;align-items:center;gap:10px clamp(12px,2vw,22px);max-width:1180px;margin:0 auto;padding:11px clamp(12px,4.5vw,40px);display:flex}.player-bar__now{flex:0 clamp(190px,22vw,300px);align-items:center;gap:11px;min-width:0;display:flex}.player-bar__cover{object-fit:cover;border-radius:7px;flex:none;width:46px;height:46px;box-shadow:0 3px 9px #0006}.player-bar__cover--clickable{cursor:pointer;transition:opacity .15s}.player-bar__cover--clickable:hover{opacity:.85}.player-bar__meta{flex:1;min-width:0}.player-bar__track{font:600 13px/1.25 var(--font-family);color:var(--color-text-primary-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.player-bar__artist{font:400 12px/1.3 var(--font-family);color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.player-bar__add{flex:none;align-items:center;gap:2px;display:flex;position:relative}.player-bar__transport{color:#c4c4ca;flex:none;justify-content:center;align-items:center;gap:14px;display:flex}.player-bar__transport--narrow{flex:100%;gap:22px;padding:2px 0}.player-bar__progress{flex:140px;align-items:center;gap:10px;min-width:120px;display:flex}.player-bar__time{font:400 11px/1 var(--font-family);color:var(--color-text-muted-2);font-variant-numeric:var(--font-tabular);flex:none;min-width:30px}.player-bar__time--pos{color:#9a9aa2;text-align:right}.player-seek{cursor:pointer;touch-action:none;flex:1;padding:9px 0}.player-seek__track{background:#2a2a30;border-radius:3px;height:4px;position:relative}.player-seek__fill{background:var(--color-accent);border-radius:3px;height:100%;position:relative}.player-seek__thumb{opacity:0;background:#fff;border-radius:50%;width:11px;height:11px;transition:opacity .14s;position:absolute;top:50%;right:-5px;transform:translateY(-50%);box-shadow:0 1px 5px #0000008c}.player-seek:hover .player-seek__thumb{opacity:1}.player-bar__aux{color:#8a8a92;flex:none;align-items:center;gap:6px;display:flex}.player-ctrl{color:#8a8a92;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;line-height:0;transition:color .15s,transform .1s;display:flex}.player-ctrl--strong{color:#dadade}.player-ctrl:hover{color:var(--color-text-primary-2)}.player-ctrl--strong:hover{color:#fff}.player-ctrl:active{transform:scale(.9)}.player-ctrl--active,.player-ctrl--active:hover{color:var(--color-accent)}.player-play{background:var(--color-accent);color:#fff;cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:42px;height:42px;padding:0;transition:transform .12s;display:flex}.player-play:hover{transform:scale(1.06)}.player-play:active{transform:scale(.96)}.player-iconbtn{color:#8a8a92;cursor:pointer;background:0 0;border:none;border-radius:7px;justify-content:center;align-items:center;padding:6px;line-height:0;transition:color .15s,background .15s;display:flex}.player-iconbtn:hover{color:var(--color-text-primary-2)}.player-iconbtn--on,.player-iconbtn--add:hover{color:var(--color-accent)}.player-iconbtn--remove:hover{color:var(--color-danger)}.add-to-playlist-popover{z-index:1000;background:#282828;border:1px solid #444;border-radius:8px;flex-direction:column;width:min(280px,100vw - 1rem);max-height:360px;display:flex;position:fixed;bottom:60px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000080}.add-to-playlist-search{color:#e0e0e0;background:#333;border:none;border-bottom:1px solid #444;border-radius:8px 8px 0 0;outline:none;padding:.6rem .75rem;font-size:.85rem}.add-to-playlist-search::placeholder{color:#888}.add-to-playlist-list{flex:1;padding:.25rem 0;overflow-y:auto}.add-to-playlist-item{color:#e0e0e0;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.6rem;width:100%;padding:.45rem .75rem;font-size:.82rem;transition:background .15s;display:flex}.add-to-playlist-item:hover{background:#333}.add-to-playlist-img{object-fit:cover;border-radius:4px;flex-shrink:0;width:32px;height:32px}.add-to-playlist-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.add-to-playlist-empty{text-align:center;color:#888;padding:1rem;font-size:.85rem}.player-device-btn{color:#8a8a92;cursor:pointer;font:500 12px/1 var(--font-family);background:0 0;border:none;border-radius:7px;flex:none;align-items:center;gap:6px;max-width:160px;padding:6px 8px;transition:color .15s,background .15s;display:flex}.player-device-btn:hover{color:var(--color-text-primary-2);background:#ffffff0f}.player-device-btn__name{color:var(--color-accent);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.eq{flex:none;align-items:flex-end;display:flex}.eq i{background:var(--color-accent);transform-origin:bottom;border-radius:2px}.eq--lg{gap:3px;width:24px;height:22px}.eq--lg i{width:3.5px;height:100%}.eq--lg i:first-child{animation:.8s ease-in-out infinite eqbar}.eq--lg i:nth-child(2){animation:1.1s ease-in-out -.4s infinite eqbar}.eq--lg i:nth-child(3){animation:.7s ease-in-out -.2s infinite eqbar}.eq--lg i:nth-child(4){animation:1s ease-in-out -.6s infinite eqbar}.eq--sm{gap:2px;width:15px;height:14px}.eq--sm i{width:2.5px;height:100%}.eq--sm i:first-child{animation:.8s ease-in-out infinite eqbar}.eq--sm i:nth-child(2){animation:1.1s ease-in-out -.4s infinite eqbar}.eq--sm i:nth-child(3){animation:.7s ease-in-out -.2s infinite eqbar}@media (prefers-reduced-motion:reduce){.eq i{transform:scaleY(.6);animation:none!important}}.device-scrim{z-index:var(--z-device-picker);background:0 0;position:fixed;inset:0}.device-scrim--dim{background:#00000080}.device-menu{z-index:var(--z-device-picker);background:var(--color-surface-1);border:1px solid var(--color-border-2);position:fixed}.device-menu--popover{border-radius:var(--radius-menu);width:272px;padding:7px;bottom:84px;right:clamp(12px,4.5vw,40px);box-shadow:0 18px 44px #0009}.device-menu--sheet{border-radius:16px;padding:8px;bottom:14px;left:12px;right:12px;box-shadow:0 -10px 50px #0009}.device-menu__head{border-bottom:1px solid var(--color-border-3);justify-content:space-between;align-items:center;margin-bottom:4px;padding:8px 11px 9px;display:flex}.device-menu__label{font:600 11px/1 var(--font-family);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted-3)}.device-menu__connect{font:500 11px/1 var(--font-family);color:var(--color-text-muted-2);align-items:center;gap:6px;display:flex}.device-menu__dot{background:var(--color-spotify);border-radius:50%;width:7px;height:7px}.device-menu__empty{text-align:center;font:400 13px/1.4 var(--font-family);color:var(--color-text-muted-2);padding:18px 11px}.device-row{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:9px;align-items:center;gap:11px;width:100%;padding:9px 11px;transition:background .12s;display:flex}.device-row:hover{background:var(--color-hover-2)}.device-row__icon{color:#9a9aa2;flex:none;display:flex}.device-row__text{flex:1;min-width:0}.device-row__name{font:600 13px/1.2 var(--font-family);color:var(--color-text-primary-3);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.device-row__note{font:400 11px/1.2 var(--font-family);color:var(--color-text-muted-2);margin-top:2px;display:block}.device-row--active,.device-row--active:hover{background:var(--color-accent-tint-12)}.device-row--active .device-row__icon{color:var(--color-accent)}.device-row--active .device-row__name{color:var(--color-text-primary)}.queue-panel{z-index:var(--z-queue-panel);flex-direction:column;display:flex}.queue-panel--docked{top:0;right:0;bottom:var(--player-bar-height);background:var(--color-surface-base);width:392px;box-shadow:var(--shadow-queue);border-left:1px solid #232328;position:fixed}.queue-panel--sheet{background:var(--color-bg);position:fixed;inset:0}.queue-panel__head{border-bottom:1px solid #1c1c21;align-items:center;gap:10px;padding:15px 18px;display:flex}.queue-panel--sheet .queue-panel__head{padding:calc(14px + env(safe-area-inset-top,0px)) var(--spacing-side) 14px}.queue-panel__close{color:#c4c4ca;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;margin-left:-6px;padding:0;transition:background .12s,color .12s;display:flex}.queue-panel__close:hover{color:#fff;background:#ffffff0f}.queue-panel__title{text-align:center;font:600 16px/1 var(--font-family);color:var(--color-text-primary);flex:1}.queue-panel__head-spacer{flex:none;width:30px}.queue-panel__clear{color:var(--color-text-muted);font:500 13px/1 var(--font-family);cursor:pointer;background:0 0;border:none;border-radius:7px;flex:none;padding:8px;transition:background .12s,color .12s}.queue-panel__clear:hover{color:#fff;background:#ffffff0d}.queue-sync{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.queue-sync--synced,.queue-sync--syncing{color:var(--color-text-muted-2);font:400 12px/1.35 var(--font-family);padding:16px 0 2px}.queue-sync--external{color:#9fe0b8;font:500 12px/1.35 var(--font-family);background:#1eb9541f;border:1px solid #1eb9544d;border-radius:10px;margin:14px 0 2px;padding:10px 12px}.queue-sync__msg{flex:auto;align-items:center;gap:8px;min-width:0;display:flex}.queue-sync__strong{color:#c4c4ca}.queue-sync__spin{animation:1s linear infinite spin}.queue-panel__body{flex:1;min-height:0;padding:0 18px 26px;overflow-y:auto}.queue-panel--sheet .queue-panel__body{padding:0 var(--spacing-side) calc(130px + env(safe-area-inset-bottom,0px))}.queue-panel__inner{max-width:760px;margin:0 auto}.queue-panel__loading{text-align:center;font:400 13px/1.4 var(--font-family);color:var(--color-text-muted-2);padding:28px 0}.queue-section-label{font:600 11px/1 var(--font-family);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted-3)}.queue-panel__inner>.queue-section-label:first-child,.queue-sync+.queue-section-label{margin:18px 0 11px}.queue-now{background:var(--color-accent-tint-10);border:1px solid var(--color-accent-tint-32);border-radius:14px;align-items:center;gap:14px;padding:13px 15px;display:flex}.queue-now__cover{object-fit:cover;border-radius:8px;flex:none;width:56px;height:56px;box-shadow:0 4px 12px #0006}.queue-now__text{flex:1;min-width:0}.queue-now__title{font:600 15px/1.25 var(--font-family);color:var(--color-text-primary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.queue-now__artist{font:400 13px/1.2 var(--font-family);color:#9bbfe6;white-space:nowrap;text-overflow:ellipsis;margin-top:3px;overflow:hidden}.queue-section-head{justify-content:space-between;align-items:baseline;gap:10px;margin:26px 0 8px;display:flex}.queue-section-count{font:500 12px/1 var(--font-family);color:#6f6f78}.queue-row{border-radius:11px;align-items:center;gap:11px;padding:6px;display:flex}.queue-row:hover{background:var(--color-surface-1)}.queue-row--flash{animation:2.6s ease-out qflash}.queue-row--dragging{background:var(--color-surface-1);z-index:1;position:relative;box-shadow:0 8px 24px #00000080}.queue-row__grip{color:#5a5a64;cursor:grab;touch-action:none;flex:none;justify-content:center;align-items:center;padding:2px;display:flex}.queue-row--dragging .queue-row__grip{cursor:grabbing}.queue-row__main{cursor:pointer;text-align:left;min-width:0;color:inherit;background:0 0;border:none;flex:1;align-items:center;gap:13px;padding:0;display:flex}.queue-row__cover{object-fit:cover;border-radius:6px;flex:none;width:46px;height:46px}.queue-row__cover--placeholder{background:var(--color-border-2)}.queue-row__text{flex:1;min-width:0}.queue-row__title{font:500 14px/1.25 var(--font-family);color:var(--color-text-primary-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.queue-row__sub{align-items:center;gap:7px;min-width:0;margin-top:2px;display:flex}.queue-row__artist{font:400 12px/1.2 var(--font-family);color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.queue-via{font:600 9px/1 var(--font-family);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;border-radius:9px;flex:none;padding:3px 6px}.queue-via--spotify{color:#7ed0a0;background:#1eb95424}.queue-via--claude{color:#9bbfe6;background:#3d8ad824}.queue-row__dur{font:400 12px/1 var(--font-family);color:var(--color-text-muted-2);font-variant-numeric:var(--font-tabular);flex:none}.queue-row__remove{width:32px;height:32px;color:var(--color-text-muted-2);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:flex}.queue-row__remove:hover{color:#fff;background:#222228}.queue-empty{color:var(--color-text-muted-2);border:1.5px dashed var(--color-border-2);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:11px;margin-top:4px;padding:54px 20px;display:flex}.queue-empty__title{font:600 15px/1.3 var(--font-family);color:#c4c4ca;text-align:center}.queue-empty__sub{font:400 13px/1.4 var(--font-family);text-align:center}.player-bar__toast{color:#dfe7f0;font:500 13px/1 var(--font-family);white-space:nowrap;pointer-events:none;z-index:var(--z-toast);background:#1c2530;border:1px solid #30404f;border-radius:22px;padding:10px 18px;animation:3s ease-in-out toast-fade;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%);box-shadow:0 10px 30px #00000080}@keyframes toast-fade{0%,80%{opacity:1}to{opacity:0}}.modal-toast{color:#fff;z-index:1100;pointer-events:none;background:#e22134;border-radius:1rem;padding:.5rem 1rem;font-size:.85rem;font-weight:600;position:fixed;bottom:5rem;left:50%;transform:translate(-50%)}.player-iconbtn--remove-confirm{box-shadow:0 0 0 2px var(--color-danger);animation:1s ease-in-out infinite pulse-remove;color:var(--color-danger)!important}@keyframes pulse-remove{0%,to{box-shadow:0 0 0 2px var(--color-danger)}50%{box-shadow:0 0 0 2px #e0635f66}}@media (width<=600px){.search-input,.add-to-playlist-search{font-size:16px}}.wash-view{padding:1rem 0}.wash-header{align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.wash-header h1{margin:0;font-size:1.5rem}.wash-back{color:#1db954;cursor:pointer;background:0 0;border:none;align-items:center;gap:.4rem;padding:.4rem .5rem;font-size:.9rem;display:inline-flex}.wash-back:hover{text-decoration:underline}.wash-status{color:#ccc;background:#1a1a1a;border-radius:6px;margin:1rem 0;padding:1rem}.wash-error{color:#ff6b6b}.wash-intro{color:#aaa;max-width:65ch;margin:0 0 1rem;font-size:.9rem}.wash-rows{flex-direction:column;gap:.5rem;display:flex}.wash-row{cursor:pointer;background:#181818;border-radius:6px;grid-template-columns:auto 1fr auto 1fr auto;align-items:center;gap:.75rem;padding:.6rem .8rem;transition:background .1s;display:grid}.wash-row:hover{background:#1f1f1f}.wash-row input[type=checkbox]{cursor:pointer;width:18px;height:18px}.wash-album{align-items:center;gap:.6rem;min-width:0;display:flex}.wash-album img,.wash-album-placeholder{object-fit:cover;border-radius:4px;flex-shrink:0;width:48px;height:48px}.wash-album-placeholder{background:#333}.wash-album-meta{min-width:0}.wash-album-name{white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.wash-album-sub{color:#999;white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.wash-pop{color:#888}.wash-pop-good{color:#1db954}.wash-arrow{color:#666;font-size:1.4rem}.wash-confidence{text-transform:lowercase;border-radius:999px;padding:.2rem .5rem;font-size:.75rem}.wash-confidence-high{color:#1db954;background:#1db95433}.wash-confidence-medium{color:#ffc300;background:#ffc30026}.wash-confidence-low{color:#aaa;background:#ffffff1a}.wash-without-candidate{background:#141414;border-radius:6px;margin-top:2rem;padding:.8rem}.wash-without-candidate summary{cursor:pointer;color:#aaa}.wash-without-candidate ul{color:#ccc;margin:.6rem 0 0 1.2rem}.wash-actions{background:linear-gradient(#0000,#0a0a0a 30%);justify-content:flex-end;padding:1rem 0;display:flex;position:sticky;bottom:0}.wash-apply-btn{color:#000;cursor:pointer;background:#1db954;border:none;border-radius:999px;padding:.7rem 1.4rem;font-weight:600}.wash-apply-btn:disabled{opacity:.5;cursor:not-allowed}@media (width<=600px){.wash-row{grid-template-columns:auto 1fr;gap:.5rem}.wash-row .wash-album-old{grid-column:2}.wash-arrow{grid-column:2;justify-self:start;padding-left:.5rem;transform:rotate(90deg)}.wash-row .wash-album-new{grid-column:2}.wash-confidence{grid-column:2;justify-self:start}}.artist-link{cursor:pointer;border-radius:2px;text-decoration:none}.artist-link:hover{color:#fff;text-decoration:underline}.artist-link:focus-visible{outline-offset:2px;outline:2px solid #1db954}.pb-input,.pb-preview,.pb-done{flex-direction:column;gap:1rem;display:flex}.pb-label{color:#bbb;flex-direction:column;gap:.4rem;font-size:.9rem;display:flex}.pb-text-input,.pb-textarea{color:#eee;resize:vertical;background:#1a1a1a;border:1px solid #444;border-radius:4px;padding:.6rem .75rem;font-family:inherit;font-size:.95rem}.pb-textarea{min-height:200px;line-height:1.4}.pb-text-input:focus,.pb-textarea:focus{border-color:#1db954;outline:none}.pb-error{color:#ff8080;background:#ff44441f;border:1px solid #ff444459;border-radius:4px;padding:.6rem .8rem;font-size:.9rem}.pb-status{text-align:center;color:#888;padding:2rem;font-size:.95rem}.pb-actions{border-top:1px solid #2a2a2a;justify-content:flex-end;gap:.6rem;padding-top:.5rem;display:flex}.pb-btn{cursor:pointer;border:1px solid #0000;border-radius:2rem;padding:.55rem 1.1rem;font-family:inherit;font-size:.9rem;font-weight:600;transition:all .15s}.pb-btn-primary{color:#000;background:#1db954}.pb-btn-primary:hover:not(:disabled){background:#1ed760}.pb-btn-primary:disabled{color:#666;cursor:not-allowed;background:#2a2a2a}.pb-btn-secondary{color:#ddd;background:0 0;border-color:#555}.pb-btn-secondary:hover:not(:disabled){color:#fff;border-color:#888}.pb-preview-summary{color:#bbb;font-size:.95rem}.pb-preview-summary strong{color:#fff}.pb-rows{flex-direction:column;gap:.5rem;max-height:55vh;padding-right:.25rem;display:flex;overflow-y:auto}.pb-row{background:#1a1a1a;border:1px solid #2a2a2a;border-left:3px solid #444;border-radius:4px;gap:.75rem;padding:.65rem .75rem;display:flex}.pb-row-high{border-left-color:#1db954}.pb-row-medium{border-left-color:#e0c020}.pb-row-low{border-left-color:#d97a2c}.pb-row-none{border-left-color:#d04040}.pb-row-excluded{opacity:.5}.pb-row-check{cursor:pointer;accent-color:#1db954;flex-shrink:0;width:16px;height:16px;margin-top:.2rem}.pb-row-info{flex-direction:column;flex:1;gap:.4rem;min-width:0;display:flex}.pb-row-input{color:#888;align-items:center;gap:.6rem;font-size:.85rem;display:flex}.pb-row-input-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pb-row-badge{text-transform:uppercase;letter-spacing:.03em;border-radius:2rem;flex-shrink:0;padding:.1rem .5rem;font-size:.7rem;font-weight:600}.pb-row-badge-high{color:#1db954;background:#1db9542e}.pb-row-badge-medium{color:#e0c020;background:#e0c0202e}.pb-row-badge-low{color:#d97a2c;background:#d97a2c33}.pb-row-badge-none{color:#d04040;background:#d0404033}.pb-row-match{align-items:center;gap:.6rem;display:flex}.pb-row-cover{object-fit:cover;border-radius:2px;flex-shrink:0;width:40px;height:40px}.pb-row-match-text{flex:1;min-width:0}.pb-row-match-track{color:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;overflow:hidden}.pb-row-match-meta{color:#888;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.pb-row-alt-btn{color:#bbb;cursor:pointer;background:0 0;border:1px solid #555;border-radius:4px;flex-shrink:0;padding:.3rem .6rem;font-size:.75rem;transition:all .15s}.pb-row-alt-btn:hover{color:#fff;border-color:#1db954}.pb-row-error{color:#888;font-size:.85rem;font-style:italic}.pb-row-alternatives{border-top:1px solid #2a2a2a;flex-direction:column;gap:.3rem;margin-top:.4rem;padding-top:.5rem;display:flex}.pb-row-alt{cursor:pointer;color:#ccc;border-radius:3px;align-items:center;gap:.5rem;padding:.35rem .5rem;font-size:.85rem;display:flex}.pb-row-alt:hover{background:#222}.pb-row-alt-selected{background:#1db9541a}.pb-row-alt input{accent-color:#1db954;cursor:pointer}.pb-row-alt-text strong{color:#fff;font-weight:500}.pb-done-message{text-align:center;color:#eee;padding:1.5rem .5rem;font-size:1rem}@media (width<=600px){.pb-row{padding:.55rem .6rem}.pb-row-match{flex-wrap:wrap}.pb-row-alt-btn{margin-top:.3rem}.pb-rows{max-height:50vh}}.lib-tile__genre-tag{font:500 10px/1 var(--font-family);color:#9bbfe6;background:var(--color-accent-tint-16);border-radius:12px;margin-top:8px;padding:4px 9px;display:inline-block}.search-results{padding:20px 0 0}.search-results__zone-head{align-items:baseline;gap:9px;margin-bottom:14px;display:flex}.search-results__zone-title{font:600 16px/1 var(--font-family);color:var(--color-text-primary)}.search-results__zone-hint{font:500 13px/1 var(--font-family);color:#6f6f78}.search-results__empty{background:var(--color-surface-deep);border-radius:var(--radius-field);color:#8a8a92;font:400 13px/1.4 var(--font-family);border:1px solid #20202a;align-items:center;gap:10px;padding:14px 16px;display:flex}.search-results__empty svg{color:#5a5a64;flex:none}.search-results__sp{border-top:1px solid #1c1c21;margin-top:30px;padding-top:6px}.sp-collapsed{background:var(--color-surface-deep);border:1px solid var(--color-border);cursor:pointer;text-align:left;border-radius:13px;align-items:center;gap:13px;width:100%;margin-top:16px;padding:15px 16px;transition:border-color .15s;display:flex}.sp-collapsed:hover{border-color:#3a3a42}.sp-collapsed__icon{color:#9a9aa2;background:#1f1f25;border-radius:50%;flex:none;justify-content:center;align-items:center;width:36px;height:36px;display:flex;position:relative}.sp-collapsed__dot{background:var(--color-spotify);border:2px solid var(--color-surface-deep);border-radius:50%;width:9px;height:9px;position:absolute;top:-1px;right:-1px}.sp-collapsed__text{flex:1;min-width:0}.sp-collapsed__title{font:600 14px/1.2 var(--font-family);color:var(--color-text-primary-3);display:block}.sp-collapsed__sub{font:400 12px/1.3 var(--font-family);color:var(--color-text-muted);margin-top:3px;display:block}.sp-collapsed__chev{color:#5a5a64;flex:none}.sp-zone{margin-top:16px}.sp-zone__head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;display:flex}.sp-zone__title{font:600 16px/1 var(--font-family);color:var(--color-text-primary);align-items:center;gap:9px;display:flex}.sp-zone__dot{background:var(--color-spotify);border-radius:50%;flex:none;width:8px;height:8px}.sp-zone__head-right{align-items:center;gap:8px;display:flex}.sp-zone__spinner{border:2px solid var(--color-border-2);border-top-color:var(--color-accent);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}.sp-zone__hide{color:var(--color-text-muted);font:500 12px/1 var(--font-family);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:6px 8px}.sp-zone__hide:hover{color:#fff;background:#ffffff0d}.sp-zone__label{font:600 11px/1 var(--font-family);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted-3);padding:14px 2px 4px}.sp-zone__status,.sp-zone__nohits{color:var(--color-text-muted-2);font:400 14px/1.4 var(--font-family)}.sp-zone__nohits{text-align:center;padding:34px 16px}.sp-zone__status{padding:14px 2px}.sp-artist{cursor:pointer;text-align:left;color:#5a5a64;background:0 0;border:none;border-radius:10px;align-items:center;gap:13px;width:100%;padding:8px;display:flex}.sp-artist:hover{background:var(--color-surface-1)}.sp-artist__img{object-fit:cover;border-radius:50%;flex:none;width:48px;height:48px}.sp-artist__info{flex:1;min-width:0}.sp-artist__name{font:600 14px/1.25 var(--font-family);color:var(--color-text-primary-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sp-artist__sub{font:400 12px/1.2 var(--font-family);color:var(--color-text-muted-2);margin-top:2px}.sp-album{border-radius:10px;align-items:center;gap:13px;padding:6px 8px;display:flex}.sp-album:hover{background:var(--color-surface-1)}.sp-album__main{cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:13px;min-width:0;padding:0;display:flex}.sp-album__cover{background:var(--color-surface-2);border-radius:6px;flex:none;width:52px;height:52px;position:relative;overflow:hidden}.sp-album__img{object-fit:cover;width:100%;height:100%;display:block}.sp-album__play{color:#fff;background:#00000052;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.sp-album__info{flex:1;min-width:0}.sp-album__name{font:600 14px/1.25 var(--font-family);color:var(--color-text-primary-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sp-album__sub{font:400 12px/1.2 var(--font-family);color:var(--color-text-muted-2);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;overflow:hidden}.sp-album__save{color:#9a9aa2;cursor:pointer;background:0 0;border:1px solid #2e2e35;border-radius:50%;flex:none;justify-content:center;align-items:center;width:36px;height:36px;padding:0;display:flex}.sp-album__save.is-saved{background:var(--color-accent);color:#fff;border:none}.sp-track{cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:13px;width:100%;padding:8px;display:flex}.sp-track:hover{background:var(--color-surface-1)}.sp-track__img{object-fit:cover;border-radius:5px;flex:none;width:44px;height:44px}.sp-track__info{flex:1;min-width:0}.sp-track__title{font:500 14px/1.25 var(--font-family);color:var(--color-text-primary-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sp-track__sub{font:400 12px/1.2 var(--font-family);color:var(--color-text-muted-2);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;overflow:hidden}.sp-track__dur{font:400 12px/1 var(--font-family);color:var(--color-text-muted-2);font-variant-numeric:var(--font-tabular);flex:none}.artist-ov{z-index:1100;background:var(--color-bg);flex-direction:column;display:flex;position:fixed;inset:0}.artist-ov__bar{padding:14px var(--spacing-side);border-bottom:1px solid #1c1c21;justify-content:space-between;align-items:center;display:flex}.artist-ov__back{color:var(--color-accent);font:500 14px/1 var(--font-family);cursor:pointer;background:0 0;border:none;border-radius:7px;align-items:center;gap:5px;margin-left:-6px;padding:4px 6px;display:flex}.artist-ov__back:hover{background:#ffffff0d}.artist-ov__source{font:500 12px/1 var(--font-family);color:var(--color-text-muted);align-items:center;gap:7px;display:flex}.artist-ov__dot{background:var(--color-spotify);border-radius:50%;width:8px;height:8px}.artist-ov__body{min-height:0;padding:0 var(--spacing-side) 130px;flex:1;overflow-y:auto}.artist-ov__inner{max-width:1180px;margin:0 auto}.artist-ov__status{color:var(--color-text-muted-2);font:400 14px/1.4 var(--font-family);padding:24px 0}.artist-ov__hero{align-items:center;gap:18px;padding:24px 0 18px;display:flex}.artist-ov__hero-img{object-fit:cover;border-radius:50%;flex:none;width:104px;height:104px;box-shadow:0 8px 24px #00000080}.artist-ov__hero-text{min-width:0}.artist-ov__name{font:700 clamp(24px, 4vw, 30px)/1.05 var(--font-family);color:var(--color-text-primary);letter-spacing:-.01em}.artist-ov__followers{font:400 13px/1 var(--font-family);color:var(--color-text-muted-2);margin-top:8px}.artist-ov__play-row{align-items:center;gap:10px;margin-bottom:20px;display:flex}.artist-ov__play-btn{background:var(--color-accent);color:#fff;font:600 14px/1 var(--font-family);cursor:pointer;border:none;border-radius:24px;align-items:center;gap:8px;padding:12px 24px;transition:transform .12s;display:flex}.artist-ov__play-btn:hover{transform:scale(1.03)}.artist-ov__label{font:600 11px/1 var(--font-family);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted-3);margin-bottom:6px}.artist-ov__label--mt{margin:24px 0 14px}.artist-ov__track{cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:14px;width:100%;padding:8px 6px;display:flex}.artist-ov__track:hover{background:var(--color-surface-1)}.artist-ov__track-n{text-align:center;width:18px;font:400 13px/1 var(--font-family);color:#6f6f78;flex:none}.artist-ov__track-img{object-fit:cover;border-radius:5px;flex:none;width:44px;height:44px}.artist-ov__track-title{min-width:0;font:500 14px/1.25 var(--font-family);color:var(--color-text-primary-2);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.artist-ov__track-dur{font:400 12px/1 var(--font-family);color:var(--color-text-muted-2);font-variant-numeric:var(--font-tabular);flex:none}.artist-ov__album-grid{grid-template-columns:repeat(auto-fill,minmax(clamp(120px,30vw,158px),1fr));gap:20px 16px;display:grid}.artist-ov__album-cover{aspect-ratio:1;border-radius:var(--radius-cover);background:var(--color-surface-2);position:relative;overflow:hidden;box-shadow:0 6px 16px #0000006b}.artist-ov__album-img{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.artist-ov__album-play{background:var(--color-accent);color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;padding:0;transition:transform .12s;display:flex;position:absolute;bottom:8px;right:8px;box-shadow:0 5px 14px #00000080}.artist-ov__album-play:hover{transform:scale(1.12)}.artist-ov__album-save{color:#fff;cursor:pointer;background:#141418c7;border:none;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;padding:0;display:flex;position:absolute;bottom:8px;left:8px;box-shadow:0 4px 11px #00000073}.artist-ov__album-save.is-saved{background:var(--color-accent)}.artist-ov__album-name{font:600 13px/1.2 var(--font-family);color:var(--color-text-primary-2);white-space:nowrap;text-overflow:ellipsis;margin-top:9px;overflow:hidden}.artist-ov__album-year{font:400 11px/1.2 var(--font-family);color:var(--color-text-muted-2);margin-top:2px}.save-sheet-scrim{z-index:1200;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0009;justify-content:center;align-items:flex-end;padding:16px;display:flex;position:fixed;inset:0}.save-sheet{background:var(--color-surface-1);border:1px solid var(--color-border);width:min(440px,100%);box-shadow:var(--shadow-modal);border-radius:18px;padding:20px clamp(16px,4vw,22px) 22px}.save-sheet__head{align-items:center;gap:13px;margin-bottom:18px;display:flex}.save-sheet__cover{object-fit:cover;border-radius:7px;flex:none;width:54px;height:54px}.save-sheet__head-text{min-width:0}.save-sheet__name{font:600 15px/1.25 var(--font-family);color:var(--color-text-primary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.save-sheet__hint{font:400 12px/1.2 var(--font-family);color:var(--color-text-muted);margin-top:3px}.save-sheet__genres{flex-wrap:wrap;gap:9px;display:flex}.save-sheet__genre{font:500 13px/1 var(--font-family);color:#dcdce0;cursor:pointer;background:#1f1f25;border:1px solid #2c2c33;border-radius:20px;padding:11px 16px;transition:border-color .15s,color .15s}.save-sheet__genre:hover{border-color:var(--color-accent);color:#fff}.save-sheet__skip{width:100%;color:var(--color-text-muted);font:500 13px/1 var(--font-family);cursor:pointer;background:0 0;border:none;border-radius:9px;margin-top:16px;padding:10px;transition:background .15s,color .15s}.save-sheet__skip:hover{color:#fff;background:#ffffff0a}
