/* 版式参照 千千音乐 music.91q.com：
   容器 1200px / 深灰底 #1f1f1f / 品牌红 #e61723 / 模块标题 28px
   歌单卡 5 列(224px) / 歌手 6 列圆形头像 / 宽卡 4 列(285px) / hover 白色圆形播放键 60px */
:root{
  --bg:#1f1f1f;
  --panel:#2a2a2a;
  --panel-2:#333;
  --line:#3a3a3a;
  --text:#f5f5f5;
  --muted:#909399;
  --brand:#e61723;
  --brand-dark:#c71721;
  --brand-rgb:230,23,35;
  --brand-2:#ff5a45;
  --w:1200px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  /* 字面值在前：老内核（IE/Presto/EdgeHTML 12-14）无 var() 时兜底，
     现代引擎取后面的 var()。播放页深色底不白屏是兼容底线 */
  background:#1f1f1f;background:var(--bg);
  color:#f5f5f5;color:var(--text);
  font-family:"PingFang SC","Microsoft YaHei","Noto Sans SC",system-ui,-apple-system,sans-serif;
  padding-bottom:40px;
  min-height:100vh;
  /* iOS Safari：100vh 含地址栏/工具栏区域，会撑出多余滚动；
     -webkit-fill-available 取可见区域高度（旧 iOS 用 min- 前缀属性） */
  min-height:-webkit-fill-available;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input{font-family:inherit}
.wrap{width:var(--w);margin:0 auto}
/* 窄屏时正文容器也收成 96%，否则固定 1200px 会撑破视口、整页横向溢出 */
@media(max-width:1200px){.wrap{width:96%}}

/* ---------------- 顶栏（对应 .page-header / .header-content） ---------------- */
.page-header{box-shadow:0 2px 10px 0 rgba(0,0,0,.35);background:var(--bg);position:sticky;top:0;z-index:50;border-bottom:3px solid var(--brand)}
/* 7 项导航 + 搜索 + 指令集已经吃掉 1317px，超出原 1200 容器；加「游戏」后必须放宽并收窄单项 */
.header-content{width:min(1400px,96%);margin:0 auto;display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;padding:16px 0}
.logo{display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;flex-shrink:0}
.logo > *+*{margin-left:10px}
.logo-img{
  width:42px;height:42px;object-fit:contain;
  filter:drop-shadow(0 0 10px rgba(var(--brand-rgb),.45));
}
.logo-text{font-size:20px;font-weight:700;letter-spacing:1px;color:var(--brand)}
/* 导航：每项独立胶囊 + 图标，靠「块」而不是靠「间距」来区分 */
.header-nav{margin:0 0 0 28px;display:flex;display:-ms-flexbox;flex-shrink:0}
.header-nav > *+*{margin-left:8px}
.header-nav a{
  display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;white-space:nowrap;
  font-size:16px;color:#c9c9c9;padding:9px 14px;border-radius:24px;
  border:1px solid transparent;transition:.18s;position:relative;
}
.header-nav a > *+*{margin-left:8px}
.header-nav a:hover{color:#fff;background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.1)}
.header-nav a.active{
  color:#fff;font-weight:600;
  background:linear-gradient(135deg,var(--brand),var(--brand-2));
  border-color:rgba(255,255,255,.16);
  box-shadow:0 4px 14px rgba(var(--brand-rgb),.34);
}
.nav-ico{
  width:18px;height:18px;flex-shrink:0;
  fill:none;stroke:currentColor;stroke-width:1.9;
  stroke-linecap:round;stroke-linejoin:round;opacity:.85;
}
.header-nav a.active .nav-ico{opacity:1}
/* 「游戏」新入口角标 */
.nav-new{
  position:absolute;top:-3px;right:-4px;
  font-size:10px;line-height:1;font-weight:700;font-style:normal;
  padding:3px 5px;border-radius:8px;
  background:var(--brand);color:#1a1a1a;
  box-shadow:0 2px 6px rgba(var(--brand-rgb),.4);
  pointer-events:none;
}
@media(max-width:1320px){
  .header-content{width:96%}
  .header-nav{margin-left:18px}
  .header-nav > *+*{margin-left:5px}
  .header-nav a{padding:9px 10px;font-size:15px}
  .search-box input{width:168px;padding:0 12px}
  .header-right > *+*{margin-left:14px}
}
@media(max-width:1200px){
  .header-content{width:96%;padding:12px 0}
  .header-nav{margin-left:16px}
  .header-nav > *+*{margin-left:6px}
  .header-nav a{padding:8px 14px;font-size:15px}
}

/* 移动端汉堡按钮（桌面隐藏，≤900px 显示） */
.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:4px;width:40px;height:40px;flex-shrink:0;padding:0 9px;border:1px solid var(--line);border-radius:10px;background:var(--panel);cursor:pointer}
.nav-toggle span{display:block;width:20px;height:2px;background:var(--text);border-radius:2px;transition:transform .2s,opacity .2s}
.page-header.nav-open .nav-toggle span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.page-header.nav-open .nav-toggle span:nth-child(2){opacity:0}
.page-header.nav-open .nav-toggle span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
/* 移动端搜索（仅折叠菜单内显示，桌面隐藏） */
.mn-search{display:none}
@media(max-width:900px){
  .nav-toggle{display:inline-flex}
  .header-content{justify-content:space-between;gap:10px}
  .header-nav{
    position:absolute;top:100%;left:0;right:0;z-index:60;
    flex-direction:column;align-items:stretch;gap:2px;
    background:var(--bg);border-bottom:1px solid var(--line);
    padding:8px 14px 14px;box-shadow:0 12px 30px rgba(0,0,0,.4);
    display:none;
  }
  .page-header.nav-open .header-nav{display:flex}
  .header-nav a{border-radius:10px;justify-content:flex-start;font-size:15px;padding:11px 14px}
  .header-right .search-box{display:none}
  .header-right{margin-left:0;gap:10px}
  #authArea{margin-left:0}
  .mn-search{display:block;margin:6px 0 2px}
  .mn-search input{width:100%;height:38px;padding:0 14px;border-radius:19px;border:1px solid var(--line);background:#2a2a2a;color:var(--text);font-size:14px;outline:none}
  .mn-search input:focus{border-color:var(--brand)}
}
.header-right{margin-left:auto;display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;padding:4px 0}
.header-right > *+*{margin-left:24px}
.search-box{position:relative}
.search-box input{
  width:230px;height:36px;padding:0 16px;border-radius:36px;
  border:1px solid var(--line);background:#2a2a2a;color:var(--text);outline:none;font-size:13px;
}
.search-box input:focus{border-color:var(--brand)}
.search-box input::placeholder{color:#7c7c7c}
.sign-in{font-size:14px;color:#d8d8d8;cursor:pointer;line-height:36px}
.sign-in:hover{color:var(--brand)}

/* 右上角「播放统计」按钮（原「AI 生成标识说明」的位置） */
.stats-btn{
  display:inline-flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;height:36px;padding:0 18px;
  border:1px solid var(--line);border-radius:36px;background:var(--panel);
  color:#d8d8d8;font-size:14px;white-space:nowrap;text-decoration:none;transition:.18s;
}
.stats-btn svg{
  width:16px;height:16px;margin-right:7px;
  fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
.stats-btn:hover{background:var(--brand);border-color:var(--brand);color:#fff}
@media(max-width:480px){
  .stats-btn{padding:0 14px;font-size:13px}
}

/* ---------------- 焦点轮播（对应 .focus-box / el-carousel--card） ---------------- */
/* 窄屏时同样收成 96% 居中 —— 否则固定 1200 会向左溢出，整个轮播（含箭头）看着就「没居中」 */
.focus-box{margin:30px auto;width:var(--w);max-width:96%}
.focus-wrap{position:relative;height:340px;overflow:hidden}
.focus-slide{
  position:absolute;left:50%;top:0;width:660px;height:340px;border-radius:12px;overflow:hidden;
  transition:transform .45s ease,opacity .45s ease;cursor:pointer;opacity:0;pointer-events:none;
}
.focus-slide .fs-bg{position:absolute;top:0;left:0;right:0;bottom:0;display:grid;display:-ms-flexbox;place-items:center;align-items:center;justify-items:center;-ms-flex-align:center;-ms-flex-pack:center}
.focus-slide .fs-bg span{font-size:120px;font-weight:800;color:rgba(255,255,255,.16)}
.focus-slide .fs-mask{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,rgba(0,0,0,.72),rgba(0,0,0,.15))}
.focus-slide .fs-info{position:absolute;left:44px;bottom:52px;max-width:420px}
.focus-slide .fs-tag{font-size:12px;color:#fff;background:var(--brand);display:inline-block;
  padding:3px 10px;border-radius:4px;margin-bottom:14px}
.focus-slide .fs-title{font-size:30px;font-weight:700;line-height:1.3;margin-bottom:10px;text-shadow:0 2px 10px rgba(0,0,0,.5)}
.focus-slide .fs-desc{font-size:14px;color:rgba(255,255,255,.78);line-height:1.7}
.focus-slide.pos-cur{transform:translateX(-50%);opacity:1;pointer-events:auto;z-index:3}
.focus-slide.pos-left{transform:translateX(calc(-50% - 430px)) scale(.86);opacity:.45;pointer-events:auto;z-index:2}
.focus-slide.pos-right{transform:translateX(calc(-50% + 430px)) scale(.86);opacity:.45;pointer-events:auto;z-index:2}
/* 箭头：位于整个轮播区（1200px）的左右两侧、垂直居中 */
.focus-arrow{
  position:absolute;top:50%;transform:translateY(-50%);z-index:5;
  width:48px;height:48px;border-radius:50%;
  background:rgba(0,0,0,.55);border:1.5px solid rgba(255,255,255,.6);color:#fff;
  display:grid;display:-ms-flexbox;place-items:center;align-items:center;justify-items:center;-ms-flex-align:center;-ms-flex-pack:center;cursor:pointer;transition:.2s;
  box-shadow:0 3px 12px rgba(0,0,0,.45);
}
.focus-arrow svg{
  width:22px;height:22px;fill:none;stroke:currentColor;
  stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;
}
.focus-arrow:hover{background:var(--brand);border-color:var(--brand);transform:translateY(-50%) scale(1.08)}
.focus-arrow.left{left:14px}
.focus-arrow.right{right:14px}
.focus-dots{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);z-index:6;display:flex;display:-ms-flexbox}
.focus-dots > *+*{margin-left:8px}
.focus-dots i{width:20px;height:3px;border-radius:2px;background:rgba(255,255,255,.35);cursor:pointer}
.focus-dots i.on{background:var(--brand)}

/* ---------------- 标签区（对应 .tag-box） ---------------- */
.tag-box{width:var(--w);max-width:96%;margin:30px auto;display:flex;display:-ms-flexbox;flex-wrap:wrap;-ms-flex-wrap:wrap}
.tag-box > *{margin:0 10px 10px 0}
.tag-box a{
  background:#2a2a2a;border-radius:40px;color:#c9c9c9;height:40px;line-height:40px;
  padding:0 30px;font-size:14px;transition:.18s;
}
.tag-box a:hover{background:var(--brand);color:#fff}
.tag-box a.dim-label{background:transparent;color:var(--muted);padding:0 8px 0 0;cursor:default}
.tag-box a.dim-label:hover{background:transparent;color:var(--muted)}

/* ---------------- 模块（对应 .mod / .mod-header） ---------------- */
.mod{width:var(--w);max-width:96%;margin:0 auto 40px}
.mod-header{display:flex;display:-ms-flexbox;align-items:baseline;-ms-flex-align:baseline;padding-bottom:26px}
.mod-header .title{font-size:28px;line-height:28px;font-weight:700}
.mod-header .sub{margin-left:14px;font-size:13px;color:var(--muted)}
.mod-header .more{margin-left:auto;font-size:14px;color:var(--muted)}
.mod-header .more:hover{color:var(--brand)}

/* ---------------- 首页榜单三栏：MELO 歌单播放栏（最左，最宽） + 热歌榜（本周） + 历史榜单（已归档） ---------------- */
.rank-duo{
  width:var(--w);max-width:96%;margin:0 auto 40px;
  display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr) minmax(0,1fr);grid-gap:24px;align-items:start;
}
.rank-duo .mod{width:100%;max-width:none;margin:0}
/* 三栏变窄：榜单行去掉歌手列，只留 序号/歌名/时长 */
.rank-duo .srow{grid-template-columns:44px minmax(0,1fr) 64px;grid-gap:10px;padding:12px 14px}
.rank-duo .srow .col{display:none}
/* 中等宽度：MELO 栏通栏放最上，两榜单在下并排 */
@media(max-width:1100px){
  .rank-duo{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .rank-duo .melo-mod{grid-column:1 / -1}
}
@media(max-width:900px){.rank-duo{grid-template-columns:minmax(0,1fr)}}

/* ---------------- 活跃榜（首页右栏模块 + #/active 完整页） ---------------- */
.act-list{display:flex;flex-direction:column}
.act-row{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid rgba(255,255,255,.05)}
.act-row:last-child{border-bottom:0}
.act-row.top .act-no{color:var(--brand)}
.act-row.me{background:rgba(var(--brand-rgb),.10)}
.act-no{width:20px;flex:none;text-align:center;font-size:13px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.act-av{position:relative;width:30px;height:30px;flex:none;border-radius:50%;overflow:hidden;
  background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center}
.act-av i{font-style:normal;font-size:12px;color:var(--muted);font-weight:700}
.act-av img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;display:block}
.act-nm{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.act-nm > b{display:flex;align-items:center;gap:5px;font-size:13.5px;font-weight:600;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.act-nm > span{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.act-on{width:6px;height:6px;flex:none;border-radius:50%;background:#3ddc84;box-shadow:0 0 0 2px rgba(61,220,132,.16)}
.act-tm{flex:none;font-size:12.5px;color:var(--brand);font-variant-numeric:tabular-nums}
.act-lead{font-size:13px;color:var(--muted);margin:-6px 0 16px;line-height:1.7}
.act-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}
.act-metric{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:13px 16px}
.act-metric span{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}
.act-metric b{font-size:20px;font-weight:700;color:var(--text)}
.act-card{padding:8px 6px 14px}
.act-tip{margin:12px 14px 0;font-size:12px;color:var(--muted)}
@media(max-width:600px){
  .act-metrics{gap:8px}
  .act-metric{padding:10px 10px}
  .act-metric b{font-size:17px}
  .act-row{padding:8px;gap:8px}
  .act-av{width:26px;height:26px}
}

/* ---------------- 历史榜单：周选择器 ---------------- */
.week-picker{display:flex;display:-ms-flexbox;flex-wrap:wrap;-ms-flex-wrap:wrap;margin-bottom:18px}
.week-picker .wp-item{
  display:flex;display:-ms-flexbox;flex-direction:column;-ms-flex-direction:column;margin:0 10px 10px 0;padding:8px 16px;border-radius:8px;
  background:var(--panel);border:1px solid transparent;transition:.18s;
  text-decoration:none;color:var(--text);
}
.week-picker .wp-item b{font-size:14px;font-weight:600}
.week-picker .wp-item span{margin-top:3px;font-size:12px;color:var(--muted)}
.week-picker .wp-item:hover{border-color:var(--brand)}
.week-picker .wp-item.on{background:var(--brand);border-color:var(--brand)}
.week-picker .wp-item.on b,.week-picker .wp-item.on span{color:#fff}
.week-head{
  display:flex;display:-ms-flexbox;flex-wrap:wrap;align-items:baseline;-ms-flex-align:baseline;margin-bottom:14px;padding-bottom:14px;
  row-gap:6px;border-bottom:1px solid var(--line);
}
.week-head b{font-size:20px;font-weight:700;flex:0 0 auto}
.week-head span{flex:1 1 320px;min-width:0;margin-left:12px;font-size:14px;color:var(--muted);line-height:1.7}
.week-head em{margin-left:auto;flex:0 0 auto;font-style:normal;font-size:13px;color:var(--muted)}
@media(max-width:600px){
  .week-head{flex-direction:column}
  .week-head em{margin-left:0;margin-top:6px}
}

.grid{display:grid;grid-gap:20px}
.g-5{grid-template-columns:repeat(5,1fr)}
.g-6{grid-template-columns:repeat(10,1fr)}
.g-4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1200px){
  .wrap,.page-header .header-content,.mod,.focus-box,.tag-box{width:96%}
  .g-5,.g-6{grid-template-columns:repeat(3,1fr)}
  .g-4{grid-template-columns:repeat(2,1fr)}
}

/* 卡片（对应 .tracklist-item / .videolist-item）
   正方形用 padding-bottom 兜底（aspect-ratio 老内核不支持），内部元素绝对定位铺满 */
.item{cursor:pointer}
.item .poster{position:relative;width:100%;height:0;padding-bottom:100%;border-radius:8px;overflow:hidden}
.item.wide .poster{padding-bottom:56.25%}
.item .poster img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}
.item .poster > div{position:absolute;top:0;left:0;width:100%;height:100%}
.item .poster .initial{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:56px;font-weight:800;color:rgba(255,255,255,.9)}
.item .play-btn{
  position:absolute;left:50%;top:50%;width:60px;height:60px;margin:-30px 0 0 -30px;
  border-radius:50%;background:#fff;color:#c89977;display:grid;display:-ms-flexbox;place-items:center;align-items:center;justify-items:center;-ms-flex-align:center;-ms-flex-pack:center;
  opacity:0;transition:opacity .2s,transform .2s;box-shadow:0 6px 20px rgba(0,0,0,.4);
}
/* 千千规格：60px 白色圆底 + 22px 图标（#c89977）；三角用 SVG 保证光学居中 */
.item .play-btn svg{width:22px;height:22px;fill:currentColor;display:block;margin-left:2px}
.item:hover .play-btn:hover{transform:scale(1.06)}
.item:hover .play-btn{opacity:1}
.item .name{font-size:16px;margin-top:12px;line-height:1.4;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item:hover .name{color:var(--brand)}
.item .sub{font-size:13px;color:var(--muted);margin-top:4px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 歌曲行内的小徽章（AI / 外链 / 热度 / 往期）：
   · font-size 用 em——跟随行字体一起缩放（桌面 14px→10px，窄屏 12px→8.6px）；
   · white-space:nowrap + flex-shrink:0——标题再长也只缩标题，徽章不换行不挤压。 */
.ai-tag{
  display:inline-block;font-size:.72em;line-height:1.5;padding:0 5px;border-radius:3px;
  background:rgba(var(--brand-rgb),.16);color:var(--brand);border:1px solid rgba(var(--brand-rgb),.45);
  margin-left:6px;vertical-align:1px;white-space:nowrap;flex-shrink:0;
}

/* 歌手（对应 .artistlist-item，圆形头像 + 居中） */
.artist-item{text-align:center;cursor:pointer}
.artist-item .avatar{
  position:relative;width:50px;height:50px;padding-bottom:0;border-radius:50%;overflow:hidden;
  margin:14px auto;
}
.artist-item .avatar img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}
.artist-item .avatar > div{position:absolute;top:0;left:0;width:100%;height:100%}
.artist-item .avatar .initial{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:22px;font-weight:800;color:rgba(255,255,255,.9)}
.artist-item .name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.artist-item .sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:1.3}
.artist-item:hover .name{color:var(--brand)}

/* ---------------- 歌曲列表 ---------------- */
.songlist{background:var(--panel);border-radius:10px;overflow:hidden}
.srow{
  display:grid;grid-template-columns:52px 1fr 150px 70px;
  align-items:center;grid-gap:12px;padding:12px 20px;font-size:14px;
  border-bottom:1px solid rgba(255,255,255,.05);cursor:pointer;transition:.15s;
}
.srow:last-child{border-bottom:none}
.srow:hover{background:var(--panel-2)}
/* 历史榜单：纯展示行（不能播放、不可点击），不做 hover 反馈 */
.srow.plain{cursor:default}
.srow.plain:hover{background:none}
/* 历史榜单列头：名次 / 歌曲 / 作者 / 麦浪值 */
.srow.his-th{font-size:12px;color:var(--muted);padding-top:8px;padding-bottom:8px;
  background:rgba(255,255,255,.02);border-bottom:1px solid var(--line,#2a2a2a)}
.srow.his-th .idx,.srow.his-th .col,.srow.his-th .dur,.srow.his-th .mno{color:var(--muted);font-size:12px}
/* 历史榜单完整页：本站名次 + MELO 全站名次 双列 */
.srow.his-row{grid-template-columns:44px 60px minmax(0,1fr) 126px 70px 116px}
/* 奖励列：只发给本站注册账号，「第N名 +积分」双段；站外/未标注显示 — */
.srow .awd{text-align:right;font-variant-numeric:tabular-nums;font-size:13px;color:var(--muted);white-space:nowrap}
.srow .awd i{margin-right:6px;font-style:normal;font-size:11px;color:#d6a44a;opacity:.85}
.srow .awd.on{color:#d6a44a;font-weight:600}
.srow.his-th .awd{font-size:12px;color:var(--muted);font-weight:400}
.srow .mno{text-align:center;color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}
.srow.his-th .mno{text-align:center}
/* 窄屏用：作者并到歌名后面，默认不显示 */
.srow .his-art{display:none}
.srow.playing{background:rgba(var(--brand-rgb),.14)}
.srow .idx{color:var(--muted);text-align:center;font-variant-numeric:tabular-nums}
.srow.playing .idx{color:var(--brand)}
.srow .sname{display:flex;align-items:center;min-width:0}
.srow .sname > *+*{margin-left:8px}
.srow .sname b{font-weight:400;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srow .col{color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srow .dur{color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}

/* 两列作品列表：两列 × 10 行（歌手主页），先填满左列再填右列 */
.songlist-2{
  display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(10,auto);
  grid-auto-flow:column;grid-column-gap:12px;padding:4px 10px;
}
.songlist-2 .srow{grid-template-columns:34px minmax(0,1fr) 132px 46px;grid-gap:8px;padding:10px 8px;font-size:13px}
.songlist-2 .srow .col{font-size:12px}
@media(max-width:900px){
  .songlist-2{grid-template-columns:1fr;grid-template-rows:none;grid-auto-flow:row}
  .songlist-2 .srow{grid-template-columns:30px minmax(0,1fr) 88px 44px;grid-gap:7px;padding:10px 8px;font-size:12.5px}
}

/* 分页条（作品列表 / 歌手浮窗） */
.pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;margin-top:14px}
.pager > *{margin:0 4px 6px}
.pg-btn,.pg-no{
  height:30px;min-width:30px;padding:0 10px;border-radius:6px;border:1px solid rgba(255,255,255,.10);
  background:var(--panel);color:#cfcfcf;font-size:13px;line-height:1;cursor:pointer;transition:.15s;
  font-family:inherit;
}
.pg-btn:hover:not(:disabled),.pg-no:hover{background:var(--panel-2);color:#fff}
.pg-btn:disabled{opacity:.4;cursor:default}
.pg-no.on{background:var(--brand);border-color:var(--brand);color:#fff}
.pg-info{color:var(--muted);font-size:12px;margin-left:6px}
.rank-no{font-size:20px;font-weight:800;font-style:italic;color:var(--muted)}
.rank-no.top1{color:var(--brand)}
.rank-no.top2{color:#ff8a3d}
.rank-no.top3{color:#ffc14d}

/* ---------------- 详情页 ---------------- */
.detail{width:var(--w);margin:30px auto;display:grid;grid-template-columns:260px 1fr;grid-gap:36px}
@media(max-width:1200px){.detail{width:96%}}
@media(max-width:820px){.detail{grid-template-columns:1fr}}
.detail-cover{position:relative;width:100%;height:0;padding-bottom:100%;border-radius:10px;overflow:hidden}
.detail-cover img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}
.detail-cover > div{position:absolute;top:0;left:0;width:100%;height:100%}
.detail-cover .initial{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:64px;font-weight:800;color:rgba(255,255,255,.9)}
.detail h1{margin:0 0 10px;font-size:30px}
.detail .meta{color:var(--muted);font-size:13px;margin-bottom:18px;display:flex;flex-wrap:wrap}
.detail .meta > *{margin-right:18px}
.chips{display:flex;display:-ms-flexbox;flex-wrap:wrap;-ms-flex-wrap:wrap;margin-bottom:24px}
.chips > *{margin:0 10px 10px 0}
.chip{
  font-size:13px;padding:0 22px;height:36px;line-height:36px;border-radius:36px;
  background:var(--panel);color:#cfcfcf;transition:.18s;
}
.chip:hover{background:var(--brand);color:#fff}
.detail-actions{display:flex;display:-ms-flexbox;flex-wrap:wrap;-ms-flex-wrap:wrap}
.detail-actions > *+*{margin-left:14px}
.btn{
  display:inline-block;height:40px;line-height:40px;padding:0 28px;border-radius:40px;
  font-size:14px;background:var(--brand);color:#fff;transition:.18s;
}
.btn:hover{background:var(--brand-dark)}
.btn.ghost{background:var(--panel);color:#cfcfcf}
.btn.ghost:hover{background:var(--panel-2);color:#fff}

/* 歌词区：固定高度窗口 + 整块位移，无内部滚动条，当前句恒在正中 */
.lyric-box{
  width:var(--w);margin:0 auto 40px;background:var(--panel);border-radius:10px;
  max-height:420px;position:relative;overflow:auto;-webkit-overflow-scrolling:touch;text-align:center;
  padding:30px 0;
}
@media(max-width:1200px){.lyric-box{width:96%}}
.lyric-box .l-wrap{
  position:static;padding:0 26px;
}
.lyric-box .l{font-size:15px;line-height:2.1;color:#cfcfcf;transition:color .25s}
.lyric-box .l.on{color:#fff;font-weight:700;font-size:17px}
.lyric-box .l.near{color:#b4b4b4}
.lyric-empty{
  position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);
  color:var(--muted);font-size:13px;line-height:2;padding:0 26px;
}
.h2-line{width:var(--w);margin:0 auto 14px;font-size:20px}
@media(max-width:1200px){.h2-line{width:96%}}
.page-title{width:var(--w);margin:30px auto 24px;font-size:28px}
@media(max-width:1200px){.page-title{width:96%}}

.empty{padding:80px;text-align:center;color:var(--muted);font-size:14px}

/* ---------------- 排行榜 / 分类 ---------------- */
.chart-tabs{width:var(--w);margin:30px auto 20px;display:flex;display:-ms-flexbox}
.chart-tabs > *+*{margin-left:12px}
@media(max-width:1200px){.chart-tabs{width:96%}}
.chart-tabs button{
  height:36px;padding:0 26px;border-radius:36px;font-size:14px;background:var(--panel);color:#cfcfcf;
}
.chart-tabs button.on{background:var(--brand);color:#fff}
.dim-block{width:var(--w);margin:0 auto 30px}
@media(max-width:1200px){.dim-block{width:96%}}
.dim-block h3{margin:0 0 14px;font-size:16px;color:#cfcfcf;font-weight:600}
.dim-block .vals{display:flex;display:-ms-flexbox;flex-wrap:wrap;-ms-flex-wrap:wrap}
.dim-block .vals > *{margin:0 10px 10px 0}
.dim-block .vals a{
  height:36px;line-height:36px;padding:0 24px;border-radius:36px;font-size:14px;
  background:var(--panel);color:#cfcfcf;transition:.18s;
}
.dim-block .vals a:hover{background:var(--panel-2);color:#fff}
.dim-block .vals a.on{background:var(--brand);color:#fff}

/* ---------------- 页脚 ---------------- */
.ai-badge{
  display:inline-block;padding:4px 12px;border-radius:4px;margin-bottom:12px;
  background:rgba(var(--brand-rgb),.14);border:1px solid rgba(var(--brand-rgb),.4);color:var(--brand);font-size:12px;
}

/* ================= 移动端适配（手机 / 平板竖屏，≤768 / ≤480） =================
   仅窄屏生效，桌面端外观不动。兼容老内核：只用 margin 间距、flex-wrap + DOM 顺序重排，
   不用 gap / order / min() 等新语法。 */
@media(max-width:768px){
  body{padding-bottom:40px}
  /* 网格降到 2 列，封面更舒适；歌手列表(g-6)保持 3 列 */
  .g-5,.g-4{grid-template-columns:repeat(2,1fr)}
  /* 顶栏：Logo 一行，导航折到第二行自动换行（不横滑），整页随手机屏幕正常上下滑动 */
  .header-content{flex-wrap:wrap;-ms-flex-wrap:wrap}
  .header-nav{width:100%;flex-basis:100%;flex-wrap:wrap;-ms-flex-wrap:wrap;margin-left:0;margin-top:8px}
  .header-nav a{flex:1 1 auto;text-align:center}
  /* 轮播文案不溢出 */
  .focus-slide .fs-info{max-width:none;left:24px;right:24px}
  /* 排行榜标签 / 分类胶囊横向滑动 */
  .chart-tabs{overflow-x:auto;white-space:nowrap;padding-bottom:4px}
  .dim-block .vals{overflow-x:auto;white-space:nowrap}
  /* 歌曲列表：序号·歌名·歌手·时长 */
  .srow{grid-template-columns:30px 1fr 88px 50px;grid-gap:8px;padding:12px 14px;font-size:13px}
  .srow.his-row{grid-template-columns:32px 44px minmax(0,1fr) 78px 52px 92px;grid-gap:8px}
  .srow.his-row .rank-no{font-size:18px}
}
@media(max-width:600px){
  .srow.his-row{grid-template-columns:22px 36px minmax(0,1fr) 46px 56px;grid-gap:6px;padding:12px 10px}
  .srow.his-row .col{display:none}
  .srow.his-row .awd i{display:none}
  .srow.his-row .his-art{display:inline-block;max-width:40%;overflow:hidden;text-overflow:ellipsis;
    white-space:nowrap;font-size:11px;color:var(--muted);flex-shrink:1}
}
@media(max-width:480px){
  .logo-text{font-size:18px}
  .logo-img{width:38px;height:38px}
  .srow{grid-template-columns:24px 1fr 76px 44px;grid-gap:7px;font-size:12px}
}

/* 外链曲目标识（点击会跳到外部页面） */
.ext-tag{
  display:inline-block;margin-left:6px;padding:0 6px;border-radius:3px;
  font-size:.72em;line-height:1.5;font-weight:400;vertical-align:1px;
  background:rgba(214,164,74,.14);border:1px solid rgba(214,164,74,.38);color:#d6a44a;
  white-space:nowrap;flex-shrink:0;
}
/* 历史榜每行后面的播放次数 */
.hit-tag{
  display:inline-block;margin-left:8px;padding:0 7px;border-radius:3px;
  font-size:.8em;line-height:1.5;font-weight:600;vertical-align:1px;
  background:rgba(var(--brand-rgb),.12);border:1px solid rgba(var(--brand-rgb),.32);color:var(--brand);
  font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;
}
/* 只在历史榜里、当前曲库已没有的往期条目 */
.old-tag{
  display:inline-block;margin-left:6px;padding:0 6px;border-radius:3px;
  font-size:.72em;line-height:1.5;font-weight:400;vertical-align:1px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.18);color:var(--muted);
  white-space:nowrap;flex-shrink:0;
}

/* ================= 轮播自定义图片（data/slides.js 里配的 img） =================
   图片盖在同位置渐变之上：配了图就显示图，没配图就露出色块兜底，不会白屏。 */
.focus-slide .fs-img{
  position:absolute;top:0;left:0;right:0;bottom:0;
  width:100%;height:100%;object-fit:cover;object-position:center;
  display:block;border:0;background:none;
}

/* ================= MELO 外部歌单模块（assets/js/melo.js） =================
   三栏中的第三栏：小封面头 + 操作按钮 + 纵向歌曲列表（定高窗口内部滚动）。
   整体沿用站点深色面板 + 品牌红；<1100px 时该栏通栏。 */
.melo-body{
  display:flex;display:-ms-flexbox;flex-direction:column;-ms-flex-direction:column;gap:14px;
  background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;
}
.melo-hero{display:flex;display:-ms-flexbox;gap:14px;align-items:flex-start;-ms-flex-align:start;min-width:0}
.melo-cover{
  width:88px;height:88px;flex-shrink:0;border-radius:8px;overflow:hidden;
  box-shadow:0 6px 18px rgba(0,0,0,.4);
}
.melo-cover img{width:100%;height:100%;object-fit:cover;display:block}
.melo-hero-info{flex:1;-ms-flex:1;min-width:0}
.melo-title{margin:0 0 6px;font-size:17px;font-weight:700;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.melo-desc{margin:0 0 5px;font-size:12px;color:var(--muted);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.melo-stat{margin:0;font-size:12px;color:#cfcfcf}
.melo-actions{display:flex;display:-ms-flexbox;gap:10px;flex-wrap:wrap;-ms-flex-wrap:wrap}
.melo-actions .btn{height:34px;line-height:34px;padding:0 16px;font-size:13px}

/* 歌曲列表：定高窗口 + 内部滚动（与歌词区一致的形态） */
.melo-list{max-height:556px;overflow-y:auto;border-radius:8px;scrollbar-width:thin}
.melo-row{
  display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:10px;padding:7px 8px;border-radius:8px;
  cursor:pointer;transition:.15s;
}
.melo-row:hover{background:var(--panel-2)}
.melo-row.on{background:rgba(var(--brand-rgb),.14)}
.melo-row-num{
  width:20px;text-align:center;font-size:12px;color:var(--muted);
  font-variant-numeric:tabular-nums;flex-shrink:0;-ms-flex:0 0 auto;
}
.melo-row.on .melo-row-num{color:var(--brand)}
.melo-row-thumb{
  width:38px;height:38px;border-radius:5px;overflow:hidden;flex-shrink:0;-ms-flex:0 0 auto;
  display:inline-flex;display:-ms-flexbox;background:#333;
}
.melo-row-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.melo-row-main{flex:1;-ms-flex:1;min-width:0;display:flex;display:-ms-flexbox;flex-direction:column;-ms-flex-direction:column}
.melo-row-title{font-size:13px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.melo-row.on .melo-row-title{color:var(--brand);font-weight:600}
.melo-row-artist{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.melo-row-dur{font-size:11px;color:var(--muted);flex-shrink:0;-ms-flex:0 0 auto;font-variant-numeric:tabular-nums}
/* 空态：本周暂无打榜歌曲 / 加载失败重试 */
.melo-empty{padding:34px 20px;text-align:center}
.melo-empty p{margin:0 0 10px;font-size:14px;line-height:1.7}
.melo-empty .muted{font-size:12px}
.melo-empty b{color:var(--brand)}
/* 麦浪榜排名徽章（来自 MELO /songs/batch-ranking，hover 看麦浪值） */
.melo-rank{
  flex-shrink:0;-ms-flex:0 0 auto;font-size:10px;line-height:16px;padding:0 5px;border-radius:3px;
  background:rgba(var(--brand-rgb),.12);border:1px solid rgba(var(--brand-rgb),.32);color:var(--brand);
  font-variant-numeric:tabular-nums;cursor:help;white-space:nowrap;
}
/* 排名趋势（本周 vs 上周 batch-ranking）：↑ 名次上涨用红（站点品牌色系），↓ 下滑用灰 */
.melo-rank.tr-up{color:#ff8a8f;border-color:rgba(255,138,143,.45)}
.melo-rank.tr-down{color:#8a8f9c;border-color:rgba(138,143,156,.4)}
.melo-rank .tr-sym,.mb-row-rank .tr-sym{font-weight:700;font-style:normal}
/* 模块头多个链接时的间距 */
.mod-header .more + .more{margin-left:14px}
/* 翻页条：‹ 页码 … › + 当前页/总页数 */
.melo-pager{display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:6px;flex-wrap:wrap;-ms-flex-wrap:wrap;padding-top:2px}
.mp-btn{
  width:30px;height:30px;border-radius:6px;font-size:16px;line-height:1;color:#cfcfcf;
  display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;justify-content:center;-ms-flex-pack:center;transition:.15s;
  background:var(--panel-2);
}
.mp-btn:hover:not(:disabled){background:var(--brand);color:#fff}
.mp-btn:disabled{opacity:.35;cursor:default}
.mp-nums{display:flex;display:-ms-flexbox;gap:4px;flex-wrap:wrap;-ms-flex-wrap:wrap}
.mp-num{
  min-width:30px;height:30px;padding:0 6px;border-radius:6px;font-size:13px;
  color:#cfcfcf;background:var(--panel-2);transition:.15s;
  font-variant-numeric:tabular-nums;
}
.mp-num:hover{background:rgba(255,255,255,.14);color:#fff}
.mp-num.on{background:var(--brand);color:#fff;font-weight:600}
.mp-gap{color:var(--muted);font-size:12px;padding:0 2px;line-height:30px}
.mp-label{margin-left:auto;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
/* 正在播放：行内跳动均衡器 */
.melo-eq{display:none;gap:2px;align-items:flex-end;-ms-flex-align:end;height:12px;flex-shrink:0;-ms-flex:0 0 auto}
.melo-row.on .melo-eq{display:inline-flex;display:-ms-flexbox}
.melo-eq i{width:3px;background:var(--brand);border-radius:1px;animation:melo-eq .9s ease-in-out infinite}
.melo-eq i:nth-child(1){height:5px;animation-delay:0s}
.melo-eq i:nth-child(2){height:10px;animation-delay:.2s}
.melo-eq i:nth-child(3){height:7px;animation-delay:.4s}
@keyframes melo-eq{0%,100%{transform:scaleY(.4)}50%{transform:scaleY(1)}}

/* 三栏内的模块头：标题缩小、允许换行 */
.rank-duo .melo-mod .mod-header{flex-wrap:wrap;gap:2px 12px;padding-bottom:16px}
.rank-duo .melo-mod .mod-header .title{font-size:20px;line-height:24px}

.melo-loading{
  display:flex;display:-ms-flexbox;flex-direction:column;-ms-flex-direction:column;align-items:center;-ms-flex-align:center;justify-content:center;-ms-flex-pack:center;
  padding:56px 0;color:var(--muted);font-size:13px;
}
.melo-spin{
  width:34px;height:34px;border-radius:50%;margin-bottom:12px;
  border:3px solid rgba(255,255,255,.12);border-top-color:var(--brand);
  animation:melo-spin .8s linear infinite;
}
@keyframes melo-spin{to{transform:rotate(360deg)}}

.melo-fallback p{font-size:13px;color:var(--muted);margin:0 0 12px;line-height:1.6}
.melo-iframe{
  width:100%;height:480px;border:1px solid var(--line);border-radius:10px;
  background:#000;display:block;
}
.melo-fallback-links{display:flex;display:-ms-flexbox;gap:12px;margin-top:14px;flex-wrap:wrap;-ms-flex-wrap:wrap}

/* ---------- 底部播放条（黑金风） ---------- */
body.melo-bar-on{padding-bottom:132px}
.melo-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:100;
  background:rgba(23,18,14,.97);backdrop-filter:blur(12px);
  border-top:1px solid rgba(var(--brand-rgb),.28);box-shadow:0 -6px 24px rgba(0,0,0,.55);
}
.melo-bar[hidden]{display:none}
.mb-inner{
  width:var(--w);max-width:96%;margin:0 auto;display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;
  gap:18px;height:64px;
}
.mb-song{display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:10px;width:220px;min-width:0;flex-shrink:0;-ms-flex:0 0 auto}
.mb-cover{width:44px;height:44px;border-radius:6px;object-fit:cover;background:#2b2216;flex-shrink:0}
.mb-meta{min-width:0}
.mb-title{font-size:14px;font-weight:600;color:#F2E9D8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mb-artist{font-size:11px;color:#A99B7E;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mb-ctrl{display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:6px;flex-shrink:0;-ms-flex:0 0 auto}
.mb-btn{
  width:38px;height:38px;border-radius:50%;color:#C7A566;
  background:rgba(255,255,255,.05);
  display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;justify-content:center;-ms-flex-pack:center;transition:.15s;
}
.mb-btn:hover{background:rgba(var(--brand-rgb),.16);color:var(--brand)}
.mb-btn svg{display:block}
/* 主播放键：金圆 + 白色图标（按用户指定样式） */
.mb-play{
  width:46px;height:46px;border-radius:50%;padding:0;
  background:linear-gradient(135deg,var(--brand-2),var(--brand));
  box-shadow:0 2px 12px rgba(var(--brand-rgb),.4),inset 0 1px 0 rgba(255,255,255,.35);
  display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;justify-content:center;-ms-flex-pack:center;transition:.15s;
}
.mb-play:hover{transform:scale(1.07);box-shadow:0 4px 18px rgba(var(--brand-rgb),.55),inset 0 1px 0 rgba(255,255,255,.35)}
.mb-play svg{display:block}
.mb-btn.on{color:var(--brand);background:rgba(var(--brand-rgb),.14)}
.mb-progress{flex:1;-ms-flex:1;display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:10px;min-width:0}
.mb-time{font-size:11px;color:#A99B7E;font-variant-numeric:tabular-nums;flex-shrink:0;-ms-flex:0 0 auto}
.mb-extra{display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:4px;flex-shrink:0;-ms-flex:0 0 auto}
.mb-extra .mb-btn{width:32px;height:32px}

/* 滑块（进度 / 音量）：金色填充由 JS paintRange 动态绘制 */
.melo-bar input[type="range"]{
  -webkit-appearance:none;appearance:none;height:4px;border-radius:2px;
  background:#3a3a3a;outline:none;cursor:pointer;
}
.melo-bar input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance:none;width:12px;height:12px;border-radius:50%;
  background:var(--brand);border:none;box-shadow:0 1px 4px rgba(0,0,0,.5);
}
.melo-bar input[type="range"]::-moz-range-thumb{
  width:12px;height:12px;border-radius:50%;background:var(--brand);border:none;
  box-shadow:0 1px 4px rgba(0,0,0,.5);
}
/* Trident（IE10-11 / 360 兼容模式）与 EdgeHTML 滑块样式：
   fill 透明 → 露出 input 本体背景，JS 绘制的金色渐变进度不受影响 */
.melo-bar input[type="range"]::-ms-track{
  width:100%;height:4px;border-radius:2px;
  background:#3a3a3a;border-color:transparent;color:transparent;
}
.melo-bar input[type="range"]::-ms-fill-lower{background:transparent;border-radius:2px}
.melo-bar input[type="range"]::-ms-fill-upper{background:transparent;border-radius:2px}
.melo-bar input[type="range"]::-ms-thumb{
  width:12px;height:12px;border-radius:50%;background:var(--brand);border:none;
  box-shadow:0 1px 4px rgba(0,0,0,.5);
}
#meloSeek{flex:1;min-width:0}
#meloVol{width:72px}

/* 播放列表浮层 */
.mb-panel{
  position:absolute;right:2%;bottom:64px;width:340px;max-height:46vh;overflow:auto;
  background:#1F1812;border:1px solid rgba(var(--brand-rgb),.22);border-radius:10px 10px 0 0;
  box-shadow:0 -8px 30px rgba(0,0,0,.6);
}
.mb-panel[hidden]{display:none}
.mb-row{
  display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:10px;padding:9px 14px;font-size:13px;cursor:pointer;
  color:#D8CDB6;
}
.mb-row:hover{background:rgba(var(--brand-rgb),.08)}
.mb-row.on{color:var(--brand);font-weight:600}
.mb-row-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mb-row-num,.mb-row-dur{flex-shrink:0;-ms-flex:0 0 auto;font-variant-numeric:tabular-nums}
/* 播放列表行里的麦浪榜名次（与歌曲行徽章同源，随周期同步刷新） */
.mb-row-rank{
  flex-shrink:0;-ms-flex:0 0 auto;margin-left:8px;padding:0 6px;border-radius:3px;
  font-size:10px;line-height:16px;color:#d6a44a;white-space:nowrap;
  background:rgba(214,164,74,.12);border:1px solid rgba(214,164,74,.35);
}
.mb-row.on .mb-row-rank{color:var(--brand-2);border-color:rgba(240,201,101,.5)}
.mb-row-rank.tr-up{color:#ff9a92;border-color:rgba(255,154,146,.45)}
.mb-row-rank.tr-down{color:#9a9f8f;border-color:rgba(154,159,143,.4)}
.mb-row.on .mb-row-rank.tr-up{color:#ffb3ab}
.mb-row.on .mb-row-num{color:var(--brand)}
.mb-row-num{width:22px;color:#8F835F;font-size:12px;font-variant-numeric:tabular-nums;flex-shrink:0;-ms-flex:0 0 auto}
.mb-row-title{flex:1;-ms-flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mb-row-dur{color:#8F835F;font-size:11px;flex-shrink:0;-ms-flex:0 0 auto}

/* 「开启声音」浮动按钮（静音起步时出现） */
.melo-unmute{
  position:fixed;right:24px;bottom:96px;z-index:101;
  height:44px;padding:0 22px;border-radius:44px;font-size:14px;font-weight:600;
  display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:8px;
  background:linear-gradient(135deg,var(--brand-2),var(--brand));color:#1A130C;
  box-shadow:0 6px 20px rgba(var(--brand-rgb),.5);
  animation:melo-pulse 1.6s ease-in-out infinite;
}
.melo-unmute[hidden]{display:none}
.melo-unmute:hover{background:linear-gradient(135deg,#F5D585,#E0B64E)}
@keyframes melo-pulse{
  0%,100%{transform:scale(1);box-shadow:0 6px 20px rgba(var(--brand-rgb),.5)}
  50%{transform:scale(1.05);box-shadow:0 6px 28px rgba(var(--brand-rgb),.75)}
}

/* AI 声明飘窗（替代原页脚说明，左下角固定，可收起为小标签） */
.ai-float{position:fixed;left:24px;bottom:96px;z-index:101;max-width:min(300px,calc(100vw - 48px));
  background:rgba(20,20,20,.92);border:1px solid rgba(var(--brand-rgb),.55);border-left:3px solid var(--brand);
  border-radius:12px;padding:14px 16px;box-shadow:0 10px 30px rgba(0,0,0,.45);color:#eee;font-size:13px;line-height:1.6;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.ai-float[hidden]{display:none}
.ai-float-x{position:absolute;top:5px;right:8px;border:0;background:transparent;color:#aaa;font-size:18px;line-height:1;
  cursor:pointer;padding:2px 4px}
.ai-float-x:hover{color:#fff}
.ai-float-ic{font-size:15px;margin-bottom:2px;color:var(--brand)}
.ai-float-title{font-weight:600;color:#fff;margin-bottom:5px;padding-right:14px}
.ai-float-text{margin:0 0 5px;color:#dcdcdc}
.ai-float-sub{margin:0;font-size:12px;color:#9a9a9a}
.ai-float-tab{position:fixed;left:24px;bottom:96px;z-index:101;cursor:pointer;user-select:none;
  background:linear-gradient(135deg,var(--brand-2),var(--brand));color:#1A130C;font-size:12px;font-weight:600;
  padding:8px 14px;border-radius:20px;box-shadow:0 6px 18px rgba(var(--brand-rgb),.5)}
.ai-float-tab[hidden]{display:none}
.ai-float-tab:hover{filter:brightness(1.06)}

/* 移动端方案 C：声明收为播放条上方通栏细字条，点击展开完整卡 */
.ai-float-short{display:none}
@media(max-width:900px){
  .ai-float-tab{display:none}
  /* 移动端改为页面内页脚：随页面滚动，不再固定贴住播放器、不再常驻底部 */
  .ai-float{position:static;left:auto;right:auto;bottom:auto;z-index:auto;width:100%;max-width:100%;
    border-radius:0;border:0;border-top:1px solid rgba(var(--brand-rgb),.35);border-bottom:1px solid rgba(var(--brand-rgb),.25);
    background:rgba(16,16,16,.94);padding:8px 12px;box-shadow:none;text-align:center;cursor:pointer}
  .ai-float-ic,.ai-float-text,.ai-float-sub,.ai-float-x,.ai-float-title{display:none}
  .ai-float-short{display:block;font-size:11px;color:#8f8f8f;letter-spacing:.5px}
  .ai-float.expanded{position:static;left:auto;right:auto;width:100%;max-width:100%;border-radius:0;cursor:default;
    border-top:1px solid rgba(var(--brand-rgb),.55);border-left:0;border-bottom:1px solid rgba(var(--brand-rgb),.35);
    padding:14px 16px;box-shadow:none;text-align:left}
  .ai-float.expanded .ai-float-ic,.ai-float.expanded .ai-float-text,
  .ai-float.expanded .ai-float-sub,.ai-float.expanded .ai-float-x,
  .ai-float.expanded .ai-float-title{display:block}
  .ai-float.expanded .ai-float-short{display:none}
  .ai-float.expanded .ai-float-title{font-size:13px;font-weight:600;color:#fff;margin-bottom:5px}
  .ai-float.expanded .ai-float-text{margin:0 0 5px}
}

@media(max-width:900px){
  body.melo-bar-on{padding-bottom:132px}
  .mb-inner{flex-wrap:nowrap;-ms-flex-wrap:nowrap;height:64px;max-width:100%;padding:0 10px;gap:8px}
  .mb-song{width:auto;flex:1;min-width:0}
  .mb-ctrl{gap:4px}
  .mb-btn{width:34px;height:34px}
  .mb-play{width:40px;height:40px}
  .mb-extra{gap:4px}
  .mb-extra .mb-btn{width:30px;height:30px}
  .mb-progress{position:absolute;top:0;left:0;right:0;order:0;flex:none;margin:0;padding:0;height:auto}
  #meloSeek{width:100%;height:3px}
  .mb-time{display:none}
  #meloVol{display:none}
  .mb-panel{width:auto;left:2%;right:2%}
}

/* ================= Trident（IE9-11 / 360 兼容模式）专用回退 =================
   老内核三缺：无 var()（全部自定义属性失效）、无 grid（网格容器退化成竖排）、
   无 flex gap（flex 项贴在一起）。本块用字面值 + 浮动/表格/margin 补偿兜底，
   只对 IE9-11 生效（min-width:0\0 为 IE 独有媒体查询，EdgeHTML 与所有现代
   引擎均不匹配）。播放链路相关组件优先保证。 */
@media screen and (min-width:0\0){
  /* ---- 1. 容器宽度（var(--w)=1200px 失效 → 通栏） ---- */
  .wrap,.page-header .header-content,.mod,.focus-box,.tag-box,.chart-tabs,.dim-block,
  .lyric-box,.h2-line,.page-title,.footer-inner,.detail,.rank-duo,.mb-inner{width:1200px;max-width:96%}

  /* ---- 2. 配色字面值（var() 失效 → 透明底/继承色的兜底） ---- */
  .songlist,.stats-btn,.chip,.chart-tabs button,.dim-block .vals a,.week-picker .wp-item,
  .melo-body,.lyric-box,.btn.ghost{background:#2a2a2a}
  .melo-body,.melo-iframe,.week-head,.stats-btn{border-color:#3a3a3a}
  .search-box input{background:#2a2a2a;border-color:#3a3a3a;color:#f5f5f5}
  .srow:hover,.melo-row:hover,.mp-btn,.mp-num,.dim-block .vals a:hover,.btn.ghost:hover{background:#333}
  .srow.plain:hover{background:none}
  .srow .idx,.srow .col,.srow .dur,.mod-header .sub,.mod-header .more,.week-head span,.week-head em,
  .week-picker .wp-item span,.item .sub,.detail .meta,.lyric-empty,.mp-gap,.mp-label,
  .melo-row-num,.melo-row-artist,.melo-row-dur,.melo-desc,.empty,.footer-inner,.old-tag,
  .tag-box a.dim-label,.melo-loading,.melo-fallback p{color:#909399}
  /* 白字品牌按钮：底色失效时白字会浮空，必须补字面色 */
  .btn,.tag-box a:hover,.chart-tabs button.on,.dim-block .vals a.on,.week-picker .wp-item.on,
  .mp-num.on,.mp-btn:hover:not(:disabled),.stats-btn:hover,.focus-dots i.on,.focus-arrow:hover,
  .focus-slide .fs-tag{background:var(--brand);color:#fff}
  .week-picker .wp-item.on b,.week-picker .wp-item.on span{color:#fff}
  .stats-btn:hover{border-color:var(--brand)}
  .header-nav a.active{background:var(--brand);background:linear-gradient(135deg,var(--brand),var(--brand-2))}
  .btn:hover{background:var(--brand-dark)}
  .srow.playing .idx,.item:hover .name,.artist-item:hover .name,.mod-header .more:hover,.sign-in:hover,
  .melo-row.on .melo-row-num,.melo-row.on .melo-row-title,.rank-no.top1{color:var(--brand)}
  .melo-eq i{background:var(--brand)}
  .melo-spin{border-top-color:var(--brand)}
  .week-picker .wp-item:hover{border-color:var(--brand)}
  .search-box input:focus{border-color:var(--brand)}

  /* ---- 3. grid 回退：三栏榜单 / 卡片网格 / 歌曲行 / 详情页 ---- */
  /* 三栏（MELO 歌单栏 36% + 热歌榜 30% + 历史榜 30%）→ 浮动 */
  .rank-duo{display:block}
  .rank-duo::after{content:"";display:table;clear:both}
  .rank-duo .mod{float:left;width:30%;margin:0 2% 24px 0}
  .rank-duo .melo-mod{width:36%}
  .rank-duo .mod:last-child{margin-right:0}
  /* 卡片网格 → 浮动（5×18.4%+2% / 6×15%+2% / 4×23.5%+2%） */
  .grid{display:block}
  .grid::after{content:"";display:table;clear:both}
  .grid > *{float:left;margin-bottom:20px}
  .g-5 > *{width:18.4%;margin-right:2%}
  .g-5 > *:nth-child(5n){margin-right:0}
  .g-6 > *{width:9%;margin-right:1.111%}
  .g-6 > *:nth-child(10n){margin-right:0}
  .g-4 > *{width:23.5%;margin-right:2%}
  .g-4 > *:nth-child(4n){margin-right:0}
  /* 歌曲行 → 表格布局（IE8+ 稳的四等分列，避免匿名盒包裹） */
  .srow{display:table;table-layout:fixed;width:100%}
  .srow > *{display:table-cell;vertical-align:middle}
  .srow .idx{width:52px}
  .srow .col{width:150px}
  .srow .dur{width:70px}
  .rank-duo .srow .idx{width:44px}
  .rank-duo .srow .dur{width:64px}
  /* 详情页：封面左浮 + 信息 BFC 傍排（grid-gap 36px → margin-left） */
  .detail{display:block}
  .detail::after{content:"";display:table;clear:both}
  .detail-cover{float:left;width:260px}
  .detail > div + div{overflow:hidden;margin-left:36px}

  /* ---- 4. flex gap → margin 补偿（IE11 无 gap） ---- */
  .melo-body > * + *{margin-top:14px}
  .melo-hero > * + *{margin-left:14px}
  .melo-actions > * + *{margin-left:10px}
  .melo-row > * + *{margin-left:10px}
  .melo-pager > * + *{margin-left:6px}
  .mp-nums > * + *{margin-left:4px}
  .melo-eq > * + *{margin-left:2px}
  .melo-fallback-links > * + *{margin-left:12px}
  .rank-duo .melo-mod .mod-header > * + *{margin-left:12px}
  .mb-inner > * + *{margin-left:18px}
  .mb-song > * + *{margin-left:10px}
  .mb-ctrl > * + *{margin-left:6px}
  .mb-progress > * + *{margin-left:10px}
  .mb-extra > * + *{margin-left:4px}
  .mb-row > * + *{margin-left:10px}
  .melo-unmute > * + *{margin-left:8px}
}
/* IE 窄屏变体：与上面各 @media 断点对齐 */
@media screen and (min-width:0\0) and (max-width:1200px){
  .wrap,.page-header .header-content,.mod,.focus-box,.tag-box,.chart-tabs,.dim-block,
  .lyric-box,.h2-line,.page-title,.footer-inner,.detail,.rank-duo,.mb-inner{width:96%}
  /* 5/6 列 → 3 列 */
  .g-5 > *,.g-6 > *{width:31.333%;margin-right:3%}
  .g-5 > *:nth-child(5n),.g-6 > *:nth-child(6n){margin-right:3%}
  .g-5 > *:nth-child(3n),.g-6 > *:nth-child(3n){margin-right:0}
  /* 4 列 → 2 列 */
  .g-4 > *{width:48.5%;margin-right:3%}
  .g-4 > *:nth-child(4n){margin-right:3%}
  .g-4 > *:nth-child(2n){margin-right:0}
  /* 三栏 → MELO 通栏 + 两榜单并排 */
  .rank-duo .mod{width:48.5%;margin:0 3% 24px 0}
  .rank-duo .melo-mod{float:none;width:100%;margin-right:0}
}
@media screen and (min-width:0\0) and (max-width:1100px){
  .rank-duo .mod{width:48.5%;margin:0 3% 24px 0}
  .rank-duo .melo-mod{float:none;width:100%;margin-right:0}
  .rank-duo .mod:last-child{margin-right:0}
}
@media screen and (min-width:0\0) and (max-width:900px){
  .rank-duo .mod{float:none;width:100%;margin-right:0}
}
@media screen and (min-width:0\0) and (max-width:820px){
  .detail-cover{float:none;width:100%;max-width:260px;margin:0 auto}
  .detail > div + div{margin-left:0}
}
@media screen and (min-width:0\0) and (max-width:768px){
  /* 歌曲行三档宽度与主样式断点对齐 */
  .srow .idx{width:30px}
  .srow .col{width:88px}
  .srow .dur{width:50px}
  /* 网格 → 2 列；歌手列表(g-6)保持 3 列(继承≤1200px档) */
  .g-5 > *,.g-4 > *{width:48.5%;margin-right:3%}
  .g-5 > *:nth-child(3n),.g-5 > *:nth-child(5n),
  .g-4 > *:nth-child(4n){margin-right:3%}
  .g-5 > *:nth-child(2n),.g-4 > *:nth-child(2n){margin-right:0}
}
@media screen and (min-width:0\0) and (max-width:480px){
  .srow .idx{width:24px}
  .srow .col{width:76px}
  .srow .dur{width:44px}
}

/* ---------------- 按钮变体（歌手系统） ---------------- */
.btn.primary{background:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-dark)}
.btn.block{display:block;width:100%;text-align:center}
.btn.sm{height:32px;line-height:32px;padding:0 16px;font-size:13px}

/* ---------------- 登录态入口 ---------------- */
#authArea{display:inline-flex;align-items:center;gap:8px;margin-left:6px}
.auth-btn{font-size:14px;color:#d8d8d8;cursor:pointer;line-height:36px;white-space:nowrap;text-decoration:none}
.auth-btn:hover{color:var(--brand)}
.auth-btn.primary{background:var(--brand);color:#fff;padding:0 16px;border-radius:36px;line-height:34px}
.auth-btn.primary:hover{background:var(--brand-dark);color:#fff}

/* ---------------- 指令集下拉 ---------------- */
.cmd-dropdown{position:relative;display:inline-flex}
.cmd-dropdown .stats-btn{display:inline-flex;align-items:center;gap:6px}
.cmd-dropdown .caret{width:14px;height:14px;transition:transform .18s ease;opacity:.8}
.cmd-dropdown.open .caret{transform:rotate(180deg)}
.cmd-menu{
  position:absolute;top:calc(100% + 8px);right:0;min-width:240px;z-index:50;
  background:var(--panel,#262626);border:1px solid var(--line,rgba(255,255,255,.1));
  border-radius:12px;padding:6px;box-shadow:0 12px 36px rgba(0,0,0,.45);
  opacity:0;visibility:hidden;transform:translateY(-6px);transition:all .16s ease;
}
.cmd-dropdown.open .cmd-menu{opacity:1;visibility:visible;transform:translateY(0)}
.cmd-item{
  display:block;padding:10px 12px;border-radius:8px;color:var(--text,#f5f5f5);
  text-decoration:none;font-size:14px;white-space:nowrap;
}
.cmd-item:hover{background:var(--brand,#7c5cff);color:#fff}
.cmd-item{display:flex;align-items:center;justify-content:space-between;gap:10px}
.cmd-item .ci-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmd-item .ci-lock{font-size:11px;color:#ffb454;white-space:nowrap;flex:none}
.cmd-item .ci-tag{font-size:11px;color:#56d364;white-space:nowrap;flex:none}
.cmd-item .ci-left{display:flex;align-items:center;gap:8px;min-width:0}
.cmd-item .ci-tier{display:inline-block;font-size:11px;line-height:1;padding:3px 7px;border-radius:10px;font-weight:600;flex:none}
.ci-tier.t-open{background:rgba(110,231,168,.16);color:#56d364;border:1px solid rgba(110,231,168,.4)}
.ci-tier.t-singer{background:rgba(127,179,255,.16);color:#7fb3ff;border:1px solid rgba(127,179,255,.4)}
.ci-tier.t-adv{background:rgba(217,180,91,.16);color:#f0d492;border:1px solid rgba(217,180,91,.45)}
.ci-tier.t-login{background:rgba(150,160,180,.14);color:#aab2c0;border:1px solid rgba(150,160,180,.35)}
.cmd-item.locked{opacity:.55;cursor:not-allowed}
.cmd-item.locked:hover{background:rgba(255,255,255,.05);color:var(--text,#f5f5f5)}
.cmd-item.locked:hover .ci-name{color:#ffb454}
.cmd-note{padding:9px 12px;font-size:12px;color:var(--muted,#999);line-height:1.5}
.cmd-note-ok{color:#56d364}
.wb-toast{position:fixed;left:50%;bottom:42px;transform:translateX(-50%) translateY(20px);
  background:rgba(18,18,18,.96);color:#fff;padding:11px 18px;border-radius:10px;font-size:14px;
  z-index:999;opacity:0;visibility:hidden;transition:all .22s ease;box-shadow:0 8px 28px rgba(0,0,0,.5);
  max-width:88vw;text-align:center;pointer-events:none}
.wb-toast.show{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}

/* ---------------- 注册类型对话框 ---------------- */
.role-modal{position:fixed;inset:0;z-index:200;display:none}
.role-modal.open{display:block}
.role-mask{position:absolute;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(2px)}
.role-dialog{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:min(560px,92vw);max-height:88vh;overflow:auto;
  background:var(--panel,#262626);border:1px solid var(--line,rgba(255,255,255,.12));
  border-radius:16px;padding:22px;box-shadow:0 24px 60px rgba(0,0,0,.5);
}
.role-x{position:absolute;top:10px;right:12px;width:32px;height:32px;border:0;background:transparent;
  color:var(--muted,#999);font-size:24px;line-height:1;cursor:pointer;border-radius:8px}
.role-x:hover{background:rgba(255,255,255,.08);color:#fff}
.role-title{margin:0 0 14px;font-size:18px;color:var(--text,#f5f5f5)}
.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.role-opt{
  display:flex;flex-direction:column;gap:5px;text-align:left;cursor:pointer;
  padding:12px 14px;border-radius:12px;border:1px solid var(--line,rgba(255,255,255,.12));
  background:rgba(255,255,255,.03);color:var(--text,#f5f5f5);transition:all .15s ease;
}
.role-opt:hover{border-color:var(--brand,#7c5cff);background:var(--brand,#7c5cff);color:#fff;transform:translateY(-2px)}
.role-opt b{font-size:15px}
.role-opt span{font-size:12px;line-height:1.5;opacity:.75}
.role-opt:hover span{opacity:.95}
@media screen and (max-width:520px){.role-grid{grid-template-columns:1fr}}

/* ---------------- 顶栏：用户名 + 积分悬浮卡 ---------------- */
.auth-user{position:relative;display:inline-flex;align-items:center}
.points-pop{position:absolute;top:calc(100% + 10px);right:0;z-index:120;min-width:160px;padding:12px 14px;
  background:rgba(30,30,30,.98);border:1px solid var(--line,rgba(255,255,255,.12));border-radius:12px;
  box-shadow:0 16px 40px rgba(0,0,0,.55);text-align:center;
  opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity .16s ease,transform .16s ease,visibility .16s}
.points-pop:before{content:'';position:absolute;top:-6px;right:20px;width:10px;height:10px;
  background:rgba(30,30,30,.98);border-left:1px solid var(--line,rgba(255,255,255,.12));
  border-top:1px solid var(--line,rgba(255,255,255,.12));transform:rotate(45deg)}
.auth-user:hover .points-pop,.auth-user:focus-within .points-pop{opacity:1;visibility:visible;transform:none}
.pp-label{font-size:12px;color:var(--muted,#999);margin-bottom:2px}
.pp-val{font-size:22px;font-weight:700;color:#ffce6b;line-height:1.2}
.pp-val i{font-size:12px;font-style:normal;font-weight:400;color:var(--muted,#999);margin-left:3px}
.pp-btn{display:block;margin-top:10px;width:100%;border:0;border-radius:20px;padding:7px 0;font-size:13px;cursor:pointer;text-align:center;text-decoration:none;
  background:rgba(255,180,60,.18);color:#ffce6b;transition:background .15s;font-family:inherit}
.pp-btn:hover{background:rgba(255,180,60,.34)}
.pp-btn.ghost{margin-top:8px;background:var(--panel-2,#2f2f2f);color:var(--text,#eee);border:1px solid var(--line,#3a3a3a)}
.pp-btn.ghost:hover{background:var(--brand);color:#fff;border-color:var(--brand)}

/* 主题色小图标（集合在登录名称右侧） */
.auth-theme-ic{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;margin-left:6px;
  border:1px solid var(--line,#3a3a3a);border-radius:50%;background:var(--panel-2,#2f2f2f);color:#d8d8d8;cursor:pointer;flex:none;transition:.15s}
.auth-theme-ic svg{width:17px;height:17px;fill:currentColor}
.auth-theme-ic svg circle{fill:var(--brand)}
.auth-theme-ic:hover{border-color:var(--brand);color:var(--brand);background:var(--panel,#262626)}

/* ---------------- 每日签到弹窗 ---------------- */
.checkin-modal{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;
  background:rgba(0,0,0,.6);backdrop-filter:blur(3px);padding:20px}
.checkin-card{position:relative;width:min(420px,94vw);max-height:86vh;overflow:auto;
  background:var(--panel,#262626);border:1px solid var(--line,rgba(255,255,255,.12));
  border-radius:18px;padding:26px 24px 22px;box-shadow:0 24px 60px rgba(0,0,0,.5);text-align:center}
.checkin-close{position:absolute;top:10px;right:12px;width:32px;height:32px;border:0;background:transparent;
  color:var(--muted,#999);font-size:24px;line-height:1;cursor:pointer;border-radius:8px}
.checkin-close:hover{background:rgba(255,255,255,.08);color:#fff}
.checkin-title{font-size:19px;color:var(--text,#f5f5f5);margin-bottom:6px}
.checkin-points{font-size:14px;color:var(--muted,#999);margin-bottom:18px}
.checkin-points b{color:#ffce6b;font-size:18px;font-weight:700}
.checkin-month{font-size:12px;color:var(--muted,#999);letter-spacing:.06em;margin-bottom:10px}
.checkin-cal{display:block;margin-bottom:14px;min-width:0}
.ck-cal{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:5px;margin:0}
.ck-cal th{font-size:11px;font-weight:400;color:var(--muted,#999);padding:0 0 2px}
.ck-cal td{width:14.28%;height:34px;text-align:center;vertical-align:middle;font-size:13px;
  border-radius:9px;background:rgba(255,255,255,.05);color:var(--text,#f5f5f5);position:relative;padding:0}
.ck-cal td.ck-empty{background:transparent}
.ck-cal td.ck-on{background:rgba(255,180,60,.22);color:#ffce6b;box-shadow:inset 0 0 0 1px rgba(255,180,60,.4)}
.ck-cal td.ck-on i{position:absolute;top:1px;right:3px;font-size:9px;font-style:normal;color:#ffce6b;line-height:1}
.ck-cal td.ck-today{outline:2px solid var(--brand,#e61723);outline-offset:-2px}
.checkin-progress{font-size:13px;color:var(--text,#f5f5f5);margin-bottom:4px}
.checkin-progress b{color:#ffce6b}
.ck-bonus{color:#ffce6b;font-weight:600}
.checkin-msg{font-size:13px;color:#ffce6b;min-height:18px;margin-bottom:12px}
.btn.primary.block{display:block;width:100%;padding:11px 0;font-size:15px;border:0;border-radius:30px;cursor:pointer}
.btn.primary.block.done{background:rgba(255,255,255,.12);color:var(--muted,#999);cursor:default}
.checkin-hint{font-size:12px;color:var(--muted,#999);margin-top:12px;line-height:1.6}
.checkin-loading{font-size:13px;color:var(--muted,#999);padding:20px 0}

/* 红包雨样式由 assets/js/redbag.js 动态注入（主站与工具页共用，避免工具页缺失） */

/* ---------------- 歌手列表 · 主页浮层 ---------------- */
.page-sub{font-size:13px;font-weight:400;color:var(--muted);margin-left:10px}
.artists-note{font-size:13px;color:var(--muted);margin-bottom:16px}
body.modal-open{overflow:hidden}
.singer-modal{position:fixed;inset:0;z-index:320;display:flex;align-items:center;justify-content:center;
  background:rgba(0,0,0,.66);backdrop-filter:blur(3px);padding:24px}
.singer-modal-card{position:relative;width:min(720px,95vw);max-height:88vh;overflow:auto;
  background:var(--panel,#262626);border:1px solid var(--line,rgba(255,255,255,.12));border-radius:18px;
  box-shadow:0 28px 70px rgba(0,0,0,.6)}
.singer-modal-close{position:absolute;top:12px;right:12px;z-index:3;width:34px;height:34px;border:0;border-radius:50%;
  background:rgba(0,0,0,.45);color:#fff;font-size:22px;line-height:1;cursor:pointer;backdrop-filter:blur(4px)}
.singer-modal-close:hover{background:rgba(0,0,0,.72)}
.sm-head{position:relative;min-height:126px;background-size:cover;background-position:center;overflow:hidden}
.sm-head-mask{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.15),rgba(20,20,20,.92))}
.sm-head-inner{position:relative;display:flex;align-items:flex-end;gap:14px;padding:56px 24px 16px}
.sm-avatar{width:74px;height:74px;flex:none;border-radius:50%;overflow:hidden;
  border:2px solid rgba(255,255,255,.2);background:#333}
.sm-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.sm-id h2{font-size:20px;margin:0 0 5px;color:#fff}
.sm-meta{font-size:12px;color:rgba(255,255,255,.68)}
.sm-pad{padding:16px 24px 22px}
.sm-sec{font-size:15px;color:var(--text,#f5f5f5);margin:20px 0 10px;padding-bottom:6px;
  border-bottom:1px solid var(--line,rgba(255,255,255,.1))}
.sm-foot{margin-top:24px;text-align:center}
.sm-foot .btn{display:inline-block;padding:10px 26px;border-radius:30px}
@media screen and (max-width:520px){
  .singer-modal{padding:12px}
  .sm-head-inner{padding:48px 16px 12px}
  .sm-pad{padding:14px 16px 18px}
}

/* ---------------- 注册页类型提示 ---------------- */
.reg-role{font-size:14px;color:var(--text,#f5f5f5);margin-bottom:6px}
.reg-role b{color:var(--brand,#7c5cff)}
.role-tag{display:inline-block;font-size:12px;padding:2px 8px;border-radius:10px;
  background:var(--brand,#7c5cff);color:#fff;margin-left:6px;vertical-align:middle}
.auth-btn.ghost{border:1px solid var(--line);border-radius:36px;padding:0 14px;line-height:34px}
.auth-btn.ghost:hover{background:var(--panel-2);color:#fff}

/* ---------------- 登录 / 注册 ---------------- */
.auth-wrap{max-width:440px;margin:48px auto;padding:0 16px}
.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:32px}
.auth-card h2{margin:0 0 18px;font-size:24px}
.auth-tip{font-size:13px;color:var(--muted);line-height:1.7;margin:0 0 18px;background:rgba(var(--brand-rgb),.08);border:1px solid rgba(var(--brand-rgb),.25);padding:10px 14px;border-radius:10px}
.auth-foot{margin-top:18px;font-size:13px;color:var(--muted);text-align:center}
.auth-foot a{color:var(--brand)}

/* ---------------- 表单 ---------------- */
.form-row{margin-bottom:18px}
.form-label{display:block;font-size:13px;color:var(--muted);margin-bottom:7px}
.form-input{width:100%;height:42px;padding:0 14px;border-radius:10px;border:1px solid var(--line);background:#232323;color:var(--text);font-size:14px;outline:none;box-sizing:border-box;font-family:inherit}
textarea.form-input{height:auto;padding:12px 14px;resize:vertical;line-height:1.6}
.form-input:focus{border-color:var(--brand)}
select.form-input{appearance:none;cursor:pointer}
.form-msg{font-size:13px;min-height:18px;margin-top:6px;color:var(--muted)}
.form-msg.ok{color:#3fbf6f}
.form-msg.err{color:#ff6b6b}
.form-actions{display:flex;align-items:center;gap:12px;margin-top:8px}
.muted{color:var(--muted)}

/* 上传 */
.up-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.up-prev{width:72px;height:72px;border-radius:12px;overflow:hidden;background:var(--panel-2);display:grid;place-items:center;color:var(--muted);font-size:12px;border:1px solid var(--line)}
.up-prev.wide{width:160px;height:72px}
.up-prev img{width:100%;height:100%;object-fit:cover}
.up-file{font-size:13px;color:var(--muted)}
.up-hint{font-size:12px;color:var(--muted)}

/* 外链编辑 */
.link-row{display:flex;gap:8px;margin-bottom:8px;align-items:center}
.link-ic{width:34px;height:34px;flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;background:#fff;border:1px solid var(--line);padding:5px;box-sizing:border-box}
.link-ic .ic{width:22px;height:22px;display:block}
.link-row .link-type{width:104px;flex:none}
.link-row .link-url{flex:1}
.link-rm{width:34px;flex:none;border:1px solid var(--line);background:var(--panel);color:#ff8a8a;border-radius:8px;cursor:pointer;font-size:18px;line-height:1}
.link-rm:hover{background:rgba(255,107,107,.15)}

/* 歌手后台：自建作品（歌曲外链）编辑行 */
.songedit-row{display:flex;gap:8px;margin-bottom:8px;align-items:center}
.songedit-row .se-title{width:30%;flex:none}
.songedit-row .se-artist{width:22%;flex:none}
.songedit-row .se-url{flex:1}
@media (max-width:640px){
  .songedit-row{flex-wrap:wrap}
  .songedit-row .se-title,.songedit-row .se-artist{width:calc(50% - 21px)}
  .songedit-row .se-url{width:100%}
}
/* 歌手主页：自建作品展示区 */
.song-ext-list{display:flex;flex-wrap:wrap;gap:10px}
.song-ext{display:inline-flex;align-items:center;gap:4px;font-size:14px;font-weight:600}

/* 认领艺人名 */
.alias-box{display:flex;flex-wrap:wrap;gap:8px 14px;max-height:200px;overflow:auto;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:12px}
.chk{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text)}
.chk input{accent-color:var(--brand)}

/* ---------------- 后台布局 ---------------- */
.account-grid{display:grid;grid-template-columns:1fr 340px;gap:22px;margin-top:18px}
.account-grid.account-single{grid-template-columns:1fr}
@media(max-width:900px){.account-grid{grid-template-columns:1fr}}
.card-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px}
.card-box h3{margin:0 0 14px;font-size:17px}
#chartBox{margin-top:18px}
/* 打榜歌曲（歌手后台 / 管理后台） */
.chart-status{font-size:13px;line-height:1.6;margin:0 0 14px;padding:8px 12px;border-radius:8px;background:var(--panel-2)}
.chart-status.ok{color:#5fd98a}
.chart-status.warn{color:#ffc24d}
.chart-cur{font-size:13px;line-height:1.9;margin:0 0 14px}
.chart-cur b{color:#fff}
.chart-link{color:var(--brand);margin-left:6px;white-space:nowrap}
.chart-form{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.chart-form .form-input{flex:1;min-width:240px}
/* 统一维护期：投稿按钮置灰 */
.chart-form .form-input[disabled]{opacity:.45;cursor:not-allowed}
.chart-form .btn[disabled]{opacity:.4;cursor:not-allowed;pointer-events:none}
.chart-form .btn[disabled]:hover{background:var(--brand)}
.chart-msg{font-size:13px;line-height:1.6;min-height:20px;margin-bottom:8px;color:var(--muted)}
.chart-msg.ok{color:#3fbf6f}
.chart-msg.err{color:#ff6b6b}
.chart-closed{margin-bottom:10px}
.chart-rules{font-size:12px;color:var(--muted);line-height:1.8;border-top:1px solid var(--line);padding-top:12px;margin-top:6px}
.chart-adm-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;padding:9px 0;border-bottom:1px solid var(--line)}
.chart-adm-row .car-name{color:var(--brand);min-width:80px;font-weight:600}
/* 打榜归属下拉（后台）：决定积分发给谁 */
.chart-owner-sel{
  background:var(--panel-2,#1d1d1d);border:1px solid var(--line,#2a2a2a);border-radius:6px;
  color:var(--text,#e8e8e8);font-size:12px;padding:4px 6px;max-width:190px;min-width:130px;
}
.chart-owner-sel.changed{border-color:var(--brand);box-shadow:0 0 0 1px rgba(var(--brand-rgb),.35)}
.chart-own-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 6px}
.chart-own-tip{font-size:12px;color:var(--muted)}
.chart-award-box{margin-top:18px;padding-top:12px;border-top:1px solid var(--line,#2a2a2a)}
.chart-award-box h4{margin:0 0 8px;font-size:14px}
.chart-award-row{display:flex;justify-content:space-between;gap:12px;font-size:13px;padding:6px 0;border-bottom:1px dashed var(--line,#2a2a2a)}
.chart-award-row b{font-weight:600}
.chart-award-row span{color:var(--muted)}
/* 个人中心：我的打榜奖励 */
.awd-sum{font-size:14px;color:var(--muted);margin:2px 0 10px}
.awd-sum b{font-size:20px;color:#d6a44a;font-weight:700;margin:0 2px}
.awd-list{border-top:1px solid var(--line,#2a2a2a)}
.awd-item{display:flex;align-items:center;gap:10px;padding:9px 0;font-size:13px;
  border-bottom:1px solid var(--line,#2a2a2a);flex-wrap:wrap}
.awd-item .awd-w{color:var(--muted);min-width:150px}
.awd-item .awd-r{color:var(--brand);font-weight:600;min-width:84px}
.awd-item .awd-s{flex:1;min-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.awd-item .awd-p{color:#d6a44a;font-weight:700;font-variant-numeric:tabular-nums}
.chart-adm-row .car-song{flex:1;min-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chart-adm-row .car-sub{flex:0 0 auto;font-size:12px;color:var(--muted);background:rgba(127,127,127,.10);border:1px solid var(--line);border-radius:6px;padding:1px 7px;line-height:1.6;white-space:nowrap}
.chart-adm-row .car-sub.imp{color:#b4772a;background:rgba(200,140,50,.12);border-color:rgba(200,140,50,.25)}
.chart-off-note{margin:8px 0 4px;padding:9px 12px;border-radius:8px;font-size:13px;line-height:1.7;color:#b4772a;background:rgba(200,140,50,.12);border:1px solid rgba(200,140,50,.25)}

/* 联合创作人：复选框 / 搜索下拉 / 待确认卡片 */
.coop-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 10px}
.coop-check{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer;user-select:none}
.coop-check input{accent-color:var(--brand);width:15px;height:15px;cursor:pointer}
.coop-hint{font-size:12px}
.coop-picker{margin:0 0 12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}
.coop-picker .form-input{width:100%}
.coop-results{margin-top:8px;max-height:220px;overflow:auto}
.coop-opt{display:block;width:100%;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--txt,#eee);font-size:13px;padding:8px 10px;margin-bottom:6px;cursor:pointer}
.coop-opt:hover{border-color:var(--brand)}
.coop-sel{margin-top:8px;font-size:13px}
.coop-sel b{color:var(--brand)}
.coop-badge{font-size:12px;color:#ffc24d;background:rgba(255,194,77,.12);border:1px solid rgba(255,194,77,.35);border-radius:999px;padding:2px 10px;white-space:nowrap}
.coop-badge.ok{color:#5fd98a;background:rgba(95,217,138,.1);border-color:rgba(95,217,138,.35)}
.coop-ask-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;padding:10px 0;border-bottom:1px solid var(--line)}
.coop-ask-row:last-of-type{border-bottom:none}
.coop-ask-main{flex:1;min-width:200px;display:flex;flex-direction:column;gap:2px}
.coop-ask-main b{color:#fff}
.coop-pending-head{font-size:12px;color:var(--muted);margin:14px 0 2px}
.coop-pending-row{opacity:.85}
.notice{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px;line-height:1.8}
.notice b{color:var(--brand)}

/* 审核面板 */
.invite-bar{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.invite-code{font-size:13px;color:var(--brand);font-family:monospace}
.inv-list{margin-top:6px;margin-bottom:18px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:rgba(255,255,255,.02)}
.inv-title{font-size:12px;color:var(--muted);margin-bottom:8px}
/* 邀请码网格：横排 5 列，每页 5 个，满了翻页 */
.inv-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.inv-cell{display:flex;flex-direction:column;align-items:stretch;gap:6px;border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--panel-2);min-width:0}
.inv-cell .inv-code{font-family:monospace;font-size:12px;color:var(--text);border:0;background:transparent;padding:0;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inv-cell .inv-foot{display:flex;align-items:center;justify-content:center;gap:6px}
.inv-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px dashed rgba(255,255,255,.06)}
.inv-row:first-of-type{border-top:0}
.inv-code{font-family:monospace;font-size:13px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:3px 8px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inv-st{font-size:12px;padding:1px 8px;border-radius:10px;white-space:nowrap}
.inv-st.ok{background:rgba(63,191,111,.18);color:#5fd98a}
.inv-st.warn{background:rgba(255,180,0,.18);color:#ffc24d}
.inv-st.bad{background:rgba(255,107,107,.18);color:#ff8585}
.inv-meta{font-size:12px;color:var(--muted)}
.inv-note{font-size:13px;color:var(--muted);margin:4px 0 18px}
/* 审核用户网格：横排 3 列 × 10 行，每页 30 人，满了翻页 */
.user-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;align-items:start}
.user-grid .user-row{border:1px solid var(--line);border-radius:8px;padding:10px;background:var(--panel-2);border-top:1px solid var(--line);margin:0}
.user-row{padding:12px 0;border-top:1px solid var(--line)}
.ur-name{font-size:15px;font-weight:600}
.ur-h{color:var(--muted);font-weight:400;font-size:13px}
.role-tag{font-size:11px;background:var(--brand);color:#fff;padding:1px 8px;border-radius:10px;margin-left:4px}
.ur-meta{font-size:12px;color:var(--muted);margin:3px 0 8px}
.ur-pts{color:#5fd98a;font-weight:600}
/* 发放积分模块 */
.pg-search{position:relative;margin-bottom:10px}
.pg-results{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 4px);border:1px solid var(--line);border-radius:10px;background:var(--panel-2);box-shadow:0 8px 24px rgba(0,0,0,.35);max-height:260px;overflow:auto}
.pg-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;cursor:pointer;font-size:13px}
.pg-row:hover{background:rgba(255,255,255,.05)}
.pg-rn{font-weight:600}
.pg-none{padding:10px 12px}
.pg-sel{border:1px solid rgba(63,191,111,.35);background:rgba(63,191,111,.08);border-radius:8px;padding:8px 12px;margin-bottom:10px;font-size:13px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pg-pts{color:#5fd98a;font-weight:600}
.pg-form{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.pg-form .form-input{flex:1;min-width:220px}
.pg-log{border-top:1px dashed rgba(255,255,255,.08);padding-top:10px}
.pg-log-title{font-size:12px;color:var(--muted);margin-bottom:6px}
.pg-li{display:flex;gap:12px;align-items:center;font-size:13px;padding:4px 0}
.pg-li span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pg-li .up{color:#5fd98a;font-weight:600}
.pg-li .down{color:#ffc24d;font-weight:600}
.st{font-size:12px;padding:1px 8px;border-radius:10px}
.st.ok{background:rgba(63,191,111,.18);color:#5fd98a}
.st.warn{background:rgba(255,180,0,.18);color:#ffc24d}
.st.bad{background:rgba(255,107,107,.18);color:#ff8585}
.ur-acts{display:flex;flex-wrap:wrap;gap:6px}
.mini{height:28px;padding:0 12px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);border-radius:8px;font-size:12px;cursor:pointer}
.mini:hover{background:#3d3d3d}
.mini.ok{color:#5fd98a;border-color:rgba(63,191,111,.4)}
.mini.bad{color:#ff8585;border-color:rgba(255,107,107,.4)}
.mini.v.on{color:var(--brand);border-color:var(--brand)}
.adm-note{font-size:12px;color:#ffc24d;background:rgba(255,180,0,.10);border:1px solid rgba(255,180,0,.28);border-radius:8px;padding:6px 10px;margin:8px 0}
/* 管理后台模块标签栏 */
.adm-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.adm-tab{position:relative;height:36px;padding:0 16px;border:1px solid var(--line);background:var(--panel-2);color:var(--muted);border-radius:20px;font-size:13px;cursor:pointer}
.adm-tab:hover{background:#3d3d3d;color:var(--text)}
.adm-tab.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
.adm-tab-badge{display:inline-block;min-width:18px;margin-left:6px;padding:0 5px;border-radius:9px;background:rgba(255,255,255,.18);font-style:normal;font-size:11px;line-height:18px;text-align:center;vertical-align:1px}
.adm-tab:not(.on) .adm-tab-badge{background:var(--brand);color:#fff}
.adm-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin:16px 0 4px;padding-top:14px;border-top:1px solid var(--line)}
.adm-pageinfo{font-size:12px;color:var(--muted)}
.adm-pager .mini[disabled]{opacity:.4;cursor:not-allowed}
.adm-pager .mini[disabled]:hover{background:var(--panel-2)}

/* ---------------- 歌手主页 ---------------- */
.singer-hero{position:relative;min-height:88vh;background-size:cover;background-position:center;display:flex;align-items:flex-end;margin-top:-1px;overflow:hidden}
.sh-bg{position:absolute;inset:0;z-index:0}
.sh-slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity 1.3s ease;will-change:opacity}
.sh-slide.on{opacity:1}
.singer-hero-mask{position:absolute;inset:0;z-index:1;background:linear-gradient(to top,rgba(0,0,0,.88),rgba(0,0,0,.25) 55%,rgba(0,0,0,.6))}
.singer-hero-inner{position:relative;z-index:2;width:var(--w);max-width:96%;margin:0 auto;padding:40px 0;display:flex;align-items:flex-end;gap:22px}
@media(max-width:900px){.singer-avatar{width:72px;height:72px;border-width:2px}}
@media(max-width:600px){
  .singer-hero-inner{flex-direction:column;align-items:center;text-align:center;gap:16px;padding:28px 0}
  .singer-avatar{width:72px;height:72px;border-width:2px}
  .singer-id h1{justify-content:center}
  .singer-tags,.singer-links{justify-content:center}
  .singer-bio{max-width:none}
}
.singer-avatar{width:120px;height:120px;border-radius:50%;overflow:hidden;flex:none;border:3px solid rgba(255,255,255,.85);background:var(--panel-2);box-shadow:0 6px 20px rgba(0,0,0,.4)}
.singer-avatar img{width:100%;height:100%;object-fit:cover}
.singer-id h1{margin:0 0 8px;font-size:30px;display:flex;align-items:center;gap:8px}
/* 3D 立体金属标题（歌手名） */
.singer-3d-title{
  margin:0 0 10px;font-size:clamp(38px,6.4vw,72px);font-weight:900;letter-spacing:3px;line-height:1.04;
  background:linear-gradient(180deg,#ffffff 0%,#e6edf3 42%,#aab4c0 55%,#ffffff 72%,#cfd8e2 100%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  text-shadow:0 1px 0 rgba(0,0,0,.45),0 2px 0 rgba(0,0,0,.34),0 3px 2px rgba(0,0,0,.38),0 10px 20px rgba(0,0,0,.55);
  filter:drop-shadow(0 3px 8px rgba(0,0,0,.45));
}
.title-badges{display:flex;align-items:center;gap:8px;margin:-2px 0 12px;flex-wrap:wrap}
.singer-id .singer-3d-title{font-size:clamp(38px,6.4vw,72px)}
.sm-id .singer-3d-title{font-size:clamp(24px,4.4vw,36px);margin-bottom:6px}
/* 照片墙编辑 —— 资料页多图上传 */
.gallery-row{flex-direction:column;align-items:flex-start}
.gallery-prev{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px;width:100%;min-height:40px;margin-bottom:8px}
.gallery-prev .gallery-empty{color:var(--muted);font-size:13px;grid-column:1/-1}
.gthumb{position:relative;aspect-ratio:1/1;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:var(--panel-2)}
.gthumb img{width:100%;height:100%;object-fit:cover;display:block}
.gthumb-del{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;border:none;cursor:pointer;line-height:18px;font-size:14px;padding:0}
.gthumb-del:hover{background:var(--brand)}
.singer-bio{margin:0 0 10px;color:#e8e8e8;line-height:1.7;max-width:680px;font-size:14px}
.singer-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.tag-pill{font-size:12px;background:rgba(255,255,255,.12);color:#fff;padding:3px 12px;border-radius:20px}
.singer-links{display:flex;flex-wrap:wrap;gap:8px}
.ext-link{font-size:13px;color:#fff;background:rgba(var(--brand-rgb),.85);padding:5px 14px;border-radius:20px;text-decoration:none;display:inline-flex;align-items:center}
.ext-link:hover{background:var(--brand)}
.ext-ic{display:inline-flex;width:20px;height:20px;border-radius:50%;background:#fff;align-items:center;justify-content:center;margin-right:6px;padding:2px;box-sizing:border-box;flex:none}
.ext-ic .ic{width:15px;height:15px;display:block}

/* 认证标 */
.badge-v{display:inline-grid;place-items:center;width:20px;height:20px;line-height:1;background:var(--brand);color:#fff;border-radius:50%;font-size:12px;font-weight:700;vertical-align:middle}
/* 标题旁「✓ 已认证」文字胶囊（badge-v 圆形只装得下一个 ✓，勿复用） */
.badge-v-txt{
  display:inline-block;vertical-align:middle;margin-left:8px;padding:3px 12px;border-radius:999px;
  background:var(--brand);color:#fff;font-size:12px;font-weight:600;line-height:1.5;letter-spacing:1px;white-space:nowrap;
}

/* 歌手列表分组 */
.artists-group{margin-bottom:30px}
.group-title{font-size:14px;color:var(--muted);margin:0 0 14px;padding-left:4px;border-left:3px solid var(--brand)}

/* ============================================================
 * 主题色（登录后可选）— 参照小米汽车车身配色
 * 每套主题补齐整套调色板：整页背景 / 面板 / 文字 / 主色 全部跟随切换
 *   （珍珠白、雅灰 取"浅灰亮调"，其余为各色降调深色，确保整页氛围随主题变化）
 * ============================================================ */
:root[data-theme="gulf"]    { --bg:#0E1A24; --panel:#14222E; --panel-2:#1B2C3A; --line:#243847; --text:#EAF2F8; --muted:#8AA0B2; --brand:#2F7FB5; --brand-dark:#235E86; --brand-rgb:47,127,181;  --brand-2:#5BA4D4; }
:root[data-theme="olive"]   { --bg:#15170E; --panel:#1E2114; --panel-2:#272B1A; --line:#343A24; --text:#F0F2E6; --muted:#97A07C; --brand:#7A8B3A; --brand-dark:#5E6C2C; --brand-rgb:122,139,58;  --brand-2:#A6B85E; }
:root[data-theme="elegant"] { --bg:#2A2D31; --panel:#34383D; --panel-2:#3E4349; --line:#4A5057; --text:#EDEFf1; --muted:#9AA1A8; --brand:#5A6B7B; --brand-dark:#45525E; --brand-rgb:90,107,123;  --brand-2:#7E909E; }
:root[data-theme="purple"]  { --bg:#1A1226; --panel:#241830; --panel-2:#2E203E; --line:#3C2C4E; --text:#F3ECFA; --muted:#A791C0; --brand:#8E5BC4; --brand-dark:#6E3FA0; --brand-rgb:142,91,196;  --brand-2:#B389DD; }
:root[data-theme="cambrian"]{ --bg:#121416; --panel:#1A1D1F; --panel-2:#232729; --line:#303436; --text:#E8EBED; --muted:#8A9296; --brand:#7C8A95; --brand-dark:#5A666F; --brand-rgb:124,138,149; --brand-2:#A6B3BC; }
:root[data-theme="meteor"]  { --bg:#0E1622; --panel:#142033; --panel-2:#1B2A42; --line:#243750; --text:#EAF1FB; --muted:#8AA2C2; --brand:#2F80ED; --brand-dark:#1E5FC4; --brand-rgb:47,128,237;  --brand-2:#74A9F2; }
:root[data-theme="lava"]    { --bg:#1F1208; --panel:#2A190E; --panel-2:#361F10; --line:#462913; --text:#FBF0E6; --muted:#C29378; --brand:#F26A1E; --brand-dark:#CE5210; --brand-rgb:242,106,30;  --brand-2:#F79A5C; }
:root[data-theme="pearl"]   { --bg:#2E2C28; --panel:#38352F; --panel-2:#423E37; --line:#4E4A41; --text:#F7F4EF; --muted:#B8B0A2; --brand:#C9A24B; --brand-dark:#A8842F; --brand-rgb:201,162,75;  --brand-2:#E0C078; }
:root[data-theme="diamond"] { --bg:#0A0A0B; --panel:#121214; --panel-2:#1C1C1F; --line:#2A2A2E; --text:#F0F1F2; --muted:#8C8E92; --brand:#B8BDC2; --brand-dark:#8E949A; --brand-rgb:184,189,194; --brand-2:#D7DBDF; }
:root[data-theme="cherry"]  { --bg:#1E0B0C; --panel:#2A1012; --panel-2:#361518; --line:#462023; --text:#FBE9EA; --muted:#C58C90; --brand:#E11D2A; --brand-dark:#B0141F; --brand-rgb:225,29,42;   --brand-2:#F2566A; }

/* 主题选择弹窗 */
.theme-picker-ov{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}
.theme-picker-card{background:var(--panel,#262626);border:1px solid var(--line,#3a3a3a);border-radius:14px;padding:22px;width:100%;max-width:420px;box-shadow:0 18px 50px rgba(0,0,0,.5)}
.tp-title{font-size:16px;font-weight:700;margin:0 0 16px}
.tp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:10px}
.tp-item{display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 4px;border:1px solid var(--line,#3a3a3a);background:var(--panel-2,#2f2f2f);border-radius:10px;cursor:pointer;color:var(--text,#eee);transition:.15s}
.tp-item:hover{border-color:var(--brand);transform:translateY(-2px)}
.tp-item.active{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand) inset}
.tp-item span:last-child{font-size:12px}
.tp-dot{width:24px;height:24px;border-radius:50%;border:1px solid rgba(255,255,255,.25);box-shadow:0 2px 6px rgba(0,0,0,.3)}
.tp-dot.tp-default{width:auto;padding:0 10px;line-height:24px;border-radius:12px;background:var(--panel,#262626);color:var(--muted,#999);font-size:12px}
.tp-close{margin-top:18px;width:100%;height:38px;border:1px solid var(--line,#3a3a3a);background:var(--panel-2,#2f2f2f);color:var(--text,#eee);border-radius:9px;cursor:pointer;font-size:14px}
.tp-close:hover{border-color:var(--brand);color:var(--brand)}

/* ============================================================
 * 积分商城（账户内）
 * ============================================================ */
.shop-block{background:var(--panel-2,#2c2c2c);border:1px solid var(--line,#3a3a3a);border-radius:12px;padding:16px 18px;margin-bottom:16px}
.shop-h{font-size:15px;font-weight:700;margin:0 0 6px}
.shop-note{font-size:13px;color:var(--muted,#999);line-height:1.6;margin:0 0 12px}
.shop-note b{color:var(--brand)}
.invite-my{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.invite-my .invite-code{flex:1;min-width:160px}
.shop-st{font-size:13px;color:var(--muted,#999)}
.shop-st.ok{color:#5fd98a}
.shop-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line,#3a3a3a)}
.shop-item:first-of-type{border-top:none}
.si-name{font-size:14px;font-weight:600;flex:1}
.si-type{font-size:12px;color:var(--muted,#999);background:var(--panel,#262626);padding:2px 9px;border-radius:10px}
.shop-item .mini{flex:none}

/* 推荐 / 装扮徽标 */
.badge-boost{display:inline-grid;place-items:center;height:18px;line-height:1;padding:0 8px;background:var(--brand);color:#fff;border-radius:9px;font-size:11px;font-weight:700;vertical-align:middle}
.badge-cos{display:inline-grid;place-items:center;height:18px;line-height:1;padding:0 8px;border-radius:9px;font-size:11px;font-weight:700;vertical-align:middle;color:#3a2a00;background:linear-gradient(135deg,#ffe08a,#f5b400);box-shadow:0 1px 4px rgba(245,180,0,.5)}

/* 装扮边框：跟随头像的圆环（2026-10-30 起废弃"整卡片矩形内框"写法）
   只在 .avatar / .singer-avatar / .sm-avatar 这类圆形头像容器上生效，
   box-shadow 不外扩布局，圆环自然沿 border-radius:50% 走。
   注意：必须排在 .framed / .avf-ring 之后，否则会被 framed 的 box-shadow:none 盖掉 */

/* 金色头像框（装扮商城 800 积分）
   资产四档 180/96/56/32，viewBox 已裁到内容边界 → 外径 = 头像 × 1.46
   绝对定位叠在头像上，不影响原布局；framed 时容器放开 overflow 让金环露出来 */
.singer-avatar,.sm-avatar{position:relative}
.avf-ring{
  position:absolute;left:-23.2%;top:-23.2%;width:146.43%;height:146.43%;z-index:3;
  background-size:100% 100%;background-repeat:no-repeat;pointer-events:none;
}
.avf-ring.lg{filter:drop-shadow(0 3px 12px rgba(0,0,0,.45))}
.singer-avatar.framed,.sm-avatar.framed,.artist-item .avatar.framed{
  overflow:visible;border-color:transparent!important;background:transparent;box-shadow:none;
}
.framed > img,.framed > div{border-radius:50%}

/* 装扮边框本体（放在 framed 之后才生效，见上方说明）
   三段 shadow：内环主色 → 外圈 1px 暗边（模拟金属厚度）→ 柔光 */
.singer-avatar.cos-gold_border,.sm-avatar.cos-gold_border,.artist-item .avatar.cos-gold_border{
  border-color:#f5b400!important;
  box-shadow:0 0 0 3px #f5b400, 0 0 0 4px rgba(118,76,0,.9), 0 0 16px rgba(245,180,0,.55)!important;
}
.singer-avatar.cos-neon_border,.sm-avatar.cos-neon_border,.artist-item .avatar.cos-neon_border{
  border-color:#46e0ff!important;
  box-shadow:0 0 0 3px #46e0ff, 0 0 0 4px rgba(6,40,58,.9), 0 0 18px rgba(70,224,255,.7)!important;
}
/* 小头像（列表卡片 50px）圈细一档，避免环比脸还抢眼 */
.artist-item .avatar.cos-gold_border{box-shadow:0 0 0 2px #f5b400, 0 0 0 3px rgba(118,76,0,.85), 0 0 10px rgba(245,180,0,.5)!important}
.artist-item .avatar.cos-neon_border{box-shadow:0 0 0 2px #46e0ff, 0 0 0 3px rgba(6,40,58,.85), 0 0 12px rgba(70,224,255,.65)!important}

/* 装扮商城里的 22px 预览小圆（让用户买之前就知道边框长成圆环） */
.cos-mini{width:22px;height:22px;flex:none;border-radius:50%;display:inline-block;
  background:linear-gradient(160deg,#4a4a4a,#232323);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.cos-mini.cm-border-gold{box-shadow:0 0 0 2px #f5b400,0 0 8px rgba(245,180,0,.55)}
.cos-mini.cm-border-neon{box-shadow:0 0 0 2px #46e0ff,0 0 9px rgba(70,224,255,.7)}
.cos-mini.cm-badge{background:linear-gradient(135deg,#ffe08a,#f5b400);color:#3a2a00;font-size:10px;font-weight:800;
  display:inline-flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px rgba(255,255,255,.16)}
.cos-mini.cm-avatar{box-shadow:0 0 0 2px #f5b400,0 0 0 4px #8a6a1a,0 0 9px rgba(245,180,0,.5)}

/* ---------------- 歌手后台：主页主题配色 ---------------- */
.ht-box{display:flex;flex-wrap:wrap;gap:16px;align-items:stretch;width:100%}
.ht-inputs{display:flex;flex-direction:column;gap:9px;min-width:190px;flex:0 0 auto}
.ht-row{display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:14px;color:var(--muted)}
.ht-row input[type=color]{width:54px;height:30px;padding:0;border:1px solid var(--line);border-radius:6px;background:transparent;cursor:pointer}
.ht-reset{align-self:flex-start;margin-top:2px;background:transparent;color:var(--text);border:1px solid var(--line);border-radius:7px;padding:6px 12px;font-size:13px;cursor:pointer}
.ht-reset:hover{border-color:var(--brand);color:var(--brand)}
.ht-prev{flex:1 1 240px;min-width:220px;border:1px solid var(--line);border-radius:10px;padding:12px;
  background:var(--ht-bg,#1f1f1f)}
.htp-hero{display:flex;align-items:center;gap:10px;padding:14px 12px;margin-bottom:10px;border-radius:8px;
  background:linear-gradient(120deg,rgba(255,255,255,.10),rgba(255,255,255,0) 70%)}
.htp-name{font-weight:700;color:#fff;font-size:15px}
.htp-tag{font-size:11px;padding:2px 8px;border-radius:9px;color:#fff;background:var(--ht-accent,#e61723)}
.htp-btn{margin-left:auto;font-size:12px;padding:5px 12px;border-radius:16px;color:#fff;background:var(--ht-accent,#e61723)}
.htp-card{border-radius:8px;padding:10px 12px;font-size:13px;color:#d8d8d8;background:var(--ht-card,#2a2a2a)}
@media(max-width:700px){.ht-box{gap:12px}.ht-inputs,.ht-prev{flex:1 1 100%;min-width:0}}

/* ---------------- 主页打榜：行内操作 + 评论区 + toast ---------------- */
.melo-row-acts{display:flex;gap:2px;flex-shrink:0;-ms-flex:0 0 auto;margin-left:2px}
.melo-act{
  background:none;border:none;cursor:pointer;color:var(--muted);font-size:13px;line-height:1;
  padding:4px 5px;border-radius:6px;transition:color .15s,background .15s;
}
.melo-act:hover{color:var(--brand);background:rgba(var(--brand-rgb),.12)}
.melo-act[data-fav].on{color:#e0567a}
/* 评论区（跟随当前播放的打榜歌） */
.melo-cmt{margin-top:14px;border-top:1px dashed var(--line);padding-top:12px}
.melo-cmt-head{font-size:13px;font-weight:600;margin-bottom:8px}
.melo-cmt-emoji{display:flex;gap:2px;flex-wrap:wrap;margin-bottom:6px}
.melo-cmt-form{display:flex;gap:6px;margin-bottom:10px}
.melo-cmt-form input{
  flex:1;min-width:0;background:var(--panel-2,#f5f5f5);border:1px solid var(--line);border-radius:8px;
  padding:7px 10px;font-size:13px;color:var(--text);outline:none;
}
.melo-cmt-form input:focus{border-color:var(--brand)}
.mc-row{display:flex;align-items:flex-start;gap:8px;padding:7px 0;border-bottom:1px dashed var(--line)}
.mc-row:last-child{border-bottom:none}
.mc-avatar{
  flex-shrink:0;width:26px;height:26px;border-radius:50%;color:#fff;font-size:12px;
  display:flex;align-items:center;justify-content:center;font-weight:600;
}
.mc-main{flex:1;min-width:0}
.mc-name{display:block;font-size:11px;color:var(--muted);margin-bottom:2px}
.mc-text{display:block;font-size:13px;line-height:1.5;word-break:break-word}
.mc-del{opacity:.45}
.mc-del:hover{opacity:1;color:#e0567a}
/* 轻提示（收藏/分享/评论反馈） */
.melo-toast{
  position:fixed;left:50%;bottom:96px;transform:translateX(-50%);z-index:9998;
  background:var(--panel,#1b1d22);color:var(--text,#fff);border:1px solid var(--line,#3a3d45);
  border-radius:20px;padding:8px 18px;font-size:13px;box-shadow:0 6px 22px rgba(0,0,0,.35);
  animation:meloToastIn .25s ease;max-width:80vw;text-align:center;
}
@keyframes meloToastIn{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
/* ---------------- 个人中心（普通用户） ---------------- */
.uc-head{display:flex;gap:16px;align-items:center}
.uc-avatar{position:relative;flex-shrink:0;width:72px;height:72px}
.uc-avatar-up{
  position:absolute;right:-4px;bottom:-4px;width:26px;height:26px;border-radius:50%;
  background:var(--panel);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;
  font-size:13px;cursor:pointer;user-select:none;line-height:1;
}
.uc-avatar-up:hover{border-color:var(--brand);color:var(--brand)}
.uc-head-info{flex:1;min-width:0}
.uc-nick-row{display:flex;gap:8px;max-width:340px}
.uc-nick-row .form-input{flex:1;min-width:0}
.uc-tabs{display:flex;gap:8px;margin:16px 0 10px}
.uc-tabbox{min-height:80px}
/* ---------------- 个人中心：本周打榜曲黄金位 ---------------- */
.uc-hero{position:relative;margin:20px 0 4px;border:1px solid var(--brand);border-radius:12px;overflow:hidden;background:var(--panel)}
.uc-hero::before{content:'';position:absolute;inset:0;background:linear-gradient(115deg,var(--brand),transparent 58%);opacity:.1;pointer-events:none}
.uc-hero::after{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand);pointer-events:none}
.uc-hero-hd{position:relative;display:flex;display:-ms-flexbox;align-items:center;gap:10px;padding:12px 18px 0 20px;-ms-flex-wrap:wrap;flex-wrap:wrap}
.uc-hero-tag{
  font-size:11px;font-weight:700;letter-spacing:1px;line-height:1;
  color:#1a1a1a;background:var(--brand);padding:5px 8px;border-radius:5px;
}
.uc-hero-win{font-size:12px;color:var(--muted)}
.uc-hero-win b{color:var(--text)}
.uc-hero-sp{flex:1;-ms-flex:1}
.uc-hero-bd{position:relative;display:flex;display:-ms-flexbox;gap:18px;padding:14px 18px 0 20px;align-items:flex-start;-ms-flex-align:start}
.uc-hero-cover{
  position:relative;width:112px;height:112px;border-radius:10px;overflow:hidden;flex:none;
  background:var(--line);box-shadow:0 6px 18px rgba(0,0,0,.45);cursor:pointer;
}
.uc-hero-cover img{width:100%;height:100%;object-fit:cover;display:block}
.uc-hero-play{
  position:absolute;inset:0;display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;
  justify-content:center;-ms-flex-pack:center;background:rgba(0,0,0,.3);transition:.18s;
}
.uc-hero-play i{
  width:34px;height:34px;border-radius:50%;background:var(--brand);
  display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;justify-content:center;-ms-flex-pack:center;
  box-shadow:0 2px 8px rgba(0,0,0,.4);
}
.uc-hero-play svg{width:13px;height:13px;fill:#1a1a1a;margin-left:2px}
.uc-hero-cover:hover .uc-hero-play{background:rgba(0,0,0,.15)}
.uc-hero-main{flex:1;-ms-flex:1;min-width:0}
.uc-hero-title{
  font-size:20px;font-weight:700;line-height:1.32;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.uc-hero-sub{font-size:12px;color:var(--muted);margin-top:6px}
.uc-hero-nums{display:flex;display:-ms-flexbox;align-items:flex-end;-ms-flex-align:end;gap:24px;margin-top:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}
.uc-hero-num-l{font-size:11px;color:var(--muted);margin-bottom:3px}
.uc-hero-rank{display:flex;display:-ms-flexbox;align-items:baseline;-ms-flex-align:baseline;gap:3px}
.uc-hero-rank b{font-size:40px;line-height:1;color:var(--brand);font-family:system-ui,-apple-system,sans-serif}
.uc-hero-rank span{font-size:13px;color:var(--muted)}
.uc-hero-num{font-size:20px;font-weight:700;line-height:1.1}
.uc-hero-num.hot{color:var(--brand)}
.uc-hero-gap{margin-top:14px;max-width:540px}
.uc-hero-gap-t{display:flex;display:-ms-flexbox;justify-content:space-between;-ms-flex-pack:justify;font-size:11px;color:var(--muted);margin-bottom:5px}
.uc-hero-gap-t b{color:var(--text)}
.uc-hero-bar{height:6px;border-radius:3px;background:rgba(255,255,255,.1);overflow:hidden}
.uc-hero-bar i{display:block;height:100%;border-radius:3px;background:var(--brand)}
.uc-hero-acts{display:flex;display:-ms-flexbox;flex-direction:column;-ms-flex-direction:column;gap:8px;flex:none;padding-top:2px}
.uc-hero-ft{
  position:relative;display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:18px;
  margin:16px 18px 0 20px;padding:13px 0 0;border-top:1px solid rgba(255,255,255,.07);-ms-flex-wrap:wrap;flex-wrap:wrap;
}
.uc-hero-metric{flex:1;-ms-flex:1;min-width:78px}
.uc-hero-metric em{display:block;font-size:11px;color:var(--muted);font-style:normal}
.uc-hero-metric b{display:block;font-size:17px;font-weight:700;margin-top:3px}
.uc-hero-spark{text-align:right;padding-right:2px}
.uc-hero-spark em{display:block;font-size:11px;color:var(--muted);margin-bottom:5px;font-style:normal}
.uc-hero-spark svg{display:block;color:var(--brand)}
.uc-hero-foot{
  position:relative;padding:11px 20px 14px;font-size:11px;line-height:1.6;color:#8d8d93;
  border-top:1px solid rgba(255,255,255,.07);margin-top:12px;
}
/* 空态：本周还没打榜 */
.uc-hero-empty{
  position:relative;display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:14px;
  padding:16px 20px;border:1px dashed var(--line);border-radius:12px;margin:20px 0 4px;background:rgba(255,255,255,.02);
}
.uc-hero-empty-ico{
  width:42px;height:42px;border-radius:50%;flex:none;display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;
  justify-content:center;-ms-flex-pack:center;background:var(--panel);border:1px solid var(--line);font-size:20px;
}
.uc-hero-empty div{flex:1;-ms-flex:1;min-width:0}
.uc-hero-empty b{display:block;font-size:14px;margin-bottom:3px}
.uc-hero-empty span{font-size:12px;color:var(--muted)}
@media(max-width:760px){
  .uc-hero-bd{flex-wrap:wrap}
  .uc-hero-cover{width:88px;height:88px}
  .uc-hero-title{font-size:17px}
  .uc-hero-rank b{font-size:32px}
  .uc-hero-acts{flex-direction:row;width:100%;padding-top:6px}
  .uc-hero-acts .mini{flex:1}
  .uc-hero-nums{gap:16px}
}
.uc-song-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line)}
.uc-song-row:last-child{border-bottom:none}
.uc-cover{flex-shrink:0;width:40px;height:40px;border-radius:8px;overflow:hidden;background:var(--line)}
.uc-cover img{width:100%;height:100%;object-fit:cover;display:block}
.uc-song-main{flex:1;min-width:0;display:flex;flex-direction:column}
.uc-song-main b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uc-song-main span{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uc-pl-card{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px}
.uc-pl-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.uc-pl-head b{flex:1}
.uc-pl-new{display:flex;gap:8px;margin-bottom:12px;max-width:380px}
.uc-pl-new .form-input{flex:1;min-width:0}
.uc-cmt-body{flex:1;min-width:0;display:flex;flex-direction:column}
.uc-cmt-body b{font-size:13px;font-weight:500;line-height:1.5;word-break:break-word}
.uc-cmt-body span{font-size:11px}
/* ---------------- 管理后台：评论审核 + 经验配置 ---------------- */
.adm-cmt-row{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px dashed var(--line)}
.adm-cmt-row:last-child{border-bottom:none}
.adm-cmt-main{flex:1;min-width:0;font-size:13px;line-height:1.6}
.adm-cmt-main b{font-weight:600}
.adm-cfg-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.adm-cfg-row label{font-size:13px}

/* ===== 未登录空态（曲谱库共用） ===== */
.dl-guest{width:var(--w);margin:0 auto;text-align:center;padding:60px 24px}
.dl-guest-t{font-size:20px;font-weight:700;margin-bottom:8px}
.dl-guest-s{font-size:13px;color:var(--muted);margin-bottom:20px}
@media(max-width:1200px){.dl-guest{width:96%}}

/* ============================================================
   曲谱库 #/sheets（仅注册用户可见）
   版式沿用主站：深灰底 + 品牌红；筛选栏 260px sticky + 右侧 4 列
   ============================================================ */
.sh-pagehead{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.sh-lead{font-size:13.5px;color:var(--muted);color:var(--muted)}
.sh-lead b{color:var(--text);font-weight:600}

.sh-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
.sh-metric{background:var(--panel);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.sh-metric span{display:block;font-size:12.5px;color:var(--muted);margin-bottom:6px}
.sh-metric b{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text)}

.sh-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:16px}
.sh-tab{position:relative;padding:9px 16px;font-size:14.5px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}
.sh-tab:hover{color:var(--text)}
.sh-tab.on{color:var(--text);border-bottom-color:var(--brand);font-weight:600}
.sh-tab i{font-style:normal;display:inline-block;margin-left:6px;padding:0 6px;border-radius:9px;
  background:var(--brand);background:var(--brand);color:#fff;font-size:11.5px;line-height:17px;vertical-align:1px}

.sh-body{display:grid;grid-template-columns:260px minmax(0,1fr);gap:22px;align-items:start}

.sh-side{position:sticky;top:14px;background:var(--panel);background:var(--panel);
  border:1px solid var(--line);border-radius:10px;padding:14px}
.sh-side-h{font-size:14px;font-weight:600;margin-bottom:10px}
.sh-lab{display:block;font-size:12px;color:var(--muted);margin:10px 0 5px}
.sh-input{width:100%;height:34px;font-size:13px;background:var(--panel-2);background:var(--panel-2);
  border:1px solid var(--line);color:var(--text);color:var(--text);border-radius:7px;padding:0 9px;font-family:inherit}
.sh-input:focus{outline:none;border-color:var(--brand)}
.sh-reset{margin-top:12px;width:100%;height:32px;font-size:13px;color:var(--muted);background:transparent;
  border:1px solid var(--line);border-radius:7px;cursor:pointer;font-family:inherit}
.sh-reset:hover{color:var(--text);border-color:#555}
.sh-sidenum{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);text-align:center}
.sh-sidenum b{display:block;font-size:22px;font-variant-numeric:tabular-nums}
.sh-sidenum span{font-size:12px;color:var(--muted)}
.sh-note{margin-top:12px;font-size:11.5px;line-height:1.75;color:var(--muted);
  background:rgba(255,255,255,.03);border-radius:7px;padding:8px 9px}
.sh-note b{color:#d9d9d9;font-weight:600}

.sh-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.sh-count{font-size:13px;color:var(--muted)}
.sh-sort{width:auto;min-width:132px;height:32px;font-size:13px}
.sh-filterbtn{display:none;height:32px;padding:0 14px;font-size:13px;border-radius:7px;
  border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer;font-family:inherit}

.sh-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.sh-card{background:var(--panel);background:var(--panel);border:1px solid var(--line);border-radius:10px;
  padding:12px 12px 10px;display:flex;flex-direction:column;min-height:126px;
  transition:border-color .15s,transform .15s}
.sh-card:hover{border-color:#4d4d4d;transform:translateY(-1px)}
.sh-card.owned{border-color:rgba(var(--brand-rgb),.45)}
.sh-t{font-size:14px;font-weight:600;line-height:1.4;color:var(--text);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:39px}
.sh-e{font-size:11.5px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sh-m{font-size:11.5px;color:var(--muted);margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sh-f{margin-top:auto;padding-top:10px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.sh-price{font-size:12px;color:var(--brand-2);color:var(--brand-2);white-space:nowrap}
.sh-own{font-size:12px;color:#7fc98a;white-space:nowrap}
.sh-btns{display:flex;gap:6px}
.sh-btn{height:26px;padding:0 10px;font-size:12px;border-radius:6px;border:1px solid var(--line);
  background:var(--panel-2);background:var(--panel-2);color:var(--text);color:var(--text);
  cursor:pointer;font-family:inherit;white-space:nowrap}
.sh-btn:hover:not(:disabled){border-color:var(--brand);background:rgba(var(--brand-rgb),.16)}
.sh-btn:disabled{opacity:.6;cursor:default}

.sh-pager{display:flex;align-items:center;justify-content:center;gap:6px;margin:18px 0 6px;flex-wrap:wrap}
.sh-pg{min-width:32px;height:32px;padding:0 10px;font-size:13px;border-radius:7px;border:1px solid var(--line);
  background:var(--panel);background:var(--panel);color:var(--muted);cursor:pointer;font-family:inherit}
.sh-pg:hover:not(:disabled){color:var(--text);border-color:#555}
.sh-pg.on{background:var(--brand);background:var(--brand);border-color:var(--brand);color:#fff}
.sh-pg:disabled{opacity:.4;cursor:default}
.sh-dot{color:var(--muted);padding:0 2px}

.sh-msg{margin-bottom:10px;font-size:13px;padding:8px 10px;border-radius:7px;
  background:rgba(255,255,255,.04);border-left:3px solid transparent;color:var(--text)}
.sh-msg.ok{border-left-color:#7fc98a}
.sh-msg.warn{border-left-color:var(--brand)}
.sh-empty{padding:56px 0;line-height:1.9}

.sh-minebar{font-size:13px;color:var(--muted);margin-bottom:12px}
.sh-minehint{margin-left:12px;color:#6f6f6f}
.sh-minelist{display:flex;flex-direction:column;gap:8px}
.sh-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;
  background:var(--panel);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.sh-row-t{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sh-row-m{font-size:12px;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sh-row-side{display:flex;gap:14px;font-size:12px;color:var(--muted);white-space:nowrap}
.sh-credit{margin-top:22px;font-size:11.5px;color:#6f6f6f;line-height:1.85}
.sh-credit a{color:var(--muted);text-decoration:underline}

@media(max-width:1200px){
  .sh-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .sh-row-side{flex-wrap:wrap;gap:8px 12px}
}
@media(max-width:900px){
  .sh-body{grid-template-columns:minmax(0,1fr);gap:14px}
  .sh-side{position:static;display:none}
  .sh-side.open{display:block}
  .sh-filterbtn{display:inline-flex;align-items:center}
  .sh-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sh-grid{grid-template-columns:minmax(0,1fr)}
  .sh-t{min-height:0}
  .sh-row{grid-template-columns:minmax(0,1fr);gap:10px}
  .sh-bar{flex-wrap:wrap}
  .sh-credit{margin-bottom:76px}
}
.sh-row-side span+span{position:relative;padding-left:15px}
.sh-row-side span+span::before{content:'';position:absolute;left:0;top:50%;width:3px;height:3px;
  border-radius:50%;background:#5a5a5a;transform:translateY(-50%)}

/* 监控中心（MELO 麦浪榜监测页嵌入，暗色 iframe） */
.uc-mon-frame{width:100%;height:1500px;border:0;border-radius:10px;background:#0d0d12;display:block}
@media(max-width:640px){.uc-mon-frame{height:1800px}}

/* ---------------- 曲库入库表单（歌手后台 · 曲库入库） ---------------- */
.lib-form{display:flex;flex-direction:column;gap:12px}
.lib-form > .form-input{width:100%}
.lib-fields{display:flex;display:-ms-flexbox;flex-wrap:wrap;-ms-flex-wrap:wrap;gap:10px}
.lib-field{display:flex;display:-ms-flexbox;flex-direction:column;-ms-flex-direction:column;gap:5px;flex:1;-ms-flex:1;min-width:132px}
.lib-field > span{font-size:12px;color:var(--muted)}
.lib-field > span i{color:var(--brand);font-style:normal;font-weight:700}
.lib-field select{
  height:38px;padding:0 10px;border-radius:8px;border:1px solid var(--line);
  background:#2a2a2a;color:var(--text);font-size:13px;outline:none;cursor:pointer;
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,#8a8a8a 50%),linear-gradient(135deg,#8a8a8a 50%,transparent 50%);
  background-position:calc(100% - 16px) 17px,calc(100% - 11px) 17px;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;
}
.lib-field select:focus{border-color:var(--brand)}
.lib-actions{display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;gap:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}
@media(max-width:760px){
  .lib-field{min-width:calc(50% - 5px)}
}

/* ---------------- 我的作品并入曲库入库（资料页提示 / 待补标签） ---------------- */
.lib-moved{
  font-size:12.5px;line-height:1.75;color:var(--muted);
  padding:11px 14px;border-radius:9px;border:1px dashed var(--line);background:rgba(255,255,255,.02);
}
.lib-moved b{color:var(--brand);font-weight:600}
.lib-need{color:#e0a33e;font-weight:600}

/* 行内补标签：曲目行下方就地展开的五个下拉（不用重新贴链接） */
.lib-inline{
  margin:2px 0 10px 50px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;
  border-left:3px solid var(--brand);background:rgba(255,255,255,.035);
}
.lib-inline .lib-fields{gap:8px}
.lib-inline .lib-field{min-width:108px}
.lib-inline .lib-field select{height:34px;padding:0 9px;background-position:calc(100% - 16px) 15px,calc(100% - 11px) 15px}
.lib-inline .lib-actions{margin-top:10px;gap:10px}
@media(max-width:760px){
  .lib-inline{margin-left:0}
  .lib-inline .lib-field{min-width:calc(50% - 4px)}
}

/* 外链区超过 6 个时折叠（歌手主页 / 浮窗共用） */
.ext-rest{display:contents}
.ext-rest[hidden]{display:none}
.ext-more{font-family:inherit;font-size:13px;cursor:pointer;border:none;background:rgba(255,255,255,.16);color:#fff;padding:5px 14px;border-radius:20px}
.ext-more:hover{background:rgba(255,255,255,.3)}

/* ============================================================
   歌手主页独立播放器（singer_player.js）
   ============================================================ */
/* 作品行：可播行 hover 提示 + 正在播放高亮 */
.sp-row{cursor:pointer}
.sp-row:hover{background:rgba(255,255,255,.05)}
.sp-row .idx{position:relative}
.sp-row:hover .idx::after{content:'▶';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--brand)}
.sp-row.sp-on{background:rgba(232,200,119,.08);box-shadow:inset 3px 0 0 var(--brand)}
.sp-row.sp-on .sname b{color:var(--brand)}
.sp-row.sp-on .idx{visibility:hidden}
.sp-row.sp-on .idx::before{content:'🔊';visibility:visible;position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px}
/* 作品标题行 + 播放全部 */
.sp-head{display:flex;align-items:center;gap:14px}
.sp-playall{
  font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;border:none;border-radius:20px;
  padding:6px 18px;color:#10151f;background:linear-gradient(90deg,var(--brand),#8fd3ff);
  box-shadow:0 3px 10px rgba(0,0,0,.25);transition:transform .15s,box-shadow .15s}
.sp-playall:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(0,0,0,.32)}
.sp-playall:active{transform:translateY(0)}
/* 底部 mini 播放条 */
.spbar{
  position:fixed;left:0;right:0;bottom:0;z-index:1200;
  display:flex;align-items:center;gap:12px;
  padding:9px 16px calc(9px + env(safe-area-inset-bottom,0px));
  background:linear-gradient(180deg,rgba(16,22,36,.97),rgba(10,14,24,.98));
  border-top:1px solid rgba(255,255,255,.09);
  box-shadow:0 -8px 26px rgba(0,0,0,.45);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.sp-covbox{flex:none;width:46px;height:46px;border-radius:9px;overflow:hidden;background:#1a2438;display:flex;align-items:center;justify-content:center}
.sp-cov{width:100%;height:100%;object-fit:cover;display:block}
.sp-cov-fallback{font-size:20px}
.sp-mid{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:4px}
.sp-line1{display:flex;align-items:baseline;gap:8px;min-width:0}
.sp-line1 b{font-size:13.5px;color:#eef4fb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-line1 span{font-size:11.5px;color:#93a5bd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:none}
.sp-line2{display:flex;align-items:center;gap:9px}
.sp-t{flex:none;font-size:10.5px;color:#8fa3bd;font-variant-numeric:tabular-nums}
.sp-track{flex:1 1 auto;height:14px;display:flex;align-items:center;cursor:pointer}
.sp-track::before{content:'';position:absolute}
.sp-track i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--brand),#8fd3ff);transition:width .2s linear}
.sp-track{position:relative}
.sp-track::after{content:'';position:absolute;left:0;right:0;top:6px;height:3px;border-radius:99px;background:rgba(255,255,255,.14)}
.sp-track i{position:relative;z-index:1;height:3px}
.sp-ctl{flex:none;display:flex;align-items:center;gap:4px}
.sp-btn{
  font-family:inherit;border:none;background:transparent;color:#c9d6e6;cursor:pointer;
  font-size:15px;width:34px;height:34px;border-radius:50%;line-height:1;transition:background .15s,color .15s}
.sp-btn:hover{background:rgba(255,255,255,.1);color:#fff}
.sp-play{font-size:16px;background:rgba(255,255,255,.1);color:#fff}
.sp-play:hover{background:var(--brand);color:#10151f}
.sp-close{color:#7d8fa8}
@media(max-width:640px){
  .spbar{gap:9px;padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px))}
  .sp-covbox{width:40px;height:40px}
  .sp-btn{width:30px;height:30px;font-size:14px}
  .sp-line1 span{display:none}
  .sp-close{display:none}
}
/* 有播放条时给页面底部留出空间，避免遮挡页脚 */
body.sp-playing{padding-bottom:76px}
