This repository has been archived on 2026-10-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
snowy-yang 58853abd3c chore: 提交 React 前端构建产物(app.js 330KB / auth.js 38KB / app.css 56KB)
为什么:部署不经 node 构建(dockerignore 排除了源码),服务端
直接读 dist/index.html 与 /assets,因此构建产物必须入库;
文件名经 vite 固定(无内容 hash),golden 契约才能跨构建成立。
gzip 后 app.js 97KB / auth.js 12KB / app.css 11KB。
2026-09-27 18:35:06 +08:00

2 lines
55 KiB
CSS

:root{--color-primary: #1677ff;--color-primary-hover: #4096ff;--color-primary-active: #0958d9;--color-primary-bg: rgba(22, 119, 255, .1);--color-success: #52c41a;--color-warning: #faad14;--color-error: #ff4d4f;--color-text: rgba(0, 0, 0, .88);--color-text-secondary: rgba(0, 0, 0, .45);--color-text-tertiary: rgba(0, 0, 0, .25);--color-border: #d9d9d9;--color-border-split: rgba(5, 5, 5, .06);--color-bg-layout: #f0f2f5;--color-bg-container: #ffffff;--color-bg-elevated: #ffffff;--color-bg-subtle: #f5f6f8;--color-bg-hover: rgba(0, 0, 0, .03);--color-fill: rgba(0, 0, 0, .04);--ease-out: cubic-bezier(.22, 1, .36, 1);--color-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 2px 8px rgba(15, 23, 42, .04);--color-shadow-heavy: 0 2px 4px rgba(15, 23, 42, .03), 0 12px 32px -8px rgba(15, 23, 42, .12), 0 32px 64px -24px rgba(15, 23, 42, .1);--player-bg: linear-gradient(135deg, #2a2a35, #1c1c26);--player-text: #ffffff;--vip-green: #52c41a;--color-bg-header: rgba(255, 255, 255, .82)}html.dark{--color-primary: #1668dc;--color-primary-hover: #3c89e8;--color-primary-active: #1554ad;--color-primary-bg: rgba(22, 104, 220, .2);--color-text: rgba(255, 255, 255, .85);--color-text-secondary: rgba(255, 255, 255, .45);--color-text-tertiary: rgba(255, 255, 255, .25);--color-border: #424242;--color-border-split: rgba(253, 253, 253, .12);--color-bg-layout: #000000;--color-bg-container: #141414;--color-bg-elevated: #1f1f1f;--color-bg-subtle: #1c1c20;--color-bg-hover: rgba(255, 255, 255, .08);--color-fill: rgba(255, 255, 255, .12);--ease-out: cubic-bezier(.22, 1, .36, 1);--color-shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .3);--color-shadow-heavy: 0 2px 4px rgba(0, 0, 0, .4), 0 12px 32px -8px rgba(0, 0, 0, .55), 0 32px 64px -24px rgba(0, 0, 0, .45);--color-bg-header: rgba(20, 20, 20, .82)}*{box-sizing:border-box}body{background-color:var(--color-bg-layout);color:var(--color-text);margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.5715;-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-hover)}.app-header{background:var(--color-bg-container);background:var(--color-bg-header);backdrop-filter:blur(14px) saturate(1.6);-webkit-backdrop-filter:blur(14px) saturate(1.6);box-shadow:var(--color-shadow);position:sticky;top:0;z-index:100}.app-header-inner{max-width:1250px;margin:0 auto;padding:0 24px;height:64px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.brand-logo{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#f5576c,#ec4141);color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center;flex:none;box-shadow:0 2px 6px #ec414159}.brand-title{font-size:17px;font-weight:600;color:var(--color-text)}.brand-sub{font-size:12px;color:var(--color-text-secondary)}.header-actions{display:flex;align-items:center;gap:10px}.icon-btn{border:1px solid var(--color-border);background:var(--color-bg-container);color:var(--color-text);border-radius:8px;height:34px;padding:0 12px;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all .2s}.icon-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.main-container{width:100%;max-width:1250px;margin:0 auto;padding:24px;flex:1}.card{background:var(--color-bg-container);border-radius:12px;box-shadow:var(--color-shadow);padding:24px;margin-bottom:24px}.card-title{font-size:16px;font-weight:600;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between}.card-title .count{font-size:13px;font-weight:400;color:var(--color-text-secondary)}.tabs{display:flex;border-bottom:1px solid var(--color-border-split);margin-bottom:20px;overflow-x:auto}.tab{padding:12px 0;margin-right:32px;font-size:15px;color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;position:relative;transition:color .2s}.tab:hover{color:var(--color-primary)}.tab.active{color:var(--color-primary);font-weight:500}.tab:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--color-primary);border-radius:2px;transform:scaleX(0);opacity:0;transition:transform .28s cubic-bezier(.4,0,.2,1),opacity .2s}.tab.active:after{transform:scaleX(1);opacity:1}.panel{display:none}.panel.active{display:block}.global-quality-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid var(--color-border-split)}.gq-label{font-size:14px;font-weight:500;display:inline-flex;align-items:center;gap:6px;color:var(--color-text)}.gq-hint{font-size:12px;color:var(--color-text-tertiary)}.input-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.input-row>.input{flex:1;min-width:220px}.input,.select{height:36px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg-container);color:var(--color-text);padding:4px 11px;font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s}.input:focus,.select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-bg)}.input::placeholder{color:var(--color-text-tertiary)}.select{cursor:pointer}.btn{height:36px;padding:4px 16px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg-container);color:var(--color-text);font-size:14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;transition:all .2s;-webkit-user-select:none;user-select:none}.btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:#fff}.btn-primary:active{background:var(--color-primary-active)}.btn-success{background:var(--color-success);border-color:var(--color-success);color:#fff}.btn-success:hover{background:#73d13d;border-color:#73d13d;color:#fff}.btn-danger{background:var(--color-error);border-color:var(--color-error);color:#fff}.btn-danger:hover{background:#ff7875;border-color:#ff7875;color:#fff}.btn-sm{height:30px;padding:0 12px;font-size:13px;border-radius:6px}.btn-link{border:none;background:transparent;color:var(--color-primary);height:auto;padding:2px 6px}.btn-link:hover{color:var(--color-primary-hover)}.btn .spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.hint{font-size:13px;color:var(--color-text-secondary);margin-top:10px}.history-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:16px}.history-label{font-size:13px;color:var(--color-text-secondary)}.tag{display:inline-flex;align-items:center;gap:4px;background:var(--color-fill);border:1px solid var(--color-border);border-radius:6px;padding:1px 8px;font-size:12px;color:var(--color-text);cursor:pointer;transition:all .2s;max-width:260px}.tag:hover{border-color:var(--color-primary);color:var(--color-primary)}.tag .tag-close{color:var(--color-text-tertiary);font-size:11px}.tag .tag-close:hover{color:var(--color-error)}.tag-empty{font-size:12px;color:var(--color-text-tertiary)}.song-list{display:flex;flex-direction:column}.song-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;transition:background .2s}.song-row:hover{background:var(--color-bg-hover)}.song-cover{width:48px;height:48px;border-radius:8px;object-fit:cover;background:var(--color-fill);flex:none}.song-info{flex:1;min-width:0}.song-name{font-weight:500;display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap}.song-name .n{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-name .tag,.song-name .badge{flex:0 1 auto;min-width:0;max-width:100%;white-space:normal}.song-meta{font-size:13px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-actions{display:flex;gap:8px;flex:none}.divider{height:1px;background:var(--color-border-split);margin:8px 0}.song-detail{display:flex;gap:24px;flex-wrap:wrap}.song-detail-cover{width:200px;height:200px;border-radius:16px;object-fit:cover;box-shadow:var(--color-shadow-heavy);background:var(--color-fill);flex:none}.song-detail-info{flex:1;min-width:260px}.detail-name{font-size:22px;font-weight:600;margin:4px 0 8px;word-break:break-all}.detail-meta{margin:4px 0;color:var(--color-text-secondary);font-size:14px}.detail-meta b{color:var(--color-text);font-weight:500;margin-right:8px}.detail-actions{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap}.detail-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.badge{display:inline-flex;align-items:center;font-size:12px;padding:2px 10px;border-radius:999px;border:1px solid var(--color-primary);color:var(--color-primary);background:var(--color-primary-bg)}.badge-green{border-color:var(--color-success);color:var(--color-success);background:#52c41a1a}.player{margin-top:24px;border-radius:12px;background:var(--player-bg);color:var(--player-text);padding:16px 20px;box-shadow:var(--color-shadow-heavy)}.player-top{display:flex;align-items:center;gap:14px}.player-cover{width:56px;height:56px;border-radius:10px;object-fit:cover;background:#ffffff26;flex:none}.player-track{flex:1;min-width:0}.player-name{font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-artist{font-size:13px;color:#ffffff8c;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-controls{display:flex;align-items:center;gap:10px;flex:none}.player-ctrl{width:42px;height:42px;border-radius:50%;background:#ffffff26;border:none;color:#fff;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,transform .1s;flex:none}.player-ctrl:hover{background:#ffffff47}.player-ctrl:active{transform:scale(.95)}.player-ctrl-sm{width:30px;height:30px;border-radius:8px;font-size:13px;background:transparent}.player-ctrl-sm:hover{background:#fff3}.player-bottom{display:flex;align-items:center;gap:12px;margin-top:14px}.player-time{font-size:12px;color:#fff9;font-variant-numeric:tabular-nums;flex:none}.progress{flex:1;height:4px;border-radius:2px;background:#fff3;cursor:pointer;position:relative}.progress-fill{height:100%;border-radius:2px;background:var(--color-primary);width:0;position:relative}.progress-fill:after{content:"";position:absolute;right:-5px;top:50%;width:10px;height:10px;border-radius:50%;background:#fff;transform:translateY(-50%);box-shadow:0 1px 3px #0006;opacity:0;transition:opacity .2s}.progress:hover .progress-fill:after{opacity:1}.volume-wrap{display:flex;align-items:center;gap:8px;flex:0 0 140px}.volume-btn{background:none;border:none;color:#ffffffb3;cursor:pointer;font-size:15px;padding:2px}.volume-slider{flex:1;height:4px;border-radius:2px;background:#fff3;cursor:pointer;position:relative}.volume-fill{height:100%;border-radius:2px;background:#ffffffb3;width:100%}.lyric-panel{margin-top:20px;background:var(--color-bg-container);border-radius:12px;box-shadow:var(--color-shadow);padding:16px 20px}.lyric-panel-title{font-size:14px;font-weight:600;margin-bottom:12px}.lyric-calib{display:inline-flex;align-items:center;gap:6px;position:relative}.btn-mini{height:24px;padding:0 8px;font-size:12px;border-radius:6px}.lyric-offset-label{font-size:12px;color:var(--color-text-tertiary);font-variant-numeric:tabular-nums;min-width:70px}.lyric-fs-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:50;display:inline-flex;align-items:center;gap:8px;background:var(--color-bg-container);border:1px solid var(--color-border);border-radius:10px;box-shadow:var(--color-shadow-heavy);padding:8px 10px;animation:rowIn .18s var(--ease-out)}.lyric-fs-val{font-size:12px;color:var(--color-text-secondary);font-variant-numeric:tabular-nums;min-width:38px;text-align:center}.lyric-fs-btn{height:30px;min-width:34px;padding:0 10px;font-size:13px;border-radius:8px}.lyric-fs-btn:disabled{opacity:.45;cursor:not-allowed}#lyric-fontsize[aria-expanded=true]{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-bg)}.lyric-box{max-height:280px;max-height:min(calc(280px * var(--lyric-fs, 1)),420px);overflow-y:auto;scrollbar-width:thin;padding:4px 16px 4px 0;position:relative}.lyric-box::-webkit-scrollbar{width:6px}.lyric-box::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.lyric-line{padding:6px 10px;border-radius:6px;color:var(--color-text-secondary);font-size:calc(14px * var(--lyric-fs, 1));line-height:1.6;cursor:pointer;transform-origin:left center;transition:color .25s,background .2s,transform .25s}.lyric-line:hover{background:var(--color-bg-hover)}.lyric-line+.lyric-line{margin-top:3px}.lyric-line.active{color:var(--color-primary);font-weight:600;transform:scale(1.02)}.lyric-line.ktv.active.kw-line .kw{color:var(--color-text-secondary)}.lyric-line.ktv.active.kw-line .kw.on{color:var(--color-primary)}.lyric-line.ktv.active.kw-line .kw.cur{background-image:linear-gradient(to right,var(--color-primary) 0%,var(--color-primary) var(--pw, 0%),var(--color-text-secondary) var(--pw, 0%),var(--color-text-secondary) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.lyric-line .ktr{color:var(--color-text-tertiary);font-weight:400;font-size:.9em;transition:color .25s var(--ease-out),-webkit-text-fill-color .25s var(--ease-out)}.lyric-line.active .ktr{color:var(--color-primary)}.lyric-empty{color:var(--color-text-tertiary);font-size:13px;padding:10px}.comment-panel{margin-top:20px;background:var(--color-bg-container);border-radius:12px;box-shadow:var(--color-shadow);padding:16px 20px}.comment-panel-title{font-size:14px;font-weight:600;margin-bottom:12px}.comment-list{display:flex;flex-direction:column}.comment-item{display:flex;gap:12px;padding:12px 8px;border-bottom:1px solid var(--color-border-split)}.comment-item:last-child{border-bottom:none}.comment-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;background:var(--color-fill);flex:none}.comment-body{flex:1;min-width:0}.comment-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.comment-nickname{font-weight:500;font-size:13px}.vip-badge{font-size:11px;padding:0 6px;border-radius:4px;font-weight:500;line-height:18px;display:inline-flex}.vip-vip{background:linear-gradient(90deg,#f7ba2a,#ea5455);color:#fff}.vip-svip{background:linear-gradient(90deg,#c8161d,#8f0f14);color:#fff}.vip-pkg{background:#52c41a26;color:var(--vip-green);border:1px solid rgba(82,196,26,.4)}.comment-meta{font-size:12px;color:var(--color-text-tertiary)}.comment-content{font-size:14px;margin-top:4px;word-break:break-word}.comment-reply{margin-top:6px;font-size:13px;background:var(--color-fill);border-radius:6px;padding:6px 10px;color:var(--color-text-secondary)}.comment-actions{margin-top:6px;display:flex;align-items:center;gap:14px;font-size:12px;color:var(--color-text-tertiary)}.comment-like{display:inline-flex;align-items:center;gap:4px}.comment-more{text-align:center;margin-top:12px}.comment-empty{color:var(--color-text-tertiary);font-size:13px;padding:16px 0;text-align:center}.collection-header{display:flex;gap:20px;flex-wrap:wrap}.collection-cover{width:160px;height:160px;border-radius:16px;object-fit:cover;box-shadow:var(--color-shadow-heavy);background:var(--color-fill);flex:none}.collection-cover-round{border-radius:50%}.collection-info{flex:1;min-width:240px}.collection-name{font-size:20px;font-weight:600;margin:4px 0 8px}.collection-meta{color:var(--color-text-secondary);font-size:13px;margin:3px 0}.collection-desc{margin-top:8px;font-size:13px;color:var(--color-text-secondary);max-height:60px;overflow-y:auto;background:var(--color-fill);border-radius:8px;padding:8px 12px}.collection-actions{margin-top:12px}.toplist-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}.toplist-card{cursor:pointer;border-radius:12px;padding:12px;transition:all .2s;border:1px solid transparent}.toplist-card:hover{background:var(--color-bg-hover);transform:translateY(-2px)}.toplist-card .tl-cover{width:100%;aspect-ratio:1;border-radius:12px;object-fit:cover;background:var(--color-fill);box-shadow:var(--color-shadow)}.toplist-card .tl-name{font-size:14px;font-weight:500;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toplist-card .tl-meta{font-size:12px;color:var(--color-text-tertiary);margin-top:2px}.podcast-cate-bar{display:flex;gap:8px;overflow-x:auto;flex:1;padding:4px 2px;scrollbar-width:thin}.podcast-cate-item{flex:none;font-size:12px;padding:4px 12px;border-radius:999px;border:1px solid var(--color-border);color:var(--color-text-secondary);cursor:pointer;transition:all .2s;-webkit-user-select:none;user-select:none;white-space:nowrap}.podcast-cate-item:hover{border-color:var(--color-primary);color:var(--color-primary)}.podcast-cate-item.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.podcast-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.podcast-ep-index{width:30px;text-align:center;color:var(--color-text-tertiary);font-size:13px;flex:none}.about-hero{display:flex;align-items:center;gap:16px;padding:8px 0 4px;flex-wrap:wrap}.about-logo{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,var(--color-primary),#722ed1);color:#fff;font-size:30px;display:flex;align-items:center;justify-content:center;box-shadow:var(--color-shadow-heavy);flex:none}.about-title{font-size:22px;font-weight:600}.about-sub{color:var(--color-text-secondary);font-size:13px;margin-top:4px}.about-text{color:var(--color-text-secondary);font-size:14px;line-height:1.9;margin:6px 0 0}.about-text b{color:var(--color-text)}.about-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;margin-top:10px}.about-card{border:1px solid var(--color-border-split);background:var(--color-bg-layout);border-radius:12px;padding:14px 16px;transition:all .2s}.about-card:hover{transform:translateY(-2px);box-shadow:var(--color-shadow)}.about-card-title{font-weight:600;font-size:14px;margin-bottom:6px;display:flex;align-items:center;gap:6px}.about-card-desc{font-size:12.5px;color:var(--color-text-secondary);line-height:1.7}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:200;opacity:0;transition:opacity .25s;pointer-events:none}.drawer-mask.show{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;right:0;bottom:0;width:340px;max-width:90vw;background:var(--color-bg-container);box-shadow:-6px 0 16px -8px #0003;z-index:201;transform:translate(100%);transition:transform .25s;display:flex;flex-direction:column}.drawer.show{transform:translate(0)}.drawer-header{padding:16px 20px;border-bottom:1px solid var(--color-border-split);display:flex;align-items:center;justify-content:space-between}.drawer-title{font-size:16px;font-weight:600}.drawer-close{border:none;background:none;font-size:18px;color:var(--color-text-secondary);cursor:pointer;line-height:1}.drawer-body{flex:1;overflow-y:auto;padding:8px 20px 20px}.settings-section{margin-top:20px}.settings-section-title{font-size:13px;color:var(--color-text-secondary);margin-bottom:12px;font-weight:500}.settings-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.settings-section-head .settings-section-title{margin-bottom:0}.check-grid{display:flex;flex-wrap:wrap;gap:8px 16px}.check-item{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer;color:var(--color-text)}.check-item input{accent-color:var(--color-primary);cursor:pointer}.stat-grid{display:flex;gap:12px;flex-wrap:wrap}.stat-card{flex:1;min-width:90px;background:var(--color-fill);border-radius:10px;padding:12px;text-align:center}.stat-card .stat-num{font-size:20px;font-weight:600;color:var(--color-primary)}.stat-card .stat-label{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.stat-list-item{display:flex;align-items:center;gap:12px;padding:8px 6px;border-bottom:1px solid var(--color-border-split);font-size:13px}.stat-list-item:last-child{border-bottom:none}.stat-rank{width:26px;text-align:center;color:var(--color-text-tertiary);font-weight:600;flex:none}.stat-endpoint{flex:1;min-width:0}.stat-endpoint .ep-name{font-weight:500}.stat-endpoint .ep-path{font-size:12px;color:var(--color-text-tertiary);font-family:monospace}.stat-count{flex:none;color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.stat-refresh-info{font-size:12px;color:var(--color-text-tertiary);text-align:center;margin-top:10px}.setting-item{display:flex;align-items:center;justify-content:space-between;padding:10px 0;gap:12px}.setting-label{font-size:14px}.setting-desc{font-size:12px;color:var(--color-text-tertiary);margin-top:2px}.switch{width:40px;height:22px;border-radius:999px;background:var(--color-border);position:relative;cursor:pointer;transition:background .2s;flex:none}.switch:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .2s;box-shadow:0 1px 3px #0000004d}.switch.on{background:var(--color-primary)}.switch.on:after{left:20px}.color-palette{display:flex;gap:10px;flex-wrap:wrap}.color-dot{width:28px;height:28px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:all .15s;position:relative}.color-dot:hover{transform:scale(1.1)}.color-dot.active{border-color:var(--color-text);box-shadow:0 0 0 2px var(--color-bg-container)}.color-dot.active:after{content:"✓";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:700}.mode-seg{display:flex;background:var(--color-fill);border-radius:8px;padding:3px;gap:3px}.mode-seg .seg-item{flex:1;text-align:center;font-size:13px;padding:5px 0;border-radius:6px;cursor:pointer;color:var(--color-text-secondary);transition:all .15s}.mode-seg .seg-item.active{background:var(--color-bg-container);color:var(--color-primary);font-weight:500;box-shadow:var(--color-shadow)}.drawer-footer{padding:14px 20px;border-top:1px solid var(--color-border-split);display:flex;gap:10px}.drawer-footer .btn{flex:1}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:300;display:none;align-items:center;justify-content:center;padding:20px}.modal-mask.show{display:flex}.modal{background:var(--color-bg-container);border-radius:12px;box-shadow:var(--color-shadow-heavy);width:640px;max-width:100%;max-height:80vh;display:flex;flex-direction:column}.modal-header{padding:16px 20px;border-bottom:1px solid var(--color-border-split);display:flex;align-items:center;justify-content:space-between}.modal-title{font-size:16px;font-weight:600}.modal-body{flex:1;overflow-y:auto;padding:12px 20px 20px}.version-item{padding:12px 0;border-bottom:1px solid var(--color-border-split)}.version-item:last-child{border-bottom:none}.version-head{display:flex;align-items:center;gap:10px}.version-num{font-weight:600;font-size:14px;color:var(--color-primary)}.version-date{font-size:12px;color:var(--color-text-tertiary)}.version-items{margin:8px 0 0;padding-left:20px;font-size:13px;color:var(--color-text-secondary)}.version-items li{margin:3px 0}.auth-area{display:flex;align-items:center;gap:8px}.user-avatar{width:34px;height:34px;border-radius:50%;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;border:2px solid var(--color-primary-bg);transition:transform .15s}.user-avatar:hover{transform:scale(1.08)}.user-avatar.admin{background:var(--color-warning);border-color:#faad1433}.auth-form{display:flex;flex-direction:column;gap:12px;padding:6px 2px}.auth-form .input{width:100%}.auth-form-row{display:flex;gap:10px}.auth-form-row .input{flex:1}.auth-switch{text-align:center;font-size:13px;color:var(--color-text-secondary)}.auth-switch a{color:var(--color-primary);cursor:pointer;text-decoration:none}.auth-trial-box{border:1px dashed var(--color-border);border-radius:10px;padding:12px;text-align:center;font-size:13px;color:var(--color-text-secondary)}html{scroll-behavior:smooth}::selection{background:var(--color-primary-bg)}img{-webkit-user-drag:none;-webkit-user-select:none;user-select:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}html{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:4px}.input:focus-visible,.select:focus-visible{outline:none}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--color-primary-bg)}.tab:focus-visible{outline:none}.btn:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 3px 10px #00000014}.btn-primary:not(:disabled):hover{box-shadow:0 4px 14px var(--color-primary-bg)}.btn:not(:disabled):active{transform:translateY(0) scale(.97);box-shadow:none}.icon-btn:hover{background:var(--color-bg-hover)}.panel.active{animation:panelIn .22s ease}@keyframes panelIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.song-cover{transition:transform .2s}.song-row:hover .song-cover{transform:scale(1.04)}.progress{transition:height .15s}.progress:hover{height:6px}.modal-mask,.drawer-mask{backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.modal-mask.show .modal{animation:modalIn .22s cubic-bezier(.4,0,.2,1)}@keyframes modalIn{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}.input:hover,.select:hover{border-color:var(--color-primary-hover)}textarea.input{height:auto;min-height:52px;padding:8px 11px;resize:vertical;line-height:1.6}.comment-item{border-radius:8px;transition:background .15s}.comment-item:hover{background:var(--color-bg-hover)}.song-detail-cover,.collection-cover{transition:transform .3s,box-shadow .3s}.song-detail-cover:hover,.collection-cover:hover{transform:scale(1.02)}html.theme-fading,html.theme-fading body,html.theme-fading *{transition:background-color .3s ease,color .3s ease,border-color .3s ease,box-shadow .3s ease!important}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}button,input,select,textarea{font-family:inherit}.site-table td{transition:background .15s}.uc-card{transition:transform .2s,box-shadow .2s}.uc-card:hover{transform:translateY(-2px);box-shadow:var(--color-shadow)}.stat-card{transition:transform .2s}.stat-card:hover{transform:translateY(-2px)}.drawer-close{transition:color .15s,transform .15s}.drawer-close:hover{color:var(--color-text);transform:scale(1.12)}.btn-link:hover{text-decoration:underline;text-underline-offset:2px}.lyric-line.ktv.active.kw-line .kw.on{text-shadow:0 0 14px var(--color-primary-bg)}.uc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.uc-card{border:1px solid var(--color-border-split);border-radius:12px;padding:16px;background:var(--color-bg-subtle)}.uc-card-title{font-size:12px;color:var(--color-text-tertiary);margin-bottom:6px}.uc-card-value{font-size:17px;font-weight:600;word-break:break-all}.uc-section{margin-top:16px}.admin-layout{display:flex;gap:16px;align-items:flex-start}.admin-side{flex:none;width:150px;display:flex;flex-direction:column;gap:4px;border:1px solid var(--color-border-split);border-radius:12px;padding:8px;background:var(--color-bg-subtle);position:sticky;top:80px}.admin-side-item{padding:9px 12px;border-radius:8px;font-size:13px;cursor:pointer;color:var(--color-text-secondary);transition:all .15s;white-space:nowrap}.admin-side-item:hover{background:var(--color-fill);color:var(--color-text)}.admin-side-item.active{background:var(--color-primary-bg);color:var(--color-primary);font-weight:600}.admin-side-sep{height:1px;background:var(--color-border-split);margin:6px 4px}.admin-main{flex:1;min-width:0}.admin-view{display:none}.admin-view.active{display:block}.admin-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.admin-toolbar .input,.admin-toolbar .select{width:auto}.site-table{width:100%;border-collapse:collapse;font-size:13px}.site-table th,.site-table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--color-border-split);word-break:break-all}.site-table th{color:var(--color-text-tertiary);font-weight:500;font-size:12px;white-space:nowrap}.site-table tr:hover td{background:var(--color-fill)}.tag-pill{display:inline-block;padding:2px 8px;border-radius:20px;font-size:12px;border:1px solid var(--color-border);color:var(--color-text-secondary)}.tag-pill.ok{border-color:var(--color-success);color:var(--color-success)}.log-list{max-height:420px;overflow-y:auto}.code-box{background:var(--color-fill);border-radius:8px;padding:10px 12px;font-family:monospace;font-size:13px;word-break:break-all;max-height:180px;overflow-y:auto;line-height:1.6}.announce-body{white-space:pre-wrap;line-height:1.7;font-size:14px;color:var(--color-text)}@media (max-width: 720px){.admin-layout{flex-direction:column}.admin-side{width:100%;flex-direction:row;flex-wrap:wrap;position:static}.admin-side-sep,.app-header-inner .brand-sub,.icon-btn span{display:none}.brand-title{white-space:nowrap;font-size:16px}#auth-duration-pill{display:none}.icon-btn{padding:0 10px}.app-header-inner{padding:0 16px}}.toast-wrap{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:1000;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none}.toast{padding:9px 16px;border-radius:8px;background:var(--color-bg-elevated);color:var(--color-text);box-shadow:var(--color-shadow-heavy);font-size:14px;display:flex;align-items:center;gap:8px;opacity:0;transform:translateY(-8px);transition:all .25s;pointer-events:auto;max-width:90vw}.toast.show{opacity:1;transform:translateY(0)}.toast-success{border-left:3px solid var(--color-success)}.toast-error{border-left:3px solid var(--color-error)}.toast-warning{border-left:3px solid var(--color-warning)}.toast-info{border-left:3px solid var(--color-primary)}.empty-state{text-align:center;color:var(--color-text-tertiary);padding:48px 0;font-size:14px}.empty-state .empty-icon{font-size:42px;margin-bottom:8px;opacity:.4}.page-loading{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-bg-layout);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:999}.page-loading .ring{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.page-loading span{color:var(--color-text-secondary);font-size:14px}.footer{text-align:center;padding:20px;color:var(--color-text-secondary);font-size:13px}[hidden]{display:none!important}.auth-form.forgot-mode>*:not(#forgot-view){display:none}.auth-form.admin2fa-mode>*:not(#admin2fa-view){display:none}@media (max-width: 768px){.main-container,.card{padding:16px}.song-detail-cover{width:100%;height:auto;aspect-ratio:1}.volume-wrap,.header-actions .brand-sub{display:none}.toplist-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}.queue-float{position:fixed;right:18px;bottom:18px;z-index:9999;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:98px;padding:10px 14px;border-radius:14px;background:var(--color-bg-elevated);color:var(--color-text);box-shadow:var(--color-shadow-heavy);border:1px solid var(--color-border-split);font-size:12px;cursor:default;-webkit-user-select:none;user-select:none;opacity:.92;transition:opacity .3s}.queue-float:hover{opacity:1}.queue-float-head{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--color-text-secondary)}.queue-float-dot{width:8px;height:8px;border-radius:50%;background:var(--color-success)}.queue-float.busy .queue-float-dot{background:var(--color-error);animation:queue-pulse 1.2s infinite}@keyframes queue-pulse{0%,to{box-shadow:0 0 #ff4d4f80}50%{box-shadow:0 0 0 6px #ff4d4f00}}.queue-float-num{font-size:24px;font-weight:700;line-height:1.15}.queue-float-sub{font-size:11px;color:var(--color-text-tertiary);white-space:nowrap}.task-panel{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:9999;width:340px;max-width:calc(100vw - 32px);max-height:300px;display:none;flex-direction:column;background:var(--color-bg-elevated);color:var(--color-text);box-shadow:var(--color-shadow-heavy);border:1px solid var(--color-border-split);border-radius:14px;overflow:hidden}.task-panel.show{display:flex}.task-panel-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;font-size:13px;font-weight:600;border-bottom:1px solid var(--color-border-split);flex-shrink:0}.tp-count{color:var(--color-primary);font-weight:700}.tp-close{border:none;background:none;cursor:pointer;color:var(--color-text-secondary);font-size:14px;padding:2px 6px}.tp-close:hover{color:var(--color-text)}.task-panel-list{overflow-y:auto;padding:8px 12px}.task-item{padding:8px 0;border-bottom:1px solid var(--color-border-split)}.task-item:last-child{border-bottom:none}.task-item-top{display:flex;align-items:center;gap:8px;font-size:12px}.task-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-item-status{color:var(--color-text-secondary);flex-shrink:0}.task-item-cancel{flex-shrink:0;border:1px solid var(--color-border);background:none;cursor:pointer;color:var(--color-error);font-size:11px;padding:2px 8px;border-radius:6px}.task-item-cancel:hover{background:var(--color-error);color:#fff}.task-item-claim{flex-shrink:0;border:1px solid var(--color-primary);background:none;cursor:pointer;color:var(--color-primary);font-size:11px;padding:2px 8px;border-radius:6px}.task-item-claim:hover{background:var(--color-primary);color:#fff}.task-item-dismiss{flex-shrink:0;border:none;background:none;cursor:pointer;color:var(--color-text-tertiary);font-size:13px;padding:2px 4px;border-radius:6px;line-height:1}.task-item-dismiss:hover{color:var(--color-text-secondary);background:var(--color-fill)}.task-item-bar{height:6px;border-radius:3px;background:var(--color-fill);overflow:hidden;margin-top:6px}.task-item-bar>div{height:100%;width:0;border-radius:3px;background:var(--color-primary);transition:width .3s}.task-item.ended .task-item-bar{display:none}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,MiSans,HarmonyOS Sans SC,Noto Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background-color:var(--color-bg-layout);background-image:radial-gradient(1100px 480px at 12% -6%,rgba(100,116,139,.055),transparent 62%),radial-gradient(900px 420px at 105% -2%,rgba(100,116,139,.035),transparent 58%);background-repeat:no-repeat;text-rendering:optimizeLegibility}html.dark body{background-image:radial-gradient(1100px 480px at 12% -6%,rgba(148,163,184,.06),transparent 62%),radial-gradient(900px 420px at 105% -2%,rgba(148,163,184,.04),transparent 58%)}a{transition:color .15s}.detail-name,.collection-name,.about-title,.drawer-title,.modal-title{letter-spacing:.3px}[id$=-page-info],.tp-count,.queue-float-num,.player-time{font-variant-numeric:tabular-nums}code{background:var(--color-fill);border-radius:5px;padding:1px 6px;font-size:.92em;font-family:ui-monospace,SFMono-Regular,Cascadia Mono,Consolas,monospace}img[src=""]{opacity:0}.app-header{border-bottom:1px solid transparent;transition:box-shadow .3s,background .3s,border-color .3s}.app-header.scrolled{border-bottom-color:var(--color-border-split);box-shadow:0 8px 24px -12px #0f172a24}html.dark .app-header.scrolled{box-shadow:0 8px 24px -12px #0009}.brand-logo{transition:transform .3s var(--ease-out)}.brand:hover .brand-logo{transform:rotate(-10deg) scale(1.08)}.brand-title{letter-spacing:.5px}.icon-btn{border-radius:999px}.icon-btn:not(:disabled):active{transform:scale(.96)}.card{border:1px solid var(--color-border-split);border-radius:14px;animation:cardIn .3s var(--ease-out)}@keyframes cardIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.card-title{position:relative;padding-left:13px}.card-title:before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:4px;border-radius:2px;background:linear-gradient(180deg,var(--color-primary-hover),var(--color-primary))}.main-container{padding-bottom:40px}.tab{letter-spacing:.3px}.tab.active{font-weight:600}.btn{border-radius:9px}.btn-sm{border-radius:8px}.btn-primary{box-shadow:inset 0 1px #ffffff29,0 1px 2px #0f172a1a}.btn-primary:not(:disabled):hover{box-shadow:inset 0 1px #ffffff29,0 4px 14px var(--color-primary-bg)}.btn-success{background-image:linear-gradient(180deg,#ffffff24,#fff0 60%)}.btn-success:not(:disabled):hover{background-image:linear-gradient(180deg,#ffffff24,#fff0 60%);box-shadow:0 4px 14px #52c41a40}.btn-danger{background-image:linear-gradient(180deg,#ffffff24,#fff0 60%)}.btn-danger:not(:disabled):hover{background-image:linear-gradient(180deg,#ffffff24,#fff0 60%);box-shadow:0 4px 14px #ff4d4f40}.site-table .btn:not(:disabled):hover,.song-actions .btn:not(:disabled):hover,.task-item .btn:not(:disabled):hover{transform:none;box-shadow:none}.input,.select{border-radius:9px}.input{caret-color:var(--color-primary)}.auth-form .input{height:38px;border-radius:10px}.auth-trial-box{background:var(--color-primary-bg);border-color:transparent;border-radius:10px}.song-row{animation:rowIn .3s var(--ease-out) both}.song-row:nth-child(2){animation-delay:.02s}.song-row:nth-child(3){animation-delay:.04s}.song-row:nth-child(4){animation-delay:.06s}.song-row:nth-child(5){animation-delay:.08s}.song-row:nth-child(6){animation-delay:.1s}.song-row:nth-child(7){animation-delay:.12s}.song-row:nth-child(8){animation-delay:.14s}.song-row:nth-child(9){animation-delay:.16s}.song-row:nth-child(10){animation-delay:.18s}@keyframes rowIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.song-row{border-radius:12px}.song-row:hover{background:linear-gradient(0deg,var(--color-bg-hover),var(--color-bg-hover))}.song-row>.song-meta:first-child{color:var(--color-text-tertiary);font-size:12px;font-variant-numeric:tabular-nums;padding-top:2px}.song-cover{border-radius:10px;box-shadow:0 1px 3px #0f172a1f}html.dark .song-cover{box-shadow:0 1px 3px #00000080}.song-name .tag{border-color:transparent;background:var(--color-fill);color:var(--color-text-secondary);font-weight:400}.song-row:hover .song-name .tag{background:var(--color-bg-container)}.player,.lyric-panel,.comment-panel{animation:rowIn .3s var(--ease-out)}.player{border-radius:16px;box-shadow:inset 0 1px #ffffff0f,var(--color-shadow-heavy)}.player-cover{border-radius:12px;box-shadow:0 4px 12px #00000059}#player-toggle{background:linear-gradient(180deg,var(--color-primary-hover),var(--color-primary));box-shadow:0 2px 10px var(--color-primary-bg);transition:background .2s,transform .1s,box-shadow .3s}#player-toggle:hover{background:linear-gradient(180deg,var(--color-primary),var(--color-primary-active))}.player.playing #player-toggle{box-shadow:0 0 0 5px var(--color-primary-bg),0 2px 10px var(--color-primary-bg)}.progress-fill{background:linear-gradient(90deg,var(--color-primary),var(--color-primary-hover))}.lyric-box{overscroll-behavior:contain;overflow-x:hidden;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 16px,#000 calc(100% - 20px),transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 16px,#000 calc(100% - 20px),transparent 100%)}.tabs{scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.comment-item{animation:rowIn .28s var(--ease-out) both}.comment-avatar{box-shadow:0 0 0 1px var(--color-border-split)}.toplist-card{border-radius:14px;animation:rowIn .35s var(--ease-out) both}.toplist-card:nth-child(2){animation-delay:.03s}.toplist-card:nth-child(3){animation-delay:.06s}.toplist-card:nth-child(4){animation-delay:.09s}.toplist-card:nth-child(5){animation-delay:.12s}.toplist-card:nth-child(6){animation-delay:.15s}.toplist-card:nth-child(7){animation-delay:.18s}.toplist-card:nth-child(8){animation-delay:.21s}.toplist-card:hover{box-shadow:0 10px 24px -10px #0f172a2e}html.dark .toplist-card:hover{box-shadow:0 10px 24px -10px #0009}.toplist-card .tl-cover{transition:transform .35s var(--ease-out)}.toplist-card:hover .tl-cover{transform:scale(1.04)}.toplist-card .tl-name{letter-spacing:.2px}.modal{border-radius:16px;border:1px solid var(--color-border-split)}.modal-header{padding:18px 22px}.modal-body{padding:14px 22px 22px}.modal-mask.show{animation:maskIn .2s ease}@keyframes maskIn{0%{opacity:0}to{opacity:1}}.modal-body,.drawer-body,.task-panel-list,.log-list{overscroll-behavior:contain}.drawer{border-left:1px solid var(--color-border-split);border-radius:16px 0 0 16px}.toast{border-radius:10px}.toast{background:#ffffffe0;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}html.dark .toast{background:#1f1f1fe0}.toast-success{background-image:linear-gradient(0deg,#52c41a14,#52c41a14)}.toast-error{background-image:linear-gradient(0deg,#ff4d4f14,#ff4d4f14)}.toast-warning{background-image:linear-gradient(0deg,#faad141a,#faad141a)}.toast-info{background-image:linear-gradient(0deg,#1677ff12,#1677ff12)}.empty-state .empty-icon{display:inline-block;animation:floatY 3s ease-in-out infinite alternate}@keyframes floatY{0%{transform:translateY(0)}to{transform:translateY(-6px)}}.task-panel.show{animation:taskIn .28s var(--ease-out)}@keyframes taskIn{0%{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%)}}.task-item-bar>div{background:linear-gradient(90deg,var(--color-primary),var(--color-primary-hover))}.queue-float{background:#ffffffd9;backdrop-filter:blur(10px) saturate(1.5);-webkit-backdrop-filter:blur(10px) saturate(1.5)}html.dark .queue-float{background:#1f1f1fd9}.site-table th{border-bottom:1px solid var(--color-border);padding-bottom:10px;letter-spacing:.3px}.site-table tbody tr:nth-child(2n) td{background:#0f172a04}html.dark .site-table tbody tr:nth-child(2n) td{background:#ffffff06}.site-table tbody tr:hover td{background:var(--color-fill)}.admin-side-item{border-radius:9px}.admin-side-item.active{box-shadow:inset 0 0 0 1px var(--color-primary-bg)}.stat-card{border-radius:12px;background:var(--color-bg-subtle)}.stat-card .stat-num{font-variant-numeric:tabular-nums}.code-box{border:1px solid var(--color-border-split);font-size:12.5px}audio{border-radius:10px}.version-item{border-radius:8px;padding:12px 10px;margin:0 -10px;transition:background .15s}.version-item:hover{background:var(--color-bg-hover)}.about-card:hover{border-color:var(--color-primary-bg)}.user-avatar{box-shadow:0 2px 8px #0f172a26}.user-avatar:not(.admin){background:linear-gradient(135deg,var(--color-primary),var(--color-primary-active))}.podcast-cate-item.active{background-image:linear-gradient(180deg,var(--color-primary-hover),var(--color-primary));box-shadow:0 2px 8px var(--color-primary-bg)}.switch:active:after{transform:scaleX(1.18)}.history-row .tag{border-radius:999px}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}.btn,.icon-btn,.tab,.player-ctrl,.admin-side-item,.podcast-cate-item,.color-dot,.mode-seg .seg-item,.switch{touch-action:manipulation}@media (hover: none){.btn:not(:disabled):hover{transform:none;box-shadow:none}.btn-primary:not(:disabled):hover{box-shadow:inset 0 1px #ffffff29,0 1px 2px #0f172a1a}.song-row:hover .song-cover{transform:none}.toplist-card:hover{transform:none;box-shadow:none}.toplist-card:hover .tl-cover,.song-detail-cover:hover,.collection-cover:hover,.uc-card:hover,.stat-card:hover,.about-card:hover,.user-avatar:hover,.color-dot:hover,.brand:hover .brand-logo{transform:none}}@media (pointer: coarse){.btn-sm{min-height:34px}.icon-btn{min-height:38px;min-width:38px}.btn-mini{height:34px;min-height:34px;padding:0 10px}.player-ctrl-sm{width:36px;height:36px}.lyric-line{padding:8px 10px}.history-row .tag{padding:4px 10px}.tp-close{padding:6px 10px}.task-item-cancel{padding:4px 10px}}@media (max-width: 400px){#btn-open-register{padding:0 8px;font-size:12px}#btn-open-login{padding:0 10px}.icon-btn{padding:0 6px}.header-actions{gap:4px}.brand{gap:6px}.brand-title{font-size:14px}.app-header-inner{padding:0 12px}.main-container{padding:12px}.card{padding:14px;border-radius:12px}.tabs{margin-bottom:14px}.tabs .tab{margin-right:18px;font-size:14px}.toplist-grid{grid-template-columns:repeat(2,1fr);gap:10px}.about-grid{grid-template-columns:1fr}.song-row{gap:10px;padding:10px 6px}.song-actions{gap:6px}.detail-name{font-size:19px}.collection-name{font-size:18px}.hint{font-size:12.5px}}@media (max-width: 480px){.input,.select{font-size:16px}.collection-cover{width:120px;height:120px}.song-detail{gap:16px}.collection-header{gap:14px}.player{padding:12px 14px}.player-cover{width:48px;height:48px}#player-toggle{width:40px;height:40px;font-size:15px}.lyric-box{max-height:230px;max-height:min(calc(230px * var(--lyric-fs, 1)),345px)}.comment-avatar{width:30px;height:30px}.comment-item{gap:10px}.empty-state{padding:36px 0}.stat-card .stat-num{font-size:18px}.modal-mask{padding:12px}.modal{width:100%!important;max-width:100%!important;max-height:86vh}.modal-header{padding:14px 16px}.modal-body{padding:12px 16px 16px}.drawer{width:100%;max-width:100vw}.site-table{font-size:12px}.site-table th,.site-table td{padding:8px}.toast-wrap{top:calc(10px + env(safe-area-inset-top,0px));width:calc(100vw - 24px)}.toast{font-size:13px}.queue-float{right:calc(10px + env(safe-area-inset-right,0px));bottom:calc(10px + env(safe-area-inset-bottom,0px));min-width:84px;padding:8px 12px}.queue-float-num{font-size:20px}.task-panel{bottom:calc(12px + env(safe-area-inset-bottom,0px));width:calc(100vw - 20px)}.drawer-footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}}@media (min-width: 481px) and (max-width: 768px){.collection-cover{width:140px;height:140px}.toplist-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}@media (min-width: 769px) and (max-width: 1180px){.main-container{padding:20px}.admin-side{width:136px}}@media (min-width: 1680px){.app-header-inner,.main-container{max-width:1360px}}@media (max-height: 520px) and (orientation: landscape){.app-header-inner{height:52px}.brand-logo{width:30px;height:30px;font-size:16px}.brand-sub{display:none}.main-container{padding:12px 16px}.lyric-box{max-height:180px}}body{min-height:100vh;min-height:100dvh}.modal{max-height:80vh;max-height:80dvh}@media (max-width: 480px){.modal{max-height:86vh;max-height:86dvh}}@media (max-height: 520px) and (orientation: landscape){.modal{max-height:92vh;max-height:92dvh}}.player.playing .player-name:before,.player.playing .player-name:after{content:"";display:inline-block;width:3px;height:4px;border-radius:1px;background:#ffffffd9;margin:0 0 0 4px;vertical-align:middle;animation:eqBar .9s ease-in-out infinite}.player.playing .player-name:after{animation-delay:.3s;box-shadow:5px 0 0 -.5px #ffffff80;margin-right:8px}.player.playing .player-name:before{animation-delay:.15s}@keyframes eqBar{0%,to{height:4px}50%{height:13px}}.select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:30px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23999999' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}html.dark .select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23aaaaaa' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.card-title .count{background:var(--color-fill);border-radius:999px;padding:1px 10px;font-variant-numeric:tabular-nums}.card-title .count:empty{display:none}.volume-slider{transition:height .15s}.volume-slider:hover{height:6px}#admin-qr-img,#personal-qr-img,#ua-qr-box img{border-radius:14px;animation:qrBreath 2.6s ease-in-out infinite}@keyframes qrBreath{0%,to{box-shadow:0 0 0 0 var(--color-primary-bg),var(--color-shadow-heavy)}50%{box-shadow:0 0 0 12px #0000,var(--color-shadow-heavy)}}.empty-state .empty-icon{filter:drop-shadow(0 6px 14px var(--color-primary-bg))}.stat-card .stat-num{background:linear-gradient(135deg,var(--color-primary-hover),var(--color-primary));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.btn,.icon-btn,.tab,.tag,.podcast-cate-item,.admin-side-item{transition-timing-function:var(--ease-out)}body>footer{padding-bottom:calc(26px + env(safe-area-inset-bottom,0px))!important}@media (min-width: 2200px){.app-header-inner,.main-container{max-width:1480px}}@media (max-width: 480px){.queue-float{top:calc(74px + env(safe-area-inset-top,0px));bottom:auto;min-width:78px}}.auth-brand{text-align:center;padding:2px 0 14px}.auth-brand-logo{width:52px;height:52px;border-radius:16px;margin:0 auto 10px;background:linear-gradient(135deg,#f5576c,#ec4141);color:#fff;font-size:26px;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px -6px #ec414180}.auth-brand-name{font-size:17px;font-weight:600;letter-spacing:.5px}.auth-brand-sub{font-size:12px;color:var(--color-text-tertiary);margin-top:3px}.page-loading .ring{border:none;background:conic-gradient(from 0deg,var(--color-primary) 0 25%,var(--color-border) 25% 100%);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px))}.version-item{position:relative;padding-left:18px;border-bottom:none!important}.version-item:before{content:"";position:absolute;left:0;top:16px;width:8px;height:8px;border-radius:50%;background:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-bg)}.version-item:after{content:"";position:absolute;left:3.5px;top:30px;bottom:-12px;width:1px;background:var(--color-border-split)}.version-item:last-child:after{display:none}.admin-view.active{animation:rowIn .22s var(--ease-out)}.stat-list-item{border-radius:8px;transition:background .15s}.stat-list-item:hover{background:var(--color-bg-hover)}html{overscroll-behavior-y:none}#cookie-modal summary{list-style:none;position:relative;padding-right:24px;-webkit-user-select:none;user-select:none}#cookie-modal summary::-webkit-details-marker{display:none}#cookie-modal summary:after{content:"";position:absolute;right:4px;top:50%;width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-70%) rotate(45deg);transition:transform .2s var(--ease-out)}#cookie-modal details[open] summary:after{transform:translateY(-30%) rotate(225deg)}input.input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--color-bg-container) inset;-webkit-text-fill-color:var(--color-text);transition:background-color 99999s ease-out}.progress:before{content:"";position:absolute;left:0;top:0;bottom:0;width:var(--buffered, 0%);background:#ffffff2e;border-radius:2px;transition:width .4s ease;pointer-events:none}.progress:hover:before{border-radius:3px}.drawer-mask,.modal-mask,.page-loading{top:0;right:0;bottom:0;left:0}.color-dot.active:after{top:0;right:0;bottom:0;left:0}@supports not (aspect-ratio: 1){.toplist-card .tl-cover{height:170px}@media (max-width: 768px){.song-detail-cover{height:auto;min-height:200px}}}@supports not (background: conic-gradient(from 0deg,#fff 0%,#000 100%)){.page-loading .ring{border:3px solid var(--color-border);border-top-color:var(--color-primary);background:none}}@supports not ((backdrop-filter: blur(2px)) or (-webkit-backdrop-filter: blur(2px))){.app-header{background:var(--color-bg-container)}.toast,.queue-float{background:var(--color-bg-elevated)}}html.overlay-open .queue-float,html.overlay-open .task-panel,html.fs-pop-open .queue-float,html.fs-pop-open .task-panel{opacity:0!important;pointer-events:none!important}.webview-guide{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 16px;margin-bottom:16px;background:#faad141a;border:1px solid rgba(250,173,20,.35);border-radius:12px;font-size:13px;color:var(--color-text-secondary);animation:rowIn .3s var(--ease-out)}#legacy-browser-blocker{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;background:#1f2329;color:#e8eaed;padding:40px 28px;text-align:center;font-family:Microsoft YaHei,PingFang SC,sans-serif}#legacy-browser-blocker.show{display:block}#legacy-browser-blocker .lb-icon{font-size:44px;margin-bottom:16px}#legacy-browser-blocker h2{font-size:20px;margin:0 0 14px;color:#fff}#legacy-browser-blocker p{font-size:14px;line-height:1.9;margin:0 0 8px;opacity:.85}#legacy-browser-blocker .lb-list{margin-top:18px;font-size:13px;line-height:2;opacity:.7;text-align:left;display:inline-block}html.kbd-nav :focus{outline:2px solid var(--color-primary);outline:2px solid #4a7dff;outline-offset:2px;border-radius:4px}html.kbd-nav .btn:focus,html.kbd-nav .tab:focus{outline:none;box-shadow:0 0 0 3px var(--color-primary-bg);outline:2px solid #4a7dff}html.kbd-nav .input:focus,html.kbd-nav .select:focus{outline:2px solid var(--color-primary);outline:2px solid #4a7dff;outline-offset:0}.webview-guide .wg-icon{font-size:16px;flex:none}.webview-guide .wg-text b{color:var(--color-text)}.webview-guide .wg-close{margin-left:auto;flex:none;height:26px;padding:0 12px;border:1px solid rgba(250,173,20,.5);border-radius:999px;background:transparent;color:var(--color-text-secondary);font-size:12px;cursor:pointer;transition:all .2s}.webview-guide .wg-close:hover{background:#faad1426;color:var(--color-text)}@media (max-width: 359px){#btn-open-register{padding:0 6px}#btn-open-login{padding:0 8px}.icon-btn{padding:0 4px}.header-actions{gap:6px}.main-container{padding:8px}.card{padding:12px;border-radius:10px}.tabs .tab{margin-right:14px;font-size:13px}.toplist-grid{grid-template-columns:1fr 1fr;gap:8px}.song-actions .btn-sm{padding:0 8px}.detail-name{font-size:17px}.collection-cover{width:100px;height:100px}.player{padding:10px 12px}.queue-float{display:none}.app-header-inner{padding:0 10px}.brand-title{display:none}}@media (forced-colors: active){.progress-fill,.task-item-bar>div,.progress:before{forced-color-adjust:none}.card,.uc-card,.admin-side,.modal,.drawer{forced-color-adjust:auto}}body{background-image:radial-gradient(1100px 480px at 10% -8%,rgba(236,65,65,.05),transparent 60%),radial-gradient(950px 460px at 104% -4%,rgba(22,119,255,.055),transparent 58%)}html.dark body{background-image:radial-gradient(1100px 480px at 10% -8%,rgba(236,65,65,.07),transparent 60%),radial-gradient(950px 460px at 104% -4%,rgba(22,104,220,.09),transparent 58%)}.card{box-shadow:var(--color-shadow),inset 0 1px #ffffffa6}html.dark .card{box-shadow:var(--color-shadow),inset 0 1px #ffffff0a}.account-bar{border-bottom:1px solid var(--color-border-split)}.tabs .tab{padding:8px 16px;margin-right:6px;border-radius:999px;transition:color .2s,background .2s,transform .15s}.tabs .tab:hover{background:var(--color-fill)}.tabs .tab:active{transform:scale(.96)}.tabs .tab.active{background:var(--color-primary-bg)}.tabs .tab:after{display:none}.btn-primary{background-image:linear-gradient(180deg,#ffffff24,#fff0 60%)}.footer{letter-spacing:.3px}