/* ==================================================================
   pages/exams.css — 考级考证门户（页面层：只写本页布局几何）
   ------------------------------------------------------------------
   依赖：static/base.css 的 token 与组件（.page-container/.page-head/
        .page-title/.page-subtitle/.section-title、.bank-card 卡片家族、
        .btn* 按钮、.chip、.g-empty/.g-error/.g-skeleton、.text-mute/.text-xs、
        .g-rise、:focus-visible、.footer）
   纪律（对应《前端显示优化方案_20260925.md》§3/§5/§9）：
     1. 本文件不出现字面色值（十六进制 / 颜色函数一律不用），全走 var(--g-*)；
     2. 不用强制覆盖（无 important 声明）；
     3. 字号一律走 --g-fs-*（最小正文 12.5px）；
     4. 不改 HTML 既有 class 名，不动任何 id。
   本页定位：考证线入口，二级导航与 /practice /exam /answersheet /stats 闭环。
   ================================================================== */

body[data-page="exams"] { display: flex; flex-direction: column; min-height: 100vh; }

/* ---------- 概览条：题量 / 真题数 / 已收录维度 ---------- */
.overview {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--g-sp-3); margin-bottom: var(--g-sp-5);
}
/* V9.1：统计卡归一到全站竖排 anatomy（数字 2xl 在上、标签 xs 在下，见 base 7c） */
.ov-item {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px; min-width: 0;
  padding: var(--g-sp-3) var(--g-sp-4);
  background: var(--g-surface); border: 1px solid var(--g-line);
  border-radius: var(--g-r-md); box-shadow: var(--g-sh-sm);
}
.ov-item .ov-value { margin-left: 0; }

/* ---------- 四入口快捷卡：.quick-row/a.quick-card/.quick-icon 已收编进 base（并档第二批） ---------- */

/* ---------- 七维度栅格（.bank-grid 家族沿用，不重命名） ---------- */
.bank-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(288px, 1fr)); gap: var(--g-sp-3); }

/* 维度色相全部走 token：页面层不接收后端下发的字面色值 */
.bank-card { --b-accent: var(--g-exams); --b-wash: var(--g-wash-4); }
.bank-card.b-kaoyan  { --b-accent: var(--g-knowledge); --b-wash: var(--g-wash-2); }
.bank-card.b-teacher { --b-accent: var(--g-exams);     --b-wash: var(--g-wash-4); }
.bank-card.b-cet4    { --b-accent: var(--g-tasks);     --b-wash: var(--g-wash-3); }
.bank-card.b-cet6    { --b-accent: var(--g-c4);        --b-wash: var(--g-wash-3); }
.bank-card.b-ncre2   { --b-accent: var(--g-ok);        --b-wash: var(--g-wash-1); }
.bank-card.b-regular { --b-accent: var(--g-c5);        --b-wash: var(--g-wash-1); }
/* b-final（地理期末）维度已撤除，样式一并移除 */

.bank-card {
  display: flex; flex-direction: column;
  padding: var(--g-sp-4) var(--g-sp-4) var(--g-sp-3);
  border-top: 3px solid var(--b-accent);
}
.bank-head { display: flex; align-items: center; gap: var(--g-sp-3); margin-bottom: var(--g-sp-2); }
.bank-icon {
  width: 44px; height: 44px; flex: 0 0 auto;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem; line-height: 1; border-radius: var(--g-r-md);
  background: var(--b-wash);
  box-shadow: inset 0 1px 0 var(--g-surface), 0 8px 18px -12px var(--g-ink);
}
.bank-name { font-size: var(--g-fs-md); font-weight: 800; color: var(--g-ink); }
.bank-full { font-size: var(--g-fs-xs); color: var(--g-mute); }
.bank-desc { flex: 1; margin-bottom: var(--g-sp-3); font-size: var(--g-fs-sm); color: var(--g-mute); }

