.q-picker-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin-top: 12px; }
.q-picker-btn { width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--c-border); background: var(--c-surface); color: var(--c-text); font-size: .85rem; cursor: pointer; font-weight: 600; }
.q-picker-btn.answered { background: var(--c-primary); color: white; border-color: var(--c-primary); }
.q-picker-btn.wrong { background: var(--c-danger); color: white; border-color: var(--c-danger); }
.q-picker-btn.flagged { border-color: var(--c-warning); box-shadow: 0 0 0 2px var(--c-warning); }

/* ══════════════════════════════════════════════════════════
   LANDING PAGE  v4 — minimal, focused, one aurora
══════════════════════════════════════════════════════════ */

/* ─ Keyframes ─ */
@keyframes lp-aurora-a { 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(20px,-14px) scale(1.05)} }
@keyframes lp-fadein-up { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:translateY(0)} }
@keyframes lp-pulse-dot { 0%,100%{box-shadow:0 0 0 0 rgba(74,222,128,.6)} 70%{box-shadow:0 0 0 6px rgba(74,222,128,0)} }
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* ─ Hero ──────────────────────────────────────────────── */
.lp-hero {
  position:relative; overflow:hidden; text-align:center; isolation:isolate;
  padding:64px 20px 56px;
  background:#0b1020;
}
/* Single subtle aurora */
.lp-aurora {
  position:absolute; border-radius:50%; pointer-events:none; will-change:transform;
  width:min(640px,90vw); height:min(640px,90vw);
  background:radial-gradient(ellipse at center,rgba(178,58,43,.55) 0%,transparent 65%);
  filter:blur(70px); top:-24%; left:50%; transform:translateX(-50%);
  animation:lp-aurora-a 16s ease-in-out infinite;
}
/* Aurora 2-4 deprecated — hidden to match v4 simplified design */
.lp-aurora-2, .lp-aurora-3, .lp-aurora-4, .lp-chip { display:none !important; }
/* Grain noise removed (no ::after) */
.lp-hero-inner { position:relative; z-index:3; max-width:560px; margin:0 auto; }

.lp-badge {
  display:inline-flex; align-items:center; gap:6px;
  padding:5px 14px; border-radius:999px;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.15);
  font-size:var(--fs-12); font-weight:700; color:rgba(255,255,255,.88);
  letter-spacing:.08em; text-transform:uppercase; margin-bottom:24px;
  animation:lp-fadein-up .5s ease both;
}
.lp-badge-dot{width:6px;height:6px;border-radius:50%;background:#4ade80;flex-shrink:0;animation:lp-pulse-dot 2s ease-out infinite;}
.lp-hero-title {
  font-size:clamp(var(--fs-32),8vw,var(--fs-44));
  font-weight:800; line-height:1.1; letter-spacing:-.02em;
  color:#fff; margin-bottom:16px;
  animation:lp-fadein-up .5s .1s ease both;
}
.lp-grad-text{color:#D85A48;background:none;-webkit-text-fill-color:currentColor;}
.lp-hero-sub {
  font-size:var(--fs-17); color:rgba(255,255,255,.7);
  line-height:1.6; margin-bottom:32px;
  animation:lp-fadein-up .5s .2s ease both;
}
.lp-hero-ctas {
  display:flex; gap:12px; justify-content:center; flex-wrap:wrap;
  animation:lp-fadein-up .5s .3s ease both;
}
.lp-btn-main {
  display:inline-flex; align-items:center; gap:6px;
  padding:14px 24px; border-radius:var(--r-md); background:#fff; color:#0b1020;
  font-size:var(--fs-15); font-weight:700; border:none; cursor:pointer; letter-spacing:0;
  box-shadow:0 4px 20px rgba(0,0,0,.2);
  transition:transform .15s ease, box-shadow .15s ease;
}
.lp-btn-main:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(0,0,0,.28);}
.lp-btn-outline {
  display:inline-flex; align-items:center; gap:6px;
  padding:14px 22px; border-radius:var(--r-md);
  background:transparent; border:1.5px solid rgba(255,255,255,.25); color:rgba(255,255,255,.9);
  font-size:var(--fs-15); font-weight:600; cursor:pointer;
  transition:background .15s, border-color .15s;
}
.lp-btn-outline:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.45);transform:none;}
.lp-countdown-chip {
  display:inline-flex; align-items:center; gap:6px;
  margin-top:24px; padding:8px 16px; border-radius:999px;
  background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12);
  font-size:var(--fs-13); color:rgba(255,255,255,.7);
  animation:lp-fadein-up .5s .4s ease both;
}
.lp-countdown-chip strong{color:#fde68a;font-weight:700;margin:0 2px;}

/* ─ Stats bar / Bento — removed (kept stubs for backward compat, hidden) */
.lp-stats-bar, .lp-bento, .lp-section-label { display:none !important; }

/* ─ Scroll reveal ──────────────────────────────────────── */
.lp-reveal{opacity:0;transform:translateY(12px);transition:opacity .4s ease,transform .4s ease;}
.lp-reveal.lp-in{opacity:1;transform:none;}
.lp-reveal[data-d="1"]{transition-delay:.06s;}
.lp-reveal[data-d="2"]{transition-delay:.12s;}
.lp-reveal[data-d="3"]{transition-delay:.18s;}
.lp-reveal[data-d="4"]{transition-delay:.24s;}

/* ─ Exam cards — simple, solid ─────────────────────────── */
.lp-exam-section{padding:32px var(--sp-4) 16px;max-width:var(--w-dashboard);margin:0 auto;}
.lp-exam-section-title{
  font-size:var(--fs-20);font-weight:700;letter-spacing:-.01em;color:var(--c-text);
  margin-bottom:4px;text-align:center;
}
.lp-exam-section-sub{font-size:var(--fs-14);color:var(--c-muted);margin-bottom:24px;text-align:center;}
.lp-exam-grid{display:grid;grid-template-columns:1fr;gap:12px;}
@media(min-width:640px){.lp-exam-grid{grid-template-columns:1fr 1fr;gap:16px;}}
.lp-exam-card{
  display:flex;flex-direction:column;align-items:flex-start;
  padding:24px 20px;border-radius:var(--r-lg);border:1px solid var(--c-border);
  background:var(--c-surface);cursor:pointer;
  transition:border-color .15s, box-shadow .15s, transform .15s;
  position:relative;overflow:hidden;text-align:left;box-shadow:var(--shadow-sm);
}
.lp-exam-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;}
.lp-exam-broker::before{background:var(--c-broker);}
.lp-exam-agent::before{background:var(--c-agent);}
.lp-exam-card::after{display:none;}
.lp-exam-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.lp-exam-broker:hover{border-color:var(--c-broker);}
.lp-exam-agent:hover{border-color:var(--c-agent);}
.lp-exam-ico{font-size:24px;margin-bottom:12px;}
.lp-exam-nm{font-size:var(--fs-17);font-weight:700;color:var(--c-text);margin-bottom:4px;letter-spacing:-.01em;}
.lp-exam-sb{font-size:var(--fs-13);color:var(--c-muted);}
.lp-exam-arr{
  position:absolute;right:16px;bottom:16px;width:28px;height:28px;border-radius:50%;
  border:1px solid var(--c-border);display:flex;align-items:center;justify-content:center;
  color:var(--c-muted);font-size:var(--fs-13);transition:all .15s;
}
.lp-exam-card:hover .lp-exam-arr{border-color:var(--c-primary);color:var(--c-primary);}

