/* ── Design Tokens (v2.0) ──────────────────────────────────── */
:root {
  --primary:      #1F4E79;
  --primary-dark: #16324F;
  --primary-soft: #E9EFF5;
  --primary-grad: linear-gradient(150deg, #2E5E8C, #1B466E);
  --accent:       #C2A24E;
  --accent-bg:    #FBF6E9;
  --gold-grad:    linear-gradient(135deg, #D9BE6A, #B8923A);
  --card-light:   #E9EFF5;
  --bg:           #FFFFFF;
  --bg-section:   #F4F6F8;
  --bg-soft:      #F7F9FB;
  --text-1:       #15212E;
  --text-2:       #5A6878;
  --text-3:       #94A2B2;
  --border:       #E7ECF1;
  --border-2:     #EEF1F5;
  --success:      #1E9E5A;  --success-bg: #ECF8F1;  --success-bd: #CDEBD8;
  --error:        #D9433C;  --error-bg:   #FDF0EF;  --error-bd:   #FBDADA;
  --warn:         #E8853B;  --warn-bg:    #FFF6EC;
  --purple:       #7A5AF0;  --purple-bg:  #F0EDFB;  --purple-text: #5B3FD0;
  --r-card:  18px;
  --r-inner: 12px;
  --r-pill:  999px;
  --sh-card:  0 2px 10px rgba(20,40,70,.04);
  --sh-float: 0 4px 16px rgba(20,40,70,.06);
  --sh-brand: 0 6px 16px rgba(31,78,121,.25);
  --gap-page: 16px;
  --gap-card: 16px;
  --gap-list: 11px;
  --fs-h1: 21px;  --fs-h2: 17px;  --fs-body: 14.5px;
  --fs-sub: 12px; --fs-note: 11px;
}

/* ── Reset & Base ──────────────────────────────────────────── */
* { box-sizing: border-box; margin: 0; padding: 0; -webkit-tap-highlight-color: transparent; }

body {
  font-family: 'Noto Sans SC', -apple-system, 'PingFang SC', sans-serif;
  color: var(--text-1);
  background: var(--bg-section);
  max-width: 480px;
  margin: 0 auto;
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}

.page { min-height: 100vh; background: var(--bg-section); padding-bottom: 72px; }
.page.hidden { display: none; }
.hidden { display: none !important; }

/* ── Buttons ────────────────────────────────────────────────── */
.btn-primary {
  display: block; width: 100%;
  height: 54px; line-height: 54px; padding: 0;
  background: var(--primary); color: #fff;
  border: none; border-radius: 13px;
  font-size: 16px; font-weight: 700;
  cursor: pointer; text-align: center;
  box-shadow: 0 12px 24px -8px rgba(31,78,121,.35);
  transition: opacity .15s;
}
.btn-primary:active { opacity: .88; }

.btn-secondary {
  display: block; width: 100%;
  height: 50px; line-height: 50px; padding: 0;
  background: #fff; color: var(--primary);
  border: 1.5px solid #D5DEE9; border-radius: 13px;
  font-size: 15px; font-weight: 500;
  cursor: pointer; text-align: center;
}

/* ── Landing Page ───────────────────────────────────────────── */
#page-home { background: var(--bg); padding-bottom: 0; }

.home-logo-row {
  display: flex; align-items: center; gap: 10px;
  padding: 18px 20px 8px;
}
.logo-block {
  width: 38px; height: 38px; border-radius: 10px;
  background: var(--primary-grad);
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 16px; font-weight: 900;
}
.logo-text { font-size: 17px; font-weight: 800; }

.home-banner {
  margin: 8px 20px 0;
  background: var(--primary);
  border-radius: 20px; padding: 22px 22px 20px;
  color: #fff; position: relative; overflow: hidden;
}
.home-banner::before {
  content: ""; position: absolute; border-radius: 50%;
  background: rgba(201,168,76,.18);
  width: 130px; height: 130px; right: -28px; top: -28px;
}
.home-banner::after {
  content: ""; position: absolute; border-radius: 50%;
  background: rgba(201,168,76,.10);
  width: 80px; height: 80px; right: 32px; top: 44px;
}
.banner-sub {
  font-size: 11px; letter-spacing: 1.2px;
  color: rgba(255,255,255,.6); margin-bottom: 8px;
}
.banner-title { font-size: 22px; font-weight: 900; line-height: 1.35; margin-bottom: 6px; }
.banner-desc { font-size: 13px; color: rgba(255,255,255,.72); }

.chip-group { display: flex; gap: 8px; padding: 14px 20px 6px; flex-wrap: wrap; }
.chip {
  background: var(--card-light); color: var(--primary);
  border-radius: 20px; padding: 6px 13px;
  font-size: 13px; font-weight: 500;
  display: flex; align-items: center; gap: 5px;
}
.chip-check { color: var(--accent); font-weight: 800; }

.home-stats {
  display: flex; margin: 10px 20px;
  background: #F5F7FA; border-radius: 14px; overflow: hidden;
}
.home-stat {
  flex: 1; text-align: center; padding: 14px 6px;
  border-right: 1px solid #E8EDF4;
}
.home-stat:last-child { border-right: none; }
.stat-num { display: block; font-size: 18px; font-weight: 900; color: var(--primary); }
.stat-lbl { font-size: 11px; color: var(--text-3); margin-top: 2px; }

.home-actions { padding: 14px 20px 6px; display: flex; flex-direction: column; gap: 10px; }
.home-safety { text-align: center; font-size: 11px; color: var(--text-3); padding: 6px 20px 34px; }

/* ── Login Bottom Sheet ─────────────────────────────────────── */
.modal {
  position: fixed; inset: 0;
  background: rgba(12,18,28,.5);
  display: flex; align-items: flex-end; z-index: 100;
  opacity: 0; pointer-events: none;
  transition: opacity .24s;
}
.modal.visible { opacity: 1; pointer-events: auto; }

.modal-box {
  background: #fff;
  border-radius: 24px 24px 0 0;
  padding: 0 24px calc(32px + env(safe-area-inset-bottom));
  width: 100%;
  box-shadow: 0 -12px 44px rgba(0,0,0,.22);
  transform: translateY(100%);
  transition: transform .28s ease-out;
}
.modal.visible .modal-box { transform: translateY(0); }

.modal-drag {
  width: 42px; height: 5px; background: #E0E5EC;
  border-radius: 3px; margin: 12px auto 22px;
}
.modal-box h2 { font-size: 19px; font-weight: 800; margin-bottom: 4px; }
.modal-sub { font-size: 13px; color: var(--text-2); margin-bottom: 22px; }

.phone-row {
  display: flex; align-items: center;
  border: 1.5px solid var(--border); border-radius: 13px;
  height: 52px; overflow: hidden; margin-bottom: 10px;
  transition: border-color .15s;
}
.phone-row:focus-within { border-color: var(--primary); }
.phone-prefix {
  padding: 0 12px 0 14px; font-size: 15px; font-weight: 500;
  border-right: 1.5px solid var(--border-2);
  height: 100%; display: flex; align-items: center; white-space: nowrap;
}
.phone-row input {
  flex: 1; border: none; outline: none;
  padding: 0 14px; font-size: 15px;
  background: transparent; color: var(--text-1);
}
.phone-row input::placeholder { color: #B6C0CC; }

.code-row { display: flex; gap: 10px; margin-bottom: 20px; }
.input-field {
  flex: 1; height: 52px; border: 1.5px solid var(--border);
  border-radius: 13px; padding: 0 14px; font-size: 15px;
  outline: none; color: var(--text-1); transition: border-color .15s;
}
.input-field:focus { border-color: var(--primary); }
.input-field::placeholder { color: #B6C0CC; }

.btn-get-code {
  width: 116px; height: 52px; flex-shrink: 0;
  border: 1.5px solid var(--primary); background: #fff;
  color: var(--primary); border-radius: 13px;
  font-size: 14px; font-weight: 600; cursor: pointer;
  white-space: nowrap;
}
.btn-get-code:disabled { opacity: .5; cursor: not-allowed; }

.modal-terms { text-align: center; font-size: 12px; color: var(--text-3); margin-top: 14px; }
.modal-terms a { color: var(--primary); }

/* ── Dashboard ──────────────────────────────────────────────── */
#page-dashboard { background: var(--bg-section); }

.dash-topbar {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 20px; background: var(--bg);
}
.dash-title { font-size: 17px; font-weight: 800; }
.avatar-circle {
  width: 38px; height: 38px; border-radius: 50%;
  background: var(--primary-grad);
  color: #fff; font-size: 15px; font-weight: 700;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
}

.dash-banner {
  margin: 10px 20px; background: var(--primary);
  border-radius: 18px; padding: 18px 20px 16px;
  color: #fff; position: relative; overflow: hidden;
}
.dash-banner::before {
  content: ""; position: absolute; border-radius: 50%;
  background: rgba(201,168,76,.12);
  width: 110px; height: 110px; right: -20px; top: -20px;
}
.banner-row {
  display: flex; justify-content: space-between; align-items: flex-start;
  margin-bottom: 14px;
}
.banner-left .days-lbl { font-size: 12px; color: rgba(255,255,255,.7); margin-bottom: 3px; }
.days-num  { font-size: 32px; font-weight: 900; color: var(--accent); }
.days-unit { font-size: 14px; color: rgba(255,255,255,.8); }
.banner-right { text-align: right; }
.banner-right .acc-lbl { font-size: 11px; color: rgba(255,255,255,.65); margin-bottom: 3px; }
.banner-right .acc-val { font-size: 19px; font-weight: 800; }

.prog-wrap { height: 8px; border-radius: 4px; background: rgba(255,255,255,.18); }
.prog-fill { height: 100%; border-radius: 4px; background: var(--accent); transition: width .4s; }
.prog-info { margin-top: 7px; font-size: 12px; color: rgba(255,255,255,.7); }

.carousel-dots { display: flex; justify-content: center; gap: 5px; padding: 10px 0 2px; }
.dot { height: 6px; border-radius: 3px; background: #CBD5E0; transition: all .2s; }
.dot.active { width: 16px; background: var(--primary); }
.dot:not(.active) { width: 6px; }

.section-hd {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 20px 8px; background: var(--bg);
}
.section-hd-title { font-size: 16px; font-weight: 800; }
.section-hd-link { font-size: 13px; color: var(--text-2); cursor: pointer; }

.quick-grid {
  display: grid; grid-template-columns: repeat(4,1fr);
  padding: 4px 20px 14px; background: var(--bg);
}
.quick-item {
  display: flex; flex-direction: column; align-items: center;
  gap: 8px; padding: 8px 0; cursor: pointer;
}
.quick-icon {
  width: 58px; height: 58px; border-radius: 17px;
  background: var(--card-light);
  display: flex; align-items: center; justify-content: center;
}
.quick-icon svg { width: 26px; height: 26px; }
.quick-lbl { font-size: 12px; color: var(--text-2); font-weight: 500; }

.daily-wrap { padding: 0 20px 4px; }
.daily-card {
  background: var(--card-light); border-radius: 18px;
  padding: 16px 18px; cursor: pointer;
}
.daily-card-hd {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 8px;
}
.daily-tag { font-size: 14px; font-weight: 700; color: var(--primary); }
.daily-badge {
  background: #fff; border-radius: 20px;
  padding: 3px 10px; font-size: 12px; color: var(--text-2);
}
.daily-desc { font-size: 14px; font-weight: 700; color: var(--primary); margin-bottom: 3px; }
.daily-sub { font-size: 13px; color: var(--text-2); margin-bottom: 12px; }
.daily-start {
  background: var(--primary); color: #fff;
  font-size: 14px; font-weight: 600; border-radius: 10px;
  padding: 8px 18px; border: none; cursor: pointer;
}

.theme-scroll-wrap { overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.theme-scroll-wrap::-webkit-scrollbar { display: none; }
.theme-scroll { display: flex; gap: 12px; padding: 4px 20px 14px; width: max-content; }

.theme-card {
  width: 156px; flex-shrink: 0; background: var(--bg);
  border-radius: 16px; padding: 14px; cursor: pointer;
  box-shadow: 0 3px 12px rgba(20,40,80,.04);
}
.theme-card-icon {
  width: 42px; height: 42px; border-radius: 12px;
  background: var(--card-light);
  display: flex; align-items: center; justify-content: center;
  font-size: 20px; margin-bottom: 10px;
}
.theme-card-name { font-size: 14px; font-weight: 700; margin-bottom: 5px; }
.theme-card-meta { font-size: 12px; color: var(--text-3); margin-bottom: 8px; }
.theme-card-prog { height: 4px; border-radius: 2px; background: var(--border-2); overflow: hidden; }
.theme-card-prog-fill { height: 100%; border-radius: 2px; background: var(--primary); }

/* ── Bottom Nav ─────────────────────────────────────────────── */
.bottom-nav {
  position: fixed; bottom: 0;
  left: 50%; transform: translateX(-50%);
  width: 100%; max-width: 480px;
  display: flex; background: #fff;
  border-top: 1px solid var(--border-2);
  padding-bottom: env(safe-area-inset-bottom);
  z-index: 50;
}
.bottom-nav button {
  flex: 1; background: none; border: none;
  padding: 8px 0; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  font-size: 11px; color: #98A4B2; font-weight: 500;
}
.bottom-nav button.active { color: var(--primary); font-weight: 700; }
.bottom-nav button svg { width: 22px; height: 22px; }

/* ── Practice Page ──────────────────────────────────────────── */
#page-practice { background: var(--bg); }

.practice-topbar {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 20px; background: var(--bg);
  border-bottom: 1px solid var(--border-2);
}
.back-btn {
  background: none; border: none;
  font-size: 20px; color: var(--text-1);
  cursor: pointer; padding: 0; width: 28px; flex-shrink: 0;
}
.practice-topic { flex: 1; font-size: 15px; font-weight: 700; }
.practice-count { font-size: 13px; color: var(--text-3); }

.practice-prog { height: 4px; background: var(--border-2); }
.practice-prog-fill { height: 100%; background: var(--primary); transition: width .3s; }

.question-wrap { padding: 20px 20px 110px; }
.q-tag {
  display: inline-block;
  background: var(--card-light); color: var(--primary);
  border-radius: 6px; padding: 3px 9px;
  font-size: 12px; font-weight: 600; margin-bottom: 14px;
}
.q-stem { font-size: 17px; line-height: 1.75; margin-bottom: 22px; }

.option-item {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 14px 16px; background: #fff;
  border: 1.5px solid #E6EBF1; border-radius: 14px;
  margin-bottom: 10px; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.option-item.selected { border-color: var(--primary); background: var(--card-light); }
.option-item.correct  { border-color: var(--success); background: var(--success-bg); }
.option-item.wrong-sel { border-color: var(--error); background: var(--error-bg); }

.option-letter {
  width: 26px; height: 26px; border-radius: 50%; flex-shrink: 0;
  background: #F0F3F7; color: #8A97A8;
  font-size: 13px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}
.option-item.selected  .option-letter { background: var(--primary); color: #fff; }
.option-item.correct   .option-letter { background: var(--success); color: #fff; }
.option-item.wrong-sel .option-letter { background: var(--error); color: #fff; }
.option-text { font-size: 15px; line-height: 1.6; padding-top: 2px; }

.practice-footer {
  position: fixed; bottom: 0;
  left: 50%; transform: translateX(-50%);
  width: 100%; max-width: 480px;
  background: #fff; border-top: 1px solid #F0F2F5;
  padding: 12px 20px calc(12px + env(safe-area-inset-bottom));
  display: flex; gap: 10px; z-index: 50;
}
.btn-skip {
  width: 88px; height: 52px; border-radius: 13px;
  background: #fff; border: 1.5px solid var(--border);
  color: var(--text-2); font-size: 14px; font-weight: 600; cursor: pointer;
}
.btn-submit-main {
  flex: 1; height: 52px; border-radius: 13px;
  background: var(--primary); color: #fff; border: none;
  font-size: 16px; font-weight: 700; cursor: pointer;
  box-shadow: 0 10px 20px -6px rgba(31,78,121,.4);
}
.btn-submit-main:disabled { opacity: .5; box-shadow: none; }

/* ── AI Analysis Page ───────────────────────────────────────── */
#page-analysis { background: var(--bg-soft); }

.analysis-topbar {
  display: flex; align-items: center;
  padding: 12px 20px; background: var(--bg);
  border-bottom: 1px solid var(--border-2);
}
.analysis-topbar .back-btn { margin-right: 8px; }
.analysis-topbar-title { flex: 1; font-size: 15px; font-weight: 700; }
.analysis-close { background: none; border: none; font-size: 18px; color: var(--text-2); cursor: pointer; }

.result-strip {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 14px 20px;
  border-bottom: 1px solid var(--error-bd);
  background: var(--error-bg);
}
.result-strip.correct { background: var(--success-bg); border-bottom-color: var(--success-bd); }

.result-icon {
  width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0;
  background: var(--error); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; margin-top: 1px;
}
.result-strip.correct .result-icon { background: var(--success); }

.result-main { font-size: 15px; font-weight: 700; color: var(--error); }
.result-strip.correct .result-main { color: var(--success); }
.result-sub { font-size: 13px; color: var(--text-2); margin-top: 2px; }

.answer-compare { display: flex; gap: 10px; padding: 12px 20px; background: var(--bg); }
.answer-box {
  flex: 1; padding: 12px 14px; border-radius: 12px; text-align: center;
}
.answer-box.correct-box { background: var(--success-bg); border: 1px solid var(--success-bd); }
.answer-box.wrong-box   { background: var(--error-bg);   border: 1px solid var(--error-bd); }
.answer-box-lbl { font-size: 12px; color: var(--text-2); margin-bottom: 4px; }
.answer-box-val { font-size: 22px; font-weight: 900; }
.correct-box .answer-box-val { color: var(--success); }
.wrong-box   .answer-box-val { color: var(--error); }

.analysis-cards { padding: 12px 20px 100px; display: flex; flex-direction: column; gap: 12px; }

.info-card {
  background: #fff; border-radius: 16px;
  overflow: hidden; display: flex;
  box-shadow: 0 3px 12px rgba(20,40,80,.04);
}
.card-stripe { width: 5px; flex-shrink: 0; }
.card-body { padding: 16px 16px 16px 14px; flex: 1; }
.card-title {
  font-size: 14px; font-weight: 700; margin-bottom: 10px;
  display: flex; align-items: center; gap: 6px;
}
.card-text { font-size: 14px; line-height: 1.75; color: var(--text-2); }

.law-chip {
  display: inline-block;
  background: var(--card-light); color: var(--primary);
  border-radius: 6px; padding: 3px 9px; font-size: 12px; margin-bottom: 8px;
}
.law-key { color: var(--primary); font-weight: 600; }
.warn-key { color: var(--warn); font-weight: 600; }

.compare-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.compare-table th {
  background: var(--purple-bg); color: var(--purple-text);
  padding: 7px 10px; text-align: left; font-weight: 700;
}
.compare-table td {
  padding: 8px 10px; border-bottom: 1px solid var(--border-2); color: var(--text-2);
}
.compare-table tr:last-child td { border-bottom: none; }

.mnemonic-card {
  background: var(--gold-grad); border-radius: 16px;
  padding: 20px; position: relative; overflow: hidden;
  box-shadow: 0 14px 28px -10px rgba(184,146,58,.55);
}
.mnemonic-card::before {
  content: ""; position: absolute; border-radius: 50%;
  background: rgba(255,255,255,.12);
  width: 100px; height: 100px; right: -20px; bottom: -20px;
}
.mnemonic-card::after {
  content: ""; position: absolute; border-radius: 50%;
  background: rgba(255,255,255,.08);
  width: 60px; height: 60px; right: 52px; top: -10px;
}
.mnemonic-lbl { font-size: 12px; color: rgba(255,255,255,.75); margin-bottom: 8px; }
.mnemonic-text { font-size: 19px; font-weight: 900; color: #fff; line-height: 1.5; position: relative; }
.mnemonic-note { font-size: 12px; color: rgba(255,255,255,.72); margin-top: 8px; position: relative; }

.analysis-footer {
  position: fixed; bottom: 0;
  left: 50%; transform: translateX(-50%);
  width: 100%; max-width: 480px;
  padding: 12px 20px calc(12px + env(safe-area-inset-bottom));
  background: var(--bg); border-top: 1px solid var(--border-2); z-index: 50;
  display: flex; gap: 8px; align-items: center;
}

/* ── Wrong Book ─────────────────────────────────────────────── */
#page-wrong { background: var(--bg-section); }

.page-topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 20px; background: var(--bg);
  border-bottom: 1px solid var(--border-2);
}
.page-topbar-title { font-size: 17px; font-weight: 800; }
.topbar-icon { background: none; border: none; font-size: 18px; color: var(--text-2); cursor: pointer; }

.wrong-theme-section { background: var(--bg); padding: 16px 20px; margin-bottom: 8px; }
.wrong-section-hd {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 12px;
}
.wrong-section-title { font-size: 15px; font-weight: 700; }
.wrong-total-lbl { font-size: 13px; color: var(--text-3); }

.wrong-theme-row {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 0; border-bottom: 1px solid var(--border-2);
}
.wrong-theme-row:last-child { border-bottom: none; }
.wt-num { width: 20px; font-size: 14px; font-weight: 800; color: #CBD5E0; flex-shrink: 0; }
.wt-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.wt-name { flex: 1; font-size: 14px; font-weight: 600; }
.wt-count { font-size: 13px; color: var(--text-3); width: 36px; text-align: right; }
.wt-bar { width: 80px; height: 4px; border-radius: 2px; background: var(--border-2); overflow: hidden; flex-shrink: 0; }
.wt-bar-fill { height: 100%; border-radius: 2px; }

.wrong-divider { height: 8px; background: var(--bg-section); }

.wrong-list-section { background: var(--bg); padding: 0 20px; }
.wrong-list-title { padding: 14px 0 4px; font-size: 15px; font-weight: 700; }

.wrong-item { padding: 14px 0; border-bottom: 1px solid var(--border-2); cursor: pointer; }
.wrong-item:last-child { border-bottom: none; }
.wrong-item-hd { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.wrong-type-tag {
  background: var(--card-light); color: var(--primary);
  border-radius: 5px; padding: 2px 7px; font-size: 11px; font-weight: 600;
}
.wrong-time { font-size: 12px; color: var(--text-3); margin-left: auto; }
.wrong-stem { font-size: 14px; color: var(--text-1); margin-bottom: 5px; line-height: 1.6; }
.wrong-meta-row { display: flex; justify-content: space-between; align-items: center; }
.wrong-meta-info { font-size: 12px; color: var(--text-3); }
.wrong-redo { font-size: 13px; color: var(--primary); font-weight: 600; }

.wrong-footer { padding: 16px 20px calc(16px + env(safe-area-inset-bottom)); }

/* ── Payment Page ───────────────────────────────────────────── */
#page-pay { background: var(--bg-soft); }

.pay-warn {
  display: flex; align-items: center; gap: 8px;
  padding: 12px 20px; background: #FBF3DC;
  border-bottom: 1px solid #F0E3BC;
  font-size: 13px; color: #8B6914;
}

.pay-card {
  margin: 16px 20px; background: #fff; border-radius: 20px;
  padding: 22px 20px;
  box-shadow: 0 8px 26px rgba(20,40,80,.07);
}
.pay-card-title { font-size: 18px; font-weight: 800; margin-bottom: 4px; }
.pay-card-sub { font-size: 13px; color: var(--text-2); margin-bottom: 18px; }

.pay-feature { display: flex; align-items: center; gap: 10px; padding: 8px 0; }
.pay-check {
  width: 22px; height: 22px; border-radius: 50%;
  background: var(--card-light); flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; color: var(--primary); font-weight: 700;
}
.pay-feature-text { font-size: 14px; }

.price-block {
  background: #FBF7EC; border-radius: 14px;
  padding: 16px; margin: 16px 0; text-align: center;
}
.price-old { text-decoration: line-through; color: var(--text-3); font-size: 14px; }
.price-new { display: block; font-size: 36px; font-weight: 900; color: var(--accent); margin: 4px 0; }
.price-hot {
  display: inline-flex; align-items: center; gap: 4px;
  background: #FEF3E2; color: #C47D2A;
  border-radius: 20px; padding: 4px 12px; font-size: 12px;
}

.faq-section { margin: 0 20px 16px; }
.faq-title { font-size: 14px; font-weight: 700; margin-bottom: 8px; }
.faq-item { background: #fff; border-radius: 12px; margin-bottom: 8px; overflow: hidden; }
.faq-q {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 16px; cursor: pointer;
  font-size: 14px; font-weight: 600;
}
.faq-chevron { font-size: 12px; color: var(--text-3); transition: transform .2s; }
.faq-item.open .faq-chevron { transform: rotate(90deg); }
.faq-a { padding: 0 16px 14px; font-size: 13px; color: var(--text-2); line-height: 1.7; display: none; }
.faq-item.open .faq-a { display: block; }
.pay-safety { text-align: center; font-size: 12px; color: var(--text-3); padding: 8px 20px 30px; }

/* ── Profile Page ───────────────────────────────────────────── */
#page-profile { background: var(--bg-section); }

.profile-header {
  background: var(--card-light); padding: 24px 20px 20px;
  display: flex; align-items: center; gap: 14px;
}
.profile-avatar {
  width: 60px; height: 60px; border-radius: 50%;
  background: var(--primary-grad); color: #fff;
  font-size: 22px; font-weight: 800;
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.profile-phone { font-size: 17px; font-weight: 800; margin-bottom: 6px; }
.profile-badge {
  display: inline-flex; align-items: center; gap: 5px;
  background: var(--gold-grad); color: #fff;
  border-radius: 20px; padding: 4px 12px; font-size: 12px; font-weight: 600;
}
.profile-badge-free {
  display: inline-flex; align-items: center; gap: 5px;
  background: var(--border); color: var(--text-2);
  border-radius: 20px; padding: 4px 12px; font-size: 12px; font-weight: 600;
}

.profile-stats-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 10px; margin: 12px 20px;
}
.profile-stat-card {
  background: #fff; border-radius: 16px;
  padding: 16px; text-align: center;
  box-shadow: 0 2px 8px rgba(20,40,80,.04);
}
.profile-stat-num { display: block; font-size: 26px; font-weight: 900; color: var(--primary); }
.profile-stat-lbl { font-size: 12px; color: var(--text-3); margin-top: 3px; }

.profile-theme-sec {
  background: #fff; margin: 0 20px 12px;
  border-radius: 16px; padding: 16px;
  box-shadow: 0 2px 8px rgba(20,40,80,.04);
}
.profile-theme-title { font-size: 15px; font-weight: 700; margin-bottom: 12px; }

.theme-acc-row {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 0; border-bottom: 1px solid var(--border-2);
}
.theme-acc-row:last-child { border-bottom: none; }
.theme-acc-name { width: 76px; font-size: 13px; color: var(--text-2); flex-shrink: 0; }
.theme-acc-bar-wrap { flex: 1; height: 6px; border-radius: 3px; background: var(--border-2); overflow: hidden; }
.theme-acc-bar { height: 100%; border-radius: 3px; background: var(--primary); }
.theme-acc-bar.weak { background: var(--error); }
.theme-acc-pct { font-size: 13px; font-weight: 600; width: 36px; text-align: right; }
.weak-tag {
  background: var(--error-bg); color: var(--error);
  font-size: 11px; border-radius: 4px; padding: 1px 5px; flex-shrink: 0;
}

.profile-settings {
  background: #fff; margin: 0 20px 20px;
  border-radius: 16px; overflow: hidden;
  box-shadow: 0 2px 8px rgba(20,40,80,.04);
}
.settings-item {
  display: flex; align-items: center; gap: 12px;
  padding: 15px 16px; border-bottom: 1px solid var(--border-2); cursor: pointer;
}
.settings-item:last-child { border-bottom: none; }
.settings-icon { font-size: 18px; width: 24px; text-align: center; }
.settings-label { flex: 1; font-size: 15px; }
.settings-chevron { font-size: 13px; color: var(--text-3); }
.settings-item.danger .settings-label { color: var(--error); }

/* ─── 弱点分析页 ───────────────────────────────────────────── */
.wk-banner {
  background: linear-gradient(135deg,#1F4E79,#2563A8);
  color:#fff; text-align:center; padding:28px 20px 24px;
}
.wk-banner-num { font-size:52px; font-weight:800; line-height:1; }
.wk-banner-lbl { font-size:15px; margin-top:4px; opacity:.9; }
.wk-banner-sub { font-size:12px; margin-top:4px; opacity:.6; }

.wk-section {
  background:#fff; margin:16px 16px 0;
  border-radius:16px; padding:16px;
  box-shadow:0 2px 8px rgba(20,40,80,.06);
}
.wk-section-title {
  font-size:14px; font-weight:700; color:var(--text-1);
  margin-bottom:12px;
}
.wk-theme-row {
  display:flex; align-items:center; gap:8px; margin-bottom:10px;
}
.wkt-name { font-size:13px; color:var(--text-2); width:80px; flex-shrink:0; }
.wkt-bar-wrap { flex:1; height:8px; border-radius:4px; background:var(--border-2); overflow:hidden; }
.wkt-bar-fill { height:100%; border-radius:4px; transition:width .6s ease; }
.wkt-count { font-size:12px; font-weight:600; color:var(--text-2); width:32px; text-align:right; }

.wk-advice-card {
  background:#EFF6FF; margin:16px 16px 0;
  border-radius:16px; padding:16px;
  border-left:4px solid #1F4E79;
}
.wk-advice-title { font-size:14px; font-weight:700; color:#1F4E79; margin-bottom:8px; }
.wk-advice-body p { font-size:13px; color:#333; line-height:1.6; margin-bottom:4px; }
.wk-tip { background:#fff; border-radius:8px; padding:8px 10px; color:#555; font-size:12px; }

.wk-group-hd {
  font-size:14px; font-weight:700; color:var(--primary);
  margin:16px 16px 8px; display:flex; align-items:center; gap:8px;
}
.wk-group-cnt {
  font-size:12px; font-weight:400; color:#999;
  background:var(--border-2); border-radius:10px; padding:2px 8px;
}
.wk-q-card {
  background:#fff; margin:0 16px 10px;
  border-radius:14px; padding:14px 14px 10px;
  box-shadow:0 2px 8px rgba(20,40,80,.06);
  border-left:3px solid #E8853B;
}
.wk-q-hd { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.wk-q-tag {
  font-size:11px; background:#EFF6FF; color:#1F4E79;
  border-radius:6px; padding:2px 7px; font-weight:600;
}
.wk-q-wrong-tag {
  font-size:11px; background:#FEF3C7; color:#92400E;
  border-radius:6px; padding:2px 7px;
}
.wk-q-stem { font-size:13px; color:var(--text-1); line-height:1.6; margin-bottom:8px; }
.wk-q-trap {
  font-size:12px; color:#92400E; background:#FEF3C7;
  border-radius:8px; padding:6px 10px; margin-bottom:6px; line-height:1.5;
}
.wk-q-trap-lbl { font-weight:600; }
.wk-q-mnemonic {
  font-size:12px; color:#065F46; background:#ECFDF5;
  border-radius:8px; padding:6px 10px; margin-bottom:6px; line-height:1.5;
}
.wk-q-mnemonic-lbl { font-weight:600; }
.wk-q-footer {
  display:flex; align-items:center; justify-content:space-between;
  margin-top:8px; padding-top:8px; border-top:1px solid var(--border-2);
}
.wk-q-answer { font-size:12px; color:var(--text-3); }
.wk-q-btn {
  font-size:12px; color:#1F4E79; background:#EFF6FF;
  border:none; border-radius:8px; padding:5px 12px; cursor:pointer; font-weight:600;
}

.key-num-chip {
  display:inline-block; background:#EFF6FF; color:#1F4E79;
  font-size:12px; border-radius:8px; padding:3px 10px;
  margin:4px 0 6px; font-weight:500;
}

/* ─── 解析页：原题回顾 ─────────────────────────────────────── */
.aq-wrap {
  background:#fff; margin:0; padding:16px 16px 12px;
  border-bottom:1px solid var(--border-2);
}
.aq-stem {
  font-size:14px; color:var(--text-1); line-height:1.7;
  margin-bottom:12px; font-weight:500;
}
.aq-opt {
  display:flex; align-items:flex-start; gap:10px;
  padding:9px 10px; border-radius:10px;
  margin-bottom:6px; border:1.5px solid var(--border-2);
  background:#FAFAFA; transition:background .2s;
}
.aq-opt.aq-correct { background:#ECFDF5; border-color:#22A35A; }
.aq-opt.aq-wrong   { background:#FEF2F2; border-color:#C9383B; }
.aq-key {
  font-weight:700; font-size:13px; color:var(--text-3);
  min-width:20px; padding-top:1px;
}
.aq-correct .aq-key { color:#22A35A; }
.aq-wrong   .aq-key { color:#C9383B; }
.aq-text { flex:1; font-size:13px; color:var(--text-1); line-height:1.5; }
.aq-badge {
  font-size:14px; font-weight:700; min-width:18px; text-align:center; padding-top:1px;
}
.aq-badge-ok  { color:#22A35A; }
.aq-badge-err { color:#C9383B; }

/* 本题统计条 */
.ast-wrap {
  display:flex; align-items:center; justify-content:space-around;
  background:#F8FAFC; border-top:1px solid var(--border-2);
  padding:12px 0; margin:0;
}
.ast-item { display:flex; flex-direction:column; align-items:center; gap:2px; }
.ast-num  { font-size:20px; font-weight:800; color:var(--text-1); }
.ast-lbl  { font-size:11px; color:var(--text-3); }
.ast-divider { width:1px; height:30px; background:var(--border-2); }

/* 知识要点分条 */
.know-list { margin-top:4px; }
.know-item {
  font-size:13px; color:var(--text-1); line-height:1.6;
  padding:5px 0 5px 8px; border-left:2px solid #22A35A;
  margin-bottom:6px; background:#F0FDF4; border-radius:0 6px 6px 0;
  padding-right:6px;
}
.know-item:last-child { margin-bottom:0; }
.know-plain { font-size:13px; color:var(--text-1); line-height:1.6; }

/* ─── 结果页 ───────────────────────────────────────────────── */
.res-hero {
  background:linear-gradient(135deg,#1F4E79,#2563A8);
  padding:40px 20px 32px; text-align:center;
}
.res-circle {
  width:110px; height:110px; border-radius:50%;
  background:rgba(255,255,255,.15); border:3px solid rgba(255,255,255,.4);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  margin:0 auto 16px;
}
.res-acc { font-size:30px; font-weight:800; color:#fff; }
.res-acc-lbl { font-size:12px; color:rgba(255,255,255,.7); margin-top:2px; }
.res-comment { font-size:16px; font-weight:600; color:rgba(255,255,255,.9); }

.res-stats {
  display:flex; background:#fff;
  border-bottom:1px solid var(--border-2);
}
.res-stat-item {
  flex:1; display:flex; flex-direction:column; align-items:center;
  padding:18px 0; border-right:1px solid var(--border-2);
}
.res-stat-item:last-child { border-right:none; }
.res-stat-num { font-size:28px; font-weight:800; color:var(--text-1); }
.res-stat-num.green { color:#22A35A; }
.res-stat-num.red   { color:#C9383B; }
.res-stat-lbl { font-size:12px; color:var(--text-3); margin-top:2px; }

.res-theme-section { background:#fff; margin:12px 16px 0; border-radius:14px; padding:14px; }
.res-theme-title { font-size:13px; font-weight:700; color:var(--text-2); margin-bottom:10px; }
.res-theme-row { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.res-theme-row:last-child { margin-bottom:0; }
.res-tr-name { font-size:12px; color:var(--text-2); width:72px; flex-shrink:0; }
.res-tr-bar-wrap { flex:1; height:7px; border-radius:4px; background:var(--border-2); overflow:hidden; }
.res-tr-bar { height:100%; border-radius:4px; }
.res-tr-acc { font-size:12px; font-weight:700; width:32px; text-align:right; }

.res-actions {
  display:flex; flex-direction:column; gap:10px;
  padding:20px 16px 32px;
}

/* ─── 模拟考试入口卡片 ──────────────────────────────────────── */
.exam-entry-card {
  display:flex; align-items:center; justify-content:space-between;
  background:linear-gradient(135deg,#1F4E79,#2563A8);
  margin:12px 16px; border-radius:16px; padding:16px 18px;
  cursor:pointer; box-shadow:0 4px 16px rgba(31,78,121,.25);
}
.exam-entry-title { font-size:16px; font-weight:700; color:#fff; margin-bottom:4px; }
.exam-entry-sub   { font-size:12px; color:rgba(255,255,255,.75); }
.exam-entry-arrow { font-size:14px; font-weight:700; color:rgba(255,255,255,.9); }

/* ─── 模拟考试设置页 ────────────────────────────────────────── */
.exam-config-card {
  background:#fff; margin:12px 16px 0; border-radius:16px;
  box-shadow:0 2px 8px rgba(20,40,80,.06); overflow:hidden;
}
.exam-config-hd {
  display:flex; padding:10px 14px; background:#F1F5F9;
  font-size:12px; color:var(--text-3); font-weight:600;
  border-bottom:1px solid var(--border-2);
}
.ect-type-col { flex:1; }
.ect-col { width:72px; text-align:center; }
.exam-config-row {
  display:flex; align-items:center; padding:12px 14px;
  border-bottom:1px solid var(--border-2);
}
.ect-type { flex:1; font-size:14px; color:var(--text-1); }
.ect-avail { font-size:11px; color:var(--text-3); margin-left:4px; }
.ect-input {
  width:60px; text-align:center; font-size:14px; font-weight:600;
  color:var(--primary); background:#EFF6FF;
  border:1.5px solid #BFDBFE; border-radius:8px; padding:5px 4px;
  margin:0 6px; -moz-appearance:textfield;
}
.ect-input::-webkit-outer-spin-button,
.ect-input::-webkit-inner-spin-button { -webkit-appearance:none; }
.exam-config-total {
  display:flex; justify-content:space-around; padding:12px 14px;
  font-size:14px; color:var(--text-2);
}
.total-hl { color:#1F4E79; font-size:18px; font-weight:800; }

.exam-settings-card {
  background:#fff; margin:12px 16px 0; border-radius:16px;
  box-shadow:0 2px 8px rgba(20,40,80,.06); overflow:hidden;
}
.exam-setting-row {
  display:flex; align-items:center; justify-content:space-between;
  padding:13px 16px; border-bottom:1px solid var(--border-2);
}
.exam-setting-row-last { border-bottom:none; }
.es-label  { font-size:14px; color:var(--text-1); flex:1; }
.es-sub    { font-size:11px; color:var(--text-3); display:block; margin-top:2px; }
.es-right  { display:flex; align-items:center; gap:6px; }
.es-num-input {
  width:52px; text-align:center; font-size:14px; font-weight:600;
  color:var(--primary); background:#EFF6FF;
  border:1.5px solid #BFDBFE; border-radius:8px; padding:5px 4px;
  -moz-appearance:textfield;
}
.es-num-input::-webkit-outer-spin-button,
.es-num-input::-webkit-inner-spin-button { -webkit-appearance:none; }
.es-unit   { font-size:13px; color:var(--text-2); }
.es-chevron { font-size:13px; color:var(--text-3); white-space:nowrap; }

/* Toggle switch */
.toggle-sw { position:relative; display:inline-block; width:44px; height:26px; flex-shrink:0; }
.toggle-sw input { opacity:0; width:0; height:0; }
.toggle-sl {
  position:absolute; cursor:pointer; top:0; left:0; right:0; bottom:0;
  background:#CBD5E1; border-radius:13px; transition:.3s;
}
.toggle-sl:before {
  content:""; position:absolute; width:20px; height:20px;
  left:3px; top:3px; background:#fff; border-radius:50%;
  transition:.3s; box-shadow:0 1px 3px rgba(0,0,0,.2);
}
input:checked + .toggle-sl { background:#1F4E79; }
input:checked + .toggle-sl:before { transform:translateX(18px); }

.exam-hint {
  font-size:11px; color:var(--text-3); line-height:1.6;
  margin:10px 16px 0; padding:0 4px;
}
.exam-start-wrap { padding:20px 16px 40px; }

/* ─── 考试作答页 ────────────────────────────────────────────── */
.exam-topbar {
  display:flex; align-items:center; justify-content:space-between;
  background:#1F4E79; padding:12px 16px;
  position:sticky; top:0; z-index:10;
}
.exam-topbar-title { font-size:16px; font-weight:700; color:#fff; }
.exam-timer {
  font-size:16px; font-weight:700; color:#fff;
  background:rgba(255,255,255,.2); border-radius:8px;
  padding:4px 10px; min-width:60px; text-align:center;
}
.exam-timer.urgent {
  background:#C9383B; animation:timer-pulse 1s infinite;
}
@keyframes timer-pulse { 0%,100%{opacity:1} 50%{opacity:.7} }
.exam-progress-wrap {
  display:flex; align-items:center; gap:10px;
  padding:8px 16px; background:#EFF6FF; border-bottom:1px solid var(--border-2);
}
.exam-progress-bar { flex:1; height:6px; background:#BFDBFE; border-radius:3px; overflow:hidden; }
.exam-prog-fill    { height:100%; border-radius:3px; background:#1F4E79; transition:width .3s; }
.exam-prog-text    { font-size:12px; font-weight:600; color:#1F4E79; white-space:nowrap; }
.exam-footer {
  position:sticky; bottom:0; background:#fff;
  border-top:1px solid var(--border-2);
  display:flex; align-items:center; justify-content:space-between;
  padding:10px 16px 20px; gap:8px;
}
.exam-nav-btn {
  font-size:14px; color:#1F4E79; background:#EFF6FF;
  border:none; border-radius:10px; padding:10px 16px;
  cursor:pointer; font-weight:600; flex:1; white-space:nowrap;
}
.exam-nav-btn:disabled { color:#aaa; background:#f5f5f5; }
.exam-submit-btn {
  font-size:14px; font-weight:700; color:#fff; background:#1F4E79;
  border:none; border-radius:10px; padding:10px 20px;
  cursor:pointer; flex:1;
}

/* ─── 考试结果页 ────────────────────────────────────────────── */
.er-hero {
  background:linear-gradient(135deg,#1F4E79,#2563A8);
  padding:36px 20px 28px; text-align:center;
}
.er-circle {
  width:120px; height:120px; border-radius:50%;
  background:rgba(255,255,255,.12); border:3px solid rgba(255,255,255,.35);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  margin:0 auto 14px;
}
.er-score-num  { font-size:36px; font-weight:900; color:#fff; line-height:1; }
.er-score-unit { font-size:13px; color:rgba(255,255,255,.7); margin-top:4px; }
.er-pass-badge {
  display:inline-block; border-radius:20px; padding:6px 20px;
  font-size:15px; font-weight:700;
}
.er-pass  { background:#ECFDF5; color:#065F46; }
.er-fail  { background:#FEF2F2; color:#991B1B; }
.er-stats-row {
  display:flex; background:#fff; border-bottom:1px solid var(--border-2);
}
.er-stat {
  flex:1; display:flex; flex-direction:column; align-items:center;
  padding:16px 0; border-right:1px solid var(--border-2);
}
.er-stat:last-child { border-right:none; }
.er-stat-num { font-size:18px; font-weight:800; color:var(--text-1); }
.er-stat-lbl { font-size:11px; color:var(--text-3); margin-top:3px; }

.er-breakdown {
  background:#fff; margin:12px 16px 0; border-radius:14px;
  padding:14px; box-shadow:0 2px 8px rgba(20,40,80,.06);
}
.er-type-row { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.er-type-row:last-child { margin-bottom:0; }
.er-type-name  { font-size:13px; color:var(--text-2); width:52px; flex-shrink:0; }
.er-type-stats { font-size:12px; font-weight:600; color:var(--text-1); width:30px; text-align:center; }
.er-type-bar-wrap { flex:1; height:7px; border-radius:4px; background:var(--border-2); overflow:hidden; }
.er-type-bar { height:100%; border-radius:4px; }
.er-type-acc { font-size:12px; font-weight:700; width:32px; text-align:right; }

.er-wrong-title {
  font-size:14px; font-weight:700; color:var(--text-1);
  margin:16px 16px 8px;
}
.er-wrong-item {
  background:#fff; margin:0 16px 8px; border-radius:12px;
  padding:12px 14px; box-shadow:0 2px 6px rgba(20,40,80,.06);
  border-left:3px solid #C9383B;
}
.er-wrong-tag {
  font-size:11px; background:#FEF2F2; color:#991B1B;
  border-radius:6px; padding:2px 7px; margin-right:6px; font-weight:600;
}
.er-wrong-stem { font-size:13px; color:var(--text-1); margin:6px 0; line-height:1.5; }
.er-wrong-ans  { font-size:12px; color:var(--text-3); }
.er-wrong-sel  { color:#C9383B; font-weight:700; }
.er-correct-sel { color:#22A35A; font-weight:700; }

.er-actions {
  display:flex; flex-direction:column; gap:10px;
  padding:20px 16px 40px;
}

/* ── 解析文字 & 备注 ── */
.explanation-text {
  font-size: 14px;
  line-height: 1.8;
  color: #1e293b;
  white-space: pre-wrap;
}
.notes-text {
  font-size: 13px;
  line-height: 1.7;
  color: #78350f;
  background: #fef3c7;
  padding: 8px 10px;
  border-radius: 6px;
}

/* ═══════════════════════════════════════════════
   v1.3：练题Hub / 复习Hub / 易混对照 / 解析升级
   ═══════════════════════════════════════════════ */

/* ── Hub 页通用卡片布局 ─────────────────────── */
.hub-intro {
  padding: 16px 20px 6px;
  font-size: 13px;
  color: #64748B;
}
.hub-card-list {
  padding: 8px 16px 80px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.hub-card {
  display: flex;
  align-items: center;
  gap: 14px;
  background: #fff;
  border-radius: 12px;
  padding: 14px 16px;
  box-shadow: 0 1px 4px rgba(0,0,0,.07);
  cursor: pointer;
  transition: transform .1s;
}
.hub-card:active { transform: scale(.98); }
.hub-card-icon {
  width: 48px; height: 48px;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.hub-card-body { flex: 1; min-width: 0; }
.hub-card-title { font-size: 16px; font-weight: 600; color: #1e293b; }
.hub-card-desc  { font-size: 12px; color: #64748B; margin-top: 3px; }
.hub-card-arrow { font-size: 20px; color: #94A3B8; }

/* ── 底部弹层（题型选择） ────────────────────── */
.bottom-sheet {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  background: #fff;
  border-radius: 20px 20px 0 0;
  padding: 20px 20px 36px;
  z-index: 200;
  box-shadow: 0 -4px 20px rgba(0,0,0,.15);
}
.bottom-sheet.hidden { display: none; }
.sheet-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.4);
  z-index: 199;
}
.sheet-overlay.hidden { display: none; }
.sheet-title {
  font-size: 16px;
  font-weight: 600;
  color: #1e293b;
  margin-bottom: 16px;
  text-align: center;
}
.sheet-options { display: flex; flex-direction: column; gap: 8px; }
.sheet-opt {
  background: #F8FAFC;
  border: 1px solid #E2E8F0;
  border-radius: 10px;
  padding: 13px 16px;
  font-size: 15px;
  font-weight: 500;
  color: #1e293b;
  cursor: pointer;
  text-align: left;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.sheet-opt:active { background: #EFF6FF; }
.sheet-opt-count { font-size: 12px; color: #64748B; }
.sheet-cancel {
  margin-top: 12px;
  width: 100%;
  background: none;
  border: none;
  font-size: 15px;
  color: #64748B;
  padding: 10px;
  cursor: pointer;
}

/* ── 主题列表页 ──────────────────────────────── */
.theme-list-card {
  display: flex;
  align-items: center;
  gap: 12px;
  background: #fff;
  border-radius: 10px;
  padding: 14px 14px 14px 16px;
  margin-bottom: 8px;
  box-shadow: 0 1px 3px rgba(0,0,0,.06);
  cursor: pointer;
}
.theme-list-card:active { opacity: .8; }
.tlc-icon { font-size: 22px; width: 32px; text-align: center; }
.tlc-body { flex: 1; }
.tlc-name { font-size: 15px; font-weight: 600; color: #1e293b; }
.tlc-sub  { font-size: 12px; color: #94A3B8; margin-top: 2px; }
.tlc-arrow { font-size: 18px; }

/* ── 易混组列表 ──────────────────────────────── */
.mg-cluster-hd {
  font-size: 12px;
  font-weight: 600;
  color: #64748B;
  text-transform: uppercase;
  letter-spacing: .05em;
  padding: 14px 4px 6px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.mg-cluster-cnt {
  background: #E2E8F0;
  border-radius: 10px;
  padding: 2px 7px;
  font-size: 11px;
  color: #64748B;
}
.mg-card {
  background: #fff;
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 6px;
  box-shadow: 0 1px 3px rgba(0,0,0,.06);
  cursor: pointer;
}
.mg-card:active { background: #F8FAFC; }
.mg-name { font-size: 14px; font-weight: 500; color: #1e293b; line-height: 1.5; }
.mg-meta { font-size: 12px; color: #64748B; margin-top: 4px; }
.mg-arrow { color: #2563EB; }

/* ── 易混组详情 ──────────────────────────────── */
.mg-detail-bg {
  background: #EFF6FF;
  border-left: 3px solid #2563EB;
  border-radius: 0 8px 8px 0;
  padding: 10px 14px;
  font-size: 13px;
  color: #1e40af;
  margin-bottom: 14px;
  line-height: 1.6;
}
.mg-table-wrap { overflow-x: auto; margin-bottom: 16px; }
.mg-md-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  color: #1e293b;
}
.mg-md-table th {
  background: #1F4E79;
  color: #fff;
  padding: 7px 8px;
  text-align: left;
  font-weight: 600;
}
.mg-md-table td {
  padding: 7px 8px;
  border-bottom: 1px solid #E2E8F0;
  vertical-align: top;
}
.mg-md-table tr:nth-child(even) td { background: #F8FAFC; }
.mg-related-hd {
  font-size: 13px;
  font-weight: 600;
  color: #475569;
  margin-bottom: 8px;
}
.mg-related-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 0;
  border-bottom: 1px solid #F1F5F9;
  cursor: pointer;
  font-size: 13px;
  color: #1e293b;
}
.mg-ri-tag {
  background: #E2E8F0;
  border-radius: 4px;
  padding: 2px 6px;
  font-size: 11px;
  color: #475569;
  flex-shrink: 0;
}
.mg-ri-sn { color: #94A3B8; font-size: 11px; flex-shrink: 0; }
.mg-ri-stem { flex: 1; line-height: 1.4; }
.mg-ri-arrow { color: #94A3B8; }

/* ── 解析页升级样式 ──────────────────────────── */
.timeliness-badge {
  margin: 0 16px 10px;
  padding: 8px 12px;
  border-radius: 8px;
  font-size: 13px;
  line-height: 1.5;
}
.timeliness-badge.special {
  background: #FEF2F2;
  border: 1px solid #FECACA;
  color: #991B1B;
}
.timeliness-badge.old {
  background: #F8FAFC;
  border: 1px solid #E2E8F0;
  color: #64748B;
}
.quick-select-text {
  font-size: 15px;
  font-weight: 500;
  color: #92400E;
  line-height: 1.6;
}
.ia-list { display: flex; flex-direction: column; gap: 8px; }
.ia-row {
  display: flex;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 8px;
  align-items: flex-start;
}
.ia-row.correct { background: #F0FDF4; border-left: 3px solid #16A34A; }
.ia-row.wrong   { background: #FFF7F7; border-left: 3px solid #DC2626; }
.ia-opt {
  font-weight: 700;
  font-size: 15px;
  color: #1e293b;
  flex-shrink: 0;
  width: 18px;
}
.ia-body { flex: 1; }
.ia-verdict { font-size: 12px; font-weight: 600; color: #374151; margin-bottom: 3px; }
.ia-reason  { font-size: 12px; color: #4B5563; line-height: 1.55; }

.ia-jk { display: flex; flex-direction: column; gap: 6px; font-size: 13px; line-height: 1.6; }
.ia-jk-verdict { font-weight: 700; font-size: 15px; color: #1e293b; }
.ia-jk-err { color: #DC2626; }
.ia-jk-ok  { color: #16A34A; }

.law-ref-item { margin-top: 8px; }
.law-ref-num  { font-size: 12px; font-weight: 600; color: #1F4E79; margin-bottom: 4px; }
.law-ref-text {
  font-size: 13px;
  color: #374151;
  background: #EFF6FF;
  padding: 8px 10px;
  border-radius: 6px;
  line-height: 1.65;
}

.mix-hint-bar {
  margin: 8px 16px 4px;
  background: #F0F9FF;
  border: 1px solid #BAE6FD;
  border-radius: 8px;
  padding: 10px 12px;
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: #0369A1;
}
.mix-hint-icon { font-size: 16px; flex-shrink: 0; }
.mix-hint-text { flex: 1; line-height: 1.4; }
.mix-hint-btn {
  background: #0284C7;
  color: #fff;
  border: none;
  border-radius: 6px;
  padding: 5px 10px;
  font-size: 12px;
  cursor: pointer;
  flex-shrink: 0;
}

/* ── 弱点分析页：新的徽章 ────────────────────── */
.wk-badge {
  display: inline-block;
  font-size: 11px;
  border-radius: 4px;
  padding: 2px 6px;
  margin-left: 6px;
}
.wk-badge.special { background: #FEF2F2; color: #991B1B; }
.wk-badge.old-law { background: #F1F5F9; color: #64748B; }
.wk-q-eidx { margin-left: auto; font-size: 11px; color: #CA8A04; }

/* ═══════════════════════════════════════════════
   v1.4：收藏 / 易混解析片段 / 主题进度 / 错题筛选
   ═══════════════════════════════════════════════ */

/* ── 收藏按钮 ────────────────────────────────── */
.btn-fav {
  background: none;
  border: 1px solid #CBD5E1;
  border-radius: 8px;
  padding: 4px 10px;
  font-size: 17px;
  color: #94A3B8;
  cursor: pointer;
  line-height: 1;
  transition: color .15s, border-color .15s;
}
.btn-fav.fav-active {
  color: #F59E0B;
  border-color: #F59E0B;
}

/* ── 解析页易混对照片段 ──────────────────────── */
.rmg-wrap {
  margin: 10px 16px 4px;
  border: 1.5px solid #93C5FD;
  border-radius: 10px;
  overflow: hidden;
  background: #F8FBFF;
}
.rmg-wrap.hidden { display: none; }
.rmg-hd {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  background: #EFF6FF;
  border-bottom: 1px solid #BFDBFE;
}
.rmg-icon { font-size: 16px; color: #2563EB; }
.rmg-title-wrap { flex: 1; min-width: 0; }
.rmg-label { display: block; font-size: 10px; color: #93C5FD; text-transform: uppercase; letter-spacing: .05em; }
.rmg-name  { display: block; font-size: 13px; font-weight: 600; color: #1e40af; line-height: 1.3; }
.rmg-more  { font-size: 11px; color: #60A5FA; background: #DBEAFE; border-radius: 10px; padding: 2px 7px; flex-shrink: 0; }
.rmg-full-btn {
  background: #2563EB; color: #fff; border: none;
  border-radius: 6px; padding: 5px 9px; font-size: 12px; cursor: pointer; flex-shrink: 0;
}
.rmg-bg {
  padding: 8px 12px;
  font-size: 12px;
  color: #1e40af;
  background: #EFF6FF;
  border-bottom: 1px solid #BFDBFE;
  line-height: 1.55;
}
.rmg-table-wrap { overflow-x: auto; padding: 6px 8px; }
.rmg-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 11px;
  color: #1e293b;
}
.rmg-table th {
  background: #1F4E79; color: #fff;
  padding: 6px 7px; text-align: left; font-weight: 600; font-size: 11px;
}
.rmg-table td {
  padding: 5px 7px; border-bottom: 1px solid #E2E8F0; vertical-align: top; font-size: 12px;
}
.rmg-table tr:nth-child(even) td { background: #F1F5F9; }

/* ── 本题统计多了"错误次数" ─────────────────── */
.ast-wrap {
  display: none;
  justify-content: space-around;
  align-items: center;
  background: #F8FAFC;
  border-top: 1px solid #E2E8F0;
  padding: 10px 0;
  margin: 10px 0 0;
}
.ast-item { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.ast-num  { font-size: 18px; font-weight: 700; color: #1e293b; }
.ast-num.red   { color: #DC2626; }
.ast-num.green { color: #16A34A; }
.ast-lbl  { font-size: 11px; color: #94A3B8; }
.ast-divider { width: 1px; height: 28px; background: #E2E8F0; }

/* ── 主题进度条（theme-list-card 内） ────────── */
.tlc-progress { margin-top: 4px; }
.tlc-prog-bar-wrap {
  height: 4px; background: #E2E8F0; border-radius: 2px;
  overflow: hidden; width: 100%; margin-bottom: 3px;
}
.tlc-prog-fill { height: 4px; background: #2563EB; border-radius: 2px; transition: width .4s; }
.tlc-prog-stats { display: flex; justify-content: space-between; align-items: center; }
.tlc-stat-done { font-size: 11px; color: #64748B; }
.tlc-stat-acc  { font-size: 11px; font-weight: 600; }

/* ── 错题本：筛选栏 ──────────────────────────── */
.wrong-filter-bar {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 10px 16px 6px;
  flex-wrap: wrap;
}
.wfb-label { font-size: 12px; color: #94A3B8; flex-shrink: 0; }
.wfb-btn {
  background: #F1F5F9;
  border: 1px solid #E2E8F0;
  border-radius: 14px;
  padding: 4px 12px;
  font-size: 12px;
  color: #475569;
  cursor: pointer;
  transition: background .15s;
}
.wfb-btn.active {
  background: #1F4E79; border-color: #1F4E79; color: #fff;
}

/* ── 错题卡片：错误次数徽章 ──────────────────── */
.wrong-cnt-badge {
  display: inline-block;
  background: #FEE2E2;
  color: #DC2626;
  border-radius: 4px;
  padding: 2px 6px;
  font-size: 11px;
  font-weight: 600;
  margin-left: 6px;
}
.wi-hd  { display: flex; align-items: center; gap: 4px; margin-bottom: 5px; }
.wi-type { background: #E2E8F0; border-radius: 4px; padding: 2px 6px; font-size: 11px; color: #475569; }
.wi-stem { font-size: 13px; color: #1e293b; line-height: 1.5; margin-bottom: 4px; }
.wi-qs   { font-size: 12px; color: #92400E; background: #FFFBEB; border-radius: 5px; padding: 4px 8px; margin-bottom: 5px; }
.wi-ans  { font-size: 12px; color: #64748B; display: flex; justify-content: space-between; }
.wi-arrow { color: #2563EB; }

/* ════════════════════════════════════════════════════════════
   v1.5 — 首页重布局 / 考试设置 / 易混进度锁定
   ════════════════════════════════════════════════════════════ */

/* 倒计时 banner 内 click 区 */
#exam-countdown-block { cursor:pointer; }
.days-tip { font-size:11px; color:#93C5FD; margin-top:2px; }

/* 考试提醒条 */
.exam-alert-bar {
  display:flex; align-items:center; gap:8px;
  margin:10px 16px 0;
  padding:10px 14px; border-radius:10px;
  background:#EFF6FF; cursor:pointer;
  font-size:13px; line-height:1.4;
  box-shadow:0 1px 4px rgba(0,0,0,.08);
}
.eab-icon { font-size:16px; flex-shrink:0; }
.eab-text { flex:1; color:#1E40AF; font-weight:500; }
.eab-arrow { color:#93C5FD; font-size:16px; flex-shrink:0; }

/* 首页 summary 3格 */
.dash-summary-grid {
  display:grid; grid-template-columns:repeat(3,1fr); gap:10px;
  margin:14px 16px 0;
}
.dash-sum-card {
  background:#fff; border-radius:12px; padding:14px 10px 12px;
  text-align:center; box-shadow:0 1px 6px rgba(0,0,0,.07);
  cursor:pointer; transition:transform .1s;
}
.dash-sum-card:active { transform:scale(.97); }
.dsc-num { font-size:22px; font-weight:700; color:#1F4E79; }
.dsc-num.red { color:#DC2626; }
.dsc-lbl { font-size:11px; color:#64748B; margin-top:2px; }
.dsc-sub { font-size:11px; color:#94A3B8; margin-top:1px; }

/* ─── 我的页面：考试日期卡片 ─────────────────────────── */
.exam-date-card {
  margin:12px 16px; padding:14px 16px;
  background:#EFF6FF; border-radius:14px;
  cursor:pointer; border:1px solid #BFDBFE;
}
.edc-hd { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.edc-icon { font-size:18px; }
.edc-title { font-size:14px; font-weight:600; color:#1E40AF; flex:1; }
.edc-edit { font-size:12px; color:#3B82F6; }
.edc-body { font-size:13px; }
.edc-row { display:flex; justify-content:space-between; margin-bottom:4px; }
.edc-rk { color:#64748B; }
.edc-rv { color:#1F4E79; font-weight:600; }

/* ─── 考试设置页 ────────────────────────────────────── */
.exam-set-wrap { padding:16px; max-width:480px; margin:0 auto; }

.exam-set-info-card {
  display:flex; gap:12px; align-items:flex-start;
  padding:14px 16px; background:#FEF3C7;
  border-radius:12px; margin-bottom:16px;
  border-left:4px solid #F59E0B;
}
.esi-icon { font-size:22px; flex-shrink:0; }
.esi-title { font-size:13px; font-weight:700; color:#92400E; margin-bottom:4px; }
.esi-text { font-size:12px; color:#78350F; line-height:1.5; }

.exam-set-card {
  background:#fff; border-radius:12px; padding:16px;
  margin-bottom:12px; box-shadow:0 1px 5px rgba(0,0,0,.08);
}
.esc-label { font-size:14px; font-weight:700; color:#1F4E79; margin-bottom:4px; }
.esc-desc  { font-size:12px; color:#94A3B8; margin-bottom:10px; }
.esc-input {
  width:100%; box-sizing:border-box;
  padding:10px 14px; border:1.5px solid #E2E8F0;
  border-radius:10px; font-size:15px; color:#1E3A5F;
  outline:none;
}
.esc-input:focus { border-color:#2563EB; }

/* 有效期进度条 */
.exam-validity-bar {
  background:#fff; border-radius:12px; padding:14px 16px;
  margin-bottom:12px; box-shadow:0 1px 5px rgba(0,0,0,.08);
}
.evb-row { display:flex; justify-content:space-between; margin-bottom:8px; font-size:13px; }
.evb-label { color:#64748B; }
.evb-val { font-weight:700; }
.evb-val.red { color:#DC2626; }
.evb-prog-wrap { height:8px; background:#E2E8F0; border-radius:99px; overflow:hidden; margin-bottom:6px; }
.evb-prog-fill { height:100%; border-radius:99px; background:#2563EB; transition:width .4s; }
.evb-tip { font-size:12px; color:#64748B; }

/* 倒计时预览 */
.exam-countdown-preview {
  background:#1F4E79; color:#fff; border-radius:14px;
  padding:20px; text-align:center; margin-bottom:12px;
}
.ecp-days  { font-size:52px; font-weight:900; line-height:1; }
.ecp-label { font-size:13px; opacity:.85; margin-top:4px; }
.ecp-sub   { font-size:12px; opacity:.7; margin-top:6px; }

/* ─── 易混列表：汇总条 ───────────────────────────────── */
.mg-summary-bar {
  background:#EFF6FF; border-radius:12px; padding:12px 14px;
  margin-bottom:14px; border:1px solid #BFDBFE;
}
.mgsb-prog-wrap { height:8px; background:#DBEAFE; border-radius:99px; overflow:hidden; margin-bottom:6px; }
.mgsb-prog-fill { height:100%; background:#2563EB; border-radius:99px; transition:width .4s; }
.mgsb-label { font-size:12px; color:#1E40AF; text-align:center; }

/* 易混列表：进度 & 正确率 */
.mg-prog-wrap { height:6px; background:#E2E8F0; border-radius:99px; overflow:hidden; margin:4px 0; }
.mg-prog-fill { height:100%; border-radius:99px; transition:width .4s; }
.mg-meta-row { display:flex; align-items:center; gap:6px; font-size:11px; color:#64748B; }
.mg-prog-lbl { flex:1; }
.mg-acc-lbl  { color:#64748B; }
.mg-arrow    { color:#94A3B8; font-size:14px; }
.mg-lock-icon { margin-right:4px; font-size:12px; }
.mg-cluster-cnt { float:right; font-size:12px; color:#94A3B8; font-weight:400; }

/* ─── 易混详情：完成度进度卡片 ─────────────────────── */
.mgd-prog-card {
  background:#EFF6FF; border-radius:12px; padding:14px 16px;
  margin-bottom:14px; border:1px solid #BFDBFE;
}
.mgd-prog-row { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.mgd-prog-label { font-size:13px; color:#1E40AF; font-weight:600; }
.mgd-prog-num   { font-size:13px; color:#1E40AF; font-weight:700; }
.mgd-prog-bar   { height:8px; background:#DBEAFE; border-radius:99px; overflow:hidden; margin-bottom:6px; }
.mgd-prog-fill  { height:100%; border-radius:99px; transition:width .4s; }
.mgd-acc-row    { font-size:12px; color:#64748B; }

/* 锁定预览 & 覆盖层 */
.mg-lock-preview { position:relative; margin-bottom:16px; }
.mg-lock-overlay {
  position:absolute; inset:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  background:rgba(255,255,255,.85); border-radius:12px;
  padding:20px; text-align:center;
}
.mlo-icon  { font-size:36px; margin-bottom:8px; }
.mlo-title { font-size:16px; font-weight:700; color:#1F4E79; margin-bottom:4px; }
.mlo-sub   { font-size:13px; color:#64748B; margin-bottom:14px; }
.mlo-btn   {
  padding:10px 22px; background:#2563EB; color:#fff;
  border:none; border-radius:99px; font-size:14px;
  font-weight:600; cursor:pointer;
}
.mlo-btn:hover { background:#1D4ED8; }

/* 题目状态标记 */
.mgq-status { font-size:12px; padding:2px 6px; border-radius:4px; flex-shrink:0; }
.mgq-status.todo  { background:#F1F5F9; color:#94A3B8; }
.mgq-status.ok    { background:#DCFCE7; color:#16A34A; }
.mgq-status.wrong { background:#FEE2E2; color:#DC2626; }

/* 题目列表 */
.mg-related-hd { font-size:14px; font-weight:700; color:#1F4E79; margin:16px 0 8px; }
.mg-related-item {
  display:flex; align-items:center; gap:8px;
  padding:10px 12px; background:#F8FAFC;
  border-radius:10px; margin-bottom:8px; cursor:pointer;
}
.mg-related-item:active { background:#EFF6FF; }
.mg-ri-tag { font-size:11px; padding:2px 6px; border-radius:4px;
  background:#DBEAFE; color:#1E40AF; flex-shrink:0; }
.mg-ri-sn  { font-size:11px; color:#94A3B8; flex-shrink:0; }
.mg-ri-stem { font-size:13px; color:#374151; flex:1; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* btn-secondary */
.btn-secondary {
  padding:13px; background:#F1F5F9; color:#374151;
  border:1.5px solid #E2E8F0; border-radius:12px;
  font-size:15px; font-weight:600; cursor:pointer;
}
.btn-secondary:active { background:#E2E8F0; }

/* ════════════════════════════════════════════════════════════
   v2.0 UI 设计系统 — 全面视觉升级
   ════════════════════════════════════════════════════════════ */

/* —— 全局基础 —— */
body { background: var(--bg-section); }
.page { background: var(--bg-section); }

/* —— 按钮 v2 —— */
.btn-primary {
  height: 50px; border-radius: var(--r-inner);
  background: var(--primary); color: #fff;
  font-size: 15px; font-weight: 700;
  box-shadow: var(--sh-brand); border: none;
}
.btn-primary:active { opacity: .88; }
.btn-secondary {
  height: 50px; border-radius: var(--r-inner);
  background: var(--bg); color: var(--text-2);
  border: 1.5px solid var(--border); font-size: 15px; font-weight: 600;
}
.btn-secondary:active { background: var(--bg-soft); }

/* ── 落地页 (home) v2 ─────────────────────────────────────── */
#page-home { padding: 0; display: flex; flex-direction: column; }

.home-header {
  background: var(--primary-grad);
  padding: 0 26px 36px;
  flex-shrink: 0;
}
.home-logo-row {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 0 0; margin-bottom: 34px;
}
.logo-block {
  width: 38px; height: 38px; border-radius: 11px;
  background: var(--accent); display: flex; align-items: center;
  justify-content: center; color: var(--primary-dark);
  font-weight: 900; font-size: 18px;
}
.logo-text { font-size: 16px; font-weight: 700; color: #fff; }
.home-hero-title {
  font-size: 27px; font-weight: 900; color: #fff;
  line-height: 1.3; letter-spacing: -0.5px;
}
.home-hero-desc {
  font-size: 13.5px; color: rgba(255,255,255,.7);
  margin-top: 12px; line-height: 1.6;
}
.chip-group { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 20px; }
.chip-pill {
  font-size: 11.5px; color: #fff;
  background: rgba(255,255,255,.13);
  border: 1px solid rgba(255,255,255,.18);
  padding: 6px 12px; border-radius: var(--r-pill);
}
.chip { /* old chips now use chip-pill style */
  font-size: 11.5px; color: #fff;
  background: rgba(255,255,255,.13);
  border: 1px solid rgba(255,255,255,.18);
  padding: 6px 12px; border-radius: var(--r-pill);
}
.chip .chip-check { display: none; }

.home-card {
  background: var(--bg); border-radius: 24px 24px 0 0;
  margin-top: -20px; padding: 22px 26px 36px;
  flex: 1;
}
.home-stats {
  display: flex; justify-content: space-between; text-align: center;
  padding-bottom: 22px; border-bottom: 1px solid var(--border-2);
  margin: 0;
}
.home-stat { flex: 1; }
.stat-num { font-size: 23px; font-weight: 900; color: var(--primary); display: block; }
.stat-lbl { font-size: 11px; color: var(--text-3); margin-top: 2px; display: block; }
.home-actions { margin-top: 24px; }
.home-safety {
  text-align: center; font-size: 11px; color: var(--text-3);
  margin-top: 14px;
}
.home-banner { display: none; } /* replaced by home-header */

/* ── Dashboard 问候行 v2 ────────────────────────────────────── */
.dash-greeting {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 20px 16px;
}
.dg-time { font-size: 12px; color: var(--text-3); font-weight: 500; }
.dg-name { font-size: 21px; font-weight: 900; letter-spacing: -0.4px; margin-top: 2px; }
.dg-avatar {
  width: 42px; height: 42px; border-radius: 14px;
  background: var(--primary); color: #fff;
  font-weight: 700; font-size: 15px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
}

/* 旧 topbar 隐藏 */
.dash-topbar { display: none; }

/* ── Dashboard Banner v2 ────────────────────────────────────── */
.dash-banner {
  margin: 0 var(--gap-page) 0;
  border-radius: var(--r-card);
  background: linear-gradient(150deg,#2E5E8C,#1B466E);
  padding: 18px; color: #fff;
  box-shadow: 0 8px 22px rgba(27,70,110,.28);
}
.dash-banner-hd {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 8px;
}
.dbh-lbl { font-size: 12px; font-weight: 500; color: rgba(255,255,255,.72); }
.dbh-date { font-size: 11px; color: rgba(255,255,255,.55); }
.dash-banner-body {
  display: flex; align-items: flex-end; justify-content: space-between;
  cursor: pointer;
}
.dbb-days { display: flex; align-items: baseline; gap: 5px; }
.days-num { font-size: 54px; font-weight: 900; line-height: .85; letter-spacing: -1.5px; }
.days-unit { font-size: 16px; font-weight: 700; color: rgba(255,255,255,.8); }
.dbb-circle {
  width: 74px; height: 74px; border-radius: 50%;
  background: conic-gradient(#C2A24E 0 0%, rgba(255,255,255,.18) 0);
  display: flex; align-items: center; justify-content: center;
}
.dbc-inner {
  width: 56px; height: 56px; border-radius: 50%;
  background: #23537F;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
}
.dbc-acc { font-size: 17px; font-weight: 900; }
.dbc-lbl { font-size: 9px; color: rgba(255,255,255,.6); }
.dash-banner-divider {
  height: 1px; background: rgba(255,255,255,.14);
  margin: 15px 0 12px;
}
/* keep old prog-wrap/prog-fill but adjust colors */
.prog-wrap { height: 7px; border-radius: var(--r-pill); background: rgba(255,255,255,.16); overflow: hidden; }
.prog-fill { height: 100%; border-radius: var(--r-pill); background: linear-gradient(90deg,#D9BE6A,#C2A24E); transition: width .4s ease; }
.prog-info { display: flex; justify-content: space-between; margin-top: 9px; font-size: 11px; color: rgba(255,255,255,.7); }

/* old banner row selectors — hide them since we use new structure */
.banner-row { display: none; }
.banner-left { display: none; }
.banner-right { display: none; }
.acc-lbl { display: none; }
.acc-val  { display: none; }
.days-lbl { display: none; }
.days-tip { display: none; }

/* ── Advice bar (exam-alert-bar) v2 ────────────────────────── */
.exam-alert-bar {
  display: flex; align-items: center; gap: 10px;
  margin: 12px var(--gap-page) 0;
  padding: 11px 14px; border-radius: var(--r-inner);
  background: var(--bg-section); border: 1px solid var(--border);
  font-size: 12.5px; color: var(--text-2); font-weight: 500;
  cursor: pointer;
}
.exam-alert-bar.hidden { display: none; }
.eab-icon { font-size: 14px; }
.eab-text { flex: 1; }
.eab-arrow { font-size: 16px; color: var(--text-3); }

/* ── Quick actions v2 (2-column asymmetric) ─────────────────── */
.quick-grid { display: none; } /* replaced by dash-quick-v2 */
.section-hd { display: none; }

.dash-quick-v2 {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: var(--gap-list); margin: 12px var(--gap-page) 0;
}
.dqv-primary {
  background: var(--purple-bg);
  border-radius: var(--r-card); padding: 18px 16px;
  display: flex; flex-direction: column; gap: 8px;
  min-height: 130px; cursor: pointer;
  border: 1px solid rgba(122,90,240,.12);
  box-shadow: var(--sh-float);
}
.dqv-primary:active { opacity: .9; }
.dqv-p-icon {
  width: 46px; height: 46px; border-radius: 13px;
  background: rgba(122,90,240,.12);
  display: flex; align-items: center; justify-content: center;
}
.dqv-p-title { font-size: 15.5px; font-weight: 700; color: var(--primary-dark); margin-top: auto; }
.dqv-p-sub   { font-size: 11.5px; color: var(--purple); }

.dqv-secondary-col { display: grid; grid-template-rows: 1fr 1fr; gap: var(--gap-list); }
.dqv-small {
  background: var(--bg); border-radius: var(--r-card);
  border: 1px solid var(--border-2); box-shadow: var(--sh-card);
  padding: 14px; display: flex; flex-direction: column;
  align-items: flex-start; gap: 8px; cursor: pointer;
}
.dqv-small:active { background: var(--bg-soft); }
.dqvs-icon {
  width: 36px; height: 36px; border-radius: 10px;
  background: var(--bg-section);
  display: flex; align-items: center; justify-content: center;
}
.dqvs-lbl { font-size: 13px; font-weight: 700; color: var(--text-1); }

/* ── Exam entry card v2 ────────────────────────────────────── */
.exam-entry-card {
  margin: var(--gap-list) var(--gap-page) 0;
  border-radius: var(--r-card); border: 1px solid var(--border-2);
  background: var(--bg); box-shadow: var(--sh-card);
}
.exam-entry-title { font-size: 15px; font-weight: 700; color: var(--text-1); }
.exam-entry-sub   { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.exam-entry-arrow { color: var(--primary); font-weight: 700; font-size: 14px; white-space: nowrap; }

/* ── 底部导航 v2 ────────────────────────────────────────────── */
.bottom-nav {
  border-top: 1px solid var(--border-2);
  background: var(--bg);
}
.bottom-nav button { color: var(--text-3); }
.bottom-nav button.active { color: var(--primary); }

/* ── 页面 topbar v2 ─────────────────────────────────────────── */
.page-topbar, .practice-topbar, .analysis-topbar, .exam-topbar {
  background: var(--bg); border-bottom: 1px solid var(--border-2);
}
.back-btn { color: var(--text-1); font-size: 20px; }
.page-topbar-title, .practice-topic, .analysis-topbar-title {
  font-size: 15px; font-weight: 700; color: var(--text-1);
}

/* ── 做题页选项 v2 ──────────────────────────────────────────── */
.option-item {
  display: flex; align-items: center; gap: 13px;
  padding: 15px; border-radius: var(--r-inner);
  border: 1.5px solid var(--border-2); background: var(--bg);
  margin-bottom: 11px; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.option-item:active { background: var(--bg-soft); }
.option-letter {
  width: 30px; height: 30px; border-radius: 50%;
  border: 1.5px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 700; color: var(--text-2);
  flex-shrink: 0;
}
.option-text { font-size: 14.5px; line-height: 1.5; font-weight: 500; flex: 1; }
.option-item.selected {
  background: var(--primary-soft); border-color: var(--primary);
  box-shadow: 0 4px 14px rgba(31,78,121,.12);
}
.option-item.selected .option-letter {
  background: var(--primary); border-color: var(--primary); color: #fff;
}
.option-item.selected .option-text { color: var(--primary); font-weight: 600; }
.option-item.correct {
  background: var(--success-bg); border-color: var(--success);
  box-shadow: 0 4px 14px rgba(30,158,90,.12);
}
.option-item.correct .option-letter {
  background: var(--success); border-color: var(--success); color: #fff;
}
.option-item.correct .option-text { color: #15803D; font-weight: 700; }
.option-item.wrong {
  background: var(--error-bg); border-color: var(--error);
}
.option-item.wrong .option-letter {
  background: var(--error); border-color: var(--error); color: #fff;
}
.option-item.wrong .option-text { color: var(--error); }

/* 题干 */
.q-stem { font-size: 17px; font-weight: 700; line-height: 1.6; letter-spacing: -0.2px; color: var(--text-1); }
.q-tag {
  display: inline-block; font-size: 11.5px; font-weight: 700;
  color: var(--primary); background: var(--primary-soft);
  padding: 4px 10px; border-radius: 7px; margin-bottom: 14px;
}

/* ── 解析页结果反馈 v2 ──────────────────────────────────────── */
.result-strip {
  display: flex; align-items: center; gap: 10px;
  padding: 13px 15px; border-radius: var(--r-inner);
  margin: 16px var(--gap-page) 0;
}
.result-strip.correct-strip { background: var(--success-bg); border: 1px solid var(--success-bd); }
.result-strip.wrong-strip   { background: var(--error-bg);   border: 1px solid var(--error-bd); }
.result-icon {
  width: 30px; height: 30px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; font-weight: 700; flex-shrink: 0;
}
.correct-strip .result-icon { background: var(--success); color: #fff; }
.wrong-strip   .result-icon { background: var(--error);   color: #fff; }
.result-main { font-size: 14.5px; font-weight: 700; }
.correct-strip .result-main { color: var(--success); }
.wrong-strip   .result-main { color: var(--error); }

/* ── 错题本 v2 ──────────────────────────────────────────────── */
/* Filter chips */
.wrong-filter-bar { display: flex; gap: 8px; padding: 8px 16px 14px; background: var(--bg); border-bottom: 1px solid var(--border-2); overflow-x: auto; }
.wfb-label { display: none; }
.wfb-btn {
  font-size: 12.5px; font-weight: 500; color: var(--text-2);
  background: var(--bg-section); padding: 7px 14px;
  border-radius: var(--r-pill); border: none; cursor: pointer; white-space: nowrap;
}
.wfb-btn.active { background: var(--primary); color: #fff; font-weight: 700; }

/* ── Hub 页 v2 (练题/复习) ──────────────────────────────────── */
.hub-intro { padding: 8px 20px 16px; font-size: 12px; color: var(--text-3); }
.hub-intro + .hub-intro { display: none; }
.hub-card-list { padding: 0 var(--gap-page) 18px; display: flex; flex-direction: column; gap: var(--gap-list); }
.hub-card {
  display: flex; align-items: center; gap: 14px;
  background: var(--bg); border: 1px solid var(--border-2);
  border-radius: var(--r-card); padding: 18px;
  box-shadow: var(--sh-card); cursor: pointer;
}
.hub-card:first-child {
  background: var(--primary);
  border-color: transparent;
  box-shadow: var(--sh-brand);
}
.hub-card:first-child .hub-card-icon { background: rgba(255,255,255,.16); }
.hub-card:first-child svg { stroke: #fff !important; }
.hub-card:first-child .hub-card-title { color: #fff; }
.hub-card:first-child .hub-card-desc  { color: rgba(255,255,255,.65); }
.hub-card:first-child .hub-card-arrow { color: rgba(255,255,255,.7); }
.hub-card:active { opacity: .9; }
.hub-card-icon {
  width: 46px; height: 46px; border-radius: 13px;
  background: var(--bg-section);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.hub-card-body { flex: 1; }
.hub-card-title { font-size: 15.5px; font-weight: 700; color: var(--text-1); }
.hub-card-desc  { font-size: 11.5px; color: var(--text-3); margin-top: 2px; }
.hub-card-arrow { font-size: 18px; color: var(--border); }

/* ── 个人中心 v2 ────────────────────────────────────────────── */
.profile-header-v2 {
  background: var(--primary-grad);
  padding: 14px 22px 30px;
}
.phv-info { display: flex; align-items: center; gap: 14px; padding-top: 4px; }
.phv-avatar {
  width: 56px; height: 56px; border-radius: 18px;
  background: var(--accent);
  display: flex; align-items: center; justify-content: center;
  color: var(--primary-dark); font-weight: 900; font-size: 22px;
}
.phv-phone { font-size: 18px; font-weight: 700; color: #fff; }
.phv-sub   { font-size: 12px; color: rgba(255,255,255,.65); margin-top: 3px; }
/* old profile header hidden */
.profile-header { display: none; }

.profile-stats-v2 {
  display: grid; grid-template-columns: repeat(3, 1fr);
  background: var(--bg); border: 1px solid var(--border-2);
  border-radius: var(--r-card); padding: 16px 0;
  box-shadow: var(--sh-float); margin: -22px var(--gap-page) 0;
}
.psv-item {
  text-align: center;
  border-right: 1px solid var(--border-2);
}
.psv-item:last-child { border-right: none; }
.psv-num { font-size: 21px; font-weight: 900; display: block; }
.psv-lbl { font-size: 11px; color: var(--text-3); margin-top: 3px; display: block; }
/* hide old profile stats grid */
.profile-stats-grid { display: none; }

.profile-theme-sec {
  margin: 12px var(--gap-page) 0;
  background: var(--bg); border: 1px solid var(--border-2);
  border-radius: var(--r-card); padding: var(--gap-card);
  box-shadow: var(--sh-card);
}
.profile-theme-title { font-size: 13px; font-weight: 700; margin-bottom: 14px; }

.profile-settings {
  margin: 12px var(--gap-page) 0;
  background: var(--bg); border: 1px solid var(--border-2);
  border-radius: var(--r-card); overflow: hidden;
  box-shadow: var(--sh-card);
}
.settings-item {
  display: flex; align-items: center; gap: 12px;
  padding: 15px var(--gap-card); border-bottom: 1px solid var(--border-2);
  cursor: pointer; transition: background .1s;
}
.settings-item:last-child { border-bottom: none; }
.settings-item:active { background: var(--bg-soft); }
.settings-icon  { font-size: 18px; width: 28px; text-align: center; }
.settings-label { flex: 1; font-size: 15px; font-weight: 500; color: var(--text-1); }
.settings-chevron { font-size: 18px; color: var(--text-3); }
.settings-item.danger .settings-label { color: var(--error); }

/* ── 考试结果页 v2 (conic gradient) ──────────────────────────── */
.er-hero { display: none; } /* replaced by er-hero-v2 */
.er-hero-v2 {
  background: var(--primary-grad);
  padding: 0 0 42px; text-align: center;
}
.er-hero-v2-top {
  font-size: 13px; color: rgba(255,255,255,.7); padding-top: 14px;
}
.er-circ-ring {
  width: 158px; height: 158px; border-radius: 50%;
  background: conic-gradient(#C2A24E 0 0%, rgba(255,255,255,.15) 0);
  display: flex; align-items: center; justify-content: center;
  margin: 18px auto 0;
}
.er-circ-inner {
  width: 128px; height: 128px; border-radius: 50%;
  background: #23537F;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
}
.er-score-num  { font-size: 48px; font-weight: 900; color: #fff; line-height: 1; }
.er-score-unit { font-size: 12px; color: rgba(255,255,255,.65); margin-top: 4px; }
.er-pass-badge {
  display: inline-flex; align-items: center; gap: 7px;
  margin-top: 18px;
  background: rgba(194,162,78,.16); border: 1px solid rgba(194,162,78,.3);
  border-radius: var(--r-pill); padding: 7px 16px;
  font-size: 14px; font-weight: 700; color: #E2C878;
}
.er-stats-row {
  display: grid; grid-template-columns: repeat(3,1fr);
  gap: 1px; background: var(--border-2);
  border: 1px solid var(--border-2); border-radius: var(--r-card);
  overflow: hidden; box-shadow: var(--sh-float);
  margin: -20px var(--gap-page) 0;
}
.er-stat {
  background: var(--bg); padding: 16px 4px; text-align: center;
}
.er-stat-num { font-size: 20px; font-weight: 900; display: block; color: var(--text-1); }
.er-stat-lbl { font-size: 10px; color: var(--text-3); margin-top: 3px; display: block; }
.er-actions {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 11px; margin: var(--gap-page) var(--gap-page) 0;
}
/* 答题卡复习按钮独占一整行 */
.er-btn-card {
  grid-column: 1 / -1;
  background: #fff !important; color: #1F4E79 !important;
  border: 1.5px solid #1F4E79 !important; font-weight: 700;
}

/* ── 易混对照列表 v2 ────────────────────────────────────────── */
.mg-summary-bar {
  margin: 0 var(--gap-page) var(--gap-page);
  border-radius: var(--r-card);
  background: var(--primary-grad); padding: 16px 18px; color: #fff;
}
.mg-summary-bar .mgsb-prog-wrap { background: rgba(255,255,255,.22); }
.mg-summary-bar .mgsb-prog-fill { background: rgba(255,255,255,.9); }
.mg-summary-bar .mgsb-label { color: rgba(255,255,255,.88); }

/* ── 易混详情锁定遮罩 v2 ────────────────────────────────────── */
.mg-lock-overlay {
  background: linear-gradient(180deg, rgba(244,246,248,0), #F4F6F8 55%);
}
.mlo-icon {
  width: 42px; height: 42px; border-radius: 50%;
  background: var(--bg); border: 1px solid var(--border);
  box-shadow: 0 4px 12px rgba(20,40,70,.08);
}
.mlo-text { font-size: 12.5px; font-weight: 700; color: #9A6420; margin-top: 9px; }

/* ── 弱点分析 Banner v2 ─────────────────────────────────────── */
.wk-banner {
  margin: var(--gap-page);
  border-radius: var(--r-card);
  background: var(--primary-grad); padding: 20px;
}
.wk-banner-num { font-size: 36px; font-weight: 900; color: #fff; }
.wk-banner-lbl { font-size: 14px; color: rgba(255,255,255,.85); margin-top: 2px; }
.wk-banner-sub { font-size: 12px; color: rgba(255,255,255,.65); margin-top: 4px; }

/* ── 模拟考试结果页进度条 ──────────────────────────────────── */
.er-breakdown, #er-wrong-list {
  margin: 12px var(--gap-page) 0;
}

/* 表格包裹 */
.mg-table-wrap { overflow-x:auto; margin-bottom:14px; }

/* ── 解析页选项 v2 (aq-opt) ─────────────────────────────────── */
.aq-opt {
  display: flex; align-items: center; gap: 13px;
  padding: 15px; border-radius: var(--r-inner);
  border: 1.5px solid var(--border-2); background: var(--bg);
  margin-bottom: 11px; transition: background .15s, border-color .15s;
}
.aq-key {
  width: 30px; height: 30px; border-radius: 50%;
  border: 1.5px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 700; color: var(--text-2);
  flex-shrink: 0; min-width: 30px; padding-top: 0;
}
.aq-text { font-size: 14.5px; line-height: 1.5; font-weight: 500; flex: 1; color: var(--text-1); }
.aq-badge { font-size: 11px; font-weight: 700; min-width: auto; padding: 0; }

.aq-opt.aq-correct {
  background: var(--success-bg); border-color: var(--success);
  box-shadow: 0 4px 14px rgba(30,158,90,.12);
}
.aq-opt.aq-correct .aq-key {
  background: var(--success); border-color: var(--success); color: #fff;
}
.aq-opt.aq-correct .aq-text { color: #15803D; font-weight: 700; }
.aq-badge-ok { color: var(--success); font-size: 11px; }

.aq-opt.aq-wrong {
  background: var(--error-bg); border-color: var(--error);
}
.aq-opt.aq-wrong .aq-key {
  background: var(--error); border-color: var(--error); color: #fff;
}
.aq-opt.aq-wrong .aq-text { color: var(--error); }
.aq-badge-err { color: var(--error); font-size: 11px; }

/* 解析内容卡 v2 */
.analysis-card {
  margin: 12px var(--gap-page) 0;
  background: var(--bg); border: 1px solid var(--border-2);
  border-radius: var(--r-card); padding: var(--gap-card);
  box-shadow: var(--sh-card);
}
.analysis-card-title {
  font-size: 13px; font-weight: 700; color: var(--text-2);
  margin-bottom: 10px; padding-bottom: 8px;
  border-bottom: 1px solid var(--border-2);
}

/* 题干原文包裹 v2 */
.aq-wrap {
  margin: 0 var(--gap-page);
  background: var(--bg); border: 1px solid var(--border-2);
  border-radius: var(--r-card); padding: var(--gap-card) var(--gap-card) 4px;
  box-shadow: var(--sh-card); margin-top: 12px;
}
.aq-stem { font-size: 15px; font-weight: 700; line-height: 1.65; color: var(--text-1); }

/* 结果条 v2（result-strip 颜色 + 强化） */
.result-strip.correct-strip .result-icon { font-size: 0; }
.result-strip.correct-strip .result-icon::after {
  content: "✓"; font-size: 16px; font-weight: 700; color: #fff;
}
.result-strip.wrong-strip .result-icon { font-size: 0; }
.result-strip.wrong-strip .result-icon::after {
  content: "✕"; font-size: 16px; font-weight: 700; color: #fff;
}

/* 主题分组标题 v2 */
.wrong-section-hd { padding: 14px 16px 8px; display: flex; justify-content: space-between; align-items: center; }
.wrong-section-title { font-size: 13px; font-weight: 700; }

/* 错题卡 v2 */
.wrong-q-item {
  background: var(--bg); border: 1px solid var(--border-2);
  border-radius: var(--r-card); padding: 15px;
  margin-bottom: var(--gap-list); box-shadow: var(--sh-card);
}
.wrong-q-item:active { background: var(--bg-soft); }
.wqi-meta {
  display: flex; align-items: center; gap: 8px; margin-bottom: 9px;
}
.wqi-tag {
  font-size: 10.5px; font-weight: 700; padding: 3px 8px;
  border-radius: 6px;
}
.wqi-tag.single { color: var(--primary); background: var(--primary-soft); }
.wqi-tag.multi  { color: var(--purple);  background: var(--purple-bg); }
.wqi-tag.judge  { color: var(--warn);    background: var(--warn-bg); }
.wqi-topic { font-size: 11px; color: var(--text-3); }
.wqi-err-badge {
  margin-left: auto; font-size: 11px; font-weight: 700;
  color: var(--error); background: var(--error-bg);
  padding: 3px 9px; border-radius: var(--r-pill);
}
.wqi-stem { font-size: 14px; line-height: 1.6; color: var(--text-1); }

/* 本题统计 v2 */
.ast-wrap {
  border-top: 1px solid var(--border-2);
  background: var(--bg-section);
  border-radius: 0 0 var(--r-card) var(--r-card);
}
.ast-num.red   { color: var(--error); }
.ast-num.green { color: var(--success); }

/* ── 错题本 v2.1 redesign ───────────────────────────────────── */
.wbv-section {
  margin: 14px var(--gap-page) 0;
}
.wbvs-title {
  font-size: 12px; font-weight: 700; color: var(--text-3);
  text-transform: uppercase; letter-spacing: .5px;
  margin-bottom: 10px;
}
.wb-count-grid {
  display: flex; flex-direction: column; gap: var(--gap-list);
}
.wb-count-card {
  display: flex; align-items: center; gap: 12px;
  background: var(--bg); border: 1px solid var(--border-2);
  border-radius: var(--r-card); padding: 15px var(--gap-card);
  box-shadow: var(--sh-card); cursor: pointer;
}
.wb-count-card:active { background: var(--bg-soft); }
.wbcc-lbl { font-size: 14px; font-weight: 600; color: var(--text-1); flex: 1; }
.wbcc-num { font-size: 13px; font-weight: 700; color: var(--primary); }
.wbcc-arrow { font-size: 18px; color: var(--text-3); margin-left: 6px; }
/* First card (全部错题) gets navy treatment */
.wb-count-card:first-child {
  background: var(--primary); border-color: transparent;
  box-shadow: var(--sh-brand);
}
.wb-count-card:first-child .wbcc-lbl { color: #fff; }
.wb-count-card:first-child .wbcc-num { color: rgba(255,255,255,.8); }
.wb-count-card:first-child .wbcc-arrow { color: rgba(255,255,255,.6); }

/* Theme clickable rows */
.wb-theme-list { display: flex; flex-direction: column; gap: var(--gap-list); }
.wb-theme-row {
  display: flex; align-items: center; gap: 10px;
  background: var(--bg); border: 1px solid var(--border-2);
  border-radius: var(--r-inner); padding: 13px var(--gap-card);
  box-shadow: var(--sh-card); cursor: pointer;
}
.wb-theme-row:active { background: var(--bg-soft); }
.wbt-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.wbt-name { font-size: 13px; font-weight: 600; color: var(--text-1); flex: 1; }
.wbt-count { font-size: 12px; font-weight: 700; color: var(--text-2); white-space: nowrap; }
.wbt-bar { width: 50px; height: 4px; border-radius: 999px; background: var(--border-2); overflow: hidden; }
.wbt-fill { height: 100%; border-radius: 999px; }
.wbt-arrow { font-size: 16px; color: var(--text-3); }

/* ── 截止日期提示条 ─────────────────────────────────────────── */
.deadline-info-bar {
  display: flex; align-items: center; gap: 10px;
  margin: var(--gap-list) var(--gap-page) 0;
  padding: 11px 14px; border-radius: var(--r-inner);
  background: var(--warn-bg); border: 1px solid #F7E3C6;
  font-size: 12px; color: #9A6420; cursor: pointer;
}
.deadline-info-bar.hidden { display: none; }

/* ── 上一题 按钮 ──────────────────────────────────────────── */
.btn-prev-q {
  padding: 10px 14px; background: var(--bg);
  border: 1.5px solid var(--border); border-radius: var(--r-inner);
  font-size: 13px; font-weight: 600; color: var(--text-2);
  cursor: pointer; flex-shrink: 0;
}
.btn-prev-q:active { background: var(--bg-soft); }

/* ── 考试结果页顶部返回按钮定位 ─────────────────────────────── */
.er-topbar-overlay {
  position: absolute; top: 14px; left: 16px;
}
.er-hero-v2 { position: relative; }

/* ═══════════════════════════════════════════════════════════
   答题卡 & 考试复习 (v2.1)
   ═══════════════════════════════════════════════════════════ */

/* 答题卡触发按钮（练习页顶栏） */
.btn-ac-toggle {
  font-size: 12px; padding: 3px 7px;
  border: 1px solid rgba(0,0,0,0.18); border-radius: 6px;
  background: rgba(0,0,0,0.05); color: var(--text-2);
  cursor: pointer; white-space: nowrap; line-height: 1.5;
}

/* 考试页顶栏答题卡按钮 */
.btn-exam-card {
  font-size: 12px; padding: 4px 8px;
  border: 1px solid rgba(255,255,255,0.4); border-radius: 6px;
  background: rgba(255,255,255,0.15); color: #fff;
  cursor: pointer; white-space: nowrap;
}

/* 遮罩底层 */
.ac-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.45); z-index: 300;
  display: flex; align-items: flex-end;
}
.ac-overlay.hidden { display: none !important; }

/* 底部抽屉 */
.ac-sheet {
  width: 100%; max-height: 72vh; background: #fff;
  border-radius: 16px 16px 0 0;
  display: flex; flex-direction: column;
  overflow: hidden;
}

.ac-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px 8px; flex-shrink: 0;
  border-bottom: 1px solid #f0f0f0;
}
.ac-title { font-size: 16px; font-weight: 700; color: var(--text-1); }
.ac-close-btn {
  background: none; border: none; font-size: 24px;
  color: #aaa; padding: 0 4px; cursor: pointer; line-height: 1;
}

.ac-legend {
  display: flex; gap: 14px; padding: 8px 16px;
  font-size: 12px; color: var(--text-2); flex-shrink: 0;
}
.ac-leg { display: flex; align-items: center; gap: 4px; }
.ac-dot {
  width: 10px; height: 10px; border-radius: 50%; display: inline-block;
}
.ac-dot.correct  { background: #22A35A; }
.ac-dot.wrong    { background: #C9383B; }
.ac-dot.selected { background: #4A6FA5; }
.ac-dot.unans    { background: #d0d0d0; }

/* 题号网格 */
.ac-grid {
  display: flex; flex-wrap: wrap; gap: 10px;
  padding: 10px 16px 32px; overflow-y: auto;
}
.ac-num {
  width: 42px; height: 42px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 600; cursor: pointer;
  background: #d0d0d0; color: #fff; transition: transform .1s;
  flex-shrink: 0;
}
.ac-num:active { transform: scale(.92); }
.ac-num.correct  { background: #22A35A; }
.ac-num.wrong    { background: #C9383B; }
.ac-num.selected { background: #4A6FA5; }
.ac-num.current  { box-shadow: 0 0 0 3px #2563EB; }

/* 考试复习弹层 */
.exam-rev-sheet { max-height: 90vh; }
.exam-rev-topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 14px; background: #1F4E79; color: #fff; flex-shrink: 0;
  font-size: 14px; font-weight: 600;
}
.exam-rev-topbar button {
  background: rgba(255,255,255,0.15); border: none; color: #fff;
  border-radius: 6px; padding: 5px 10px; font-size: 13px; cursor: pointer;
}
.exam-rev-body {
  flex: 1; overflow-y: auto; padding: 14px 16px;
}
.exam-rev-footer {
  display: flex; gap: 8px; padding: 10px 14px 20px;
  border-top: 1px solid #f0f0f0; flex-shrink: 0;
}
.exam-rev-footer .exam-nav-btn { flex: 1; }
