:root{--bg: #0b0d12;--bg-elevated: #12151c;--bg-card: #171b24;--bg-card-hover: #1e2430;--border: rgba(255, 255, 255, .06);--text: #f2f4f8;--text-muted: #9aa3b5;--text-dim: #6b7488;--accent: #7c5cff;--accent-2: #3ee0a8;--accent-soft: rgba(124, 92, 255, .18);--focus-border: rgba(124, 92, 255, .75);--focus-ring: 0 0 0 3px var(--accent-soft);--focus-glow: var(--focus-ring), inset 0 1px 0 rgba(255, 255, 255, .04);--danger: #ff6b8a;--player-h: clamp(6.5rem, 12vw, 8rem);--content-max: min(68.75rem, calc(100% - clamp(1rem, 4vw, 3rem)) );--page-pad-x: clamp(.75rem, 3vw, 1.5rem);--space-xs: clamp(.35rem, 1vw, .5rem);--space-sm: clamp(.5rem, 1.5vw, .75rem);--space-md: clamp(.65rem, 2vw, 1rem);--space-lg: clamp(.85rem, 2.5vw, 1.25rem);--cover: clamp(3.4rem, 10vw, 4rem);--cover-now: clamp(2.75rem, 8vw, 3.5rem);--ctrl: clamp(2.1rem, 5.5vw, 2.4rem);--ctrl-play: clamp(2.55rem, 6.5vw, 2.9rem);--fav: clamp(2rem, 5vw, 2.25rem);--brand-mark: clamp(2rem, 6vw, 2.5rem);--radius: clamp(.65rem, 1.5vw, .9rem);--shadow: 0 12px 40px rgba(0, 0, 0, .45);--font: system-ui, -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif}*,*:before,*:after{box-sizing:border-box}html{font-size:clamp(14px,.25vw + 13.2px,17px);scrollbar-gutter:stable}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased}body{background:radial-gradient(1200px 600px at 10% -10%,rgba(124,92,255,.22),transparent 55%),radial-gradient(900px 500px at 90% 0%,rgba(62,224,168,.12),transparent 50%),var(--bg)}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}button:disabled{opacity:.4;cursor:not-allowed}.app{min-height:100vh;padding-bottom:calc(var(--player-h) + 2.5rem + env(safe-area-inset-bottom,0px))}.header{position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#0b0d12b8;border-bottom:1px solid var(--border);padding:clamp(.55rem,1.8vw,1.1rem) var(--page-pad-x) clamp(.5rem,1.5vw,1rem)}.header-inner{position:relative;max-width:var(--content-max);margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:clamp(.5rem,2vw,1rem);min-height:clamp(2.4rem,6vw,2.8rem)}.brand{position:relative;z-index:2;flex:0 1 auto;min-width:0;max-width:min(42%,18rem)}.header-search{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1;width:min(100%,clamp(13rem,36vw,20rem));min-width:0;pointer-events:none}.header-search .search-field{pointer-events:auto}.controls{position:relative;z-index:2;flex:0 1 auto;max-width:min(48%,22rem)}.search-field{display:flex;align-items:center;gap:var(--space-sm);width:100%;min-height:clamp(2.15rem,5.5vw,2.5rem);padding:0 clamp(.7rem,2vw,.95rem);border-radius:999px;background:#2a2d36;border:1.5px solid rgba(255,255,255,.04);color:var(--text-muted);cursor:text;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.search-field:focus-within{border-color:var(--focus-border);background:#303440;box-shadow:var(--focus-glow);color:var(--text)}.search-icon{width:18px;height:18px;flex:0 0 auto;opacity:.72}.search-input::-webkit-search-cancel-button,.search-input::-webkit-search-decoration{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;display:none!important;width:0!important;height:0!important}.search-input::-ms-clear{display:none;width:0;height:0}.field-clear{flex:0 0 auto;position:relative;z-index:2;width:22px;height:22px;padding:0;margin:0;border:none;border-radius:0;background:transparent;color:var(--text-muted);opacity:.85;cursor:pointer;display:none;align-items:center;justify-content:center;line-height:0;flex-shrink:0;transition:opacity .15s ease,color .15s ease}.field-clear.is-visible{display:inline-flex}.field-clear svg,.field-clear .field-clear-icon{width:18px;height:18px;display:block;pointer-events:none;stroke:currentColor}.field-clear:hover{opacity:1;color:var(--text)}.search-input{flex:1 1 auto;min-width:0;border:none;outline:none;background:transparent;color:var(--text);font:inherit;font-size:16px;line-height:1.2;padding:10px 0}.search-input::placeholder{color:#9aa0ad;opacity:1}.track-list-empty{padding:28px 16px;text-align:center;color:var(--text-muted);font-size:.9rem;border-radius:var(--radius);background:#ffffff08;border:1px dashed var(--border)}@media (max-width: 540px){.section-title{gap:clamp(.35rem,2vw,.55rem);align-items:center}.section-title-right{flex:0 1 auto;min-width:0;max-width:100%;justify-content:flex-end;gap:clamp(.25rem,1.5vw,.4rem);padding-inline:clamp(.45rem,2vw,.65rem)}.section-title.is-selection-floating{flex-wrap:wrap;align-items:flex-start}.section-title.is-selection-floating .section-title-right{flex:1 1 100%;width:100%;max-width:100%;height:auto;min-height:2.6rem;flex-wrap:wrap;justify-content:flex-start;align-items:center;row-gap:.35rem;column-gap:.35rem;border-radius:14px;padding:.4rem .5rem}.section-title.is-selection-floating .playlist-count{flex:0 0 auto}.playlist-toolbar{flex:1 1 auto;min-width:0;flex-wrap:wrap;justify-content:flex-start;gap:clamp(.25rem,1.2vw,.4rem)}.section-title-right .toolbar-btn{padding-inline:clamp(.4rem,1.8vw,.65rem)}.playlist-mode-btn{min-width:3.2em}}@media (max-width: 860px){.header-inner{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand controls" "search search";gap:var(--space-sm);min-height:0}.brand{grid-area:brand;max-width:none;z-index:auto}.controls{grid-area:controls;margin-left:0;max-width:none;z-index:auto;gap:var(--space-sm)}.sort-control{justify-content:flex-end}.header-search{grid-area:search;position:static;left:auto;top:auto;transform:none;width:100%;max-width:none;pointer-events:auto;z-index:auto}.brand p{display:none}.brand h1{font-size:clamp(.95rem,3.8vw,1.1rem)}select.sort-select{width:auto;min-width:0;padding:.4rem 1.65rem .4rem .55rem;font-size:.82rem}}@media (max-width: 420px){.control-label{display:none}}.brand{display:flex;align-items:center;gap:clamp(.5rem,1.5vw,.75rem)}.brand-mark{width:var(--brand-mark);height:var(--brand-mark);border-radius:calc(var(--radius) - 2px);background:linear-gradient(135deg,var(--accent),var(--accent-2));display:grid;place-items:center;box-shadow:0 8px 24px #7c5cff59}.brand-mark svg{width:20px;height:20px}.brand h1{margin:0;font-size:1.15rem;font-weight:700;letter-spacing:.02em}.brand p{margin:2px 0 0;font-size:.78rem;color:var(--text-muted)}.controls{display:inline-flex;flex-wrap:nowrap;gap:clamp(.4rem,1.4vw,.65rem);align-items:center;justify-content:flex-end;min-width:0;margin-left:auto}.sort-control{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:clamp(.35rem,1.2vw,.5rem);min-width:0;max-width:100%}.control-label{font-size:.8rem;color:var(--text-muted);flex-shrink:0;line-height:1}select.sort-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg-card);color:var(--text);border:1.5px solid var(--border);border-radius:10px;width:max-content;max-width:100%;min-width:0;field-sizing:content;padding:.45rem 1.85rem .45rem .7rem;font-size:.88rem;line-height:1.2;outline:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%239aa3b5' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .55rem center;transition:border-color .15s ease,box-shadow .15s ease}select.sort-select:focus{border-color:var(--focus-border);box-shadow:var(--focus-glow)}.main{max-width:var(--content-max);margin:0 auto;padding:clamp(.9rem,2.5vw,1.35rem) var(--page-pad-x) 0}.section-title{--selection-stuck-space: clamp(.32rem, 1vw, .42rem);display:flex;align-items:center;justify-content:space-between;gap:clamp(.5rem,2vw,.75rem);margin-bottom:clamp(.65rem,2vw,.85rem);min-height:2.6rem}.section-title h2{margin:0;font-size:clamp(.95rem,2.4vw,1.05rem);font-weight:650;letter-spacing:.01em;flex-shrink:0;white-space:nowrap;line-height:1.2;color:var(--text)}.section-title-right{display:inline-flex;align-items:center;gap:clamp(.4rem,1.4vw,.6rem);flex-wrap:nowrap;flex:0 1 auto;flex-shrink:1;min-width:0;max-width:100%;height:2.6rem;min-height:2.6rem;padding:clamp(.28rem,.9vw,.38rem) clamp(.45rem,1.5vw,.65rem);border-radius:999px;background:linear-gradient(180deg,#ffffff0f,#ffffff08);border:1.5px solid rgba(255,255,255,.08);box-shadow:inset 0 1px #ffffff0a;overflow:visible;box-sizing:border-box}.playlist-count{font-size:.88rem;font-weight:500;color:var(--text-muted);white-space:nowrap;line-height:1.25rem;letter-spacing:.01em}.playlist-count strong{display:inline-block;min-width:1.25em;font-size:clamp(1.05rem,3.2vw,1.25rem);font-weight:700;line-height:1.25rem;color:var(--text);font-variant-numeric:tabular-nums;margin:0 2px;text-align:center}.playlist-delete-btn{flex-shrink:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.playlist-mode-btn{flex-shrink:0;min-width:3.75em;text-align:center;box-sizing:border-box}.section-title-right #btn-clear-selection,.section-title-right .btn-clear-selection{flex-shrink:0;min-width:5.5em;text-align:center;box-sizing:border-box}.section-title-right #btn-delete-selected{flex-shrink:0;min-width:8.6em;text-align:center;box-sizing:border-box;font-variant-numeric:tabular-nums}.section-title-right #btn-delete-selected .delete-count{display:inline-block;min-width:1.35em;text-align:center;font-variant-numeric:tabular-nums}.section-title-right #btn-delete-selected:disabled{opacity:.45}.section-title-right .toolbar-btn{border-radius:999px;padding:.35rem .75rem;font-size:.78rem;font-weight:550;background:#ffffff0f;border:1px solid rgba(255,255,255,.06);touch-action:manipulation;-webkit-tap-highlight-color:transparent}.section-title-right .toolbar-btn:hover:not(:disabled){background:#ffffff1a;border-color:#ffffff1a;color:var(--text)}.section-title-right .toolbar-btn-danger.is-danger{background:#ff6b8a29;border-color:#ff6b8a59;color:#ffb3c3}.section-title.is-selection-floating{position:sticky;top:var(--selection-float-top, 0px);z-index:18;padding-block:var(--selection-stuck-space);margin-top:calc(-1 * var(--selection-stuck-space));margin-bottom:calc(clamp(.65rem,2vw,.85rem) - var(--selection-stuck-space));background:var(--bg);border-bottom:none;box-shadow:none}.section-title.is-selection-floating .section-title-right{position:relative;right:auto;left:auto;max-width:100%;height:auto;min-height:2.6rem;flex-wrap:wrap;row-gap:.35rem;background:linear-gradient(180deg,#242834fa,#1a1e28fa);border:1.5px solid var(--focus-border);box-shadow:var(--focus-glow),0 8px 24px #00000059;overflow:visible}.track-list{display:flex;flex-direction:column;gap:.45rem}.track{display:grid;grid-template-columns:var(--cover) minmax(0,1fr) auto;column-gap:.75rem;row-gap:0;align-items:center;padding:.6rem .75rem;border-radius:calc(var(--radius) - 2px);background:var(--bg-card);border:1.5px solid transparent;transition:background .22s ease,border-color .22s ease,box-shadow .22s ease}.track-list.is-selecting .track{cursor:pointer}.track>.track-meta{min-width:0}.track:hover{background:var(--bg-card-hover)}.track.is-active{border-color:var(--focus-border);background:linear-gradient(90deg,#7c5cff29,#171b24f2);box-shadow:var(--focus-glow)}.track.is-selected{border-color:var(--focus-border);background:linear-gradient(90deg,#7c5cff29,#171b24f2);box-shadow:inset 3px 0 0 var(--accent),var(--focus-ring)}.track.is-active.is-selected{border-color:var(--focus-border);background:linear-gradient(90deg,#7c5cff38,#3ee0a814);box-shadow:inset 3px 0 0 var(--accent),var(--focus-ring)}.playlist-toolbar{display:inline-flex;flex-wrap:nowrap;gap:6px;align-items:center;margin:0}.playlist-toolbar[hidden]{display:none!important}.toolbar-btn{padding:7px 12px;border-radius:9px;font-size:.8rem;white-space:nowrap;font-weight:500;background:#ffffff0f;border:1px solid var(--border);color:var(--text-muted);transition:background .15s ease,color .15s ease,border-color .15s ease}.toolbar-btn:hover:not(:disabled){background:#ffffff1a;color:var(--text)}.toolbar-btn-danger.is-danger{background:#ff6b8a29;border-color:#ff6b8a73;color:var(--danger)}.toolbar-btn-danger.is-danger:hover:not(:disabled){background:#ff6b8a47;color:#ff8aa3}.track-cover{width:var(--cover);height:var(--cover);border-radius:.6rem;overflow:hidden;flex-shrink:0;position:relative;align-self:center}.track-cover img{width:100%;height:100%;object-fit:cover;display:block}.cover-fallback{width:100%;height:100%;display:grid;place-items:center;font-weight:700;font-size:.85rem;color:#ffffffe6}.track-meta{min-width:0;min-height:var(--cover);display:flex;flex-direction:column;justify-content:space-between;gap:.35rem;padding:.12rem 0;box-sizing:border-box}.track-title{margin:0;font-size:1rem;font-weight:600;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-sub{margin:0;font-size:.82rem;line-height:1.3;color:var(--text-muted);display:flex;flex-wrap:wrap;gap:.3rem .45rem;align-items:center;min-width:0}.track-artist,.track-album{flex-shrink:1;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-tags{display:inline-flex;flex-wrap:wrap;gap:.3rem .4rem;align-items:center;min-width:0}.track-tags:empty{display:none}.track-tags .tag{flex-shrink:0;white-space:nowrap}.track-tags .tag-quality:empty{display:none}.tag{display:inline-flex;align-items:center;padding:.22rem .55rem;border-radius:999px;background:#ffffff0f;color:var(--text-dim);font-size:.82rem;font-weight:600;letter-spacing:.01em;line-height:1.3}.tag.tag-cache,.tag.status-device-cached{color:#3ee0a8;background:#3ee0a824}.tag.tag-status.status-pending{color:#ffb347;background:#ffb34729}.tag.tag-status.status-err{color:#ff6b8a;background:#ff6b8a29}.tag.tag-quality,.tag.quality-pill{color:#cbbdff;background:#7c5cff2e}.tag.tag-platform{color:#7eb6ff;background:#2b8cff29}.tag.tag-other{color:#9aa3b5;background:#ffffff12}.track-duration{font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--text-muted);min-width:clamp(2rem,7vw,2.5rem);text-align:right;line-height:1.25}.track-actions{display:flex;align-items:center;justify-content:flex-end;gap:.15rem;flex-shrink:0;align-self:center;min-height:var(--cover)}.fav-btn{width:var(--fav);height:var(--fav);min-width:var(--fav);min-height:var(--fav);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text-dim);transform:none;padding:0;margin:0;border:none;outline:none;box-shadow:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:color .15s ease,background .15s ease}.fav-btn:focus,.fav-btn:focus-visible{outline:none;box-shadow:none;border:none}.fav-btn:active{transform:none;background:transparent}.fav-btn.is-on{color:var(--danger)}@media (hover: hover) and (pointer: fine){.fav-btn:hover{background:#ffffff0f;color:var(--danger);transform:none}.fav-btn.is-on:hover{color:#ff8aa3}}.fav-btn svg{width:18px;height:18px;display:block}.player{position:fixed;left:0;right:0;bottom:0;z-index:40;min-height:var(--player-h);height:auto;padding-bottom:env(safe-area-inset-bottom,0px);background:#0c0e14eb;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-top:1px solid var(--border);box-shadow:0 -10px 40px #00000059;touch-action:none;overscroll-behavior:none}.player-inner{max-width:var(--content-max);margin:0 auto;height:auto;min-height:var(--player-h);padding:clamp(.5rem,1.4vw,.85rem) var(--page-pad-x) clamp(.55rem,1.4vw,.85rem);display:grid;grid-template-columns:minmax(0,1fr) minmax(12rem,1.4fr) minmax(0,1fr);gap:clamp(.5rem,2vw,1rem);align-items:center}.now-playing{display:flex;align-items:center;gap:12px;min-width:0}.now-cover{width:var(--cover-now);height:var(--cover-now);border-radius:50%;overflow:hidden;flex-shrink:0;box-shadow:var(--shadow),0 0 0 2px #ffffff0f;will-change:transform}.now-cover img,.now-cover .cover-fallback{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%}@keyframes now-cover-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.now-cover.is-spinning{animation:now-cover-spin 12s linear infinite;animation-play-state:paused}.now-cover.is-spinning.is-playing{animation-play-state:running}@media (prefers-reduced-motion: reduce){.now-cover.is-spinning{animation:none}}.now-text{min-width:0}.now-title{margin:0;font-size:.92rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .16s ease}.now-artist{margin:3px 0 0;font-size:.78rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.transport{display:flex;flex-direction:column;gap:8px;align-items:stretch}.transport-btns{display:flex;justify-content:center;align-items:center;gap:8px}.icon-btn{width:var(--ctrl);height:var(--ctrl);padding:0;margin:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;line-height:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--text);transition:background .15s ease,transform .12s ease}.icon-btn:hover:not(:disabled){background:#ffffff14}.icon-btn.play{width:var(--ctrl-play);height:var(--ctrl-play);padding:0;line-height:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--text);color:#0b0d12}.icon-btn.play:hover:not(:disabled){background:#fff;transform:scale(1.04)}.icon-btn svg{width:18px;height:18px;display:block;flex-shrink:0}.icon-btn.play svg{width:20px;height:20px;display:block}@media (max-width: 820px){.transport-btns{width:100%;justify-content:center;gap:clamp(.65rem,4vw,1rem)}.icon-btn.play{display:inline-flex;align-items:center;justify-content:center}.icon-btn.play[aria-label=播放] svg{transform:translate(.35px,-.5px)}#btn-prev .skip-prev{transform:translate(.75px)}#btn-next .skip-next{transform:translate(-.75px)}}.seek-row{display:grid;grid-template-columns:42px 1fr 42px;gap:8px;align-items:center}.seek-track{position:relative;height:18px;display:flex;align-items:center;touch-action:none}.seek-buffer{position:absolute;left:0;top:50%;height:5px;transform:translateY(-50%);border-radius:999px;width:0%;background:#ffffff47;pointer-events:none;z-index:0}.seek-buffer.is-local{background:#ffffff47}.seek-track .seek-range,.seek-track .range{position:relative;z-index:1;background:#ffffff1a;touch-action:none}.play-status{margin:.45rem 0 0;min-height:1.35em;font-size:.85rem;line-height:1.4;text-align:center;color:transparent;font-weight:600;overflow:visible}.play-status:not(:empty){color:var(--text-muted)}.play-status.is-err:not(:empty){color:#ff7a96;text-shadow:0 0 12px rgba(255,107,138,.35)}.play-status.is-ok:not(:empty){color:#5ef0b8}.play-status.is-pending:not(:empty){color:#ffc56a}.bulk-cache-status{margin:.15rem 0 0;min-height:0;font-size:.8rem;line-height:1.4;text-align:center;color:transparent;font-weight:600}.bulk-cache-status:not(:empty){color:#ffc56a;min-height:1.35em}.bulk-cache-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.45rem;margin-top:.35rem}.bulk-cache-actions:empty{display:none}.soft-tip{display:none!important}.soft-tip.is-on{opacity:1;transform:translate(-50%)}.soft-tip.is-err{background:#171b24f0;border-color:#ff6b8a59;color:#ff9db0;box-shadow:0 10px 28px #0006,0 0 0 1px #ff6b8a14}.soft-tip.is-ok{background:#171b24f0;border-color:#3ee0a859;color:#3ee0a8;box-shadow:0 10px 28px #0006,0 0 0 1px #3ee0a814}@media (max-width: 820px){.soft-tip{bottom:calc(clamp(8.5rem,30vh,12rem) + env(safe-area-inset-bottom,0px));font-size:.8rem;padding:.6rem .85rem}}.track-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0;max-width:min(280px,42vw)}.track-fail{max-width:100%;padding:.15rem .45rem;border-radius:999px;background:#ff6b8a33;border:1px solid rgba(255,122,150,.45);color:#ff8aa3;font-size:.68rem;font-weight:600;line-height:1.3;text-align:right;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.time{font-size:.72rem;color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:center}.range{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;border-radius:999px;background:#ffffff1f;outline:none;cursor:pointer}.range::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;border-radius:50%;background:var(--text);box-shadow:0 0 0 3px #7c5cff40}.range::-moz-range-thumb{width:13px;height:13px;border:none;border-radius:50%;background:var(--text)}.volume{display:flex;align-items:center;justify-content:flex-end;gap:8px}.volume .range{width:clamp(4.5rem,12vw,6.5rem)}.empty-now{color:var(--text-muted);font-size:.88rem}.hint{margin-top:18px;padding:12px 14px;border-radius:12px;background:#ffffff08;border:1px solid var(--border);color:var(--text-dim);font-size:.78rem;line-height:1.55}kbd{display:inline-block;padding:1px 6px;border-radius:5px;background:#ffffff14;border:1px solid var(--border);font-size:.72rem;font-family:ui-monospace,monospace}@media (max-width: 820px){.player{height:auto;min-height:0}.player-inner{grid-template-columns:1fr;grid-template-rows:auto auto auto;height:auto;gap:var(--space-xs);padding:var(--space-sm) var(--page-pad-x) calc(var(--space-sm) + env(safe-area-inset-bottom,0px))}.app{padding-bottom:calc(clamp(10.5rem,36vh,14rem) + env(safe-area-inset-bottom,0px))}.now-playing{order:1}.transport{order:2}.volume{order:3;justify-content:center}.volume .range{width:min(12rem,55vw)}}@media (max-width: 520px){.player-inner{grid-template-rows:auto auto}.volume{display:none}.app{padding-bottom:calc(clamp(8.5rem,30vh,11rem) + env(safe-area-inset-bottom,0px))}}@media (max-width: 640px){:root{--cover: clamp(3.6rem, 19vw, 4.1rem)}.track{padding:.55rem .65rem;column-gap:.7rem;align-items:center}.track-meta{min-height:var(--cover);justify-content:space-between;gap:.3rem;padding:.1rem 0}.track-actions{align-self:center;min-height:var(--cover)}.track-title{font-size:.95rem;line-height:1.22}.track-sub{font-size:.78rem;line-height:1.28;gap:.28rem .4rem}.track-artist{max-width:none}.track-tags{flex:0 0 100%;max-width:100%}.track-side{max-width:4.5rem;gap:2px}.track-duration{font-size:.76rem;min-width:0}.track-fail{display:none}.fav-btn{width:2.6rem;height:2.6rem;min-width:2.6rem;min-height:2.6rem}.fav-btn svg{width:1.15rem;height:1.15rem}.tag{padding:.2rem .5rem;font-size:.78rem}}.import-panel{margin-bottom:clamp(.65rem,2vw,.9rem);padding:clamp(.85rem,2.2vw,1.1rem) clamp(.95rem,2.4vw,1.15rem);border-radius:var(--radius);background:#1a1f2a;border:1px solid rgba(255,255,255,.08)}.import-panel h2{margin:0 0 10px;font-size:.95rem;font-weight:600;line-height:1.25rem;min-height:1.25rem}.import-row{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch;min-height:2.8rem}.import-input-wrap{flex:1 1 220px;min-width:0;display:flex;align-items:center;gap:var(--space-sm, .5rem);min-height:2.8rem;padding:0 clamp(.7rem,2vw,.95rem);box-sizing:border-box;background:#0e1118;color:var(--text-muted);border:1.5px solid rgba(255,255,255,.18);border-radius:12px;box-shadow:inset 0 1px #ffffff0a,0 0 0 1px #00000040;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease,color .15s ease;cursor:text}.import-input-wrap:hover{border-color:#ffffff47;background:#12161f}.import-input-wrap:focus-within{border-color:var(--focus-border);background:#12161f;color:var(--text);box-shadow:var(--focus-glow)}.import-input{flex:1 1 auto;width:auto;min-width:0;background:transparent;color:var(--text);border:none;border-radius:0;padding:12px 0;min-height:0;font-size:16px;font-family:inherit;box-sizing:border-box;outline:none;box-shadow:none}.import-clear.field-clear{position:static;transform:none;right:auto;top:auto;color:inherit}.import-input::placeholder{color:#a7b0c2;opacity:1}.import-input:disabled{opacity:.6}.import-btn{min-height:2.8rem;box-sizing:border-box;flex:0 0 auto;padding:10px 18px;border-radius:10px;background:linear-gradient(135deg,var(--accent),#5a8dff);color:#fff;font-weight:600;font-size:.88rem;transition:filter .15s ease}.import-btn:hover:not(:disabled){filter:brightness(1.08)}.import-tools{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.65rem}.cache-clear-btn{flex:0 0 auto;min-height:2rem;padding:.35rem .85rem;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:#ffffff0a;color:var(--text-muted);font-size:.78rem;font-weight:600;letter-spacing:.01em;transition:background .15s ease,color .15s ease,border-color .15s ease}@media (hover: hover) and (pointer: fine){.cache-clear-btn:hover:not(:disabled){background:#ff6b8a1f;border-color:#ff6b8a59;color:#ffb3c2}}.cache-clear-btn.is-armed{background:#ff6b8a33;border-color:#ff6b8a8c;color:#ff8aa3}.cache-clear-btn:disabled,.cache-clear-btn.is-busy{opacity:.65;cursor:default}@media (max-width: 540px){.import-tools{margin-top:.55rem}.cache-clear-btn{min-height:2.15rem;padding:.4rem .95rem;font-size:.8rem}}.import-status{margin:10px 0 0;font-size:.8rem;line-height:1.45;min-height:1.45em}.import-status.is-pending,.import-status.is-ok{color:var(--accent-2)}.import-status.is-err{color:var(--danger)}.import-hint{margin:8px 0 0;font-size:.72rem;line-height:1.45;min-height:4.35em;color:var(--text-dim)}.track-album{color:var(--text-dim);max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tag.status-pending{color:#ffb347;background:#ffb34729}.tag.status-ok{color:var(--accent-2);background:#3ee0a81a}.tag.status-err{color:#ff6b8a;background:#ff6b8a29}.track.is-pending{opacity:.72}.version-badge{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;flex-shrink:0;min-width:4.75rem;max-width:100%;min-height:1.85rem;padding:clamp(.3rem,1vw,.4rem) clamp(.55rem,1.8vw,.75rem);border-radius:999px;background:var(--accent-soft);border:1px solid rgba(124,92,255,.35);color:#cbbdff;font-size:clamp(.7rem,2.2vw,.78rem);font-weight:600;letter-spacing:.02em;line-height:1.2;transition:background .15s ease,border-color .15s ease,color .15s ease;box-sizing:border-box}.version-badge .version-num{display:inline-flex;align-items:center;min-width:4.2em;justify-content:center;text-align:center;font-variant-numeric:tabular-nums;line-height:1;color:inherit}.version-badge:hover{background:#7c5cff47}.version-badge.has-update{background:var(--accent-soft);border-color:#7c5cff59;color:var(--accent-2)}.version-badge.has-update:hover{background:#7c5cff47}.version-updated{display:inline-flex;align-items:center;justify-content:center;gap:.32em;flex-shrink:0;margin:0;padding:0;font-size:.68rem;font-weight:700;line-height:1;color:var(--accent-2);letter-spacing:0}.version-updated .version-new-label{line-height:1;white-space:nowrap;font-variant-numeric:tabular-nums}.version-updated:before{content:"";width:.42em;height:.42em;border-radius:50%;flex:0 0 auto;background:currentColor;box-shadow:0 0 0 .22em #3ee0a847;transform:translateY(.04em)}html.version-modal-open,html.version-modal-open body{overflow:hidden}.version-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#04060ab8;display:grid;place-items:center;padding:24px 16px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overscroll-behavior:none}.version-modal{width:min(560px,100%);max-height:min(86vh,820px);overflow:auto;overscroll-behavior:contain;background:var(--bg-elevated);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow)}.version-modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg-elevated);z-index:1}.version-modal-header h2{margin:0;font-size:1.05rem}.version-close{width:32px;height:32px;border-radius:8px;font-size:1.35rem;line-height:1;color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border)}.version-close:hover{color:var(--text);border-color:var(--focus-border);box-shadow:var(--focus-ring)}.version-modal-body{padding:16px 18px 22px}.version-current-line{margin:0 0 14px;color:var(--text-muted);font-size:.9rem}.version-current-line strong{color:var(--text)}.version-meanings,.version-history{margin-top:18px}.version-meanings h3,.version-history h3{margin:0 0 8px;font-size:.92rem}.version-meanings ul{margin:0;padding-left:1.15rem;color:var(--text-muted);font-size:.82rem;line-height:1.55}.version-history-list{display:flex;flex-direction:column;gap:12px}.version-history-item{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:12px 14px}.version-history-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:6px}.version-history-head time{margin-left:auto;font-size:.72rem;color:var(--text-dim)}.version-type-pill{font-size:.68rem;font-weight:600;padding:2px 8px;border-radius:999px;background:#ffffff0f;color:var(--text-muted)}.version-type-pill.type-major{color:#ffb347;background:#ffb34724}.version-type-pill.type-minor{color:#cbbdff;background:#7c5cff29}.version-type-pill.type-patch{color:var(--accent-2);background:#3ee0a81f}.version-changes{margin:0;padding-left:1.1rem;font-size:.82rem;color:var(--text-muted);line-height:1.5}.version-empty{margin:0;color:var(--text-dim);font-size:.82rem}.retry-btn{flex-shrink:0;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,107,138,.45);background:#ff6b8a24;color:#ff8aa3;font-size:.72rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.retry-btn:hover{background:#ff6b8a3d;border-color:#ff6b8ab3;color:#ffb3c1}
