/* 敬拜音房 · 视觉规则（2026-10-16 第三批）。放在 style.css 之后加载，只做「收口」，不重写页面样式。
   ① 金色只在三处：当前导航项、「已发布」标签（金色描边）、全站唯一的金色实心按钮「定稿发布」。其余地方一律不用金色。
   ② 每屏的主操作是「墨色实心」按钮（浅底深字）；最多一个。
   ③ 提醒类（缺调、偏多、待排）用低饱和的暖灰橙，不用金色、不用大红。
   ④ 字号三级、间距 4 的倍数、圆角两种（小 6 / 大 12）、颜色走 token、可点区域 ≥ 44px。
   做法：旧的 --gold / --gold-lt / --gold-bg 改指墨色（页面里原来用金色的地方一下全部变成中性色），真正的金色只有 --gold-ui，且只在上面三处显式使用。 */
:root{
  --gold-ui:#E0A84E; --gold-ui-ink:#1A1306;                         /* 唯一的金色 */
  --ink-btn-bg:#EBE8E2; --ink-btn-fg:#0E0F11;                        /* 墨色实心按钮 */
  --gold:var(--ink-btn-bg); --gold-ink:var(--ink-btn-fg); --gold-lt:#EBE8E2; --gold-bg:#1C1D21;     /* 旧变量改成墨色 */
  --warm:#D2A07E; --warm-bd:rgba(210,160,126,.55); --warm-bg:rgba(210,160,126,.10);                 /* 提醒：暖灰橙 */
  --warn:#D2A07E;                                                    /* 不再用大红做提醒（危险操作的删除按钮另用 --danger） */
  --danger:#E0866C;
  --r-sm:6px; --r-lg:12px;                                           /* 圆角：按钮 / 标签 6，卡片 12 */
  --fs-lg:22px; --fs-md:15px; --fs-sm:13px;                          /* 字号：大标题 / 正文 / 小字 */
  --font-voice:var(--font-serif);
  --font-num:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
}
/* ---- 允许用金色的三处 ---- */
.nav a.on{color:var(--gold-ui)}
.chip.pub,.tag.pub,.sv-pill.pub{border-color:var(--gold-ui);color:var(--gold-ui);background:none}
.btn.gold-solid,.btn.primary.gold-solid{background:var(--gold-ui);border-color:var(--gold-ui);color:var(--gold-ui-ink)}
.btn.gold-solid:hover{filter:brightness(1.07)}
/* ---- 墨色实心按钮 ---- */
.btn.ink,.btn.primary{background:var(--ink-btn-bg);border-color:var(--ink-btn-bg);color:var(--ink-btn-fg);font-weight:600}
.btn.ink:hover,.btn.primary:hover:not(:disabled){filter:none;background:#fff;border-color:#fff}
.btn.ink:disabled,.btn.primary:disabled{background:#2A2C31;border-color:#2A2C31;color:#8A8780}
a.btn.ink,a.btn.primary{color:var(--ink-btn-fg)}
/* ---- 原来写死金色的地方 ---- */
.chip.gold{border-color:var(--line-strong,#3A3C42);color:var(--ink-soft)}
.sc-av.gold{border:1px solid var(--line-strong,#3A3C42);color:var(--ink)}                   /* 头像不再有金圈 */
.sc-tag.gold,.sv-pill.gold,.sv-key.gold{border-color:var(--line-strong,#3A3C42);color:var(--ink)}
.sv-key.gold{border-color:var(--warm-bd);color:var(--warm)}
.it .badge.scripture{background:#25262B;color:var(--ink)}
.ri .dot.todo,.rp-s.todo{color:var(--warm)}.ri .dot.todo{background:var(--warm)}
.rp-i.on{background:#22242A;color:var(--ink)}
.rdy-r{border-color:var(--warm-bd);color:var(--warm)}.rdy-r:hover{background:var(--warm-bg)}
.sh-pw,.sh-merge2,.sh-merge-note.warn,.sh-multi{color:var(--warm)}.sh-merge2{border-color:var(--warm-bd)}
.lyr .pw .wn.gold,.pw .wn.gold{color:var(--warm)}
.ins-grade.g-fair{color:var(--warm)}
.bdg.mid{background:var(--warm-bg);color:var(--warm)}.bdg.bad{background:rgba(224,134,108,.12);color:var(--danger)}
.bl-day input,.fix input,.fixv input[type=range]{accent-color:#EBE8E2}
.pv-block{border-color:rgba(235,232,226,.7)}.pv-gx,.pv-gy{background:rgba(235,232,226,.5)}
.similar{background:rgba(235,232,226,.04)}
.sh .pg.sh-pg.on .ly:not(.sh-edit){background:rgba(235,232,226,.05)}
.fb-toast.fb-warn{border-color:var(--warm)}.fb-toast-undo,.fb-inline-warn{color:var(--warm)}
/* 选中的卡片：浅一点的背景 + 细描边，不用金色 */
.it.on{border-color:#3A3C42;background:#1F2024}.it.on .it-t{color:var(--ink)}
.sh-step.on{background:#1B1C20;box-shadow:0 0 0 1px #2E3035}
button.danger,.btn.danger{border-color:var(--danger);color:var(--danger)}
/* ---- 可点区域 ≥ 44px（手机）---- */
@media (max-width:900px){.btn{min-height:44px}.nav a{min-height:44px}}
/* ---- 纯文字按钮（排练 / 导出 / 预检）---- */
.btn.text{background:none;border-color:transparent;color:var(--ink-soft);padding:7px 10px}
.btn.text:hover:not(:disabled){color:var(--ink);background:#1F2125}
.btn.text:disabled{opacity:.4}
.btn.text.warm{color:var(--warm)}
.btn.text.warm:hover:not(:disabled){color:var(--warm);background:var(--warm-bg)}
/* ---- 场次编辑页顶栏 ---- */
.se-head .se-title{font-family:var(--font-voice);font-weight:600;font-size:var(--fs-lg);margin:0;padding:2px 0;cursor:default;background:none;line-height:1.3}
.se-head .se-stat{font-size:var(--fs-sm);color:var(--ink-soft)}
.setpop-hd{display:flex;justify-content:space-between;align-items:center;margin:-4px 0 4px}
.setpop-x{font-size:20px;width:36px;height:36px}
.setpop-note{margin:4px 0 0;font-size:var(--fs-sm);color:var(--ink-soft)}
.setpop-body{width:360px;max-height:calc(100vh - 96px);overflow:auto;border-radius:var(--r-lg)}
.setpop-body .field input[type=text],.setpop-body .field input[type=date]{width:100%;box-sizing:border-box}
/* ---- 编排卡片头：常驻 把手 · 序号 · 段落标签 · 段名页数 · ×N；选中的那张换成 − N + 和复制 / 删除 ---- */
.sh-step .sh-stp,.sh-step .sh-acts{display:none}
.sh-step.sel .sh-stp,.sh-step.sel .sh-acts{display:flex;opacity:1}      /* 只有正在编辑 / 被点选的那张；滚动经过的（.on）只换背景 */
.sh-step.sel .sh-rep{display:none}
.sh-rep{font-size:var(--fs-sm);color:var(--ink-soft);opacity:.7;min-width:28px;text-align:right;font-family:var(--font-num)}
.sh-rep.hot{color:var(--ink);opacity:1;font-weight:700}
.sh .pnwrap{width:16px}
.sh-acts .sh-ic.del{color:var(--danger)}
.sh-step.on{padding-right:12px}

/* ======== 首页：程序单风格（第三批阶段 3）======== */
:root{--fs-xl:32px;--bottom-nav-h:0px}                            /* --fs-xl 只给首页主卡的大号日期；--bottom-nav-h 手机上有底部导航时在下面设置 */
.tag{border-radius:var(--r-sm)}
.home.psheet{max-width:560px;margin:0 auto;display:flex;flex-direction:column}
.prog-sec{font-family:var(--font-sans);font-weight:400;font-size:var(--fs-sm);letter-spacing:.12em;color:var(--ink-soft);margin:0}
.prog-sec-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px}
.prog-none{margin:24px 0;text-align:center;color:var(--ink-soft);font-size:var(--fs-md)}
.prog-none[hidden]{display:none}
/* 主卡 */
.prog-main{margin:8px 0 40px}
.prog-card{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:0;padding:40px 32px 32px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.prog-card>*{margin:0}
.prog-kicker{font-size:var(--fs-sm);color:var(--ink-soft);letter-spacing:.12em}
.prog-date{font-family:var(--font-voice);font-weight:600;font-size:var(--fs-xl);line-height:1.3;margin:8px 0 12px!important}
.prog-line{font-size:var(--fs-md);color:var(--ink);overflow-wrap:anywhere}
.prog-tagrow{margin-top:12px!important}
.prog-songs{list-style:none;padding:0;margin:28px 0 0!important;width:100%;border-top:1px solid var(--line);text-align:left}
.prog-songs li{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:baseline;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.prog-n{font-family:var(--font-voice);color:var(--ink-soft);font-size:var(--fs-md)}
.prog-t{font-size:var(--fs-md);overflow-wrap:anywhere}
.prog-m{font-family:var(--font-num);font-size:var(--fs-sm);color:var(--ink-soft);white-space:nowrap}
.prog-stats{margin-top:16px!important;font-size:var(--fs-sm);color:var(--ink-soft)}
.prog-stats[hidden]{display:none}
.prog-dl{background:none;border:0;padding:12px 4px;margin:-12px 0;min-height:44px;color:var(--ink);font:inherit;cursor:pointer}
.prog-dl:hover{text-decoration:underline;text-underline-offset:4px}
.prog-who{width:100%;margin-top:8px!important;padding:8px 0;border-top:1px solid var(--line);text-align:left;font-size:var(--fs-sm)}
.prog-who[hidden]{display:none}
.prog-who-row{display:flex;justify-content:space-between;gap:12px;padding:4px 0}
.prog-who-row.warm{color:var(--warm)}
.prog-who-t{color:var(--ink-soft);font-family:var(--font-num)}
.prog-link{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;font-size:var(--fs-sm);color:var(--ink-soft)}
.prog-link:hover{color:var(--ink);text-decoration:none}
.prog-link[hidden]{display:none}
.prog-acts{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:24px!important;width:100%}
.prog-acts>.btn.ink{min-width:200px;min-height:44px;justify-content:center}
.prog-acts-2{display:flex;flex-wrap:wrap;justify-content:center;gap:4px}
.prog-acts-2:empty{display:none}
.prog-note{margin-top:12px!important;font-size:var(--fs-sm);color:var(--ink-soft)}
.prog-note.warm{color:var(--warm)}
.prog-note.soft{color:var(--ink-soft)}
.prog-card .tag{height:28px}
.prog-dots.on-card{position:absolute;top:8px;right:8px}
.prog-dots .setmenu-wrap{margin:0}
/* 其他场次 */
.prog-new{display:block}
.prog-new>.prog-sec-row{margin-bottom:0}
.prog-new .newset{margin:8px 0 16px}
.prog-list{display:flex;flex-direction:column}
.prog-list:empty{display:none}
.prog-row{position:relative;display:grid;grid-template-columns:88px minmax(0,1fr) auto auto;align-items:center;gap:12px;min-height:64px;padding:8px 0;border-bottom:1px solid var(--line)}
.prog-row:first-child{border-top:1px solid var(--line)}
.prog-row:hover{background:#13141780}
.prog-row-d{font-family:var(--font-num);font-size:var(--fs-sm);color:var(--ink-soft);white-space:nowrap}
.prog-row-t{min-width:0;display:flex;flex-direction:column}
.prog-row-link{font-size:var(--fs-md);color:var(--ink);overflow-wrap:anywhere}
.prog-row-link:hover{text-decoration:none}
.prog-row-link::after{content:"";position:absolute;inset:0}
.prog-row-link:focus-visible{outline:none}
.prog-row-link:focus-visible::after{outline:2px solid var(--ink);outline-offset:-2px;border-radius:var(--r-sm)}
.prog-row-sub{font-size:var(--fs-sm);color:var(--ink-soft)}
.prog-row-a{font-size:var(--fs-sm);color:var(--ink-soft);white-space:nowrap}
.prog-row-a.go{color:var(--ink)}
.prog-row-a.wait{color:var(--ink-soft)}
.prog-row .prog-dots{position:relative;z-index:2;display:flex;width:44px;justify-content:center}
.prog-row .prog-dots .setmenu-wrap{margin:0}
.prog-row:not(:has(.prog-dots)){grid-template-columns:88px minmax(0,1fr) auto}
.home-older{margin-top:8px}
.prog-sug{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-16px 0 24px;font-size:var(--fs-sm);color:var(--warm)}
/* 铃铛 + 弹层 */
.bell-wrap{position:relative;flex:none}
.bell{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin:-8px -8px -8px 0;padding:0;border:0;border-radius:var(--r-sm);background:none;color:var(--ink-soft);cursor:pointer}
.bell:hover,.bell[aria-expanded=true]{color:var(--ink);background:#1F2125}
.bell-pop{position:absolute;right:0;top:calc(100% + 8px);z-index:30;width:340px;max-width:calc(100vw - 28px);max-height:calc(100vh - 96px);overflow:auto;padding:12px 16px;background:var(--panel-2);border:1px solid var(--line-strong,#3A3C42);border-radius:var(--r-lg);box-shadow:0 12px 32px rgba(0,0,0,.5)}
.bell-sec{font-size:var(--fs-sm);letter-spacing:.12em;color:var(--ink-soft);margin:8px 0 4px}
.bell-pop .pushbar{padding:8px 0;border:0;background:none;font-size:var(--fs-sm)}
.bell-list{display:flex;flex-direction:column}
.bell-item{display:flex;flex-direction:column;gap:2px;padding:8px 0;border-bottom:1px solid var(--line);color:var(--ink);font-size:var(--fs-sm)}
a.bell-item:hover{text-decoration:none;background:#1F2125}
.bell-time{color:var(--ink-soft);font-size:var(--fs-sm);font-family:var(--font-num)}
.bell-empty{margin:4px 0;color:var(--ink-soft);font-size:var(--fs-sm)}
.bell-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.bell-who{font-size:var(--fs-sm);color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 顶栏：电脑上品牌 + 顶部导航（当前项金色）+ 铃铛；手机（有底部导航的页面）只留小标题「音房」和铃铛 */
.brand-short{display:none}
.bnav{display:none}
@media (max-width:900px){
  body.has-bnav{--bottom-nav-h:calc(56px + env(safe-area-inset-bottom,0px))}
  body.has-bnav .page{padding-bottom:calc(24px + var(--bottom-nav-h))}
  .top.has-bn .top-in{flex-wrap:nowrap;min-height:48px}
  .top.has-bn .brand-full,.top.has-bn .nav,.top.has-bn .who{display:none}
  .top.has-bn .brand-short{display:inline;font-family:var(--font-voice);font-size:var(--fs-md)}
  .top.has-bn .sp{order:0}
  .bnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;height:var(--bottom-nav-h);padding-bottom:env(safe-area-inset-bottom,0px);background:rgba(14,15,17,.96);backdrop-filter:blur(8px);border-top:1px solid var(--line)}
  .bnav a{flex:1;display:flex;align-items:center;justify-content:center;min-height:56px;color:var(--ink-soft);font-size:var(--fs-md);letter-spacing:.08em}
  .bnav a:hover{text-decoration:none}
  .bnav a.on{color:var(--gold-ui)}
  .prog-card{padding:32px 20px 24px}
  .prog-acts>.btn.ink{width:100%}
  .prog-row{grid-template-columns:88px minmax(0,1fr) auto auto;gap:8px}
  .prog-row:not(:has(.prog-dots)){grid-template-columns:88px minmax(0,1fr) auto}
  .bell-pop{position:fixed;right:14px;left:14px;top:56px;width:auto;max-width:none}
}
.home.psheet a.btn.text{color:var(--ink-soft)}
.home.psheet a.btn.text:hover{color:var(--ink)}
.home.psheet a.btn.ink{color:var(--ink-btn-fg)}
.home.psheet .btn{font-size:var(--fs-sm)}
.home.psheet .btn.ink{font-size:var(--fs-md)}

/* =====================================================================
   团队页（第三批阶段 4）：页头 / 你的下一次服事 / 服事表（每个主日一张卡片）/ 同工名单
   颜色全走 token；字号三级；间距 4 的倍数；圆角 6 / 12；金色只有「已发布」标签（.tag.pub）
   ===================================================================== */
.tm4 .tm-head{margin-bottom:24px;align-items:center}
.tm4 .tm-title h1{font-size:var(--fs-lg);line-height:1.3;font-family:var(--font-voice)}
.tm4 .tm-title-in{font-size:var(--fs-lg)}
.tm4 .tm-meta{margin-top:4px;font-size:var(--fs-sm);color:var(--ink-soft)}
.tm4 .tm-switch-c{color:var(--ink-soft)}
.tm4 .tm-switch:hover .tm-switch-n,.tm4 .tm-switch:focus-visible .tm-switch-n{color:var(--ink)}
.tm4 .tm-switch:focus-visible{outline-color:var(--ink)}
.tm4 .tm-head-r .tm-more-top{padding:7px 12px;font-size:var(--fs-md)}
.tm4 .btn{font-size:var(--fs-sm)}
.tm4 .btn.ink{font-size:var(--fs-md)}
.tm4 a.btn.ink{color:var(--ink-btn-fg)}
.tm4 a.btn.text{color:var(--ink-soft)}.tm4 a.btn.text:hover{color:var(--ink)}

/* 你的下一次服事 */
.tm-serve-wrap[hidden]{display:none}
.tm-serve{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:20px;padding:16px 20px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.tm-serve-d{display:flex;flex-direction:column;align-items:center;min-width:48px;line-height:1.2}
.tm-serve-day{font-size:var(--fs-lg);font-weight:600}
.tm-serve-mon{font-size:var(--fs-sm);color:var(--ink-soft)}
.tm-serve-m{min-width:0}
.tm-serve-k{font-size:var(--fs-sm);color:var(--ink-soft)}
.tm-serve-t{margin-top:4px;font-size:var(--fs-md);overflow-wrap:anywhere}
.tm-serve-note{margin-top:4px;font-size:var(--fs-sm);color:var(--ink-soft)}
.tm-serve-note.warm{color:var(--warm)}
.tm-serve-a{display:flex;align-items:center;gap:8px}
.tm-serve-sent{font-size:var(--fs-sm);color:var(--ink-soft);padding:0 10px}
.tm-serve-wrap .fb-inline{margin-top:8px}

/* 服事表 */
.tm-sched{margin-top:32px}
.tm-sched-h{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.tm-sec{font-family:var(--font-sans);font-weight:400;font-size:var(--fs-sm);letter-spacing:.12em;color:var(--ink-soft);margin:0}
.tm-sched-h .sp{flex:1}
.tm-mnav{display:inline-flex;align-items:center;gap:4px;color:var(--ink-soft);font-size:var(--fs-sm)}
.tm-mnav-b{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:none;border:0;border-radius:var(--r-sm);color:var(--ink-soft);font-size:var(--fs-md);cursor:pointer}
.tm-mnav-b:hover{color:var(--ink);background:#1F2125}
.tm-mnav-l{min-width:48px;text-align:center}
.tm-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.tm-cards.empty{display:block}
.tm-sched-none{margin:0;padding:24px 0;text-align:center;color:var(--ink-soft);font-size:var(--fs-md)}
.tm-sched-none p{margin:0 0 8px}
.tm-card{position:relative;display:flex;flex-direction:column;gap:4px;padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);min-width:0}
.tm-card:hover{border-color:var(--line-strong,#3A3C42)}
.tm-card.next{border-color:#4A4D55}
.tm-card.past{opacity:.5}
.tm-card-h{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;color:var(--ink)}
.tm-card-h:hover{text-decoration:none}
.tm-card-h::after{content:"";position:absolute;inset:0;border-radius:var(--r-lg)}
.tm-card-h:focus-visible{outline:none}
.tm-card-h:focus-visible::after{outline:2px solid var(--ink);outline-offset:-2px}
.tm-card-day{font-size:var(--fs-lg);font-weight:600;line-height:1.2}
.tm-card-wk,.tm-card-next{font-size:var(--fs-sm);color:var(--ink-soft)}
.tm-card-next{color:var(--ink)}
.tm-pr{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:8px;min-height:32px}
.tm-pr-k{font-size:var(--fs-sm);color:var(--ink-soft)}
.tm-pr-v{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0;font-size:var(--fs-md)}
.tm-p{display:inline-flex;align-items:baseline;gap:0;flex-wrap:wrap;overflow-wrap:anywhere}
.tm-p.me .tm-p-n{padding:0 8px;background:rgba(237,235,230,.14);border-radius:var(--r-sm)}
.tm-p-d{font-size:var(--fs-sm);color:var(--ink-soft)}
.tm-nth{font-size:var(--fs-sm);color:var(--warm)}
.tm-none{color:var(--ink-soft)}
.tm-slot,.tm-open{position:relative;z-index:1;font:inherit;cursor:pointer}
.tm-slot{display:inline-flex;min-height:32px;align-items:center;padding:0 4px;margin:0 -4px;background:none;border:0;border-radius:var(--r-sm);color:var(--ink);text-align:left}
.tm-slot:hover{background:#1F2125}
.tm-open{display:inline-flex;align-items:center;min-height:28px;padding:0 8px;background:none;border:1px dashed #4A4D55;border-radius:var(--r-sm);color:var(--ink-soft);font-size:var(--fs-sm)}
.tm-open:hover{color:var(--ink);border-color:var(--ink-soft)}
.tm-sched-f{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;min-height:44px}
.tm-open-n{font-size:var(--fs-sm);color:var(--ink-soft)}
.tm-sched .fb-inline{margin:0 0 8px}

/* 同工名单 */
.tm-people{margin-top:40px}
.tm-sec-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px}
.tm-sec-r{font-size:var(--fs-sm);color:var(--ink-soft)}
.tm-roster{list-style:none;margin:0;padding:0}
.tm-person{display:grid;grid-template-columns:36px minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);min-height:64px}
.tm-person:first-child{border-top:1px solid var(--line)}
.tm-person.pending{grid-template-columns:36px minmax(0,1fr) auto}
.tm-person-m{min-width:0}
.tm-person-n{font-size:var(--fs-md);overflow-wrap:anywhere}
.tm-person-mgr{font-size:var(--fs-sm);color:var(--ink-soft)}
.tm-person.pending .tm-person-n{color:var(--ink-soft)}
.tm-person-sub{font-size:var(--fs-sm);color:var(--ink-soft)}
.tm-ptags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.tm-ptag{padding:0 8px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-sm);line-height:1.6;color:var(--ink-soft)}
.tm-ptag.none{border-style:dashed}
.tm-person-c{font-family:var(--font-num);font-size:var(--fs-sm);color:var(--ink-soft);white-space:nowrap}
.tm-person-c.warm{color:var(--warm)}
.tm-person-acts{display:flex;align-items:center;gap:0}
.tm-person .fb-inline{margin-top:4px}
.tm-person .tm-more-gap,.tm-person .sc-more{width:36px;height:36px}
.tm-person .sc-av:not(.dashed){border:1px solid var(--line-strong,#3A3C42)}

@media (max-width:900px){
  .tm-cards{grid-template-columns:minmax(0,1fr)}
  .tm-serve{grid-template-columns:auto minmax(0,1fr);gap:12px 16px;padding:16px}
  .tm-serve-a{grid-column:1/-1;justify-content:space-between}
  .tm-serve-a .btn.ink{flex:1}
  .tm-mnav-b{width:44px;height:44px}
  .tm-open,.tm-slot{min-height:44px}
  .tm-open{padding:0 12px}
  .tm-pr{min-height:44px}
  .tm4 .tm-head-r{width:auto}
  .tm4 .tm-head-r .btn{flex:none}
  .tm-person .tm-more,.tm-person .sc-more,.tm-person .tm-more-gap{width:44px;height:44px}
  .tm-person{gap:8px 12px}
  .tm-person-acts .btn{min-height:44px}
}

/* =====================================================================
   歌库页 + 歌曲详情页（第三批阶段 5）
   颜色走 token；字号三级；间距 4 的倍数；圆角 6 / 12；没有金色（书脊的烫金线用书脊自己的文字色）
   ===================================================================== */
:root{
  /* 书脊：8 种低饱和深色 + 对应的浅色文字（深棕、深蓝、深绿、深紫红、炭灰、深金褐、深青、深砖红） */
  --spine-0:#4A3326;--spine-0-fg:#E7D6C4;
  --spine-1:#27384F;--spine-1-fg:#CFDAE8;
  --spine-2:#2A4636;--spine-2-fg:#D2E3D6;
  --spine-3:#4D2B3E;--spine-3-fg:#EAD3DE;
  --spine-4:#34363B;--spine-4-fg:#DEDFE2;
  --spine-5:#5A4A25;--spine-5-fg:#EBDDB8;
  --spine-6:#21474B;--spine-6-fg:#CDE3E4;
  --spine-7:#5A2D26;--spine-7-fg:#EBD2CC;
  --shelf-board:#1B1C20;
  --ease-shelf:cubic-bezier(.2,.8,.2,1);
}
.lb2{max-width:720px;margin:0 auto}
.lb2 .btn{font-size:var(--fs-sm)}
.lb-head{display:flex;align-items:center;gap:8px;margin-bottom:24px}
.lb2 .lb-search{flex:1;min-width:0;height:48px;box-sizing:border-box;padding:0 20px;border-radius:24px;font-size:var(--fs-md)}
.lb-new{flex:none;white-space:nowrap}
.lb-more{flex:none;font-size:var(--fs-lg);line-height:1;padding:7px 12px}
.lb2 a.btn.text{color:var(--ink-soft)}.lb2 a.btn.text:hover{color:var(--ink)}
.lb-sec{font-family:var(--font-sans);font-weight:400;font-size:var(--fs-sm);letter-spacing:.12em;color:var(--ink-soft);margin:0}
.lb-sec-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px}
.lb-sec-r,.lb-all-link{font-size:var(--fs-sm);color:var(--ink-soft)}
.lb-all-link{display:inline-flex;align-items:center;min-height:44px;padding-left:8px}
.lb-all-link:hover{color:var(--ink);text-decoration:none}
.lb-browse[hidden],.lb-results[hidden],.lb-freqpage[hidden]{display:none}
.lb-qcount{font-size:var(--fs-sm);color:var(--ink-soft);margin:0 0 8px;min-height:20px}
.lb-back,.sp-back{display:inline-flex;align-items:center;min-height:44px;font-size:var(--fs-md);color:var(--ink-soft)}
.lb-back:hover,.sp-back:hover{color:var(--ink);text-decoration:none}
/* 列表行 */
.lb-list{list-style:none;margin:0;padding:0}
.lb-list[hidden]{display:none}
.lb-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:64px;padding:8px 0;border-bottom:1px solid var(--line);color:var(--ink)}
.lb-row:hover{text-decoration:none;background:#13141780}
.lb-row.dir{grid-template-columns:40px minmax(0,1fr) auto;min-height:48px}
.lb-main{display:flex;flex-direction:column;min-width:0}
.lb-t{font-family:var(--font-voice);font-size:var(--fs-md);font-weight:600;overflow-wrap:anywhere}
.lb-sub{font-size:var(--fs-sm);color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-sub:empty{display:none}
.lb-src{color:var(--ink-soft)}
.lb-hit{color:#fff;font-weight:700}
.lb-key{font-family:var(--font-num);font-size:var(--fs-sm);color:var(--ink-soft);white-space:nowrap}
.lb-no{font-family:var(--font-voice);font-size:var(--fs-sm);color:var(--ink-soft)}
.lb-hid{margin-left:8px;padding:0 8px;border:1px solid var(--warm-bd);border-radius:var(--r-sm);font-family:var(--font-sans);font-size:var(--fs-sm);font-weight:400;color:var(--warm)}
.lb-letter{padding:16px 0 4px;font-family:var(--font-num);font-size:var(--fs-sm);letter-spacing:.12em;color:var(--ink-soft);border-bottom:1px solid var(--line)}
.lb-sentinel{height:1px}
.lb-foot{text-align:center;font-size:var(--fs-sm);color:var(--ink-soft);padding:16px 0}
.lb-foot:empty{padding:0}
.lb-note{margin:0;padding:24px 0;text-align:center;color:var(--ink-soft);font-size:var(--fs-md)}
/* 本团常唱 */
.lb-freq{margin-bottom:32px}
.lb-freq[hidden],.lb-shelf-sec[hidden]{display:none}
.lb-cards{display:flex;gap:12px;overflow-x:auto;padding:4px 0 8px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.lb-card{flex:none;width:150px;box-sizing:border-box;display:flex;flex-direction:column;gap:4px;padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);color:var(--ink);scroll-snap-align:start}
.lb-card:hover{text-decoration:none;border-color:var(--line-strong,#3A3C42)}
.lb-card-t{font-family:var(--font-voice);font-size:var(--fs-md);font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-card-l{font-size:var(--fs-sm);color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-card-m{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:8px}
.lb-keybox{padding:0 8px;border:1px solid var(--line-strong,#3A3C42);border-radius:var(--r-sm);font-family:var(--font-num);font-size:var(--fs-sm);line-height:1.6}
.lb-card-u{font-size:var(--fs-sm);color:var(--ink-soft);white-space:nowrap}
/* 诗歌本书架 */
.lb-shelf-sec{margin-bottom:32px}
.shelf{overflow-x:auto;overflow-y:hidden;padding:36px 0 0;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.shelf::-webkit-scrollbar{display:none}
.shelf-row{position:relative;display:flex;align-items:flex-end;gap:8px;width:max-content;min-width:100%;padding:0 16px 0 12px;box-sizing:border-box}
.shelf-row::after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:8px;background:var(--shelf-board);border-radius:0 0 var(--r-sm) var(--r-sm);box-shadow:0 1px 0 var(--line)}
.shelf-row{margin-bottom:8px}
.spine{position:relative;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:6px;width:var(--sw);height:var(--sh);box-sizing:border-box;padding:0 0 8px;border:0;border-radius:3px 3px 0 0;cursor:pointer;font-family:var(--font-voice);transform-origin:bottom left;
  transition:transform .3s var(--ease-shelf),opacity .3s var(--ease-shelf);box-shadow:inset -3px 0 0 rgba(0,0,0,.18),inset 1px 0 0 rgba(255,255,255,.06)}
.spine:hover{transform:translateY(-10px) rotate(-1.5deg)}
.spine:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.spine.sel{transform:translateY(-28px)}
.shelf.has-sel .spine:not(.sel){opacity:.45}
.shelf.has-sel .spine:not(.sel):hover{opacity:.8}
.spine-top{display:block;align-self:stretch;height:6px;background:rgba(255,255,255,.22);border-radius:3px 3px 0 0}
.spine-gl{display:block;align-self:stretch;margin:0 6px;height:5px;border-top:1px solid currentColor;border-bottom:1px solid currentColor;opacity:.55}
.spine-name{flex:1;min-height:0;writing-mode:vertical-rl;font-size:var(--fs-md);font-weight:600;letter-spacing:.2em;line-height:1;overflow:hidden;white-space:nowrap;display:flex;align-items:center}
.spine-vol{font-size:var(--fs-sm);line-height:1;min-height:13px}
/* 一套书顶部的套名（小字，下面一道短烫金线）；单本书名下面的说明（小字） */
.spine-set{writing-mode:vertical-rl;font-size:11px;font-weight:400;letter-spacing:.12em;line-height:1;white-space:nowrap;opacity:.72;padding-bottom:6px;border-bottom:1px solid currentColor;border-bottom-color:color-mix(in srgb,currentColor 45%,transparent)}
.spine-name{gap:8px}
.spine-sub{font-size:11px;font-weight:400;letter-spacing:.1em;opacity:.75}
.spine-main,.spine-sub{text-orientation:upright}
/* 宽屏：整面书柜，48 本一眼看全——每层同高，书底对齐，层板画在每层下面 */
@media (min-width:900px){
  .shelf{overflow:visible;padding-top:28px}
  .shelf-row{flex-wrap:wrap;width:auto;row-gap:44px;padding:0 4px 8px;--case-h:280px;
    background:repeating-linear-gradient(to bottom,transparent 0 var(--case-h),var(--shelf-board) var(--case-h) calc(var(--case-h) + 8px),transparent calc(var(--case-h) + 8px) calc(var(--case-h) + 44px))}
  .shelf-row::after{display:none}
  .shelf-row .spine{margin-top:calc(var(--case-h) - var(--sh))}
}
.sp-c0{background:var(--spine-0);color:var(--spine-0-fg)}.sp-c1{background:var(--spine-1);color:var(--spine-1-fg)}
.sp-c2{background:var(--spine-2);color:var(--spine-2-fg)}.sp-c3{background:var(--spine-3);color:var(--spine-3-fg)}
.sp-c4{background:var(--spine-4);color:var(--spine-4-fg)}.sp-c5{background:var(--spine-5);color:var(--spine-5-fg)}
.sp-c6{background:var(--spine-6);color:var(--spine-6-fg)}.sp-c7{background:var(--spine-7);color:var(--spine-7-fg)}
/* 目录：高度展开 + 淡入 */
.shelf-dir{display:grid;grid-template-rows:0fr;opacity:0;visibility:hidden;transition:grid-template-rows .45s var(--ease-shelf),opacity .45s var(--ease-shelf),visibility 0s .45s}
.shelf-dir.open{grid-template-rows:1fr;opacity:1;visibility:visible;transition:grid-template-rows .45s var(--ease-shelf),opacity .45s var(--ease-shelf),visibility 0s}
.shelf-dir-in{min-height:0;overflow:hidden}
.dir-head{display:flex;align-items:baseline;gap:12px;padding:24px 0 4px}
.dir-head .sp{flex:1}
.dir-title{margin:0;font-family:var(--font-voice);font-size:var(--fs-lg);font-weight:600;line-height:1.3}
.dir-n{font-size:var(--fs-sm);color:var(--ink-soft)}
.dir-close{align-self:center}
.dir-scroll{max-height:min(60vh,480px);overflow-y:auto;overscroll-behavior:contain;border-top:1px solid var(--line)}
.dir-scroll .lb-foot{padding:12px 0}
@media (prefers-reduced-motion:reduce){
  .spine,.shelf-dir,.shelf-dir.open{transition:none}
  .spine:hover{transform:none}
}
/* 全部 */
.lb-all .lb-sec-row{margin-bottom:0}
.mn.lb-sort .mn-btn{font-size:var(--fs-sm);min-height:44px}
.lb-freqpage .lb-sec-row{justify-content:flex-start;gap:16px}

/* ======== 歌曲详情页 ======== */
.sp{max-width:880px;margin:0 auto}
.sp .btn{font-size:var(--fs-sm)}
.sp a.btn.text,.sp .btn.text{color:var(--ink-soft)}.sp a.btn.text:hover,.sp .btn.text:hover{color:var(--ink)}
.sp-top{display:flex;align-items:center;gap:4px}
.sp-top .sp{flex:1}
.sp-more{font-size:var(--fs-lg);line-height:1;padding:7px 12px}
.sp-hidden{margin:8px 0 0;text-align:center;font-size:var(--fs-sm);color:var(--warm)}
.sp-head{text-align:center;margin:16px 0 40px}
.sp-title{margin:0;font-family:var(--font-voice);font-size:var(--fs-lg);font-weight:600;letter-spacing:.12em;line-height:1.4}
.sp-sub{margin:8px 0 0;font-size:var(--fs-sm);color:var(--ink-soft)}
.sp-alt{margin:4px 0 0;font-size:var(--fs-sm);color:var(--ink-soft)}
.sp-body{display:grid;grid-template-columns:minmax(0,1fr) 120px;grid-template-areas:"lyr thumbs" "lyr rest";column-gap:48px;row-gap:16px;align-items:start}
.sp-lyr{grid-area:lyr;min-width:0}
.sp-thumbs{grid-area:thumbs;display:flex;flex-direction:column;gap:8px}
.sp-thumbs[hidden]{display:none}
.sp-rest{grid-area:rest;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.sp-thumb{width:120px;border-radius:var(--r-sm);overflow:hidden;border:1px solid var(--line);cursor:zoom-in;background:var(--panel)}
.sp-thumb:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.sp-thumb .im-img{display:block;width:100%;height:auto}
.sp-more-n{font-size:var(--fs-sm);color:var(--ink-soft)}
.sp-note{margin:0;font-size:var(--fs-sm);line-height:1.5;color:var(--ink-soft)}
.sp-note[hidden]{display:none}
.sp-flag{background:none;border:0;padding:0;min-height:32px;font:inherit;font-size:var(--fs-sm);color:var(--ink-soft);text-decoration:underline;text-underline-offset:4px;cursor:pointer;text-align:left}
.sp-flag:hover{color:var(--ink)}
.sp-upstat:empty{display:none}
.sp-up{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:var(--fs-sm);color:var(--ink-soft)}
.sp-up[data-state=fail] .sp-up-t{color:var(--warm)}
.sp-sec{margin-bottom:32px}
.sp-lb{font-size:var(--fs-sm);letter-spacing:.3em;color:var(--ink-soft);margin-bottom:8px}
.sp-ls{font-family:var(--font-voice);font-size:var(--fs-md);font-weight:400;line-height:2}
.sp-ls .alt{color:var(--ink-soft);font-size:var(--fs-sm);line-height:1.6}
@media (max-width:900px){
  .sp-body{grid-template-columns:minmax(0,1fr);grid-template-areas:"thumbs" "lyr" "rest";row-gap:24px}
  .sp-head{margin-bottom:24px}
  .sp-thumbs{flex-direction:row;overflow-x:auto;gap:12px;padding-bottom:4px}
  .sp-thumb{flex:none;width:96px}
  .sp-rest .sp-flag{min-height:44px}
}
/* 修改历史面板 */
.sp-hist{align-items:stretch;justify-content:flex-end}
.sp-hist-box{position:relative;width:min(440px,100vw);box-sizing:border-box;background:var(--panel);border-left:1px solid var(--line);padding:16px 20px;overflow:auto}
.sp-hist-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.sp-hist-hd h2{margin:0;font-family:var(--font-voice);font-size:var(--fs-lg)}
.sp-hist-flags{margin-top:24px}
.sp-hist-flags h3{font-size:var(--fs-md);margin:0 0 8px}
.sp-hist-flag{padding:8px 0;border-top:1px solid var(--line);font-size:var(--fs-sm)}
/* 大图查看器：左右切换 */
.im-lb-main{position:relative;align-items:stretch}
.im-lb-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:44px;height:64px;justify-content:center;font-size:var(--fs-lg);background:rgba(14,15,17,.7)}
.im-lb-nav.prev{left:8px}.im-lb-nav.next{right:8px}
.im-lb-nav[hidden]{display:none}
.im-lb-label,.im-lb-count{font-size:var(--fs-sm)}
.im-lb-acts,.im-lb-zoom{display:inline-flex;gap:4px;align-items:center}

/* ===== 手机场次编辑页：点卡片从底部弹出面板（第四批 7）===== */
@media (max-width:900px){ .rail-c{display:none} }
.ms{position:fixed;inset:0;z-index:60}
.ms-scrim{position:absolute;inset:0;background:rgba(0,0,0,.55)}
.ms-sheet{position:absolute;left:0;right:0;bottom:0;max-height:85vh;max-height:85dvh;overflow:auto;-webkit-overflow-scrolling:touch;background:var(--panel);border-top:1px solid var(--line);border-radius:16px 16px 0 0;padding:0 16px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -12px 40px rgba(0,0,0,.5);animation:ms-up .18s ease-out;transition:transform .18s ease}
@keyframes ms-up{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.ms-sheet{animation:none;transition:none}}
.ms-head{position:sticky;top:0;z-index:1;background:var(--panel);display:flex;align-items:center;gap:8px;padding:6px 0 8px;touch-action:none}
.ms-grab{position:absolute;left:0;right:0;top:0;height:16px;display:flex;justify-content:center;align-items:center}
.ms-grab span{width:36px;height:4px;border-radius:2px;background:var(--line)}
.ms-title{flex:1;min-width:0;margin-top:14px;font-size:var(--fs-lg);overflow-wrap:anywhere}
.ms-x{margin-top:10px;width:44px;height:44px;border:0;background:transparent;color:var(--ink-soft);font-size:24px;cursor:pointer}
.ms-body{display:flex;flex-direction:column;gap:10px;padding-top:4px}
.ms-field{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px}
.ms-field label{color:var(--ink-soft);font-size:var(--fs-md)}
.ms-key{width:110px;min-height:44px;box-sizing:border-box;text-align:center;font-size:16px;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:8px}
.ms-key:disabled{opacity:.6}
.ms-msg{color:var(--warm);font-size:var(--fs-sm);min-height:0}
.ms-msg:empty{display:none}
.ms-note{font-size:var(--fs-sm)}
.ms-row{display:flex;align-items:center;min-height:48px;padding:0 4px;border:0;border-top:1px solid var(--line-soft);background:transparent;color:var(--ink);font-size:var(--fs-md);text-align:left;cursor:pointer;text-decoration:none}
.ms-row.danger{color:var(--danger)}
.ms-confirm{border-top:1px solid var(--line-soft);padding-top:10px}
.ms-confirm-t{font-size:var(--fs-md);margin-bottom:10px}
.ms-confirm-b{display:flex;gap:10px}
.ms-confirm-b .btn{flex:1;justify-content:center;min-height:44px}
.ms-confirm-b .btn.danger{background:var(--danger);color:#fff;border-color:var(--danger)}
.ms-foot{margin-top:6px;font-size:var(--fs-sm);color:var(--ink-soft);text-align:center}
.ms-scr .scr-ref-in{width:100%;box-sizing:border-box;min-height:44px;font-size:16px}
html.ms-open{overflow:hidden}
@media (max-width:900px){
  .se-left .it{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
  .se-left .it .handle{padding:16px 10px 16px 8px;left:0}       /* 把手的可点区域够大（手指按住就能拖） */
}
.ms-field label{flex:none;white-space:nowrap}
.ms-key{flex:0 0 120px;width:120px}
.ms-row,.ms-row.danger{border-top:1px solid var(--line-soft);border-right:0;border-bottom:0;border-left:0}
a.ms-row{box-sizing:border-box}
@media (max-width:900px){ .se-left .it .del{display:none!important} }      /* 手机上移除走底部面板（原地二次确认），卡片上的 ✕ 和调号叠在一起 */

/* ===== 挑歌模式（第四批 9）===== */
.bnav a .libico{margin-right:6px}
.pk-bar{position:sticky;top:56px;z-index:4;margin:0 -4px 12px;padding:10px 12px;background:rgba(14,15,17,.96);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:var(--r-lg,12px)}
.pk-row{display:flex;align-items:center;gap:10px;min-width:0}
.pk-lib{color:var(--ink-soft);display:inline-flex}
.pk-t{min-width:0;font-size:var(--fs-md);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pk-set{font-weight:600}
.pk-n{flex:none;font-size:var(--fs-sm);color:var(--ink-soft)}
.pk-sp{flex:1}
.pk-finish{flex:none;min-height:44px}
.pk-warn{display:block;margin-top:6px;font-size:var(--fs-sm);color:var(--warm)}
.pk-warn:empty{display:none}
.lb-pickoff{margin:0 0 12px;padding:10px 12px;border:1px solid var(--warm-bd);background:var(--warm-bg);border-radius:var(--r-lg,12px);color:var(--warm);font-size:var(--fs-sm)}
.lb-pickoff[hidden]{display:none}
.lb-pkli{display:flex;align-items:center;gap:6px}
.lb-pkli>.lb-row{flex:1;min-width:0}
.lb2.picking .lb-pkli>.lb-row{padding-right:0}
.pk-slot{flex:none;display:inline-flex;align-items:center;justify-content:flex-end;min-width:44px;min-height:44px}
.pk-add{width:44px;height:44px;padding:0;border:0;background:transparent;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.pk-plus{width:32px;height:32px;border-radius:50%;border:1.5px solid var(--ink-soft);display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1;color:var(--ink)}
.pk-add:hover .pk-plus,.pk-add:focus-visible .pk-plus{border-color:var(--ink);background:rgba(255,255,255,.06)}
.pk-done{min-height:44px;padding:0 8px;border:0;background:transparent;color:var(--ok);font-size:var(--fs-sm);cursor:pointer;white-space:nowrap}
.pk-in{padding:0 6px;color:var(--mute);font-size:var(--fs-sm);white-space:nowrap}
.pk-fail{min-height:44px;max-width:150px;padding:0 6px;border:0;background:transparent;color:var(--warm);font-size:var(--fs-sm);cursor:pointer;text-align:right;display:flex;flex-direction:column;justify-content:center;gap:2px}
.pk-fail-e{font-size:12px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sp-pk{margin-top:10px;display:flex;justify-content:center}
.pk-slot.wide .pk-add{width:auto;padding:0 16px 0 8px;border:1px solid var(--line);border-radius:24px;background:var(--panel)}
.pk-slot.wide .pk-lbl{font-size:var(--fs-md);color:var(--ink)}
.pk-slot.wide .pk-add .pk-plus{border:0;width:auto;font-size:20px;margin-right:2px}
.pk-slot.wide .pk-done,.pk-slot.wide .pk-in{font-size:var(--fs-md)}
.lb-pkli{border-bottom:1px solid var(--line)}
.lb-pkli>.lb-row{border-bottom:0}
.pk-slot{min-width:88px}
.lb-pkli .pk-slot{margin-right:-6px}

/* 挑歌模式的常唱卡片：整张卡是链接（铺满），最后一行右边是「＋」 */
.lb-card.pk{position:relative}
.lb-card.pk .lb-card-link{position:absolute;inset:0;border-radius:inherit;z-index:0}
.lb-card.pk .lb-card-t,.lb-card.pk .lb-card-l,.lb-card.pk .lb-card-m{position:relative;pointer-events:none}
.lb-card.pk{width:212px}
.lb-card.pk .lb-card-m{flex-wrap:wrap;align-items:center;margin-top:4px;gap:0 6px}
.lb-card-pk{margin-left:auto;pointer-events:auto;position:relative;z-index:1}
.lb-card.pk .pk-slot{min-width:44px}
.lb-card.pk .pk-in{padding:0}
.lb-card.pk .pk-done{padding:0}

/* ===== 聆听（歌曲页「聆 听」区、发布页小唱片浮层）===== */
.ls{margin-top:36px}
.ls-h{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}
.ls-ht{margin:0;font-size:var(--fs-sm);font-weight:400;letter-spacing:.4em;color:var(--ink-soft)}
.ls-n{font-size:var(--fs-sm);color:var(--ink-soft)}
.ls-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (max-width:900px){.ls-cards{grid-template-columns:minmax(0,1fr)}}
.ls-card{background:#131417;border:1px solid var(--line);border-radius:12px;padding:12px;min-width:0}
.ls-card.pending{opacity:.7}
.ls-row{display:flex;align-items:center;gap:12px;min-width:0}
.ls-lead{flex:none;display:inline-flex;width:44px;height:44px;padding:0;border:0;background:transparent;color:var(--ink-soft);cursor:pointer;border-radius:50%;text-decoration:none}
.ls-lead:hover,.ls-lead[aria-expanded="true"]{color:var(--ink)}
.ls-disc{display:inline-flex;width:44px;height:44px}
.ls-m{flex:1;min-width:0}
.ls-t{font-size:var(--fs-md);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ls-s{margin-top:2px;font-size:var(--fs-sm);color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ls-bad{color:var(--warm)}
.ls-more{flex:none;width:44px;height:44px;border:0;background:transparent;color:var(--ink-soft);font-size:20px;cursor:pointer}
.ls-more:hover{color:var(--ink)}
.ls-player{margin-top:12px}
.ls-player.video{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:8px;overflow:hidden}
.ls-player.audio{height:66px}
.ls-frame{display:block;width:100%;height:100%;border:0}
.ls-player.audio .ls-frame{height:66px}
.ls-fallback{position:relative;margin-top:8px;font-size:var(--fs-sm);color:var(--ink-soft)}
.ls-player.video .ls-fallback{position:absolute;left:8px;bottom:8px;margin:0;padding:4px 8px;background:rgba(0,0,0,.7);border-radius:6px}
.ls-fallback[hidden]{display:none}
.ls-fallback a{color:var(--ink);text-decoration:underline}
.ls-err{margin-top:8px;font-size:var(--fs-sm);color:var(--warm)}
.ls-confirm{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line-soft);font-size:var(--fs-sm)}
.ls-confirm span{flex:1}
.ls-confirm .btn{min-height:44px}
.ls-confirm .btn.danger{background:var(--danger);color:#fff;border-color:var(--danger)}
.ls-addwrap{margin-top:12px}
.ls-addbtn{display:block;width:100%;min-height:48px;border:1px dashed var(--line);border-radius:12px;background:transparent;color:var(--ink-soft);font-size:var(--fs-md);cursor:pointer}
.ls-addbtn:hover{color:var(--ink);border-color:var(--ink-soft)}
.ls-form{border:1px dashed var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:10px}
.ls-urlrow{display:flex;align-items:center;gap:10px}
.ls-in{flex:1;min-width:0;box-sizing:border-box;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);font-size:16px}
.ls-in:focus{outline:2px solid var(--ink);outline-offset:1px}
.ls-tag{flex:none;font-size:var(--fs-sm);color:var(--ok);white-space:nowrap}
.ls-msg{font-size:var(--fs-sm);color:var(--warm)}
.ls-msg:empty{display:none}
.ls-acts{display:flex;justify-content:flex-end;gap:8px}
.ls-acts .btn{min-height:44px}
.ls-dot{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin:-11px -6px -11px 4px;padding:0;border:0;background:transparent;color:var(--ink-soft);cursor:pointer}
.ls-dot .ls-disc{width:22px;height:22px}
.ls-dot .ls-disc svg{width:22px;height:22px}
.ls-dot:hover{color:var(--ink)}
.ls-pop{position:fixed;inset:0;z-index:70;display:flex;align-items:center;justify-content:center}
.ls-pop-scrim{position:absolute;inset:0;background:rgba(0,0,0,.55)}
.ls-pop-box{position:relative;width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 48px);overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 16px 16px}
.ls-pop-h{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.ls-pop .ls-cards{grid-template-columns:minmax(0,1fr)}
@media (max-width:900px){
  .ls-pop{align-items:flex-end}
  .ls-pop-box{width:100%;max-height:85dvh;border-radius:16px 16px 0 0;padding-bottom:calc(16px + env(safe-area-inset-bottom))}
}
.ls-slot:empty{display:none}
.ls-slot{display:inline-flex;vertical-align:middle}
.ls-set{margin-top:28px}
.ls-setlist{list-style:none;margin:8px 0 0;padding:0}
.ls-setrow{display:flex;align-items:center;gap:10px;min-height:44px;border-bottom:1px solid var(--line-soft)}
.ls-setn{flex:none;width:1.6em;color:var(--ink-soft);font-size:var(--fs-sm);text-align:right}

/* ===== 代排 + 同工推荐歌（2026-11）：按钮都安静（描边 / 纯文字），金色不用 ===== */
.dg-link{min-height:32px;padding:0 6px;background:none;border:0;cursor:pointer;font-family:inherit}
.prog-acts>.dg-link{min-height:36px}
.dg-hint{margin:0 0 10px;font-size:var(--fs-sm);color:var(--ink-soft)}
.dg-list .sc-pick{min-height:48px}
.dg-row{display:flex;flex-wrap:wrap;align-items:center;gap:2px 4px;margin:8px 0 0}
.dg-cur{font-size:var(--fs-sm);color:var(--ink-soft);padding:0 6px}
/* 编辑页顶栏：标题旁边的「请人代排」/「某某代排 ⋯」/「同工推荐 N」 */
.se-dg{display:inline-flex;align-items:center;gap:2px;font-size:var(--fs-sm);color:var(--ink-soft)}
.se-dg[hidden]{display:none}
.se-dg .dg-link{min-height:28px}
.se-dg-t{padding:0 4px}
.se-dg-more{font-size:18px;line-height:1;padding:2px 8px;min-height:28px;border-radius:var(--r-sm);letter-spacing:1px}
.se-sug{white-space:nowrap}
/* 团队页「你的下一次服事」：主按钮下面一行小字 */
.tm-serve-act{display:flex;flex-direction:column;align-items:flex-end;gap:0}
.tm-serve-act .dg-link{align-self:flex-end}
.tm-dg{color:var(--ink-soft)}
@media (max-width:760px){
  .tm-serve-act{grid-column:1/-1;align-items:stretch}
  .tm-serve-act .tm-serve-a{justify-content:space-between}
  .tm-serve-act .dg-link{align-self:center}
}
/* 场次详情页：推荐一首歌 + 我的推荐 */
.sg-block{margin:16px 0 0}
.sg-bar{display:flex;gap:8px}
.sg-h{margin:18px 0 6px;font-size:var(--fs-sm);font-weight:400;letter-spacing:.2em;color:var(--ink-soft)}
.sg-h[hidden],.sg-mine[hidden]{display:none}
.sg-mine{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.sg-mrow{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 14px;border-bottom:1px solid var(--line);min-height:44px}
.sg-mrow:last-child{border-bottom:0}
.sg-mrow .sg-t{flex:none;max-width:60%;overflow-wrap:anywhere}
.sg-mrow .sg-r{flex:1;min-width:0;font-size:var(--fs-sm);color:var(--ink-soft);overflow-wrap:anywhere}
.sg-mrow .btn{margin-left:auto}
.sg-note{margin:0 0 10px;font-size:var(--fs-sm);color:var(--ink-soft)}
.sg-q{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;padding:11px 14px;font-size:16px;background:var(--bg);color:var(--ink);outline:none;font-family:inherit;margin-bottom:8px}
.sg-q:focus{border-color:var(--ink-soft)}
.sg-res{border:0;border-radius:0;display:flex;flex-direction:column;gap:0}
.sg-item{border-bottom:1px solid var(--line)}
.sg-row{display:flex;align-items:center;gap:12px;padding:10px 4px;min-height:52px}
.sg-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.sg-main .sg-t{font-size:16px;overflow-wrap:anywhere}
.sg-main .meta{font-size:12px;color:var(--ink-soft)}
.sg-state{flex:none;font-size:var(--fs-sm);color:var(--ink-soft);white-space:nowrap}
.sg-undo{background:none;border:0;padding:6px 4px;color:var(--ink);font:inherit;font-size:var(--fs-sm);cursor:pointer;text-decoration:underline;text-underline-offset:3px;min-height:32px}
.sg-reasonrow{display:flex;gap:8px;padding:0 4px 12px}
.sg-reason{flex:1;min-width:0;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;padding:9px 12px;font-size:16px;background:var(--bg);color:var(--ink);outline:none;font-family:inherit}
.sg-reason:focus{border-color:var(--ink-soft)}
/* 「加入」窗口顶部：同工推荐 */
.ap-sug{margin:0 0 14px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);overflow:hidden}
.ap-sug[hidden]{display:none}
.ap-sug-h{padding:10px 14px 6px;font-size:var(--fs-sm);letter-spacing:.2em;color:var(--ink-soft)}
.ap-sug-row{display:flex;align-items:flex-start;gap:12px;padding:8px 8px 10px 14px;border-top:1px solid var(--line)}
.ap-sug-h+.ap-sug-row{border-top:0}
.ap-sug-m{flex:1;min-width:0}
.ap-sug-m .t{font-size:16px;color:var(--ink);margin-right:8px}
.ap-sug-m .meta{font-size:12px;color:var(--ink-soft);margin-right:8px}
.ap-sug-by{font-size:12px;color:var(--ink-soft)}
.ap-sug-r{margin-top:2px;font-size:12px;color:var(--ink-soft);overflow-wrap:anywhere}
.ap-sug-a{flex:none;display:flex;gap:6px}
.ap-sug-add,.ap-sug-x{width:40px;height:40px;border-radius:8px;border:1px solid var(--line);background:none;color:var(--ink);font-size:20px;line-height:1;cursor:pointer;font-family:inherit}
.ap-sug-add:hover,.ap-sug-x:hover{background:#1F2125}
.ap-sug-x{color:var(--ink-soft)}
.ap-sug-done{flex:none;align-self:center;font-size:var(--fs-sm);color:var(--ink-soft);padding-right:8px}
/* 手机：弹窗做成底部抽屉（排班 / 代排 / 推荐共用的 modal） */
@media (max-width:640px){
  .sc-overlay{align-items:flex-end;padding:0}
  .sc-overlay .sc-modal,.sc-overlay .sc-modal.wide{max-width:none;width:100%;max-height:88vh;max-height:88dvh;border-radius:16px 16px 0 0;border-left:0;border-right:0;border-bottom:0;padding-bottom:env(safe-area-inset-bottom)}
  .sc-overlay .sc-modal-h{padding:14px 16px 6px}
  .sc-overlay .sc-modal-b{padding:4px 16px 12px}
  .sc-overlay .sc-modal-f{padding:12px 16px 16px}
  .sc-modal-h::before{content:'';position:absolute;left:50%;top:6px;width:36px;height:4px;margin-left:-18px;border-radius:2px;background:var(--line-strong,#3A3C42)}
  .sc-modal{position:relative}
  .ap-sug-add,.ap-sug-x{width:44px;height:44px}
}
.sc-modal.wide{max-width:560px}

/* ===== 「加入」窗口（2026-10-24 重做）：单层结构，搜索框是唯一的视觉焦点；标签 / 底部按钮都是低调的无边框样式；不用金色 ===== */
.ap-dialog{max-height:calc(100vh - 80px);max-height:calc(100dvh - 80px)}
.ap-head{border-bottom:0;padding:16px 20px 0}
.ap-ttl{display:flex;align-items:center;gap:4px;font-size:19px;font-weight:700}
.ap-into{color:var(--ink);font-size:19px}
.ap-zonerow .mn{width:auto;background:transparent;border:0;border-radius:0;padding:0}
.ap-zonerow .mn-btn{background:transparent;border:0;border-radius:var(--r-sm);padding:4px 6px;min-width:0;min-height:36px;font:inherit;font-size:19px;font-weight:700;color:var(--ink);font-family:var(--font-serif)}
.ap-zonerow .mn-btn:hover,.ap-zonerow .mn-btn[aria-expanded="true"]{background:#1F2125}
.ap-zonerow .mn-c{color:var(--ink-soft);font-size:13px}
.ap-body{min-height:0;display:flex;flex-direction:column;overflow:auto}
.ap-search{flex:1 1 auto;min-height:0;padding:14px 20px 0;gap:0;display:flex;flex-direction:column}
.ap-box{display:flex;align-items:center;gap:10px;box-sizing:border-box;padding:0 14px;border:1px solid #3A3C42;border-radius:12px;background:var(--bg);color:var(--ink-soft);cursor:text}
.ap-box:focus-within{border-color:var(--ink-soft);color:var(--ink)}
.ap-mag{display:inline-flex;flex:none}
.ap-box .ap-input{flex:1;min-width:0;border:0;border-radius:0;background:transparent;padding:14px 0;outline:none}
.ap-scroll{flex:1 1 auto;min-height:340px;overflow:auto;padding:6px 0 8px;overscroll-behavior:contain}
.ap-sug{margin-top:10px}
.ap-blk{margin-top:14px}
.ap-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 6px 4px;font-size:var(--fs-sm);color:var(--ink-soft)}
.ap-stage{padding:10px 6px 2px;font-size:var(--fs-sm);color:var(--ink-soft)}
.ap-list{display:flex;flex-direction:column;gap:0}
.ap-row{display:flex;align-items:center;gap:12px;width:100%;box-sizing:border-box;min-height:56px;padding:8px 6px 8px 10px;border:0;border-radius:var(--r-sm);background:transparent;color:inherit;text-align:left;cursor:pointer;font:inherit}
.ap-row.on,.ap-row:hover{background:#1C1D21}
.ap-r-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ap-r-main .t{font-size:16px;color:var(--ink);overflow-wrap:anywhere}
.ap-r-sub{font-size:12.5px;line-height:1.45;color:var(--ink-soft);overflow-wrap:anywhere}
.ap-hit{color:var(--ink);font-weight:700}
.ap-unv{display:inline-block;margin-left:8px;padding:0 6px;border-radius:4px;border:1px solid var(--line);font:12px/1.6 var(--font-sans,inherit);color:var(--ink-soft);vertical-align:2px;white-space:nowrap}
.ap-r-side{flex:none;display:flex;align-items:center;gap:12px}
.ap-speed{font-size:12.5px;color:var(--ink-soft);min-width:2.2em;text-align:right}
.ap-plus{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:1px solid #3A3C42;color:var(--ink);font-size:17px;line-height:1}
.ap-row:hover .ap-plus,.ap-row.on .ap-plus{border-color:var(--ink-soft)}
.ap-act .t{color:var(--ink-soft);font-size:15px}
.ap-act:hover .t,.ap-act.on .t{color:var(--ink)}
.ap-go{color:var(--ink-soft);font-size:18px;padding-right:6px}
.ap-fixed{margin-top:8px;padding-top:6px;border-top:1px solid #1F2125}
.ap-chips{display:flex;flex-wrap:wrap;gap:8px;padding:2px 6px}
.ap-chip{border:0;border-radius:999px;background:#1C1D21;color:var(--ink-soft);padding:7px 14px;min-height:36px;font:inherit;font-size:14px;cursor:pointer}
.ap-chip:hover{color:var(--ink);background:#25272C}
.ap-chip.more{background:transparent}
.ap-back-top{padding:8px 6px;min-height:44px}
.ap-hint{padding:10px 6px}
.ap-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 16px;margin:0 -20px;padding:4px 14px;border-top:1px solid #1F2125}
.ap-bar-l,.ap-bar-r{display:flex;flex-wrap:wrap;align-items:center;gap:0 2px}
.ap-others{margin:0;padding:0;border:0}
.ap-notsong{font-size:12.5px;color:var(--mute);padding:0 4px 0 8px}
.ap-link{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 10px;border:0;background:transparent;color:var(--ink-soft);font:inherit;font-size:14px;cursor:pointer;border-radius:var(--r-sm)}
.ap-link:hover,.ap-link:focus-visible{color:var(--ink);background:#1C1D21}
.ap-others .kind{border:0;border-radius:var(--r-sm);padding:0 10px;font-size:14px;color:var(--ink-soft)}
.ap-others .kind:hover{background:#1C1D21;color:var(--ink)}
@media (max-width:640px){
  .ap-overlay{align-items:flex-end;padding:0}
  .ap-dialog{max-width:none;width:100%;height:100vh;height:100dvh;max-height:none;min-height:0;border:0;border-radius:0;animation:ap-up .2s ease-out}
  .ap-head{padding:10px 8px 0 14px}
  .ap-x{width:44px;height:44px}
  .ap-zonerow .mn-btn{min-height:44px}
  .ap-search{padding:10px 14px 0}
  .ap-box .ap-input{font-size:16px}
  .ap-bar{margin:0 -14px;padding:4px 6px calc(4px + env(safe-area-inset-bottom))}
  .ap-chip{min-height:44px;padding:0 16px;display:inline-flex;align-items:center}
  .ap-row{min-height:60px}
  .ap-plus{width:36px;height:36px}
  .ap-scroll{min-height:0}
}
@keyframes ap-up{from{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.ap-dialog{animation:none}}

/* ===== 连播：入口小按钮 + 底部迷你播放条 + 歌名旁的小耳机 ===== */
.pl-btn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:var(--fs-sm)}
.pl-glyph{flex:none}
.lb-sec-acts{display:flex;align-items:center;gap:4px}
.lb-sec-acts .pl-btn{padding:7px 8px}
.lb-sec-lead{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap}
.lb-sec-lead .lb-sec{white-space:nowrap}
.pl-icon{flex:none;width:30px;height:30px;min-width:0;padding:0;justify-content:center;border-radius:50%;border:1px solid var(--line-strong,#3A3C42);color:var(--ink-soft)}
.pl-icon:hover:not(:disabled){color:var(--ink)}
.pl-icon:disabled{opacity:.5}
.lb-head .pl-btn{flex:none;padding:7px 8px}
.dir-head .pl-btn{align-self:center;padding:4px 8px}
.prog-acts-2 .pl-btn{font-size:inherit}
.ls-ear{display:inline-flex;align-items:center;gap:3px;flex:none;box-sizing:border-box;min-height:36px;padding:0 8px;margin:-4px 0;border-radius:8px;color:var(--ink-soft);opacity:.7;font-size:12px;line-height:1;white-space:nowrap;cursor:pointer}
.ls-ear:hover,.ls-ear:focus-visible{color:var(--ink);opacity:1;background:#1F2125}
.ls-ear.busy{opacity:.4;pointer-events:none}
.ls-ear[hidden]{display:none}
.lb-end{display:inline-flex;align-items:center;gap:4px;justify-self:end}
.lb-card-m .ls-ear{min-height:28px;padding:0 6px 0 0;margin:-4px 0}
.lb-card-m .ls-ear:hover{background:none}
@media (max-width:640px){.ls-ear{min-height:44px;padding:0 10px}.lb-card-m .ls-ear{min-height:36px}}

.pb{position:fixed;left:0;right:0;margin:0 auto;bottom:calc(var(--bottom-nav-h,0px) + 8px);z-index:45;width:min(560px,calc(100vw - 16px));box-sizing:border-box;padding:0 8px 0 14px;background:var(--panel-2);border:1px solid var(--line-strong,#3A3C42);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.4);overflow:hidden}
.pbx[hidden]{display:none}
.pb-prog{position:absolute;left:0;right:0;top:0;height:2px;background:var(--line)}
.pb-prog i{display:block;height:100%;width:0;background:var(--gold-ui);transition:width .45s linear}
.pb-row{display:flex;align-items:center;gap:8px;min-height:56px;padding-top:2px}
.pb-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.pb-t{color:var(--ink);font-size:var(--fs-md);font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pb-t:hover{text-decoration:none}
.pb-s{font-size:var(--fs-sm);color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb-s.tap{color:var(--gold-ui)}
.pb-s.net{color:var(--gold-ui);white-space:normal;font-size:12px;line-height:1.3}
.pb-nv,.ls-nv{display:inline-block;margin-left:6px;padding:0 4px;border:1px solid var(--line-strong,#3A3C42);border-radius:4px;color:var(--ink-soft);opacity:.75;font-size:10px;line-height:14px;vertical-align:1px;white-space:nowrap;cursor:default}
.ls-nv{margin-left:2px}
.pb-retry[hidden]{display:none}
.pb-retry{color:var(--gold-ui)}
.pb-ctl{flex:none;display:flex;align-items:center}
.pb-b{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 6px;background:none;border:0;border-radius:8px;color:var(--ink-soft);font:inherit;font-size:var(--fs-sm);cursor:pointer;white-space:nowrap}
.pb-b:hover:not(:disabled){color:var(--ink);background:#1F2125;text-decoration:none}
.pb-b:disabled{opacity:.35;cursor:default}
.pb-b.on{color:var(--gold-ui)}
.pb-x{font-size:20px;line-height:1}
.pb-vid{position:fixed;right:max(8px,calc((100vw - 560px)/2));z-index:44;width:224px;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:#000;box-shadow:0 8px 24px rgba(0,0,0,.4)}
.pb-vid.on{bottom:calc(var(--bottom-nav-h,0px) + 8px + 66px)}
.pb-vid.off{bottom:0;opacity:.001;pointer-events:none;z-index:-1}      /* 只听声音：播放器还在页面里（不然浏览器会停掉），只是看不见 */
.pb-frame{width:100%;height:100%;border:0;display:block}
body.has-pb{--pb-h:72px}
body.has-pb .page{padding-bottom:calc(24px + var(--bottom-nav-h,0px) + var(--pb-h))}
@media (max-width:640px){
  .pb-b{min-width:36px;padding:0 4px}
  .pb-vid{width:min(224px,60vw);right:8px}
}
@media (prefers-reduced-motion:reduce){.pb-prog i{transition:none}}
