:root{--bg: #0f1115;--panel: #171a21;--panel-2: #1f2430;--text: #e8eaf0;--muted: #9aa3b2;--line: #2a3040;--ok: #37c98b;--warn: #f0b429;--bad: #ff6b6b;--idle: #7c8798;--accent: #5b8cff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;display:flex;flex-direction:column;min-height:100vh}header.site,footer.site{padding:20px clamp(16px,4vw,40px);border-bottom:1px solid var(--line)}footer.site{border-bottom:0;border-top:1px solid var(--line);margin-top:auto;color:var(--muted);font-size:13px}.brand{font-weight:800;font-size:20px;color:var(--text);text-decoration:none;letter-spacing:.2px}.brand span{color:var(--accent);margin-left:8px;font-weight:600}.tagline{margin:6px 0 0;color:var(--muted);font-size:14px}main{flex:1;padding:clamp(16px,4vw,40px);max-width:1080px;width:100%;margin:0 auto}.hero{max-width:620px;margin:8vh auto 0;text-align:left}input[type=text]{flex:1;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:15px;min-width:0}input[type=text]:focus{outline:2px solid var(--accent);border-color:transparent}button{padding:12px 18px;border-radius:10px;border:0;background:var(--accent);color:#fff;font-weight:600;font-size:15px;cursor:pointer;white-space:nowrap}button:hover{filter:brightness(1.1)}button.link{background:none;color:var(--accent);padding:0 4px;text-decoration:underline;font-weight:500}.hint{color:var(--muted);font-size:13px}.hint a{color:var(--accent)}.alert{padding:12px 14px;border-radius:10px;background:#3a1f24;border:1px solid #6b2c34;margin:16px 0}.alert.warn{background:#2b2415;border-color:#6b5a2c}.alert.connect{background:var(--panel);border-color:var(--line)}.alert.connect p{margin:0 0 10px}.btn{display:inline-block;background:var(--accent);color:#0b0d12;border:0;border-radius:10px;padding:10px 16px;font-weight:700;text-decoration:none}.btn:hover{filter:brightness(1.1)}.authbar{display:flex;align-items:center;gap:12px;margin-top:10px;font-size:13px;color:var(--muted)}.authbar .ok{color:var(--ok)}.authbar .warn{color:var(--warn)}.authbar .link{color:var(--accent);background:none;border:0;padding:0;font:inherit;cursor:pointer;text-decoration:underline}.summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:6px}.summary h1{font-size:22px;margin:0}.summary .owner{color:var(--muted);font-size:14px}.score{font-size:18px;margin:4px 0 18px}.score b{color:var(--ok);font-size:22px}.actions{display:flex;align-items:baseline;flex-wrap:wrap;gap:14px;margin:-12px 0 16px}.actions .refresh{font-size:14px}.actions .refresh:disabled{color:var(--muted);text-decoration:none;cursor:default;filter:none}.actions .notice{color:var(--warn);font-size:14px}.actions .readonly{color:var(--idle);font-size:14px}.score .skipped-note{color:var(--idle);font-size:15px}.progress{height:6px;background:var(--panel-2);border-radius:999px;overflow:hidden;margin-bottom:16px}.progress>i{display:block;height:100%;background:var(--accent);transition:width .4s ease}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.chip{border:1px solid var(--line);background:var(--panel);color:var(--muted);padding:6px 12px;border-radius:999px;font-size:13px;cursor:pointer}.chip[aria-pressed=true]{border-color:var(--accent);color:var(--text);background:var(--panel-2)}.chip .n{margin-left:6px;opacity:.65;font-variant-numeric:tabular-nums}.chip[aria-pressed=true] .n{opacity:.8}.chip.zero{opacity:.5}table{width:100%;border-collapse:collapse;font-size:15px}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}th{padding:0;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em}td.num{color:var(--muted);width:40px;text-align:right}td.marker{width:260px}td.track{font-weight:600}td.track .credit{display:block;margin-top:2px;color:var(--muted);font-size:13px;font-weight:400}td.len{color:var(--muted);width:64px;font-variant-numeric:tabular-nums}a.spot{color:var(--accent);display:inline-flex;align-items:baseline;gap:4px;max-width:34ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent)}a.spot:hover,a.spot:focus-visible{text-decoration-color:var(--accent)}a.spot .ext{flex:none;align-self:center}h1 a.spot{font:inherit;max-width:none}th button.sort{background:none;border:0;font:inherit;color:inherit;padding:10px 8px;width:100%;box-sizing:border-box;text-align:inherit;cursor:pointer;display:flex;align-items:baseline;gap:5px}th.plain{padding:10px 8px}th.num button.sort{justify-content:flex-end}th button.sort:hover,th[aria-sort=ascending] button.sort,th[aria-sort=descending] button.sort{color:var(--text)}th button.sort .arrow{font-size:9px}th[aria-sort=none] button.sort:after{content:"↕";font-size:9px;opacity:0}th[aria-sort=none] button.sort:hover:after,th[aria-sort=none] button.sort:focus-visible:after{opacity:.45}.mark{font-weight:700;text-decoration:none}.mark.found{color:var(--ok)}.mark.review{color:var(--warn)}.mark.missing,.mark.failed{color:var(--bad)}.mark.queued{color:var(--idle)}.mark.skipped{color:var(--idle);font-weight:500}.song-link{display:inline-flex;align-items:baseline;gap:5px;text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--ok) 45%,transparent)}.song-link:hover,.song-link:focus-visible{text-decoration-color:var(--ok)}.song-link .ext{flex:none;align-self:center}.marker .link{display:block;margin-top:6px;font-size:13px}.candidates{margin-top:6px;display:grid;gap:4px}.candidates button{background:var(--panel-2);color:var(--text);border:1px solid var(--line);font-size:13px;padding:6px 10px;text-align:left;border-radius:8px;font-weight:500}.candidates button:hover{border-color:var(--accent)}.candidates .score{color:var(--muted);font-size:12px;margin-left:6px}.picked{color:var(--ok);font-size:13px;margin-top:4px}.spinner{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--idle);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.25}}@media(max-width:640px){th.hide-sm,td.hide-sm{display:none}td.marker{width:auto}}.hero h1{font-size:26px;margin:0 0 6px}.picker{margin-top:14px}.pl-list{display:grid;gap:8px;margin:14px 0 6px;max-height:60vh;overflow:auto}.pl-row{display:flex;gap:12px;align-items:center;width:100%;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 12px;cursor:pointer;color:var(--text);font:inherit}.pl-row:hover,.pl-row:focus-visible{border-color:var(--accent)}.pl-row.is-over{cursor:not-allowed;opacity:.55;background:var(--panel-2);border-style:dashed}.pl-row.is-over img{filter:grayscale(1)}.pl-row.is-over:hover,.pl-row.is-over:focus-visible{border-color:var(--line)}.pl-limit{margin:6px 0 0;font-size:13px}.pl-row img,.pl-noimg{width:56px;height:56px;border-radius:8px;object-fit:cover;flex:none}.pl-noimg{background:var(--panel-2)}.pl-text{display:grid;gap:2px;min-width:0}.pl-name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pl-meta{color:var(--muted);font-size:13px}.pl-desc{color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pl-status.is-error{color:var(--bad)}.pl-sync{display:grid;gap:7px;margin:16px 0 14px}.pl-sync .pl-status,.pl-sync .progress{margin:0}.pl-progress{height:4px;margin:0}.pl-sync.working .progress>i{animation:pl-breathe 1.2s ease-in-out infinite}@keyframes pl-breathe{0%,to{opacity:1}50%{opacity:.35}}.pl-progress.indeterminate>i{width:35%!important;animation:pl-slide 1.1s ease-in-out infinite}@keyframes pl-slide{0%{margin-left:-35%}to{margin-left:100%}}@media(prefers-reduced-motion:reduce){.pl-progress.indeterminate>i{animation:none}.pl-sync.working .progress>i{animation:none}}
