:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{scrollbar-gutter:stable}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}#root{width:100%;min-height:100vh;max-width:1280px;margin:0 auto;padding:calc(80px + 2rem) 2rem 2rem;box-sizing:border-box;text-align:center}.loading-text{color:#ffffffc7}.loading-dots span{opacity:.25;animation:loading-dot-pulse 1.2s ease-in-out infinite}.loading-dots span:nth-child(2){animation-delay:.16s}.loading-dots span:nth-child(3){animation-delay:.32s}@keyframes loading-dot-pulse{0%,80%,to{opacity:.25}40%{opacity:1}}@media(prefers-reduced-motion:reduce){.loading-dots span{animation:none}}nav{display:flex;gap:3rem;flex-direction:row;justify-content:space-between;align-items:center;position:fixed;top:0;left:0;width:100vw;box-sizing:border-box;background:#222;z-index:1000;padding:1rem 2rem;height:80px}.navigation-links{display:flex;gap:2rem}.navigation-link{display:inline-flex;align-items:center;min-height:2.25rem;padding:0 .75rem;border-radius:8px;color:#fff;text-decoration:none;font-size:1.2rem;transition:color .3s ease,background-color .3s ease}.navigation-link:hover{color:#1db954}.navigation-link.active{background:#ffffff1f;color:#d8d8d8}.navigation-link.active:hover{background:#ffffff29;color:#e8e8e8}.nav-profile{display:flex;align-items:center;color:#fff;font-size:1rem;gap:.5rem}.nav-profile .profile-pic{width:2rem;height:2rem;border-radius:50%}.nav-profile .sign-out-button{margin-left:1rem}.landing-button{color:#fff;text-decoration:none;font-size:1.2rem;transition:color .3s ease,border .3s ease}.landing-button:hover{color:#1db954}.features .feature-button{display:inline-flex;align-items:center;justify-content:center;padding:.5em 1.5em;background:#1db954;color:#383232;border:none;border-radius:8px;text-decoration:none;font-weight:700;cursor:pointer;transition:background .2s}.feature-button:hover{background:#127e38}.features{width:min(100%,720px);display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:2rem;align-items:stretch;margin:0 auto}.feature{display:flex;flex-direction:column;justify-content:space-between;gap:1rem;background:#383232;padding:1rem;border-radius:8px;min-height:180px}.feature-copy h2{margin:0}.feature-copy p{margin:.75rem 0 0}.library{padding:1rem}.library h1{margin-bottom:1rem}.library-header h1{margin:0}.library-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2rem}.library ul{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem;list-style:none;padding:0;margin:0}.library-loading{margin:2rem 0 0;font-size:2.5rem}.playlist-item{width:100%;background:#ffffff0f;border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:1rem;display:flex;flex-direction:column;align-items:center;text-align:center;min-height:220px;color:inherit;font:inherit;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,transform .2s ease}.playlist-item:hover{background:#ffffff1a;border-color:#ffffff2e;transform:translateY(-2px)}.playlist-item:focus-visible{outline:3px solid #1db954;outline-offset:3px}.playlist-image{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:12px;margin-top:.75rem}.playlist-details{width:100%}.playlist-details h2{font-size:1rem;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playlist-details p{width:100%;margin:.25rem 0 0;font-size:.875rem}.playlist-action-backdrop{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:#000000a3}.playlist-action-dialog{width:min(100%,420px);padding:1rem;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:#242424;box-shadow:0 18px 44px #0000006b;text-align:left}.playlist-action-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.playlist-action-header h2{margin:0;font-size:1.25rem;line-height:1.2;overflow-wrap:anywhere}.playlist-action-close{flex:0 0 auto;width:2.25rem;height:2.25rem;padding:0;border-radius:50%;color:inherit}.playlist-action-options{display:grid;gap:.75rem}.playlist-action-options button{width:100%;min-height:2.75rem;padding:.65rem .85rem;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:#ffffff14;color:inherit;font:inherit;text-align:left}.playlist-action-options button:hover{border-color:#1db954b3;background:#1db95429}.playlist-action-message{margin:1rem 0 0;font-size:.95rem;color:#ffffffc7}@media(max-width:1300px){.library ul{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:1024px){.library ul{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:720px){.library ul{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.library ul{grid-template-columns:1fr}}.sort-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.sort-controls label{font-size:.95rem}.sort-controls select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:8rem;min-height:2.4rem;padding:.4rem .75rem;border-radius:8px;border:1px solid rgba(255,255,255,.16);background:#2f2f2f;color:#fff;text-align:center;text-align-last:center}.sort-controls select:hover{border-color:#1db954b3;background:#1db95429}.sort-controls select option{background:#2f2f2f;color:#fff}.sort-direction-button{display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;padding:0;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#2f2f2f;color:#fff;font-size:1.1rem;line-height:1}.sort-direction-button:hover{border-color:#1db954b3;background:#1db95429}.sort-direction-button:focus-visible{outline:3px solid #1db954;outline-offset:2px}.detect-duplicates{width:min(100%,960px);margin:0 auto;padding:1rem;text-align:left}.detect-duplicates-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:2rem}.detect-duplicates-header h1{margin:0}.detect-duplicates-header p{margin:.4rem 0 0;color:#ffffffb8}.duplicate-state-panel,.duplicate-group{border:1px solid rgba(255,255,255,.12);border-radius:8px;background:#ffffff0f;padding:1rem}.duplicate-state-panel{text-align:center}.duplicate-state-panel h2,.duplicate-state-panel p{margin:0}.duplicate-state-panel p{margin-top:.5rem;color:#ffffffb8}.duplicate-error{border-color:#ff787880}.duplicate-loading{display:grid;justify-items:center;gap:.85rem}.duplicate-loading p{margin-top:0}.duplicate-picker{display:grid;gap:1rem;margin-bottom:1.25rem;padding:1rem;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:#ffffff0a}.duplicate-search{display:grid;gap:.5rem}.duplicate-search label{font-size:.95rem;color:#ffffffc7}.duplicate-search-row{display:flex;gap:.75rem}.duplicate-search-row input{flex:1 1 auto;min-width:0;min-height:2.5rem;padding:.55rem .75rem;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#2f2f2f;color:#fff;font:inherit}.duplicate-search-row button,.duplicate-library-button{min-height:2.5rem;border-radius:8px;color:inherit}.duplicate-library-button{width:fit-content}.duplicate-picker-message{margin:0;color:#ffffffb8;font-size:.95rem}.duplicate-playlist-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.75rem;list-style:none;padding:0;margin:0;max-height:18rem;overflow-y:auto;overscroll-behavior:contain;padding-right:.25rem}.duplicate-playlist-options button{width:100%;min-height:4.25rem;display:flex;align-items:center;gap:.75rem;padding:.65rem;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:#ffffff0f;color:inherit;font:inherit;text-align:left}.duplicate-playlist-options button:hover{border-color:#1db954b3;background:#1db95429}.duplicate-playlist-options img{width:3rem;height:3rem;border-radius:6px;object-fit:cover}.duplicate-playlist-options span{min-width:0;display:grid;gap:.2rem}.duplicate-playlist-options strong,.duplicate-playlist-options small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.duplicate-playlist-options small{color:#ffffff9e}.duplicate-results{scroll-margin-top:calc(80px + 1rem)}.duplicate-summary{display:grid;gap:.75rem;margin-bottom:1rem}.duplicate-summary-total{width:fit-content;padding-bottom:.3rem;border-bottom:2px solid rgba(29,185,84,.8);color:#fff;font-size:1.05rem;font-weight:700}.duplicate-summary-breakdown{display:flex;flex-wrap:wrap;gap:.75rem}.duplicate-summary-breakdown span{padding:.4rem .65rem;border-radius:8px;background:#1db95429;color:#fff;font-size:.95rem}.duplicate-bulk-actions{display:flex;flex-wrap:wrap;gap:.75rem}.duplicate-delete-all-button,.duplicate-refresh-button{min-height:2.5rem;border-radius:8px;font:inherit}.duplicate-delete-all-button{border:1px solid rgba(255,120,120,.45);background:#ff505029;color:#ffb4b4}.duplicate-delete-all-button:hover{border-color:#ff9696bf;background:#ff50503d}.duplicate-refresh-button{border:1px solid rgba(29,185,84,.45);background:#1db95424;color:#d7ffe4}.duplicate-refresh-button:hover{border-color:#1db954bf;background:#1db95438}.duplicate-delete-all-button:disabled,.duplicate-refresh-button:disabled{border-color:#ffffff1f;background:#ffffff0f;color:#ffffff6b;cursor:not-allowed}.duplicate-delete-all-button:disabled .loading-dots,.duplicate-refresh-button:disabled .loading-dots{color:inherit}.duplicate-remove-message{margin:-.25rem 0 1rem;color:#ffffffb8;font-size:.95rem}.duplicate-remove-message-error{color:#ff9d9d}.duplicate-group-list,.duplicate-occurrence-list{list-style:none;padding:0;margin:0}.duplicate-group-list{display:grid;gap:1rem}.duplicate-section-list{display:grid;gap:1.25rem}.duplicate-section{display:grid;gap:.75rem}.duplicate-section-header h2,.duplicate-section-header p{margin:0}.duplicate-section-header h2{font-size:1.35rem}.duplicate-section-header p{margin-top:.25rem;color:#ffffffb8}.duplicate-section-header .duplicate-section-warning{width:fit-content;max-width:100%;margin-top:.65rem;padding:.55rem .75rem;border:1px solid rgba(255,120,120,.45);border-radius:999px;background:#ff505029;color:#ffb4b4;font-size:.9rem;line-height:1.35}.duplicate-group h2{margin:0;font-size:1.25rem}.duplicate-group>p{margin:.35rem 0;color:#ffffffb8}.duplicate-group>span{display:inline-block;margin-bottom:1rem;font-size:.9rem;color:#ffffffb8}.duplicate-occurrence-list{display:grid;gap:.75rem}.duplicate-occurrence{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem;border-radius:8px;background:#ffffff0f}.duplicate-occurrence strong,.duplicate-occurrence p{margin:0}.duplicate-occurrence p{margin-top:.25rem;color:#ffffff9e;font-size:.9rem}.duplicate-occurrence-actions{flex:0 0 auto;display:flex;align-items:center;gap:.75rem}.duplicate-occurrence-open,.duplicate-occurrence-remove{flex:0 0 auto;padding:0;border:0;background:transparent;font:inherit;text-decoration:none}.duplicate-occurrence-open{color:#1db954}.duplicate-occurrence-remove{color:#ff8f8f}.duplicate-occurrence-open:hover{border-color:transparent;background:transparent;color:#27d765}.duplicate-occurrence-remove:hover{border-color:transparent;background:transparent;color:#ffb1b1}.duplicate-occurrence-remove:disabled{cursor:not-allowed;opacity:.55}.duplicate-occurrence-remove-removing:disabled{color:#ffb1b1;cursor:wait;opacity:1}.duplicate-occurrence-remove-removed:disabled{color:#ffffff6b;cursor:default;opacity:1}.duplicate-occurrence-remove-removing .loading-dots{color:inherit}.duplicate-occurrence-open:focus-visible,.duplicate-occurrence-remove:focus-visible{outline:3px solid #1db954;outline-offset:3px}@media(max-width:640px){.detect-duplicates-header,.duplicate-occurrence{align-items:flex-start;flex-direction:column}.duplicate-occurrence-actions{width:100%;justify-content:flex-start}.duplicate-search-row{flex-direction:column}.duplicate-library-button{width:100%}}
