/* FastRead Web · 响应式样式（M1） */
* { box-sizing: border-box; }
body {
  margin: 0; color: #1e293b;
  background: linear-gradient(160deg, #eef2ff 0%, #f0f9ff 55%, #faf5ff 100%);
  background-attachment: fixed;
  font-family: "Times New Roman", "SimSun", "宋体", serif;
  font-weight: 700;
}
.container { max-width: none; margin: 0 auto; padding: 14px 18px; }
h2 { margin: 8px 0 14px; }

/* 顶部渐变横幅 */
.hero { background: linear-gradient(90deg, #4f46e5, #7c3aed, #ec4899); color: #fff; }
.hero-inner { max-width: none; margin: 0 auto; padding: 14px 18px; display: flex; justify-content: space-between; align-items: center; }
.brand { font-size: 24px; font-weight: 800; color: #fff; text-decoration: none; }
a.brand:hover { opacity: .9; }
.tagline { font-size: 12px; opacity: .85; margin-top: 2px; }
.hero-right { font-weight: 700; opacity: .9; }
.foot { text-align: center; color: #94a3b8; font-size: 12px; padding: 18px 0 26px; }

/* 卡片 */
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; }
.card { background: #fff; border-radius: 12px; padding: 18px; box-shadow: 0 2px 10px rgba(15,23,42,.08); text-decoration: none; color: inherit; display: block; }
.card.off { opacity: .5; pointer-events: none; }
.card-icon { font-size: 30px; }
.card-title { font-size: 18px; font-weight: 800; margin: 6px 0; }
.card-desc { color: #64748b; font-size: 13px; line-height: 1.6; }
.card.go { border: 2px solid #3b82f6; }
.card-go { color: #3b82f6; font-weight: 800; margin-top: 8px; }

/* 表单面板 */
.panel, .err { background: #fff; border-radius: 12px; padding: 18px; box-shadow: 0 2px 10px rgba(15,23,42,.08); }
.err { color: #dc2626; }
.panel label { display: block; margin: 12px 0; font-weight: 700; }
.panel select, .write {
  font: inherit; padding: 10px 12px; border: 1px solid #cbd5e1; border-radius: 8px; background: #f8fafc;
}
fieldset { border: 1px solid #e2e8f0; border-radius: 10px; margin: 12px 0; }
legend { font-weight: 800; padding: 0 6px; }
.radio { display: block; margin: 8px 0; font-weight: 600; }
.radio small { color: #64748b; font-weight: 400; }
.row { display: flex; gap: 18px; flex-wrap: wrap; }

.btn {
  display: inline-block; font: inherit; font-weight: 800; padding: 10px 18px; border: 0;
  border-radius: 8px; background: #e2e8f0; color: #1e293b; cursor: pointer; text-decoration: none;
}
.btn.primary { background: #3b82f6; color: #fff; }
.btn.big { font-size: 17px; padding: 12px 26px; }
.btn:hover { filter: brightness(.95); }

/* 顶部信息条 */
.bar { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px;
  background: #eef2f7; border-radius: 10px; padding: 10px 14px; font-weight: 800; margin-bottom: 12px; }
.muted { color: #64748b; font-weight: 400; }

/* 双栏题格（窄屏自动单栏） */
.qgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 760px) { .qgrid { grid-template-columns: 1fr; } }
.qcell { background: #fff; border-radius: 12px; padding: 14px; box-shadow: 0 2px 10px rgba(15,23,42,.06); }
.stem { font-size: 16px; font-weight: 700; line-height: 1.5; }
.audio { border: 0; background: #e2e8f0; border-radius: 50%; width: 30px; height: 30px; cursor: pointer; font-size: 14px; }
.audio:active { background: #cbd5e1; }
.opts { margin-top: 8px; display: grid; gap: 6px; }
.opt {
  display: flex; gap: 10px; align-items: flex-start; cursor: pointer;
  background: #fff; border: 2px solid #cbd5e1; border-radius: 12px;
  padding: 13px 16px; font-weight: 700; line-height: 1.5;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.opt:hover { border-color: #3b82f6; background: #eff6ff; }
.opt:has(input:checked) { border-color: #3b82f6; background: #dbeafe; box-shadow: inset 0 0 0 2px #93c5fd; }
.opt input { width: 18px; height: 18px; margin-top: 2px; accent-color: #3b82f6; flex: none; }
.write { width: 100%; font-size: 16px; margin-top: 8px; }
.submitrow { margin: 18px 0 8px; text-align: center; }

/* 正答率大字弹层（难度预警配色） */
.flash {
  position: fixed; inset: 0; z-index: 99; cursor: pointer;
  background: #0f172a; display: flex; flex-direction: column;
  align-items: center; justify-content: center; text-align: center;
}
.flash-icon { font-size: clamp(60px, 14vw, 130px); }
.flash-text { font-size: clamp(48px, 11vw, 120px); font-weight: 900; line-height: 1.1; }
.flash.good .flash-text { color: #22c55e; }
.flash.mid  .flash-text { color: #3b82f6; }
.flash.bad  .flash-text { color: #ef4444; }
.flash-hint { margin-top: 26px; font-size: 16px; color: #94a3b8; }

/* 逐题讲评 */
.review.hidden { display: none; }
.scorebar { background: #eef2f7; border-radius: 10px; padding: 10px 14px; font-weight: 800; margin-bottom: 12px; }
.dcell { background: #fff; border-radius: 10px; padding: 12px 14px; margin-bottom: 10px;
  box-shadow: 0 1px 6px rgba(15,23,42,.06); font-size: 15px; line-height: 1.6; }
.dcell.ok { border-left: 5px solid #22c55e; }
.dcell.bad2 { border-left: 5px solid #ef4444; }
.dhead { font-weight: 800; margin-bottom: 4px; }

/* 检测页字号变量 */
.qcell { font-size: var(--qfont, 14px); }
.qcell .stem { font-size: var(--qfont, 14px); }
.qcell .opt { font-size: var(--qfont, 14px); }
.qcell .write { font-size: var(--qfont, 14px); }
.fsbox { font-weight: 400; }
.fsbox select { font: inherit; padding: 4px 6px; border-radius: 6px; border: 1px solid #cbd5e1; }
.inline { display: inline; }

/* 单词听读 */
.listen-grid { display: grid; grid-template-columns: 320px 1fr; gap: 14px; }
.listtoggle { display: none; }
@media (max-width: 860px) {
  .listen-grid { grid-template-columns: 1fr; }
  /* 手机端：单词列表默认收起（点箭头展开，限高滚动），保证大字区居中不被挤走 */
  .wordlist { max-height: none; overflow-y: visible; padding: 8px 10px; }
  .wordlist .fsrow { display: none; }
  .wordlist.open .fsrow { display: block; }
  .wordlist .list { display: none; }
  .wordlist.open .list { display: block; max-height: 46vh; overflow-y: auto; }
  .listtoggle { display: inline-block; margin-bottom: 4px; }
  .bigshow { display: flex; flex-direction: column; justify-content: center;
             min-height: 62vh; padding: 14px 10px; }
}
.wordlist { padding: 10px; max-height: 70vh; overflow-y: auto; }
.fsrow { font-weight: 800; margin-bottom: 8px; }
.fsrow select { font: inherit; padding: 4px 6px; border-radius: 6px; border: 1px solid #cbd5e1; }
.list .litem { padding: 6px 8px; border-radius: 6px; cursor: pointer; font-size: var(--lfont, 16px); }
.list .litem:hover { background: #eff6ff; }
.list .litem.cur { background: #dbeafe; font-weight: 800; }
.bigshow { text-align: center; padding: 24px 16px; }
.bigword { font-size: var(--bfont, 60px); font-weight: 900; line-height: 1.15; word-break: break-all; }
.bigdef { font-size: calc(var(--bfont, 60px) * .42); color: #334155; margin: 14px 0 22px; line-height: 1.5; }
.lrctl, .lrctl2 { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin: 10px 0; align-items: center; }
.btn.danger { background: #ef4444; color: #fff; }
.btn.star { background: #f59e0b; color: #fff; }
.chk { font-weight: 700; }

/* 单词默写答题纸：2 列 × 15 行，行内题干+抽屉答题框 */
.dwrap { display: grid; grid-template-columns: 1fr 1fr; gap: 0 26px; }
.abank4 { grid-template-columns: 1fr 1fr 1fr 1fr !important; gap: 4px 18px; }
.abank4 .dcol { min-width: 0; }
.abank4 .drow { justify-content: flex-start; text-align: left; margin-bottom: 0; }
@media (max-width: 760px) { .dwrap { grid-template-columns: 1fr; } }
.dcol { min-width: 0; }
.drow {
  display: flex; align-items: center; gap: 0; background: #fff;
  border-radius: 10px; padding: 0; margin-bottom: 9px;
  box-shadow: 0 1px 6px rgba(15,23,42,.06);
}
.dnum { font-weight: 800; min-width: 1.5em; text-align: left; padding-right: 4px; flex: none; font-size: var(--qfont, 14px); }
.dtext {
  flex: 1 1 auto; font-weight: 700; font-size: var(--qfont, 14px);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.dwrite { flex: 0 0 220px; font-size: var(--qfont, 14px); }
.dwrap.closed .dwrite { display: none; }   /* 抽屉收起：题干占满整行 */

/* 全屏：默写答题纸占满整屏，行距与答题框同步放大 */
body.fs-on .dwrap { gap: 0 40px; }
body.fs-on .drow { padding: 12px 16px; margin-bottom: 11px; }
body.fs-on .dwrite { flex: 0 0 300px; }
.fsbox { font-size: 13px; font-weight: 700; color: #475569; }
.fsbox select { margin-left: 4px; }
.btn.mini { font-size: 13px; padding: 6px 12px; }

/* 全屏时隐藏横幅与页脚（训练内容占满整屏） */
body.fs-on .hero, body.fs-on .foot { display: none; }
body.fs-on .container { padding-top: 8px; }

.hint2 { color: #64748b; font-size: 13px; margin: 10px 0; }
.passage { font-size: var(--qfont, 14px); line-height: 1.8; font-weight: 600; }
.timer { color: #b91c1c; font-weight: 900; }
.bank { display: flex; flex-wrap: wrap; gap: 8px; }
.bankword { background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 8px; padding: 6px 12px; font-weight: 700; }
.blank { font: inherit; padding: 4px 8px; border-radius: 6px; border: 1px solid #94a3b8; background: #fefce8; font-weight: 700; }

/* 教室模式 */
.hostgrid { display: grid; grid-template-columns: 340px 1fr; gap: 14px; align-items: start; }
.hostgrid > .panel { max-height: calc(100vh - 150px); overflow-y: auto; }
body.fs-on .hostgrid > .panel { max-height: calc(100vh - 90px); }
@media (max-width: 900px) { .hostgrid { grid-template-columns: 1fr; } }
.bigcode { font-size: 26px; color: #3b82f6; letter-spacing: 4px; }
#qrbox { background: #fff; padding: 8px; border-radius: 10px; display: inline-block; margin: 8px 0; }
.joinurl { font-family: Consolas, monospace; font-size: 14px; color: #2563eb; word-break: break-all; margin-bottom: 8px; }
.center { text-align: center; padding: 40px 20px; }
.center .bigword { margin-bottom: 14px; }
.scorebar { background: #eef2f7; border-radius: 10px; padding: 10px 14px; font-weight: 800; margin-bottom: 12px; }

/* 正答率大字弹层上的按钮 */
.flash-btns { display: flex; gap: 14px; margin-top: 22px; }
.flash-btns .btn { font-size: 16px; }
.flash-btns a { text-decoration: none; }

.scrolllist { max-height: calc(100vh - 340px); min-height: 160px; overflow-y: auto;
  display: flex; flex-wrap: wrap; align-content: flex-start; gap: 6px; }

/* 讲评题目解析选项行 */
.optline { border: 1px solid #e2e8f0; border-radius: 8px; padding: 6px 10px; margin: 4px 0; background: #f8fafc; }
.optline.right { border-color: #16a34a; background: #f0fdf4; color: #15803d; font-weight: 800; }

/* 交卷结果：你的答案/正确答案 */
.dres { flex: 0 0 auto; max-width: 46%; font-weight: 800; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dres.ok { color: #16a34a; }
.dres.bad { color: #dc2626; }

.passage .filled { color: #16a34a; font-weight: 800; text-decoration: underline; }
.optline.wrongsel { border-color: #dc2626; background: #fef2f2; }
.optline.wrongsel::after { content: ' ✗ 你选的'; color: #dc2626; font-size: 12px; }

/* ============ M5 手机横竖屏适配 ============ */
/* 手机竖屏：工具栏可换行、按钮整宽、头部收紧 */
@media (max-width: 600px) {
  .hero { padding: 8px 0; }
  .hero .tagline { display: none; }
  .bar { flex-wrap: wrap; gap: 6px; }
  .qcell { padding: 10px 12px; }
  .submitrow .btn { width: 100%; }
  .center { padding: 20px 12px; }
  .hostform label { display: block; width: 100%; }
  /* 讲评弹窗手机版：收紧边距，保证触屏可滚动 */
  .rvbody { padding: 8px 10px; }
  .rvbar { padding: 6px 8px; gap: 6px; }
  .rvbar .btn { padding: 4px 8px; font-size: 13px; }
}
/* 手机横屏（矮屏）：进一步压缩头部与留白，给作答区让高度 */
@media (orientation: landscape) and (max-height: 500px) {
  .hero { padding: 4px 0; }
  .hero .tagline, .hero-right { display: none; }
  .container { padding-top: 6px; padding-bottom: 6px; }
  .center { padding: 10px; }
  .center .bigword { font-size: 40px; margin-bottom: 6px; }
  .panel { padding: 10px 12px; }
}
/* 触屏设备：输入字号≥16px，避免 iOS 聚焦自动放大 */
@media (pointer: coarse) {
  input, select, textarea { font-size: 16px; }
}

/* ============ 教室大屏紧凑排版：行距/边距压缩，大字号不溢出 ============ */
/* 单词默写：行贴行（原 9px 边距 ×2/行 是大屏溢出主因之一） */
.stu-tight .dwrap { gap: 0 24px; }
.stu-tight .drow { padding: 0; margin-bottom: 0; border-radius: 0; box-shadow: none; }
.stu-tight .dnum, .stu-tight .dtext, .stu-tight .dwrite, .stu-tight .dres { line-height: 1.15; }
/* 快速阅读：正文/题目行距压缩（原 .passage 行高 1.8） */
.stu-tight .passage { padding: 0; margin: 0; border: none; background: transparent; box-shadow: none; line-height: 1.15; }
.stu-tight .qcell { padding: 0; }
.stu-tight .qcell .stem { line-height: 1.05; }
.stu-tight .qcell .stem, .stu-tight .qcell .opt, .stu-tight .qcell .write { line-height: 1.15; }
.stu-tight .qcell .opts .opt { padding: 0 8px; margin: 0; }
/* 语法与写作：词库选项字号与正文统一 */
.stu-tight .bankword { font-size: var(--qfont, 14px); padding: 2px 10px; line-height: 1.15; }
.stu-tight .blank { font-size: var(--qfont, 14px); }
.stu-tight .submitrow { margin: 6px 0; }
.stu-tight .panel { padding: 8px 10px; }

/* 全屏态单词默写：行距/边距极限压缩，文字贴边界（40 号 15 行仅占 ~630px） */
body.fs-on .stu-tight .drow { padding: 0; }
body.fs-on .stu-tight .dnum, body.fs-on .stu-tight .dtext,
body.fs-on .stu-tight .dwrite, body.fs-on .stu-tight .dres { line-height: 1.05; }
body.fs-on .stu-tight .dwrap { gap: 0 14px; }
body.fs-on:has(.stu-tight) .container { padding-left: 6px; padding-right: 6px; }
/* 组卷选词块 */
.wpick { cursor: pointer; user-select: none; }
.wpick.picked { background: #dcfce7; border-color: #16a34a; color: #15803d; font-weight: 800; }
.pvscroll { max-height: 46vh; overflow-y: auto; }

/* 语法点词填空：填空槽 + 词库两行限高 */
/* 词汇讲评答题纸：对错色标 + 英语答案蓝字 */
.dmark { flex: none; font-weight: 900; }
.dmark.ok { color: #16a34a; }
.dmark.bad { color: #dc2626; }
.dans { flex: 0 0 auto; max-width: 34%; color: #2563eb; font-weight: 800;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rvbody .drow { padding: 0; margin-bottom: 0; }
.rvbody .dnum, .rvbody .dtext, .rvbody .dans, .rvbody .dmark { line-height: 1; padding-left: 0; }
.rvbody .dnum { padding-right: 4px; }
.rvbody .dtext { padding-right: 6px; }
.rvbody .dtext { flex: 0 1 auto; }
.rvbody .en { color: #2563eb; }
.rvbody .dans { color: #111; }
.rvbody .dans.en { color: #2563eb; }
/* 词汇检测讲评：原题与答案间留 1 空格，答案统一蓝色 */
.rv-vocab .dans { margin-left: 0.5em; color: rgb(0, 0, 255); }
/* 讲评页解析文字统一蓝色 0000FF（各模块逐题/逐空讲评通用） */
.rvbody .exp, .review .exp { color: rgb(0, 0, 255); }
/* 20261012 阅读讲评下栏：选项 2×2 排列；选中项黄底紫边；正确项红勾 */
.gscroll-bot .opts { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 10px; }
.gscroll-bot .opt { border: 2px solid transparent; border-radius: 6px; padding: 1px 6px; }
.gscroll-bot .opt.sel { background: #fef08a; border-color: #7c3aed; }
.gscroll-bot .opt .okmark { color: #dc2626; font-weight: 800; margin-left: 4px; }
/* 七选五讲评顶栏标题：固定 14 号，不随正文字号（--rvfont）变化 */
.rvbar .rvtitle { font-size: 14px; font-weight: 700; }
.rvbar .rvpageno { font-size: 14px; }
/* 20261012 讲评弹窗全屏时：fs-on 的默写答题纸放大规则不适用讲评页——单元格间距 0、文字贴单元格边 */
body.fs-on .rvmodal .dwrap { gap: 0; }
body.fs-on .rvmodal .drow { padding: 0; margin: 0; }
body.fs-on .rvmodal .dtext, body.fs-on .rvmodal .dans, body.fs-on .rvmodal .dnum,
body.fs-on .rvmodal .dmark { padding: 0; margin: 0; }
body.fs-on .rv-vocab .dans { margin-left: 0.5em; }
.gfill { color: #2563eb; font-weight: 800; display: inline-block; min-width: 4ch; text-align: center; }
.rvbody .dnum, .rvbody .dtext, .rvbody .dans, .rvbody .dmark,
.rvbody .dcell, .rvbody .dhead, .rvbody .stem, .rvbody .scorebar, .rvbody .muted,
.rvbody .opt, .rvbody .opts .opt, .rvbody .passage, .rvbody .optline, .rvbody .litem,
.rvbody .bankword, .rvbody .gslot { font-size: var(--rvfont, 14px); }
.rvbody .dtext { color: #111; }

.gslot { display: inline-block; min-width: 4ch; width: 4ch; padding: 0 4px; margin: 0 2px;
  border: none; border-bottom: 2px solid #94a3b8; text-align: center; cursor: pointer;
  font-weight: 800; color: #2563eb; background: transparent; font: inherit; }
.gslot:focus { outline: none; border-bottom-color: #2563eb; }
.gslot.filled { color: #1d4ed8; border-bottom: none; }   /* 填入后取消下划线 */
.gslot.active { background: #dbeafe; border-color: #2563eb; }
.gbank { max-height: calc(8 * (var(--qfont, 14px) * 1.15 + 14px)); overflow-y: auto; }

/* ============ 目录按个人错误率着色（仅本人可见） ============ */
/* 0-10% 深灰 / 11-30% 深黄 / 31-59% 粉红 / 60-80% 深红 / 81-100% 紫红 */
.rate0 { color: #475569; }
.rate1 { color: #a16207; }
.rate2 { color: #db2777; }
.rate3 { color: #b91c1c; }
.rate4 { color: #a21caf; }
.rate-legend { font-size: 12px; color: #64748b; margin: 4px 0 8px; }
.tried { font-style: italic; }   /* 预览列表：做过的题 */
.rate-legend i { font-style: normal; margin-right: 10px; }

/* ============ 全屏讲评弹窗（结果页/成绩历史共用） ============ */
/* 结构：讲评即页面本体（检测页同构）——普通文档流 + 100dvh 高度链 + rvbody 内层滚动。
   不再用 position:fixed 弹窗：固定容器内套滚动器在部分平板/老内核 WebView 上
   scroll 事件与 scrollTop 不可靠（笔迹钉屏/开笔冻结的根源）。 */
.hidden { display: none !important; }
.rvmodal { position: relative; width: 100%; height: 100vh; height: 100dvh; z-index: 10;
  background: #f8fafc; overflow: hidden; display: flex; flex-direction: column;
  font-size: var(--rvfont, 14px); }
/* 讲评打开时：藏站点顶栏、锁页面滚动，让讲评占满整屏（与检测页一致） */
body.rv-open { overflow: hidden; }
body.rv-open .hero { display: none; }
body.rv-open .container { padding: 0; }   /* 容器留白会把 100dvh 讲评推出视口并被裁掉 */
.rvbar { flex: 0 0 auto; z-index: 3;
  background: linear-gradient(120deg, #4338ca, #7c3aed 45%, #0891b2); color: #fff;
  padding: 8px 14px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.rvbar .fsbox { color: #cbd5e1; }
.rvbody { flex: 1 1 auto; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain; padding: 12px 16px; max-width: 100%; margin: 0 auto; width: 100%; }
/* 老安卓内核兜底：JS 探测到内层滚动失效时加 rv-legacy，弹窗随整页滚动（主页面同款） */
.rvmodal.rv-legacy { position: absolute; top: 0; left: 0; width: 100%; height: auto;
  min-height: 100%; display: block; overflow: visible; }
.rvmodal.rv-legacy .rvbody { height: auto; max-height: none; overflow: visible; flex: none; }
.rvbody .dcell, .rvbody .dhead, .rvbody .stem, .rvbody .scorebar, .rvbody .muted,
.rvbody .opt, .rvbody .opts .opt, .rvbody .passage, .rvbody .optline, .rvbody .litem,
.rvbody .bankword, .rvbody .gslot { font-size: var(--rvfont, 14px); }
.rvbody .passage { background: #fff; padding: 10px 12px; border-radius: 8px;
  margin: 8px 0; line-height: 1.5; }

/* 右键单词菜单（释义/读音/加入生词表） */
.wmenu { position: fixed; z-index: 130; background: #fff; border: 1px solid #cbd5e1;
  border-radius: 8px; box-shadow: 0 6px 24px rgba(15,23,42,.18); padding: 4px; min-width: 150px; }
.wmenu div { padding: 7px 12px; cursor: pointer; border-radius: 6px; font-size: 14px; }
.wmenu div:hover { background: #eff6ff; }

/* 讲评弹窗（阅读/语法）：行距压缩至 0，选项行距 0 */
.rv-tight .passage { line-height: 1.05; padding: 2px 0; }
.rv-tight .dcell { line-height: 1.05; padding: 2px 0; margin: 0; }
.rv-tight .dhead { line-height: 1.05; margin-bottom: 2px; }
.rv-tight .opts, .rv-tight .opts .opt { line-height: 1.05; }
.rv-tight .opts .opt { padding: 0; margin: 0; }
.rv-tight .drow, .rv-tight .dnum, .rv-tight .dtext, .rv-tight .dans, .rv-tight .dmark { line-height: 1.05; }
.rv-tight .scorebar { padding: 4px 8px; margin-bottom: 4px; }

/* ============ M6 青少年审美美化层 ============ */
/* 中文小字也保持加粗 */
.muted, .radio small, .card-desc, .foot, .hint2, .fsbox { font-weight: 700; }

/* 横幅：青春渐变 */
.hero { background: linear-gradient(120deg, #4338ca, #7c3aed 45%, #0891b2); }
.hero-inner { padding: 16px 18px; }
.brand { font-size: 26px; letter-spacing: .5px; text-shadow: 0 2px 8px rgba(0,0,0,.25); }

/* 卡片/面板：大圆角 + 彩色柔影 + 悬停上浮 */
.panel, .err, .qcell, .dcell, .card {
  border-radius: 16px;
  box-shadow: 0 4px 14px rgba(79,70,229,.10);
  border: 2px solid #e0e7ff;
}
.card, .qcell { transition: transform .15s, box-shadow .15s, border-color .15s; }
.card:hover { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(79,70,229,.16); border-color: #a5b4fc; }
.qcell:hover { border-color: #c7d2fe; }
.card-title { color: #4338ca; }
.card.go { border: 2px solid #8b5cf6; }
.card-go { color: #7c3aed; }

/* 按钮：胶囊渐变 + 悬浮发光 */
.btn { border-radius: 999px; padding: 10px 22px; background: #e0e7ff; color: #3730a3;
  transition: transform .12s, box-shadow .15s, filter .15s; }
.btn:hover { transform: translateY(-2px); filter: brightness(1.05); box-shadow: 0 6px 16px rgba(79,70,229,.25); }
.btn:active { transform: translateY(0); box-shadow: none; }
.btn.primary { background: linear-gradient(120deg, #6366f1, #8b5cf6); color: #fff; }
.btn.primary:hover { box-shadow: 0 6px 18px rgba(124,58,237,.4); }
.btn.big { font-size: 18px; padding: 13px 30px; }
.btn.danger { background: linear-gradient(120deg, #f43f5e, #fb7185); color: #fff; }
.btn.danger:hover { box-shadow: 0 6px 18px rgba(244,63,94,.35); }
.btn.warning { background: linear-gradient(120deg, #f59e0b, #fbbf24); color: #fff; }
.btn.star { background: linear-gradient(120deg, #f59e0b, #f97316); color: #fff; }
.btn.mini { padding: 6px 14px; }

/* 信息条：白底彩边 */
.bar { background: #fff; border: 2px solid #e0e7ff; border-radius: 14px;
  box-shadow: 0 2px 10px rgba(79,70,229,.08); }

/* 选项：明亮紫罗兰 */
.opt { border-radius: 14px; }
.opt:hover { border-color: #8b5cf6; background: #f5f3ff; }
.opt:has(input:checked) { border-color: #7c3aed; background: #ede9fe; box-shadow: inset 0 0 0 2px #c4b5fd; }
.opt input { accent-color: #7c3aed; }

/* 输入框：紫边聚焦 */
.panel select, .write { border: 2px solid #c7d2fe; border-radius: 10px; background: #fff; }
.panel select:focus, .write:focus { outline: none; border-color: #8b5cf6; box-shadow: 0 0 0 3px #ede9fe; }

/* 得分大字层：深空渐变聚焦 */
.flash { background: radial-gradient(circle at 50% 30%, #312e81, #0f172a 70%); }

/* 讲评卡 */
.dcell.ok { border-left: 5px solid #10b981; }
.dcell.bad2 { border-left: 5px solid #f43f5e; }
.scorebar { background: #eef2ff; border: 2px solid #e0e7ff; border-radius: 12px; }

/* 词块胶囊 */
.bankword { background: #eef2ff; border: 1px solid #c7d2fe; border-radius: 999px; }

/* 使用手册 */
.helpbody { white-space: pre-wrap; line-height: 1.7; font-weight: 700; }

/* 快速阅读答题：去掉选项前小圆点，整行文字即点选区 */
.stu-tight .opts .opt input[type="radio"], .no-radio .opts .opt input[type="radio"] { display: none; }
.stu-tight .opts .opt, .no-radio .opts .opt { gap: 0; }


/* ============ 教室大屏 · 学生解题演示（词汇检测镜像） ============ */
/* 零间距：行距/边距/圆角/阴影全归零，一屏一页禁止滚动，字号 12~90 可调 */
.demo-root { --dfont: 24px; overflow: hidden; }
.demo-root .rvbody { overflow: hidden; }
.demo-sheet .dwrap { gap: 0 14px; }
.demo-sheet .drow { margin: 0; padding: 0; border-radius: 0; box-shadow: none; }
.demo-sheet .dnum, .demo-sheet .dtext, .demo-sheet .dbx { line-height: 1.02; }
.demo-sheet .dtext { flex: 1 1 auto; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.demo-sheet .dbx { flex: 0 0 26%; border-bottom: 2px solid #64748b; min-height: 1.15em;
  color: #15803d; font-weight: 800; text-align: center; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.demo-sheet .dbx.en, .demo-sheet .dtext.en { color: #2563eb; }
#demoModal .dnum, #demoModal .dtext, #demoModal .dbx { font-size: var(--dfont, 24px); }
#demoModal .rvbar .btn, #demoModal .rvbar select, #demoModal .rvbar .fsbox { font-size: 15px; }

/* ============ 教室大屏 · 小组得分面板 ============ */
#gFont { font-size: 14px; }


/* ============ 听力训练：只留题目与选项，零间距 ============ */
.listening-tight .qcell { margin: 0; padding: 2px 0; border: 0; box-shadow: none; background: transparent; }
.listening-tight .stem { margin: 0; padding: 0; line-height: 1.15; }
.listening-tight .opts { margin: 0; }
.listening-tight .opts .opt { padding: 1px 0; margin: 0; line-height: 1.15; }


/* ============ 听力页录音进度条（只显示进度，不可拖动） ============ */
.audiobar { display: flex; align-items: center; gap: 10px; margin: 6px 0 2px; }
.ab-label { font-size: 13px; color: #475569; flex: none; }
.ab-track { flex: 1 1 auto; height: 10px; background: #e2e8f0; border-radius: 6px; overflow: hidden; }
.ab-fill { height: 100%; width: 0%; background: linear-gradient(90deg, #4338ca, #0891b2); transition: width .25s linear; }
.ab-time { font-size: 13px; color: #334155; flex: none; font-variant-numeric: tabular-nums; }


/* ============ 听力开始页（自动播放被拦截时的醒目入口） ============ */
.listen-splash { position: fixed; inset: 0; z-index: 60; background: rgba(241,245,249,.97);
  display: flex; align-items: center; justify-content: center; text-align: center; }
.listen-splash .ls-box { padding: 30px 40px; }
.listen-splash .ls-title { font-size: 24px; font-weight: 900; margin-bottom: 10px; color: #1e293b; }
.listen-splash .ls-hint { color: #475569; margin-bottom: 18px; line-height: 1.6; }


/* ============ 完形填空：双栏（原文/答题区各自滚动）+ 选项同行零间距 ============ */
.cloze-tight { position: relative; }
/* 上下两栏：上=原文（可滚动），下=答题区（可滚动），各自独立 */
.cloze-grid { display: grid; grid-template-columns: 1fr; gap: 8px; }
.cloze-passage { max-height: 44vh; overflow-y: auto; -webkit-overflow-scrolling: touch; margin: 0;
  line-height: 1.5; font-size: var(--qfont, 14px); }
.cloze-answers { max-height: 44vh; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 4px 8px;
  font-size: var(--qfont, 14px); }
.cloze-answers .qrow { display: flex; align-items: center; flex-wrap: wrap; gap: 0 4px;
  margin: 0; padding: 1px 0; border-bottom: 1px dashed #e2e8f0; }
.cloze-answers .qrow .qno { font-weight: 800; min-width: 2.4em; }
.cloze-answers .qrow .opt { display: inline-flex; align-items: center; margin: 0 10px 0 0; padding: 1px 6px;
  line-height: 1.2; border-radius: 6px; cursor: pointer; }
.cloze-answers .qrow .opt span { white-space: nowrap; }
/* 取消小圆点：直接点击选项，选中项高亮 */
.cloze-answers .qrow .opt input { display: none; }
.cloze-answers .qrow .opt.sel { background: #dbeafe; color: #1d4ed8; font-weight: 800; }
.cloze-answers .submitrow { margin-top: 8px; }


/* ============ 词汇讲评弹窗：零间距紧凑版（单元格间距0/文字贴边） ============ */
.rvbody.rv-vocab { padding: 0; }
.rv-vocab .dwrap { gap: 0 18px; }
.rv-vocab .drow { margin: 0; padding: 0 8px; border-radius: 0; box-shadow: none; }
.rv-vocab .dnum, .rv-vocab .dmark, .rv-vocab .dtext, .rv-vocab .dans { line-height: 1.0; padding: 0; }

/* ============ 听力/结果弹窗：原文区与逐题区上下两栏盒 ============ */
.res-orig, .res-items { border: 1px solid #cbd5e1; border-radius: 10px; padding: 10px 12px;
  margin: 10px 0; background: #fff; }
.res-orig { max-height: 36vh; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.res-items { max-height: 48vh; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.res-orig .passage { background: #f8fafc; margin: 6px 0; }


/* ============ 结果弹窗：按套分盒（原文+该套答案解析 同盒） ============ */
.res-set { border: 1px solid #cbd5e1; border-radius: 10px; padding: 10px 12px; margin: 12px 0; background: #fff; }
.res-set .passage { background: #f8fafc; }
.res-set .dhead { margin-top: 4px; }

/* ============ 完形结果弹窗：零间距紧凑版 ============ */
.rvbody.cz-res { padding: 0; }
.cz-res .dhead { margin: 0; padding: 0 8px; line-height: 1.1; }
.cz-res .passage { margin: 0; padding: 0 8px; line-height: 1.0; background: #fff; }
.cz-res .dcell { margin: 0; padding: 0 8px; border-radius: 0; box-shadow: none; }
.cz-res .dcell .dhead { margin: 0; padding: 0; }
.cz-res .dcell .opts .opt { margin: 0; padding: 0 0 0 1em; line-height: 1.05; }


/* ============ 选项选中高亮：JS 兜底（老安卓不支持 :has 选择器） ============ */
.opt.picked { border-color: #7c3aed; background: #ede9fe; box-shadow: inset 0 0 0 2px #c4b5fd; }
.stu-tight .opt.picked, .cloze-answers .opt.picked { border-color: #3b82f6; background: #dbeafe; box-shadow: inset 0 0 0 2px #93c5fd; }


/* ============ 错题库：零间距紧凑版 ============ */
.wrong-tight .bank { gap: 0; }
.wrong-tight .bank .opt { margin: 0; padding: 1px 4px; border-radius: 0; line-height: 1.15;
  border-bottom: 1px dashed #e2e8f0; }
.wrong-tight .panel { padding: 8px 10px; }
.wrong-tight .stem { margin: 0 0 4px; }

/* ============ 错题重做（听力）：上部音频+问题，下部选项 ============ */
.waudio { margin: 8px 0 4px; }
.wlisten-top .wq { margin: 3px 0; text-align: left; }

/* ============ 上下两抽屉（阅读检测页/错题重做页）：各自滚动、可折叠 ============ */
.pane { border: 1px solid #e2e8f0; border-radius: 8px; background: #fff; margin: 0 0 8px; overflow: hidden; }
.pane-head { padding: 5px 10px; background: #eef2f7; font-weight: 800; cursor: pointer;
  display: flex; justify-content: space-between; align-items: center; font-size: var(--qfont, 14px); }
.pane-tg { font-weight: 600; color: #475569; }
.pane-body { max-height: 44vh; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 6px 10px; }
.pane-body .passage { background: transparent; border: none; box-shadow: none; padding: 0; margin: 0; }
/* 语法检测页：备选词库文字统一蓝色 #0000FF */
.gbank .bankword { color: #0000ff; }

/* ============ 词汇讲评：答题纸单元格零间距、文字贴边 ============ */
.rv-vocab .dwrap { gap: 0; }
.rv-vocab .drow { margin: 0; padding: 0; }
.rv-vocab .dnum, .rv-vocab .dmark, .rv-vocab .dtext, .rv-vocab .dans { padding: 0; line-height: 1.0; }

/* ============ 完形讲评/错题重做：四个选项 2x2 排列，间距0文字贴边 ============ */
.cz-res .res-items .opts, .wmod-cloze .opts { display: grid; grid-template-columns: 1fr 1fr;
  gap: 0; margin: 0; padding: 0; }
.cz-res .res-items .opts .opt, .wmod-cloze .opts .opt { margin: 0; padding: 0;
  border-radius: 0; line-height: 1.35; }

/* ============ 阅读检测页：倒计时进度条 ============ */
.cdbar { height: 5px; background: #e2e8f0; border-radius: 3px; overflow: hidden; margin: 0 0 8px; }
.cdbar > div { height: 100%; width: 100%; background: linear-gradient(90deg, #3b82f6, #6366f1); }

/* ============ 朗读选中英文的浮动按钮 ============ */
#selSpeakBtn { position: absolute; display: none; z-index: 9999;
  background: #2563eb; color: #fff; border: none; border-radius: 14px;
  padding: 4px 12px; font-size: 14px; box-shadow: 0 2px 8px rgba(0,0,0,.25); cursor: pointer; }

/* ============ 七选五：词库长句逐行显示 + 序号 ============ */
.bank.bank-long { display: block;
  max-height: calc(4 * (var(--qfont, 14px) * 1.35 + 12px));   /* 视窗 4 行，其余滚动 */ }
.bank-long .bankword { display: block; margin: 0; padding: 3px 4px; border-radius: 0;
  border-bottom: 1px dashed #e2e8f0; line-height: 1.35; text-align: left; width: auto; }
.bletter { font-weight: 800; color: #1d4ed8; }

/* ===== 会员分级授权（20260925） ===== */
.mbanner { background: #eef2ff; border: 1px solid #c7d2fe; color: #3730a3;
  border-radius: 10px; padding: 8px 12px; margin: 6px 0 10px; font-size: 14px; }
.mbanner a { color: #4338ca; font-weight: 700; }
.tier-tag { font-style: normal; background: #fce7f3; color: #9d174d; border: 1px solid #f9a8d4;
  border-radius: 6px; padding: 0 6px; font-size: 12px; margin-left: 6px; vertical-align: 1px; }
.card-badge { font-size: 12px; color: #64748b; margin-top: 4px; }
.card-badge.vip { color: #b45309; font-weight: 700; }
.mtable { width: 100%; border-collapse: collapse; font-size: 14px; background: #fff; }
.mtable th, .mtable td { border: 1px solid #e2e8f0; padding: 6px 8px; text-align: left; }
.mtable th { background: #f1f5f9; }

/* ===== 原文分段（按换行符或 | 切段，20260925） ===== */
.passage p.pp, .cloze-passage p.pp { margin: 0; text-align: justify; }
.passage p.pp:last-child, .cloze-passage p.pp:last-child { margin-bottom: 0; }

/* ===== 账号管理：可排序列头（20260925） ===== */
.mtable th.sortable { cursor: pointer; user-select: none; }
.mtable th.sortable:hover { background: #e2e8f0; }
.mtable th.sortable.asc::after { content: ' ▲'; color: #4338ca; }
.mtable th.sortable.desc::after { content: ' ▼'; color: #4338ca; }

/* ===== 词汇检测 英译汉/汉译英 紧凑答题纸（20260925）：行距0、单元格上下间距0、
   选项每行3个、宽<15字符、左对齐超宽隐藏 ===== */
.vcompact.qgrid { gap: 0 12px; line-height: 1.15; }
.vcompact .qcell { margin: 0; padding: 2px 6px; border-radius: 6px; box-shadow: none; }
.vcompact .qcell .stem { margin: 0; padding: 0; line-height: 1.15; }
.vcompact .qcell .opts { margin-top: 0; grid-template-columns: repeat(3, 1fr); gap: 0 6px; }
.vcompact .qcell .opts .opt {
  max-width: 30ch; margin: 0; padding: 1px 4px; border: 0; border-radius: 4px;
  gap: 4px; line-height: 1.15; text-align: left;
  white-space: nowrap; overflow: hidden;
}
.vcompact .qcell .opts .opt span { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: clip; }

/* ===== 语法填空：正文空格处下拉三选一（20260927） ===== */
.gsel { font: inherit; font-size: inherit !important;
  border: 2px solid #cbd5e1; border-radius: 8px; padding: 0 2px;
  background: #fff; max-width: 300px; margin: 0 2px; }
.gsel option { font-size: inherit; }
.gsel:focus { border-color: #3b82f6; outline: none; background: #eff6ff; }

/* ===== 20260927 检测页紧凑优化 ===== */
/* 错题重做-词汇检测：选项三列、左右间距0 */
.wgap0.qgrid { gap: 0; }
/* 词汇检测反馈页：行距0、单元格间距0、文字距边界0 */
.rv-vocab { padding: 0 2px; }
.rv-vocab .dwrap, .rv-vocab .dcol { gap: 0; }
.rv-vocab .drow, .rv-vocab .dcell { margin: 0; padding: 2px 0; }
/* 阅读理解检测页：选项单元格间距0、文字距边界0 */
.rcompact { padding: 0 2px; }
.rcompact .qcell { margin: 0; padding: 2px 6px; border-radius: 6px; box-shadow: none; }
.rcompact .qcell .stem { margin: 0; padding: 0; }
.rcompact .qcell .opts { margin-top: 0; gap: 0; }
.rcompact .qcell .opts .opt { margin: 0; padding: 1px 4px; border: 0; border-radius: 4px; }
/* 语法填空：单栏原文占满屏 */
/* gpage：检测页隐藏站点头尾，内容区精确占满 100vh（普通/全屏都成立） */
body.gpage { display: flex; flex-direction: column; height: 100vh; height: 100dvh; margin: 0; }
body.gpage .hero, body.gpage .foot { display: none; }
body.gpage main.container { flex: 1 1 auto; min-height: 0; display: flex;
  flex-direction: column; padding: 0 8px 8px; overflow: hidden; }
body.gpage .stu-tight { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.gfull { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.gfull form { display: flex; flex-direction: column; flex: 1; }
.gfull .pane { display: flex; flex-direction: column; flex: 1; margin: 0; }
.gfull .pane-body { flex: 1; }
/* 完形填空：正文行距0、距边界0，选项文字距边界0 */
.cloze-tight .cloze-passage { padding: 0 2px; line-height: 1.15; }
.cloze-tight .cloze-passage p.pp { margin: 0; }
.cloze-tight .cloze-answers .qrow { margin: 0; }
.cloze-tight .cloze-answers .qrow .opt { margin: 0 8px 0 0; padding: 1px 2px; }
/* 七选五：备选词库 8 行限高、间距0 */
.gbank { max-height: calc(8 * (var(--qfont, 14px) * 1.15 + 14px)); }
.gbank .bankword { height: auto; }
.gbank { gap: 0 4px; }

/* ===== 20260927b 讲评与检测排版二次优化 ===== */
/* 1.词汇检测讲评：单元格上下间距全 0 */
.rv-vocab { padding: 0; }
.rv-vocab .drow, .rv-vocab .dcell { margin: 0; padding: 0; }
/* 2/5.语法填空讲评：上栏原文 2/3 高、下栏答案解析 1/3 高，各自滚动 */
.gres-top { max-height: 58vh; overflow-y: auto; }
.gres-bot { max-height: 28vh; overflow-y: auto; border-top: 2px solid #e2e8f0; }
/* 3.七选五备选词库：高度适应文本行数、间距 0 */
.bank-long .bankword { white-space: normal; height: auto; line-height: 1.35; }
.gbank { gap: 0; }
/* [已清理] 旧完形网格规则 */
.cloze-tight .cloze-passage { max-height: none; }
.cloze-tight .cloze-answers { max-height: none; }
/* 6.写作范文：选项无序号(*)、连续不分行、高度适应文字 */
.bank-inline { display: block; line-height: 2; }
.bank-inline .bankword { display: inline; padding: 0 12px 0 0; border: 0; border-radius: 0;
  background: none; height: auto; white-space: normal; }
.bank-inline .bank-star, .bankword.bank-star { color: #b432ff; font-weight: 800; }

/* ===== 20260927c 阅读理解：题目区 6 行高、原文占剩余；语法/写作全屏自适应 ===== */
/* 快速阅读检测页：原文栏弹性占满剩余高度，题目栏固定 6 行（框内滚动） */
/* rpage：检测页隐藏站点头尾，内容区精确 100vh，题目区贴底不溢出 */
body.rpage { display: flex; flex-direction: column; height: 100vh; height: 100dvh; margin: 0; }
body.rpage .hero, body.rpage .foot { display: none; }
body.rpage main.container { flex: 1 1 auto; min-height: 0; display: flex;
  flex-direction: column; padding: 0 8px 8px; overflow: hidden; }
body.rpage .stu-tight { flex: 1 1 auto; min-height: 0; }
.rfs { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; overflow: hidden; }
.rfs > .pane { flex: 1 1 0%; min-height: 0; display: flex; flex-direction: column;
  margin: 0; overflow: hidden; }   /* basis 0：原文只占“剩余空间”，随字号增大自动收窄 */
.rfs > .pane .pane-body { flex: 1 1 auto; min-height: 0; max-height: none;
  overflow-y: auto; padding: 0; }
.rfs .passage { line-height: 1.0; padding: 0; margin: 0; }
.rfs .passage p.pp { margin: 0; }
.rfs form { display: flex; flex-direction: column; flex: 0 0 auto; }
.rfs .pane-body.rquiz { flex: 0 0 auto; height: calc(8 * var(--qfont, 14px) * 1.35 + 18px);
  max-height: calc(100vh - 430px); overflow-y: auto; padding: 0; }
/* 3.写作范文全屏：原文自适应拉伸，词库栏自适应内容 */
.gfull .pane { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.gfull .pane-body { max-height: none; }   /* 解除 44vh 上限，占满剩余高度 */
.gfull .pane.panebank { flex: 0 0 auto; }
.gfull .pane-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; overflow-y: auto; }
.gfull .passage.card { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
/* 写作范文：词库栏限高滚动，原文保持主要空间 */
.gfull .panebank .pane-body { max-height: 30vh; overflow-y: auto; }

/* ===== 20260927b gfull 页面正文行距最紧（七选五/语法填空/写作范文） ===== */
.gfull .passage.card, .gfull .passage.card p.pp { line-height: 1.0; }

/* ===== 20260927c 快速阅读讲评：每套题 上/下滚动框 ===== */
.gscroll-top, .gscroll-bot { max-height: 40vh; overflow-y: auto; -webkit-overflow-scrolling: touch;
  border: 1px solid #e2e8f0; border-radius: 8px; padding: 4px 8px; background: #fff; }
.gscroll-bot { max-height: 36vh; }
.gscroll-top .passage { background: #fff; padding: 0; margin: 0; }
/* 20261012 讲评页内联涂鸦：画布直接放进滚动内容（absolute 随内容原生滚动，不依赖滚动事件）；
   阅读讲评盒子恢复常驻紧凑样式（不再随画笔展开） */
.ink-inline { touch-action: none; pointer-events: none; }
.ink-canvas.ink-inline { position: absolute; left: 0; top: 0; z-index: 30; cursor: crosshair; }

/* ===== 20260927c 阅读理解题目文字蓝色 ===== */
.rfs .rcompact .qcell { color: #0000ff; }


/* ===== 20261005 组卷页优化 ===== */
.setuprow { display: flex; gap: 18px; flex-wrap: wrap; align-items: flex-start; }
.bank2col label.radio, .bank4col label.radio { display: inline-flex; vertical-align: top; }
.bank2col label.radio { width: calc(50% - 12px); }
.bank4col label.radio { width: calc(25% - 18px); }
.bank2col label.radio span, .bank4col label.radio span { white-space: normal; word-break: break-word; }
.bank4col label.radio { display: inline-flex; width: calc(25% - 18px); vertical-align: top; }
#floatGo { position: fixed; top: 84px; right: 12px; left: auto; transform: none; z-index: 90;
  box-shadow: 0 10px 24px rgba(15, 23, 42, .3); }
@media (max-width: 760px) { #floatGo { display: none; } }

/* ===== 20261005 词库管理页 ===== */
.wordsrow { display: flex; gap: 18px; flex-wrap: wrap; align-items: flex-end; }
.wordsrow .hostform { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; margin: 0; }
.wgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 26px; align-items: start;
  justify-items: start; text-align: left; }
.wgrid .drow { margin-bottom: 0; }
@media (max-width: 760px) { .wgrid { grid-template-columns: 1fr; } }

/* ===== 20261005 检测页 UI 优化 ===== */
/* 1/2. 快速阅读：选项区 5 行限高、每行 2 选项、单元格间距 0、长选项向下扩展 2 行 */
.rfs .pane-body.rquiz { height: calc(5 * var(--qfont, 14px) * 1.35 + 18px); max-height: calc(100vh - 430px); }
.rfs .rcompact .qcell { margin: 0; padding: 0 6px; }
.rfs .rcompact .qcell .opts { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin-top: 0; }
.rfs .rcompact .qcell .opts .opt { margin: 0; padding: 1px 4px; border: 0; border-radius: 4px; }
.rfs .rcompact .qcell .opts .opt span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.3; }
/* 3. 七选五 gfull：上部原文内部滚动、下部选项栏固定不挤出屏幕 */
.gfull > .pane { min-height: 0; overflow: hidden; }
.gfull .pane-body { min-height: 0; overflow-y: auto; }
.gfull form { flex: 0 0 auto; }
.gfull form .pane { flex: 0 0 auto; min-height: 0; }
/* 4. 错题库快速阅读重做：套用检测页版式 */
.rfs > .pane.rq { flex: 0 0 auto; }

/* ===== 20260927d 选中态与错题重做满屏 ===== */
/* 阅读理解选中选项：浅黄底 + 紫色边框 */
.rfs .rcompact .opts .opt:has(input:checked) { background: #f7fd9d;
  border: 2px solid #b432ff; box-shadow: none; }
/* 语法填空下拉：选中后字体变蓝 */
.gsel:required:valid { color: #0000ff; font-weight: 800; }

/* ===== 20261005b 阅读检测页：上栏随文本自适应（上限=全屏-6行），下栏占满剩余 ===== */
.rfs > .pane { flex: 0 1 auto; max-height: calc(100vh - 6 * var(--qfont, 14px) * 1.35); }
.rfs > .pane .pane-body { max-height: none; }
.rfs form { flex: 1 1 auto; min-height: 0; }
.rfs .pane-body.rquiz { flex: 1 1 auto; min-height: 0; height: auto; max-height: none; }

/* 选项区溢出可滚动：格与格间距 0、文字贴边距 0 */
.rfs form .pane { min-height: 0; overflow: hidden; }
.rfs .rcompact .qcell .opts .opt { padding: 0; }

/* ===== 20261005d 七选五/完形检测页：原文自适应（<全屏-6行）、选项栏占满剩余可滚动 ===== */
.gfull > .pane { flex: 0 1 auto; min-height: 0; max-height: calc(100vh - 6 * var(--qfont, 14px) * 1.35); overflow: hidden; }
.gfull > .pane .pane-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
.gfull form { flex: 1 1 auto; min-height: 0; overflow: hidden; }
.gfull form .pane { flex: 1 1 auto; min-height: 0; overflow: hidden; display: flex; flex-direction: column; }
.gfull form .pane .pane-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
.gfull .gbank { max-height: none; }
.gfull .passage.card { flex: 0 1 auto; min-height: 0; max-height: calc(100vh - 6 * var(--qfont, 14px) * 1.35); }
.gfull form .panel { flex: 1 1 auto; min-height: 0; overflow: hidden; }
/* [已清理] 旧完形网格规则 */
.cloze-tight .cloze-passage { max-height: calc(100vh - 6 * var(--qfont, 14px) * 1.35); overflow-y: auto; }
/* 旧 6 行 max-height 已废弃：rpage 弹性网格精确分配两栏 */

/* ===== 20261005c 阅读检测页：选项区超出即滚动（最终版） ===== */
.rfs > .pane { flex: 0 0 auto; max-height: calc(100vh - 8 * var(--qfont, 14px) * 1.35); }
.rfs form { flex: 1 1 auto; min-height: 0; overflow: hidden; }
.rfs form .pane { flex: 1 1 auto; min-height: 0; height: 100%; overflow: hidden; }
.rfs .pane-body.rquiz { flex: 1 1 auto; min-height: 0; height: 100%; max-height: none; overflow-y: auto;
  -webkit-overflow-scrolling: touch; padding-bottom: 14px; }

/* ===== 20261005e 滚动链隔离 + 写作范文套用七选五版式 ===== */
.gfull .pane-body, .rfs .pane-body, .cloze-tight .pane-body { overscroll-behavior: contain; }
.gfull .panebank .pane-body { max-height: none; }

/* ===== 20261006b gfull 最终版：表单内双栏（原文自适应 < 全屏-6行；词库栏占满剩余滚动） ===== */
.gfull form > .pane:first-of-type:not(.panebank) { flex: 0 1 auto; min-height: 0;
  max-height: calc(100vh - 6 * var(--qfont, 14px) * 1.35); overflow: hidden; }
.gfull form > .pane:first-of-type:not(.panebank) .pane-body { flex: 1 1 auto; min-height: 0;
  max-height: none; overflow-y: auto; }
.gfull form > .pane:last-of-type { flex: 1 1 auto; min-height: 0; overflow: hidden;
  display: flex; flex-direction: column; }
.gfull form > .pane:last-of-type .pane-body { flex: 1 1 auto; min-height: 0; max-height: none;
  overflow-y: auto; }

/* ===== 20261007 管理后台题库列表 4 列左对齐 ===== */
#bankrows.bank4col { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 2px 14px;
  align-items: start; justify-items: start; }
#bankrows.bank4col .brow { display: inline-flex; margin: 0; padding: 2px 4px; box-shadow: none;
  border-radius: 6px; min-width: 0; max-width: 100%; }
#bankrows.bank4col .brow .radio { white-space: normal; word-break: break-word; }
#bankrows.bank4col .brow .btn { margin-left: 4px; }
@media (max-width: 1100px) { #bankrows.bank4col { grid-template-columns: 1fr 1fr; } }
@media (max-width: 760px) { #bankrows.bank4col { grid-template-columns: 1fr; } }

/* ===== 20261007b 听力音频管理 4 列 + 题库列表 4 列平分 ===== */
.audiogrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 14px;
  align-items: center; }
.audiogrid .hostform { margin: 0 !important; max-width: 100%; }
.audiogrid .hostform span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.audiogrid .hostform select { max-width: 100% !important; width: auto; flex: 1 1 auto; min-width: 6ch; }
.audiogrid .hostform span { flex: 1 1 auto; min-width: 8ch; }
#bankrows.bank4col { grid-template-columns: repeat(4, minmax(0, 1fr)); justify-items: stretch;
  gap: 2px 14px; }
#bankrows.bank4col .brow { width: 100%; max-width: 100%; }
#bankrows.bank4col .brow .radio { flex: 1 1 auto; min-width: 0; }
#bankrows.bank4col .brow .radio span { white-space: normal; word-break: break-word; }
@media (max-width: 1400px) { #bankrows.bank4col, .audiogrid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 1100px) { #bankrows.bank4col, .audiogrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) { #bankrows.bank4col, .audiogrid { grid-template-columns: 1fr; } }

/* ===== 20261007c 后台题库列表（readings/grammar/qwuxuan）4 列左对齐 ===== */
.bank4col.dwrap, div.bank4col { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 3px 14px; align-items: start; justify-items: start; }

/* 20261013 词汇组卷页词库目录：每行 5 列、每列一个词库（字母序由脚本排） */
.bank4col#libgrid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px 10px; }
.bank4col#libgrid label.radio { width: auto; display: block; line-height: 1.2; margin: 0; padding-top: 1px; padding-bottom: 1px; }
@media (max-width: 700px) { .bank4col#libgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.bank4col .drow, #bankrows.bank4col .brow { display: inline-flex; align-items: center;
  justify-content: flex-start; margin: 0; padding: 2px 4px; box-shadow: none; min-width: 0;
  max-width: 100%; text-align: left; }
.bank4col .drow .dtext, .bank4col .drow .dres { white-space: normal; word-break: break-word; }
.bank4col .drow .dres { flex: none; }
@media (max-width: 1400px) { div.bank4col { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 1100px) { div.bank4col { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) { div.bank4col { grid-template-columns: 1fr; } }

/* ===== 20261008 正文栏涂鸦 ===== */
.ink-canvas { position: absolute; left: 0; top: 0; z-index: 30; cursor: crosshair;
  touch-action: none; }
.ink-bar { display: inline-flex; gap: 4px; align-items: center; }
.ink-bar select { font-size: 12px; padding: 2px 4px; border: 2px solid #cbd5e1; border-radius: 6px;
  background: #fff; height: 26px; }
.inkbtn { width: 26px; height: 26px; border-radius: 50%; border: 2px solid #cbd5e1;
  background: #fff; cursor: pointer; font-size: 12px; line-height: 1; padding: 0; }
.inkbtn.on { border-color: #2563eb; box-shadow: 0 0 0 2px #dbeafe; }
.ink-red { color: #e11d48; }
.ink-yel { color: #f59e0b; }

/* ===== 20261008b 讲评页涂鸦 + 工具条文字 ===== */
.ink-label { font-size: 12px; font-weight: 700; color: #fff; background: linear-gradient(120deg, #6366f1, #8b5cf6); white-space: nowrap;
  cursor: pointer; padding: 3px 8px; border-radius: 6px; border: 2px solid transparent; }
.ink-label.pen-on { color: #fb923c; background: linear-gradient(120deg, #4f46e5, #7c3aed); border-color: #4c1d95; }
.ink-bar-rv .ink-color, .ink-bar-rv .ink-width { height: 26px; }
.rvbody .ink-canvas { z-index: 30; }

/* ===== 20261009 完形检测页（rpage 高度链）最终版 ===== */
body.rpage .cloze-tight { flex: 1 1 auto; min-height: 0; }
/* [已清理] 旧完形网格规则 */
.cloze-tight .cloze-passage { height: 100%; max-height: none; overflow-y: auto;
  overscroll-behavior: contain; }
.cloze-tight .cloze-answers { height: 100%; max-height: none; overflow-y: auto;
  -webkit-overflow-scrolling: touch; overscroll-behavior: contain; touch-action: pan-y; }
.cloze-tight .cloze-answers .qrow { line-height: 1.5; }

/* ===== 20261009c 完形下栏 Pad 触摸滚动：滚动链隔离 + 触摸动作 ===== */
.cloze-tight .cloze-answers { overscroll-behavior: contain; touch-action: pan-y; }
.cloze-tight .cloze-passage { overscroll-behavior: contain; }
/* 涂鸦画布只覆盖上栏原文，不得盖到下栏（避免拦截选项触摸） */

/* ===== 20261009d 完形 Pad 终版：两栏 box-sizing + 尾行余量 + 涂鸦画布全内容高 ===== */
.cloze-tight .cloze-grid,
.cloze-tight .cloze-grid .cloze-passage,
.cloze-tight .cloze-grid .cloze-answers { box-sizing: border-box; }
.cloze-tight .cloze-answers { padding-bottom: 18px; }
.cloze-tight .cloze-grid { gap: 0; }
/* 涂鸦画布：高度=容器内容总高（含滚动溢出部分），滚动时随内容移动 */


/* ===== 20261009e 完形检测页最终布局（自足规则，覆盖此前所有完形段落） ===== */
/* 结构：rpage(100vh) > container > stu-tight.cloze-tight(flex) > bar + cloze-grid(flex:1) */
/* 网格两行：上=原文(1fr 内滚)，下=选项表单(保底6行、1fr 内滚)；全部 border-box */
body.rpage .cloze-tight { display: flex; flex-direction: column; flex: 1 1 auto;
  min-height: 0; overflow: hidden; }
body.rpage /* [已清理] 旧完形网格规则 */
body.rpage .cloze-tight .cloze-grid > .cloze-passage { height: 100%; }
body.rpage .cloze-tight .cloze-grid > .cloze-passage,
body.rpage .cloze-tight .cloze-grid > .cloze-answers {
  height: auto; max-height: none; overflow-y: auto; box-sizing: border-box;
  overscroll-behavior: contain; -webkit-overflow-scrolling: touch; }
body.rpage .cloze-tight .cloze-grid > .cloze-answers { touch-action: pan-y;
  display: flex; flex-direction: column; }
body.rpage .cloze-tight .cloze-grid > .cloze-answers .qrow { flex: 0 0 auto; }
.cloze-tight .cloze-answers { padding-bottom: 18px; }
.cloze-tight .cloze-grid { gap: 0; }
/* ===== 20261009f 完形选项框：上下间距 0、显示上限 6 行 ===== */
body.rpage .cloze-tight .cloze-answers .qrow { padding: 0; margin: 0; }
body.rpage .cloze-tight .cloze-answers .qrow .opt { padding: 0; margin: 0 8px 0 0; }
body.rpage /* [已清理] 旧完形网格规则 */

/* ===== 20261009g 完形选项区行距/行边距压到 0 ===== */
body.rpage .cloze-tight .cloze-answers { line-height: 1; padding: 0; }
body.rpage .cloze-tight .cloze-answers .qrow { line-height: 1.8; gap: 0; padding: 0; margin: 0; }
body.rpage .cloze-tight .cloze-answers .qrow .qno,
body.rpage .cloze-tight .cloze-answers .qrow .opt,
body.rpage .cloze-tight .cloze-answers .qrow .opt span { line-height: 1; margin: 0; padding: 0; }
/* ===== 20261009h 阅读检测页最终布局（自足规则，与完形 20261009e 同款，覆盖历史段落） ===== */
/* 上栏=原文（1fr，内容自适应、内部滚动），下栏=选项（保底6行、1fr 内滚） */
body.rpage .rfs { display: flex; flex-direction: column; flex: 1 1 auto;
  min-height: 0; overflow: hidden; }
body.rpage .rfs .bar, body.gpage .stu-tight > .bar,
body.rpage .cloze-tight > .bar { position: relative; z-index: 40; }   /* 顶栏恒在画布之上 */
body.rpage .rfs > .pane { flex: 0 0 auto; min-height: 0; max-height: none;
  display: flex; flex-direction: column; overflow: hidden; }
body.rpage .rfs > .pane .pane-body { flex: 1 1 auto; min-height: 0;
  max-height: none; overflow-y: auto; overscroll-behavior: contain; }
body.rpage .rfs form { flex: 0 0 auto; min-height: 0; overflow: visible;
  display: flex; flex-direction: column; }
body.rpage .rfs form .pane { flex: 1 1 auto; min-height: 0; height: auto;
  display: flex; flex-direction: column; overflow: hidden; }
body.rpage .rfs .pane-body.rquiz { flex: 0 0 auto; min-height: 0;
  min-height: calc(6 * var(--qfont, 14px) * 1.5);
  height: auto; max-height: none; overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain; touch-action: pan-y; padding-bottom: 14px; }

/* ===== 20261009i 完形下栏内边距清零（消除上下各 2 行空白） ===== */
body.rpage .cloze-tight .cloze-answers { padding: 0 !important; }
body.rpage .cloze-tight .cloze-passage { padding: 0 2px !important; }

/* ===== 20261009j 完形下栏滚动终版保险（配合 clozeSplit 实际高模型） ===== */
body.rpage .cloze-tight .cloze-grid > .cloze-answers { display: flex; flex-direction: column;
  height: 100%; overflow-y: auto; -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain; touch-action: pan-y; }
body.rpage .cloze-tight .cloze-grid > .cloze-answers .qrow { flex: 0 0 auto; }

/* ===== 20261009k 完形新设计：上栏 ≤3/4 屏随文字伸缩；下栏吃满剩余（不设行数上限） ===== */
body.rpage .cloze-tight .cloze-grid > .cloze-passage { max-height: var(--cloze-top-max, 75vh); }
body.rpage .cloze-tight .cloze-grid > .cloze-answers { height: auto; }
/* ===== 20261012 上下栏按内容比例（下栏 ≤ 内容总高×1/4 定高内滚，上栏吃剩余）：覆盖 09k 的 height:auto ===== */
body.rpage .cloze-tight .cloze-grid > .cloze-answers { height: 100%; max-height: 100%; }

/* ===== 20261009l 完形选项行：每行 4 选项两端对齐平分 4 列 ===== */
body.rpage .cloze-tight .cloze-answers .qrow { display: grid;
  grid-template-columns: 2.4em repeat(4, minmax(0, 1fr)); align-items: center; }
body.rpage .cloze-tight .cloze-answers .qrow .qno { min-width: 0; }
body.rpage .cloze-tight .cloze-answers .qrow .opt { margin: 0; padding: 0 2px;
  justify-content: flex-start; }
body.rpage .cloze-tight .cloze-answers .qrow .opt span { white-space: normal;
  word-break: break-word; }
@media (max-width: 760px) {
  body.rpage .cloze-tight .cloze-answers .qrow { grid-template-columns: 2.4em repeat(2, minmax(0, 1fr)); }
}

/* ===== 20261009m 正文行距 1.2（快速阅读/完形检测页） ===== */
body.rpage .rfs .passage, body.rpage .rfs .passage p.pp { line-height: 1.2; }
.cloze-tight .cloze-passage, .cloze-tight .cloze-passage p.pp { line-height: 1.2; }

/* ===== 20261009n 阅读检测页（20261009h 模型让位 rfsSplit 实际高）+ 上栏 3/4 屏上限 ===== */
body.rpage .rfs > .pane { min-height: 0; max-height: none; }
body.rpage .rfs .pane-body.rquiz { min-height: 0; height: 100%; }
body.rpage .rfs .pane-body { height: 100%; }
/* 上栏上限 = 可用高 × 3/4（JS 设 --rfs-top-max，随视口/字号联动） */
body.rpage .rfs .pane-body.rquiz { max-height: var(--rfs-top-max, none) !important; }
body.rpage .rfs > .pane .pane-body { max-height: none !important; }   /* 上栏不受限，随文字/JS */
/* ===== 20261009m2 gsel 下拉字号=正文字号（撤销 14 固定） ===== */
.gsel { font-size: inherit !important; }

/* ===== 20261009o gfull 语法/写作/七选五最终布局（自足规则，压住历史段落） ===== */
/* 链：gpage(100dvh) > container > stu-tight > form(flex:1) > pane×2 */
/* 上栏：随文字伸缩、上限 = 可用 × 3/4（dvh 实测视口）；下栏：吃满剩余，保底 6 行 */
body.gpage .stu-tight { height: 100vh; height: 100dvh; }
.gfull form { flex: 1 1 auto !important; min-height: 0; overflow: hidden; }
.gfull form > .pane:first-of-type:not(.panebank):not(:last-of-type) { flex: 0 1 auto !important;
  max-height: calc((100dvh - 110px) * 0.75) !important; min-height: 0; }
.gfull form > .pane:first-of-type:last-of-type:not(.panebank) { max-height: none !important; }
.gfull form > .pane:last-of-type { flex: 1 1 auto !important; min-height: calc(6 * var(--qfont, 14px) * 1.5); }
.gfull form > .pane:last-of-type .pane-body { max-height: none; }
.gsel { font-size: inherit !important; }
.gsel option { font-size: inherit !important; }
/* ===== 20261009p gfull 终版修正 ===== */
/* 1) dropdown 模式（语法三选一）form 内只有一个 pane：
      :last-of-type 命中同一元素让其 flex:1 吃满剩余——正是 dropdown 需要的（无下栏）。
      20261009p 的旧豁免（flex:0 1 auto）导致下栏区 189px 空白，已废除 */
/* 2) 废除 20261005d 的 form 外 pane 旧上限（100vh 视口陷阱） */
.gfull > .pane { max-height: none; }
.gfull .passage.card { max-height: none; }
/* 3) 顶栏与页脚间距精确化：form 高度 = stu-tight − bar（flex 自动）*/
body.gpage .stu-tight .bar { flex: 0 0 auto; }
/* ===== 20261009n2 手机端紧凑（华为/鸿蒙等小屏拥挤缓解） ===== */
@media (max-width: 760px) {
  .bar { padding: 6px 8px; font-size: 13px; gap: 5px; }
  .bar .btn.mini { padding: 4px 8px; font-size: 12px; }
  h2 { font-size: 17px; margin: 8px 0; }
  .stu-tight .bar span { font-size: 12px; }
  .timer { font-size: 13px; }
}

/* ===== 20261009x 完形网格权威定义（清淤后唯一规则） ===== */
.cloze-tight .cloze-grid { display: grid; flex: 1 1 auto; min-height: 0; height: 100%;
  gap: 0;
  grid-template-rows: minmax(0, auto) minmax(calc(6 * var(--qfont, 14px) * 1.5), 1fr); }
  /* 20261020 上栏随文字伸缩（auto，clozeSplit 定 --cloze-top-max = 内容×2/3 封顶），下栏吃剩余（保底 6 行、内滚） */

/* ===== 20261009p2 画布不参与布局：CSS 高度 100%（像素层仍覆盖全内容） ===== */


/* ===== 20261010a 涂鸦终案：wrap fixed 钉 host 可视区+overflow 裁剪；画布=内容全高，transform 随滚动平移 ===== */
.ink-wrap { position: fixed; left: 0; top: 0; width: 0; height: 0; z-index: 30;
  pointer-events: none; overflow: hidden; }   /* 尺寸由 JS 同步为 host 可视区；overflow 把滚出可视区的画布裁掉（不遮顶栏/下栏，命中区同裁） */
.ink-wrap .ink-canvas { position: absolute; left: 0; top: 0;
  pointer-events: auto; touch-action: none; }
.ink-canvas { position: absolute; left: 0; top: 0; z-index: 30; cursor: crosshair; }

/* 无 Fullscreen API 老内核的 CSS 伪全屏兜底（togglePageFs 用） */
html.pagefs { position: fixed; inset: 0; z-index: 9998; background: #fff; overflow: auto; }

/* 20261013 错题重做（多套阅读）：整页滚动模式——rfs 自身滚动、窗格自然高度，
   修复多套题时窗格 flex:0 0 auto 堆叠超出 100dvh 被 overflow:hidden 裁掉的问题 */
body.rpage .rfs.wrong-multi { overflow-y: auto; -webkit-overflow-scrolling: touch; }
body.rpage .rfs.wrong-multi .pane { height: auto; max-height: none; overflow: visible; }
body.rpage .rfs.wrong-multi .pane .pane-body { height: auto; max-height: none; overflow: visible; }
body.rpage .rfs.wrong-multi .pane .pane-head { position: sticky; top: 0; background: #eef2ff; z-index: 5; }
/* 20261013 各模块讲评页上栏正文盒 + 错题重做页上栏正文框：紫色边线 */
.rvbody .gscroll-top, .rvbody .res-orig, .rvbody .gres-top { border: 2px solid #7c3aed; }
.stu-tight .pane .pane-body.passage-box { border: 2px solid #7c3aed; box-sizing: border-box; }
/* 20261013 检测页上栏文本框：统一紫色边线（快速阅读/完形/七选五·语法·写作） */
body.rpage .rfs > .pane .pane-body#rdPassage,
.cloze-tight .cloze-passage,
.gfull .passage.card { border: 2px solid #7c3aed; box-sizing: border-box; }

/* 20261013 写作检测页下栏按内容比例（复制完形格式）：下栏 ≤ 可视区×1/4 定高内滚（writerSplit 定 --wr-bot-h），上栏吃剩余 */
body.gpage .gfull form > .pane.panebank:last-of-type { flex: 0 0 auto !important; min-height: 0; height: auto; }
body.gpage .gfull .panebank .pane-body { min-height: var(--wr-bot-h, 30vh) !important; max-height: var(--wr-bot-h, 30vh) !important; box-sizing: border-box; }
body.gpage .gfull form > .pane.wr-grow:first-of-type:not(.panebank):not(:last-of-type) { flex: 1 1 0% !important; max-height: none !important; min-height: 0 !important; height: auto !important; }
body.gpage .gfull form > .pane.wr-grow .passage.card { height: 100%; }

/* ================= 20261013 趣览板块（主页三栏 + 弹出展示） ================= */
.funzone { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; margin-top: 16px; }
@media (max-width: 900px) { .funzone { grid-template-columns: 1fr; } }
.funpanel { background: #fff; border: 2px solid #7c3aed; border-radius: 12px;
  padding: 12px 14px; box-shadow: 0 2px 10px rgba(15, 23, 42, .06); }
.funtitle { font-size: 17px; font-weight: 800; color: #5b21b6;
  border-bottom: 2px solid #ede9fe; padding-bottom: 8px; margin-bottom: 8px; }
.funitem { padding: 7px 8px; border-radius: 8px; cursor: pointer; line-height: 1.5;
  border-bottom: 1px dashed #e2e8f0; font-size: 15px; }
.funitem:hover { background: #f5f3ff; }
.funitem .funsub { color: #64748b; font-size: 13px; }
.funempty { color: #94a3b8; font-size: 13px; padding: 8px 6px; }
.funmodal { position: fixed; inset: 0; background: rgba(15, 23, 42, .55); z-index: 200;
  display: flex; align-items: center; justify-content: center; padding: 18px; }
.funbox { position: relative; background: #fff; border-radius: 14px; border: 2px solid #7c3aed;
  max-width: 720px; width: 100%; max-height: 86vh; overflow-y: auto; padding: 18px 22px;
  -webkit-overflow-scrolling: touch; }
.funbox .fundefs { position: absolute; right: 10px; top: 8px; border: none; background: #f1f5f9;
  border-radius: 8px; width: 30px; height: 30px; font-size: 15px; cursor: pointer; }
.funbox .fundefs:hover { background: #e2e8f0; }
.funhead { font-size: 20px; font-weight: 800; color: #5b21b6;
  border-bottom: 2px solid #ede9fe; padding-bottom: 8px; margin-bottom: 12px; }
.lyrics, .funtext { white-space: pre-wrap; font-size: 16px; line-height: 1.9;
  color: #1e293b; font-family: inherit; margin: 0; }
.funimg { max-width: 100%; border-radius: 10px; margin: 8px 0; display: block; }
.funs hymuted, .funmuted { color: #94a3b8; font-size: 13px; margin: 6px 0; }

/* ================= 20261013 组卷页题库树形分组（年份→同名套题→题目） ================= */
.bkyrhead, .bkbasehead { cursor: pointer; font-weight: 700; padding: 6px 10px;
  border-radius: 8px; user-select: none; }
.bkyrhead { background: #ede9fe; color: #5b21b6; font-size: 15px; margin-top: 10px; }
.bkbasehead { background: #f5f3ff; color: #4c1d95; font-size: 14px; margin: 4px 0 2px 8px; }
.bkcnt { color: #64748b; font-weight: 400; font-size: 13px; }
.bkselall { color: #2563eb; font-size: 13px; margin-left: 10px; text-decoration: underline; }
.bkar { display: inline-block; margin-right: 6px; transition: transform .15s; }
.bkopen .bkar { transform: rotate(90deg); }
.bkbase .bkrows { display: none; margin-left: 16px; }
.bkbase.bkopen .bkrows { display: block; }
.bkyr:not(.bkopen) .bkbody { display: none; }

/* 管理后台题库列表树形化：4 列网格改单列树 */
.bank4col.bkactive { display: block; }
.bank4col .bkrows .drow, .bank4col .bkrows .brow { margin: 0 0 2px 0; }

/* 词汇组卷页：检测模式与其它设置项同行 */
.vocab_setup .row { align-items: center; gap: 10px; }
.vocab_setup .mlabel { font-weight: 700; color: #334155; white-space: nowrap; }
.vocab_setup .radio { display: inline-flex; align-items: center; margin: 0 6px 0 0; white-space: nowrap; }

/* 点拨高亮（阅读检测页）：默认透明，点击某题后仅该题线索句黄底 + 题号角标 */
mark.clue { background: transparent; color: inherit; padding: 0; transition: background .2s; }
mark.clue.on { background: #fde68a; border-radius: 3px; box-shadow: 0 0 0 2px #fde68a; }
mark.clue sup.clueq { display: none; font-size: 11px; font-weight: 700; color: #b45309; vertical-align: super; margin-left: 2px; }
mark.clue.on sup.clueq { display: inline; }

/* 阅读检测页顶栏：主页/点拨/交卷/全屏四按钮紧凑化，与本行文字同体积 */
#rdBar .btn { font-size: 13px; padding: 4px 10px; }
@media (max-width: 760px) {
  #rdBar .btn { font-size: 12px; padding: 4px 8px; }
}

/* 听力/完形/语法/七选五/写作范文检测页顶栏：按钮全部同尺寸 14px（手机 12px）；
   align-items:center 防止与字号下拉同行的按钮被 flex 拉伸变形 */
#lsBar, #czBar, #grBar { align-items: center; }
#lsBar .btn, #czBar .btn, #grBar .btn { font-size: 14px; padding: 4px 10px; line-height: 1.25; }
/* 画笔开/关按钮（ink-label）与同栏按钮同高：字号随按钮，内边距减 2px 抵消其 2px 边框 */
#lsBar .ink-label, #czBar .ink-label, #grBar .ink-label { font-size: 14px; padding: 2px 8px; line-height: 1.25; }
@media (max-width: 760px) {
  #lsBar .btn, #czBar .btn, #grBar .btn { font-size: 12px; padding: 4px 8px; }
  #lsBar .ink-label, #czBar .ink-label, #grBar .ink-label { font-size: 12px; }
}

/* 词汇检测页顶栏：主页/交卷/全屏（含隐藏答题框）按钮 高20px 字14px */
#vocabBar { align-items: center; }
#vocabBar .btn { height: 20px; box-sizing: border-box; font-size: 14px; padding: 0 10px;
  display: inline-flex; align-items: center; justify-content: center; line-height: 1; }

/* 组卷页首行合并：标题与分类/调取方式/检测模式（栏目）同一行，行距约半行；
   原"主页"横条行已删除（站点顶导航仍在） */
.setuptop { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin-bottom: 6px; line-height: 1.25; }
.setuptop .setuptitle { margin: 0; white-space: nowrap; font-size: 17px; line-height: 1.25; }
.setuptop.panel { padding: 6px 12px; }
@media (max-width: 760px) {
  .setuptop .setuptitle { white-space: normal; }
}

/* 听力/阅读/完形组卷页首行：调取方式框内行距 0.1（极紧凑）——
   两个方式并排一行、去 8px 项边距与 12px 框边距，首行高度大幅压缩 */
.setuptop fieldset { margin: 0; padding: 2px 10px 3px; }
.setuptop fieldset legend { padding: 0 6px; line-height: 1.2; }
.setuptop fieldset label.radio { display: inline-flex; align-items: center; vertical-align: middle; margin: 0; gap: 4px; }

/* 阅读讲评页"💡 点评"：默认隐藏，点按钮后显示各题答题提示行并在原文高亮定位句 */
.rvmodal .qhint { display: none; }
.rvmodal.rv-clues .qhint { display: block; background: #fffbeb; border-left: 3px solid #f59e0b;
  padding: 3px 8px; margin: 4px 0; border-radius: 4px; cursor: pointer; line-height: 1.4; }
.rvmodal.rv-clues .qhint b { color: #b45309; }
.rvmodal mark.clue { background: transparent; color: inherit; }
.rvmodal.rv-clues mark.clue { background: #fde68a; border-radius: 3px; box-shadow: 0 0 0 2px #fde68a; }
.rvmodal mark.clue sup.clueq { display: none; font-size: 11px; font-weight: 700; color: #b45309; margin-left: 2px; }
.rvmodal.rv-clues mark.clue sup.clueq { display: inline; }

/* 六模块组卷页（听力/阅读/七选五/完形/语法/写作，#setupForm）题库目录叶行每行 2 列；
   树形分组（年库名→套题名→条目）保留，管理后台同款树不受影响 */
#setupForm .bank4col .bkbase.bkopen .bkrows { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 16px; }
#setupForm .bank4col .bkrows label.radio { margin: 0; }
#setupForm .bank4col .bkbase.bkopen .bkrows label.radio { display: flex; width: auto; margin: 0; }
#setupForm .bank4col:not(#libgrid) > label.radio { width: calc(50% - 12px); }

/* 组卷页题库目录（续）：一级（年份）每行 2 列；目录字号统一 14 号（计数/备注 12 号）。
   :has(> .bkyr) 仅在树形已生成时生效；排除 #libgrid（词汇页保持 4 列 16 号） */
#setupForm .bank4col:not(#libgrid):has(> .bkyr) { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 16px; align-items: start; }
#setupForm .bank4col:not(#libgrid):has(> .bkyr) > .rate-legend { grid-column: 1 / -1; }
#setupForm .bank4col:not(#libgrid) label.radio { font-size: 14px; }
#setupForm .bank4col:not(#libgrid) label.radio small { font-size: 12px; }
#setupForm .bank4col .bkyrhead { font-size: 14px; }
#setupForm .bank4col .bkbasehead { font-size: 14px; }
#setupForm .bank4col .bkcnt { font-size: 12px; }
@media (max-width: 700px) {
  #setupForm .bank4col:not(#libgrid):has(> .bkyr) { grid-template-columns: 1fr; }
}

/* 组卷页题库三级目录内所有辅助文字统一 14 号（叶行备注、各级计数、全选、错题率图例） */
#setupForm .bank4col:not(#libgrid) label.radio small { font-size: 14px; }
#setupForm .bank4col .bkcnt { font-size: 14px; }
#setupForm .bank4col .bkselall { font-size: 14px; }
#setupForm .bank4col .rate-legend { font-size: 14px; }
#setupForm .bank4col .rate-legend i { font-size: 14px; }

/* 单词听读左侧列表：首字母分组（A/B/C…），组头箭头展开/收起 */
.lgrouphead { cursor: pointer; font-weight: 700; font-size: 14px; color: #4c1d95;
  background: #f5f3ff; border-radius: 6px; padding: 4px 8px; margin: 2px 0; user-select: none; }
.lgrouphead .lcnt { color: #64748b; font-weight: 400; font-size: 14px; }
.lgar { display: inline-block; margin-right: 6px; transition: transform .15s; }
.lgroup.open .lgar { transform: rotate(90deg); }
.lgroupbody { display: none; }
.lgroup.open .lgroupbody { display: block; }
.lgroup.open .lgroupbody { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 10px; }

/* 单词听读左侧：字母组每行 2 列（标题+展开体同格；组内清单改单列，半宽下保证可读） */
#wordlist { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 10px; align-items: start; }
.lgroup.open .lgroupbody { display: block; }

/* 单词听读列表：序号绿色（不影响词名颜色与错题率着色） */

/* 单词听读：左栏加宽 4 字符（320→384px），词汇不显示序号 */
.listen-grid { grid-template-columns: 384px 1fr; }

/* 后台趣览内容管理：可编辑卡片 */
.fcard-wrap .panel { margin-bottom: 14px; }
.fcard { border: 1px solid #e2e8f0; border-radius: 8px; padding: 6px 8px; margin: 6px 0; background: #f8fafc; }
.fcard .fdel { margin-right: 4px; }


/* ===== 首页轨道布局：10 栏目绕中央蓝色星球（星球直径=卡片环绕的最小内径） ===== */
.orbit-wrap { display: flex; justify-content: center; margin: -70px 0 12px; }   /* 整体上移贴近标题行 */
.orbit { position: relative; width: min(94vw, 620px); aspect-ratio: 1 / 1; }
/* 太极八卦（中央）：阴阳鱼 + 八字环绕；点击触发金光/龙王动画 */
.taiji-wrap { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  z-index: 6; }
.taiji-rim { position: relative; width: 5.4em; height: 5.4em; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  transition: box-shadow 2.4s ease; }
#bagua { position: absolute; left: 0; top: 0; width: 100%; height: 100%; pointer-events: none; }
.taiji-wrap.glow .taiji-rim { box-shadow: 0 0 30px 10px rgba(255, 215, 0, .75), inset 0 0 20px rgba(255, 215, 0, .5); }
.taiji { position: relative; width: 3.4em; height: 3.4em; margin: 0; border-radius: 50%;
  background: linear-gradient(90deg, #f8fafc 50%, #1e293b 50%);
  box-shadow: 0 4px 16px rgba(2, 6, 23, .35), 0 0 0 3px rgba(148, 163, 184, .3); }
.taiji::before, .taiji::after { content: ''; position: absolute; left: 25%; width: 50%; height: 50%; }
.taiji::before { top: 0; background: #1e293b; border-radius: 50%; }
.taiji::after { bottom: 0; background: #f8fafc; border-radius: 50%; }
.taiji .teye { position: absolute; width: 14%; height: 14%; border-radius: 50%; left: 43%; }
.taiji .teye1 { top: 18%; background: #f8fafc; }
.taiji .teye2 { bottom: 18%; background: #1e293b; }
#bagua span { position: absolute; transform: translate(-50%, -50%); font-size: 0.62em;
  color: #7c2d12; font-weight: 700; text-shadow: 0 0 6px rgba(255, 215, 0, .55); }
#dragon { position: absolute; left: 0; top: 0; width: 36%; opacity: 0; z-index: 9;
  pointer-events: none; filter: drop-shadow(0 0 14px rgba(255, 215, 0, .55)); }
.palace-bubble { position: absolute; left: 50%; top: calc(50% - 120px); transform: translate(-50%, -50%);
  background: linear-gradient(135deg, #fef9c3, #fde68a); color: #92400e; font-weight: 800;
  padding: 5px 12px; border-radius: 10px; border: 2px solid #f59e0b; font-size: 14px;
  white-space: nowrap; opacity: 0; transition: opacity .4s; z-index: 10; pointer-events: none; }
.palace-bubble.show { opacity: 1; }
.orbit-card.pulse { transform: scale(1.12); box-shadow: 0 0 18px rgba(255, 215, 0, .65); }
.orbit-card { position: absolute; width: 26%; height: 16%; display: flex; flex-direction: column;
  align-items: center; justify-content: center; text-decoration: none; color: inherit;
  background: #fff; border: 2px solid #c7d2fe; border-radius: 14px;
  box-shadow: 0 3px 12px rgba(79, 70, 229, .14); transition: transform .15s, box-shadow .15s; }
.orbit-card:hover { transform: scale(1.06); box-shadow: 0 6px 20px rgba(79, 70, 229, .3); z-index: 5; }
.orbit-card .card-icon { font-size: clamp(18px, 3.4vw, 26px); line-height: 1.2; }
.orbit-card .card-title { font-weight: 800; font-size: clamp(12px, 2.1vw, 15px); color: #3730a3;
  white-space: nowrap; }