.bank-stats { display: flex; flex-wrap: wrap; gap: var(--g-sp-3); margin-bottom: var(--g-sp-3); font-size: var(--g-fs-xs); color: var(--g-mute); }
.bank-stats b { font-size: var(--g-fs-md); font-variant-numeric: tabular-nums; }
.bank-stats .q-ok b { color: var(--b-accent); }
.bank-stats .q-zero b { color: var(--g-mute); font-weight: 600; }

.bank-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--g-sp-2); }
.bank-actions .chip { cursor: default; }
/* 真题库按钮展开态（面板已经打开时的视觉反馈） */
.bank-actions .btn.is-open { border-color: var(--g-primary); color: var(--g-primary); background: var(--g-primary-soft); }

/* V9.1：空态维度卡降权——0 题/0 份的卡整体退后一档，不再与有内容的卡同等抢眼 */
.bank-card.is-empty { opacity: 0.68; filter: saturate(0.55); }
.bank-card.is-empty:hover { opacity: 1; filter: none; }

/* C4：0 题 / 0 份的维度降强调（灰度 + 次要边框 + 次要按钮），
   有数据的维度保持主按钮（.btn-primary 由页面 JS 按题量挂）。
   注：悬停仍由 base 的 a.card/.bank-card 家族提供，这里只调低静息权重；
   刻意不整体降 opacity——正文对比度必须保住 AA。 */
.bank-card.is-empty { border-color: var(--g-line-2); }
.bank-card.is-empty .bank-icon { filter: grayscale(1); opacity: 0.85; }
.bank-card.is-empty .bank-name { color: var(--g-ink-2); }
.bank-card.is-empty .bank-stats b { font-weight: 600; }
.bank-card.is-empty::after { display: none; }

/* ---------- 真题库文件面板（.papers-panel 家族沿用） ---------- */
.papers-panel {
  display: none; margin-top: var(--g-sp-3);
  padding-top: var(--g-sp-3); border-top: 1px dashed var(--g-line);
}
.papers-panel.open { display: block; }
.papers-panel h4 {
  display: flex; align-items: center; gap: var(--g-sp-2);
  margin-bottom: var(--g-sp-2);
  font-size: var(--g-fs-sm); font-weight: 700; color: var(--g-ink-2);
}
/* .paper-file 已收编进 base（并档第二批），本页只留面板容器 */

/* 面板内嵌的空态/错误态收敛高度（桌面端不留大片空白） */
.papers-panel .g-empty { min-height: 88px; padding: var(--g-sp-3) var(--g-sp-2); gap: 6px; }

/* ---------- 首屏加载 / 失败占位（4-19：先骨架，不跳高） ---------- */
.skeleton-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(288px, 1fr)); gap: var(--g-sp-3); }
.skeleton-grid .bank-skeleton {
  display: flex; flex-direction: column; gap: var(--g-sp-2);
  height: 186px; padding: var(--g-sp-4);
  background: var(--g-surface); border: 1px solid var(--g-line); border-radius: var(--g-r-lg);
}
.skeleton-grid .g-skeleton { min-height: 0; }
.sk-title { width: 46%; height: 18px; }
.sk-full { width: 68%; height: 12px; }
.sk-line { width: 100%; height: 12px; }
.sk-row { display: flex; gap: var(--g-sp-3); margin-top: auto; }
.sk-btn { width: 76px; height: 32px; border-radius: var(--g-r-sm); }

.state-card { grid-column: 1 / -1; padding: var(--g-sp-2) 0; text-align: center; border-radius: var(--g-r-lg); }
.state-card .btn { margin-top: var(--g-sp-1); }

/* ---------- 响应式（断点与 base.css 导航断点 860px 对齐） ---------- */
@media (max-width: 860px) {
  .overview { grid-template-columns: 1fr; }
  .quick-row { grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); }
  a.quick-card { padding: var(--g-sp-3); }
  .quick-icon { width: 34px; height: 34px; font-size: 1.1rem; }
  .bank-grid { grid-template-columns: 1fr; }
}
