:root{
  --accent:#6fd3ff;
  --accent2:#8b7bff;
  --bg:#07090d;
  --panel:rgba(255,255,255,.045);
  --line:rgba(255,255,255,.09);
  --text:#eef3f8;
  --dim:rgba(238,243,248,.55);
  --radius:22px;
  --shadow:0 30px 80px rgba(0,0,0,.55);
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:"PingFang SC","Microsoft YaHei","Noto Sans SC",system-ui,-apple-system,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;overflow:hidden;
}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input[type=range]{-webkit-appearance:none;appearance:none;background:transparent;cursor:pointer}
input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:4px;background:rgba(255,255,255,.16)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;border-radius:50%;
  background:#fff;margin-top:-4.5px;box-shadow:0 0 0 4px rgba(111,211,255,.18);opacity:0;transition:.2s}
input[type=range]:hover::-webkit-slider-thumb{opacity:1}

/* ---------- top bar ---------- */
.topbar{
  position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;gap:18px;
  padding:14px 26px;background:linear-gradient(180deg,rgba(7,9,13,.85),rgba(7,9,13,0));
  pointer-events:none;
}
.topbar>*{pointer-events:auto}
.brand{font-weight:650;letter-spacing:.4px;font-size:15px;display:flex;align-items:center;gap:9px}
.brand em{font-style:normal;color:var(--dim);font-weight:400}
.dot{width:8px;height:8px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));
  box-shadow:0 0 14px var(--accent)}
.themes{display:flex;gap:6px;padding:4px;background:rgba(255,255,255,.05);border:1px solid var(--line);
  border-radius:999px;backdrop-filter:blur(14px)}
.chip{padding:7px 15px;border-radius:999px;font-size:13px;color:var(--dim);transition:.2s;white-space:nowrap}
.chip:hover{color:var(--text)}
.chip.active{background:rgba(255,255,255,.13);color:#fff;box-shadow:0 2px 10px rgba(0,0,0,.3)}
.badge{margin-left:auto;font-size:12px;color:var(--dim);border:1px solid var(--line);padding:6px 12px;
  border-radius:999px;backdrop-filter:blur(10px)}

.stage{position:fixed;inset:0;display:none}
body.theme-a .stage-a,body.theme-b .stage-b,body.theme-c .stage-c{display:block}

/* ---------- A: cover + lyrics ---------- */
.bg-art{position:absolute;inset:-12%;background-size:cover;background-position:center;
  filter:blur(70px) saturate(1.4) brightness(1.1);transform:scale(1.12);opacity:.62;transition:.6s}
.bg-veil{position:absolute;inset:0;background:
  radial-gradient(120% 90% at 20% 10%,rgba(7,9,13,.2),rgba(7,9,13,.86) 60%,#07090d 100%)}
.a-grid{position:relative;height:100%;display:grid;grid-template-columns:minmax(380px,44%) 1fr;
  gap:40px;padding:96px 56px 120px;align-items:center}
.a-left{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}
.art-frame{position:relative;width:min(360px,64vw);aspect-ratio:1;border-radius:26px;overflow:hidden;
  box-shadow:0 40px 90px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.07);margin-bottom:26px}
.art-frame img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.01)}
.art-glow{position:absolute;inset:0;background:linear-gradient(160deg,rgba(255,255,255,.12),transparent 45%)}
#a-title{font-size:clamp(26px,3vw,40px);margin:0;line-height:1.15;letter-spacing:-.5px}
#a-title.placeholder{color:rgba(255,255,255,.16)}
.artist{margin:2px 0 4px;color:var(--dim);font-size:15px}
.orig{margin:0 0 20px;color:rgba(238,243,248,.42);font-size:12px;letter-spacing:.3px}
.orig.center{text-align:center;margin:2px 0 0}
.lang-badge{font-size:10px;letter-spacing:.5px;border:1px solid rgba(111,211,255,.35);
  color:var(--accent);padding:2px 7px;border-radius:999px;white-space:nowrap}