/* ─ Social proof — simple, data-driven ─────────────────── */
.lp-proof{max-width:var(--w-dashboard);margin:0 auto;padding:16px var(--sp-4);}
.lp-proof-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:8px;
  background:var(--c-surface);border:1px solid var(--c-border);
  border-radius:var(--r-lg);padding:20px 16px;
}
@media(min-width:640px){.lp-proof-grid{padding:28px 32px;gap:16px;}}
.lp-proof-item{text-align:center;}
.lp-proof-n{font-size:var(--fs-24);font-weight:700;color:var(--c-primary);letter-spacing:-.02em;line-height:1.1;}
@media(min-width:640px){.lp-proof-n{font-size:var(--fs-32);}}
.lp-proof-l{font-size:var(--fs-12);color:var(--c-muted);margin-top:4px;}

/* ─ Bottom CTA — calm ──────────────────────────────────── */
.lp-cta-wrap{padding:16px var(--sp-4) 32px;max-width:var(--w-dashboard);margin:0 auto;}
.lp-cta{
  padding:28px 24px;border-radius:var(--r-lg);text-align:center;
  background:var(--c-surface);border:1px solid var(--c-border);
  position:relative;overflow:hidden;box-shadow:var(--shadow-sm);
}
.lp-cta::before{display:none;}
.lp-cta-title{font-size:var(--fs-20);font-weight:700;color:var(--c-text);letter-spacing:-.01em;margin-bottom:6px;}
.lp-cta-sub{font-size:var(--fs-14);color:var(--c-muted);margin-bottom:20px;}
.lp-cta-btn{
  display:inline-flex;align-items:center;gap:6px;padding:12px 24px;border-radius:var(--r-md);
  background:var(--c-primary);color:#fff;font-size:var(--fs-15);font-weight:600;border:none;cursor:pointer;
  box-shadow:none;transition:background .15s;
}
.lp-cta-btn:hover{background:var(--c-primary-h);transform:none;box-shadow:none;}
[data-theme="dark"] .lp-cta{background:var(--c-surface);border-color:var(--c-border);box-shadow:none;}

/* ─ Dashboard (logged-in) ──────────────────────────────── */
.lp-dash{max-width:var(--w-dashboard);margin:0 auto;padding:var(--sp-6) var(--sp-4) var(--sp-8);animation:lp-fadein-up .3s ease both;}
.lp-dash-greet{margin-bottom:var(--sp-6);}
.lp-dash-hi{font-size:var(--fs-13);color:var(--c-muted);margin-bottom:4px;}
.lp-dash-name{font-size:var(--fs-24);font-weight:700;letter-spacing:-.02em;color:var(--c-text);line-height:1.2;}
@media(min-width:640px){.lp-dash-name{font-size:var(--fs-32);}}

/* Today's task — the primary call to action */
.dash-today{
  display:grid;grid-template-columns:1fr;gap:12px;margin-bottom:var(--sp-6);
}
@media(min-width:768px){.dash-today{grid-template-columns:1fr 1fr;gap:16px;}}
.dash-task-card{
  background:var(--c-surface);border:1px solid var(--c-border);
  border-radius:var(--r-lg);padding:20px;box-shadow:var(--shadow-sm);
  display:flex;flex-direction:column;gap:12px;min-height:140px;position:relative;
  transition:border-color .15s, box-shadow .15s;
}
.dash-task-card.primary{border-color:var(--c-primary-20);background:linear-gradient(180deg,var(--c-primary-10),var(--c-surface) 80%);}
.dash-task-card:hover{border-color:var(--c-primary);box-shadow:var(--shadow-md);}
.dash-task-hdr{display:flex;align-items:center;gap:8px;}
.dash-task-icon{
  width:36px;height:36px;border-radius:var(--r-sm);
  background:var(--c-primary-10);color:var(--c-primary);
  display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;
}
.dash-task-label{font-size:var(--fs-12);font-weight:600;color:var(--c-muted);text-transform:uppercase;letter-spacing:.06em;}
.dash-task-title{font-size:var(--fs-17);font-weight:700;color:var(--c-text);letter-spacing:-.01em;line-height:1.3;}
.dash-task-meta{font-size:var(--fs-13);color:var(--c-muted);line-height:1.5;}
.dash-task-btn{
  margin-top:auto;display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 16px;border-radius:var(--r-md);
  background:var(--c-primary);color:#fff;font-size:var(--fs-14);font-weight:600;
  border:none;cursor:pointer;transition:background .15s;
}
.dash-task-btn:hover{background:var(--c-primary-h);}
.dash-task-btn.ghost{background:var(--c-surface2);color:var(--c-text);border:1px solid var(--c-border);}
.dash-task-btn.ghost:hover{background:var(--c-surface);border-color:var(--c-primary);color:var(--c-primary);}
.dash-task-empty{font-size:var(--fs-14);color:var(--c-muted);line-height:1.6;}

/* Weekly sparkline */
.dash-spark{
  background:var(--c-surface);border:1px solid var(--c-border);
  border-radius:var(--r-lg);padding:20px;margin-bottom:var(--sp-6);
  box-shadow:var(--shadow-sm);
}
.dash-spark-hdr{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:16px;}
.dash-spark-title{font-size:clamp(15px,1.15vw,17px);font-weight:700;color:var(--c-text);}
.dash-spark-sub{font-size:clamp(12.5px,.95vw,14.5px);color:var(--c-ink-2,var(--c-muted));font-feature-settings:'tnum' 1;}
.dash-spark-svg{width:100%;height:80px;display:block;}

