 .review-practice{background:#f8fafc;color:#172033;min-height:85vh;font:16px/1.7 Arial,sans-serif}.review-practice *{box-sizing:border-box}.rp-header,.rp-body{max-width:960px;margin:auto;padding:24px}.rp-header{background:white;border-bottom:1px solid #e5e7eb}.rp-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0}.rp-row>span:last-child{margin-left:auto}.rp-button,.rp-link,.rp-option{font:inherit;cursor:pointer;border:1px solid #d6dce5;border-radius:9px;background:white;color:#263448;padding:10px 18px}.rp-link{border:0;background:transparent;padding:6px 0}.rp-header .rp-row:first-child{justify-content:space-between}.rp-button:hover,.rp-option:hover{background:#edf2fa}.rp-button:disabled,.rp-option:disabled{opacity:.45;cursor:default}.rp-primary,.rp-selected{background:#243c62!important;color:white!important;border-color:#243c62}.rp-card{background:white;border:1px solid #e5e7eb;border-radius:16px;padding:24px;margin:20px 0;box-shadow:0 2px 5px #00000005}.rp-math{white-space:normal;overflow-wrap:break-word;min-width:0}.rp-math img{max-width:100%;height:auto;max-height:480px;display:block;margin:14px auto;border:1px solid #e4e9f0;border-radius:10px;background:#fff;box-shadow:0 1px 3px #0000000d}.rp-options{display:grid;gap:12px}.rp-option{text-align:left;width:100%}.review-practice textarea{width:100%;font:inherit;resize:vertical;background:white;padding:18px;border:1px solid #d6dce5;border-radius:12px;margin-top:16px;min-height:90px}.review-practice :focus-visible{outline:3px solid #6595e9;outline-offset:3px}.rp-muted{color:#68768b;font-size:14px}.rp-error{color:#a12626;white-space:pre-wrap}.rp-result{background:#eaf1fb;padding:16px;border-radius:9px}.rp-actions{border-top:1px solid #e5e7eb;margin-top:24px;padding:12px 0 40px}.rp-field{display:flex;align-items:center;gap:8px}.rp-field select{font:inherit;background:white;border:1px solid #d6dce5;border-radius:8px;padding:8px;max-width:220px}.rp-backdrop{position:fixed;inset:0;background:#15203388;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.rp-dialog{width:600px;max-width:100%;max-height:85vh;overflow:auto;background:white;padding:24px;border-radius:18px}.rp-dialog a{color:#1a57a5;text-decoration:underline}.rp-loading{text-align:center;padding:60px}.rp-dialog h2{font-size:22px}.rp-card h3{font-weight:bold}.review-practice .katex-display{overflow-x:auto;overflow-y:hidden}@media(max-width:600px){.rp-header,.rp-body{padding:16px}.rp-button{padding:9px 12px}.rp-card{padding:17px}.rp-row{gap:8px}.rp-actions .rp-row{align-items:stretch}.rp-dialog{padding:16px}.rp-field{width:100%}.rp-field select{flex:1}.rp-math{font-size:16px}}

.rp-paragraph{display:block;margin:0 0 .75em;line-height:1.85}
.rp-submit-hint{font-size:13px;color:#68768b;display:inline-block;margin-left:4px}
.rp-paragraph:last-child{margin-bottom:0}
.rp-math-block{display:block;max-width:100%;overflow-x:auto;overflow-y:hidden;margin:.75em 0;padding:3px 0}
.rp-math-block:last-child{margin-bottom:0}
.review-practice .rp-math-block .katex-display{margin:0;text-align:left}
.rp-math-inline{display:inline}
.rp-options .rp-paragraph{display:inline}
.rp-math-inline{display:inline-block;max-width:100%;overflow-x:auto;overflow-y:hidden;vertical-align:middle;padding:2px .2em}

.rp-resume{position:relative;padding-right:48px}
.rp-resume-close{position:absolute;right:12px;top:8px;font-size:24px;min-width:32px}
.rp-resume .rp-row{gap:20px;margin-bottom:0}

/* 真题页：按钮组包进 .rp-row 后，左右/上下间距由 flex gap 统一控制（12px），
   不再出现按钮直挂 card/body 导致的重叠（曾测到 gapY 为负值）。
   基础规则见本文件第 1 行的 .rp-row（display:flex; gap:12px; flex-wrap:wrap），此处只补间距。 */
/* 卷内阅读页：三个按钮一行，顺序 展开／收起参考解析 → 讨论这道题 → 视频详解 */
.paper-surface .rp-card>.rp-row{flex-wrap:wrap;margin:12px 0 0}
/* 列表页：真题收藏／真题错题 与上方文字留出间距 */
.paper-surface .rp-body>.rp-row{margin-top:12px}

/* ---- 真题页（/papers）专属：与"专题复习"页(/topics)的按钮风格对齐 ----
   作用域限定在 .paper-surface（由 paper-client.js 给根元素添加）；
   practice / resource 页面虽共用 .review-practice 但不带此类，因此不受影响。
   对齐目标（实测 /topics 计算样式）：内边距 8px 16px、圆角 8px、
   深色主按钮近黑 #111827；正文与按钮之间留 12px。
   实测 DOM：root(.paper-surface) > div.rp-body > nav.rp-row > a.rp-button */
.paper-surface .rp-body>nav.rp-row{margin:12px 0}
.paper-surface .rp-body>nav.rp-row .rp-button{padding:8px 16px;border-radius:8px;font-size:16px;line-height:1.25}
.paper-surface .rp-body>nav.rp-row .rp-button[aria-current=page]{background:#111827;border-color:#111827;color:#fff}
.paper-surface .rp-body>p{margin:0 0 12px}

/* ============================================================================
   练习页（/practice）专属设计 —— 作用域 .practice-surface
   ----------------------------------------------------------------------------
   为什么必须限定作用域：本文件被 5 个页面共用
   （/papers /practice /videos /discussions /updates），它们都带 .review-practice
   根类。只有练习页的根元素额外带 .practice-surface（由 practice-client.js 添加），
   因此下列规则不会波及其他页面。
   字体策略：英文/数字优先 Geist/Inter（可自托管，体积小），中文回退到各平台已装
   字体（Windows→微软雅黑，macOS→苹方），避免下载 5~15MB 的完整中文字体。
   ============================================================================ */
.practice-surface{
  --ps-ink:#141922;      /* 主文字 */
  --ps-ink-2:#4a5568;    /* 次级 */
  --ps-ink-3:#7b8794;    /* 元信息 */
  --ps-line:#e3e7ee;     /* 描边 */
  --ps-line-2:#eef1f6;   /* 更浅的分隔线 */
  --ps-canvas:#f6f7f9;   /* 页面底 */
  --ps-accent:#111827;   /* 唯一强调色 */
  --ps-radius:14px;      /* 卡片圆角（与按钮 8~10px 同族） */
  --ps-font:"Geist","Inter","Segoe UI",system-ui,
            "Noto Sans SC","PingFang SC","Microsoft YaHei","Source Han Sans SC",
            -apple-system,sans-serif;
  --ps-mono:"Geist Mono","Cascadia Mono",Consolas,ui-monospace,monospace;
  background:var(--ps-canvas);
  color:var(--ps-ink);
  font-family:var(--ps-font);
  font-size:16px;
}

/* ---------- 顶部：收敛为一条紧凑信息条（原为 3 块重复提示） ---------- */
.practice-surface .rp-header{
  background:#fff;
  border-bottom:1px solid var(--ps-line);
  padding:14px 24px;
}
/* 标题行（返回专题 / 重新开始）作为一条低调的信息条 */
.practice-surface .rp-header>.rp-row:first-child{
  justify-content:flex-start;gap:18px;margin:0;
  font-size:13px;color:var(--ps-ink-3);
}
.practice-surface .rp-header>.rp-row:first-child .rp-link{
  font-size:13px;color:var(--ps-ink-3);padding:2px 0;
}
.practice-surface .rp-header>.rp-row:first-child .rp-link:hover{color:var(--ps-ink)}
/* 进度/关联信息：小号、次级色，避免与题干抢注意力 */
.practice-surface .rp-header>p.rp-muted{font-size:12px;color:var(--ps-ink-3);margin:8px 0 0}

/* ---------- 元信息行（题型 / 第 n 题 / 编号 / 题号） ---------- */
.practice-surface .rp-body>.rp-row:first-child{
  align-items:baseline;gap:10px;margin:0 0 4px;
  font-size:12px;color:var(--ps-ink-3);
}
.practice-surface .rp-body>.rp-row:first-child>span:first-child{
  font-size:12px;font-weight:600;color:var(--ps-ink-2);
  background:#eef0f3;border-radius:6px;padding:3px 8px;
}
.practice-surface .rp-body>.rp-row:first-child>span:not(:first-child){
  font-family:var(--ps-mono);font-variant-numeric:tabular-nums;
}

/* ---------- 题干：与元信息明确分区（纸感卡片 + 左侧网格微纹理） ---------- */
.practice-surface .rp-card.rp-math{
  position:relative;
  background:#fff;border:1px solid var(--ps-line);border-radius:var(--ps-radius);
  padding:22px 24px;margin:12px 0 14px;
  font-size:17px;line-height:1.8;color:var(--ps-ink);
  box-shadow:0 1px 2px rgba(20,25,34,.04);
}
.practice-surface .rp-card.rp-math::before{
  content:"";position:absolute;inset:0;border-radius:var(--ps-radius);
  pointer-events:none;
  background-image:linear-gradient(rgba(20,25,34,.028) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(20,25,34,.028) 1px,transparent 1px);
  background-size:22px 22px;
  -webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.9),transparent 78%);
          mask-image:linear-gradient(180deg,rgba(0,0,0,.9),transparent 78%);
}
.practice-surface .rp-card.rp-math>*{position:relative}
/* 长解析限制行宽，避免一行过长 */
.practice-surface .rp-card.rp-math p{max-width:68ch}

/* ---------- 题头：题号方块 + 题型徽章 + 分值 ---------- */
.practice-surface .rp-qhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px}
.practice-surface .rp-qindex{
  width:26px;height:26px;border-radius:8px;flex:none;
  background:var(--ps-accent);color:#fff;display:grid;place-items:center;
  font-family:var(--ps-mono);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;
  box-shadow:0 1px 2px rgba(20,25,34,.2);
}
.practice-surface .rp-qkind{
  font-size:12px;font-weight:600;color:var(--ps-ink-2);
  background:#eef0f3;border-radius:6px;padding:3px 8px;
}
.practice-surface .rp-qscore{
  font-family:var(--ps-mono);font-size:12px;font-weight:600;color:var(--ps-ink-2);
  font-variant-numeric:tabular-nums;
}
/* 元信息行（第 n/N 题 · 题目编号 · 专题题号）降为小号次级色 */
.practice-surface .rp-body>.rp-qmeta{font-size:11px;color:var(--ps-ink-3);margin:0 0 4px;gap:10px}
.practice-surface .rp-body>.rp-qmeta .rp-muted{font-size:11px;color:var(--ps-ink-3);font-family:var(--ps-mono)}
/* 讨论/视频：最次级，文字链接形态 */
.practice-surface .rp-body>.rp-reslinks{margin:12px 0 0;gap:16px}
.practice-surface .rp-body>.rp-reslinks>a.rp-button{
  border:0;background:transparent;color:var(--ps-ink-3);
  font-size:14px;padding:2px 0;border-radius:0;border-bottom:1px solid transparent;
  transition:color .15s,border-color .15s;
}
.practice-surface .rp-body>.rp-reslinks>a.rp-button:hover{
  background:transparent;color:var(--ps-ink);border-bottom-color:var(--ps-ink);
}