.line-main{display:block}
.tr{display:block;font-size:.72em;color:rgba(255,255,255,.42);margin-top:4px;font-weight:400;letter-spacing:.2px}
.lyric-line.active .tr{color:rgba(255,255,255,.68)}
.b-orig{font-size:11px;color:rgba(238,243,248,.4);margin-top:2px}
.b-lyrics .tr{font-size:11px;margin-top:1px}
.a-controls{display:flex;align-items:center;gap:18px;margin-bottom:14px}
.icon{font-size:19px;color:var(--dim);padding:8px;border-radius:50%;transition:.2s}
.icon:hover{color:#fff;background:rgba(255,255,255,.08)}
.play{width:66px;height:66px;border-radius:50%;background:#fff;color:#08090c;font-size:22px;
  display:grid;place-items:center;box-shadow:0 12px 32px rgba(255,255,255,.18);transition:.18s}
.play:hover{transform:scale(1.05)}
.play.small{width:42px;height:42px;font-size:15px}
.seekrow{display:flex;align-items:center;gap:12px;width:100%;max-width:430px;font-size:12px;color:var(--dim);
  font-variant-numeric:tabular-nums}
.seekrow>span{min-width:34px}
.seekrow>span:last-child{text-align:right}
.seekrow.tight{max-width:520px}
.seek{flex:1;height:18px}
.subcontrols{display:flex;align-items:center;gap:10px;margin-top:14px}
.mini{font-size:12px;color:var(--dim);border:1px solid var(--line);padding:6px 12px;border-radius:999px;transition:.2s}
.mini:hover{color:#fff;border-color:rgba(255,255,255,.25)}
.mini.on{color:#08131a;background:var(--accent);border-color:transparent}
.mini.ghost{background:rgba(0,0,0,.3)}
.vol{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--dim);margin-left:auto;white-space:nowrap}
.vol input{width:84px}

.a-right{position:relative;height:min(70vh,640px);display:flex;flex-direction:column;min-width:0}
.lyric-head{font-size:12px;color:var(--dim);letter-spacing:2px;margin-bottom:14px;display:flex;gap:10px;align-items:center}
.credit{font-size:11px;letter-spacing:.2px;color:rgba(238,243,248,.45)}
.b-credit{font-size:11px;color:rgba(238,243,248,.42);margin:-6px 0 2px;letter-spacing:.2px}
.lyric-head .hint{letter-spacing:0;font-size:11px;opacity:.6}
.lyrics{flex:1;overflow-y:auto;scrollbar-width:none;mask-image:linear-gradient(180deg,transparent,#000 12%,#000 82%,transparent)}
.lyrics::-webkit-scrollbar{display:none}
.lyric-line{padding:11px 0;font-size:clamp(17px,1.6vw,21px);line-height:1.5;color:rgba(255,255,255,.38);
  transition:.25s;cursor:pointer;transform-origin:left center}
.lyric-line:hover{color:rgba(255,255,255,.7)}
.lyric-line.active{color:#fff;font-weight:600;transform:scale(1.03);text-shadow:0 0 26px rgba(111,211,255,.35)}
.lyric-empty{color:var(--dim);padding:20px 0}

.playlist-dock{position:absolute;left:56px;right:56px;bottom:18px;max-height:34vh;overflow:auto;
  background:rgba(10,14,20,.55);border:1px solid var(--line);border-radius:18px;padding:14px 18px;
  backdrop-filter:blur(18px);display:none}
.playlist-dock.open{display:block}
.dock-head{font-size:12px;color:var(--dim);letter-spacing:1px;margin-bottom:8px;display:flex;justify-content:space-between}
#a-list,#c-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:2px 18px}
#a-list li,#c-list li{padding:7px 8px;border-radius:8px;font-size:13px;color:var(--dim);cursor:pointer;
  display:flex;gap:10px;align-items:baseline}
#a-list li:hover,#c-list li:hover{background:rgba(255,255,255,.06);color:#fff}
#a-list li.now,#c-list li.now{color:#fff}
#a-list li .n,#c-list li .n{font-variant-numeric:tabular-nums;opacity:.45;width:22px;font-size:11px}
#a-list li .a,#c-list li .a{opacity:.5;font-size:11px;margin-left:auto}

/* ---------- B: playlist + bottom bar ---------- */
.b-wrap{position:absolute;inset:0 0 92px 0;display:grid;grid-template-columns:340px 1fr}
.b-side{border-right:1px solid var(--line);padding:88px 26px 104px;display:flex;flex-direction:column;gap:18px;
  background:radial-gradient(120% 70% at 10% 0%,rgba(111,211,255,.10),transparent 60%)}
.b-now{display:flex;gap:14px;align-items:center}
.b-now img{width:74px;height:74px;border-radius:14px;object-fit:cover;box-shadow:var(--shadow)}
.b-title{font-weight:650;font-size:16px;line-height:1.3}
.b-artist{color:var(--dim);font-size:12px;margin-top:3px}
.b-tag{display:inline-block;margin-top:7px;font-size:10px;letter-spacing:1px;color:var(--accent);
  border:1px solid rgba(111,211,255,.3);padding:2px 8px;border-radius:999px}
.b-lyrics{flex:1;overflow:auto;scrollbar-width:none;font-size:14px;line-height:2;color:rgba(255,255,255,.4);
  padding-right:6px;mask-image:linear-gradient(180deg,transparent,#000 8%,#000 92%,transparent)}
.b-lyrics::-webkit-scrollbar{display:none}
.b-lyrics .lyric-line{padding:2px 0;font-size:14px}
.b-lyrics .lyric-line.active{color:#fff;font-weight:600}
.offset{font-size:11px;color:var(--dim);display:flex;align-items:center;gap:8px}
.offset button{width:22px;height:22px;border:1px solid var(--line);border-radius:6px;line-height:1}
.offset span{font-variant-numeric:tabular-nums;min-width:40px;text-align:center}
.b-main{padding:88px 40px 30px;overflow:auto}
.b-head h2{margin:0 0 4px;font-size:26px;letter-spacing:-.3px}
.b-head p{margin:0 0 22px;color:var(--dim);font-size:13px}
.b-list{list-style:none;margin:0;padding:0}
.b-list li{display:flex;align-items:center;gap:14px;padding:10px 12px;border-radius:12px;cursor:pointer;transition:.15s}
.b-list li:hover{background:rgba(255,255,255,.05)}
.b-list li.now{background:rgba(111,211,255,.10)}
.b-list .n{width:26px;text-align:right;font-size:12px;color:var(--dim);font-variant-numeric:tabular-nums}
.b-list .t{font-size:14px}
.b-list .ar{font-size:12px;color:var(--dim);margin-left:8px}
.b-list .d{margin-left:auto;font-size:12px;color:var(--dim);font-variant-numeric:tabular-nums}
.playerbar{position:absolute;left:0;right:0;bottom:0;height:92px;display:flex;align-items:center;gap:24px;
  padding:0 28px;background:rgba(9,12,17,.9);border-top:1px solid var(--line);backdrop-filter:blur(20px)}
.pb-left{display:flex;align-items:center;gap:12px;width:250px;min-width:0}
.pb-left img{width:52px;height:52px;border-radius:10px;object-fit:cover}
.pb-left div div:first-child{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dim{color:var(--dim);font-size:12px}
.pb-center{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px}
.pb-btns{display:flex;align-items:center;gap:12px}
.pb-right{display:flex;align-items:center;gap:8px}
.pb-right input{width:80px}

/* ---------- C: minimal ---------- */
.c-glow{position:absolute;inset:0;background:
  radial-gradient(60% 50% at 50% 20%,rgba(139,123,255,.22),transparent 70%),
  radial-gradient(50% 40% at 80% 90%,rgba(111,211,255,.14),transparent 70%);filter:blur(30px)}
.c-wrap{position:relative;height:100%;display:flex;flex-direction:column;align-items:center;
  justify-content:center;padding:90px 24px 32px;gap:6px}
.c-meta{text-align:center;margin-bottom:6px}
.c-index{font-size:11px;letter-spacing:4px;color:var(--dim)}
#c-title{margin:6px 0 2px;font-size:clamp(22px,2.4vw,30px);letter-spacing:-.3px}
#c-artist{margin:0;color:var(--dim);font-size:13px}
.c-lyrics{flex:1;width:min(760px,92vw);overflow:auto;scrollbar-width:none;text-align:center;
  mask-image:linear-gradient(180deg,transparent,#000 15%,#000 85%,transparent);display:flex;
  flex-direction:column;justify-content:center;gap:2px}
.c-lyrics::-webkit-scrollbar{display:none}
.c-lyrics .lyric-line{font-size:clamp(16px,1.5vw,19px);padding:9px 0;color:rgba(255,255,255,.3)}
.c-lyrics .lyric-line.active{color:#fff;transform:scale(1.04);text-shadow:0 0 30px rgba(139,123,255,.5)}
.c-bottom{width:min(520px,92vw);display:flex;flex-direction:column;align-items:center;gap:10px}
.c-controls{display:flex;align-items:center;gap:22px}
.c-list{display:none;position:absolute;right:24px;bottom:24px;width:min(420px,86vw);max-height:64vh;overflow:auto;
  background:rgba(12,15,22,.92);border:1px solid var(--line);border-radius:18px;padding:16px;backdrop-filter:blur(20px)}
.c-list.open{display:block}

/* ---------- responsive ---------- */
@media (max-width:1000px){
  .a-grid{grid-template-columns:1fr;padding:84px 24px 40px;gap:18px;overflow:auto;display:block}
  .stage-a{overflow:auto}
  .art-frame{width:min(280px,70vw);margin:0 auto 18px}
  .a-left{align-items:center;text-align:center}
  .a-right{height:46vh;width:100%;margin-top:26px}
  .lyric-head{justify-content:center}
  .b-wrap{grid-template-columns:1fr}
  .b-side{display:none}
  .b-main{padding:84px 18px 20px}
  .pb-left{width:auto;flex:1}
  .pb-right{display:none}
  .playerbar{gap:10px;padding:0 14px}
  #a-list{grid-template-columns:1fr}
  .topbar{gap:8px;padding:10px 14px;flex-wrap:wrap}
  .badge{display:none}
}