/* Weak subjects top 3 */
.dash-weak{margin-bottom:var(--sp-6);}
.dash-weak-title{font-size:var(--fs-15);font-weight:700;color:var(--c-text);margin-bottom:12px;}
.dash-weak-list{display:flex;flex-direction:column;gap:8px;}
.dash-weak-row{
  display:flex;align-items:center;gap:12px;
  padding:14px 16px;background:var(--c-surface);border:1px solid var(--c-border);
  border-radius:var(--r-md);cursor:pointer;transition:border-color .15s, background .15s;
}
.dash-weak-row:hover{border-color:var(--c-primary);background:var(--c-primary-10);}
.dash-weak-rank{
  width:24px;height:24px;border-radius:50%;background:var(--c-surface2);color:var(--c-muted);
  font-size:var(--fs-12);font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.dash-weak-name{flex:1;font-size:var(--fs-14);font-weight:600;color:var(--c-text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dash-weak-pct{font-size:var(--fs-14);font-weight:700;flex-shrink:0;}

/* Footer chips row (countdown + streak) */
.dash-footer{display:flex;gap:8px;flex-wrap:wrap;}
.dash-chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 14px;border-radius:999px;
  background:var(--c-surface);border:1px solid var(--c-border);
  font-size:var(--fs-13);color:var(--c-muted);
}
.dash-chip strong{color:var(--c-text);font-weight:700;}

/* Legacy dashboard leftovers — hidden in v4 */
.lp-kpi-row,.lp-hero-right,.lp-preview-card{display:none!important;}

/* ─ Wrong Questions view ───────────────────────────────── */
.wrong-wrap{max-width:var(--w-dashboard);margin:0 auto;padding:var(--sp-6) var(--sp-4) var(--sp-8);}
.wrong-hdr{margin-bottom:var(--sp-6);}
.wrong-hdr h2{font-size:var(--fs-24);font-weight:700;letter-spacing:-.01em;color:var(--c-text);margin-bottom:4px;}
.wrong-hdr p{font-size:var(--fs-14);color:var(--c-muted);}

/* ═══════════════════════════════════════════════════════════════
   2026 cinematic 錯題複習頁：editorial hero + stat strip + toolbar
   + cinematic CTA card + premium row cards
   ═══════════════════════════════════════════════════════════════ */
.edit-wr {
  position: relative;
  container-type: inline-size;
  container-name: wrongpage;
}

/* Cinematic hero */
.edit-wr-hero {
  position: relative;
  padding: clamp(48px, 7vw, 100px) 0 clamp(28px, 4vw, 56px);
  isolation: isolate;
  margin-bottom: clamp(20px, 3vw, 32px);
}
.edit-wr-mesh {
  position: absolute; inset: -10% -8% 0 -8%;
  z-index: -1; pointer-events: none;
  filter: blur(80px) saturate(1.05);
  opacity: .38;
}
[data-theme="dark"] .edit-wr-mesh { opacity: .25; }

.edit-wr-eyebrow {
  font-family: var(--ff-mono);
  font-size: clamp(11.5px, .85vw, 13.5px);
  font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--c-vermilion); margin-bottom: 22px;
  opacity: 0;
  animation: fade-up .42s .12s cubic-bezier(.2, .8, .2, 1) forwards;
}
.edit-wr-h1 {
  font-family: var(--ff-serif-cn);
  font-weight: 800;
  font-size: clamp(26px, 5vw, 56px);
  line-height: 1.12; letter-spacing: -.02em;
  color: var(--c-ink, var(--c-text));
  margin: 0 0 16px;
  word-break: keep-all;
  overflow-wrap: break-word;
  text-wrap: pretty;
}
.edit-wr-h1 .line { display: block; overflow: hidden; }
.edit-wr-h1 .line span {
  display: inline-block;
  transform: translateY(110%); opacity: 0;
  animation: hero-mask-rise .72s cubic-bezier(.2, .8, .2, 1) forwards;
}
.edit-wr-h1 .line:nth-child(2) span { animation-delay: .14s; }
.edit-wr-h1 .vermilion { color: var(--c-vermilion); position: relative; display: inline-block; }
.edit-wr-h1 .vermilion::after {
  content: ''; position: absolute; bottom: -3px; left: 0; right: 0; height: 3px;
  background: var(--c-vermilion); opacity: .18;
  transform: scaleX(0); transform-origin: left;
  animation: underline-grow .56s 1s cubic-bezier(.2, .8, .2, 1) forwards;
}
.edit-wr-lead {
  font-family: var(--ff-serif-cn);
  font-size: clamp(15px, 1.2vw, 17.5px);
  line-height: 1.75;
  color: var(--c-ink-2, var(--c-muted));
  max-width: 60ch;
  margin: 16px 0 0;
  opacity: 0;
  animation: fade-up .56s .9s cubic-bezier(.2, .8, .2, 1) forwards;
  text-wrap: pretty;
}

/* Stat strip — 4 個朱印紅大字 + count-up（同 practice select hero meta 風） */
.edit-wr-stats {
  display: flex; align-items: stretch; flex-wrap: wrap;
  gap: 0;
  margin-top: clamp(24px, 3vw, 36px);
  padding-top: clamp(16px, 2vw, 24px);
  border-top: 1px solid var(--c-rule, rgba(0,0,0,.1));
  opacity: 0;
  animation: fade-up .56s 1.1s cubic-bezier(.2, .8, .2, 1) forwards;
}
.ewrs-cell {
  flex: 1; min-width: 110px;
  padding: 4px 14px;
  position: relative;
}
.ewrs-cell:first-child { padding-left: 0; }
.ewrs-num {
  font-family: var(--ff-serif-cn);
  font-weight: 800;
  font-size: clamp(28px, 3.8vw, 44px);
  line-height: 1;
  color: var(--c-ink, var(--c-text));
  font-feature-settings: 'tnum' 1, 'lnum' 1;
  font-variant-numeric: tabular-nums lining-nums;
  letter-spacing: -.02em;
  margin-bottom: 6px;
}
.ewrs-cell.has-due .ewrs-num {
  color: var(--c-vermilion);
}
.ewrs-label {
  font-family: var(--ff-mono);
  font-size: clamp(11.5px, .85vw, 13.5px);
  letter-spacing: .08em;
  color: var(--c-ink-2, var(--c-muted));
  text-transform: uppercase;
  font-weight: 600;
}
.ewrs-label small {
  font-size: clamp(10px, .75vw, 11.5px);
  opacity: .85; margin-left: 2px;
  font-weight: 500;
}
.ewrs-sep {
  width: 1px; align-self: stretch;
  background: var(--c-rule, rgba(0,0,0,.08));
  margin: 4px 0;
}
/* 今日到期 > 0 時的脈動指示燈 */
.ewrs-pulse {
  position: absolute; top: 4px; right: 14px;
  width: 8px; height: 8px;
  background: var(--c-vermilion);
  border-radius: 50%;
  box-shadow: 0 0 0 0 var(--c-vermilion);
  animation: ewrsPulse 2s cubic-bezier(.4, 0, .6, 1) infinite;
}
@keyframes ewrsPulse {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in oklch, var(--c-vermilion) 50%, transparent); }
  50%      { box-shadow: 0 0 0 7px color-mix(in oklch, var(--c-vermilion) 0%, transparent); }
}
@media (prefers-reduced-motion: reduce) {
  .ewrs-pulse { animation: none; }
}

@media (max-width: 540px) {
  .edit-wr-stats { flex-wrap: wrap; }
  .ewrs-cell { flex-basis: calc(50% - 1px); padding: 8px 10px; }
  .ewrs-cell:first-child { padding-left: 10px; }
  .ewrs-sep { display: none; }
  .ewrs-cell:nth-child(odd) { border-right: 1px solid var(--c-rule); }
  .ewrs-cell:nth-child(n+5) { border-top: 1px solid var(--c-rule); margin-top: 4px; padding-top: 12px; }
}