/* ---------- 选项：列数自适应 ----------
   规则：每个选项至少 140px 宽。这样"内容很少"的选项（如 A. 1）会自动并到一行，
   内容长的公式选项会自动各占一行，窄屏自动退化为单列——不必按题目手工配置。
   列数完全交给 grid 的 auto-fit + minmax 决策。 */
.practice-surface .rp-options{
  grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:10px;margin-top:12px;
}
/* ⚠️ 只作用于按钮型选项：真题页卷内阅读的选项是 <a>，不受影响 */
.practice-surface .rp-options>button.rp-option{
  display:flex;align-items:center;gap:10px;
  min-height:48px;min-width:0;max-width:100%;   /* 防止长公式把格子撑破 */
  padding:10px 14px;
  border:1px solid var(--ps-line);border-radius:10px;background:#fff;
  font-size:15px;text-align:left;
  transition:border-color .15s,background .15s,box-shadow .15s;
}
.practice-surface .rp-options>button.rp-option:hover{border-color:#b9c1cd;background:#fafbfc}
/* 选项记号：单选圆点 / 多选方框（一眼看出这题要选几个） */
.practice-surface .rp-mark{
  width:16px;height:16px;flex:none;border:1.5px solid #c3cad6;
  border-radius:50%;display:grid;place-items:center;
  transition:border-color .15s;
}
.practice-surface .rp-options.rp-options-multi .rp-mark{border-radius:4px}
.practice-surface .rp-mark>i{
  width:8px;height:8px;border-radius:50%;background:transparent;transition:background .15s;
}
.practice-surface .rp-options.rp-options-multi .rp-mark>i{border-radius:2px}
/* 字母：等宽，与数值对齐 */
.practice-surface .rp-key{
  font-family:var(--ps-mono);font-weight:600;color:var(--ps-ink-3);
  font-variant-numeric:tabular-nums;flex:none;
}
.practice-surface .rp-optval{
  min-width:0;overflow-wrap:anywhere;word-break:break-word;
}
/* 选中态（方案 4B）：左右各 4px 实心侧条 + 主色描边。
   用 inset 内阴影而非 border-width，保证尺寸不变、切换时不抖动。
   ⚠️ 必须带 !important：旧规则 `.rp-primary,.rp-selected{background:#243c62!important}`
   会把选中选项刷成深藏青实心底，与新设计（浅底+侧条）冲突（改版时踩过）。 */
.practice-surface .rp-options>button.rp-option.rp-selected{
  background:#f8f9fb!important;border-color:var(--ps-accent)!important;color:var(--ps-ink)!important;
  box-shadow:inset 4px 0 0 0 var(--ps-accent),inset -4px 0 0 0 var(--ps-accent);
}
.practice-surface .rp-options>button.rp-option.rp-selected .rp-mark{border-color:var(--ps-accent)}
.practice-surface .rp-options>button.rp-option.rp-selected .rp-mark>i{background:var(--ps-accent)}
.practice-surface .rp-options>button.rp-option.rp-selected .rp-key{color:var(--ps-ink)}
.practice-surface .rp-options>button.rp-option.rp-selected:hover{background:#f4f6f9!important}

/* ---------- 解答输入框 ---------- */
.practice-surface textarea{
  margin-top:10px;padding:14px 16px;min-height:120px;
  background:#fcfcfd;border:1px solid var(--ps-line);border-radius:10px;
  font-family:var(--ps-font);font-size:16px;line-height:1.7;color:var(--ps-ink);
  transition:border-color .15s,background .15s,box-shadow .15s;
}
.practice-surface textarea::placeholder{color:#9aa4b2}
.practice-surface textarea:focus{
  outline:0;background:#fff;border-color:var(--ps-accent);
  box-shadow:0 0 0 3px rgba(17,24,39,.08);
}

/* ---------- 底部操作：主/次分明 ---------- */
.practice-surface .rp-body>.rp-actions{border-top-color:var(--ps-line);margin-top:20px}
.practice-surface .rp-actions>.rp-row{margin:0 0 10px}
/* 次级（上一题 / 下一题 / 重新作答）：描边。
   注意 :not(.rp-primary) —— 否则同权重的这条会覆盖下方主操作的 padding/字重
   （改版时踩过：主操作被压成 9px 16px / 500） */
.practice-surface .rp-actions .rp-button:not(.rp-primary){
  border-radius:8px;font-size:14px;font-weight:500;padding:9px 16px;
  border-color:var(--ps-line);color:var(--ps-ink-2);
  transition:background .15s,border-color .15s,color .15s;
}
.practice-surface .rp-actions .rp-button:not(.rp-primary):hover{
  background:#f7f8fa;border-color:#c9d0da;color:var(--ps-ink);
}
/* 主操作：实心强调色。放在次级规则之后 + 提权，确保尺寸与字重不被压回 */
.practice-surface .rp-actions .rp-button.rp-primary{
  background:var(--ps-accent)!important;border-color:var(--ps-accent)!important;color:#fff!important;
  font-weight:600!important;font-size:15px!important;padding:11px 22px!important;border-radius:8px;
  box-shadow:0 1px 2px rgba(17,25,34,.18);
}
.practice-surface .rp-actions .rp-button.rp-primary:hover{
  background:#000!important;border-color:#000!important;
}
/* 末级（查看答案 / 收藏 / 加入错题 / 更多同类题）：文字按钮 */
.practice-surface .rp-actions>.rp-row:last-child .rp-button{
  border-color:transparent;background:transparent;color:var(--ps-ink-3);padding:9px 10px;
}
.practice-surface .rp-actions>.rp-row:last-child .rp-button:hover{
  background:#f4f5f8;color:var(--ps-ink-2);
}
/* 禁用态：不用 opacity（浅底上的浅灰字对比度不足），改为显式色值 */
.practice-surface .rp-button:disabled,
.practice-surface .rp-option:disabled{
  opacity:1!important;
  background:#f4f5f8!important;border-color:var(--ps-line)!important;color:#8b94a3!important;
  cursor:not-allowed;box-shadow:none!important;
}
/* ⚠️ "已选中"必须优先于"已禁用"：提交后选项会同时带 rp-selected 和 :disabled，
   若被上面的 box-shadow:none 干掉，学生就看不出自己选了什么。
   放在禁用态规则之后，并提高选择器权重，确保侧条始终可见。 */
.practice-surface .rp-options>button.rp-option.rp-selected,
.practice-surface .rp-options>button.rp-option.rp-selected:disabled{
  background:#f8f9fb!important;border-color:var(--ps-accent)!important;color:var(--ps-ink)!important;
  box-shadow:inset 4px 0 0 0 var(--ps-accent),inset -4px 0 0 0 var(--ps-accent)!important;
  cursor:default;
}
.practice-surface .rp-submit-hint{font-size:12px;color:var(--ps-ink-3)}

/* ---------- 结果与提示 ---------- */
.practice-surface .rp-result{
  background:#f7f8fa;border-left:3px solid var(--ps-accent);
  border-radius:8px;padding:12px 15px;font-size:15px;
}

/* ---------- 状态文案与弹层 ---------- */
.practice-surface .rp-muted,
.practice-surface .rp-loading{font-size:13px;color:var(--ps-ink-3)}
.practice-surface .rp-error{font-size:14px;color:#a12626}
.practice-surface .rp-dialog{border-radius:var(--ps-radius);padding:22px 24px}

/* ---------- 窄屏（≤520px） ----------
   目标：题干之外的操作全部通栏，主操作置顶，避免手机上一堆并排小按钮。
   注：这些规则在同权重下晚于文件首行的基础规则，因此可覆盖之。 */
@media (max-width:520px){
  .practice-surface .rp-header{padding:12px 16px}
  .practice-surface .rp-header>.rp-row:first-child{gap:14px}
  .practice-surface .rp-body{padding:16px}
  /* 选项列数不做按宽度的硬性限定：继续由 minmax(140px,1fr) 自适应。
     窄屏放不下几列时自然退化为一行一个，内容短的仍可并排（符合"内容少就一排"的预期） */
  /* 操作区改两列网格：主操作通栏且排最上 */
  .practice-surface .rp-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .practice-surface .rp-actions>.rp-row{
    display:contents;   /* 让内部按钮直接参与外层网格 */
  }
  .practice-surface .rp-actions .rp-button{padding:11px 12px;justify-content:center;text-align:center}
  .practice-surface .rp-body>.rp-actions .rp-button.rp-primary{grid-column:1/-1;order:-1}
  /* 提示文字（"填写解答后可提交"）不是按钮，必须让它独占一行、跟在主操作下面，
     否则会被卷进网格、夹在主操作与"上一题"之间（改版时踩过） */
  .practice-surface .rp-submit-hint{grid-column:1/-1;order:-1;font-size:12px;margin:0 0 2px}
  /* 末级文字按钮占满半列，避免"末项单独一行空一格" */
  .practice-surface .rp-actions>.rp-row:last-child .rp-button{border-color:var(--ps-line);background:#fff}
}

/* ---------- 降低动效偏好 ---------- */
@media (prefers-reduced-motion:reduce){
  .practice-surface *{transition:none!important;animation:none!important}
}

/* ============================================================================
   卷内阅读页（/papers?...&mode=read）专属设计 —— 作用域 .paper-read
   ----------------------------------------------------------------------------
   .paper-read 由 paper-client.js 在 read 分支中给根元素挂上（整段只挂一次）。
   为什么不用 .paper-surface：本文件上方已有 .paper-surface 规则，而本段在其后，
   同权重时会互相覆盖；用独立的 .paper-read 可确保两边互不干扰。
   本页与练习页的差异：没有可点选项（选项只是静态文字），因此没有"选中态"；
   主要动作是"展开／收起参考解析"，讨论/视频降为文字链接。
   ============================================================================ */
.paper-read{
  --pr-ink:#141922;
  --pr-ink-2:#4a5568;
  --pr-ink-3:#7b8794;
  --pr-line:#e3e7ee;
  --pr-line-2:#eef1f6;
  --pr-canvas:#f6f7f9;
  --pr-accent:#111827;
  --pr-radius:14px;
  --pr-font:"Geist","Inter","Segoe UI",system-ui,
            "Noto Sans SC","PingFang SC","Microsoft YaHei","Source Han Sans SC",
            -apple-system,sans-serif;
  --pr-mono:"Geist Mono","Cascadia Mono",Consolas,ui-monospace,monospace;
  --pr-serif:"Noto Serif SC","Source Han Serif SC",Georgia,serif;
  background:var(--pr-canvas);
  color:var(--pr-ink);
  font-family:var(--pr-font);
  font-size:16px;
}

/* ---------- 试卷标题：衬线放大（read 页的"卷子"正式感） ---------- */
.paper-read .rp-body>h1{
  font-family:var(--pr-serif);
  font-size:24px;font-weight:700;letter-spacing:-.02em;line-height:1.35;
  margin:0 0 12px;
}
/* "开始／继续逐题练习" / "公开原件"：降为次级描边按钮 */
.paper-read .rp-body>a.rp-button{
  display:inline-flex;align-items:center;
  font-size:14px;font-weight:500;padding:9px 16px;border-radius:8px;
  border-color:var(--pr-line);color:var(--pr-ink-2);margin:0 10px 14px 0;
  transition:background .15s,border-color .15s,color .15s;
}
.paper-read .rp-body>a.rp-button:hover{background:#f7f8fa;border-color:#c9d0da;color:var(--pr-ink)}

/* ---------- 题目卡：纸感 + 题号悬挂（仅 section，不碰列表页的 article） ---------- */
.paper-read .rp-body>section.rp-card{
  position:relative;
  background:#fff;border:1px solid var(--pr-line);border-radius:var(--pr-radius);
  padding:20px 22px 16px 48px;margin:0 0 14px;
  box-shadow:0 1px 2px rgba(20,25,34,.04);
}
.paper-read .rp-body>section.rp-card::before{
  content:"";position:absolute;inset:0;border-radius:var(--pr-radius);pointer-events:none;
  background-image:linear-gradient(rgba(20,25,34,.028) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(20,25,34,.028) 1px,transparent 1px);
  background-size:22px 22px;
  -webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.9),transparent 74%);
          mask-image:linear-gradient(180deg,rgba(0,0,0,.9),transparent 74%);
}
.paper-read .rp-body>section.rp-card>*{position:relative}
/* 题头："原卷第 N 题 题型" 降级为小号；
   题号 itself 做成悬挂在卡片左侧的黑色方块（与设计稿一致）。 */
.paper-read section.rp-card>h3.rp-qhead{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:13px;font-weight:600;color:var(--pr-ink-2);letter-spacing:.01em;
  margin:0 0 4px;
}
.paper-read section.rp-card>h3.rp-qhead>.rp-qno{
  position:absolute;left:-34px;top:-2px;
  width:26px;height:26px;border-radius:8px;
  background:var(--pr-accent);color:#fff;
  display:grid;place-items:center;flex:none;
  font-family:var(--pr-mono);font-size:12px;font-weight:600;
  font-variant-numeric:tabular-nums;
  box-shadow:0 1px 3px rgba(20,25,34,.25);
}
.paper-read section.rp-card>h3.rp-qhead>.rp-qsub{font-weight:600}
/* 分值：等宽小字，与设计稿的"3 分"一致 */
.paper-read section.rp-card>h3.rp-qhead>.rp-qscore{
  font-family:var(--pr-mono);font-size:12px;font-weight:600;color:var(--pr-ink-2);
  font-variant-numeric:tabular-nums;
}
/* 题目编号：小号等宽、次级灰 */
.paper-read section.rp-card>p.rp-muted{
  font-size:11px;color:var(--pr-ink-3);margin:0 0 12px;
  font-family:var(--pr-mono);font-variant-numeric:tabular-nums;
}
/* 题干：正文级字号与行高 */
.paper-read section.rp-card>.rp-math{
  font-size:17px;line-height:1.8;color:var(--pr-ink);
}
/* ---------- 选项卡片 ----------
   真题的选项写在题干里，渲染时解析出来做成卡片。
   列数自适应（每项至少 140px）；窄屏自动退化为一行一个。
   阅读模式为只读卡片；练习模式可点，选中态＝左右 4px 侧条（与 /practice 的 4B 一致）。 */
.paper-read section.rp-card>.rp-options{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:10px;margin-top:14px;
}
.paper-read section.rp-card>.rp-options>.rp-opt{
  display:flex;align-items:center;gap:10px;
  min-height:46px;min-width:0;max-width:100%;
  padding:9px 14px;border:1px solid var(--pr-line);border-radius:10px;background:#fff;
  font-size:15px;color:var(--pr-ink);text-align:left;
}
.paper-read section.rp-card>.rp-options>button.rp-opt{cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}
.paper-read section.rp-card>.rp-options>button.rp-opt:hover{border-color:#b9c1cd;background:#fafbfc}
.paper-read section.rp-card>.rp-options>.rp-opt>.rp-opt-key{
  font-family:var(--pr-mono);font-weight:600;color:var(--pr-ink-3);
  font-variant-numeric:tabular-nums;flex:none;
}
.paper-read section.rp-card>.rp-options>.rp-opt>.rp-opt-val{
  min-width:0;overflow-wrap:anywhere;word-break:break-word;
}
/* 练习模式：选项前的单选圆点 */
.paper-read section.rp-card>.rp-options.rp-options-pick>.rp-opt::before{
  content:"";flex:none;width:16px;height:16px;border-radius:50%;
  border:1.5px solid #c3cad6;transition:border-color .15s,background .15s;
}
/* 选中态（4B）：左右各 4px 实心侧条 + 主色描边 + 圆点填充 */
.paper-read section.rp-card>.rp-options.rp-options-pick>.rp-opt.rp-opt-sel{
  border-color:var(--pr-accent);background:#f8f9fb;
  box-shadow:inset 4px 0 0 0 var(--pr-accent),inset -4px 0 0 0 var(--pr-accent);
}
.paper-read section.rp-card>.rp-options.rp-options-pick>.rp-opt.rp-opt-sel::before{
  border-color:var(--pr-accent);background:var(--pr-accent);
  box-shadow:inset 0 0 0 3px #f8f9fb;
}
.paper-read section.rp-card>.rp-options.rp-options-pick>.rp-opt.rp-opt-sel>.rp-opt-key{color:var(--pr-ink)}
/* 按钮行：主操作（展开解析）描边强调；讨论/视频为文字链接 */
.paper-read section.rp-card>.rp-row{
  align-items:center;gap:12px;flex-wrap:wrap;
  margin:14px 0 0;padding-top:13px;border-top:1px solid var(--pr-line-2);
}
.paper-read section.rp-card>.rp-row>button.rp-button{
  font-size:14px;font-weight:500;padding:9px 16px;border-radius:8px;
  border-color:var(--pr-accent);color:var(--pr-ink);
  transition:background .15s;
}
.paper-read section.rp-card>.rp-row>button.rp-button:hover{background:#f7f8fa}
.paper-read section.rp-card>.rp-row>a.rp-button{
  border:0;background:transparent;color:var(--pr-ink-3);
  font-size:14px;padding:2px 0;border-bottom:1px solid transparent;
  border-radius:0;transition:color .15s,border-color .15s;
}
.paper-read section.rp-card>.rp-row>a.rp-button:hover{
  background:transparent;color:var(--pr-ink);border-bottom-color:var(--pr-ink);
}
/* 参考答案块：去掉冷蓝跳色，改同族浅底 + 主色左竖条 */
.paper-read section.rp-card>.rp-result{
  background:#f7f8fa;border-left:3px solid var(--pr-accent);
  border-radius:8px;padding:14px 16px;margin-top:14px;font-size:15px;
}
/* 状态/空态文案 */
.paper-read .rp-body>p.rp-muted,.paper-read .rp-body>p.rp-loading{
  font-size:13px;color:var(--pr-ink-3);
}
.paper-read .rp-body>p.rp-error{font-size:14px;color:#a12626}

/* ---------- 窄屏 ---------- */
@media (max-width:520px){
  .paper-read .rp-body{padding:16px}
  .paper-read .rp-body>h1{font-size:19px;margin-bottom:10px}
  .paper-read .rp-body>section.rp-card{padding:16px 16px 14px 42px}
  /* 手机端题号方块稍微内收，避免贴到屏幕边缘 */
  .paper-read section.rp-card>h3.rp-qhead>.rp-qno{left:-32px;width:24px;height:24px;font-size:11px}
  .paper-read section.rp-card>.rp-row{gap:10px}
  /* 主操作独占一行、文字不换行；讨论/视频次行平分剩余宽度。
     若三者都设 flex:1，"展开／收起参考解析"会被挤成两行（改版时踩过） */
  .paper-read section.rp-card>.rp-row>button.rp-button{
    flex:1 0 100%;text-align:center;white-space:nowrap;font-size:15px;
  }
  .paper-read section.rp-card>.rp-row>a.rp-button{flex:1;text-align:center;white-space:nowrap}
}
@media (prefers-reduced-motion:reduce){
  .paper-read *{transition:none!important}
}

/* ============================================================================
   试卷列表页（/papers?course_id=..&school_id=..）专属设计 —— 作用域 .paper-list
   ----------------------------------------------------------------------------
   .paper-list 由 paper-client.js 在"无 paper_id"分支挂载（即列表页）；
   read / practice 分支不挂，因此互不影响。
   结构：div.rp-list > div.rp-item(> .rp-idx, .rp-info, .rp-bar, .rp-acts)
   （方案B：紧凑列表行——一行为一套卷，将来真题变多时一屏能扫很多套）
   ============================================================================ */
.paper-list{
  --pl-ink:#141922;--pl-ink-2:#4a5568;--pl-ink-3:#7b8794;
  --pl-line:#e3e7ee;--pl-line-2:#eef1f6;--pl-canvas:#f6f7f9;--pl-accent:#111827;
  --pl-font:"Geist","Inter","Segoe UI",system-ui,
            "Noto Sans SC","PingFang SC","Microsoft YaHei","Source Han Sans SC",
            -apple-system,sans-serif;
  --pl-mono:"Geist Mono","Cascadia Mono",Consolas,ui-monospace,monospace;
  --pl-serif:"Noto Serif SC","Source Han Serif SC",Georgia,serif;
  background:var(--pl-canvas);color:var(--pl-ink);font-family:var(--pl-font);font-size:16px;
}
/* 页头：本校真题（衬线放大）+ 数量说明 */
.paper-list .rp-body>h1{
  font-family:var(--pl-serif);font-size:22px;font-weight:700;letter-spacing:-.02em;
  margin:0 0 4px;
}
.paper-list .rp-body>p{font-size:13px;color:var(--pl-ink-3);margin:0 0 14px}
.paper-list .rp-body>p.rp-muted{margin:0;font-size:12px}
/* 收藏 / 错题：次级小按钮 */
.paper-list .rp-body>.rp-row{margin:0 0 14px;gap:10px}
.paper-list .rp-body>.rp-row .rp-button{
  font-size:13px;font-weight:500;padding:8px 14px;border-radius:8px;
  border-color:var(--pl-line);color:var(--pl-ink-2);background:#fff;
  transition:background .15s,border-color .15s,color .15s;
}
.paper-list .rp-body>.rp-row .rp-button:hover{background:#f7f8fa;border-color:#c9d0da;color:var(--pl-ink)}

/* 列表容器：一行为一套卷 */
.paper-list .rp-list{
  background:#fff;border:1px solid var(--pl-line);border-radius:14px;overflow:hidden;
  box-shadow:0 1px 2px rgba(20,25,34,.04);
}
.paper-list .rp-item{
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  padding:16px 20px;border-bottom:1px solid var(--pl-line-2);
}
.paper-list .rp-item:last-child{border-bottom:0}
/* 题号块 */
.paper-list .rp-idx{
  flex:none;width:30px;height:30px;border-radius:8px;background:var(--pl-accent);color:#fff;
  display:grid;place-items:center;
  font-family:var(--pl-mono);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;
}
.paper-list .rp-info{flex:1 1 200px;min-width:0}
.paper-list .rp-ptitle{font-size:16px;font-weight:600;letter-spacing:-.01em;margin:0 0 3px;color:var(--pl-ink)}
.paper-list .rp-pmeta{
  font-size:12px;color:var(--pl-ink-3);margin:0;
  font-family:var(--pl-mono);font-variant-numeric:tabular-nums;
}
/* 进度条 */
.paper-list .rp-bar{flex:0 0 150px;display:flex;flex-direction:column;gap:5px}
.paper-list .rp-bar-track{height:5px;border-radius:99px;background:var(--pl-line-2);overflow:hidden}
.paper-list .rp-bar-track>i{display:block;height:100%;width:0;background:var(--pl-accent);border-radius:99px;
  transition:width .3s ease}
.paper-list .rp-bar-label{
  font-size:11px;color:var(--pl-ink-3);text-align:right;
  font-family:var(--pl-mono);font-variant-numeric:tabular-nums;
}
/* 按钮组：主操作（开始/继续练习）实心，整卷阅读次级，套卷讲解文字 */
.paper-list .rp-acts{display:flex;gap:8px;flex:none;flex-wrap:wrap}
.paper-list .rp-acts>a.rp-button{
  font-size:13px;font-weight:500;padding:8px 14px;border-radius:8px;
  border:1px solid var(--pl-line);background:#fff;color:var(--pl-ink-2);
  transition:background .15s,border-color .15s,color .15s;
}
.paper-list .rp-acts>a.rp-button:hover{background:#f7f8fa;border-color:#c9d0da;color:var(--pl-ink)}
.paper-list .rp-acts>a.rp-button:first-child{
  background:var(--pl-accent);border-color:var(--pl-accent);color:#fff;font-weight:600;
}
.paper-list .rp-acts>a.rp-button:first-child:hover{background:#000;border-color:#000}
.paper-list .rp-acts>a.rp-button:last-child{
  border-color:transparent;background:transparent;color:var(--pl-ink-3);
}
.paper-list .rp-acts>a.rp-button:last-child:hover{background:#f4f5f8;color:var(--pl-ink-2)}

/* 窄屏：进度条与按钮各占整行 */
@media (max-width:620px){
  .paper-list .rp-body{padding:16px}
  .paper-list .rp-body>h1{font-size:19px}
  .paper-list .rp-item{gap:12px;padding:14px 16px}
  .paper-list .rp-bar{flex:1 1 100%;order:3}
  .paper-list .rp-bar-label{text-align:left}
  .paper-list .rp-acts{flex:1 1 100%;order:4}
  .paper-list .rp-acts>a.rp-button{flex:1;text-align:center;justify-content:center}
}
@media (prefers-reduced-motion:reduce){
  .paper-list *{transition:none!important}
}

/* ============================================================================
   卷内练习页「答题区」（方案B）—— 独立作用域 .paper-answer-scope
   ----------------------------------------------------------------------------
   只有练习模式挂这个类（read 模式不渲染答题区），故不影响阅读页与列表页。
   结构：section.rp-answer
           > p.rp-answer-label           分区标签「作答 · 第 n/N 题」
           > div.answer-tools            工具条（插入公式/预览答案/上传图片/拍照）
           > textarea                    答题框
           > div.rp-row.rp-answer-bar    操作栏：导航(左) + 主操作(右)
           > div.rp-row.rp-answer-tools  次级动作（查看解析/收藏/加入错题）
   依据：Law of Proximity —— 组内紧(8-12px)、组间松(16px)，不靠多余边框分组；
        emilkowalski/skills —— 按钮 :active 反馈、具体 transition 属性、<300ms。
   ============================================================================ */
.paper-answer-scope .rp-answer{position:relative;padding-left:16px;margin:18px 0 0}
.paper-answer-scope .rp-answer::before{
  content:"";position:absolute;left:0;top:2px;bottom:2px;width:3px;border-radius:99px;
  background:var(--pr-accent);opacity:.9;
}
.paper-answer-scope .rp-answer-label{
  display:flex;align-items:center;gap:10px;
  font-size:12px;font-weight:600;color:var(--pr-ink-3);letter-spacing:.04em;
  margin:0 0 10px;font-family:var(--pr-mono);font-variant-numeric:tabular-nums;
}
.paper-answer-scope .rp-answer-label::after{content:"";flex:1;height:1px;background:var(--pr-line-2)}
.paper-answer-scope .rp-answer>.answer-tools{
  display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px;background:transparent;
}
.paper-answer-scope .rp-answer>.answer-tools button,
.paper-answer-scope .rp-answer>.answer-tools a{
  font:inherit;font-size:13px;font-weight:500;padding:7px 12px;border-radius:8px;
  border:1px solid var(--pr-line);background:#f8f9fb;color:var(--pr-ink-2);cursor:pointer;
  transition:transform 160ms cubic-bezier(.23,1,.32,1),background 150ms ease,border-color 150ms ease,color 150ms ease;
}
.paper-answer-scope .rp-answer>.answer-tools button:active,
.paper-answer-scope .rp-answer>.answer-tools a:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){
  .paper-answer-scope .rp-answer>.answer-tools button:hover,
  .paper-answer-scope .rp-answer>.answer-tools a:hover{background:#f1f3f7;border-color:#c9d0da;color:var(--pr-ink)}
}
.paper-answer-scope .rp-answer>textarea{margin-top:0;min-height:120px}
.paper-answer-scope .rp-answer>.rp-answer-bar{
  align-items:center;gap:10px;flex-wrap:wrap;
  margin:12px 0 0;padding-top:12px;border-top:1px solid var(--pr-line-2);
}
.paper-answer-scope .rp-answer>.rp-answer-tools{
  align-items:center;gap:14px;flex-wrap:wrap;margin:10px 0 0;
}
.paper-answer-scope .rp-answer>.rp-answer-tools .rp-button{
  border-color:transparent;background:transparent;color:var(--pr-ink-3);
  font-size:14px;padding:2px 0;border-radius:0;border-bottom:1px solid transparent;
  transition:color 150ms ease,border-color 150ms ease;
}
@media (hover:hover) and (pointer:fine){
  .paper-answer-scope .rp-answer>.rp-answer-tools .rp-button:hover{
    background:transparent;color:var(--pr-ink);border-bottom-color:var(--pr-ink);
  }
}
/* 主操作：提交答案 —— 实心强调色 + 靠右（桌面） */
.paper-answer-scope .rp-answer>.rp-answer-bar>.rp-primary{
  order:9;margin-left:auto;
  background:var(--pr-accent)!important;border-color:var(--pr-accent)!important;color:#fff!important;
  font-weight:600;font-size:15px;padding:10px 20px;border-radius:8px;
  box-shadow:0 1px 2px rgba(17,25,34,.18);
  transition:transform 160ms cubic-bezier(.23,1,.32,1),background 150ms ease;
}
.paper-answer-scope .rp-answer>.rp-answer-bar>.rp-primary:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){
  .paper-answer-scope .rp-answer>.rp-answer-bar>.rp-primary:hover{background:#000!important;border-color:#000!important}
}
.paper-answer-scope .rp-answer>.rp-answer-bar>.rp-button:disabled{
  opacity:1!important;background:#f4f5f8!important;border-color:var(--pr-line)!important;
  color:#8b94a3!important;cursor:not-allowed;box-shadow:none!important;
}
/* 手机端：主操作通栏并置顶（拇指易达），导航两列 */
@media (max-width:520px){
  .paper-answer-scope .rp-answer{padding-left:12px;margin-top:14px}
  .paper-answer-scope .rp-answer>.rp-answer-bar{
    display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;
  }
  .paper-answer-scope .rp-answer>.rp-answer-bar>.rp-button{padding:11px 12px;text-align:center;justify-content:center}
  .paper-answer-scope .rp-answer>.rp-answer-bar>.rp-primary{
    grid-column:1/-1;order:-1;margin-left:0;width:100%;
  }
  .paper-answer-scope .rp-answer>.rp-answer-tools{
    display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;
  }
  .paper-answer-scope .rp-answer>.rp-answer-tools .rp-button{border-bottom:0;padding:8px 0;text-align:center}
}
@media (prefers-reduced-motion:reduce){
  .paper-answer-scope *{transition:none!important}
}

/* ============================================================================
   专题复习页「答题区」（方案B）—— 作用域 .practice-surface
   ----------------------------------------------------------------------------
   与卷内练习页同款做法：把 工具行 + 输入框 + 操作栏 收进 section.rp-answer
   （左侧 3px 主色竖条 + 分区标签），主操作桌面靠右、手机通栏置顶。
   本页主色是 --ps-accent(#111827)，与真题页一致，故单独一套规则。
   ⚠ 既有规则用的是 `.rp-body>.rp-actions` 这类直接子代选择器；容器包进去后，
     原来那条链失效，因此这里用不带 `>` 的写法重新接住（更抗层级变化）。
   ============================================================================ */
.practice-surface .rp-answer{position:relative;padding-left:16px;margin:20px 0 0}
.practice-surface .rp-answer::before{
  content:"";position:absolute;left:0;top:2px;bottom:2px;width:3px;border-radius:99px;
  background:var(--ps-accent);opacity:.9;
}
.practice-surface .rp-answer-label{
  display:flex;align-items:center;gap:10px;
  font-size:12px;font-weight:600;color:var(--ps-ink-3);letter-spacing:.04em;
  margin:0 0 10px;font-family:var(--ps-mono);font-variant-numeric:tabular-nums;
}
.practice-surface .rp-answer-label::after{content:"";flex:1;height:1px;background:var(--ps-line-2)}
/* 工具条：贴紧输入框上方（组内 8px） */
.practice-surface .rp-answer>.answer-tools{
  display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px!important;background:transparent;
}
.practice-surface .rp-answer>.answer-tools button,
.practice-surface .rp-answer>.answer-tools a{
  font:inherit;font-size:13px;font-weight:500;padding:7px 12px;border-radius:8px;
  border:1px solid var(--ps-line);background:#f8f9fb;color:var(--ps-ink-2);cursor:pointer;
  transition:transform 160ms cubic-bezier(.23,1,.32,1),background 150ms ease,border-color 150ms ease,color 150ms ease;
}
.practice-surface .rp-answer>.answer-tools button:active,
.practice-surface .rp-answer>.answer-tools a:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){
  .practice-surface .rp-answer>.answer-tools button:hover,
  .practice-surface .rp-answer>.answer-tools a:hover{background:#f1f3f7;border-color:#c9d0da;color:var(--ps-ink)}
}
.practice-surface .rp-answer>textarea{margin-top:0}
/* 操作栏：细分隔线分隔"输入"与"操作" */
.practice-surface .rp-answer .rp-actions{
  display:block;border-top:1px solid var(--ps-line-2);margin-top:14px;padding-top:12px;
}
.practice-surface .rp-answer .rp-answer-bar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0;
}
/* 主操作：桌面靠右（order 推到末尾 + margin-left:auto） */
.practice-surface .rp-answer .rp-answer-bar>.rp-button.rp-primary{
  order:9;margin-left:auto;
  background:var(--ps-accent)!important;border-color:var(--ps-accent)!important;color:#fff!important;
  font-weight:600;font-size:15px;padding:10px 20px;border-radius:8px;
  box-shadow:0 1px 2px rgba(17,24,39,.20);
  transition:transform 160ms cubic-bezier(.23,1,.32,1),background 150ms ease;
}
.practice-surface .rp-answer .rp-answer-bar>.rp-button.rp-primary:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){
  .practice-surface .rp-answer .rp-answer-bar>.rp-button.rp-primary:hover{
    background:#000!important;border-color:#000!important}
}
/* 主操作旁边的提示：紧贴主操作左侧 */
.practice-surface .rp-answer .rp-answer-bar>.rp-submit-hint{
  order:8;margin-left:auto;margin-right:4px;font-size:12px;color:var(--ps-ink-3);
}
.practice-surface .rp-answer .rp-answer-bar>.rp-submit-hint+.rp-button.rp-primary{margin-left:0}
/* 次级动作：文字按钮（4 个） */
.practice-surface .rp-answer .rp-answer-tools{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:12px 0 0;
}
.practice-surface .rp-answer .rp-answer-tools .rp-button{
  border-color:transparent!important;background:transparent!important;color:var(--ps-ink-3)!important;
  font-size:14px;padding:2px 0!important;border-radius:0;border-bottom:1px solid transparent;
  transition:color 150ms ease,border-color 150ms ease;
}
@media (hover:hover) and (pointer:fine){
  .practice-surface .rp-answer .rp-answer-tools .rp-button:hover{
    color:var(--ps-ink)!important;border-bottom-color:var(--ps-ink);
  }
}
/* 手机端：主操作通栏置顶；提示隐藏；次级动作 2×2 网格 */
@media (max-width:520px){
  .practice-surface .rp-answer{padding-left:12px;margin-top:16px}
  .practice-surface .rp-answer .rp-answer-bar{
    display:grid;grid-template-columns:1fr 1fr;gap:8px;
  }
  .practice-surface .rp-answer .rp-answer-bar>.rp-button{padding:11px 12px;text-align:center;justify-content:center}
  .practice-surface .rp-answer .rp-answer-bar>.rp-button.rp-primary{
    grid-column:1/-1;order:-1;margin-left:0;width:100%;
  }
  .practice-surface .rp-answer .rp-answer-bar>.rp-submit-hint{display:none}
  .practice-surface .rp-answer .rp-answer-tools{
    display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px;
  }
  .practice-surface .rp-answer .rp-answer-tools .rp-button{
    border-bottom:0;padding:8px 0!important;text-align:center;
  }
}
@media (prefers-reduced-motion:reduce){
  .practice-surface .rp-answer *{transition:none!important}
}

/* ============================================================================
   专题复习页 · 头部「方案A」+ 配色统一（2026-10-11 改版）
   ----------------------------------------------------------------------------
   ① 配色：样式表第 1 行有一条很旧的压缩规则
        .rp-primary,.rp-selected{background:#243c62!important;color:white!important;border-color:#243c62}
      它把「继续复习」按钮和「顺序练习」选中 Tab 都染成旧蓝 #243c62，
      而页面其他元素（题号方块、题干、题头徽章）是 #111827 —— 视觉不一致。
      下面用同权重但"更后出现 + 带 !important"的规则覆盖为 --ps-accent(#111827)。
      ⚠ 必须排除 .rp-option：选项卡也带 rp-selected，染色会毁掉选项样式。
   ② 布局：信息条由两行压成一行；续练卡由"高大提示块"降为"细条"（它只是临时提示）；
      筛选器收进一条工具条，用竖线把「模式」与「筛选」分成两组（Law of Proximity）。
   ============================================================================ */
/* ---------- ① 配色统一 ---------- */
.practice-surface .rp-primary,
.practice-surface .rp-selected:not(.rp-option){
  background:var(--ps-accent)!important;
  border-color:var(--ps-accent)!important;
  color:#fff!important;
}
@media (hover:hover) and (pointer:fine){
  .practice-surface .rp-primary:hover,
  .practice-surface .rp-selected:not(.rp-option):hover{
    background:#000!important;border-color:#000!important;
  }
}
/* 续练卡左侧竖条：直接复用 .rp-result 自带的 border-left:3px solid var(--ps-accent)，
   不要再加 ::before —— 两者会重叠成一个（曾误加，实测 ::before 背景被自己的边框盖住）。 */
.practice-surface .rp-resume{border-left-color:var(--ps-accent)}

/* ---------- ② 信息条压成一行 ---------- */
.practice-surface .rp-infobar{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  margin:0 0 10px;font-size:13px;color:var(--ps-ink-2);
}
.practice-surface .rp-infobar .rp-link{
  font-size:13px;color:var(--ps-ink-2);padding:2px 0;
}
.practice-surface .rp-infobar .rp-link:first-child{color:var(--ps-ink);font-weight:500}
/* 次级动作（重新开始）推到行尾，与主信息分开 */
.practice-surface .rp-infobar .rp-link:last-child{margin-left:auto;font-size:12.5px;color:var(--ps-ink-3)}
.practice-surface .rp-infobar .rp-link:hover{color:var(--ps-ink)}

/* ---------- ③ 续练提示降为细条 ---------- */
.practice-surface .rp-resume{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:#fff;border:1px solid var(--ps-line);border-left:3px solid var(--ps-accent);
  border-radius:10px;padding:10px 14px;margin:0 0 14px;box-shadow:none;
}
.practice-surface .rp-resume .rp-resume-text{
  flex:1 1 220px;font-size:13.5px;color:var(--ps-ink-2);margin:0;
}
.practice-surface .rp-resume .rp-resume-acts{gap:12px;margin:0;align-items:center}
.practice-surface .rp-resume .rp-button.rp-primary{
  font-size:13px;padding:7px 14px;box-shadow:0 1px 2px rgba(17,25,34,.18);
}
.practice-surface .rp-resume .rp-resume-close{
  order:9;position:static;margin-left:auto;font-size:15px;min-width:0;
  padding:4px 6px;border-radius:6px;color:var(--ps-ink-3);line-height:1;
}
@media (hover:hover) and (pointer:fine){
  .practice-surface .rp-resume .rp-resume-close:hover{background:#eef1f6;color:var(--ps-ink)}
}

/* ---------- ④ 筛选器收进一条工具条，竖线分组 ---------- */
.practice-surface .rp-filters{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0;padding:12px 0 0;border-top:1px solid var(--ps-line-2);
}
.practice-surface .rp-filter-group{
  display:flex;align-items:center;gap:8px;flex-wrap:nowrap;
  padding-right:10px;border-right:1px solid var(--ps-line);
}
.practice-surface .rp-filter-group:last-child{border-right:0;padding-right:0}
.practice-surface .rp-filters .rp-button{
  font-size:13px;font-weight:500;padding:8px 14px;border-radius:8px;
  border-color:var(--ps-line);color:var(--ps-ink-2);background:#fff;
  transition:transform 160ms cubic-bezier(.23,1,.32,1),background 150ms ease,border-color 150ms ease,color 150ms ease;
}
.practice-surface .rp-filters .rp-button:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){
  .practice-surface .rp-filters .rp-button:not(.rp-selected):hover{
    background:#f7f8fa;border-color:#c9d0da;color:var(--ps-ink);
  }
}
.practice-surface .rp-filters .rp-selected:not(.rp-option){font-weight:600}
/* 下拉：标签与控件同一行，标签次级色 */
.practice-surface .rp-filters .rp-field{
  display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ps-ink-3);
  white-space:nowrap;margin:0;
}
.practice-surface .rp-filters .rp-field select{
  font:inherit;font-size:13px;color:var(--ps-ink);background:#fff;
  border:1px solid var(--ps-line);border-radius:8px;padding:8px 10px;
  transition:border-color 150ms ease,background 150ms ease;
}
.practice-surface .rp-filters .rp-field select:focus{
  outline:0;border-color:var(--ps-accent);box-shadow:0 0 0 3px rgba(17,24,39,.08);
}
/* 底部两行说明合并为一行更紧凑 */
.practice-surface .rp-header>p.rp-muted{margin:8px 0 0;font-size:12px;line-height:1.6}
.practice-surface .rp-header>p.rp-muted+p.rp-muted{margin-top:2px}

/* ---------- ⑤ 信息行（方案甲′）：拆成片段，避免半截行 ---------- */
.practice-surface .rp-header>p.rp-meta-row{
  display:flex;flex-wrap:wrap;align-items:baseline;
  gap:2px 10px;margin:8px 0 0;
  font-size:12px;line-height:1.65;color:var(--ps-ink-3);
}
/* flex:1 1 auto → 片段按内容宽度分配，余量被拉开；换行只发生在片段之间 */
.practice-surface .rp-header>p.rp-meta-row>.rp-meta-seg{
  flex:1 1 auto;min-width:0;overflow-wrap:anywhere;
}
/* 分隔点画在前一个片段之后：用 flex 兄弟选择器，且不用 ::first-child 以免首项带点 */
.practice-surface .rp-header>p.rp-meta-row>.rp-meta-seg+.rp-meta-seg::before{
  content:"·\00a0";color:#c7cdd6;
}
/* 最后一段（本轮进度/正确率）不拆行，避免"0/59"被断开 */
.practice-surface .rp-header>p.rp-meta-row>.rp-meta-seg:last-child{white-space:nowrap}

/* 窄屏（≤640px）：退化为"连续文字流"，回到拆片段之前的效果。
   原因：片段式布局下，过长的课程名会独占一整行、右侧留白，反而比原来高 4px。
   实测：桌面 231→210px（省 21px）；窄屏保持 326px 不退化。 */
@media (max-width:640px){
  .practice-surface .rp-header>p.rp-meta-row{display:block;margin-top:6px}
  .practice-surface .rp-header>p.rp-meta-row>.rp-meta-seg{display:inline;flex:none}
  .practice-surface .rp-header>p.rp-meta-row>.rp-meta-seg+.rp-meta-seg::before{
    content:"·\00a0";color:#c7cdd6;
  }
  .practice-surface .rp-header>p.rp-meta-row>.rp-meta-seg:last-child{white-space:normal}
}

/* ---------- 窄屏：信息条与筛选器换行更规整 ---------- */
@media (max-width:640px){
  .practice-surface .rp-infobar{gap:10px;font-size:12.5px}
  .practice-surface .rp-infobar .rp-link:last-child{margin-left:0}
  /* 续练卡：文字占满首行，按钮紧跟其下（比"文字+按钮挤一行"更省高度） */
  /* ⚠ 用长写法保留左侧主色竖条：border 简写会把 border-left-color 重置回 currentColor */
  .practice-surface .rp-resume{
    position:relative;background:#fff;
    border-top:1px solid var(--ps-line);border-right:1px solid var(--ps-line);
    border-bottom:1px solid var(--ps-line);border-left:3px solid var(--ps-accent);
    border-radius:10px;padding:9px 34px 9px 12px;gap:8px;margin-bottom:12px;
  }
  .practice-surface .rp-resume .rp-resume-text{flex:1 1 100%;font-size:12.5px;line-height:1.55}
  .practice-surface .rp-resume .rp-resume-acts{flex:1 1 100%;gap:10px}
  .practice-surface .rp-resume .rp-button.rp-primary{padding:7px 14px;font-size:12.5px}
  .practice-surface .rp-resume .rp-link{font-size:12.5px}
  .practice-surface .rp-resume .rp-resume-close{position:absolute;right:8px;top:6px;margin:0}
  /* 筛选器：模式一行；两个下拉并排（各占一半），避免各占一行 */
  .practice-surface .rp-filters{gap:8px;padding-top:10px}
  .practice-surface .rp-filter-group{
    padding-right:0;border-right:0;flex:1 1 100%;flex-wrap:wrap;
  }
  .practice-surface .rp-filters .rp-button{flex:1;text-align:center;justify-content:center;padding:8px 10px;font-size:12.5px}
  .practice-surface .rp-filter-group:nth-child(2),
  .practice-surface .rp-filter-group:nth-child(3){flex:1 1 46%}
  .practice-surface .rp-filters .rp-field{flex:1 1 100%;font-size:12.5px}
  .practice-surface .rp-filters .rp-field select{flex:1;min-width:0;font-size:12.5px;padding:7px 8px}
}

/* ============================================================================
   真题关联卡片 + 原题对照弹窗 + 统一返回入口（板 C：暖奶油层次）
   ----------------------------------------------------------------------------
   设计依据（已落盘 backups/design-skills-20261013/）：
     · minimalist-ui        —— 暖单色 #FBFBFA 底 / #EAEAEA 1px 边 / 正文禁纯黑（用 #111 或 #2F3437）
     · redesign-existing-projects —— 去掉通用卡片套路（蓝底 + 粗黑竖线），差异说明收进弹窗
     · high-end-visual-design      —— 阴影用极柔弥散（低透明度、大扩散），不用硬 drop shadow
     · emilkowalski/skills  —— :active 按下反馈、transition 写具体属性（非 all）、动效 <300ms
   字体：**沿用现有字体变量**，本段不引入任何新字体。
   作用域：只在 .practice-surface / .paper-list 内生效，不影响共用本 CSS 的其它页面。
   ============================================================================ */

/* ── 统一返回按钮（含 ArrowLeft 图标，命中区 ≥44px） ───────────────────── */
.practice-surface .rp-navbtn,.paper-list .rp-navbtn{
  display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:0 15px;
  border:1px solid #e6e4df;border-radius:10px;background:#fff;color:var(--ps-ink);
  font-size:13.5px;font-weight:500;line-height:1;text-decoration:none;
  box-shadow:0 1px 2px rgba(47,52,55,.04);
  transition:background-color .2s cubic-bezier(.16,1,.3,1),
             border-color .2s cubic-bezier(.16,1,.3,1),
             box-shadow .2s cubic-bezier(.16,1,.3,1),
             transform .2s cubic-bezier(.16,1,.3,1);
}
.practice-surface .rp-navbtn svg,.paper-list .rp-navbtn svg{
  width:16px;height:16px;flex:0 0 auto;color:var(--ps-ink-3);stroke-width:1.75;
  transition:transform .2s cubic-bezier(.16,1,.3,1),color .15s ease;
}
.practice-surface .rp-navbtn:hover,.paper-list .rp-navbtn:hover{
  background:#fcfcfb;border-color:#d9d6cf;box-shadow:0 3px 10px rgba(47,52,55,.07);
}
.practice-surface .rp-navbtn:hover svg,.paper-list .rp-navbtn:hover svg{
  color:var(--ps-ink);transform:translateX(-2px);
}
.practice-surface .rp-navbtn:active,.paper-list .rp-navbtn:active{
  transform:scale(.98);background:#f5f4f1;
}
.practice-surface .rp-navbtn:focus-visible,.paper-list .rp-navbtn:focus-visible{
  outline:3px solid #6595e9;outline-offset:2px;
}
.practice-surface .rp-navrow,.paper-list .rp-navrow{margin:0 0 14px;padding:0}

/* ── 真题页顶部导航区：返回入口在上、页签在下，明确拉开纵向间距 ──────────
   之前返回按钮与页签是两个并列兄弟，实测按钮 top=135 = 页签 bottom=135
   （间距 0px，紧贴），且按钮被排到页签**下面**。这里统一为：
     [返回我的备考]  ——16px——  [专题复习 | 本校真题]  ——18px——  标题
   左内边距 0：与页签、标题同一左基准线，不再左突 32px。 */
.paper-list .rp-navblock,
.paper-surface .rp-navblock,
.review-practice .rp-navblock{
  display:flex;flex-direction:column;align-items:flex-start;
  gap:16px;margin:0 0 18px;padding:0;
}
.paper-list .rp-navblock .rp-navrow,
.paper-surface .rp-navblock .rp-navrow,
.review-practice .rp-navblock .rp-navrow{margin:0;padding:0}
.paper-list .rp-navblock nav,
.paper-surface .rp-navblock nav,
.review-practice .rp-navblock nav{margin:0;padding:0;gap:12px}
/* 页签行本身有 rp-row 的间距，这里只压掉多余外边距，不改变按钮外观 */
.paper-list .rp-navblock>nav,.paper-surface .rp-navblock>nav,
.review-practice .rp-navblock>nav{display:flex;flex-wrap:wrap;align-items:center}

/* ── 专题名独立标题（与返回动作分组：组内紧、组间松） ─────────────────── */
.practice-surface .rp-topic-title{
  margin:18px 0 4px;font-size:19px;font-weight:600;letter-spacing:-.01em;line-height:1.25;
  color:var(--ps-ink);
}
.practice-surface .rp-topic-sub{margin:0 0 14px;font-size:12.5px;color:var(--ps-ink-3)}

/* ── 真题关联：紧凑卡片（浅边框、无蓝底、无粗黑竖线） ─────────────────── */
.practice-surface .rp-rel{margin:16px 0 4px}
.practice-surface .rp-rel-head{display:flex;align-items:baseline;gap:8px;margin:0 0 9px}
.practice-surface .rp-rel-head h3{margin:0;font-size:14px;font-weight:600;color:var(--ps-ink)}
.practice-surface .rp-rel-count{font-size:11.5px;color:var(--ps-ink-3)}
.practice-surface .rp-rel-card{
  border:1px solid var(--ps-line);border-radius:12px;background:#fff;overflow:hidden;
}
.practice-surface .rp-rel-item{
  display:flex;align-items:center;gap:11px;padding:12px 13px;
  border-top:1px solid var(--ps-line-2);min-width:0;
}
.practice-surface .rp-rel-item:first-child{border-top:0}
.practice-surface .rp-rel-badge{
  flex:0 0 auto;font-size:10.5px;font-weight:600;border-radius:6px;padding:3px 8px;white-space:nowrap;
  background:#f1f1ef;color:#5c6670;
}
.practice-surface .rp-rel-badge.is-own{background:#edf3ec;color:#346538}
.practice-surface .rp-rel-badge.is-other{background:#fbf3db;color:#956400}
.practice-surface .rp-rel-main{min-width:0;flex:1}
.practice-surface .rp-rel-l1{
  font-size:13px;font-weight:500;color:var(--ps-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.practice-surface .rp-rel-l2{
  margin-top:2px;font-size:11.5px;color:var(--ps-ink-3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.practice-surface .rp-rel-btn{
  flex:0 0 auto;min-height:36px;padding:0 12px;border:1px solid var(--ps-line);border-radius:8px;
  background:#fff;color:var(--ps-ink);font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer;
  transition:background-color .2s cubic-bezier(.16,1,.3,1),
             border-color .2s cubic-bezier(.16,1,.3,1),transform .2s cubic-bezier(.16,1,.3,1);
}
.practice-surface .rp-rel-btn:hover{background:#f7f7f5;border-color:#d9d6cf}
.practice-surface .rp-rel-btn:active{transform:scale(.98);background:#f0efec}
.practice-surface .rp-rel-btn:focus-visible{outline:3px solid #6595e9;outline-offset:2px}
/* 其余 N 条：默认收起，展开后以内联行追加 */
.practice-surface .rp-rel-rest{display:none}
.practice-surface .rp-rel-card.is-expanded .rp-rel-rest{display:block}
.practice-surface .rp-rel-rest .rp-rel-item{border-top:1px solid var(--ps-line-2)}
.practice-surface .rp-rel-toggle{
  display:flex;align-items:center;justify-content:space-between;width:100%;min-height:44px;
  padding:0 13px;border:0;border-top:1px solid var(--ps-line-2);background:#fcfcfb;
  color:var(--ps-ink-2);font-size:12px;font-weight:500;cursor:pointer;text-align:left;
  transition:background-color .2s cubic-bezier(.16,1,.3,1),color .2s cubic-bezier(.16,1,.3,1);
}
.practice-surface .rp-rel-toggle:hover{background:#f5f4f1;color:var(--ps-ink)}
.practice-surface .rp-rel-toggle:focus-visible{outline:3px solid #6595e9;outline-offset:-3px}
.practice-surface .rp-rel-chev{color:var(--ps-ink-3);transition:transform .2s cubic-bezier(.16,1,.3,1)}
.practice-surface .rp-rel-card.is-expanded .rp-rel-chev{transform:rotate(180deg)}

/* ── 原题对照弹窗（标题常驻 + 正文滚动 + 限宽限高） ───────────────────── */
.practice-surface .rp-cmp{
  width:100%;max-width:min(1100px,calc(100vw - 32px));max-height:90vh;
  display:flex;flex-direction:column;overflow:hidden;
  border:1px solid var(--ps-line);border-radius:16px;background:#fff;
  box-shadow:0 24px 60px -20px rgba(47,52,55,.28);
}
.practice-surface .rp-cmp-head{
  flex:0 0 auto;display:flex;align-items:center;gap:9px;
  padding:15px 16px;border-bottom:1px solid var(--ps-line-2);
}
.practice-surface .rp-cmp-head h2{margin:0;font-size:15px;font-weight:600;color:var(--ps-ink)}
.practice-surface .rp-cmp-badge{
  font-size:10.5px;font-weight:600;border-radius:9999px;padding:3px 9px;
  background:#edf3ec;color:#346538;
}
.practice-surface .rp-cmp-close{
  margin-left:auto;flex:0 0 auto;width:34px;height:34px;display:inline-flex;
  align-items:center;justify-content:center;border:1px solid var(--ps-line);border-radius:9px;
  background:#fff;color:var(--ps-ink-2);font-size:14px;line-height:1;cursor:pointer;
  transition:background-color .2s cubic-bezier(.16,1,.3,1),transform .2s cubic-bezier(.16,1,.3,1);
}
.practice-surface .rp-cmp-close:hover{background:#f5f4f1;color:var(--ps-ink)}
.practice-surface .rp-cmp-close:active{transform:scale(.96)}
.practice-surface .rp-cmp-close:focus-visible{outline:3px solid #6595e9;outline-offset:2px}
.practice-surface .rp-cmp-body{flex:1 1 auto;overflow:auto;padding:15px 16px 18px;-webkit-overflow-scrolling:touch}

/* 关键：minmax(0,1fr)。不写 min-width:0 时，长公式的固有宽度会把列撑宽、
   把右侧内容挤出视口（样张阶段实测踩过）。 */
.practice-surface .rp-cmp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.practice-surface .rp-cmp-side{border:1px solid var(--ps-line);border-radius:12px;overflow:hidden;min-width:0}
.practice-surface .rp-cmp-side>header{
  display:flex;align-items:baseline;gap:8px;padding:9px 12px;min-width:0;
  background:#fcfcfb;border-bottom:1px solid var(--ps-line-2);
}
.practice-surface .rp-cmp-side-t{font-size:12.5px;font-weight:600;color:var(--ps-ink);white-space:nowrap}
.practice-surface .rp-cmp-side-no{
  margin-left:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:11px;color:var(--ps-ink-3);font-variant-numeric:tabular-nums;
}
.practice-surface .rp-cmp-stem{padding:12px;font-size:13.5px;min-width:0;color:var(--ps-ink)}
.practice-surface .rp-cmp-stem img{max-width:100%;height:auto;display:block;margin:9px 0 0;
  border:1px solid var(--ps-line);border-radius:8px;background:#fff}
/* 长公式：只在自身容器内横向滚动，不撑宽页面 */
.practice-surface .rp-cmp-stem .rp-math-block{overflow-x:auto;overflow-y:hidden;max-width:100%}
.practice-surface .rp-cmp-metas{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}
.practice-surface .rp-cmp-chip{
  font-size:11px;border-radius:6px;padding:3px 8px;background:#edf3ec;color:#346538;
  font-variant-numeric:tabular-nums;
}

/* 「关联说明」「出处信息」：折叠，默认收起 */
.practice-surface .rp-cmp-sec{margin-top:12px;border:1px solid var(--ps-line);border-radius:12px;overflow:hidden}
.practice-surface .rp-cmp-sec>summary{
  display:flex;align-items:center;gap:7px;min-height:44px;padding:0 13px;cursor:pointer;
  list-style:none;font-size:12.5px;font-weight:500;color:var(--ps-ink);background:#fcfcfb;
  transition:background-color .2s cubic-bezier(.16,1,.3,1);
}
.practice-surface .rp-cmp-sec>summary::-webkit-details-marker{display:none}
.practice-surface .rp-cmp-sec>summary:hover{background:#f5f4f1}
.practice-surface .rp-cmp-sec>summary:focus-visible{outline:3px solid #6595e9;outline-offset:-3px}
.practice-surface .rp-cmp-warn{font-style:normal;font-weight:400;font-size:11.5px;color:var(--ps-ink-3)}
.practice-surface .rp-cmp-chev{margin-left:auto;color:var(--ps-ink-3);transition:transform .2s cubic-bezier(.16,1,.3,1)}
.practice-surface .rp-cmp-sec[open] .rp-cmp-chev{transform:rotate(180deg)}
.practice-surface .rp-cmp-secbody{
  padding:12px 13px;border-top:1px solid var(--ps-line-2);
  font-size:13px;line-height:1.75;color:var(--ps-ink-2);
}
.practice-surface .rp-cmp-src{display:flex;flex-wrap:wrap;gap:5px 20px;margin:0;font-size:12px}
.practice-surface .rp-cmp-src dt{color:var(--ps-ink-3);margin:0}
.practice-surface .rp-cmp-src dd{margin:0;color:var(--ps-ink-2)}
.practice-surface .rp-cmp-srclinks{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}
.practice-surface .rp-cmp-muted{color:var(--ps-ink-3);font-size:12.5px}
.practice-surface .rp-cmp-failtext{color:#a12626;font-size:12.5px}
.practice-surface .rp-cmp-retry{
  margin-top:8px;min-height:36px;padding:0 13px;border:1px solid var(--ps-line);border-radius:8px;
  background:#fff;color:var(--ps-ink);font-size:12.5px;font-weight:500;cursor:pointer;
  transition:background-color .2s cubic-bezier(.16,1,.3,1),transform .2s cubic-bezier(.16,1,.3,1);
}
.practice-surface .rp-cmp-retry:hover{background:#f5f4f1}
.practice-surface .rp-cmp-retry:active{transform:scale(.98)}

/* 加载态 / 失败态 */
.practice-surface .rp-cmp-loading{display:flex;align-items:center;gap:10px;padding:26px 4px;color:var(--ps-ink-3);font-size:13px}
.practice-surface .rp-cmp-spin{
  width:15px;height:15px;flex:0 0 auto;border:2px solid var(--ps-line);
  border-top-color:var(--ps-ink-3);border-radius:50%;animation:rpCmpSpin .7s linear infinite;
}
@keyframes rpCmpSpin{to{transform:rotate(360deg)}}
.practice-surface .rp-cmp-fail{
  border:1px solid #f0d6d6;background:#fdf6f6;border-radius:10px;padding:14px;
  font-size:13px;color:#8a2b2b;
}

/* ── 窄屏：左右分栏改上下排列（900px 断点） ───────────────────────────── */
@media (max-width:900px){
  .practice-surface .rp-cmp-grid{grid-template-columns:minmax(0,1fr)}
  .practice-surface .rp-cmp{max-width:calc(100vw - 20px);max-height:92vh}
}
/* ── 手机：关联条目改为堆叠，按钮独占一行（命中区仍 ≥44px） ───────────── */
@media (max-width:640px){
  .practice-surface .rp-rel-item{flex-wrap:wrap;gap:8px}
  .practice-surface .rp-rel-main{flex:1 1 100%;order:2}
  .practice-surface .rp-rel-badge{order:1}
  .practice-surface .rp-rel-btn{order:3;flex:1 1 100%;min-height:44px;text-align:center;justify-content:center}
  .practice-surface .rp-navbtn,.paper-list .rp-navbtn{width:100%;justify-content:center}
}

/* ── 深色模式：外壳与菜单/弹窗一致（内容区深色化不在本次范围） ─────────── */
@media (prefers-color-scheme: dark){
  .practice-surface .rp-navbtn,.paper-list .rp-navbtn{background:#1a2029;border-color:#2c333d;color:#e8eaee}
  .practice-surface .rp-navbtn:hover,.paper-list .rp-navbtn:hover{background:#232b36;border-color:#3a424e}
  .practice-surface .rp-rel-card{border-color:#2c333d;background:#1a2029}
  .practice-surface .rp-rel-item{border-top-color:#232a33}
  .practice-surface .rp-rel-l1{color:#e8eaee}
  .practice-surface .rp-rel-btn{background:#1a2029;border-color:#2c333d;color:#e8eaee}
  .practice-surface .rp-rel-btn:hover{background:#232b36}
  .practice-surface .rp-rel-toggle{background:#1e242e;color:#a8b1bd}
  .practice-surface .rp-rel-toggle:hover{background:#232b36;color:#e8eaee}
  .practice-surface .rp-cmp{background:#1a2029;border-color:#2c333d;box-shadow:0 24px 60px -20px rgba(0,0,0,.6)}
  .practice-surface .rp-cmp-head{border-bottom-color:#232a33}
  .practice-surface .rp-cmp-head h2{color:#e8eaee}
  .practice-surface .rp-cmp-close{background:#1a2029;border-color:#2c333d;color:#a8b1bd}
  .practice-surface .rp-cmp-side{border-color:#2c333d}
  .practice-surface .rp-cmp-side>header{background:#1e242e;border-bottom-color:#232a33}
  .practice-surface .rp-cmp-side-t{color:#e8eaee}
  .practice-surface .rp-cmp-stem{color:#e8eaee}
  .practice-surface .rp-cmp-sec{border-color:#2c333d}
  .practice-surface .rp-cmp-sec>summary{background:#1e242e;color:#e8eaee}
  .practice-surface .rp-cmp-secbody{border-top-color:#232a33;color:#a8b1bd}
  .practice-surface .rp-cmp-retry{background:#1a2029;border-color:#2c333d;color:#e8eaee}
  /* 专题标题：内容区背景未深色化（--ps-canvas 仍为浅色），故不跟随深色改浅，
     保持 --ps-ink 深色，避免「白底浅字」在手机深色系统下几乎不可读。 */
}

/* ============================================================================
   返回按钮的**无作用域基础规则**
   ----------------------------------------------------------------------------
   用途：专题目录页(/topics)引用本文件时，其根元素既不是 .practice-surface
   也不是 .paper-list，作用域规则不生效；这里给 .rp-navbtn 一份自成一体的兜底，
   保证「← 返回我的备考」在目录页也有同样的浅边框、10px 圆角、≥44px 命中区。
   颜色取板 C（暖奶油族）的固定值，不依赖练习页的 --ps-* 变量。
   放在文件最末：同优先级时后写者生效，练习页/真题页会继续用上面的作用域精细值。
   ============================================================================ */
.rp-navbtn{
  display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:0 15px;
  border:1px solid #e6e4df;border-radius:10px;background:#fff;color:#2F3437;
  font-size:13.5px;font-weight:500;line-height:1;text-decoration:none;
  box-shadow:0 1px 2px rgba(47,52,55,.04);
  transition:background-color .2s cubic-bezier(.16,1,.3,1),
             border-color .2s cubic-bezier(.16,1,.3,1),
             box-shadow .2s cubic-bezier(.16,1,.3,1),
             transform .2s cubic-bezier(.16,1,.3,1);
}
.rp-navbtn svg{
  width:16px;height:16px;flex:0 0 auto;color:#8a929b;stroke-width:1.75;
  transition:transform .2s cubic-bezier(.16,1,.3,1),color .15s ease;
}
.rp-navbtn:hover{background:#fcfcfb;border-color:#d9d6cf;box-shadow:0 3px 10px rgba(47,52,55,.07)}
.rp-navbtn:hover svg{color:#2F3437;transform:translateX(-2px)}
.rp-navbtn:active{transform:scale(.98);background:#f5f4f1}
.rp-navbtn:focus-visible{outline:3px solid #6595e9;outline-offset:2px}
/* 目录页的包裹行：与下方标题留出间距（Law of Proximity：与标题分组、与卡片分开） */
.rp-navwrap{margin:0 0 14px}
@media (prefers-color-scheme: dark){
  .rp-navbtn{background:#1a2029;border-color:#2c333d;color:#e8eaee}
  .rp-navbtn:hover{background:#232b36;border-color:#3a424e}
  .rp-navbtn svg{color:#a8b1bd}
  .rp-navbtn:hover svg{color:#e8eaee}
}



/* ---------- 与整卷阅读页统一：题干卡纸感网格 + 题型胶囊规格一致 ---------- */
.practice-surface section.rp-card{position:relative;background:#fff}
.practice-surface section.rp-card::before{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background-image:linear-gradient(rgba(20,25,34,.028) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(20,25,34,.028) 1px,transparent 1px);
  background-size:22px 22px;
  -webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.9),transparent 74%);
          mask-image:linear-gradient(180deg,rgba(0,0,0,.9),transparent 74%);
}
.practice-surface section.rp-card>*{position:relative}
/* 阅读页的题型改成与练习页同款胶囊 */
.paper-read section.rp-card>h3.rp-qhead>.rp-qsub{
  font-size:12px;font-weight:600;color:var(--pr-ink-2,#5b6169);
  background:#eef0f3;border-radius:6px;padding:3px 8px;
}
/* 两页题号徽标规格对齐 */
.paper-read section.rp-card>h3.rp-qhead>.rp-qno{
  width:26px;height:26px;border-radius:8px;font-size:12px;font-weight:600;
}

/* 真题练习与专题练习统一：题干不再套阅读页的卡片 */
.practice-surface .rp-question{background:transparent;border:0;border-radius:0;box-shadow:none;padding:0;margin:0 0 12px}
.practice-surface .rp-question::before{display:none}
.practice-surface .rp-question > .rp-math{margin-top:2px}

/* 试卷练习页头：返回链接与标题同一行 */
.paper-surface .rp-paperhead{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin:0 0 6px}
.paper-surface .rp-paperhead .rp-infobar{margin:0;flex:none}
.paper-surface .rp-paperhead .rp-topic-title{margin:0}
@media (max-width:640px){.paper-surface .rp-paperhead{gap:8px;align-items:flex-start;flex-direction:column}}

/* ---------- 真题练习页头（方案 D：工具条 + 进度条） ---------- */
.paper-surface .rp-header{background:transparent;padding:2px 2px 18px;border-bottom:1px solid var(--pr-line,#E6E4DE)}
.paper-surface .rp-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}
.paper-surface .rp-navbtn{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 14px;border:1px solid #E6E4DE;border-radius:10px;background:#fff;color:#6B6A66;font-size:13px;font-weight:500;text-decoration:none;transition:border-color .16s ease,color .16s ease,transform .1s ease}
.paper-surface .rp-navbtn:hover{border-color:#D6D2C7;color:#2F3437}
.paper-surface .rp-navbtn:active{transform:scale(.98)}
.paper-surface .rp-navbtn:focus-visible{outline:2px solid #2F3437;outline-offset:2px}
.paper-surface .rp-navbtn svg{flex:none}
.paper-surface .rp-ghost{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:0;background:transparent;color:#6B6A66;font-size:13px;cursor:pointer;border-radius:10px;transition:background .16s ease,color .16s ease,transform .1s ease}
.paper-surface .rp-ghost:hover{color:#2F3437;background:#EFEFEC}
.paper-surface .rp-ghost:active{transform:scale(.98)}
.paper-surface .rp-ghost:focus-visible{outline:2px solid #2F3437;outline-offset:2px}
.paper-surface .rp-paperhead{display:flex;align-items:flex-start;justify-content:space-between;gap:32px}
.paper-surface .rp-titles{min-width:0}
.paper-surface .rp-paperhead .rp-topic-title{font-size:23px;font-weight:600;margin:0 0 6px;letter-spacing:-.012em;line-height:1.45;max-width:40ch}
.paper-surface .rp-paperhead .rp-topic-sub{display:block;margin:0;font-size:12.5px;color:#6B6A66}
.paper-surface .rp-progress{flex:none;width:188px;padding-top:3px}
.paper-surface .rp-progress-nums{display:flex;align-items:baseline;gap:5px;margin:0 0 8px}
.paper-surface .rp-progress-nums b{font-size:19px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.paper-surface .rp-progress-nums span{font-size:12px;color:#6B6A66}
.paper-surface .rp-progress-track{height:5px;border-radius:999px;background:#E7E5DF;overflow:hidden}
.paper-surface .rp-progress-fill{height:100%;border-radius:999px;background:#2F3437;transition:width .3s ease}
.paper-surface .rp-progress-cap{margin:7px 0 0;font-size:11.5px;color:#9C9A92}
.paper-surface .rp-resume{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:18px;padding:12px 14px;background:#fff;border-left:3px solid #2F3437;border-radius:0 10px 10px 0}
.paper-surface .rp-resume p{margin:0;font-size:13px}
.paper-surface .rp-resume-acts{display:flex;align-items:center;gap:8px;flex:none}
.paper-surface .rp-btn-primary{display:inline-flex;align-items:center;min-height:38px;padding:0 16px;border:0;border-radius:9px;background:#2F3437;color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:background .16s ease,transform .1s ease}
.paper-surface .rp-btn-primary:hover{background:#3C4245}
.paper-surface .rp-btn-primary:active{transform:scale(.98)}
.paper-surface .rp-btn-primary:focus-visible{outline:2px solid #2F3437;outline-offset:2px}
.paper-surface .rp-resume-close{border:0;background:transparent;color:#9C9A92;font-size:18px;line-height:1;cursor:pointer;padding:6px 8px;border-radius:8px;transition:background .16s ease,color .16s ease}
.paper-surface .rp-resume-close:hover{background:#F1F0EC;color:#2F3437}
@media (max-width:720px){
 .paper-surface .rp-paperhead{flex-direction:column;gap:14px}
 .paper-surface .rp-progress{width:100%;max-width:220px}
 .paper-surface .rp-paperhead .rp-topic-title{font-size:20px}
 .paper-surface .rp-resume{flex-direction:column;align-items:flex-start;gap:10px}
}
/* 覆盖旧版续练条的绝对定位（x 会压在文字上） */
.paper-surface .rp-resume{position:static;padding-right:14px}
.paper-surface .rp-resume-close{position:static;right:auto;top:auto;margin:0;font-size:18px;min-width:0}
/* 手机端：返回按钮不拉伸、续练条内容占满 */
@media (max-width:720px){
 .paper-surface .rp-bar{justify-content:flex-start}
 .paper-surface .rp-bar .rp-navbtn{flex:none}
 .paper-surface .rp-resume-acts{align-self:flex-end}
}

/* 返回按钮不被父级拉伸（列向 flex 下 align-self:stretch 会撑满） */
.paper-surface .rp-bar{flex-wrap:wrap}
.paper-surface .rp-bar .rp-navbtn{flex:0 0 auto;align-self:center;width:max-content;max-width:100%}
.paper-surface .rp-bar .rp-ghost{flex:0 0 auto;margin-left:auto}

/* 窄屏试卷列表：进度并入标题行，按钮分两行（覆盖旧的「进度条独占一行」布局） */
@media (max-width:620px){
 .paper-list .rp-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;
   grid-template-areas:"idx info bar" "acts acts acts";gap:10px 12px;padding:14px 16px}
 .paper-list .rp-idx{grid-area:idx;align-self:start;margin-top:2px}
 .paper-list .rp-info{grid-area:info;flex:none;min-width:0}
 .paper-list .rp-ptitle{font-size:15px;line-height:1.45}
 .paper-list .rp-bar{grid-area:bar;flex:none;width:auto;align-items:flex-end;align-self:start;margin-top:2px}
 .paper-list .rp-bar-track{display:none}
 .paper-list .rp-bar-label{font-size:12px;white-space:nowrap;text-align:right}
 .paper-list .rp-acts{grid-area:acts;display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}
 .paper-list .rp-acts>a.rp-button{flex:none;display:inline-flex;align-items:center;justify-content:center;
   padding:10px 12px;text-align:center;min-height:40px}
 .paper-list .rp-acts>a.rp-button:first-child{grid-column:1 / -1}
}

/* 窄屏：meta 收紧，避免「12 题」被挤到第二行 */
@media (max-width:620px){
 .paper-list .rp-item{gap:8px 10px}
 .paper-list .rp-pmeta{font-size:11.5px;letter-spacing:0}
 .paper-list .rp-bar-label{font-size:11.5px}
 .paper-list .rp-bar{min-width:44px}
}

/* ─────────────────────────────────────────────────────────────
   本校真题：本校 / 其他学校 分层
   作用域限定 .paper-list（试卷列表页），read/practice 分支不受影响
   ───────────────────────────────────────────────────────────── */
.paper-list .rp-browse{display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:14px 0 0;padding:9px 14px;border-radius:10px;background:#FBF3DB;color:#956400;font-size:12.5px}
.paper-list .rp-browse-back{color:#956400;font-weight:600;text-decoration:underline;text-underline-offset:3px}

.paper-list .rp-papers-own{position:relative;margin:14px 0 0;padding:16px 18px 16px 20px;
  background:#fff;border:1px solid #E6E4DF;border-radius:12px}
.paper-list .rp-papers-own::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;
  border-radius:3px;background:#2F3437}
.paper-list .rp-papers-own.is-browse::before{background:#B9B6AC}
.paper-list .rp-papers-own-head{display:flex;align-items:baseline;gap:10px}
.paper-list .rp-own-chip{flex:none;font-size:11px;font-weight:600;padding:2px 7px;border-radius:5px;
  background:#EEEDE8;color:#6B6A66}
.paper-list .rp-own-name{font-size:14.5px;font-weight:600;flex:1;min-width:0}
.paper-list .rp-papers-count{flex:none;font-size:12.5px;color:#9C9A92}
.paper-list .rp-papers-note{margin:6px 0 0;font-size:12.5px;color:#6B6A66}

.paper-list .rp-papers-divider{display:flex;align-items:center;gap:12px;margin:20px 0 12px;
  font-size:12px;color:#9C9A92}
.paper-list .rp-papers-divider::before,.paper-list .rp-papers-divider::after{content:"";flex:1;height:1px;background:#E6E4DF}

.paper-list .rp-papers-others{background:#F6F5F1;border:1px solid #EAE8E2;border-radius:12px;padding:14px 18px}
.paper-list .rp-papers-others-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.paper-list .rp-papers-hint{font-size:12px;color:#9C9A92}
.paper-list .rp-school-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid #E7E4DD}
.paper-list .rp-papers-others .rp-school-row:nth-of-type(1){margin-top:10px}
.paper-list .rp-school-row:last-child{padding-bottom:2px}
.paper-list .rp-school-nm{flex:1;min-width:0}
.paper-list .rp-school-nm b{display:block;font-weight:600;font-size:13.5px;color:#2F3437}
.paper-list .rp-school-years{display:block;font-size:11.5px;color:#9C9A92;margin-top:1px}

.paper-list .rp-papers-tail{margin:16px 0 0;font-size:12.5px;color:#6B6A66}
.paper-list .rp-papers-tail-link{color:#2F3437;text-decoration:underline;text-underline-offset:3px}

/* 深色 */
.dark .paper-list .rp-papers-own{background:#232320;border-color:#3A3833}
.dark .paper-list .rp-papers-own::before{background:#E6E4DE}
.dark .paper-list .rp-own-chip{background:#333230;color:#B9B6AC}
.dark .paper-list .rp-own-name{color:#E6E4DE}
.dark .paper-list .rp-papers-note,.dark .paper-list .rp-papers-tail{color:#B9B6AC}
.dark .paper-list .rp-papers-divider{color:#8E8C85}
.dark .paper-list .rp-papers-divider::before,.dark .paper-list .rp-papers-divider::after{background:#3A3833}
.dark .paper-list .rp-papers-others{background:#1F1F1D;border-color:#3A3833}
.dark .paper-list .rp-school-row{border-color:#33312C}
.dark .paper-list .rp-school-nm b{color:#E6E4DE}
.dark .paper-list .rp-browse{background:#3A3220;color:#E7C97A}
/* 本校/其他学校区块里的按钮用小号，避免一屏只放得下两行 */
.paper-list .rp-papers-others .rp-button,
.paper-list .rp-papers-own .rp-button{font-size:12.5px;padding:6px 12px;min-height:0;line-height:1.5;border-radius:9px}
.paper-list .rp-school-row .rp-button{flex:none}

