:root{color-scheme:dark;font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;background:#000;color:#f5f5f5;--mint:#78ddc0;--green:#14785f;--card:#171817;--muted:#a3a5a4;--danger:#ff6f78}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#000}body{overscroll-behavior:none}button,input{font:inherit}button{color:inherit}.topbar{position:sticky;top:0;z-index:5;padding:max(28px,env(safe-area-inset-top)) 22px 14px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#000 78%,transparent)}h1{font-size:34px;margin:0}h2{margin:0;font-size:25px}.top-actions{display:flex;gap:8px}.icon-button,.text-button{border:0;background:transparent;color:var(--mint);font-size:19px;padding:9px}.page{display:none;padding:15px 18px 210px;max-width:850px;margin:auto}.page.active{display:block}.section-heading{display:flex;justify-content:space-between;align-items:center;margin:28px 0 16px}.cover-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px 12px}.cover-card{border:0;background:transparent;text-align:left;padding:0;min-width:0}.cover-card img,.art-placeholder{width:100%;aspect-ratio:1;border-radius:17px;object-fit:cover;background:linear-gradient(140deg,#28332f,#101010);display:grid;place-items:center;color:#7e8985}.cover-card strong{display:block;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px}.cover-card span{display:block;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.playlist-strip{display:grid;grid-auto-flow:column;grid-auto-columns:42%;overflow-x:auto;gap:14px;padding-bottom:8px;scroll-snap-type:x mandatory}.playlist-card{scroll-snap-align:start}.search-box{display:flex;align-items:center;gap:12px;background:var(--card);padding:9px 17px;border-radius:24px;margin:5px 0 12px}.search-box span{font-size:28px}.search-box input,.card input{border:0;background:transparent;color:#fff;width:100%;padding:13px 4px;outline:none}.muted{color:var(--muted);line-height:1.55}.small{font-size:12px}.song-list{display:grid;gap:10px}.song{display:grid;grid-template-columns:62px minmax(0,1fr) 48px;align-items:center;gap:13px;background:var(--card);padding:11px;border-radius:18px;border:1px solid transparent}.song.current{border-color:var(--green)}.song img,.song .art-placeholder{width:62px;height:62px;border-radius:13px;object-fit:cover}.song-info{min-width:0;background:transparent;border:0;text-align:left;padding:0}.song-info strong,.song-info span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-info strong{font-size:15px;line-height:1.4}.song-info span{font-size:12px;color:var(--muted);margin-top:4px}.round{border:0;width:45px;height:45px;border-radius:50%;background:var(--green);font-size:18px}.card{background:var(--card);border-radius:22px;padding:21px;margin-bottom:16px}.card h2{margin-bottom:10px}.card label{display:block;color:#d9d9d9;margin:15px 0 6px}.card label input{display:block;background:#0b0b0b;border-radius:14px;padding:14px;margin-top:7px}.primary,.secondary{border:0;border-radius:16px;padding:14px 18px;width:100%;font-weight:700}.primary{background:var(--mint);color:#092e25}.secondary{background:#2d302f}.status{white-space:pre-wrap;color:var(--mint)}.task{background:var(--card);border-radius:17px;padding:16px;margin-bottom:10px}.task header{display:flex;justify-content:space-between;gap:10px}.task progress{width:100%;accent-color:var(--mint)}.task.error{color:var(--danger)}.mini-player{position:fixed;z-index:10;left:14px;right:14px;bottom:88px;max-width:820px;margin:auto;border:1px solid #4b4b4b;background:#202120ee;backdrop-filter:blur(22px);border-radius:27px;padding:12px;display:grid;grid-template-columns:54px minmax(70px,1fr) repeat(5,42px);align-items:center;gap:5px;box-shadow:0 16px 40px #000}.mini-player[hidden]{display:none}.mini-player img{width:54px;height:54px;object-fit:cover;border-radius:50%}.player-info{border:0;background:transparent;text-align:left;min-width:0}.player-info strong,.player-info span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-info span{font-size:12px;color:var(--muted);margin-top:4px}.player-button{border:0;background:transparent;font-size:19px;padding:8px 2px}.player-button.main{font-size:27px}.progress-row{grid-column:1/-1;display:grid;grid-template-columns:38px 1fr 38px;align-items:center;gap:5px;font-size:10px}.progress-row input{width:100%;accent-color:var(--mint)}.bottom-nav{position:fixed;z-index:9;bottom:0;left:0;right:0;height:calc(76px + env(safe-area-inset-bottom));padding:6px 10px env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(4,1fr);background:#090909;border-top:1px solid #202020}.nav{border:0;background:transparent;color:#b8bbb9;font-size:12px;border-radius:30px}.nav span{display:block;font-size:24px;margin-bottom:2px}.nav.active{background:#154f40;color:#e9fff8}dialog{width:min(92vw,620px);max-height:86vh;background:#262726;color:#fff;border:1px solid #555;border-radius:28px;padding:0}dialog::backdrop{background:#000b;backdrop-filter:blur(5px)}dialog form{padding:25px;position:relative}.dialog-close{position:absolute;right:14px;top:10px;border:0;background:transparent;font-size:28px}.dialog-list{max-height:55vh;overflow:auto;margin:15px 0}.dialog-actions{display:flex;gap:10px}.dialog-actions button{flex:1}.check-song{display:grid;grid-template-columns:44px 1fr 28px;gap:10px;align-items:center;padding:8px 0}.check-song img{width:44px;height:44px;object-fit:cover;border-radius:8px}#toast{position:fixed;z-index:30;left:50%;bottom:175px;transform:translate(-50%,20px);max-width:90%;background:#292929;border:1px solid #666;border-radius:18px;padding:12px 18px;opacity:0;pointer-events:none;transition:.2s;text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}@media(min-width:720px){.cover-grid{grid-template-columns:repeat(6,1fr)}.playlist-strip{grid-auto-columns:23%}.page{padding-left:24px;padding-right:24px}}@media(max-width:430px){.mini-player{grid-template-columns:48px minmax(60px,1fr) repeat(5,32px)}.mini-player img{width:48px;height:48px}.player-button{font-size:16px}.player-button.main{font-size:24px}}

.lyrics-dialog{padding:20px;width:min(96vw,780px);max-height:94dvh}.lyrics-header{display:flex;align-items:center;gap:8px}.lyrics-header h2{flex:1}#lyrics-track{max-height:4.5em;overflow:auto}.lyrics-lines{height:44dvh;overflow:auto;padding:60px 8px;position:relative;scroll-behavior:smooth}.lyric-line{display:block;width:100%;min-height:64px;border:0;background:transparent;color:var(--muted);font-size:19px;line-height:1.6;padding:12px;white-space:pre-wrap}.lyric-line.active{color:var(--mint);font-weight:800;font-size:22px}.plain-lyrics{white-space:pre-wrap;font-size:19px;line-height:1.8;padding:15px}.lyric-candidate{display:block;width:100%;border:1px solid #444;border-radius:14px;background:#202321;text-align:left;margin:10px 0;padding:12px}.lyric-candidate strong,.lyric-candidate span{display:block}.lyric-candidate span{color:var(--muted);font-size:13px;margin-top:5px}#lyrics-preview-text{white-space:pre-wrap;max-height:35dvh;overflow:auto;font:inherit}#lyrics-manual{width:100%;background:#0b0b0b;color:#fff;border:1px solid #555;border-radius:12px;padding:12px;font:inherit}#lyrics-editor[hidden],#lyrics-preview[hidden],#lyrics-offset-controls[hidden]{display:none}

.lyrics-dialog{padding:20px;width:min(96vw,780px);max-height:94dvh}.lyrics-header{display:flex;align-items:center;gap:8px}.lyrics-header h2{flex:1}#lyrics-track{max-height:4.5em;overflow:auto}.lyrics-lines{height:44dvh;overflow:auto;padding:60px 8px;position:relative;scroll-behavior:smooth}.lyric-line{display:block;width:100%;min-height:64px;border:0;background:transparent;color:var(--muted);font-size:19px;line-height:1.6;padding:12px;white-space:pre-wrap}.lyric-line.active{color:var(--mint);font-weight:800;font-size:22px}.plain-lyrics{white-space:pre-wrap;font-size:19px;line-height:1.8;padding:15px}.lyric-candidate{display:block;width:100%;border:1px solid #444;border-radius:14px;background:#202321;text-align:left;margin:10px 0;padding:12px}.lyric-candidate strong,.lyric-candidate span{display:block}.lyric-candidate span{color:var(--muted);font-size:13px;margin-top:5px}#lyrics-preview-text{white-space:pre-wrap;max-height:35dvh;overflow:auto;font:inherit}#lyrics-manual{width:100%;background:#0b0b0b;color:#fff;border:1px solid #555;border-radius:12px;padding:12px;font:inherit}#lyrics-editor[hidden],#lyrics-preview[hidden],#lyrics-offset-controls[hidden]{display:none}