/* Toolbar — 三段式整合（範圍 / 考科 / 排序）一條 row + dividers */
.edit-wr-toolbar {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: clamp(8px, 1.2vw, 14px);
  padding: clamp(10px, 1.4vw, 14px) clamp(12px, 1.6vw, 18px);
  background: var(--c-surface);
  border: 1px solid var(--c-border);
  border-radius: 12px;
  margin-bottom: clamp(20px, 2.4vw, 28px);
  position: sticky; top: var(--hdr-h, 56px); z-index: 5;
  box-shadow: 0 1px 8px -3px rgba(0, 0, 0, .04);
}
.ewrtb-segment {
  display: inline-flex; align-items: center; gap: 4px;
  flex-wrap: wrap;
}
.ewrtb-divider {
  width: 1px; height: 18px;
  background: var(--c-rule, var(--c-border));
  margin: 0 2px;
}
.ewrtb-spacer { flex: 1; }
.ewrtb-pill {
  font-family: var(--ff-serif-cn);
  font-size: clamp(13.5px, 1vw, 15.5px);
  font-weight: 700;
  padding: 8px 16px;
  background: transparent;
  color: var(--c-ink-2, var(--c-muted));
  border: none;
  border-radius: 999px;
  cursor: pointer;
  transition: all .15s;
  letter-spacing: .01em;
}
.ewrtb-pill:hover { color: var(--c-text); background: var(--c-surface2); }
.ewrtb-pill.active {
  background: var(--c-ink, var(--c-text));
  color: var(--c-bg, white);
}
[data-theme="dark"] .ewrtb-pill.active {
  background: var(--c-vermilion);
  color: white;
}
.ewrtb-chip {
  font-family: var(--ff-mono);
  font-size: clamp(12px, .9vw, 14px);
  font-weight: 700;
  padding: 6px 13px;
  background: transparent;
  color: var(--c-ink-2, var(--c-muted));
  border: 1px solid var(--c-border);
  border-radius: 99px;
  cursor: pointer;
  transition: all .15s;
  letter-spacing: .03em;
  white-space: nowrap;
}
.ewrtb-chip:hover {
  color: var(--c-vermilion);
  border-color: var(--c-vermilion);
  background: color-mix(in oklch, var(--c-vermilion) 6%, transparent);
}
.ewrtb-chip.active {
  background: var(--c-vermilion);
  color: white;
  border-color: var(--c-vermilion);
}
[data-theme="dark"] .ewrtb-chip.active { color: var(--c-primary-fg, white); }
.ewrtb-count {
  display: inline-block;
  margin-left: 4px;
  font-family: var(--ff-mono);
  font-size: clamp(10.5px, .8vw, 12px);
  font-weight: 700;
  opacity: .75;
  font-feature-settings: 'tnum' 1;
}
.ewrtb-pill.active .ewrtb-count,
.ewrtb-chip.active .ewrtb-count { opacity: .85; }
.ewrtb-clear {
  border-style: dashed !important;
  color: var(--c-danger, #dc2626) !important;
  border-color: var(--c-danger, #dc2626) !important;
}
.ewrtb-clear:hover {
  background: var(--c-danger, #dc2626) !important;
  color: white !important;
}
.ewrtb-sort-label {
  font-family: var(--ff-mono);
  font-size: clamp(10.5px, .8vw, 12px);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--c-muted);
  margin-right: 4px;
  font-weight: 600;
}
@media (max-width: 700px) {
  .edit-wr-toolbar { position: static; padding: 12px; }
  .ewrtb-divider { display: none; }
  .ewrtb-spacer { display: none; }
  .ewrtb-segment { flex-basis: 100%; }
  .ewrtb-sort-label { display: block; flex-basis: 100%; margin: 4px 0 0; }
}

/* Cinematic CTA card */
.edit-wr-cta {
  position: relative;
  margin: clamp(24px, 3vw, 36px) 0;
  padding: clamp(28px, 4vw, 44px) clamp(24px, 3.5vw, 40px);
  background: linear-gradient(135deg, var(--c-surface) 0%, color-mix(in oklch, var(--c-vermilion) 5%, var(--c-surface)) 100%);
  border: 1px solid color-mix(in oklch, var(--c-vermilion) 25%, var(--c-border));
  border-radius: 18px;
  overflow: hidden;
  isolation: isolate;
}
.edit-wr-cta .ewrc-bg {
  position: absolute; inset: 0; z-index: -1;
  filter: blur(60px) saturate(1.05);
  opacity: .25;
  pointer-events: none;
}
.edit-wr-cta .ehm-blob-1 {
  top: -20%; right: -10%; width: 60%; height: 200%;
}
.ewrc-content {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: clamp(16px, 3vw, 32px);
  align-items: center;
}
.ewrc-num {
  font-family: var(--ff-serif-cn);
  font-size: clamp(48px, 6vw, 80px);
  font-weight: 900;
  color: var(--c-vermilion);
  line-height: 1;
  letter-spacing: -.04em;
  font-feature-settings: 'tnum' 1, 'lnum' 1;
  /* 漸層 fill */
  background: linear-gradient(180deg, var(--c-vermilion) 0%, color-mix(in oklch, var(--c-vermilion) 65%, #000) 100%);
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
}
.ewrc-eyebrow {
  font-family: var(--ff-mono);
  font-size: 10.5px; letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--c-vermilion);
  margin-bottom: 6px;
}
.ewrc-h {
  font-family: var(--ff-serif-cn);
  font-size: clamp(18px, 2vw, 24px);
  font-weight: 800;
  margin: 0 0 6px;
  letter-spacing: -.01em;
  color: var(--c-ink);
}
.ewrc-sub {
  font-family: var(--ff-serif-cn);
  font-size: clamp(13px, 1vw, 14.5px);
  line-height: 1.6;
  color: var(--c-muted);
  margin: 0;
  text-wrap: pretty;
}
.ewrc-btn {
  white-space: nowrap;
  flex-shrink: 0;
}
@media (max-width: 700px) {
  .ewrc-content {
    grid-template-columns: auto 1fr;
    gap: 14px;
  }
  .ewrc-btn { grid-column: 1 / -1; width: 100%; justify-content: center; }
}

/* Editorial wrong row cards — 取代舊的 .wrong-row 視覺（class 仍保留邏輯） */
.edit-wr .wrong-list {
  display: grid; gap: 8px;
}
.edit-wr .wrong-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: clamp(12px, 1.6vw, 18px);
  padding: clamp(12px, 1.6vw, 18px) clamp(14px, 1.8vw, 22px);
  background: var(--c-surface);
  border: 1px solid var(--c-border);
  border-radius: 12px;
  cursor: pointer;
  transition: transform .25s cubic-bezier(.2, .8, .2, 1), box-shadow .25s ease, border-color .2s;
  align-items: start;
  position: relative;
}
.edit-wr .wrong-row:hover {
  transform: translateY(-2px);
  border-color: color-mix(in oklch, var(--c-vermilion) 35%, var(--c-border));
  box-shadow: 0 12px 32px -12px color-mix(in oklch, var(--c-vermilion) 22%, transparent);
}
.edit-wr .wrong-row.due {
  border-left: 3px solid var(--c-vermilion);
}
.edit-wr .wrong-row.high {
  background: linear-gradient(90deg, color-mix(in oklch, var(--c-vermilion) 5%, var(--c-surface)) 0%, var(--c-surface) 60%);
}
.edit-wr .wrong-row-idx {
  font-family: var(--ff-serif-cn);
  font-size: clamp(18px, 1.8vw, 22px);
  font-weight: 800;
  color: var(--c-muted);
  line-height: 1;
  min-width: 48px;
  text-align: center;
  padding: 8px 6px;
  background: var(--c-surface2);
  border-radius: 8px;
  font-feature-settings: 'tnum' 1;
}
.edit-wr .wrong-row-idx.large {
  color: var(--c-vermilion);
  background: color-mix(in oklch, var(--c-vermilion) 10%, var(--c-surface2));
  font-size: clamp(20px, 2vw, 24px);
}
.edit-wr .wrong-row-text {
  font-family: var(--ff-serif-cn);
  font-size: clamp(14px, 1.1vw, 15.5px);
  line-height: 1.6;
  color: var(--c-text);
  margin-bottom: 8px;
  text-wrap: pretty;
}
.edit-wr .wrong-row-note {
  font-family: var(--ff-serif-cn);
  font-size: 12.5px;
  color: var(--c-muted);
  background: var(--c-surface2);
  padding: 6px 10px;
  border-radius: 6px;
  border-left: 2px solid var(--c-vermilion);
  margin-bottom: 8px;
  line-height: 1.5;
}
.edit-wr .wrong-row-meta {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 6px;
}
.edit-wr .wrong-row-meta .tag {
  font-family: var(--ff-mono);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .03em;
  padding: 2px 8px;
  background: var(--c-surface2);
  color: var(--c-muted);
  border-radius: 99px;
  border: 1px solid var(--c-border);
}
.edit-wr .wrong-row-meta .tag-essay {
  background: color-mix(in oklch, #6b8a73 14%, transparent);
  color: #4d6a55;
  border-color: color-mix(in oklch, #6b8a73 30%, transparent);
}
[data-theme="dark"] .edit-wr .wrong-row-meta .tag-essay { color: #92b59c; }
.edit-wr .wrong-row-meta .tag-hot {
  background: color-mix(in oklch, var(--c-vermilion) 12%, transparent);
  color: var(--c-vermilion);
  border-color: color-mix(in oklch, var(--c-vermilion) 30%, transparent);
  font-weight: 700;
}
.edit-wr .wrong-row-meta .tag-due.overdue {
  background: var(--c-vermilion);
  color: white;
  border-color: var(--c-vermilion);
  font-weight: 700;
}
[data-theme="dark"] .edit-wr .wrong-row-meta .tag-due.overdue { color: var(--c-primary-fg, white); }
.edit-wr .wrong-row-actions {
  display: flex; align-items: center; gap: 6px;
}
.edit-wr .wrong-row-act {
  width: 30px; height: 30px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent;
  border: 1px solid var(--c-border);
  border-radius: 6px;
  color: var(--c-muted);
  cursor: pointer;
  transition: all .15s;
  font-size: 13px;
  font-weight: 700;
}
.edit-wr .wrong-row-act:hover {
  background: var(--c-vermilion);
  color: white;
  border-color: var(--c-vermilion);
}
.edit-wr .wrong-row-act.has {
  color: var(--c-vermilion);
  border-color: var(--c-vermilion);
}
.edit-wr .wrong-row-chevron {
  font-family: var(--ff-serif-en);
  font-size: 18px;
  color: var(--c-muted);
  margin-left: 4px;
  transition: transform .25s ease, color .25s;
}
.edit-wr .wrong-row:hover .wrong-row-chevron {
  transform: translateX(4px);
  color: var(--c-vermilion);
}

@media (max-width: 540px) {
  .edit-wr .wrong-row { grid-template-columns: auto 1fr; padding: 12px; }
  .edit-wr .wrong-row-actions { grid-column: 1 / -1; justify-content: flex-end; padding-top: 4px; border-top: 1px dashed var(--c-rule); margin-top: 4px; }
}
.wrong-filters{
  display:flex;gap:8px;margin-bottom:var(--sp-4);overflow-x:auto;
  -webkit-overflow-scrolling:touch;padding-bottom:4px;
}
.wrong-filters::-webkit-scrollbar{display:none;}
.wrong-filter{
  padding:6px 14px;border-radius:999px;
  background:var(--c-surface);border:1px solid var(--c-border);
  font-size:var(--fs-13);font-weight:500;color:var(--c-muted);white-space:nowrap;cursor:pointer;
  transition:all .15s;flex-shrink:0;
}
.wrong-filter:hover{border-color:var(--c-primary);color:var(--c-primary);}
.wrong-filter.active{background:var(--c-primary);border-color:var(--c-primary);color:#fff;}
.wrong-cta{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:16px 20px;margin-bottom:var(--sp-6);
  background:var(--c-surface);border:1px solid var(--c-border);
  border-radius:var(--r-md);box-shadow:var(--shadow-sm);
}
.wrong-cta-info{font-size:var(--fs-14);color:var(--c-muted);}
.wrong-cta-info strong{color:var(--c-text);font-weight:700;display:block;font-size:var(--fs-17);margin-bottom:2px;}
.wrong-cta-btn{
  padding:10px 18px;border-radius:var(--r-md);
  background:var(--c-primary);color:#fff;font-size:var(--fs-14);font-weight:600;
  border:none;cursor:pointer;transition:background .15s;flex-shrink:0;
}
.wrong-cta-btn:hover{background:var(--c-primary-h);}
.wrong-cta-btn:disabled{background:var(--c-surface2);color:var(--c-muted);cursor:not-allowed;}
.wrong-list{display:flex;flex-direction:column;gap:8px;}
.wrong-stats-strip{
  margin-top:8px;display:flex;gap:8px;flex-wrap:wrap;
  font-size:var(--fs-13);color:var(--c-muted);align-items:center;
}
.wrong-stats-strip strong{color:var(--c-text);font-weight:700;}
.wrong-stats-strip .dot{opacity:.4;}
.wrong-scope-tabs{
  display:flex;gap:2px;margin-bottom:14px;padding:3px;
  background:var(--c-surface2);border-radius:var(--r-md);
  width:fit-content;
}
.wrong-scope{
  padding:8px 16px;border:none;background:transparent;
  font-size:var(--fs-13);font-weight:600;color:var(--c-muted);
  border-radius:calc(var(--r-md) - 3px);cursor:pointer;
  transition:all .15s;
}
.wrong-scope.active{background:var(--c-surface);color:var(--c-text);box-shadow:var(--shadow-sm);}
.wrong-scope:hover:not(.active){color:var(--c-text);}
.wrong-filter-sep{color:var(--c-muted);opacity:.4;padding:0 4px;align-self:center;}
.wrong-filter.ghost{background:transparent;color:var(--c-muted);border-style:dashed;}
.wrong-sort-row{
  display:flex;gap:6px;align-items:center;flex-wrap:wrap;
  margin-bottom:14px;font-size:var(--fs-12);color:var(--c-muted);
}
.wrong-sort{
  padding:5px 12px;border:1px solid var(--c-border);background:var(--c-surface);
  border-radius:999px;font-size:var(--fs-12);color:var(--c-muted);
  cursor:pointer;transition:all .15s;
}
.wrong-sort:hover{color:var(--c-text);border-color:var(--c-text);}
.wrong-sort.active{background:var(--c-text);color:var(--c-bg);border-color:var(--c-text);}
.wrong-row{
  display:flex;gap:12px;padding:16px 14px;
  background:var(--c-surface);border:1px solid var(--c-border);
  border-radius:var(--r-md);transition:all .15s;
  cursor:pointer;align-items:flex-start;
  position:relative;flex-wrap:wrap;
}
.wrong-row:hover{
  border-color:var(--c-primary);transform:translateY(-1px);
  box-shadow:var(--shadow-md);
}
.wrong-row:active{transform:translateY(0);box-shadow:var(--shadow-sm);}
.wrong-row:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px;}
.wrong-row.high{
  border-left:4px solid var(--c-danger);
  background:linear-gradient(90deg, rgba(220,38,38,.04), var(--c-surface) 30%);
}
.wrong-row.due:not(.high){
  border-left:4px solid var(--c-warning, #f59e0b);
}
.wrong-row-idx{
  width:32px;height:32px;border-radius:50%;
  background:rgba(220,38,38,.1);color:var(--c-danger);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  font-size:var(--fs-12);font-weight:700;letter-spacing:-.02em;
}
.wrong-row-idx.large{
  width:40px;height:40px;font-size:var(--fs-13);
  background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;
  box-shadow:0 2px 6px rgba(220,38,38,.25);
}
.wrong-row-body{flex:1;min-width:0;}
.wrong-row-text{font-size:var(--fs-14);line-height:1.6;color:var(--c-text);margin-bottom:6px;}
.wrong-row-meta{display:flex;gap:6px;flex-wrap:wrap;font-size:var(--fs-12);color:var(--c-muted);align-items:center;}
.wrong-row-meta .tag{padding:2px 8px;border-radius:999px;background:var(--c-surface2);}
.wrong-row-meta .tag-essay{background:rgba(178,58,43,.1);color:var(--c-primary);}
.wrong-row-meta .tag-hot{background:rgba(220,38,38,.12);color:var(--c-danger);font-weight:600;}
.wrong-row-meta .tag-due{background:transparent;color:var(--c-muted);border:1px dashed var(--c-border);}
.wrong-row-meta .tag-due.overdue{color:var(--c-warning, #f59e0b);border-color:currentColor;font-weight:600;}
.wrong-row-actions{
  display:flex;align-items:center;gap:8px;flex-shrink:0;
  align-self:center;
}
.wrong-row-act{
  width:30px;height:30px;border-radius:50%;border:1px solid var(--c-border);
  background:transparent;color:var(--c-muted);font-size:14px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .15s;opacity:0;
}
.wrong-row:hover .wrong-row-act,
.wrong-row:focus-within .wrong-row-act{opacity:1;}
.wrong-row-act:hover{
  background:rgba(34,197,94,.12);color:#16a34a;border-color:#16a34a;
  transform:scale(1.1);
}
.wrong-row-chevron{
  color:var(--c-muted);font-size:22px;line-height:1;font-weight:300;
  transition:transform .15s;
}
.wrong-row:hover .wrong-row-chevron{color:var(--c-primary);transform:translateX(3px);}
.wrong-row-act.has{opacity:1;color:var(--c-primary);border-color:var(--c-primary-20);background:var(--c-primary-10);}
.wrong-row-act.has:hover{background:var(--c-primary-10);color:var(--c-primary);transform:scale(1.1);border-color:var(--c-primary);}
.wrong-row-note{
  margin-top:6px; padding:6px 10px; font-size:var(--fs-12); line-height:1.55;
  background:var(--c-surface2); border-left:3px solid var(--c-primary);
  border-radius:0 6px 6px 0; color:var(--c-text);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.wrong-row.has-note .wrong-row-act:first-of-type{opacity:1;}
.wrong-row-note-editor{
  margin-top:10px; padding:10px; background:var(--c-surface2);
  border:1px solid var(--c-border); border-radius:8px;
  flex-basis:100%; order:99;
}
.wrong-note-ta{
  width:100%; padding:8px 10px; font-size:var(--fs-13); line-height:1.6;
  border:1px solid var(--c-border); border-radius:6px;
  background:var(--c-surface); color:var(--c-text);
  resize:vertical; min-height:64px; font-family:inherit;
}
.wrong-note-ta:focus{outline:none; border-color:var(--c-primary);}
.wrong-note-actions{display:flex; align-items:center; gap:8px; margin-top:8px;}
.wrong-note-actions .btn{padding:5px 12px; font-size:var(--fs-12);}
.wrong-note-hint{flex:1; font-size:var(--fs-12); color:var(--c-muted);}
.wrong-more{
  text-align:center;padding:14px;font-size:var(--fs-12);
  color:var(--c-muted);font-style:italic;
}
.wrong-empty{
  padding:64px 20px;text-align:center;
  font-size:var(--fs-14);color:var(--c-muted);
}
.wrong-empty-emoji{font-size:44px;margin-bottom:12px;}
.broken-card{border:2px dashed var(--c-warning, #f59e0b);}
.broken-card .q-text{color:var(--c-muted);}
[data-theme="dark"] .wrong-cta,
[data-theme="dark"] .wrong-row,
[data-theme="dark"] .wrong-filter,
[data-theme="dark"] .wrong-scope-tabs{background:var(--c-surface);border-color:var(--c-border);}
[data-theme="dark"] .wrong-row.high{
  background:linear-gradient(90deg, rgba(220,38,38,.10), var(--c-surface) 30%);
}

/* ─ Page container width tokens applied where helpful ──── */
@media(min-width:1024px){
  .container{max-width:var(--w-content);}
  /* Hero re-aligns to content width on desktop when sidebar present */
  .lp-hero{padding:80px 32px;}
  .lp-hero-inner{max-width:720px;}
}

/* ─ Practice-select intro block ─────────────────────────── */
.ps-hero{padding:var(--sp-6) 0 var(--sp-4);}
.ps-hero h2{font-size:var(--fs-24);font-weight:700;color:var(--c-text);letter-spacing:-.01em;margin-bottom:4px;}
.ps-hero p{font-size:var(--fs-14);color:var(--c-muted);line-height:1.5;}

/* ═══════════════════════════════════════════════════════════════
   2026 cinematic 練習頁升級：editorial hero / premium subject tiles
   / numbered section headers / cinematic full-exam card
   ═══════════════════════════════════════════════════════════════ */

.edit-ps { position: relative; }

/* Cinematic editorial hero（同 home 風但更個人化）*/
.edit-ps-hero {
  position: relative;
  padding: clamp(56px, 9vw, 120px) 0 clamp(32px, 5vw, 56px);
  isolation: isolate;
}
.edit-ps-mesh {
  position: absolute; inset: -10% -8% 0 -8%;
  z-index: -1; pointer-events: none;
  filter: blur(80px) saturate(1.05);
  opacity: .42;
}
[data-theme="dark"] .edit-ps-mesh { opacity: .28; }
.edit-ps-eyebrow {
  font-family: var(--ff-mono, monospace); font-size: 11px; font-weight: 500;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--c-muted); margin-bottom: 22px;
  opacity: 0;
  animation: fade-up .42s .12s cubic-bezier(.2, .8, .2, 1) forwards;
}
.edit-ps-h1 {
  font-family: var(--ff-serif-cn, 'Noto Serif TC', serif);
  font-weight: 800;
  font-size: clamp(26px, 5.4vw, 56px);
  line-height: 1.1; letter-spacing: -.02em;
  color: var(--c-ink, var(--c-text));
  margin: 0 0 16px;
  word-break: keep-all;
  overflow-wrap: break-word;
}
.edit-ps-h1 .line { display: block; overflow: hidden; }
.edit-ps-h1 .line span {
  display: inline-block;
  white-space: nowrap;
  transform: translateY(110%); opacity: 0;
  animation: hero-mask-rise .72s cubic-bezier(.2, .8, .2, 1) forwards;
}
.edit-ps-h1 .line:nth-child(2) span { animation-delay: .14s; }
.edit-ps-h1 .vermilion { color: var(--c-vermilion, var(--c-primary)); position: relative; }
.edit-ps-h1 .vermilion::after {
  content: ''; position: absolute; bottom: -4px; left: 0; right: 0; height: 2.5px;
  background: var(--c-vermilion, var(--c-primary)); opacity: .15;
  transform: scaleX(0); transform-origin: left;
  animation: underline-grow .56s .8s cubic-bezier(.2, .8, .2, 1) forwards;
}

/* 個人化統計帶（行動裝置 2x2 grid，桌面一條 4-cell）*/
.edit-ps-meta {
  display: flex; align-items: stretch; flex-wrap: wrap;
  gap: 0; margin-top: clamp(20px, 3vw, 32px);
  padding-top: clamp(16px, 2vw, 24px);
  border-top: 1px solid var(--c-rule, rgba(0, 0, 0, .1));
  opacity: 0;
  animation: fade-up .56s 1s cubic-bezier(.2, .8, .2, 1) forwards;
}
.edit-ps-meta-cell {
  flex: 1; min-width: 110px;
  padding: 4px 14px;
}
.edit-ps-meta-cell:first-child { padding-left: 0; }
.ps-meta-num {
  font-family: var(--ff-serif-cn, 'Noto Serif TC', serif);
  font-weight: 800;
  font-size: clamp(28px, 3.8vw, 44px);
  line-height: 1;
  color: var(--c-vermilion, var(--c-primary));
  font-feature-settings: 'tnum' 1, 'lnum' 1;
  font-variant-numeric: tabular-nums lining-nums;
  letter-spacing: -.02em;
  margin-bottom: 6px;
  display: flex; align-items: baseline;
}
.ps-meta-suffix {
  font-size: .55em; font-weight: 600; margin-left: 2px;
  color: var(--c-muted);
}
.ps-meta-label {
  font-family: var(--ff-mono, monospace);
  font-size: 11px; letter-spacing: .04em;
  color: var(--c-muted);
  text-transform: uppercase;
}
.ps-meta-sep {
  width: 1px; align-self: stretch;
  background: var(--c-rule, rgba(0, 0, 0, .08));
  margin: 4px 0;
}
@media (max-width: 540px) {
  .edit-ps-meta { flex-wrap: wrap; }
  .edit-ps-meta-cell { flex-basis: calc(50% - 1px); padding: 8px 10px; }
  .edit-ps-meta-cell:first-child { padding-left: 10px; }
  .ps-meta-sep { display: none; }
  .edit-ps-meta-cell:nth-child(odd) { border-right: 1px solid var(--c-rule); }
  .edit-ps-meta-cell:nth-child(n+5) { border-top: 1px solid var(--c-rule); margin-top: 4px; padding-top: 12px; }
}

/* 編輯級區塊頭：01 / 02 編號 + eyebrow + h2 */
.edit-ps-section {
  padding: clamp(32px, 4vw, 56px) 0 clamp(16px, 2vw, 24px);
  position: relative;
}
.edit-ps-section-hdr {
  display: flex; align-items: flex-start; gap: clamp(14px, 2vw, 24px);
  padding: 0 0 clamp(18px, 2vw, 28px);
  border-bottom: 1px solid var(--c-rule, rgba(0, 0, 0, .12));
  cursor: pointer; user-select: none;
}
.edit-ps-num {
  flex-shrink: 0;
  font-family: var(--ff-serif-en, 'Cormorant Garamond', serif);
  font-size: clamp(28px, 3.6vw, 44px);
  font-weight: 600;
  font-variant-numeric: lining-nums;
  color: var(--c-vermilion, var(--c-primary));
  line-height: 1;
  letter-spacing: -.02em;
  font-feature-settings: 'tnum' 1, 'lnum' 1;
}
.edit-ps-htitle { flex: 1; min-width: 0; }
.edit-ps-section-eyebrow {
  display: block;
  font-family: var(--ff-mono, monospace);
  font-size: 10.5px; font-weight: 500;
  letter-spacing: .16em; text-transform: uppercase;
  color: var(--c-muted);
  margin-bottom: 6px;
}
.edit-ps-section-hdr h2 {
  font-family: var(--ff-serif-cn, 'Noto Serif TC', serif);
  font-size: clamp(22px, 2.8vw, 32px);
  font-weight: 800;
  letter-spacing: -.02em;
  color: var(--c-ink, var(--c-text));
  line-height: 1.2;
  margin: 0;
}
.edit-ps-section-hdr .chev-toggle {
  align-self: center; flex-shrink: 0;
  width: 18px; height: 18px;
  color: var(--c-muted);
  transition: transform .25s ease, color .15s;
  margin-left: 0;
}
.edit-ps-section-hdr:hover .chev-toggle { color: var(--c-vermilion); }
.edit-ps-section-hdr.collapsed .chev-toggle { transform: rotate(-90deg); }

/* Subject grid — 2x2 desktop / 1x4 mobile */
.edit-ps .subject-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(10px, 1.4vw, 16px);
  margin: clamp(20px, 2.4vw, 28px) 0 4px;
}
@media (max-width: 540px) {
  .edit-ps .subject-grid { grid-template-columns: 1fr; gap: 10px; }
}

/* ═══ Premium Study Tile（取代 .subj-card）═══ */
.subj-tile {
  position: relative;
  background: var(--c-surface);
  border: 1px solid var(--c-border);
  border-radius: 14px;
  padding: 18px 20px 16px;
  display: grid; gap: 10px;
  cursor: pointer;
  text-align: left;
  overflow: hidden;
  transition: transform .35s cubic-bezier(.2, .8, .2, 1), box-shadow .35s ease, border-color .25s;
  opacity: 0;
  transform: translateY(16px);
  animation: tileEnter .56s cubic-bezier(.2, .8, .2, 1) var(--tile-delay, 0s) forwards;
}
@keyframes tileEnter { to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) {
  .subj-tile { animation: none; opacity: 1; transform: none; }
}
.subj-tile:hover {
  transform: translateY(-3px);
  border-color: var(--c-vermilion, var(--c-primary));
  box-shadow: 0 16px 40px -12px color-mix(in oklch, var(--c-vermilion, #b23a2b) 28%, transparent);
}
.subj-tile-accent {
  position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: var(--c-vermilion, var(--c-primary));
  opacity: .85;
  transition: width .35s cubic-bezier(.2, .8, .2, 1);
}
.subj-tile.agent .subj-tile-accent { background: var(--c-agent, #6b6258); }
.subj-tile:hover .subj-tile-accent { width: 5px; }
.subj-tile-row1 {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 10px;
}
.subj-tile-name {
  font-family: var(--ff-serif-cn, 'Noto Serif TC', serif);
  font-size: clamp(15px, 1.4vw, 18px);
  font-weight: 700;
  letter-spacing: -.01em;
  line-height: 1.35;
  color: var(--c-ink, var(--c-text));
  flex: 1;
}
.subj-tile-ring { flex-shrink: 0; }
.subj-tile-meta {
  display: flex; align-items: center; gap: 6px;
  font-family: var(--ff-mono, monospace);
  font-size: 11px; letter-spacing: .03em;
  color: var(--c-muted);
}
.subj-tile-dot { opacity: .4; }
.subj-tile-foot {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 4px;
}
.subj-tile-chip {
  font-family: var(--ff-mono, monospace);
  font-size: 10.5px; font-weight: 600; letter-spacing: .04em;
  padding: 3px 9px; border-radius: 99px;
  background: var(--c-surface2);
  color: var(--c-muted);
  border: 1px solid var(--c-border);
}
.subj-tile-chip.chip-new {
  background: color-mix(in oklch, var(--c-vermilion, #b23a2b) 8%, transparent);
  color: var(--c-vermilion); border-color: color-mix(in oklch, var(--c-vermilion, #b23a2b) 25%, transparent);
}
.subj-tile-chip.chip-weak {
  background: color-mix(in oklch, #d4a847 12%, transparent);
  color: #a37c1f; border-color: color-mix(in oklch, #d4a847 35%, transparent);
}
[data-theme="dark"] .subj-tile-chip.chip-weak { color: #d4b563; }
.subj-tile-chip.chip-strong {
  background: color-mix(in oklch, #6b8a73 14%, transparent);
  color: #4d6a55; border-color: color-mix(in oklch, #6b8a73 35%, transparent);
}
[data-theme="dark"] .subj-tile-chip.chip-strong { color: #92b59c; }
.subj-tile-arrow {
  font-family: var(--ff-serif-en, serif);
  font-size: 18px; font-weight: 600;
  color: var(--c-muted);
  transition: transform .25s ease, color .25s;
}
.subj-tile:hover .subj-tile-arrow {
  transform: translateX(4px);
  color: var(--c-vermilion);
}
.subj-tile.agent:hover .subj-tile-arrow { color: var(--c-agent); }
.subj-tile.agent:hover { border-color: var(--c-agent, #6b6258); box-shadow: 0 16px 40px -12px color-mix(in oklch, #6b6258 28%, transparent); }

/* ═══ Cinematic Full Exam CTA card ═══ */
.edit-fullexam {
  position: relative;
  margin: clamp(40px, 5vw, 64px) 0 clamp(24px, 3vw, 40px);
  padding: clamp(36px, 5vw, 56px) clamp(28px, 4vw, 56px);
  border: 1px solid var(--c-rule, rgba(0, 0, 0, .12));
  border-radius: 18px;
  background: var(--c-surface);
  overflow: hidden;
  isolation: isolate;
}
.edit-fullexam-bg {
  position: absolute; inset: 0; z-index: -1;
  filter: blur(70px) saturate(1.05);
  opacity: .35;
  pointer-events: none;
}
[data-theme="dark"] .edit-fullexam-bg { opacity: .22; }
.edit-fullexam-eyebrow {
  font-family: var(--ff-mono, monospace);
  font-size: 11px; font-weight: 500;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--c-muted);
  margin-bottom: 14px;
}
.edit-fullexam-h {
  font-family: var(--ff-serif-cn, 'Noto Serif TC', serif);
  font-size: clamp(28px, 3.6vw, 44px);
  font-weight: 800;
  letter-spacing: -.02em;
  color: var(--c-ink, var(--c-text));
  margin: 0 0 12px;
}
.edit-fullexam-lead {
  font-family: var(--ff-serif-cn, 'Noto Serif TC', serif);
  font-size: clamp(14px, 1.2vw, 16px);
  line-height: 1.7;
  color: var(--c-text);
  margin: 0 0 20px;
  max-width: 640px;
}
.edit-fullexam-stats {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px;
  font-family: var(--ff-mono, monospace);
  font-size: 12px; letter-spacing: .03em;
  color: var(--c-muted);
  margin-bottom: 24px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--c-rule);
}
.edit-fullexam-stats strong {
  color: var(--c-ink, var(--c-text));
  font-weight: 700;
  font-size: 14px;
}
.edit-fullexam-stats .sep { color: var(--c-rule); }
.edit-fullexam-btns {
  display: flex; flex-wrap: wrap; gap: 12px;
}
@media (max-width: 540px) {
  .edit-fullexam-btns { flex-direction: column; }
  .edit-fullexam-btns > * { width: 100%; justify-content: center; }
}

/* ─ Fullscreen law-detail: hide app header and bottom nav ─ */
body.law-full #app-header,
body.law-full #bottom-nav { display:none !important; }
body.law-full #main { padding-top:0; padding-bottom:0; margin-left:0 !important; }
body.law-full .law-sticky-header { top:0 !important; }
@media(min-width:1024px){
  body.law-full #action-bar { left:0; }
}

/* ─ Law detail: exam-refs toggle + highlighting ────────── */
.law-exam-toggle {
  display:inline-flex; align-items:center; gap:6px;
  padding:6px 12px; border-radius:var(--r-sm);
  background:var(--c-surface2); border:1px solid var(--c-border);
  color:var(--c-muted); font-size:var(--fs-13); font-weight:600;
  cursor:pointer; transition:all .15s; white-space:nowrap;
}
.law-exam-toggle svg { width:14px; height:14px; }
.law-exam-toggle:hover { color:var(--c-danger); border-color:var(--c-danger); }
.law-exam-toggle.active {
  background:var(--c-danger); border-color:var(--c-danger); color:#fff;
}
[data-theme="dark"] .law-exam-toggle { background:var(--c-surface2); border-color:var(--c-border); color:var(--c-muted); }
[data-theme="dark"] .law-exam-toggle.active { background:var(--c-danger); border-color:var(--c-danger); color:#fff; }

/* When exam-refs shown, highlight articles in red + show a refs strip */
.law-article.exam-ref {
  background:rgba(220,38,38,.04);
  border-left:3px solid var(--c-danger);
  padding-left:12px; margin-left:-12px;
}
.law-article.exam-ref strong {
  color:var(--c-danger);
}
[data-theme="dark"] .law-article.exam-ref { background:rgba(220,38,38,.08); }

.exam-refs-strip {
  margin:8px 0 12px; padding:8px 12px;
  background:rgba(220,38,38,.06); border:1px solid rgba(220,38,38,.2);
  border-radius:var(--r-sm);
  display:flex; flex-wrap:wrap; gap:6px; align-items:center;
}
.exam-refs-label {
  font-size:var(--fs-12); font-weight:700; color:var(--c-danger);
  letter-spacing:.02em; margin-right:4px;
}
.exam-ref-chip {
  display:inline-flex; align-items:center; gap:4px;
  padding:3px 10px; border-radius:999px;
  background:var(--c-surface); border:1px solid var(--c-danger);
  color:var(--c-danger); font-size:var(--fs-12); font-weight:600;
  cursor:pointer; transition:background .15s, color .15s;
  text-decoration:none;
}
.exam-ref-chip:hover {
  background:var(--c-danger); color:#fff;
}
[data-theme="dark"] .exam-refs-strip { background:rgba(220,38,38,.1); border-color:rgba(220,38,38,.3); }
[data-theme="dark"] .exam-ref-chip { background:var(--c-surface); border-color:var(--c-danger); }

.law-exam-loading {
  position:fixed; bottom:80px; left:50%; transform:translateX(-50%);
  background:var(--c-text); color:var(--c-bg);
  padding:8px 16px; border-radius:999px;
  font-size:var(--fs-13); font-weight:500; z-index:100;
  box-shadow:var(--shadow-lg);
}

/* ─ Floating jump-to-question button ──────────────────── */
#float-jump-btn {
  position:fixed; z-index:55;
  right:16px;
  bottom:calc(var(--nav-h) + env(safe-area-inset-bottom, 0px) + var(--action-h) + 12px);
  display:inline-flex; align-items:center; gap:6px;
  padding:10px 14px; border-radius:999px;
  background:var(--c-primary); color:#fff;
  border:none; cursor:pointer;
  font-size:var(--fs-13); font-weight:600;
  box-shadow:var(--shadow-lg);
  transition:transform .15s, box-shadow .15s;
}
#float-jump-btn:hover { transform:translateY(-2px); }
#float-jump-btn svg { width:16px; height:16px; }
#float-jump-btn #float-jump-idx {
  background:rgba(255,255,255,.2); padding:1px 8px; border-radius:999px; font-size:var(--fs-12); font-weight:700;
}
@media(min-width:1024px){
  #float-jump-btn {
    bottom:calc(var(--action-h) + 20px);
    right:32px;
  }
}
/* Small "exit fullscreen" close button in the law sticky header */
.law-full-exit {
  margin-left:auto; flex-shrink:0;
  display:inline-flex; align-items:center; gap:4px;
  padding:6px 10px; border-radius:var(--r-sm);
  background:var(--c-surface2); border:1px solid var(--c-border);
  color:var(--c-muted); font-size:var(--fs-13); font-weight:500;
  cursor:pointer; transition:background .15s, color .15s;
}
.law-full-exit:hover { background:var(--c-surface); color:var(--c-text); }
.law-full-exit svg { width:14px; height:14px; }

/* ─ Desktop Landing ≥900px ─────────────────────────── */
@media(min-width:900px){
  .lp-hero{min-height:auto;padding:96px 32px 88px;}
  .lp-hero-inner{max-width:720px;padding:0;}
  .lp-hero-title{font-size:clamp(var(--fs-44),5.2vw,64px);}
  .lp-hero-sub{font-size:var(--fs-20);}
  .lp-aurora{width:900px;height:900px;top:-30%;}
  .lp-exam-section{padding:48px 32px 16px;}
