* { box-sizing: border-box; }
html, body { color-scheme: light; }
body { height: 100%; }
body {
  margin: 0;
  background: #f6f5fa;
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  color: #222;
  -webkit-tap-highlight-color: transparent;
  overscroll-behavior: none;
}
#app {
  height: 100vh;
  height: 100dvh;
  max-width: 640px;
  margin: 0 auto;
  background: #f6f5fa;
  position: relative;
  display: flex;
  flex-direction: column;
}
a, button { cursor: pointer; }

/* 全站统一：卡片圆角 / 阴影 / 描边 */
:root {
  --card-r: 16px;
  --card-sh: 0 4px 14px rgba(30, 25, 60, .05);
  --card-bd: 1px solid rgba(0, 0, 0, .05);
}

/* 顶栏 */
.top {
  padding: 14px 14px 6px;
  padding-top: calc(env(safe-area-inset-top) + 12px);
  background: #f6f5fa;
}
.topin { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.brand { font-size: 17px; font-weight: 700; color: #18181b; letter-spacing: .5px; }
.inst {
  display: inline-flex; align-items: center; gap: 5px; padding: 7px 12px;
  border: 0; border-radius: 17px; background: #fff; color: #fb7299;
  font-size: 12px; font-weight: 500;
  box-shadow: 0 2px 12px rgba(20,20,40,.07);
  transition: opacity .15s ease, transform .1s ease;
}
.inst:active { opacity: .72; transform: scale(.95); }


/* 视图滚动区 */
.view {
  --vpx: 14px; --vpt: 2px;
  flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch;
  padding: var(--vpt) var(--vpx) calc(env(safe-area-inset-bottom) + 86px);
}
.page { display: none; }
.page.is-active { display: block; position: relative; z-index: 2; }
@keyframes pf { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
/* 子标签（题卡/列表等）按方向滑入 */
@keyframes inRight { from { opacity: .35; transform: translateX(26px); } to { opacity: 1; transform: none; } }
@keyframes inLeft { from { opacity: .35; transform: translateX(-26px); } to { opacity: 1; transform: none; } }
.in-right { animation: inRight .26s cubic-bezier(.4,0,.2,1); }
.in-left { animation: inLeft .26s cubic-bezier(.4,0,.2,1); }
.in-fade { animation: pf .22s ease; }
/* 主页面左右切换：新旧两页一起滑动，像两张卡片一样 */
#view { position: relative; overflow-x: hidden; }
#view .page { backface-visibility: hidden; }
/* 滑出中的旧页：绝对定位；位置与静态页对齐（用 .view 的 padding 变量，避免 14px 跳变/闪烁） */
#view .page.page-leave { display: block !important; position: absolute; left: var(--vpx); right: var(--vpx); top: var(--vpt); z-index: 1; pointer-events: none; }

/* 轮播 */
.banner { position: relative; height: 150px; border-radius: 18px; overflow: hidden; box-shadow: 0 8px 22px rgba(251,114,153,.22); }
.banner .slide {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  justify-content: center; gap: 6px; padding: 20px 22px;
  opacity: 0; transition: opacity .5s ease;
}
.banner .slide.on { opacity: 1; }
.banner .s1 { background: linear-gradient(135deg,#fb7299,#ffa2bd); }
.banner .s2 { background: linear-gradient(135deg,#7aa5ff,#4f7bff); }
.banner .s3 { background: linear-gradient(135deg,#6fd0a8,#3bb489); }
.banner .s4 { background: linear-gradient(135deg,#ffb46b,#ff8f3f); }
.banner .st { color:#fff; font-size:19px; font-weight:700; letter-spacing:.3px; line-height:1.45; }
.banner .ss { color:rgba(255,255,255,.94); font-size:13.5px; line-height:1.7; }
.banner .chips { display:flex; flex-wrap:wrap; gap:8px; margin-top:2px; }
.banner .chips span { padding:4px 13px; border-radius:999px; color:#fff; font-size:13px; font-weight:600;
  background:rgba(255,255,255,.22); border:1px solid rgba(255,255,255,.4); }
.banner .dots { position:absolute; left:0; right:0; bottom:12px; display:flex; justify-content:center; gap:5px; }
.banner .dots i { width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,.55); }
.banner .dots i.on { width:16px; border-radius:4px; background:#fff; }

/* CTA 免费讲义 */
.cta {
  display: flex; align-items: center; gap: 10px; margin-top: 12px;
  padding: 14px 16px; border-radius: 15px;
  background: linear-gradient(135deg,#fff0f5,#ffe1ec);
  border: 1px solid rgba(251,114,153,.28);
  color:#c23363; font-weight:700; font-size:15px;
  text-decoration:none; box-shadow: 0 6px 18px rgba(251,114,153,.14);
  transition: transform .1s ease;
}
.cta:active { transform: scale(.98); }
.cta .arrow { margin-left:auto; color:#fb7299; font-size:18px; }

/* 金刚区 */
.grid4 { display:grid; grid-template-columns: repeat(4,1fr); gap:8px; margin-top:12px; }
.grid4 button {
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px;
  min-height:78px; padding:12px 4px; border:var(--card-bd); border-radius:var(--card-r);
  background:#fff; color:#18181b; box-shadow:var(--card-sh);
  transition: transform .12s ease, opacity .12s ease;
}
.grid4 button:active { transform: scale(.95); opacity:.85; }
.grid4 button svg { width:24px; height:24px; color:#fb7299; }
.grid4 button b { font-size:12.5px; font-weight:600; line-height:1; }
#homeServiceSec .grid4 { margin-top:0; }
/* 气泡标签：免费 / 限时免费 / 有试听 */
.bub { position:absolute; z-index:3; top:-7px; right:-6px; padding:2px 7px; border-radius:999px;
  font-size:10.5px; font-weight:800; line-height:1.35; color:#fff; white-space:nowrap;
  background:linear-gradient(135deg,#ff7aa0,#ef4d80); box-shadow:0 4px 10px rgba(239,77,128,.4); }
/* 已兑换（已登录）用户：隐藏首页营销气泡 */
body.is-member .bub { display:none !important; }
/* 背诵引导弹窗 */
#recallTipMask .sheet { max-height:86vh; overflow:auto; }
.rtip-p { margin:0 0 10px; font-size:14.5px; line-height:1.85; color:#45454d; }
.rtip-p b { color:#e0245e; }
.rtip-hl { margin:6px 0 16px; padding:12px 14px; border-radius:14px; background:linear-gradient(145deg,#fff0f5,#ffe1ec);
  font-size:16px; line-height:1.75; font-weight:800; color:#c0205a; }
.rtip-hl b { color:#e0245e; }
/* 播放被接管：硬阻断弹窗 */
.pblock-reason { margin:6px 0 2px; font-size:14.5px; line-height:1.95; color:#33333a; white-space:pre-line; }
/* 播放阻断弹窗：右上角小叉叉 */
#playBlockMask .xclose { top:10px; right:12px; width:24px; height:24px; font-size:20px; line-height:1; color:#b8b8c2; }
.pb-tip { margin:0 0 12px; padding:10px 12px; border-radius:12px; background:#fff6f9; color:#c0205a; font-size:13.5px; line-height:1.7; }
.pb-apk { display:block; text-align:center; margin-top:8px; }
/* 播放阻断弹窗：最推荐方式 + 平台按钮 */
.pb-rec-t { margin:16px 0 2px; font-size:13px; color:#9a9aa2; }
.pb-rec-btn { display:block; width:100%; box-sizing:border-box; text-align:center; margin-top:10px; background:#fb7299; color:#fff; border:0; border-radius:22px; padding:12px 0; font-size:15px; font-weight:600; cursor:pointer; text-decoration:none; }
.pb-rec-btn:active { background:#ef4d80; }

/* ============ 会员专属外观（玫瑰金，贴合粉系品牌，无 emoji）============ */
/* 顶部品牌会员徽章 */
.brandvip { display:none; margin-left:8px; font-size:10.5px; font-weight:800; letter-spacing:.5px;
  color:#c0653f; background:linear-gradient(145deg,#fff1ee,#ffe1d6); border:1px solid #f6d3c4; border-radius:999px; padding:2px 8px; }
body.is-member .brandvip { display:inline-block; }
/* 我的页会员卡 */
.me-hero.is-member { background:linear-gradient(135deg,#fff6f9 0%,#fff1ec 100%); border-color:#f6e0d6; }
.avatar { position:relative; }
.avatar .vip-crown { position:absolute; right:-3px; bottom:-3px; width:20px; height:20px; border-radius:50%;
  display:none; align-items:center; justify-content:center; color:#fff;
  background:linear-gradient(145deg,#f2b48c,#e08a5e); border:1.5px solid #fff; box-shadow:0 2px 6px rgba(200,110,70,.32); }
.avatar .vip-crown svg { width:12px; height:12px; }
.me-hero.is-member .avatar { box-shadow:0 0 0 2px #fff, 0 0 0 3.5px #f0c3a4; }
.me-hero.is-member .avatar .vip-crown { display:flex; }
.me-hero .vip-tag { display:none; align-items:center; font-size:10.5px; font-weight:700;
  color:#c0653f; background:linear-gradient(145deg,#fff1ee,#ffe1d6); border:1px solid #f6d3c4; border-radius:999px; padding:1px 7px; }
.me-hero.is-member .vip-tag { display:inline-flex; }
.me-hero.is-member .me-state.on { color:#c0653f; background:linear-gradient(145deg,#fff1ee,#ffe1d6); }
/* 锁定内容：会员专属标记 */
.bl .bl-r em.vip { color:#c0653f; border-color:#f0c9b6; background:#fff4ef; }

/* 课程推介 */
.sec-title { display:flex; align-items:baseline; gap:8px; margin:16px 2px 10px; font-size:15px; font-weight:700; color:#18181b; }
.sec-title em { font-style:normal; font-size:10px; font-weight:600; color:#fb7299; letter-spacing:1px; }
.course {
  display:flex; align-items:stretch; overflow:hidden;
  margin-bottom:10px; border:var(--card-bd); border-radius:var(--card-r);
  background:#fff; box-shadow:var(--card-sh);
  text-decoration:none; transition: transform .12s ease;
}
.course:active { transform: scale(.98); }
.course .cname {
  flex:0 0 96px; display:flex; flex-direction:column; justify-content:center; gap:6px;
  padding:16px 12px; background:linear-gradient(145deg,#fff0f5,#ffe1ec); color:#c23363;
}
.course .cname b { font-size:16px; font-weight:700; }
.course .cname em { font-style:normal; font-size:10.5px; font-weight:600; color:#fb7299; }
.course .cbody { flex:1; padding:15px 14px; display:flex; flex-direction:column; justify-content:center; }
.course .cbody p { margin:0 0 8px; font-size:12.5px; color:#55555e; line-height:1.6; }
.course .cbody span { font-size:12px; font-weight:600; color:#fb7299; }

/* 底部双卡：理念 + Q&A */
.duo { display:flex; gap:10px; margin-top:14px; }
.ideacol { flex:0 0 44%; display:flex; flex-direction:column; gap:10px; }
.idea {
  flex:1; position:relative; display:flex; flex-direction:column; justify-content:center; gap:7px;
  padding:12px 14px; border:1px solid rgba(0,0,0,.05); border-radius:18px;
  background:#fff; color:#18181b; text-decoration:none; box-shadow:0 6px 20px rgba(30,25,60,.05);
}
.idea svg { width:24px; height:24px; color:#fb7299; }
.idea b { font-size:14px; }
.idea .bub { top:8px; right:8px; }
.idea p { margin:0; font-size:11px; color:#94949c; line-height:1.5; }
.qa {
  flex:1; padding:16px; border:1px solid rgba(0,0,0,.05); border-radius:18px;
  background:#fff; text-decoration:none; color:#18181b; box-shadow:0 6px 20px rgba(30,25,60,.05);
}
.qa b { font-size:15px; }
.qa ul { margin:10px 0 0; padding-left:16px; }
.qa li { font-size:12px; color:#55555e; line-height:1.9; }

.touch { text-align:center; font-size:11px; color:#9a9aa2; margin-top:22px; line-height:1.8; }
.touch .dim { color:#b8b8c0; }
/* 「好评如潮」入口：跟在灰色小字后面，同字号/同字体，仅颜色为粉色，可点（不再是胶囊按钮） */
.touch .rvlink { color:#fb7299; text-decoration:none; }
.touch .rvlink:active { opacity:.55; }

/* 底部：安卓下载 / iOS 装到桌面 */
.dlrow { display:flex; gap:10px; margin-top:14px; }
.dlbtn { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px;
  padding:14px 10px; border:1px solid rgba(0,0,0,.05); border-radius:18px; background:#fff; color:#18181b;
  text-decoration:none; box-shadow:0 6px 20px rgba(30,25,60,.05); text-align:center; }
.dlbtn svg { width:24px; height:24px; color:#fb7299; }
.dlbtn b { font-size:14.5px; }
.dlbtn p { margin:0; font-size:11px; color:#94949c; line-height:1.5; }
/* iOS 安装引导 */
#iosMask .sheet { max-height:86vh; overflow:auto; }
.ios-sub { margin:2px 0 12px; font-size:13px; color:#8a8a93; line-height:1.7; }
.ios-steps { list-style:none; margin:0 0 14px; padding:0; display:flex; flex-direction:column; gap:12px; }
.ios-steps li { display:flex; gap:10px; align-items:flex-start; }
.ios-n { flex:0 0 24px; width:24px; height:24px; border-radius:50%; background:linear-gradient(145deg,#fff0f5,#ffe1ec);
  color:#e0245e; font-size:13px; font-weight:800; display:flex; align-items:center; justify-content:center; margin-top:1px; }
.ios-steps b { display:block; font-size:14.5px; color:#18181b; line-height:1.5; }
.ios-steps p { margin:2px 0 0; font-size:12.5px; color:#8a8a93; line-height:1.6; }
/* iOS 引导弹窗：次要按钮（我知道了）与主按钮整宽对齐，不再左对齐错位 */
#iosMask .sheet .abtn { display:block; width:100%; box-sizing:border-box; margin:8px auto 0;
  padding:10px 0; border-radius:22px; font-size:15px; text-align:center; }
/* 占位页 */
.ph { margin-top:40px; padding:30px 22px; border:1px dashed #dcc6d0; border-radius:18px; background:#fff; text-align:center; }
.ph b { display:block; font-size:16px; color:#18181b; margin-bottom:10px; }
.ph p { margin:0 0 16px; font-size:12.5px; color:#94949c; line-height:1.7; }
.back { display:inline-block; padding:9px 20px; border-radius:20px; background:#fb7299; color:#fff; font-size:13px; text-decoration:none; font-weight:600; }

/* 底部导航 */
.tabbar {
  position:fixed; left:0; right:0; bottom:0; max-width:640px; margin:0 auto;
  z-index:30; display:grid; grid-template-columns:1fr 1fr 1fr;
  padding:6px 8px calc(env(safe-area-inset-bottom) + 6px);
  background:rgba(255,255,255,.96); backdrop-filter:blur(10px);
  border-top:1px solid rgba(0,0,0,.05);
}
/* 底部导航滑动指示条 */
.tabbar .tab-ind {
  position:absolute; top:0; left:0; width:36px; height:3px; border-radius:0 0 3px 3px;
  background:linear-gradient(90deg,#fb7299,#ff9db6);
  transition:transform .3s cubic-bezier(.4,0,.2,1);
  pointer-events:none;
}
.tabbar .tab {
  display:flex; flex-direction:column; align-items:center; gap:3px;
  border:0; background:transparent; color:#9a9aa2; font-size:11px; position:relative;
}
.tabbar .tab svg { width:22px; height:22px; color:#9a9aa2; }
.tabbar .tab.active { color:#fb7299; font-weight:700; }
.tabbar .tab.active svg { color:#fb7299; }
.tabbar .tab b { font-weight:inherit; }

/* 弹层 */
.mask { position:fixed; inset:0; z-index:90; background:rgba(10,10,16,.45); display:none; align-items:center; justify-content:center; padding:26px; }
.mask.show { display:flex; }
.sheet { width:100%; max-width:320px; background:#fff; border-radius:18px; padding:22px 20px 18px; }
.sheet .gt { display:block; font-size:17px; color:#18181b; margin-bottom:6px; }
.sheet .note { margin:0 0 12px; font-size:13px; color:#55555e; line-height:1.7; }
.sheet p { margin:0 0 12px; font-size:13px; color:#55555e; line-height:1.9; }
.sheet em { font-style:normal; color:#fb7299; font-weight:600; }
.sheet .primary { margin-top:6px; }
button.primary { width:100%; background:#fb7299; color:#fff; border:0; border-radius:22px; padding:11px 0; font-size:15px; }

/* toast */
.toast {
  position:fixed; left:50%; transform:translateX(-50%);
  bottom:calc(env(safe-area-inset-bottom) + 70px); z-index:100;
  background:rgba(20,20,26,.9); color:#fff; font-size:13px;
  border-radius:18px; padding:9px 18px; white-space:nowrap;
  box-shadow:0 8px 24px rgba(0,0,0,.18);
  opacity:0; pointer-events:none; transition:opacity .2s ease;
}
.toast.show { opacity:1; }

/* 暗色模式 */


/* ===== 服务页（答疑 | 批改） ===== */
#app.mode-service .top { display:none; }
.sv-top { display:flex; align-items:center; gap:12px; padding:6px 2px 10px; }
.sv-top h3 { margin:0; font-size:19px; color:#18181b; }
.sv-tabs { display:flex; gap:8px; margin-bottom:14px; }
.sv-tabs button { flex:1; padding:10px 0; border:1px solid rgba(0,0,0,.05); border-radius:18px; background:#fff; color:#333; font-size:14px; font-weight:600; box-shadow:0 2px 10px rgba(20,20,40,.05); }
.sv-tabs button.on { background:#fb7299; color:#fff; border-color:#fb7299; }
.sv-pane { display:none; }
.sv-pane.on { display:block; animation:pf .2s ease; }
.sv-pane h4 { margin:0 0 6px; font-size:15px; color:#18181b; }
.sv-pane .dsc { margin:0 0 12px; font-size:12.5px; color:#94949c; line-height:1.6; }
.sv-ph { padding:26px 18px; border:1px dashed #e3c9d4; border-radius:16px; background:#fff; text-align:center; color:#b3b3bc; font-size:12.5px; line-height:1.8; }
/* 安装引导第二行（备用方式 / 卸载说明） */
.ihref { margin:8px 0 0; font-size:12px; color:#94949c; line-height:1.7; }
.ihref em { font-style:normal; color:#fb7299; font-weight:600; }
.ihref.warn { color:#b4400f; background:#fff5ec; border:1px solid #ffd9b3; border-radius:12px; padding:9px 11px; }
.ihref.warn em { color:#b4400f; }


/* ===== 我的页 ===== */
.me-hero { display:flex; align-items:center; gap:14px; padding:16px; border:var(--card-bd); border-radius:var(--card-r); background:#fff; box-shadow:var(--card-sh); }
.avatar { display:flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:50%; background:linear-gradient(145deg,#fb7299,#ffa2bd); color:#fff; font-size:19px; font-weight:700; flex:0 0 auto; }
.me-info { flex:1; min-width:0; display:flex; flex-direction:column; align-items:flex-start; gap:5px; }
.me-name { font-size:17px; font-weight:700; color:#18181b; line-height:1.3; }
.me-sub { font-size:11.5px; color:#94949c; line-height:1.5; }
.me-state { flex:0 0 auto; font-size:11.5px; font-weight:600; color:#8d8d96; background:#f4f4f7; border-radius:12px; padding:5px 11px; }
.me-state.on { color:#c23363; background:linear-gradient(145deg,#fff0f5,#ffe1ec); }
.me-menu { display:flex; flex-direction:column; margin-top:12px; border-radius:var(--card-r); overflow:hidden; background:#fff; border:var(--card-bd); box-shadow:var(--card-sh); }
.mitem { display:flex; align-items:center; gap:12px; padding:14px 15px; border:0; background:#fff; }
.mitem + .mitem { border-top:1px solid rgba(0,0,0,.05); }
.mitem .mic { display:flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:12px; background:#fff0f5; color:#fb7299; flex:0 0 auto; }
.mitem .mic svg { width:20px; height:20px; }
.mitem b { flex:1; text-align:left; font-size:14.5px; color:#18181b; font-weight:500; }
.mitem .arr { color:#c6c6cf; font-size:18px; }
.mitem:active { background:#fff7fa; }


/* ===== 越背越爽 · 背诵（预览演示） ===== */
#app.mode-recall .top { display:none; }
.rl-top { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:6px 2px 8px; }
.rl-top h3 { margin:0; font-size:16px; color:#18181b; }
.rl-hero { text-align:center; padding:18px 0 14px; }
.rl-hero h2 { margin:0; font-size:26px; letter-spacing:2px; color:#18181b; }
.rl-hero p { margin:8px 0 0; font-size:11px; color:#9a9aa2; letter-spacing:.5px; }
.setcard { display:flex; align-items:center; gap:12px; padding:16px; margin-bottom:10px; border:1px solid rgba(0,0,0,.05); border-radius:18px; background:#fff; box-shadow:0 6px 20px rgba(30,25,60,.05); cursor:pointer; }
.setcard .info { flex:1; min-width:0; }
.setcard .info b { font-size:16px; color:#18181b; }
.setcard .intro { margin:5px 0 0; font-size:12px; line-height:1.5; }
.setcard .stat { display:flex; justify-content:space-between; align-items:baseline; margin:9px 0 0; font-size:12px; color:#94949c; }
.setcard .stat .tpct { font-style:normal; color:#fb7299; font-weight:700; }
.setcard .track { height:5px; border-radius:3px; background:#f0eef4; margin-top:7px; overflow:hidden; }
.setcard .track .tfill { height:100%; border-radius:3px; background:linear-gradient(90deg,#fb7299,#ff9db6); }
.setcard .arrow { color:#c6c6cf; font-size:20px; font-weight:400; }
.chrow { display:flex; align-items:center; gap:12px; padding:15px 16px; margin-bottom:9px; border:1px solid rgba(0,0,0,.05); border-radius:16px; background:#fff; box-shadow:0 4px 14px rgba(30,25,60,.04); cursor:pointer; }
.chico { font-size:20px; }
.cinfo { flex:1; min-width:0; }
.cinfo b { display:block; font-size:15px; color:#18181b; }
.cinfo .dim { font-size:12px; color:#94949c; margin-top:3px; }
.chrow .arrow { color:#c6c6cf; font-size:20px; }
.ghint { margin:2px 0 8px; font-size:11px; color:#b58a4a; background:#fdf6e9; border-radius:8px; padding:5px 10px; }
/* 全屏背诵层 */
.rl-play { --rcf: 1; position:fixed; inset:0; z-index:45; display:none; flex-direction:column; background:#f6f5fa; padding:calc(env(safe-area-inset-top) + 8px) 20px calc(env(safe-area-inset-bottom) + 16px); }
.phead { display:flex; align-items:center; gap:10px; padding:6px 0; }
.phead .pback { display:inline-flex; align-items:center; gap:3px; border:0; background:none; padding:8px 10px 8px 0; color:#fb7299; font-size:13px; font-weight:600; }
.phead .dim { font-size:12px; color:#9a9aa2; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.stage { flex:1; min-height:0; display:flex; flex-direction:column; padding:6px 0 10px; }
.qzone h3 { font-size:calc(20px * var(--rcf,1)); line-height:1.6; margin:8px 0 10px; color:#18181b; }
.hint2 { color:#aaa; font-size:12px; margin:0; }
.layers { flex:1; min-height:0; display:flex; flex-direction:column; gap:10px; margin:14px 0 10px; overflow-y:auto; }
.layers .pill { align-self:flex-start; background:#fde9f0; color:#fb7299; border-radius:18px; padding:6px 15px; font-size:14px; }
.layers .concrow { display:flex; gap:10px; background:#fffdfe; border:1px solid rgba(251,114,153,.22); border-left:3px solid #fb7299; border-radius:12px; padding:12px 13px; font-size:14px; line-height:1.65; }
.layers .concrow b { font-style:normal; font-size:11px; font-weight:600; color:#fb7299; background:#fde9f0; border-radius:8px; padding:2px 8px; height:fit-content; }
.layers .concrow span { color:#4a4a52; }
.layers .mustrow { display:flex; gap:8px; background:#fff; border-radius:12px; padding:12px 13px; font-size:14px; line-height:1.6; box-shadow:0 1px 4px rgba(0,0,0,.04); }
.layers .no { color:#fb7299; font-weight:700; }
.layers .opt { color:#888; font-size:12px; margin:4px 0 0; }
.cta { margin:4px 0 8px; }
.cta .primary { width:100%; background:#fb7299; color:#fff; border:0; border-radius:22px; padding:11px 0; font-size:15px; }
.legbar { position:fixed; left:50%; transform:translateX(-50%); bottom:calc(env(safe-area-inset-bottom) + 12px); width:calc(100% - 30px); max-width:610px; height:5px; background:#f0eef4; border-radius:4px; overflow:hidden; z-index:46; }
.legbar .fill { height:100%; background:linear-gradient(90deg,#fb7299,#ff9db6); transition:width .4s ease; }
.done { position:fixed; bottom:calc(env(safe-area-inset-bottom) + 24px); left:0; right:0; z-index:46; text-align:center; font-size:14px; color:#2aa95b; font-weight:600; }
.celebrate { position:fixed; inset:0; z-index:50; display:none; flex-direction:column; align-items:center; justify-content:center; gap:12px; background:rgba(255,255,255,.9); backdrop-filter:blur(6px); cursor:pointer; }
.celebrate .heart { font-size:54px; }
.celebrate b { font-size:20px; color:#18181b; }
.celebrate span { color:#999; font-size:13px; }
.celebrate .go { color:#fb7299; font-weight:600; }


/* ===== 课程观看页 UI（预览：仅外观示意） ===== */
.wui { position:fixed; inset:0; z-index:48; display:none; overflow-y:auto; background:#f6f5fa; padding:calc(env(safe-area-inset-top) + 10px) 14px calc(env(safe-area-inset-bottom) + 16px); }
.wui-top { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:2px 0 10px; }
.wui-top .nxt { font-size:13px; color:#fb7299; font-weight:600; cursor:pointer; }
.wstage { position:relative; width:100%; aspect-ratio:16/9; border-radius:14px; background:#101014; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.wstage .playb { width:58px; height:58px; border-radius:50%; background:rgba(255,255,255,.16); display:flex; align-items:center; justify-content:center; color:#fff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.25); }
.wstage .playb svg { width:26px; height:26px; margin-left:3px; }
.wtag { position:absolute; right:10px; bottom:10px; font-size:10px; color:#fff; background:rgba(0,0,0,.45); border-radius:10px; padding:3px 8px; }
.wctrl { display:flex; align-items:center; justify-content:space-between; margin:10px 2px 0; }
.wctrl .rates a { display:inline-block; padding:5px 9px; border-radius:14px; font-size:12px; color:#666; }
.wctrl .rates a.on { background:#fb7299; color:#fff; font-weight:600; }
.wctrl .auto { font-size:12px; color:#666; display:inline-flex; align-items:center; gap:4px; }
.wmeta h2 { margin:12px 2px 4px; font-size:18px; color:#18181b; line-height:1.5; }
.wmeta .dim { margin:0 2px 4px; font-size:12px; color:#9a9aa2; }
.wdir { margin-top:12px; background:#fff; border-radius:16px; border:1px solid rgba(0,0,0,.05); box-shadow:0 4px 14px rgba(30,25,60,.04); overflow:hidden; }
.dirh { display:flex; align-items:center; gap:8px; padding:13px 14px; font-size:13px; font-weight:700; color:#18181b; border-bottom:1px solid rgba(0,0,0,.05); }
.dirh .cnt { margin-left:auto; font-size:11px; color:#9a9aa2; font-weight:500; }
.vrow { display:flex; align-items:center; gap:10px; padding:12px 14px; }
.vrow + .vrow { border-top:1px solid rgba(0,0,0,.04); }
.vrow.cur { background:#fff0f5; }
.vrow .seq { width:22px; height:22px; flex:none; display:flex; align-items:center; justify-content:center; border-radius:50%; font-size:11px; color:#fb7299; background:#fde9f0; }
.vrow.cur .seq { color:#fff; background:#fb7299; }
.vrow.lock .seq { color:#c6c6cf; background:#f0f0f4; }
.vrow .vt { flex:1; font-size:13.5px; color:#333; }
.vrow.lock .vt { color:#9a9aa2; }
.vrow .lk { font-size:13px; }
.redeemline { margin:10px 14px 13px; font-size:12px; color:#9a9aa2; }
.redeemline .link { color:#fb7299; }


/* ===== 首页 理念 / 常见问题 Q&A 信息卡 ===== */
.icard, .fitem { background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:16px; padding:16px; margin-top:12px; box-shadow:0 4px 14px rgba(30,25,60,.04); }
.icard b { font-size:16px; color:#18181b; line-height:1.6; }
.icard p { font-size:13px; color:#55555e; line-height:1.9; margin:10px 0 0; }
.icard p.sub { color:#b0b0b8; font-size:11px; margin-top:14px; }
.fitem + .fitem { margin-top:10px; }
/* 常见问题：手风琴（默认只显示题干，点题干展开答案） */
.fitem { padding:0; overflow:hidden; }
.fq { display:flex; align-items:center; gap:10px; width:100%; text-align:left; background:none;
  border:0; padding:15px 16px; font-size:15.5px; font-weight:700; color:#18181b; line-height:1.5; cursor:pointer; }
.fq-t { flex:1 1 auto; min-width:0; }
.fq-ar { flex:0 0 auto; font-style:normal; font-size:20px; line-height:1; color:#fb7299; transition:transform .2s ease; }
.fitem.open .fq-ar { transform:rotate(90deg); }
.fa { display:none; padding:0 16px 15px; }
.fitem.open .fa { display:block; }
.fitem p { margin:0; font-size:14px; color:#55555e; line-height:1.85; }
/* 富文本（课程简介 / 常见问题）：序号与正文对齐、分点、字号更大 */
.rt-p { display:flex; gap:9px; margin:0 0 11px; font-size:15px; line-height:1.95; color:#3f3f46; word-break:break-word; }
.fitem .rt-p, .bintro .rt-p { margin:0 0 11px; font-size:15px; line-height:1.95; color:#3f3f46; }
.rt-p:last-child { margin-bottom:0; }
.rt-p.rt-plain { display:block; }
.rt-k { flex:0 0 auto; width:22px; height:22px; margin-top:4px; border-radius:50%; color:#e0245e;
  font-weight:800; font-size:12.5px; line-height:1; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(145deg,#fff0f5,#ffe1ec); box-shadow:inset 0 0 0 1px rgba(251,114,153,.18); }
.rt-k.rt-kw { width:auto; padding:0 9px; border-radius:999px; }
.rt-t { flex:1 1 auto; min-width:0; }
.rt-h { margin:14px 0 8px; font-size:16px; font-weight:800; color:#18181b; }
.rt-h:first-child { margin-top:0; }
.rt-dot { display:flex; }
.rt-dotm { flex:0 0 6px; width:6px; height:6px; border-radius:50%; background:#fb7299; margin-top:9px; }


/* ===== 课程介绍页（一键购买 = 加企业微信） ===== */
.ihero { padding:16px 2px 6px; }
.ihero .iname { display:flex; align-items:baseline; gap:8px; font-size:26px; font-weight:800; color:#18181b; letter-spacing:1px; }
.ihero .iname em { font-style:normal; font-size:12px; font-weight:600; color:#fb7299; background:#fde9f0; border-radius:8px; padding:2px 8px; }
.ihero p { margin:8px 0 10px; font-size:13px; color:#94949c; }
.ilabels { display:flex; flex-wrap:wrap; gap:6px; }
.ilabel { font-size:11px; color:#c23363; background:linear-gradient(145deg,#fff0f5,#ffe1ec); border-radius:10px; padding:3px 9px; }
.isec { margin-top:14px; }
.isec h3 { margin:0 0 8px; font-size:14px; color:#18181b; }
.ifeats { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.ifeat { background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:14px; padding:11px 12px; box-shadow:0 2px 8px rgba(30,25,60,.04); }
.ifeat b { display:block; font-size:13px; color:#fb7299; margin-bottom:3px; }
.ifeat span { font-size:11px; color:#7a7a84; line-height:1.5; }
.ibody { margin:0; font-size:13px; color:#55555e; line-height:1.95; background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:14px; padding:14px; box-shadow:0 2px 8px rgba(30,25,60,.04); }
.iprice { display:flex; align-items:baseline; gap:8px; margin-top:16px; }
.iprice b { font-size:24px; color:#c23363; font-weight:800; }
.iprice span { font-size:12px; color:#94949c; }
.idir { display:inline-block; margin-top:10px; font-size:13px; color:#fb7299; font-weight:600; }
.ispacer { height:86px; }
.ibuybar { position:fixed; left:0; right:0; bottom:0; z-index:49; padding:10px 16px calc(env(safe-area-inset-bottom) + 10px); background:rgba(255,255,255,.96); backdrop-filter:blur(8px); border-top:1px solid rgba(0,0,0,.05); }
.ibuy { display:block; width:100%; max-width:608px; margin:0 auto; padding:13px 0; border:0; border-radius:24px; background:linear-gradient(90deg,#fb7299,#ff8fae); color:#fff; font-size:16px; font-weight:700; box-shadow:0 6px 18px rgba(251,114,153,.35); }
.ibuy:active { transform:scale(.98); }
/* 一键购买 · 加企业微信弹层 */
.wxbox { background:#f6f5fa; border-radius:14px; padding:14px; text-align:center; }
.wxhead { display:flex; align-items:center; gap:10px; margin-bottom:10px; text-align:left; }
.wxic { display:flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:50%; background:linear-gradient(145deg,#fb7299,#ffa2bd); color:#fff; font-weight:700; font-size:14px; }
.wxhead b { font-size:14px; color:#18181b; }
.wxqrcode { display:flex; justify-content:center; }
.qr { display:grid; grid-template-columns:repeat(21,1fr); width:128px; height:128px; background:#fff; padding:6px; border-radius:8px; gap:1px; }
.qr i { display:block; background:transparent; }
.qr i.b { background:#18181b; }
.wxhow { font-size:11.5px !important; color:#55555e !important; margin-top:10px; line-height:1.7 !important; }
.sheet .note { color:#b0b0b8; font-size:11px; margin:0; }


/* ===== 服务 · 答疑（提问题 | 精选答疑） ===== */
/* tab 外观统一由下方「正式答疑页样式」控制；这里不再定义 .tri2，避免选中时出现白色小三角 */
.qa-sub { display:none; }
.qa-sub.on { display:block; }
.askbox { background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:16px; padding:10px 10px 6px; box-shadow:0 4px 14px rgba(30,25,60,.05); }
.askbox textarea { width:100%; border:0; background:transparent; resize:none; font-size:14px; line-height:1.7; color:#222; outline:none; font-family:inherit; min-height:86px; }
.askatt { font-size:11px; color:#9a9aa2; padding:2px 2px 4px; }
.askbar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:10px 2px 0; }
.askbar .hint { font-size:11px; color:#9a9aa2; }
.abtn { padding:8px 22px; border:1px solid #fb7299; border-radius:18px; background:#fff; color:#fb7299; font-size:14px; font-weight:600; }
.abtn:active { background:#fff0f5; }
.abtn:disabled { opacity:.45; }
.abtn:disabled:active { background:#fff; }
.divider { height:1px; background:rgba(0,0,0,.06); margin:18px 0 12px; }
.qatitle { margin:0 0 2px; font-size:15px; color:#18181b; padding-bottom:8px; position:relative; display:inline-block; }
.qatitle::after { content:''; position:absolute; left:0; right:0; bottom:0; height:3px; border-radius:2px; background:linear-gradient(90deg,#fb7299,#ff9db6); }
.besthead { display:flex; align-items:baseline; justify-content:space-between; gap:8px; padding-bottom:8px; border-bottom:3px solid #fbe3ec; margin-bottom:2px; }
.besthead h4 { margin:0; font-size:15px; color:#18181b; }
.besthead span { font-size:11px; color:#9a9aa2; }
.qalist { margin-top:4px; min-width:0; }
.qrow { padding:13px 2px; min-width:0; }
.qrow + .qrow { border-top:1px solid rgba(0,0,0,.05); }
.qline, .aline { margin:0; font-size:13.5px; line-height:1.75; white-space:pre-wrap; word-break:break-word; overflow-wrap:anywhere; }
.qline { color:#18181b; font-weight:500; }
.aline { color:#55555e; margin-top:6px; padding-left:18px; position:relative; }
.qline b, .aline b { color:#fb7299; margin-right:2px; }
.qline .tag { font-style:normal; font-size:10px; color:#fb7299; border:1px solid #fb7299; border-radius:6px; padding:0 5px; margin-right:6px; }
.aline::before { content:''; position:absolute; left:2px; top:9px; bottom:9px; width:3px; border-radius:2px; background:#fbe3ec; }


/* ===== 服务 · 批改（作答 + 批改记录） ===== */
.rvq { background:linear-gradient(135deg,#fff0f5,#ffe9f0); border:1px solid rgba(251,114,153,.22); border-radius:16px; padding:14px 15px; margin-bottom:10px; }
.rvq h5 { margin:0 0 8px; font-size:11px; font-weight:600; color:#fb7299; letter-spacing:1px; }
.rvqtitle { margin:0 0 6px; font-size:15px; line-height:1.6; color:#18181b; font-weight:600; }
.rvqsub { margin:0; font-size:12px; line-height:1.7; color:#7a7a84; }
.rv-head { display:flex; align-items:center; gap:7px; padding-bottom:9px; border-bottom:3px solid #fbe3ec; font-size:15px; font-weight:600; color:#18181b; cursor:pointer; user-select:none; }
.rvic { color:#fb7299; font-size:12px; transition:transform .2s ease; }
.rv-head.closed .rvic { transform:rotate(-90deg); }
.rv-list { margin-top:4px; }
.frow { padding:13px 2px; }
.frow + .frow { border-top:1px solid rgba(0,0,0,.05); }
.fline { margin:0; font-size:13px; line-height:1.75; }
.fline + .fline { margin-top:4px; }
.fline b { color:#fb7299; }
.fline.fb { color:#2a7d4f; }

/* ===== 课程目录页（一级列表与首页共用顶栏，仅进入套课详情时隐藏） ===== */
#app.mode-courses.sub-page .top { display: none; }
/* 二级页顶栏隐藏后，返回条补出与首页顶栏相当的顶部留白 */
#app.mode-courses.sub-page .sv-top { padding-top: calc(env(safe-area-inset-top) + 10px); }
/* 一级页（课程列表 / 我的）与顶栏之间留出统一间距 */
#page-courses, #page-mine { padding-top:8px; }
.cd-top { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:6px 2px 14px; }
.backlink { display:inline-flex; align-items:center; gap:4px; padding:6px 10px; border:1px solid rgba(0,0,0,.05); border-radius:12px; background:#fff; color:#18181b; font-size:12.5px; box-shadow:0 2px 10px rgba(20,20,40,.05); }
.backlink svg { color:#fb7299; }
.cd-list { display:flex; flex-direction:column; gap:10px; padding-top:2px; }
.lesson { display:flex; align-items:center; gap:13px; padding:15px 14px; border:var(--card-bd); border-radius:var(--card-r); background:#fff; text-decoration:none; box-shadow:var(--card-sh); transition:transform .12s ease; }
.lesson:active { transform:scale(.97); }
.lesson .lno { flex:0 0 auto; width:56px; height:56px; display:flex; align-items:center; justify-content:center; border-radius:14px; background:linear-gradient(145deg,#fff0f5,#ffe1ec); color:#c23363; font-weight:700; font-size:14px; }
.lesson .linfo { flex:1; min-width:0; }
.lesson .linfo b { display:block; font-size:15.5px; color:#18181b; margin-bottom:5px; }
.lesson .linfo em { font-style:normal; font-size:12px; color:#94949c; line-height:1.6; }
.lesson .lock { flex:0 0 auto; color:#c6c6cf; display:flex; }
.lesson .lock svg { width:22px; height:22px; }
.cd-more { text-align:center; color:#ccd1dc; font-size:16px; letter-spacing:10px; margin:14px 0 2px; line-height:1.6; }
.cd-more b { display:block; font-size:11px; color:#94949c; letter-spacing:1px; font-weight:500; }
.cd-pad { height:132px; }
/* 常驻续学条：位于底部 Tab 之上 */
.resume { position:fixed; left:14px; right:14px; max-width:612px; margin:0 auto; bottom:calc(env(safe-area-inset-bottom) + 62px); z-index:40; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 12px 10px 16px; border-radius:16px; background:#fff; border:1px solid rgba(0,0,0,.05); box-shadow:0 8px 24px rgba(30,25,60,.12); }
.resume .rleft b { display:block; font-size:11px; color:#9a9aa2; font-weight:500; }
.resume .rleft em { font-style:normal; font-size:13px; color:#18181b; font-weight:600; }
.resume .rgo { display:inline-flex; align-items:center; gap:6px; padding:10px 18px; border:0; border-radius:18px; background:#fb7299; color:#fff; font-size:14px; font-weight:600; }
.resume .rgo svg { width:15px; height:15px; }

/* ===== 答疑 / 批改 独立页（返回首页 + 使用说明按钮） ===== */
#app.mode-answer .top, #app.mode-review .top { display: none; }
.howlink { font-size: 12px; color: #fb7299; background: #fff; border: 1px solid #fb7299; border-radius: 14px; padding: 6px 12px; }
.howlink:active { background: #fff0f5; }
.how-steps { margin: 0 0 4px; padding-left: 20px; }
.how-steps li { font-size: 13px; color: #55555e; line-height: 1.9; }
/* 后台自定义的「使用说明」：自由文本，按换行原样显示 */
.how-text { margin: 0; font-size: 13.5px; color: #55555e; line-height: 1.9; white-space: pre-wrap; word-break: break-word; }
/* ===== 刷题（选择题） ===== */
#app.mode-quiz .top { display: none; }
.qz-stat { display: flex; gap: 8px; margin: 4px 0 14px; }
.qz-stat .st { flex: 1; background: #fff; border: 1px solid rgba(0,0,0,.05); border-radius: 14px; padding: 10px 6px; text-align: center; }
.qz-stat .st b { display: block; font-size: 18px; color: #c23363; }
.qz-stat .st span { font-size: 11px; color: #9a9aa2; }
.qz-list { display: flex; flex-direction: column; gap: 10px; }
.qzset { background: #fff; border: var(--card-bd); border-radius: var(--card-r); padding: 14px 15px; box-shadow: var(--card-sh); }
.qzset .sn { font-size: 16px; font-weight: 700; color: #18181b; }
.qzset .sd { margin: 4px 0 0; font-size: 12px; color: #94949c; }
.qzset .sf { display: flex; justify-content: space-between; align-items: center; margin-top: 10px; font-size: 12px; color: #9a9aa2; }
.qzset .sf em { font-style: normal; color: #fb7299; font-weight: 600; }
.qz-play { position: fixed; inset: 0; z-index: 47; background: #f6f5fa; padding: calc(env(safe-area-inset-top) + 8px) 14px calc(env(safe-area-inset-bottom) + 12px); overflow-y: auto; }
.qz-head { display: flex; align-items: center; gap: 6px; padding: 2px 0 8px; }
.qz-head b { font-size: 14px; color: #18181b; margin-left: 4px; }
.qz-prog { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.qz-prog .fill-wrap { flex: 1; height: 5px; background: #efeaf3; border-radius: 3px; overflow: hidden; }
.qz-prog .fill { height: 100%; background: linear-gradient(90deg,#fb7299,#ff9db6); transition: width .3s ease; }
.qz-prog span { font-size: 11px; color: #9a9aa2; }
.qz-card { background: linear-gradient(135deg,#fff0f5,#ffe9f0); border: 1px solid rgba(251,114,153,.2); border-radius: 16px; padding: 14px 15px; }
.qtag { display: inline-block; font-style: normal; font-size: 13px; font-weight: 800; letter-spacing: 1px; color: #fff; background: #fb7299; border: 0; border-radius: 9px; padding: 3px 11px; }
.qz-card .qtag { margin-bottom: 9px; }
.qz-card p { margin: 8px 0 0; font-size: 15px; line-height: 1.7; color: #18181b; }
.qz-opts { display: flex; flex-direction: column; gap: 9px; margin-top: 12px; }
.qzopt { display: flex; align-items: center; gap: 10px; background: #fff; border: 1px solid rgba(0,0,0,.06); border-radius: 13px; padding: 12px 12px; }
.qzopt .ql { width: 24px; height: 24px; flex: none; border-radius: 50%; background: #fff0f5; color: #fb7299; font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.qzopt.pick { border-color: #fb7299; background: #fff7fa; }
.qzopt.right { border-color: #34c759; background: #eefaef; }
.qzopt.right .ql { background: #34c759; color: #fff; }
.qzopt.wrong { border-color: #e5484d; background: #fdeeee; }
.qzopt.wrong .ql { background: #e5484d; color: #fff; }
.qz-fb { min-height: 26px; display: flex; align-items: center; gap: 10px; margin-top: 12px; font-size: 14px; }
.qz-fb .ok { color: #2aa95b; font-weight: 700; }
.qz-fb .no { color: #c0392b; font-weight: 700; }
.qz-foot { margin-top: 6px; }
.qzk { background: #fb7299; color: #fff; border: 0; border-radius: 22px; padding: 11px 0; width: 100%; font-size: 15px; }
.qzk.ghost { background: #fff; color: #fb7299; border: 1px solid #fb7299; margin-top: 8px; }
.qz-result { padding: 30px 4px 10px; text-align: center; }
.qz-result .rate { display: block; font-size: 54px; color: #c23363; }
.qz-result .rt { color: #9a9aa2; font-size: 13px; }
.qz-result .rs { display: flex; justify-content: center; gap: 22px; margin: 14px 0; color: #333; font-size: 14px; }
.qz-result .rh { text-align: left; font-size: 15px; font-weight: 700; color: #18181b; margin: 14px 0 6px; }
.qzw { background: #fff; border: 1px solid rgba(0,0,0,.05); border-radius: 13px; padding: 12px 13px; margin-bottom: 8px; text-align: left; }
.qzw .wq { margin: 0; font-size: 13px; color: #18181b; }
.qzw .wa { margin: 5px 0 0; font-size: 12px; color: #2aa95b; }
.qzw .we { margin: 4px 0 0; font-size: 12px; color: #8a8a92; line-height: 1.6; }
.qz-result .ra { margin-top: 16px; }
.qztop-back { padding: 6px 0 12px; }
/* 提交/使用说明按钮统一尺寸 + 提交确认窗 */
.askbar { align-items: stretch; }
.askbar .howlink, .askbar .abtn { width: 122px; padding: 9px 0; border-radius: 19px; font-size: 14px; text-align: center; display: inline-flex; align-items: center; justify-content: center; }
.askbar .abtn { background: #fb7299; color: #fff; border-color: #fb7299; }
.askbar .abtn.off { background: #e9e9ef; color: #a3a3ad; border-color: #e9e9ef; }
.askbar .abtn.off:active { background: #e2e2ea; }
.askbar .howlink { background: #fff; color: #fb7299; border: 1px solid #fb7299; }
#cfmCancel { background: #fff; color: #fb7299; border: 1px solid #fb7299; }
.cfm-hint { margin: 0 0 12px; }

/* 确认弹窗两按钮等大 */
.cfmBtns button { flex: 1 1 0; width: 0; box-sizing: border-box; }
.cfmBtns .abtn, .cfmBtns .qzk {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 0 10px; border-radius: 22px; font-size: 15px;
}

/* ============ 正式学生端 · 补充样式 A ============ */
.empty-line { text-align:center; color:#9a9aa2; font-size:13px; padding:46px 12px; line-height:1.7; }
.cd-sub { font-size:12px; color:#9a9aa2; margin:2px 0 10px; line-height:1.7; }
.lesson .gobtn { color:#fb7299; font-size:20px; font-weight:700; flex:none; }
.lesson .trial, .lesson .audio { font-style:normal; display:inline-block; color:#fb7299; border:1px solid #fb7299; border-radius:8px; font-size:10px; padding:0 5px; margin-left:6px; vertical-align:middle; font-weight:500; }
.lesson .audio { color:#8a63d2; border-color:#8a63d2; }
.lesson .okdot { color:#2aa95b; font-weight:800; font-size:16px; flex:none; }
.rc-bar { display:inline-block; width:100%; height:6px; background:#efeaf3; border-radius:3px; overflow:hidden; vertical-align:middle; }
.rc-bar i { display:block; height:100%; background:linear-gradient(90deg,#fb7299,#ff9db6); transition:width .3s ease; }
.coming { text-align:center; padding:70px 26px; }
.coming .coming-ico { font-size:42px; }
.coming b { font-size:17px; color:#18181b; display:block; margin-top:10px; }
.coming p { font-size:13px; color:#777; line-height:1.9; margin:10px 0 22px; }
.coming .primary { max-width:230px; margin:0 auto; }
/* 观看浮层（真实播放） */
.wui { position:fixed; inset:0; z-index:60; background:#f6f5fa; overflow-y:auto; -webkit-overflow-scrolling:touch; padding: calc(env(safe-area-inset-top) + 6px) 14px calc(env(safe-area-inset-bottom) + 18px); }
.wui-top { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:2px 0 8px; }
.wstage { position:relative; background:#000; border-radius:14px; overflow:hidden; }
.wstage .mv { width:100%; max-height:52vh; display:block; background:#000; }
.audio-box { background:#fff; padding:22px 8px; }
.audio-box .au { width:100%; }
.wloading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#bbb; font-size:13px; background:#000; }
.werr { position:absolute; inset:0; background:rgba(20,20,25,.96); color:#fff; font-size:14px; padding:30px 24px; text-align:center; display:flex; align-items:center; justify-content:center; flex-direction:column; line-height:2; z-index:3; }
.werr .link { color:#ff9db6; }
.wempty { text-align:center; padding:64px 0; color:#777; }
/* 咨询二维码 */
.wxqrcode img { width:156px; height:156px; object-fit:contain; margin:0 auto; }
.wxqrcode.qr-txt { color:#9a9aa2; font-size:12.5px; display:flex; align-items:center; justify-content:center; text-align:center; padding:0 6px; }/* ============ 正式学生端 · 补充样式 B（背诵/我的） ============ */
.rc-set { background:#fff; border:var(--card-bd); border-radius:var(--card-r); padding:14px 15px; margin-bottom:10px; box-shadow:var(--card-sh); }
.rc-sinfo b { font-size:15.5px; color:#18181b; }
.rc-sinfo p { margin:5px 0 8px; font-size:12px; color:#9a9aa2; line-height:1.6; }
.rc-sbar { display:flex; align-items:center; gap:8px; }
.rc-sbar .rc-bar { flex:1; }
.rc-sbar span { font-size:11px; color:#8a8a92; }
/* 背诵题集：原地展开章节（不跳页） */
.rc-set-top { display:flex; align-items:center; gap:10px; cursor:pointer; }
.rc-set-top .rc-sinfo { flex:1 1 auto; min-width:0; }
.rc-caret { flex:0 0 auto; font-size:20px; line-height:1; color:#fb7299; transition:transform .2s ease; }
.rc-set.open .rc-caret { transform:rotate(90deg); }
.rc-chwrap { margin-top:6px; padding-top:11px; border-top:1px dashed #f2e7ec; }
.rc-fin, .rc-go { display:inline-block; margin-top:8px; font-style:normal; font-size:12px; color:#2aa95b; }
.rc-go { color:#fb7299; font-weight:600; }
.rc-resume { background:linear-gradient(135deg,#fff0f5,#ffe9f0); border:1px solid rgba(251,114,153,.22); border-radius:13px; padding:11px 13px; font-size:13px; color:#c23363; margin-bottom:10px; }
.rc-ch { display:flex; align-items:center; gap:10px; background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:14px; padding:10px 12px; margin-bottom:8px; }
.rc-ch .ch-no { width:24px; height:24px; border-radius:50%; background:#fff0f5; color:#fb7299; font-size:12px; font-weight:700; display:flex; align-items:center; justify-content:center; flex:none; }
.rc-ch .ch-info { flex:1; min-width:0; }
.rc-ch .ch-info b { display:block; font-size:13px; color:#18181b; margin-bottom:5px; }
.rc-ch .ch-info .rc-bar { display:block; }
/* 题集行去掉总进度条后，进度数字与「续」标记同行显示 */
.rc-ch .ch-info em { font-style:normal; font-size:11px; color:#9a9aa2; display:inline-block; margin-top:4px; }
.rc-ch .ch-info em.rc-cont { margin-left:6px; margin-top:0; color:#fb7299; background:#fff0f5; border-radius:999px;
  padding:1px 7px; font-size:10px; font-weight:700; vertical-align:1px; }
.rc-bar-top { display:flex; align-items:center; gap:10px; font-size:12px; color:#8a8a92; margin:2px 0 10px; }
.rc-bar-top .rc-bar { flex:1; }
.rc-card { background:#fff; border-radius:18px; padding:20px 18px; box-shadow:0 6px 20px rgba(30,25,60,.05); }
.rc-q { display:block; font-size:1.12em; line-height:1.7; color:#18181b; }
.rc-sec { margin-top:16px; }
.rc-sec em { display:block; font-style:normal; font-size:11px; color:#fb7299; font-weight:700; margin-bottom:4px; }
.rc-sec p { margin:0; line-height:1.9; color:#3a3a44; }
.rc-pt { line-height:1.8; color:#3a3a44; padding:4px 0; border-bottom:1px dashed #f2f2f6; }
.rc-pt:last-child { border-bottom:0; }
.rc-pt em { font-style:normal; color:#b9b9c2; font-size:11px; margin-left:6px; }
.rc-step { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; }
.sbtn { border:1px solid #e3e5ea; background:#fff; color:#55555e; border-radius:16px; padding:6px 14px; font-size:13px; }
.sbtn:active { opacity:.7; }
.sbtn.main { margin-left:auto; background:#fb7299; border-color:#fb7299; color:#fff; font-weight:600; }
.rc-done { text-align:center; padding:80px 24px; }
.rc-done div { font-size:52px; }
.rc-done b { font-size:19px; color:#18181b; display:block; margin-top:12px; }
.rc-done p { color:#777; font-size:13px; margin:10px 0 22px; }
.rc-done .primary { max-width:240px; margin:0 auto; }
/* 我的页样式统一在上方「===== 我的页 =====」区块，此处旧覆盖已移除 */
/* ============ 正式学生端 · 补充样式 C（观看操作条/目录） ============ */
.wctrl { display:flex; align-items:center; justify-content:space-between; gap:8px; background:#fff; border-radius:10px; padding:6px 10px; margin-top:8px; }
.wctrl .rates { display:flex; gap:4px; flex-wrap:wrap; }
.wctrl .rates a { font-size:12px; color:#7a7f8a; border:1px solid #e3e5ea; border-radius:13px; padding:2px 9px; }
.wctrl .rates a.on { color:#fff; background:#fb7299; border-color:#fb7299; }
.wctrl .auto { display:flex; align-items:center; gap:5px; font-size:12px; color:#666; }
.wctrl .auto input { width:auto; }
.wmeta { background:#fff; border-radius:12px; padding:12px 14px; margin-top:10px; }
.wmeta h2 { margin:0; font-size:16.5px; color:#18181b; line-height:1.5; }
.wmeta p { margin:6px 0 0; font-size:12px; color:#9a9aa2; }
/* 常见问题弹层顶部标题：纯标题（不要白卡片横栏） */
.wtitle { margin:12px 2px 10px; font-size:18px; font-weight:700; color:#18181b; line-height:1.5; }
.wdir { background:#fff; border-radius:12px; margin-top:10px; overflow:hidden; }
.wdir .dirh { padding:11px 14px; font-weight:600; font-size:14px; border-bottom:1px solid #f2f2f6; }
.wdir .dirh .cnt { float:right; font-weight:400; font-size:11px; color:#9aa3af; margin-top:2px; }
.vrow { display:flex; align-items:center; gap:10px; padding:12px 14px; border-bottom:1px solid #f6f6f8; }
.vrow.cur { background:#fff0f4; }
.vrow.lock { opacity:.62; }
.vrow .seq { width:24px; height:24px; border-radius:50%; background:#f0f0f5; color:#888; flex:none; display:flex; align-items:center; justify-content:center; font-size:12px; }
.vrow .seq.ok { background:#34c759; color:#fff; }
.vrow .vt { flex:1; font-size:14px; }
.vrow .vt em { font-style:normal; color:#fb7299; border:1px solid #fb7299; border-radius:8px; font-size:10px; padding:0 5px; margin-left:6px; }
.vrow .lk, .vrow .p { font-size:11px; color:#999; }
.nxt { color:#fb7299; font-size:13px; font-weight:500; padding:6px 2px; }
.redeemline { text-align:center; color:#999; font-size:12px; padding:12px 0 16px; margin:0; }
.redeemline .link { color:#fb7299; }
.link { color:#fb7299; }
.wxbox { text-align:center; background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:16px; padding:16px 12px; }
.wxhead { display:flex; align-items:center; justify-content:center; gap:9px; margin-bottom:12px; }
.wxhead b { font-size:14.5px; }
.wxic { width:38px; height:38px; border-radius:12px; background:#fb7299; color:#fff; font-size:18px; font-weight:700; display:inline-flex; align-items:center; justify-content:center; }
.wxhow { font-size:12px; color:#9a9aa2; margin:10px 0 0; line-height:1.7; }
.note { font-size:12px; color:#9a9aa2; }
.sv-top { display:flex; align-items:center; gap:6px; padding:2px 0 12px; }
.sv-top h3 { margin:0 0 0 2px; font-size:17px; color:#18181b; }
.sv-top .backlink, .wui-top .backlink { display:inline-flex; align-items:center; gap:3px; padding:5px 8px 5px 4px; border:1px solid rgba(0,0,0,.05); border-radius:11px; background:#fff; color:#18181b; font-size:12.5px; }
.backlink svg { color:#fb7299; }
.divider { height:1px; background:#eee; margin:14px 2px; }/* ============ 正式答疑页样式 ============ */
.qa-tabs { display:flex; gap:8px; margin-bottom:12px; }
.qa-tabs button { flex:1; padding:10px 0; border:1px solid rgba(0,0,0,.05); border-radius:18px; background:#fff; color:#333; font-size:14px; font-weight:600; box-shadow:0 2px 10px rgba(20,20,40,.05); }
.qa-tabs button.on { background:#fb7299; color:#fff; border-color:#fb7299; }
.qa-tabs .tri2 { display:none; }
.qa-sub { display:none; }
.qa-sub.on { display:block; }
.askbox textarea { width:100%; box-sizing:border-box; border:1px solid #e2e2e8; border-radius:14px; padding:12px; font-size:14px; background:#fff; color:#222; outline:none; line-height:1.7; font-family:inherit; }
.askbox textarea:focus { border-color:#fb7299; }
.askbox textarea[readonly] { color:#b0b0b8; background:#fafafc; cursor:not-allowed; }
.askbox textarea[readonly]:focus { border-color:#e2e2e8; }
.qatitle { margin:0 0 8px; font-size:14px; color:#18181b; }
.qalist { display:flex; flex-direction:column; gap:10px; min-width:0; }
.qrow { background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:14px; padding:12px 14px; box-shadow:0 2px 10px rgba(30,25,60,.04); min-width:0; }
.qline, .aline { margin:0; font-size:14px; line-height:1.75; color:#18181b; white-space:pre-wrap; word-break:break-word; overflow-wrap:anywhere; }
.qline b, .aline b { color:#fb7299; margin-right:6px; }
.aline { margin-top:6px; color:#44444e; }
.dim-line { color:#adaeb8; }
.dim-line b { color:#c9c9d2; }
.besthead { margin:0 0 10px; }
.besthead h4 { margin:0 0 4px; font-size:15px; color:#18181b; }
.besthead span { font-size:12px; color:#9a9aa2; }
/* 精选答疑：搜索 + 分类筛选（分类=与搜索框同款的“框 + 页内下拉”） */
.bestbar { display:flex; gap:8px; margin:0 0 10px; }
.bestbar input { flex:1 1 auto; min-width:0; height:44px; box-sizing:border-box; padding:0 12px; border:1px solid #ececf1; border-radius:12px; font-size:14px; outline:none; background:#fff; color:#333; }
.bestbar input:focus { border-color:#fb7299; }
/* 自定义分类下拉：外观与搜索框一致，点击整个“框”展开面板选择 */
.bestsel { position:relative; flex:0 0 auto; }
.bestsel-btn { height:44px; box-sizing:border-box; min-width:100px; display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:0 12px; border:1px solid #ececf1; border-radius:12px; background:#fff; color:#333; font-size:14px; font-family:inherit;
  line-height:1; cursor:pointer; outline:none; }
.bestsel-btn .seltxt { flex:1 1 auto; text-align:left; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bestsel-btn .caret { color:#9a9aa2; transition:transform .18s ease; flex:0 0 auto; }
.bestsel.open .bestsel-btn, .bestsel-btn:focus-visible { border-color:#fb7299; }
.bestsel.open .bestsel-btn .caret { transform:rotate(180deg); color:#fb7299; }
.bestsel-pan { position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:60; display:none; padding:6px; max-height:264px; overflow:auto;
  background:#fff; border:1px solid rgba(0,0,0,.06); border-radius:12px; box-shadow:0 14px 34px rgba(30,25,60,.16); }
.bestsel.open .bestsel-pan { display:block; animation:pf .16s ease; }
.bestsel-opt { display:block; width:100%; text-align:left; white-space:nowrap; border:0; background:transparent; color:#333;
  font-size:14px; font-family:inherit; padding:9px 12px; border-radius:8px; cursor:pointer; }
.bestsel-opt:hover { background:#f7f7fa; }
.bestsel-opt.on { color:#c23363; font-weight:600; background:linear-gradient(145deg,#fff0f5,#ffe1ec); }
/* 搜索框（带图标、无文字提示）：精选答疑 + 历史答疑通用 */
.searchbox { position:relative; flex:1 1 auto; min-width:0; display:flex; align-items:center; }
.searchbox .sic { position:absolute; left:12px; top:0; bottom:0; margin:auto 0; width:16px; height:16px; color:#b7b7c0; pointer-events:none; }
.searchbox input { width:100%; box-sizing:border-box; height:44px; padding:0 12px 0 36px; border:1px solid #ececf1; border-radius:12px; font-size:14px; outline:none; background:#fff; color:#333; }
.searchbox input:focus { border-color:#fb7299; }
.searchbox input::-webkit-search-cancel-button { -webkit-appearance:none; }
.histsearch { margin:0 0 10px; }
/* 历史答疑：分页 */
.qapager { display:flex; align-items:center; justify-content:center; gap:14px; margin:14px 0 2px; }
.qapager .pgbtn { border:1px solid #ececf1; background:#fff; color:#333; border-radius:10px; padding:7px 14px; font-size:13px; font-family:inherit; }
.qapager .pgbtn:disabled { opacity:.45; }
.qapager .pgtxt { font-size:12.5px; color:#9a9aa2; }
/* ============ 图标统一（线性 SVG 风格） ============ */
.coming-ico { width:54px; height:54px; margin:0 auto 6px; border-radius:18px; background:linear-gradient(135deg,#fff0f5,#ffe3ec); color:#fb7299; display:flex; align-items:center; justify-content:center; }
.coming-ico svg { width:28px; height:28px; }
.coming b { font-size:16.5px; }
.mitem .mi { width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center; color:#fb7299; }
.mitem .mi svg { width:22px; height:22px; }
.mitem.danger .mi { color:#d33; }
.done-ok { width:60px; height:60px; border-radius:50%; background:linear-gradient(135deg,#fb7299,#ff9db6); color:#fff; display:inline-flex; align-items:center; justify-content:center; box-shadow:0 8px 20px rgba(251,114,153,.28); }
.done-ok svg { width:32px; height:32px; }
.vrow .lk svg { width:14px; height:14px; display:block; }
/* ============ 正式学生端 · 批改页 ============ */
.hw-tabs { display:flex; gap:8px; margin-bottom:12px; }
.hw-tabs button { position:relative; flex:1; padding:10px 0; border:1px solid rgba(0,0,0,.05); border-radius:18px; background:#fff; color:#333; font-size:14px; font-weight:600; box-shadow:0 2px 10px rgba(20,20,40,.05); }
.hw-tabs button.on { background:#fb7299; color:#fff; border-color:#fb7299; }
.hw-tabs .tri2 { display:none; }
/* 「批改记录」子标签红点：老师有新的批改还没看过时亮 */
.hw-tabs .hwtab-dot { position:absolute; top:5px; right:12px; width:8px; height:8px; border-radius:50%; background:#f5222d; box-shadow:0 0 0 2px #fff; }
.hw-tabs button.on .hwtab-dot { box-shadow:0 0 0 2px #fb7299; }
.hw-sub { display:none; }
.hw-sub.on { display:block; }
.hwline { display:flex; justify-content:flex-end; margin-bottom:10px; }
.hwlist { display:flex; flex-direction:column; gap:10px; }
.hwcard { display:block; background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:16px; padding:14px 15px; box-shadow:0 4px 14px rgba(30,25,60,.05); }
.hwcard.open { box-shadow:none; }
.hwcard:active { background:#fff7fa; }
.hw-tt { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.hw-tt b { font-size:15px; color:#18181b; flex:1; min-width:0; }
.hwk { font-style:normal; font-size:11px; color:#97979f; border:1px solid #e3e5ea; border-radius:10px; padding:2px 8px; white-space:nowrap; }
.hwk.hw-done { color:#16a34a; border-color:#cdeed4; background:#f0fbf2; }
.hwk.hw-wait { color:#d97706; border-color:#f6d6a0; background:#fff6e8; }
.hwdim { font-size:11.5px; color:#b3b3bc; margin-top:6px; display:block; }
.hwscore { margin-top:8px; font-size:13px; color:#333; }
.hwscore b { color:#e0245e; font-size:15px; }
.hwbody { margin:10px 0 0; font-size:13.5px; color:#3a3a44; line-height:1.8; white-space:normal; }
.hwans { margin-top:14px; }
.hwans textarea { width:100%; box-sizing:border-box; border:1px solid #e2e2e8; border-radius:14px; padding:12px; font-size:14px; background:#fff; color:#222; outline:none; line-height:1.7; font-family:inherit; resize:vertical; }
.hwans textarea:focus { border-color:#fb7299; box-shadow:0 0 0 3px rgba(251,114,153,.12); }
.hwans .abtn { margin-top:10px; width:100%; background:#fb7299; color:#fff; border-color:#fb7299; }
.hw-back { margin-bottom:8px; }
.hw-back a { font-size:13px; color:#fb7299; }
.hwr { background:#f9f9fb; border-radius:12px; padding:12px 14px; margin-top:12px; }
.hwr-top { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.hwr-top b { font-size:14px; color:#18181b; }
.hwr-top .hwdim { margin-top:0; }
.hwc { margin:8px 0 0; font-size:13px; color:#55555e; line-height:1.7; white-space:pre-wrap; }
.hwa { margin:8px 0 0; font-size:13px; color:#333; line-height:1.7; white-space:pre-wrap; border-top:1px dashed #ececf0; padding-top:8px; }
.hwa .hwdim { display:inline; margin-left:6px; }
/* 批改 v2：一题一卡（独立提交） */
.hwbatch { display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; margin:0 0 10px; }
.hwbatch b { font-size:15px; color:#18181b; }
.hwbatch .hwdim { margin-top:0; }
.hwq { background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:16px; padding:14px 15px; margin-bottom:12px; box-shadow:0 4px 14px rgba(30,25,60,.05); }
.hwq .hw-tt b { font-size:14.5px; }
.hwstem { margin:10px 0 0; font-size:14px; color:#18181b; line-height:1.8; white-space:pre-wrap; word-break:break-word; overflow-wrap:anywhere; }
.hwmy { margin:10px 0 0; font-size:13.5px; color:#3a3a44; line-height:1.8; white-space:pre-wrap; word-break:break-word; overflow-wrap:anywhere; background:#f9f9fb; border-radius:12px; padding:10px 12px; }
.hwta { width:100%; box-sizing:border-box; margin-top:10px; border:1px solid #e2e2e8; border-radius:14px; padding:12px; font-size:14px; background:#fff; color:#222; outline:none; line-height:1.7; font-family:inherit; resize:vertical; }
.hwta:focus { border-color:#fb7299; box-shadow:0 0 0 3px rgba(251,114,153,.12); }
.hwqbar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:10px; }
.hwqbar .hwdim { margin-top:0; }
.hwqbar .abtn { padding:9px 22px; background:#fb7299; color:#fff; border-color:#fb7299; border-radius:18px; font-weight:600; }
.hwqbar .abtn:disabled { opacity:.5; }
.hwqbar .abtn.subone { padding:7px 16px; border-radius:16px; font-size:13px; }
.hwallbar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:4px 0 16px; }
.hwallbar .allbtn { padding:10px 26px; background:#fb7299; color:#fff; border-color:#fb7299; border-radius:20px; font-weight:600; }
.hwallbar .allbtn:disabled { opacity:.6; }
.hwallbar .hwdim { margin-top:0; }

/* 批改记录：试卷卡片 + 未读红点 */
.hwrec { display:block; background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:16px; padding:14px 15px; box-shadow:0 4px 14px rgba(30,25,60,.05); }
.hwrec:active { background:#fff7fa; }
.hwrec-new { margin-top:8px; font-size:12px; color:#e0245e; font-weight:600; }
.hwdot { display:inline-block; flex:0 0 auto; width:8px; height:8px; border-radius:50%; background:#ff3b5c; margin-left:auto; box-shadow:0 0 0 3px rgba(255,59,92,.12); }
/* 批改记录目录卡 v2：标签组右对齐（空间不足换行后整行也贴右）；红点并入标签组，顶右交给 .hwtags */
.hwrec .hw-tt > .hwtags { display:flex; align-items:center; gap:6px; flex:0 0 auto; margin-left:auto; }
.hwrec .hwtags .hwdot { margin-left:2px; }

/* 批改记录 v3：折叠目录 + 搜索 */
.hwsearch { position:sticky; top:0; z-index:3; display:flex; align-items:center; gap:8px; padding:0 0 8px; background:#f6f5fa; }
.hwsi { flex:1; min-width:0; border:1px solid #e6e6ee; border-radius:16px; background:#fff; padding:10px 14px; font-size:14px; color:#222; outline:none; font-family:inherit; box-shadow:0 2px 10px rgba(20,20,40,.04); }
.hwsi:focus { border-color:#fb7299; box-shadow:0 0 0 3px rgba(251,114,153,.12); }
.hwsc { flex:0 0 auto; width:30px; height:30px; border:0; border-radius:50%; background:#eceaf2; color:#8a8a94; font-size:13px; line-height:1; padding:0; }
.hwsc[hidden] { display:none; }
.hwcap { margin:-4px 0 8px; }
.hwsum { font-size:12px; color:#97979f; margin:0 0 8px 2px; }
.hwrec-list { display:flex; flex-direction:column; gap:10px; }
.hwrec.open { border-bottom-left-radius:6px; border-bottom-right-radius:6px; }
.hwopen { margin:-10px 0 0; padding:14px 12px 2px; background:#fbfbfd; border:1px solid rgba(0,0,0,.05); border-top:0; border-radius:0 0 16px 16px; }
.hwopen[hidden] { display:none; }
.hwopen .empty-line { padding:22px 12px; }
.hwopen .hwq { box-shadow:none; border-color:#ececf2; margin-bottom:10px; }
.hwopen .hwq:last-child { margin-bottom:8px; }
.hwx { flex:0 0 auto; font-size:12px; color:#c2c2cc; }
.hwhl { background:#ffe9a8; color:#7a4a00; border-radius:3px; padding:0 1px; }
.hwq.hwhit { border-color:#fb7299; box-shadow:0 3px 12px rgba(251,114,153,.14); }

/* 批改记录 v3.1：展开题卡分区（题目 / 我的答案 / 老师批改）+ 尺寸收紧 */
.hwopen { padding:10px 8px 4px; }
.hwopen .hwq { padding:10px 12px; margin-bottom:6px; border-radius:12px; }
.hwopen .hwq:last-child { margin-bottom:4px; }
.hwopen .hw-tt { gap:6px; }
.hwopen .hw-tt b { font-size:13.5px; }
/* 只读卡标题（第 N 题题目）与段落小标签 .seg 同规格：11px / 灰 #a6a6b0 / 半粗，独占一行 */
.hwopen .hw-tt.hw-tt-v2 b { flex:0 0 100%; font-size:11px; font-weight:600; color:#a6a6b0; letter-spacing:.4px; line-height:1.4; }
.hwopen .hwk { font-size:10.5px; padding:1px 7px; }
.seg { display:block; font-size:11px; font-weight:600; color:#a6a6b0; letter-spacing:.4px; line-height:1.4; margin-top:8px; }
.hwopen .hwstem { margin-top:3px; padding-bottom:8px; border-bottom:1px dashed #ececf0; font-size:13.5px; line-height:1.7; }
.hwopen .hwmy { margin-top:3px; padding:8px 10px; font-size:13px; line-height:1.7; background:#f7f7fa; border-left:3px solid #cfcfda; border-radius:0 10px 10px 0; }
.hwopen .hwr { margin-top:8px; padding:8px 11px 10px; background:#fff5f8; border-radius:10px; }
.hwopen .hwr-top { align-items:center; }
.hwopen .hwr-top .seg { margin-top:0; }
.hwopen .hwr-top b { font-size:15px; color:#e0245e; }
.hwopen .hwa { margin:6px 0 0; padding-top:6px; font-size:13px; line-height:1.7; border-top:1px dashed #f2d8e1; }
.hwpend { margin:6px 0 0; padding:6px 9px; font-size:12px; color:#b3b3bc; background:#f7f7fa; border-radius:8px; }

/* 批改记录 v3.2：长评语强制换行（修「后台回复字数多会溢出卡片」）+ 目录卡精简后的收尾 */
/* 背景：html/body/#view 有 touch-action:pan-y（横向不可拖），长英文/链接会把内容顶出卡片并卡住 */
.hwopen .hwq { overflow-wrap:anywhere; }      /* 展开区兜底：任何后代都能断行 */
.hwr { overflow-wrap:anywhere; }
.hwa { word-break:break-word; overflow-wrap:anywhere; }
.hwc { word-break:break-word; overflow-wrap:anywhere; }
.hwopen .hwr-top { flex-wrap:wrap; }          /* 得分过长时换行，不再撑宽 */

/* ============ 首页 v12：倒计时卡 / 班次介绍卡 / 讲义浮层 ============ */
.cta .cctext { flex:1; min-width:0; }
.cta .ccnum { display:flex; align-items:baseline; gap:5px; white-space:nowrap; color:#c23363; }
.cta .ccnum .ccl { font-style:normal; font-size:15px; font-weight:600; }
.cta .ccnum i { font-style:normal; font-size:22px; font-weight:800; line-height:1; }
.cta .ccnum .ccu { font-style:normal; font-size:15px; font-weight:600; }
.course .cname { flex:0 0 100px; align-items:center; text-align:center; background:linear-gradient(145deg,#f25584,#d81f63); color:#fff; }
.course .cname b { color:#fff; font-size:17px; font-weight:800; letter-spacing:1px; }
.course .cbody { padding:16px 14px; }
.course .cbody .pt { margin:0 0 6px; font-size:15.5px; font-weight:700; color:#18181b; line-height:1.45; }
.course .cbody .ps { margin:0; font-size:12px; color:#8a8a92; line-height:1.7; }
.ibody { white-space:pre-line; }
.panlink { background:#f6f5fa; border:1px dashed #d5d8e0; border-radius:12px; padding:11px 12px; font-size:12px; color:#18181b; word-break:break-all; line-height:1.7; margin:2px 0 12px; }
#panMask .sheet { max-width:340px; }

/* ============ 套课页 v14：粉卡 hero / 双 Tab / 科目折叠课时 ============ */
.bhero { position:relative; overflow:hidden; border-radius:20px; padding:22px 18px 20px; color:#fff;
  background:linear-gradient(135deg,#ff8aae 0%,#ff5f8d 55%,#e8427a 100%);
  box-shadow:0 10px 26px rgba(224,66,120,.28); }
.bhero::after { content:''; position:absolute; right:-36px; top:-42px; width:132px; height:132px; border-radius:50%; background:rgba(255,255,255,.16); }
.bhero::before { content:''; position:absolute; right:52px; bottom:-60px; width:104px; height:104px; border-radius:50%; background:rgba(255,255,255,.10); }
.bht { position:relative; z-index:1; margin:0; font-size:22px; font-weight:800; letter-spacing:.5px; }
.bhd { position:relative; z-index:1; margin:8px 0 0; font-size:13px; line-height:1.7; color:rgba(255,255,255,.95); }
.btabs { display:flex; margin:16px 0 0; border-bottom:2px solid #f4e7ed; }
.btabs button { flex:1; padding:11px 0 10px; border:0; background:none; cursor:pointer; font-size:15px; font-weight:600;
  color:#9a9aa2; border-bottom:2px solid transparent; margin-bottom:-2px; }
.btabs button.on { color:#e0245e; border-bottom-color:#fb7299; }
.bpane { display:none; padding:16px 2px 2px; }
.bpane.on { display:block; }
.bintro { font-size:15px; color:#3f3f46; line-height:1.95; word-break:break-word; }
.bintro.dim { color:#b9b9c2; }
.subjs { display:flex; flex-direction:column; gap:10px; }
.subj { background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:16px; overflow:hidden; box-shadow:0 4px 14px rgba(30,25,60,.04); }
.subj-hd { width:100%; display:flex; align-items:center; gap:12px; padding:14px 14px; border:0; background:#fff;
  cursor:pointer; text-align:left; font-family:inherit; }
.subj-hd .sno { flex:0 0 auto; width:40px; height:40px; border-radius:12px; background:linear-gradient(145deg,#fff0f5,#ffdce7);
  color:#c23363; font-weight:800; font-size:15px; display:flex; align-items:center; justify-content:center; }
.subj-hd .sinfo { flex:1; min-width:0; }
.subj-hd .sinfo b { display:block; font-size:15px; color:#18181b; }
.subj-hd .sinfo em { display:block; margin-top:4px; font-style:normal; font-size:11.5px; color:#9aa0ab; line-height:1.6; }
.subj-hd .sarr { flex:none; font-style:normal; color:#c3c3cc; font-size:16px; transition:transform .18s ease; }
.subj.open .subj-hd { background:#fffafc; }
.subj.open .subj-hd .sarr { transform:rotate(90deg); color:#fb7299; }
.subj-bd { display:none; border-top:1px dashed #f1e4eb; background:#fdfafb; }
.subj.open .subj-bd { display:block; animation:pf .15s ease; }
.bl { display:flex; align-items:center; gap:10px; padding:12px 14px; }
.bl + .bl { border-top:1px dashed #f0e8ee; }
.bl .bl-no { flex:none; width:22px; height:22px; border-radius:50%; background:#efeaf3; color:#9a9aa2; font-size:11px;
  display:flex; align-items:center; justify-content:center; }
.bl.ok .bl-no { background:#34c759; color:#fff; }
.bl .bl-t { flex:1; min-width:0; font-size:14px; color:#333; line-height:1.5; }
.bl .bl-t em { font-style:normal; font-size:10px; color:#fb7299; border:1px solid #fb7299; border-radius:8px; padding:0 5px; margin-left:6px; }
.bl .bl-t em.audio { color:#8a63d2; border-color:#8a63d2; }
.bl.lock .bl-t { color:#9a9aa2; }
.bl .bl-r { flex:none; min-width:16px; text-align:right; color:#9a9aa2; font-size:11px; }
.bl .bl-r .lk { display:inline-flex; }
.bl .bl-r svg { width:16px; height:16px; color:#c3c3cc; }
.bl .bl-r .ok { color:#2aa95b; font-weight:800; font-size:15px; }
.bl .bl-r .go { color:#fb7299; font-size:18px; font-weight:700; }
.bl.flash { background:#fff0f5; }
.lesson .linfo .cdmeta { display:block; margin-top:4px; font-size:11.5px; color:#b6b9c2; }
.lesson .linfo em + .cdmeta { margin-top:6px; }

/* ============ 续学卡 v20：上次学到 / 继续学习 + 课时行“上次学到”标记 ============ */
.rescard { position:fixed; left:16px; right:16px; max-width:620px; margin:0 auto;
  bottom:calc(env(safe-area-inset-bottom) + 62px); z-index:32;
  display:flex; align-items:center; gap:12px; padding:12px 12px 12px 16px;
  background:#fff; border:1px solid rgba(0,0,0,.06); border-radius:18px;
  box-shadow:0 12px 30px rgba(30,25,60,.16); }
.rescard:active { transform:scale(.985); }
.rc-l { flex:1; min-width:0; }
.rc-l b { display:block; font-size:10.5px; font-weight:600; color:#fb7299; letter-spacing:1px; }
.rc-l em { display:block; margin-top:3px; font-style:normal; font-size:14px; font-weight:600; color:#18181b;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rc-l .rc-s { display:block; margin-top:2px; font-style:normal; font-size:10.5px; color:#a6a6b0;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rc-go { flex:none; display:inline-flex; align-items:center; gap:6px; padding:10px 15px; border:0; border-radius:22px;
  background:linear-gradient(135deg,#fb7299,#f25584); color:#fff; font-size:13.5px; font-weight:600; cursor:pointer; }
.rc-go:active { opacity:.85; }
.rcpad { height:116px; }
.bl.last { background:#fff7fa; }
.bl .ltag { display:inline-block; padding:3px 9px; border-radius:11px; background:#fb7299; color:#fff;
  font-size:10.5px; font-weight:600; white-space:nowrap; }

/* ============ 续学卡 v22 微调：按钮放大 / 右上角关闭 × / 首次淡入 ============ */
.rescard { padding:13px 12px 13px 16px; animation:rcin .22s ease; }
.rc-go { gap:7px; padding:12px 22px; font-size:15px; font-weight:700; border-radius:24px; min-width:118px; justify-content:center; margin-right:36px; }
.rc-go svg { width:19px; height:19px; }
.rc-x { position:absolute; top:8px; right:8px; width:26px; height:26px; padding:0; border:0; border-radius:50%;
  background:#f2f2f6; color:#9aa0ab; font-size:16px; line-height:1; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.rc-x:active { background:#fb7299; color:#fff; }
.rc-l { padding-right:14px; }
@keyframes rcin { from { opacity:0; transform:translateY(6px) } to { opacity:1; transform:none } }

/* ============ v24 横滑手势所有权：告诉浏览器横向交给页面 JS，纵向保持原生滚动 ============ */
html, body, #view { touch-action: pan-y; overscroll-behavior-x: none; }

/* ============ 播放器 v26：长按3x / 全屏右侧选集 / 音频面板 ============ */
.wstage .audio-box { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background:#14141a; }
.wstage .au { width:86%; max-width:600px; }
.wstage .wfull { position:absolute; top:8px; right:8px; z-index:9; width:40px; height:40px; border:0; border-radius:11px;
  background:rgba(0,0,0,.45); color:#fff; font-size:18px; line-height:1; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.wstage .wfull:active { background:#fb7299; }
.wstage .wboost { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:8; display:none;
  width:108px; height:108px; border-radius:50%; background:rgba(0,0,0,.58); color:#ffd23f; font-size:44px; font-weight:800;
  align-items:center; justify-content:center; pointer-events:none; letter-spacing:-1px; }
.wstage .wsel { display:none; position:absolute; right:0; top:50%; transform:translateY(-50%); z-index:9; border:0;
  padding:16px 7px; border-radius:12px 0 0 12px; background:rgba(15,15,20,.55); color:#fff; font-size:13px; font-weight:600;
  cursor:pointer; writing-mode:vertical-rl; letter-spacing:2px; }
.wstage.fs .wsel { display:flex; align-items:center; }
.wstage .wside { display:none; position:absolute; top:0; right:0; bottom:0; z-index:11; width:min(300px,78%);
  flex-direction:column; background:rgba(18,18,24,.9); color:#fff; }
.wstage.fs .wside.show { display:flex; }
.wside-head { display:flex; align-items:center; gap:8px; padding:12px 14px; border-bottom:1px solid rgba(255,255,255,.12); }
.wside-head b { font-size:15px; }
.wside-head .dim { margin-left:auto; font-size:11px; color:rgba(255,255,255,.55); }
.wside-x { border:0; background:rgba(255,255,255,.12); color:#fff; width:26px; height:26px; border-radius:50%; font-size:15px;
  line-height:1; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.wside-list { flex:1; overflow-y:auto; padding:6px 4px 18px; }
.srow { display:flex; align-items:center; gap:9px; padding:11px 9px; cursor:pointer; font-size:13.5px; border-bottom:1px dashed rgba(255,255,255,.07); }
.srow i { flex:none; width:20px; height:20px; border-radius:50%; background:rgba(255,255,255,.15); color:#fff; font-style:normal;
  font-size:11px; display:inline-flex; align-items:center; justify-content:center; }
.srow i.ok { background:#34c759; }
.srow .vt { flex:1; min-width:0; color:#eee; line-height:1.4; }
.srow .vt em { font-style:normal; color:#fb7299; border:1px solid #fb7299; border-radius:8px; font-size:10px; padding:0 4px; margin-left:6px; }
.srow .vt em.audio { color:#b58df0; border-color:#b58df0; }
.srow .p { flex:none; font-size:10px; color:rgba(255,255,255,.5); }
.srow.cur { background:rgba(251,114,153,.22); border-radius:9px; }
.srow.lock { opacity:.55; }
.wstage:fullscreen, .wstage:-webkit-full-screen { background:#000; border-radius:0; }
.wstage:fullscreen video, .wstage:-webkit-full-screen video { width:100%; height:100%; object-fit:contain; }

/* ============ 播放器 v27：选集常驻 / 侧栏随时可开 / 静音开声提示 / 全屏退出恢复 ============ */
.wstage .wsel { display:flex; }
.wstage .wside.show { display:flex; }
.wunmute { position:absolute; left:50%; bottom:56px; transform:translateX(-50%); z-index:9; display:flex; align-items:center;
  gap:6px; padding:9px 16px; border:0; border-radius:20px; background:rgba(0,0,0,.62); color:#fff; font-size:13px; cursor:pointer; }

/* ============ 播放器 v28：自绘控制条（无原生下载/投屏等杂按钮）· 点击画面切换播放 · 全屏容器带选集 ============ */
.wstage { background:#0c0c10; }
.wstage video.mv { width:100%; height:100%; object-fit:contain; background:#000; cursor:pointer; }
.wbar { position:absolute; left:0; right:0; bottom:0; z-index:12; display:flex; align-items:center; gap:10px;
  padding:6px 10px 8px; color:#fff;
  background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.62) 70%); }
.wbar .wtgl { flex:none; width:36px; height:34px; border:0; background:none; color:#fff; padding:0;
  display:flex; align-items:center; justify-content:center; cursor:pointer; }
.wbar .wtgl svg { display:block; }
.wstage:not(.playing) .wbar .ic-s { display:none; }
.wstage.playing .wbar .ic-p { display:none; }
.wbar .wt { flex:none; font-size:12px; color:#fff; font-variant-numeric:tabular-nums; }
.wbar .wseek { flex:1; position:relative; height:22px; cursor:pointer; touch-action:none; }
.wseek .wsb { position:absolute; left:0; top:50%; transform:translateY(-50%); height:4px; width:100%;
  border-radius:3px; background:rgba(255,255,255,.25); pointer-events:none; }
.wseek .wsf { position:absolute; left:0; top:50%; transform:translateY(-50%); height:4px; width:0%;
  border-radius:3px; background:linear-gradient(90deg,#fb7299,#ff8fb2); pointer-events:none; }
.wbar .wfull { flex:none; position:static; width:auto; height:auto; min-width:36px; padding:4px 4px; border:0;
  background:none; border-radius:8px; color:#fff; font-size:19px; line-height:1; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.wstage .wfull:active { background:rgba(255,255,255,.16); }
.wbigplay { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:10; width:76px; height:76px;
  border:0; border-radius:50%; background:rgba(0,0,0,.45); color:#fff; display:flex; align-items:center; justify-content:center;
  cursor:pointer; transition:opacity .18s ease; padding:0 0 0 6px; }
.wstage.playing .wbigplay { opacity:0; pointer-events:none; }
.wstage:fullscreen video, .wstage:-webkit-full-screen video { object-fit:contain; }
.wstage:fullscreen .wbar, .wstage:-webkit-full-screen .wbar { padding-bottom:calc(10px + env(safe-area-inset-bottom)); }

/* ============ 播放器 v30：全屏铺满/退出全屏/内置倍速/选集外点收起/字号加大 ============ */
.wstage:fullscreen, .wstage:-webkit-full-screen { width:100% !important; height:100% !important; max-width:none;
  aspect-ratio:auto; background:#000; border-radius:0; }
/* iOS Safari 等不支持元素全屏：伪全屏（铺满屏幕、保留自绘控制条，倍速/选集照常可用） */
.wstage.fs-fake { position:fixed; top:0; left:0; right:0; bottom:0; width:100vw; height:100vh; height:100dvh;
  max-width:none; aspect-ratio:auto; background:#000; border-radius:0; z-index:9999; }
.wstage.fs-fake video.mv { width:100%; height:100%; max-height:none; object-fit:contain; }
.wstage.fs-fake .wbar { padding-bottom:calc(10px + env(safe-area-inset-bottom)); }
body.wfs-lock { overflow:hidden; }
.wexit { position:absolute; left:10px; top:10px; z-index:13; display:none; align-items:center; gap:5px; padding:8px 13px;
  border:0; border-radius:11px; background:rgba(0,0,0,.55); color:#fff; font-size:15px; font-weight:600; cursor:pointer; }
.wstage.fs .wexit { display:flex; }
.wbar .wspeed { flex:none; min-width:52px; padding:6px 8px; border:0; border-radius:9px; background:rgba(255,255,255,.14);
  color:#fff; font-size:16px; font-weight:700; cursor:pointer; }
.wbar .wt { font-size:14.5px; }
.wbar .wtgl svg { width:22px; height:22px; }
.wbar .wseek { height:26px; }
.wseek .wsb, .wseek .wsf { height:6px; border-radius:4px; }
.wstage .wfull { font-size:22px; min-width:40px; }
.wbigplay { width:88px; height:88px; }
.wbigplay svg { width:44px; height:44px; }
.wstage .wsel { font-size:16px; letter-spacing:3px; padding:22px 9px; }
.wside-head b { font-size:18px; }
.wside-head .dim { font-size:13px; }
.wside-x { width:32px; height:32px; font-size:19px; }
.srow { padding:14px 11px; font-size:16px; }
.srow i { width:24px; height:24px; font-size:13px; }
.wctrl .rates a { font-size:14px; padding:6px 11px; }
/* ============ 播放器 v35：版本角标 / X5 条件注入 / 封 m3u8 直连防劫持 ============ */
.wlegacy { display:inline-block; margin-top:10px; padding:8px 14px; border:0; border-radius:8px;
  background:#fff; color:#c0392b; font-size:14px; font-weight:600; cursor:pointer; }
/* ============ 播放器 v36：全屏铺满强化 / 倍速弹层 0.5-3x / 连播保持倍速 ============ */
.wstage:fullscreen video, .wstage:-webkit-full-screen video, .wstage.fs video {
  width:100% !important; height:100% !important; max-width:none !important; max-height:none !important;
  object-fit:contain; }
.wrate-wrap { position:relative; flex:none; }
.wratebox { position:absolute; right:0; bottom:calc(100% + 10px); z-index:18; display:none; flex-direction:column;
  min-width:90px; padding:6px; gap:2px; background:rgba(16,16,20,.96); border:1px solid rgba(255,255,255,.16);
  border-radius:12px; box-shadow:0 8px 20px rgba(0,0,0,.45); }
.wratebox a { color:#fff; font-size:15px; text-align:center; padding:8px 6px; border-radius:8px; cursor:pointer; }
.wratebox a.on { background:#fb7299; font-weight:700; }
/* ============ 背诵 v37：hash 三级路由 / 题集按钮置顶 / resume 加高 / 卡片按题进度+字号 ============ */
.rc-brow { display:flex; justify-content:flex-end; margin:2px 0 9px; }
.rc-bt { display:inline-flex; align-items:center; padding:8px 15px; border:0; border-radius:17px;
  background:linear-gradient(135deg,#fb7299,#f25584); color:#fff; font-size:13.5px; font-weight:600; font-style:normal; }
.rc-bt.fin { background:#e7f6ee; color:#2aa95b; }
.rc-resume { display:flex; flex-direction:column; align-items:flex-start; gap:4px;
  background:linear-gradient(135deg,#fff0f5,#ffe9f0); border:1px solid rgba(251,114,153,.22);
  border-radius:14px; padding:16px 15px; margin-bottom:12px; cursor:pointer; }
.rc-resume b { font-size:16px; color:#c23363; }
.rc-resume span { font-size:13.5px; color:#b06078; line-height:1.55; }
.rc-ch { padding:10px 12px; }
.rc-ch .ch-info b { font-size:13px; }
.rl-play .rcta { display:flex; align-items:center; justify-content:center; margin:4px 0 12px; padding:0;
  background:none; border:0; box-shadow:none; border-radius:0; min-height:0; }
.rl-play .rcta .primary, .rl-play .rcta button.primary { width:auto; padding:12px 30px; border-radius:24px;
  background:#fb7299; color:#fff; border:0; font-size:15.5px; font-weight:600; }
.rl-play .layers .pill { font-size:calc(18px * var(--rcf,1)); font-weight:600; padding:8px 20px; }
.rl-play .layers .concrow { font-size:calc(16px * var(--rcf,1)); line-height:1.75; }
.rl-play .layers .concrow b { font-size:calc(12px * var(--rcf,1)); padding:3px 10px; }
.rl-play .layers .concrow span { font-size:calc(16px * var(--rcf,1)); }
.rl-play .layers .mustrow { font-size:calc(16px * var(--rcf,1)); line-height:1.7; }
.rl-play .layers .mustrow div > span { font-weight:600; color:#222; }
.rl-play .layers .mustrow .opt { font-size:calc(13px * var(--rcf,1)); font-weight:400; color:#888; }
.rl-play .layers .no { font-size:calc(16px * var(--rcf,1)); }
.wtag { position:absolute; right:10px; bottom:58px; z-index:9; pointer-events:none; padding:2px 8px; border-radius:6px;
  background:rgba(0,0,0,.32); color:rgba(255,255,255,.62); font-size:11px; letter-spacing:.5px; }
.wstage.fs .wtag { bottom:60px; }





/* ===== v39 刷题 · 真实题库（科目卷分组 / 免费·VIP / 解锁引导 / 错题本） ===== */
.qz-top { display: flex; justify-content: space-between; align-items: center; margin: 2px 0 8px; }
.qz-top b { font-size: 15px; color: #18181b; }
.qz-top span { font-size: 11px; color: #9a9aa2; }
.qz-subj { display: flex; align-items: baseline; justify-content: space-between; margin: 8px 2px 3px; }
.qz-subj em { font-style: normal; font-weight: 800; color: #c23363; font-size: 14px; }
.qz-subj span { font-size: 11px; color: #b0aab6; }
.qzrow { display: flex; align-items: center; gap: 8px; }
.qzrow .sn { flex: 1; min-width: 0; }
.qztag { display: inline-flex; align-items: center; gap: 4px; font-style: normal; font-size: 10px; font-weight: 700; border-radius: 6px; padding: 2px 7px; flex: none; }
.qztag svg { width: 11px; height: 11px; }
.qztag.free { color: #1e9e57; background: #e7f8ee; }
.qztag.vip, .qztag.got { color: #b45309; background: #fff2e0; }
.qztag.unk { color: #8a8a92; background: #f1f0f3; }
.qztap { cursor: pointer; }
.qztap:active { transform: scale(.95); }
.qzset.lock .sn, .qzset.lock .sd { color: #9a9aa2; }
.qzgate { margin-top: 44px; text-align: center; padding: 0 18px; }
.qzgate em { font-style: normal; font-size: 44px; display: block; }
.qzgate b { display: block; margin-top: 10px; font-size: 17px; color: #18181b; }
.qzgate p { margin: 8px auto 18px; font-size: 13px; color: #8a8a92; line-height: 1.7; max-width: 300px; }
.qzgate .qzk { max-width: 320px; margin: 0 auto 8px; display: block; }
.qzw .qztop { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.qzw .qztop .dim { margin: 0; font-weight: 400; }
.qzw button.qzk { margin-top: 12px; }

/* ===== v40 刷题 · 选中后确定判分 / 解析卡 / SVG 图标替代 emoji ===== */
.qz-note { margin: 8px 2px 0; font-size: 11px; color: #9a9aa2; }
.qz-fb .ok svg, .qz-fb .no svg { vertical-align: -3px; margin-right: 5px; }
.qz-exp { background: #fff; border: 1px solid rgba(0,0,0,.05); border-left: 3px solid #fb7299; border-radius: 14px; padding: 12px 13px; margin-top: 10px; text-align: left; }
.qz-exp .et { display: block; font-size: 11px; font-weight: 700; color: #c23363; letter-spacing: .5px; }
.qz-exp p { margin: 6px 0 0; font-size: 13px; line-height: 1.75; color: #55555e; }
.qzk[disabled] { background: #d9d6de; color: #fff; pointer-events: none; }
.qzopt { transition: transform .12s ease; }
.qzopt:active { transform: scale(.985); }
.qzgate-badge { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 700; color: #c23363;
  border: 1px solid rgba(251,114,153,.35); background: #fff0f5; border-radius: 999px; padding: 5px 13px; }
.qzgate-badge svg { width: 14px; height: 14px; }
.qzgate b { margin-top: 14px; }

/* ===== v42 刷题 · 头部压缩为一行 + 已答点条 + 答题沉浸吸底 ===== */
.qz-hd { align-items: center; gap: 8px; }
.qz-hd .qz-title { flex: 1; min-width: 0; margin: 0; font-size: 15px; font-weight: 700; color: #18181b; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qz-hd .qz-idx { flex: none; font-size: 12px; font-weight: 600; color: #9a9aa2; }
.qz-dots { display: flex; gap: 5px; margin: 0 2px 12px; }
.qz-dots i { flex: 1; height: 4px; border-radius: 2px; background: #e8e6ee; }
.qz-dots i.cur { background: #fb7299; }
.qz-dots i.ok { background: #34c759; }
.qz-dots i.no { background: #e5484d; }
.qz-card p { font-size: 16px; line-height: 1.75; }
#app.qz-play .tabbar { display: none; }
#app.qz-play .view { padding-bottom: calc(env(safe-area-inset-bottom) + 100px); }
.qz-bar { position: fixed; left: 50%; right: 0; transform: translateX(-50%); bottom: 0; z-index: 46; width: 100%; max-width: 640px;
  padding: 12px 14px calc(env(safe-area-inset-bottom) + 12px); display: none;
  background: linear-gradient(180deg, rgba(246,245,250,0), #f6f5fa 36%); }
.qz-bar .qz-barin { max-width: 610px; margin: 0 auto; }
.qz-bar .qzk { box-shadow: 0 6px 18px rgba(251,114,153,.24); }
.qz-bar .qzk[disabled] { box-shadow: none; }

/* ===== v43 刷题 · 操作栏改页内 sticky 吸底（修复按钮不显示） ===== */
.qz-foot { position: sticky; bottom: 0; z-index: 6; margin: 12px -14px 0;
  padding: 10px 14px calc(env(safe-area-inset-bottom) + 10px);
  background: linear-gradient(180deg, rgba(246,245,250,0), #f6f5fa 42%); }
.qz-foot .qzk { box-shadow: 0 6px 18px rgba(251,114,153,.22); }
.qz-foot .qzk[disabled] { box-shadow: none; }
#app.qz-play .view { padding-bottom: calc(env(safe-area-inset-bottom) + 26px); }

/* ============================================================
   播放器 v49 · B 站观感换皮（仅外观）
   保留 hls.js + MSE 防劫持内核、自绘控制条、选集面板与全部交互钩子；
   所有规则用 #wui 限定，避免影响 #infoLay / #introLay 等其它浮层。
   布局：视频 → 选集 → 标题 → 操作行；视频纯黑，页面白底。
   ============================================================ */
#wui { background:#fff; padding: calc(env(safe-area-inset-top) + 6px) 12px calc(env(safe-area-inset-bottom) + 22px); }
#wui .wui-top { padding: 2px 2px 10px; }
#wui .wui-top .backlink { border:0; background:none; padding:4px 2px; font-size:14px; color:#18191c; }
#wui .wui-top .backlink svg { color:#18191c; }
#wui .wui-top .nxt { font-size:13px; color:#fb7299; }

/* —— 视频舞台 —— */
#wui .wstage { position:relative; background:#000; border-radius:8px; aspect-ratio:16/9; overflow:hidden; }
#wui .wstage video.mv { width:100%; height:100%; max-height:none; object-fit:contain; background:#000; display:block; cursor:pointer; }
#wui .wstage .audio-box { position:absolute; inset:0; background:#0c0c10; display:flex; align-items:center; justify-content:center; }
#wui .wstage .au { width:88%; max-width:560px; }
#wui .wstage .audio-box .audio-inner { width:88%; max-width:560px; display:flex; flex-direction:column; gap:16px; }
#wui .wstage .audio-box .au { width:100%; max-width:none; }
#wui .wstage .arate { display:flex; justify-content:center; gap:6px; flex-wrap:wrap; }
#wui .wstage .arate a { color:#ddd; font-size:12px; line-height:1; padding:7px 10px; border-radius:999px;
  background:rgba(255,255,255,.08); cursor:pointer; -webkit-tap-highlight-color:transparent; }
#wui .wstage .arate a.on { background:#fb7299; color:#fff; font-weight:700; }
#wui .wstage:fullscreen, #wui .wstage:-webkit-full-screen { border-radius:0; aspect-ratio:auto; }
#wui .wstage.idle { cursor:none; }

/* —— 底部控制条（B 站：半透明渐变 + 白色进度 + 圆点） —— */
#wui .wbar { position:absolute; left:0; right:0; bottom:0; z-index:12; display:flex; align-items:center; gap:8px;
  padding:24px 12px calc(8px + env(safe-area-inset-bottom)); color:#fff;
  background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.42) 52%, rgba(0,0,0,.74) 100%);
  transition:opacity .22s ease; }
#wui .wstage.idle .wbar { opacity:0; pointer-events:none; }
#wui .wstage.idle .wexit { opacity:0; pointer-events:none; }
#wui .wbar .wtgl { flex:none; width:34px; height:34px; border:0; background:none; color:#fff; padding:0;
  display:flex; align-items:center; justify-content:center; cursor:pointer; }
#wui .wbar .wtgl svg { width:22px; height:22px; display:block; }
/* 播放/暂停合并为一个键：暂停只显示 ▶、播放只显示 ⏸（高优先级覆盖皮肤里的 display:block） */
#wui .wstage:not(.playing) .wbar .ic-s { display:none; }
#wui .wstage.playing .wbar .ic-p { display:none; }
#wui .wbar .wtime { flex:none; display:flex; align-items:center; gap:2px; font-size:12px; color:#fff;
  font-variant-numeric:tabular-nums; }
#wui .wbar .wtime .wt { font-size:12px; color:#fff; }
#wui .wbar .wtime .wsep { font-style:normal; opacity:.6; }
#wui .wbar .wtime .dur { opacity:.72; }
#wui .wbar .wseek { flex:1; position:relative; height:24px; cursor:pointer; touch-action:none; }
#wui .wseek .wsb { position:absolute; left:0; top:50%; transform:translateY(-50%); height:3px; width:100%;
  border-radius:2px; background:rgba(255,255,255,.22); pointer-events:none; }
#wui .wseek .wsb.buf { width:0; background:rgba(255,255,255,.42); }
#wui .wseek .wsf { position:absolute; left:0; top:50%; transform:translateY(-50%); height:3px; width:0;
  border-radius:2px; background:#fff; pointer-events:none; }
#wui .wseek .wsk { position:absolute; right:-6px; top:50%; transform:translateY(-50%); width:12px; height:12px;
  border-radius:50%; background:#fff; box-shadow:0 0 4px rgba(0,0,0,.5); opacity:0; transition:opacity .15s ease; }
#wui .wstage:not(.idle) .wseek .wsk { opacity:1; }
#wui .wbar .wrate-wrap { position:relative; flex:none; }
#wui .wbar .wspeed { min-width:auto; padding:5px 8px; border:0; border-radius:6px; background:none; color:#fff;
  font-size:13px; font-weight:600; cursor:pointer; }
#wui .wbar .wspeed b { font-weight:600; }
#wui .wbar .wspeed:active { background:rgba(255,255,255,.16); }
#wui .wbar .wselbtn { flex:none; display:inline-flex; align-items:center; gap:4px; height:30px; padding:0 9px;
  border:0; border-radius:6px; background:none; color:#fff; font-size:13px; cursor:pointer; }
#wui .wbar .wselbtn svg { width:16px; height:16px; }
#wui .wbar .wselbtn:active { background:rgba(255,255,255,.16); }
#wui .wbar .wfull { flex:none; width:34px; height:34px; min-width:auto; padding:0; border:0; background:none;
  color:#fff; display:flex; align-items:center; justify-content:center; border-radius:6px; cursor:pointer; }
#wui .wbar .wfull svg { width:20px; height:20px; }
#wui .wbar .wfull:active { background:rgba(255,255,255,.16); }

/* 倍速弹层 */
#wui .wratebox { min-width:78px; padding:4px; gap:2px; border-radius:8px;
  background:rgba(24,25,28,.95); border:1px solid rgba(255,255,255,.1); box-shadow:0 8px 24px rgba(0,0,0,.5); }
#wui .wratebox a { font-size:13px; padding:7px 10px; border-radius:5px; }
#wui .wratebox a.on { background:#fb7299; }

/* 居中大播放键 / 退出全屏 / 开声提示 / 3× 提示 */
#wui .wbigplay { width:64px; height:64px; padding:0 0 0 4px; background:rgba(0,0,0,.42); }
#wui .wbigplay svg { width:30px; height:30px; }
#wui .wexit { left:12px; top:12px; padding:6px 12px; border-radius:6px; background:rgba(0,0,0,.42); font-size:14px;
  transition:opacity .22s ease; }
#wui .wunmute { bottom:64px; padding:8px 15px; border-radius:6px; background:rgba(0,0,0,.66); font-size:13px; }
#wui .wboost { width:96px; height:96px; font-size:38px; }

/* —— 全屏右侧选集面板 —— */
#wui .wside { width:min(320px,80%); background:rgba(24,25,28,.97); }
#wui .wside-head { padding:14px 16px; border-bottom:1px solid rgba(255,255,255,.08); }
#wui .wside-head b { font-size:15px; }
#wui .wside-head .dim { font-size:12px; color:rgba(255,255,255,.5); }
#wui .wside-x { width:28px; height:28px; font-size:16px; background:rgba(255,255,255,.1); }
#wui .wside-list { padding:4px 0 16px; }
#wui .srow { padding:12px 16px; font-size:13.5px; border-bottom:1px solid rgba(255,255,255,.06); gap:10px; }
#wui .srow i { width:22px; height:22px; font-size:11px; background:rgba(255,255,255,.14); }
#wui .srow.cur { background:rgba(251,114,153,.16); border-radius:0; }
#wui .srow.cur i { background:#fb7299; }
#wui .srow .vt em { font-size:10px; }

/* —— 视频下方：选集 / 标题 / 操作行（白底，B 站信息区） —— */
#wui .wdir { background:#fff; border:0; border-radius:0; margin-top:0; box-shadow:none; overflow:hidden; }
#wui .wdir .dirh { display:flex; align-items:center; justify-content:space-between; padding:14px 2px 8px;
  border-bottom:0; }
#wui .wdir .dirh b { font-size:15px; font-weight:700; color:#18191c; }
#wui .wdir .dirh .cnt { float:none; margin:0; font-size:12px; color:#9499a0; }
#wui .vrow { padding:12px 2px; gap:12px; border-bottom:1px solid #f1f2f3; }
#wui .vrow.cur { background:none; }
#wui .vrow .seq { width:26px; height:26px; background:#f1f2f3; color:#61666d; font-size:12px; font-weight:600; }
#wui .vrow.cur .seq { background:#fb7299; color:#fff; }
#wui .vrow .seq.ok { background:#fb7299; color:#fff; }
#wui .vrow .vt { font-size:14px; color:#18191c; }
#wui .vrow.cur .vt { color:#fb7299; font-weight:600; }
#wui .vrow .vt em { font-size:10px; }
#wui .vrow .lk, #wui .vrow .p { font-size:12px; color:#9499a0; }
#wui .vrow .lk svg { width:15px; height:15px; }
#wui .redeemline { color:#9499a0; }

#wui .wmeta { background:#fff; border-radius:0; padding:14px 2px 4px; margin:0; }
#wui .wmeta h2 { margin:0; font-size:17px; font-weight:700; color:#18191c; line-height:1.5; }
#wui .wmeta .dim { margin:8px 0 0; font-size:12px; color:#9499a0; }

#wui .wctrl { display:flex; align-items:center; justify-content:space-between; background:#fff; border-radius:0;
  padding:12px 2px; margin:0; border-bottom:1px solid #f1f2f3; }
#wui .wctrl .auto { display:flex; align-items:center; gap:6px; font-size:13px; color:#61666d; }
#wui .wctrl .auto input { width:15px; height:15px; accent-color:#fb7299; }
#wui .wctrl .wctrl-cnt { font-size:12px; color:#9499a0; }

/* 窄屏：选集按钮只留图标，避免控制条拥挤 */
@media (max-width:380px) {
  #wui .wbar .wselbtn span { display:none; }
  #wui .wbar { gap:6px; }
}
/* 宽屏：内容居中收窄，避免桌面端视频拉满整屏 */
@media (min-width:768px) {
  #wui { padding-left:16px; padding-right:16px; }
  #wui > * { max-width:1000px; margin-left:auto; margin-right:auto; }
  #wui .wstage { border-radius:10px; }
}

/* ============ v54 课程页·套课卡片：加高 + 更显眼（仅课程页的 .lesson.blk） ============ */
.lesson.blk { padding:20px 18px; border-radius:18px; border:1px solid #ffe0ea;
  background:linear-gradient(135deg,#ffffff 0%,#fff4f8 100%);
  box-shadow:0 8px 22px rgba(251,114,153,.14); }
.lesson.blk:active { transform:scale(.975); }
.lesson.blk .lno { width:64px; height:64px; border-radius:17px;
  background:linear-gradient(145deg,#fb7299,#ef4d80); color:#fff; font-size:15px;
  box-shadow:0 6px 14px rgba(251,114,153,.35); }
.lesson.blk .linfo b { font-size:17px; margin-bottom:6px; }
.lesson.blk .linfo em { font-size:12.5px; color:#8f8f99; }
.lesson.blk .linfo .cdmeta { font-size:11.5px; color:#f25584; font-weight:600; margin-top:6px; }
.lesson.blk .gobtn { font-size:22px; }

/* ============ 首页·内部课程卡：与班次卡同款窄卡，仅显示一句话简介 ============ */
/* 配色与课程页「具体课程」卡（.lesson.blk / .lno）保持一致 */
#bundleCards .course {
  background:linear-gradient(135deg,#ffffff 0%,#fff4f8 100%);
  border:1px solid #ffe0ea;
  box-shadow:0 8px 22px rgba(251,114,153,.14);
}
#bundleCards .course .cname {
  background:linear-gradient(145deg,#fb7299,#ef4d80);
}
#bundleCards .course .cbody .ps {
  display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden;
}
/* 套课封面：首页窄卡左侧缩略图 */
#bundleCards .course { position:relative; }
#bundleCards .course .bub { top:6px; right:6px; }
#bundleCards .course.has-bub .cbody .pt { padding-right:54px; }
#bundleCards .course .cimg { flex:0 0 100px; display:block; overflow:hidden; background:#fff0f5; }
#bundleCards .course .cimg img { width:100%; height:100%; object-fit:cover; display:block; }
/* 课程页·宽卡长简介：超出用省略号 */
.lesson.blk .linfo .cddesc {
  display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden;
}
/* 套课封面：课程页宽卡左侧小图（替换「N科」数字块） */
.lesson.blk .lno.has-cover { padding:0; overflow:hidden; background:#fff0f5; }
.lesson.blk .lno.has-cover img { width:100%; height:100%; object-fit:cover; display:block; }
/* 套课封面：套课页顶部 hero 右上角缩略图 */
.bhero-cover { position:absolute; right:16px; top:18px; z-index:2; width:60px; height:60px;
  border-radius:15px; border:2px solid rgba(255,255,255,.85); box-shadow:0 8px 18px rgba(0,0,0,.22); }
.bhero.has-cover .bht, .bhero.has-cover .bhd { padding-right:74px; }

/* ============ v58 课时列表：「试听/音频」标签移到最右侧 ============ */
/* 套课页课时列表 */
.bl .bl-r { flex:none; min-width:0; display:flex; align-items:center; gap:8px; }
.bl .bl-r em { font-style:normal; font-size:10px; color:#fb7299; border:1px solid #fb7299; border-radius:8px; padding:0 5px; }
.bl .bl-r em.audio { color:#8a63d2; border-color:#8a63d2; }
/* 播放页课时列表 */
#wui .vrow .r { flex:none; display:flex; align-items:center; gap:8px; }
#wui .vrow .r em { font-style:normal; font-size:10px; color:#fb7299; border:1px solid #fb7299; border-radius:8px; padding:0 5px; }
#wui .vrow .r em.audio { color:#8a63d2; border-color:#8a63d2; }
/* 播放页·全屏右侧选集面板 */
#wui .srow .r { flex:none; display:flex; align-items:center; gap:8px; }
#wui .srow .r em { font-style:normal; font-size:10px; color:#fb7299; border:1px solid #fb7299; border-radius:8px; padding:0 4px; }
#wui .srow .r em.audio { color:#b58df0; border-color:#b58df0; }

/* ============ v59 播放器加载封面：隐藏内核默认占位图 + 品牌封面淡入 ============ */
.wstage .mv { opacity:0; visibility:hidden; transition:opacity .3s ease; }
.wstage.ready .mv { opacity:1; visibility:visible; }
.wstage .wcover { position:absolute; inset:0; z-index:5; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:10px; pointer-events:none;
  background:linear-gradient(135deg,#1a1a22 0%,#0c0c10 100%); transition:opacity .3s ease; }
.wstage.ready .wcover { opacity:0; }
.wstage .wcover .wbrand { color:#fff; font-size:20px; font-weight:700; letter-spacing:3px; opacity:.92; }
.wstage .wcover .wload { color:rgba(255,255,255,.55); font-size:12px; }
.wstage:not(.ready) .wbigplay { opacity:0; pointer-events:none; }

/* ============ v62 播放页改版：去顶部条 / 播放器+标题+自动连播固定 / 只有列表滚动 / 左上角返回箭头 ============ */
#wui { display:flex; flex-direction:column; overflow:hidden; }
#wui .wfix { flex:none; background:#fff; border-bottom:1px solid #f1f2f3; }
#wui .whead { display:flex; align-items:flex-start; gap:10px; padding:12px 2px 10px; }
#wui .wtitles { flex:1; min-width:0; }
#wui .wtitle { font-size:15.5px; font-weight:700; color:#18191c; line-height:1.45; }
#wui .wsub { margin-top:4px; font-size:12px; color:#9499a0; line-height:1.4; }
#wui .whead .auto { flex:none; display:flex; align-items:center; gap:7px; font-size:13px; color:#61666d; padding-top:2px; cursor:pointer; }
#wui .whead .auto input { appearance:none; -webkit-appearance:none; position:relative; flex:none; width:36px; height:20px;
  border-radius:10px; background:#d9dbe1; transition:background .2s ease; cursor:pointer; outline:none; }
#wui .whead .auto input::after { content:''; position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%;
  background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.25); transition:transform .2s ease; }
#wui .whead .auto input:checked { background:#fb7299; }
#wui .whead .auto input:checked::after { transform:translateX(16px); }
#wui .wfix .dirh { display:flex; align-items:center; justify-content:space-between; padding:0 2px 10px; }
#wui .wfix .dirh b { font-size:15px; font-weight:700; color:#18191c; }
#wui .wfix .dirh .cnt { font-size:12px; color:#9499a0; }
#wui .wdir { flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; -webkit-overflow-scrolling:touch; }
#wui .wback { position:absolute; top:10px; left:10px; z-index:14; width:34px; height:34px; padding:0;
  border:0; border-radius:50%; background:rgba(0,0,0,.42); color:#fff; display:flex; align-items:center;
  justify-content:center; cursor:pointer; transition:opacity .22s ease; }
#wui .wback svg { width:20px; height:20px; }
#wui .wstage.idle:not(.audio) .wback { opacity:0; pointer-events:none; }
#wui .wstage.fs .wback, #wui .wstage:fullscreen .wback { display:none; }

/* ============ v65 播放器细节：3×挪顶部小方条 / 暂停大按钮快速消失 / 选集去图标 / 退出全屏去文字 ============ */
#wui .wstage .wboost { top:10px; left:50%; transform:translateX(-50%); width:auto; height:auto; min-width:0;
  padding:3px 12px; border-radius:6px; font-size:15px; font-weight:700; letter-spacing:0; background:rgba(0,0,0,.62); }
#wui .wbigplay { transition:opacity .22s ease; }
#wui .wbigplay.bphide { opacity:0; pointer-events:none; }
#wui .wstage .wexit { width:34px; height:34px; padding:0; border-radius:50%; align-items:center; justify-content:center; }
#wui .wstage .wexit svg { width:18px; height:18px; }
#wui .wbar .wselbtn { gap:0; }
/* v66：非全屏隐藏控制条"选集"（课时列表就在下面）；全屏保留 */
#wui .wbar .wselbtn { display:none; }
#wui .wstage.fs .wbar .wselbtn, #wui .wstage:fullscreen .wbar .wselbtn { display:inline-flex; }

/* ============ v68 刷题·选卷页精简：统计瘦身 + 卷卡紧凑 ============ */
.qz-stat { gap:0; background:#fff; border:1px solid rgba(0,0,0,.05); border-radius:14px; overflow:hidden; margin:4px 0 14px; }
.qz-stat .st { border:0; border-radius:0; padding:10px 6px; box-shadow:none; }
.qz-stat .st + .st { border-left:1px solid #f2f0f5; }
.qz-subj { margin:10px 2px 6px; }
.qzset { padding:12px 14px; border:1px solid #f0eef4; border-radius:12px; box-shadow:none; margin-bottom:8px; }
.qzset .sn { font-size:15px; }
.qzset .sd { margin-top:4px; }

/* ============ v69 刷题选卷：科目可折叠 + 卷卡去标签 + 锁图标 ============ */
.qz-subj { cursor:pointer; }
.qz-subj .qarr { font-style:normal; display:inline-block; color:#c9c6d2; font-size:14px; margin-left:2px; transition:transform .18s ease; }
.qz-subj.open .qarr { transform:rotate(90deg); }
.qz-subj-bd { display:none; }
.qz-subj-bd.open { display:block; }
.qzlk { flex:none; border:0; background:none; padding:0 2px; color:#b0aab6; display:inline-flex; align-items:center; cursor:pointer; }
.qzlk svg { width:16px; height:16px; }
.qzlk:active { color:#fb7299; }

/* ============ v71 刷题选卷：科目标题更大更醒目 ============ */
.qz-subj { margin:12px 0 8px; padding:11px 14px; background:#fff4f8; border:1px solid #ffe1ea; border-radius:12px; align-items:center; }
.qz-subj em { font-size:16px; }
.qz-subj span { font-size:12px; }
.qz-subj .qarr { color:#e0a5b8; font-size:16px; }

/* ============ v72 我的页：姓名可改 + 全局鼓励语 ============ */
.me-tip { margin:10px 2px 0; padding:10px 14px; background:#fff4f8; border:1px solid #ffe1ea; border-radius:12px; font-size:13px; color:#c23363; line-height:1.6; }

/* ============ v73 错题本：完整题目/选项/解析 + 删除 ============ */
.wopts { display:flex; flex-direction:column; gap:6px; margin:8px 0 0; }
.wopt { display:flex; gap:8px; font-size:13px; color:#3a3a42; line-height:1.6; }
.wopt .ql { flex:none; width:20px; height:20px; border-radius:50%; background:#f1f0f3; color:#8a8a92; font-size:11px; font-weight:700; display:flex; align-items:center; justify-content:center; }
.wopt.right .ql { background:#34c759; color:#fff; }
.wopt.right span:last-child { color:#1e9e57; font-weight:600; }
.qdel { margin-left:auto; font-size:12px; color:#e24d4d; cursor:pointer; flex:none; }

/* ============ v74 暂停提示：去掉中心大圆按钮，改为左侧小「暂停中」 ============ */
#wui .wstage .wpause { position:absolute; left:10px; top:50%; transform:translateY(-50%); z-index:13;
  padding:3px 8px; border-radius:6px; background:rgba(0,0,0,.5); color:#fff; font-size:11px; line-height:1.4;
  opacity:0; transition:opacity .2s ease; pointer-events:none; }
#wui .wstage:not(.playing) .wpause { opacity:1; }
#wui .wstage:not(.ready) .wpause { opacity:0; }

/* ============ v76 错题本：全部答对点赞 + 空状态表扬 ============ */
.qz-praise { text-align:center; padding:26px 18px; }
.qz-praise .pe { display:block; font-size:44px; line-height:1; }
.qz-praise b { display:block; margin-top:12px; font-size:18px; color:#c23363; }
.qz-praise p { margin:8px auto 0; max-width:280px; font-size:13px; color:#8a8a92; line-height:1.7; }

/* ============ v77 我的页：点名字改名 + 退出账号 ============ */
.me-name { display:flex; align-items:center; gap:6px; cursor:pointer; }
.me-pen { font-style:normal; font-size:12px; color:#b0aab6; }

/* ============ v78 意见反馈 ============ */
.fb-list { margin-top:14px; max-height:44vh; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.fb-item { padding:12px 0; border-top:1px solid #f1f2f3; }
.fb-item:first-child { border-top:0; }
.fb-q { margin:0; font-size:14px; color:#18191c; line-height:1.7; white-space:pre-wrap; }
.fb-meta { margin:6px 0 0; font-size:11px; color:#b0aab6; }
.fb-a { margin-top:8px; padding:10px 12px; background:#fff4f8; border:1px solid #ffe1ea; border-radius:10px; }
.fb-a b { font-size:12px; color:#c23363; }
.fb-a p { margin:5px 0 0; font-size:13px; color:#55555e; line-height:1.7; white-space:pre-wrap; }
.fb-wait { margin:8px 0 0; font-size:12px; color:#b0aab6; }
.fb-empty { margin:14px 0 0; text-align:center; font-size:12px; color:#b0aab6; }

/* ============ v82 背诵：小要点（从属于上一个要点） ============ */
.mustrow .subpts { margin-top:8px; padding-left:10px; border-left:2px solid #f5c6d8; display:flex; flex-direction:column; gap:6px; }
.mustrow .subpt { font-size:13px; line-height:1.6; }
.mustrow .subpt b { color:#c23363; font-weight:600; }
.mustrow .subpt span { display:block; color:#8a8a92; font-size:12px; margin-top:2px; }

/* ============ v83 未读红点（答疑 / 批改 / 反馈） ============ */
.grid4 button { position:relative; }
.mitem { position:relative; }
.dot { position:absolute; top:6px; right:8px; width:8px; height:8px; border-radius:50%; background:#f5222d; box-shadow:0 0 0 2px #fff; }

/* ============ v84 背诵：二级要点（小背）单独成条、缩进显示 ============ */
.rl-play .layers .subrow { display:flex; gap:8px; margin-left:16px; padding:9px 13px; background:#fff7fa; border-left:3px solid #f5c6d8; border-radius:0 10px 10px 0; font-size:calc(14px * var(--rcf,1)); line-height:1.6; }
.rl-play .layers .subrow .smk { color:#e59ab4; font-weight:700; }
.rl-play .layers .subrow > div > span { font-weight:600; color:#c23363; }
.rl-play .layers .subrow .opt { font-size:calc(12.5px * var(--rcf,1)); font-weight:400; color:#8a8a92; margin:4px 0 0; }

/* ============ v85 背诵：整体更紧凑 + 小背 A/B 同一行 ============ */
.rl-play .layers { gap:7px; margin:10px 0 8px; }
.rl-play .layers .mustrow { padding:9px 12px; line-height:1.5; }
.rl-play .layers .concrow { padding:9px 12px; line-height:1.55; }
.rl-play .layers .mustrow .opt { margin:2px 0 0; line-height:1.45; }
.rl-play .layers .subrow { display:block; margin-left:14px; padding:6px 11px; line-height:1.45; }
.rl-play .layers .subrow .smk { margin-right:5px; }
.rl-play .layers .subrow .sn { font-weight:600; color:#c23363; }
.rl-play .layers .subrow .sopt { font-weight:400; color:#8a8a92; font-size:13px; margin-left:6px; }

/* ============ v87 刷题：已完成的卷变色 + 正确率分段着色 ============ */
.qzset.qzdone { background:#ecfaf1; }
.qzset.qzdone .sd .rate { font-weight:600; }
.qzset.qzdone .sd .rate.hi { color:#1e9e57; }
.qzset.qzdone .sd .rate.mid { color:#e08a1e; }
.qzset.qzdone .sd .rate.lo { color:#e24d4d; }

/* ============ v90 刷题结果页：正确率分段配色 + 鼓励语 + 可重刷提示 ============ */
.qz-result .rate.hi { color:#1e9e57; }
.qz-result .rate.mid { color:#e08a1e; }
.qz-result .rate.lo { color:#e24d4d; }
.qz-encourage { margin:16px auto 0; max-width:320px; font-size:15px; color:#4a4a52; line-height:1.7; }
.qz-hint { margin:10px auto 0; max-width:320px; font-size:12px; color:#b0aab6; line-height:1.6; }
.qz-result .ra { display:flex; flex-direction:column; gap:8px; }
.qz-result .ra .qzk.ghost { margin-top:0; }

/* ============ v92 首页：考试卡片与轮播图之间的间距 ============ */
#page-home #countCard { margin-top:14px; }

/* ============ v93 讲义弹窗：右上角关闭按钮 ============ */
.mask .sheet { position:relative; }
.mask .xclose { position:absolute; top:8px; right:10px; width:30px; height:30px; padding:0; border:0; background:none;
  color:#b0aab6; font-size:22px; line-height:1; cursor:pointer; }
.mask .xclose:active { color:#fb7299; }

/* ============ 批改 v4：作业页题卡标题行 / 全部提交居中 / 批改记录层级配色 ============ */
/* 作业页题卡：「第 N 题」与「本题满分 X 分」同行、同浅灰（比题干 #18181b 低一档，层级：题干 > 题号/满分） */
.hwq .hw-tt b { flex:0 0 auto; font-size:13.5px; color:#a6a6b0; }
.hwqscore { flex:0 0 auto; font-style:normal; font-size:12px; color:#a6a6b0; }
/* 「提交本题」：右上角无框小字按钮（点击弹「一经提交，本题不得修改」）；不再用 .hwqbar 里的实心按钮 */
.hwqsub { flex:0 0 auto; margin-left:auto; border:0; background:none; padding:2px 0 2px 10px; font-size:13px; font-weight:600; color:#fb7299; font-family:inherit; line-height:1.6; cursor:pointer; }
.hwqsub:active { opacity:.55; }
.hwqsub:disabled { color:#c9c9d2; }
/* 「使用说明」并入试卷批次行（卷名 + 标签同一行）贴右端；没有已上架卷时同一位置兜底显示 */
.hwbatch .howlink { margin-left:auto; align-self:center; }
/* 「全部提交」：放大 + 居中，灰色提示居中排在其下方 */
.hwallbar { flex-direction:column; align-items:center; gap:8px; margin:6px 0 18px; }
.hwallbar .allbtn { padding:13px 46px; font-size:16px; border-radius:24px; }
.hwallbar .hwdim { text-align:center; }
/* 批改记录目录卡：浅粉底 + 左侧粉条 + 玫红卷名 —— 目录 → 灰展开区 → 白题卡，三级一眼可分 */
.hwrec { background:#fff6fa; border-color:#fbdce7; padding-left:16px; box-shadow:inset 3px 0 0 #fb7299, 0 4px 14px rgba(251,114,153,.08); }
.hwrec:active { background:#ffeaf2; }
.hwrec .hw-tt b { color:#c23363; }
.hwrec .hwtags .hwk { background:#fff; }   /* 只盖背景：文字色按状态取（现在只剩「待批改」= 橙） */
.hwrec .hwtags .hwdot { margin-left:2px; }
.hwrec .hwx { color:#d79ab3; }
.hwrec .hwdot { box-shadow:0 0 0 2px #fff6fa; }
/* 「我的答案」：去掉灰色填充块，与题目正文同字号同行高（只保留「题目」下方那条虚线分隔线） */
.hwmy { background:none; border-radius:0; padding:0; }
.hwopen .hwmy { margin-top:4px; padding:0; background:none; border-left:0; font-size:13.5px; line-height:1.7; color:#18181b; }
/* 已弃用（「本题满分」与「提交本题」已移入题卡标题行，源码不再生成）：.hwqbar / .hwqbar .abtn / .hwqbar .abtn.subone */

/* ============ 批改 v5：「老师批改」段落 = 整宽粉色横带 + 文字与「我的答案」对齐 ============ */
/* 1) 整宽粉色横带：向外铺到题卡边缘（.hwopen .hwq 的内边距为左右 12px，故用 -12px 外扩）
      文字内边距补回 12px → 「老师批改」标签与评语文字的左边缘仍与「我的答案」完全一致；
      填充色沿用原来的 #fff5f8，整宽横带故去掉圆角（避免两端与题卡圆角处露白） */
.hwopen .hwr { margin:8px -12px 0; padding:8px 12px 10px; border-radius:0; background:#fff5f8; }
/* 2) 去掉「老师批改」与评语之间的分割线；评语字号/颜色改成与「我的答案」正文一致 */
.hwopen .hwa { margin:5px 0 0; padding-top:0; border-top:0; font-size:13.5px; line-height:1.7; color:#18181b; }
/* 3) 「我的答案」内容下方补一条与「题目」下方同款同色的虚线，正好落在「我的答案」与「老师批改」之间 */
.hwopen .hwmy { padding-bottom:8px; border-bottom:1px dashed #ececf0; }

/* ============ 批改 v6：去掉「老师批改」粉色框；标签改用与分数相同的玫红 ============ */
/* 1) 去框：不填充、不圆角、也不向题卡边缘外扩 —— 恢复成与「我的答案」同缩进的普通段落 */
.hwopen .hwr { margin:8px 0 0; padding:0; background:none; border-radius:0; }
/* 2) 「老师批改」四个字：颜色 = 分色的玫红 #e0245e；字号/字重沿用 .seg 的 11px / 600（只改颜色） */
.hwopen .hwr-top .seg { color:#e0245e; }

/* ============ 批改 v7：只读展开卡去掉全部小字标签 → 改由三段色带分层 ============ */
/* 前提：hw.js 只读分支已不再渲染 .seg（我的答案 / 老师批改）与 .hwpend（待批改提示）；
       题卡内现在是「题目(白底) / 我的答案(浅灰带) / 老师批改(浅粉带)」三段，两条整宽虚线做分界。
       全部规则限定在 .hwopen 作用域内 —— 作业页作答卡片（非只读）完全不受影响。 */
/* 1) 题卡底部内边距交还给最后一段色带自己撑（10px → 0），色带才能铺到卡片最底边 */
.hwopen .hwq { padding-bottom:0; }
/* 2) 题号行升级为正文字号：与题干同号同色（13.5px / #18181b），靠 600 字重区分层级 */
.hwopen .hw-tt.hw-tt-v2 b { flex:0 0 100%; font-size:13.5px; font-weight:600; color:#18181b; letter-spacing:0; line-height:1.4; }
/* 3) 分界线①（题目 ↔ 我的答案）：整宽虚线 —— 与分界线② 同宽同色，两条线不会一长一短 */
.hwopen .hwstem { margin:3px -12px 0; padding:0 12px 8px; border-bottom:1px dashed #ececf0; }
/* 4) 我的答案 = 整宽浅灰带 #f7f7fa：向外铺到题卡左右边缘，文字内边距补回 12px（缩进不变）；
      底部那条虚线就是分界线②（我的答案 ↔ 老师批改） */
.hwopen .hwmy { margin:0 -12px; padding:10px 12px 8px; background:#f7f7fa; border:0;
                border-bottom:1px dashed #ececf0; border-radius:0;
                font-size:13.5px; line-height:1.7; color:#18181b; }
/* 5) 老师批改 = 整宽浅粉带 #fffbfd（比目录卡 #fff6fa 更浅）：自分界线② 起铺到题卡最底边，底角跟卡片内弧（12-1=11px） */
.hwopen .hwr { margin:0 -12px; padding:10px 12px 12px; background:#fffbfd; border-radius:0 0 11px 11px; }
/* 6) 未批改的题：灰带就是最后一段 → 同样铺到卡底、收底角，且不留尾虚线（批改状态看目录卡标签） */
.hwopen .hwq > .hwmy:last-child { padding-bottom:12px; border-bottom:0; border-radius:0 0 11px 11px; }
/* 7) 得分：小字标签去掉后它是「老师批改」段唯一的锚点 —— 靠右、放大加粗 */
.hwopen .hwr-top { justify-content:flex-end; }
.hwopen .hwr-top b { font-size:16px; font-weight:800; color:#e0245e; }
/* 8) 评语：与「我的答案」正文同规格（13.5px / #18181b），与得分之间不画线 */
.hwopen .hwa { margin:5px 0 0; padding-top:0; border-top:0; font-size:13.5px; line-height:1.7; color:#18181b; }



/* ============ 批改 v8：删题号与进度标签 + 得分移到左上且字号同正文 + 两页正文放大到 15px ============ */
/* 前提：hw.js 已不再渲染 .hw-tt-v2（只读卡无标题行）与目录卡「提交 x/X」；
      故 839 / 1559 两条 .hw-tt-v2 规则成为历史规则（保留，不再命中）。 */
/* 1) 得分：从右上角移到左上角，字号与正文一致（保留玫红 #e0245e，它仍是「老师批改」段唯一锚点） */
.hwopen .hwr-top { justify-content:flex-start; }
.hwopen .hwr-top b { font-size:15px; font-weight:700; }
/* 2) 批改记录正文放大到 15px：题干 / 我的答案 / 评语（题号行已删，题干顶部那条 3px 缝隙一并归零） */
.hwopen .hwstem { margin-top:0; font-size:15px; }
.hwopen .hwmy { font-size:15px; }
.hwopen .hwa { font-size:15px; }
/* 3) 作业页正文放大到 15px：题干 / 我的答案 / 作答框；「本题满分 X 分」随正文抬半档、仍比正文低一档 */
.hwstem { font-size:15px; }
.hwmy { font-size:15px; }
.hwta { font-size:15px; }
.hwqscore { font-size:13px; }

/* ============ 批改 v9：批改记录展开区题卡纵向间距加大（作业页保持 12px） ============ */
.hwopen .hwq { margin-bottom:12px; }             /* 展开区题卡 6 → 12px */
.hwopen .hwq:last-child { margin-bottom:8px; }   /* 末卡 4 → 8px（+ 展开区底部内边距 4px = 底部留白 12px） */

/* ============ 批改 v10：展开区「题目段」与「我的答案段」底色对调 ============ */
/* 背景：v7 起 题目=白底(卡片本体)、我的答案=整宽浅灰带 #f7f7fa；按需求严格对调：
       题目段 → 浅灰 #f7f7fa；我的答案段 → 纯白 #fff。
       两条规则均限定在 .hwopen 作用域内 —— 作业页作答卡片(.hwq/.hwstem/.hwta)完全不受影响。 */
.hwopen .hwq  { background:#f7f7fa; }   /* 题目段（卡底）白 → 浅灰（= 原「我的答案」的灰） */
.hwopen .hwmy { background:#fff; }      /* 我的答案段 浅灰带 → 纯白（= 原「题目」的白） */


/* ============ 批改 v11：搜索栏去掉提示语 + 左侧线性放大镜图标 ============ */
/* 需求：批改记录搜索栏不再显示提示句子，改为左侧一个放大镜图标；图标用站内统一的线性 SVG 风格（stroke=currentColor），
   不使用 emoji。实现沿用 2026-09-12 首版 v11 的参数（已实测：图标与输入框、清空按钮垂直居中）。
   作用域限定在搜索栏组件内（.hwsiw / .hwsi-ic），不影响其它页面。 */
/* 1) 输入框外包一层定位容器：图标绝对定位在左侧内边距区，且不接收点击（点图标等于点输入框） */
.hwsiw { position:relative; flex:1 1 auto; min-width:0; }
.hwsiw .hwsi { display:block; width:100%; padding-left:38px; }   /* 正文让开左侧图标位：13 + 17 + 8 = 38px */
/* 2) 图标：静默灰 #b9b9c6；输入框聚焦时（:focus-within）随之变粉 #fb7299，与描边联动 */
.hwsi-ic { position:absolute; left:13px; top:0; bottom:0; margin:auto; width:17px; height:17px; color:#b9b9c6; pointer-events:none; }
.hwsiw:focus-within .hwsi-ic { color:#fb7299; }


/* ============ 批改 v13：批改记录改「整卷弹窗」+ 五段式（题目 / 学员答案 / 标准答案 / 提高建议 / 分数） ============ */
/* 背景：需求 = ① 由下拉展开改为弹窗（一屏能看更多）② 每题五部分要醒目清晰不繁杂。
   设计：五部分只留「分数」一个重锚点（卡头右上角大号玫红）；其余四部分用「底色 + 行首小竖点 + 汉字标记」分层。
   竖点几何与答疑页 A 行同款（3px 宽 / 圆角 2px / 18px 缩进），但这里是独立实现，绝不触碰答疑页任何规则。 */
/* 1) 弹窗容器：复用 .mask 遮罩；全屏 sheet 底部贴边、顶部留 14px 露出遮罩，形成浮层感 */
#hwRecLay { padding:0; align-items:flex-end; }
#hwRecLay .hwsheet { position:relative; width:100%; max-width:640px; height:calc(100% - 14px); margin:0 auto;
  display:flex; flex-direction:column; overflow:hidden; background:#f6f5fa; border-radius:16px 16px 0 0; }
/* 顶栏：卷名 + 已批改进度 + 关闭 */
#hwRecLay .hwsheet-hd { flex:0 0 auto; display:flex; align-items:baseline; gap:8px; padding:13px 46px 10px 14px;
  background:#fff; border-bottom:1px solid rgba(0,0,0,.05); }
#hwRecLay .hwsheet-hd b { font-size:15.5px; font-weight:700; color:#18181b; }
#hwRecLay .hwsheet-hd span { flex:1 1 auto; min-width:0; font-size:11.5px; color:#9a9aa2; }
/* 题号跳转条：未批改的题号置灰、当前题高亮；无题时自动隐藏 */
#hwRecLay .hwsheet-nav { flex:0 0 auto; display:flex; gap:6px; padding:8px 12px; overflow-x:auto;
  background:#fff; border-bottom:1px solid rgba(0,0,0,.05); }
#hwRecLay .hwsheet-nav:empty { display:none; }
#hwRecLay .hwnav { flex:0 0 auto; min-width:30px; height:26px; padding:0 8px; border:1px solid #ececf1; border-radius:13px;
  background:#fff; color:#55555e; font-size:12.5px; font-weight:600; font-family:inherit; }
#hwRecLay .hwnav.off { color:#c9c9d2; }
#hwRecLay .hwnav.on { border-color:#fb7299; color:#fb7299; background:#fff5f8; }
/* 内容区：独立滚动（整卷题卡纵向排列） */
#hwRecLay .hwsheet-bd { flex:1 1 auto; min-height:0; overflow:auto; padding:12px; -webkit-overflow-scrolling:touch; }
#hwRecLay .hwopen { padding:0; }
#hwRecLay .hwopen .hwq { margin-bottom:10px; }
/* 2) 卡头：左「第 N 题」（轻）+ 右分数（重，全卡最醒目）；未批改显示「待批改」 */
#hwRecLay .hwqhd { display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin:0 -12px; padding:0 12px 8px; }
#hwRecLay .hwqhd .no { font-size:12px; font-weight:600; color:#9a9aa2; }
#hwRecLay .hwqhd .sc { font-size:19px; font-weight:800; color:#e0245e; letter-spacing:.3px; }
#hwRecLay .hwqhd .sc i { font-style:normal; font-size:12.5px; font-weight:600; color:#d0a0b3; }
#hwRecLay .hwqhd .sc.wait { font-size:13px; font-weight:600; color:#c79a5a; letter-spacing:0; }
/* 3) 行式段落：行首 3px 圆角小竖点 + 18px 缩进 + 汉字标记（答 / 参 / 批） */
#hwRecLay .hwseg { position:relative; margin:0; padding-left:18px; font-size:15px; line-height:1.7; color:#18181b;
  white-space:pre-wrap; word-break:break-word; overflow-wrap:anywhere; }
#hwRecLay .hwseg b { font-weight:600; margin-right:6px; }
#hwRecLay .hwseg::before { content:''; position:absolute; left:2px; top:9px; bottom:9px; width:3px; border-radius:2px; background:#a6a6b0; }
#hwRecLay .hwseg-a::before { background:#a6a6b0; }   /* 答：灰 = 我写的（中性） */
#hwRecLay .hwseg-a b { color:#fb7299; }
#hwRecLay .hwseg-r::before { background:#5b9bd5; }   /* 参：蓝 = 客观参照 */
#hwRecLay .hwseg-r b { color:#3d7fb8; }
#hwRecLay .hwseg-g::before { background:#fb7299; }   /* 批：粉 = 老师的话 */
#hwRecLay .hwseg-g b { color:#fb7299; }
/* 4) 段落底色：题目段=卡底浅灰（既有规则）；我的答案=白（既有）；标准答案=浅蓝；提高建议=浅粉并收卡底圆角 */
#hwRecLay .hwref { margin:0 -12px; padding:10px 12px 8px; background:#f4f8fd; border-bottom:1px dashed #dbe7f4; }
#hwRecLay .hwr { border-radius:0 0 11px 11px; }
#hwRecLay .hwmy:last-child { padding-bottom:12px; border-bottom:0; border-radius:0 0 11px 11px; }
/* 5) 未批改的题：一行浅灰提示，不渲染空段（避免四段空白显得杂乱） */
#hwRecLay .hwpend { margin:0 -12px; padding:10px 12px 12px; background:#fffbfd; border-radius:0 0 11px 11px;
  font-size:12.5px; color:#b3b3bc; }

/* ===== 批改详情 v14：一题一屏 + 圈号切换 + 左右滑动，观感向全站靠拢 ===== */
#hwRecLay .hwsheet-bd { padding:12px 12px calc(env(safe-area-inset-bottom) + 16px); }
#hwRecLay .hwq { display:none; }
#hwRecLay .hwq.hwcur { display:block; animation:hwqIn .24s cubic-bezier(.4,0,.2,1); }
@keyframes hwqIn { from { opacity:.35; transform:translateX(14px); } to { opacity:1; transform:none; } }
#hwRecLay .hwsheet-nav { padding:8px 12px 10px; gap:8px; }
#hwRecLay .hwnav { width:30px; min-width:30px; height:30px; padding:0; display:inline-flex; align-items:center; justify-content:center;
  border:1px solid #ececf1; border-radius:50%; background:#fff; color:#55555e; font-size:13px; font-weight:600; font-family:inherit;
  transition:transform .12s ease, background .12s ease, color .12s ease, border-color .12s ease; }
#hwRecLay .hwnav:active { transform:scale(.92); }
#hwRecLay .hwnav.off { color:#c9c9d2; border-color:#f1f1f5; }
#hwRecLay .hwnav.on { background:linear-gradient(135deg,#fb7299,#ff9db6); border-color:#fb7299; color:#fff; box-shadow:0 4px 12px rgba(251,114,153,.28); }
#hwRecLay .hwqhd { align-items:center; gap:10px; }
#hwRecLay .hwqhd .no { width:24px; height:24px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#fb7299,#ff9db6); color:#fff; font-size:13px; font-weight:700; }
#hwRecLay .hwq { border-radius:18px; box-shadow:0 10px 26px rgba(30,25,60,.07); }
#hwRecLay .hwsheet { box-shadow:0 -10px 40px rgba(30,25,60,.16); }

/* ===== 好评如潮（学员端首页底部入口 + 弹层） ===== */
#reviewsLay .rvsheet { position:relative; width:100%; max-width:640px; height:calc(100% - 14px); margin:0 auto; background:#f6f5fa;
  border-radius:20px; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 -10px 40px rgba(30,25,60,.16); }
#reviewsLay .rvhd { flex:0 0 auto; display:flex; align-items:center; gap:8px; padding:14px 46px 12px 16px; background:#fff; border-bottom:1px solid rgba(0,0,0,.05); }
#reviewsLay .rvhd b { font-size:15.5px; color:#18181b; }
#reviewsLay .rvbd { flex:1 1 auto; min-height:0; overflow:auto; -webkit-overflow-scrolling:touch; padding:12px; display:flex; flex-direction:column; gap:12px; }
#reviewsLay .rvitem { margin:0; flex:0 0 auto; background:#fff; border-radius:16px; overflow:hidden; box-shadow:0 6px 18px rgba(30,25,60,.06); }
#reviewsLay .rvitem img { display:block; width:100%; height:auto; flex:0 0 auto; }
#reviewsLay .rvitem figcaption { padding:9px 12px; font-size:12.5px; color:#666; line-height:1.6; }
/* 图文帖：标题 + 正文 + 多图（正文有换行则保留；无标题/正文时图片直接铺满） */
#reviewsLay .rvtitle { margin:0; padding:13px 14px 0; font-size:15px; font-weight:700; color:#18181b; line-height:1.5; }
#reviewsLay .rvbody { margin:0; padding:8px 14px 0; font-size:13.5px; color:#55555e; line-height:1.75; word-break:break-word; overflow-wrap:anywhere; }
#reviewsLay .rvimgs { display:flex; flex-direction:column; gap:6px; padding:10px 0 0; }
#reviewsLay .rvimgs:first-child { padding-top:0; }

/* ============ 批改 v15：统一「答 / 参 / 批」呈现 ============ */
/* 目标：三段结构完全一致 = 左侧 3px 色条 + 单字标签 + 内容，只用颜色区分语义；
   去掉「参」的浅蓝底块与「批」的浅粉底块，避免同一张卡里出现三种排布形态。 */
/* 1) 段容器：统一无底色、统一内边距（仍向外铺满卡片宽度，正文缩进与题干对齐） */
#hwRecLay .hwmy { margin:0 -12px; padding:10px 12px; background:none; border:0; border-bottom:1px dashed #ececf0; }
#hwRecLay .hwref,
#hwRecLay .hwr { margin:0 -12px; padding:10px 12px; background:none; border:0; border-top:1px dashed #ececf0; }
/* 2) 颜色语义统一：答=中性灰（我写的） / 参=辅助蓝灰（客观参照） / 批=品牌粉（老师的话） */
#hwRecLay .hwseg-a::before { background:#a6a6b0; }
#hwRecLay .hwseg-a b { color:#8a8a93; }
#hwRecLay .hwseg-r::before { background:#7c8ea6; }
#hwRecLay .hwseg-r b { color:#5f7288; }
#hwRecLay .hwseg-g::before { background:#fb7299; }
#hwRecLay .hwseg-g b { color:#fb7299; }
/* 3) 标签统一：同字号同字重，作为段的唯一标识 */
#hwRecLay .hwseg b { font-size:13px; font-weight:700; }
/* 4) 未批改提示：去掉粉色底，与三段保持中性一致 */
#hwRecLay .hwpend { margin:0 -12px; padding:10px 12px 12px; background:none; border-top:1px dashed #ececf0; }

/* ============ 批改 v16：批改记录「老师批改」段 = 标签独占一行 + 得分靠右同行（分数从卡头右上角移入） ============ */
/* 需求：① 行内小标签「批」改为「老师批改」且独占一行，评语另起一行；② 得分从卡头右上角移到这一段，紧跟评语更醒目。
   结构：.hwr > .hwr-top(标签 + 得分) + .hwa(评语正文)；粉色 3px 竖条与「答 / 参」保持对齐。 */
#hwRecLay .hwr { position:relative; padding-left:30px; }
#hwRecLay .hwr::before { content:''; position:absolute; left:14px; top:11px; bottom:11px; width:3px; border-radius:2px; background:#fb7299; }
#hwRecLay .hwr-top { display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin:0 0 4px; }
#hwRecLay .hwr-top .seg { display:block; margin:0; font-size:13px; font-weight:700; color:#fb7299; letter-spacing:.5px; }
#hwRecLay .hwr-top .sc { font-size:16px; font-weight:800; color:#e0245e; letter-spacing:.3px; white-space:nowrap; }
#hwRecLay .hwr-top .sc i { font-style:normal; font-size:12px; font-weight:600; color:#d0a0b3; }
#hwRecLay .hwa { margin:0; font-size:15px; line-height:1.7; color:#18181b; white-space:pre-wrap; word-break:break-word; overflow-wrap:anywhere; }

/* ============ 批改 v17：批改记录四段可折叠（题干 / 我的答案 / 参考答案 / 老师批改） ============ */
/* 题干、我的答案、参考答案默认收起；老师批改默认展开；收起时标题右侧显示一行预览。
   展开后正文字号/色条与标题左对齐（文字 30px、色条 14px）；旧的段底色与负边距在此归零，避免叠加。 */
#hwRecLay .hwsec { margin:0 -12px; border-bottom:1px dashed #ececf0; }
#hwRecLay .hwsec:last-child { border-bottom:0; border-radius:0 0 11px 11px; }
#hwRecLay .hwsec-ref { background:#f4f8fd; }
#hwRecLay .hwsec-grade { background:#fff6fa; }
#hwRecLay .hwsec-hd { position:relative; display:flex; align-items:center; gap:8px; width:100%; box-sizing:border-box;
  margin:0; padding:10px 12px 10px 30px; border:0; background:none; text-align:left; font-family:inherit; color:#18181b; cursor:pointer; }
#hwRecLay .hwsec-hd .hwsec-lb { flex:0 0 auto; font-size:14px; font-weight:600; }
#hwRecLay .hwsec-stem .hwsec-lb { color:#55555e; }
#hwRecLay .hwsec-my .hwsec-lb { color:#6b6b76; }
#hwRecLay .hwsec-ref .hwsec-lb { color:#3d7fb8; }
#hwRecLay .hwsec-grade .hwsec-lb { color:#fb7299; }
#hwRecLay .hwsec-hd .hwsec-pv { flex:1 1 auto; min-width:0; font-size:12.5px; font-weight:400; color:#9a9aa2;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#hwRecLay .hwsec.open .hwsec-hd .hwsec-pv { display:none; }
#hwRecLay .hwsec-hd .sc { flex:0 0 auto; font-size:16px; font-weight:800; color:#e0245e; letter-spacing:.3px; white-space:nowrap; }
#hwRecLay .hwsec-hd .sc i { font-style:normal; font-size:12px; font-weight:600; color:#d0a0b3; }
#hwRecLay .hwsec-hd .hwsec-car { flex:0 0 auto; color:#b9b9c6; transition:transform .18s ease, color .18s ease; }
#hwRecLay .hwsec.open .hwsec-hd .hwsec-car { transform:rotate(180deg); color:#fb7299; }
#hwRecLay .hwsec-hd::before { content:''; position:absolute; left:14px; top:50%; transform:translateY(-50%);
  width:3px; height:16px; border-radius:2px; background:#cfcfda; }
#hwRecLay .hwsec-stem .hwsec-hd::before { background:#e4e4ea; }
#hwRecLay .hwsec-my .hwsec-hd::before { background:#a6a6b0; }
#hwRecLay .hwsec-ref .hwsec-hd::before { background:#5b9bd5; }
#hwRecLay .hwsec-grade .hwsec-hd::before { background:#fb7299; }
#hwRecLay .hwsec-bd { display:none; }
#hwRecLay .hwsec.open .hwsec-bd { display:block; }
#hwRecLay .hwsec .hwstem { margin:0; padding:0 12px 12px 30px; border:0; font-size:14.5px; line-height:1.75; }
#hwRecLay .hwsec .hwmy { margin:0; padding:0 12px 12px; background:none; border:0; border-radius:0; }
#hwRecLay .hwsec .hwref { margin:0; padding:0 12px 12px; background:none; border:0; }
#hwRecLay .hwsec .hwpend { margin:0; padding:0 12px 12px; background:none; border:0; }
#hwRecLay .hwsec .hwseg { padding-left:30px; }
#hwRecLay .hwsec .hwseg::before { left:14px; top:5px; bottom:5px; }
#hwRecLay .hwsec .hwa { margin:0; padding:0 12px 12px 30px; }

/* iOS 全屏选集入口：右侧中部大号「选集」把手（放大/全屏时出现，避开底部系统手势区） */
.wstage .wsel { display:none; position:absolute; right:0; top:50%; transform:translateY(-50%); z-index:12; border:0; padding:20px 10px; border-radius:12px 0 0 12px; background:rgba(15,15,20,.62); color:#fff; font-size:13px; font-weight:700; letter-spacing:2px; writing-mode:vertical-rl; }
.wstage.fs .wsel, .wstage.fs-fake .wsel, .wstage:fullscreen .wsel, .wstage:-webkit-full-screen .wsel { display:flex; align-items:center; }

/* 伪全屏·竖屏：把视频旋转成横屏铺满，控制条/选集保持正向（iOS 无系统元素全屏时的最佳观感） */
.wstage.fs-fake.rot video.mv { position:absolute; left:50%; top:50%; width:100vh; height:100vw; max-width:none; max-height:none; object-fit:contain; transform:translate(-50%,-50%) rotate(90deg); }
.wstage.fs-fake .wexit { top:calc(env(safe-area-inset-top, 0px) + 8px); }

/* 进全屏前设置条（iOS 原生全屏前先设好倍速/选集） */
.wprefull { position:absolute; left:0; right:0; bottom:0; z-index:14; display:none; flex-direction:column; gap:10px; padding:14px 14px calc(14px + env(safe-area-inset-bottom)); background:rgba(16,16,22,.94); color:#fff; border-radius:14px 14px 0 0; }
.wprefull.show { display:flex; }
.wprefull .wp-h b { display:block; font-size:15px; }
.wprefull .wp-h span { display:block; margin-top:4px; font-size:12px; color:rgba(255,255,255,.62); line-height:1.6; }
.wprefull .wp-rates { display:flex; flex-wrap:wrap; gap:8px; }
.wprefull .wp-rates a { padding:7px 12px; border-radius:999px; background:rgba(255,255,255,.14); color:#fff; font-size:13px; }
.wprefull .wp-rates a.on { background:#fb7299; }
.wprefull .wp-btns { display:flex; gap:10px; }
.wprefull .wp-btns button { flex:1; border:0; border-radius:12px; padding:11px 0; font-size:15px; font-weight:700; cursor:pointer; }
.wprefull .wp-sel { background:rgba(255,255,255,.16); color:#fff; }
.wprefull .wp-go { background:linear-gradient(135deg,#fb7299,#ef4d80); color:#fff; }
.wprefull .wp-cancel { background:transparent; color:rgba(255,255,255,.7); flex:0 0 64px; font-weight:600; }

/* 标题栏刷新图标 + 空错态「重试」 */
.sv-top .sv-refresh { margin-left:auto; width:34px; height:34px; border:1px solid rgba(0,0,0,.05); border-radius:11px; background:#fff; color:#55555e; display:inline-flex; align-items:center; justify-content:center; padding:0; cursor:pointer; }
.sv-top .sv-refresh:active { background:#f5f5f8; }
.sv-refresh.spin svg { animation:fkspin .7s linear infinite; }
[data-retry].spin { opacity:.55; }
@keyframes fkspin { to { transform:rotate(360deg); } }

/* 背诵卡片 A-/A+ 字号 */
.phead .rfs { margin-left:auto; display:flex; gap:6px; flex:none; }
.phead .rfs button { padding:4px 10px; border:1px solid rgba(0,0,0,.08); background:#fff; border-radius:9px; font-size:12.5px; color:#55555e; cursor:pointer; }
.phead .rfs button:active { background:#fff0f5; color:#c23363; }

/* 背诵：遍数徽章 / 可重背 / 结算按钮 */
.rc-ch .ch-info em.rc-round { margin-left:6px; margin-top:0; border-radius:999px; padding:1px 7px; font-size:10px; font-weight:700; }
.rc-ch .ch-info em.rc-round.r1 { color:#8a8a93; background:#f1f1f5; }
.rc-ch .ch-info em.rc-round.r2 { color:#c23363; background:#ffe9f1; }
.rc-ch .ch-info em.rc-round.r3 { color:#8a6d1d; background:#fff3d6; }
.rc-ch .ch-info b em.rc-brownie { font-style:normal; margin-left:6px; font-size:10px; font-weight:700; color:#c23363; background:#ffe9f1; border-radius:999px; padding:1px 7px; }
.celebrate .celeb-acts { display:flex; gap:12px; margin-top:6px; }
.celebrate .celeb-acts button { border:1px solid rgba(0,0,0,.08); border-radius:22px; padding:11px 24px; font-size:15px; font-weight:700; cursor:pointer; background:#fff; color:#55555e; }
.celebrate .celeb-acts button.primary { background:linear-gradient(135deg,#fb7299,#ef4d80); color:#fff; border:0; }

/* 背诵遍数勋章（与整体粉灰风格一致的迷你奖章） */
.rc-ch .ch-info em.rc-medal { display:inline-flex; align-items:center; gap:2px; margin-left:6px; margin-top:0; padding:1px 7px 1px 5px; border-radius:999px; font-size:10.5px; font-weight:800; }
.rc-ch .ch-info em.rc-medal svg { display:block; flex:none; }
.rc-ch .ch-info em.rc-medal b { font-weight:800; }
.rc-ch .ch-info em.rc-medal.r1 { color:#8a8a93; background:#f1f1f5; }
.rc-ch .ch-info em.rc-medal.r2 { color:#c23363; background:#ffe9f1; }
.rc-ch .ch-info em.rc-medal.r3 { color:#8a6d1d; background:#fff3d6; }
.celebrate .cmedal { display:inline-flex; flex-direction:column; align-items:center; color:#fb7299; }
.celebrate .cmedal svg { width:54px; height:54px; }
.celebrate .cmedal b { margin-top:2px; font-size:13px; font-weight:800; color:#c23363; }

/* 章节行右侧：已背 N 遍（纯文字） */
.rc-ch .rc-round { flex:none; margin-left:8px; font-style:normal; font-size:11px; font-weight:700; color:#c23363; white-space:nowrap; }

/* 题集卡片右侧「继续背」紧凑按钮 */
.rc-set-top .rc-resume-btn { flex:none; margin-left:auto; margin-right:2px; padding:5px 13px; border:0; border-radius:999px; background:linear-gradient(135deg,#fb7299,#ef4d80); color:#fff; font-size:12px; font-weight:700; cursor:pointer; }
.rc-set-top .rc-resume-btn:active { filter:brightness(.96); }
.rc-set-top .rc-caret { margin-left:6px; }

/* ============ 答疑 v17：历史答疑 / 精选答疑 可折叠（默认折叠，点问题展开答案） ============ */
.qrow .qhead { display:flex; align-items:flex-start; gap:8px; width:100%; box-sizing:border-box; margin:0; padding:0; border:0; background:none; text-align:left; font-family:inherit; color:inherit; cursor:pointer; }
.qrow .qhead .qtext { flex:1 1 auto; min-width:0; }
.qrow .qhead .qh-wait { flex:0 0 auto; align-self:center; font-style:normal; font-size:10.5px; font-weight:600; color:#c79a5a; background:#fff6e8; border-radius:6px; padding:1px 6px; }
.qrow .qhead .qcaret { flex:0 0 auto; margin-top:4px; color:#b9b9c6; transition:transform .18s ease, color .18s ease; }
.qrow .qhead:active .qtext { color:#fb7299; }
.qrow.open .qhead .qcaret { transform:rotate(180deg); color:#fb7299; }
.qrow .qbody { display:none; }
.qrow.open .qbody { display:block; }

/* 答疑：字号调节（A-/A+）只缩放历史/精选的题目与回答文字 */
#page-answer .qline, #page-answer .aline { font-size:calc(14px * var(--qaf,1)); }
/* 答疑：Q/A 标签不压缩、不换行（长问题由正文换行），避免标签被挤成竖排 */
#page-answer .qhead b { flex:0 0 auto; }
#page-answer .qline b, #page-answer .aline b { white-space:nowrap; }
/* 答疑：回答的「老师答」标签独占一行，正文从第二行开始 */
#page-answer .aline b { display:block; }
/* 答疑：段落之间留一点间距（段后 6px），增强段落感（问题/回答、使用说明） */
#page-answer .qpara { display:block; margin:0 0 6px; }
#page-answer .qpara:last-child { margin-bottom:0; }
#howBody .hpara { margin:0 0 6px; }
#howBody .hpara:last-child { margin-bottom:0; }
#howBody .how-steps li + li { margin-top:6px; }

/* ============ 答疑答卡：历史答疑与精选答疑统一（浅粉底 + 细描边 + 圆角 + 轻投影，无左侧竖线） ============ */
#page-answer .aline {
  margin:10px 0 2px;
  padding:10px 12px;
  background:#fff8fb;
  border:1px solid rgba(251,114,153,.22);
  border-radius:12px;
  box-shadow:0 2px 10px rgba(251,114,153,.08);
}
#page-answer .aline b { margin:0 0 5px; }
#page-answer .aline::before { display:none; }

/* 批改记录：题干 / 我的答案 / 参考答案 / 老师批改 的段落间距（长文更好读） */
#hwRecLay .hwpara { display:block; margin:0 0 6px; }
#hwRecLay .hwpara:last-child { margin-bottom:0; }
/* 搜索行 + 字号按钮（历史 / 精选同一行，不拆行） */
.histbar { display:flex; align-items:center; gap:8px; margin:0 0 10px; }
.histbar .searchbox { flex:1 1 auto; min-width:0; }
.qafs { flex:0 0 auto; display:flex; gap:6px; }
.qafs button { height:44px; padding:0 10px; border:1px solid #ececf1; background:#fff; border-radius:12px; font-size:12.5px; font-weight:600; color:#55555e; cursor:pointer; }
.qafs button:active { background:#fff0f5; color:#c23363; }
/* ===== 音频课：全屏播放页（浅色，与站内统一）===== */
#wui .wfix.audio-mode { position:fixed; inset:0; z-index:70; display:flex; flex-direction:column; background:#f6f5fa; }
#wui .wfix.audio-mode .whead { display:none; }
#wui .wfix.audio-mode .wstage { flex:1; min-height:0; width:100%; aspect-ratio:auto; border-radius:0; background:transparent; }
#wui .wfix.audio-mode .audio-box { position:absolute; inset:0; display:flex; flex-direction:column;
  padding:0 20px calc(16px + env(safe-area-inset-bottom)); background:transparent; }
#wui .wfix.audio-mode .au { display:none; }
#wui .wfix.audio-mode .ap { position:relative; display:flex; flex-direction:column; height:100%; width:100%; max-width:520px; margin:0 auto; }
.ap-top-name { padding-top:calc(16px + env(safe-area-inset-top)); text-align:center; color:#9499a0;
  font-size:13px; letter-spacing:.3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ap-mid { flex:1; min-height:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:16px; padding:10px 0; }
.ap-disc { width:128px; height:128px; border-radius:50%; display:flex; align-items:center; justify-content:center; position:relative;
  background:linear-gradient(145deg,#ffe3ec,#ffd0e0); box-shadow:0 10px 30px rgba(251,114,153,.22); color:#fb7299; }
.ap-disc::before { content:''; position:absolute; inset:10px; border-radius:50%; background:#fff; box-shadow:inset 0 0 0 1px rgba(251,114,153,.12); }
.ap-disc::after { content:''; position:absolute; inset:46%; border-radius:50%; background:#fbe6ee; }
.ap-disc svg { position:relative; z-index:2; }
.wstage.playing .ap-disc { animation:apspin 10s linear infinite; }
@keyframes apspin { from { transform:rotate(0) } to { transform:rotate(360deg) } }
.ap-t2 { color:#18181b; font-size:19px; font-weight:600; text-align:center; line-height:1.35; padding:0 8px; }
.ap-sub { flex:none; min-height:50px; max-height:32vh; overflow:hidden; color:#4a4d55; font-size:16px; line-height:1.65;
  text-align:center; padding:0 6px; opacity:0; transition:opacity .25s; }
.ap-sub.on { opacity:1; }
.ap-bot { flex:none; position:relative; background:#fff; border-radius:18px; padding:14px 14px 12px;
  box-shadow:0 4px 14px rgba(30,25,60,.06); border:1px solid rgba(0,0,0,.04); }
.ap-seek { position:relative; height:26px; display:flex; align-items:center; cursor:pointer; touch-action:none; }
.ap-seek::before { content:''; position:absolute; left:0; right:0; height:3px; border-radius:3px; background:#eceaf2; }
.ap-buf { position:absolute; left:0; height:3px; width:0; border-radius:3px; background:#e2e0ea; }
.ap-fill { position:absolute; left:0; height:3px; width:0; border-radius:3px; background:#fb7299; }
.ap-knob { position:absolute; left:0; width:11px; height:11px; border-radius:50%; background:#fff; transform:translateX(-50%);
  box-shadow:0 1px 4px rgba(251,114,153,.55), 0 0 0 2px #fb7299; }
.ap-time { display:flex; justify-content:space-between; color:#9499a0; font-size:11px; margin-top:-6px; font-variant-numeric:tabular-nums; }
.ap-ctl { display:flex; align-items:center; justify-content:center; padding:12px 0 10px; }
.ap-play { width:68px; height:68px; border-radius:50%; border:0; display:flex; align-items:center; justify-content:center; color:#fff;
  background:linear-gradient(135deg,#fb7299,#f4608d); box-shadow:0 10px 24px rgba(251,114,153,.38); }
.ap-play:active { transform:scale(.96); }
.ap-play .i-s { display:none; }
.ap-play.on .i-p { display:none; }
.ap-play.on .i-s { display:block; }
/* 底部按钮：一排 */
.ap-row { display:flex; align-items:center; gap:8px; }
.ap-chip { flex:1 1 0; height:38px; border-radius:12px; border:1px solid #eceaf2; background:#faf9fd; color:#61666d;
  font-size:13px; font-weight:600; display:flex; align-items:center; justify-content:center; gap:5px; padding:0 6px; }
.ap-chip:active { background:#fff0f5; }
.ap-chip.on { background:#fff0f5; border-color:#ffd0e0; color:#e2518a; }
.ap-pl span { font-size:12px; font-variant-numeric:tabular-nums; }
.ap-rate-wrap { position:relative; flex:1 1 0; display:flex; }
.ap-rate-wrap .ap-chip { width:100%; }
.ap-rate-menu { display:none; position:absolute; left:0; bottom:46px; z-index:90; padding:6px; border-radius:14px;
  background:#fff; box-shadow:0 14px 34px rgba(30,25,60,.16); border:1px solid rgba(0,0,0,.05);
  grid-template-columns:repeat(3,1fr); gap:4px; width:168px; }
.ap-rate-menu.on { display:grid; }
.ap-rate-menu a { text-align:center; padding:9px 0; border-radius:9px; color:#61666d; font-size:12px; }
.ap-rate-menu a.on { background:#fb7299; color:#fff; font-weight:700; }
/* 播放列表：卡片上方弹出 */
.ap-panel { display:none; position:absolute; left:0; right:0; bottom:calc(100% + 8px); max-height:48vh; overflow:auto;
  padding:8px; border-radius:16px; background:#fff; border:1px solid rgba(0,0,0,.05);
  box-shadow:0 18px 44px rgba(30,25,60,.18); z-index:95; }
.ap-panel.on { display:block; }
.ap-panel-h { display:flex; align-items:center; justify-content:space-between; padding:6px 10px 8px; color:#9499a0; font-size:12px; }
.ap-panel-h b { color:#18181b; font-size:14px; }
.apl-row { display:flex; align-items:center; gap:10px; padding:11px 10px; border-radius:10px; color:#4a4d55; font-size:13px; cursor:pointer; }
.apl-row:active { background:#faf9fd; }
.apl-row .n { width:22px; flex:none; color:#b6bac2; font-size:12px; text-align:center; }
.apl-row .tt { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.apl-row .r { flex:none; font-size:11px; color:#fb7299; }
.apl-row.on { background:#fff0f5; color:#c23363; font-weight:600; }
.apl-row.on .n { color:#e2518a; }
#wui .wfix.audio-mode .wback { background:#fff; color:#61666d; box-shadow:0 2px 10px rgba(30,25,60,.12);
  top:calc(12px + env(safe-area-inset-top)); }
@media (max-height:640px) { .ap-disc { width:100px; height:100px } .ap-play { width:60px; height:60px } }
/* 音频：点中间在「唱片」和「字幕」之间切换（类似音乐播放器） */
.ap-mid { cursor:pointer; }
.ap-mid.lyric .ap-disc,
.ap-mid.lyric .ap-t2 { display:none; }
.ap-mid.lyric .ap-sub { max-height:52vh; font-size:18px; line-height:1.9; color:#2b2f36; }
.ap-mid.lyric .ap-sub.on { opacity:1; }
.ap-mid:not(.lyric) .ap-sub { opacity:0 !important; }
.ap-loop span { font-size:13px; }

/* 音频：滚动字幕 + 点击提示 */
#wui .wfix.audio-mode .dirh { display:none; }
.ap-lyrics { display:none; }
.ap-mid.lyric .ap-lyrics { display:block; width:100%; height:40vh; overflow:hidden; position:relative;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 18%,#000 82%,transparent);
  mask-image:linear-gradient(180deg,transparent,#000 18%,#000 82%,transparent); }
.ap-lyrics-in { transition:transform .45s cubic-bezier(.22,.61,.36,1); will-change:transform; }
.ap-line { height:38px; line-height:38px; text-align:center; color:#b6bac2; font-size:15px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding:0 10px; }
.ap-line.on { color:#18181b; font-size:17px; font-weight:600; }
.ap-hint { display:none; color:#b6bac2; font-size:12px; }
.ap-hint.show { display:block; }
.ap-mid.lyric .ap-hint { display:none; }

/* 音频字幕：一行放不下就换行 + 右上角字号按钮 */
.ap-lyrics { font-size:16px; }
.ap-line { height:auto; min-height:34px; padding:5px 14px; line-height:1.5; text-align:center; color:#b6bac2;
  font-weight:400; white-space:normal; word-break:break-word; overflow:visible; text-overflow:clip; }
.ap-line.on { color:#18181b; font-weight:600; }
.ap-size { display:none; position:absolute; right:0; top:calc(10px + env(safe-area-inset-top)); z-index:6;
  width:42px; height:32px; border-radius:10px; border:1px solid #eceaf2; background:#fff; color:#61666d;
  font-size:13px; font-weight:700; align-items:center; justify-content:center;
  box-shadow:0 2px 8px rgba(30,25,60,.08); }
.ap.lyric .ap-size { display:flex; }

/* 音频字幕：字号 + / − 两个按钮（修正：行字号跟随容器） */
.ap-line { font-size:inherit; }
.ap-sizes { display:none; position:absolute; right:0; top:calc(10px + env(safe-area-inset-top)); z-index:6; gap:8px; }
.ap.lyric .ap-sizes { display:flex; }
.ap-sizes .ap-size { display:flex; align-items:center; justify-content:center; }

/* 修正：两个字号按钮并排（抵消旧的绝对定位），以及高亮行跟随字号 */
.ap-sizes .ap-size { position:static; top:auto; right:auto; display:flex; }
.ap-line.on { font-size:inherit; }
