.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; }
}

/* ════════════════════════════════════════════════════════════════
   2026-05-08 mesh #2 重設計（Devon/Hiroshi/Quinn）
   - Hero = 大數字 + 朱印 rule + inline meta（不寫時間預測）
   - CTA 直接在 hero；旁邊 N 印章視覺化「N 題」
   - 篩選收摺：預設只顯 範圍 toggle + ⚙ FAB
   ════════════════════════════════════════════════════════════════ */
.edit-wr-hero-2026 {
  position: relative;
  padding: clamp(36px, 5vw, 64px) 0 clamp(20px, 3vw, 36px);
  margin: 0 0 clamp(20px, 2.4vw, 32px);
  isolation: isolate;
}
/* 朱印 rule：左側垂直細線 + 上方紅 dot（跟 home sticky-demo panel rule 同語彙）*/
.ewrh-rule {
  position: absolute;
  top: clamp(36px, 5vw, 64px);
  left: clamp(-2px, -.3vw, 0px);
  width: 3px;
  height: 64px;
  background: linear-gradient(180deg, var(--c-vermilion) 0%, color-mix(in oklch, var(--c-vermilion) 20%, transparent) 100%);
  border-radius: 1.5px;
}
.ewrh-rule-stamp {
  position: absolute;
  top: -8px; left: -3.5px;
  width: 10px; height: 10px;
  background: var(--c-vermilion);
  border-radius: 2px;
  box-shadow: 0 0 0 2px var(--c-paper);
  animation: ewrh-stamp-drop .6s .1s cubic-bezier(.34, 1.5, .64, 1) both;
}
@keyframes ewrh-stamp-drop {
  0%   { transform: translateY(-12px); opacity: 0; }
  60%  { transform: translateY(2px); opacity: 1; }
  100% { transform: translateY(0); opacity: 1; }
}
.ewrh-eyebrow {
  font-family: var(--ff-mono);
  font-size: clamp(11px, .85vw, 13px);
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--c-vermilion);
  margin-bottom: clamp(16px, 2vw, 24px);
  padding-left: clamp(14px, 1.6vw, 20px);
  opacity: 0;
  animation: fade-up .42s .25s cubic-bezier(.2, .8, .2, 1) forwards;
}
.ewrh-stage {
  display: flex;
  align-items: baseline;
  gap: clamp(16px, 2.4vw, 28px);
  padding-left: clamp(14px, 1.6vw, 20px);
  margin-bottom: clamp(20px, 2.6vw, 32px);
}
.ewrh-num {
  font-family: var(--ff-serif-cn);
  font-weight: 800;
  font-size: clamp(72px, 14vw, 168px);
  line-height: .85;
  letter-spacing: -.03em;
  color: var(--c-vermilion);
  font-feature-settings: 'tnum' 1, 'lnum' 1;
  font-variant-numeric: tabular-nums lining-nums;
  opacity: 0;
  transform: translateY(20px);
  animation: fade-up .56s .3s cubic-bezier(.2, .8, .2, 1) forwards;
}
.ewrh-num.is-zero { color: var(--c-ink); opacity: .35; }
.ewrh-side {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-bottom: clamp(8px, 1vw, 14px);
  opacity: 0;
  animation: fade-up .56s .5s cubic-bezier(.2, .8, .2, 1) forwards;
}
.ewrh-unit {
  font-family: var(--ff-serif-cn);
  font-weight: 700;
  font-size: clamp(20px, 2.4vw, 32px);
  line-height: 1.2;
  color: var(--c-ink);
  letter-spacing: -.01em;
}
.ewrh-meta {
  font-family: var(--ff-serif-cn);
  font-size: clamp(13px, 1vw, 14.5px);
  line-height: 1.6;
  color: var(--c-muted);
}
.ewrh-meta strong {
  color: var(--c-ink);
  font-weight: 700;
  font-feature-settings: 'tnum' 1;
}

/* Hero CTA：印章視覺化 N 題 */
/* 同時帶兩個動畫：fade-up 進場（forwards 鎖 opacity 1）+ cta-breath 持續呼吸；
   覆蓋 .edit-cta-primary 單寫的 cta-breath，避免 opacity 卡 0。 */
.ewrh-cta.edit-cta-primary {
  margin-left: clamp(14px, 1.6vw, 20px);
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 14px 22px 14px 24px;
  font-family: var(--ff-serif-cn);
  font-size: clamp(15px, 1.2vw, 17px);
  font-weight: 700;
  position: relative;
  /* 進場動畫只用 transform，不碰 opacity（opacity 永遠 1）：
     避免 .edit-cta-primary:hover { animation: none } 拔掉 opacity:1
     → mouseleave 時 animation 重跑 0.7s delay + 0.56s fade
     → 按鈕消失 1.3 秒。
     之前把 opacity 寫進 fade-up 是同一隻 bug 的兩種表現，這次根治。 */
  animation: ewrh-cta-rise .56s .7s cubic-bezier(.2, .8, .2, 1) both,
             cta-breath 2.4s ease-in-out 2.6s infinite;
}
@keyframes ewrh-cta-rise {
  from { transform: translateY(8px); }
  to   { transform: translateY(0); }
}
.ewrh-cta-label { white-space: nowrap; }
.ewrh-stamps {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-left: 4px;
  padding-left: 12px;
  border-left: 1px solid color-mix(in oklch, currentColor 40%, transparent);
}
.ewrh-stamps .es {
  width: 8px;
  height: 10px;
  background: currentColor;
  border-radius: 1.5px;
  opacity: .85;
  animation: ewrh-es-drop .42s cubic-bezier(.34, 1.5, .64, 1) both;
  animation-delay: calc(.85s + var(--si, 0) * 80ms);
}
.ewrh-stamps .es-more {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: .04em;
  margin-left: 4px;
  opacity: .85;
}
@keyframes ewrh-es-drop {
  0%   { transform: translateY(-10px) rotate(-8deg); opacity: 0; }
  70%  { transform: translateY(2px) rotate(2deg); opacity: 1; }
  100% { transform: translateY(0) rotate(0); opacity: .85; }
}
/* Soft CTA when no due (查看池中所有錯題)*/
.ewrh-cta-soft {
  margin-left: clamp(14px, 1.6vw, 20px);
  font-family: var(--ff-serif-cn);
  font-size: 14px;
  background: transparent;
  border: 0;
  padding: 8px 0;
  color: var(--c-muted);
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: color-mix(in oklch, var(--c-vermilion) 40%, transparent);
  text-underline-offset: 4px;
  transition: color .18s;
  opacity: 0;
  animation: fade-up .56s .55s cubic-bezier(.2, .8, .2, 1) forwards;
}
.ewrh-cta-soft:hover { color: var(--c-vermilion); }
.ewrh-cta-soft strong { color: var(--c-ink); font-weight: 700; }

/* ── Toolbar 2026 minimal ── */
.edit-wr-toolbar-2026 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  margin-bottom: clamp(16px, 2vw, 24px);
  position: sticky;
  top: var(--hdr-h, 56px);
  z-index: 5;
  background: color-mix(in oklch, var(--c-surface) 90%, transparent);
  backdrop-filter: blur(12px) saturate(1.1);
  -webkit-backdrop-filter: blur(12px) saturate(1.1);
  border-bottom: 1px solid color-mix(in oklch, var(--c-vermilion) 12%, var(--c-border));
}
.ewrtbm-pills {
  display: inline-flex;
  background: color-mix(in oklch, var(--c-ink) 7%, transparent);
  padding: 3px;
  border-radius: 999px;
  gap: 0;
}
.ewrtbm-pill {
  font-family: var(--ff-serif-cn);
  font-size: 13.5px;
  font-weight: 700;
  padding: 7px 14px;
  background: transparent;
  color: var(--c-muted);
  border: 0;
  border-radius: 999px;
  cursor: pointer;
  transition: color .15s, background .15s;
  white-space: nowrap;
}
.ewrtbm-pill:hover { color: var(--c-ink); }
.ewrtbm-pill.active {
  background: var(--c-ink);
  color: var(--c-paper, #FFF);
}
[data-theme="dark"] .ewrtbm-pill.active { background: var(--c-vermilion); color: white; }
.ewrtbm-c {
  font-family: var(--ff-mono);
  font-size: 11px;
  margin-left: 4px;
  opacity: .75;
  font-weight: 600;
}
/* FAB-style filter */
.ewrtbm-fab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--ff-mono);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .04em;
  padding: 7px 13px;
  background: transparent;
  color: var(--c-muted);
  border: 1px solid var(--c-border);
  border-radius: 999px;
  cursor: pointer;
  transition: all .18s;
  position: relative;
}
.ewrtbm-fab:hover {
  color: var(--c-ink);
  border-color: color-mix(in oklch, var(--c-vermilion) 40%, var(--c-border));
}
.ewrtbm-fab.is-open {
  color: var(--c-vermilion);
  border-color: var(--c-vermilion);
  background: color-mix(in oklch, var(--c-vermilion) 8%, transparent);
}
.ewrtbm-fab.has-active::before {
  content: '';
  position: absolute;
  top: -2px; right: -2px;
  width: 8px; height: 8px;
  background: var(--c-vermilion);
  border-radius: 50%;
  border: 1.5px solid var(--c-paper, var(--c-surface));
}

/* Filter panel — 點開才展（slide-down anim）*/
.edit-wr-filter-panel {
  margin: -8px 0 clamp(20px, 2vw, 28px);
  padding: 16px 18px;
  background: color-mix(in oklch, var(--c-vermilion) 4%, var(--c-surface));
  border: 1px solid color-mix(in oklch, var(--c-vermilion) 18%, var(--c-border));
  border-radius: 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  animation: ewr-panel-slide .32s cubic-bezier(.2, .8, .2, 1);
  transform-origin: top;
}
@keyframes ewr-panel-slide {
  from { opacity: 0; transform: translateY(-8px) scaleY(.96); }
  to   { opacity: 1; transform: translateY(0) scaleY(1); }
}
.ewrfp-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.ewrfp-label {
  font-family: var(--ff-mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .12em;
  color: var(--c-muted);
  text-transform: uppercase;
  margin-right: 8px;
  flex-shrink: 0;
  min-width: 36px;
}
.ewrtbm-chip {
  font-family: var(--ff-serif-cn);
  font-size: 13px;
  font-weight: 600;
  padding: 5px 11px;
  background: transparent;
  color: var(--c-muted);
  border: 1px solid var(--c-border);
  border-radius: 999px;
  cursor: pointer;
  transition: all .15s;
}
.ewrtbm-chip:hover {
  color: var(--c-ink);
  border-color: color-mix(in oklch, var(--c-vermilion) 30%, var(--c-border));
}
.ewrtbm-chip.active {
  background: var(--c-vermilion);
  color: white;
  border-color: var(--c-vermilion);
}
.ewrtbm-clear {
  border-style: dashed;
  margin-left: 4px;
}
.ewrtbm-clear:hover {
  color: var(--c-vermilion);
  border-color: var(--c-vermilion);
}

/* mobile RWD：hero 數字 + 印章自動縮 */
@media (max-width: 600px) {
  .edit-wr-hero-2026 { padding: 24px 0 20px; }
  .ewrh-rule { top: 24px; height: 50px; }
  .ewrh-num { font-size: 18vw; line-height: .82; }
  .ewrh-stage { gap: 14px; flex-wrap: wrap; }
  .ewrh-cta { width: 100%; justify-content: center; margin-left: 0; }
  .ewrh-cta .ewrh-stamps { padding-left: 10px; }
  .edit-wr-toolbar-2026 { flex-wrap: wrap; gap: 8px; padding: 8px 10px; }
}

/* Stagger fade-in for wrong rows */
.wr-stagger {
  opacity: 0;
  transform: translateY(8px);
  animation: wr-row-in .42s cubic-bezier(.2, .8, .2, 1) both;
  animation-delay: calc(.4s + var(--si, 0) * 60ms);
}
@keyframes wr-row-in {
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .wr-stagger, .ewrh-stamps .es, .ewrh-rule-stamp,
  .ewrh-eyebrow, .ewrh-num, .ewrh-side, .ewrh-cta, .ewrh-cta-soft {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* Editorial wrong row cards — 取代舊的 .wrong-row 視覺（class 仍保留邏輯） */
.edit-wr .wrong-list {
  display: grid; gap: 8px;
}
/* 2026-05-12：砍 wrong-row-idx 欄（×N / i+1 兩種意義混用新手看不懂）
   3-col → 2-col [body / actions]；錯誤次數 ≥2 改 meta tag「錯 N 次」呈現 */
.edit-wr .wrong-row {
  display: grid;
  grid-template-columns: 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 / .large 2026-05-12 砍掉（×N / i+1 雙意義混亂） */
.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);
}
/* legacy .wrong-row-idx / .large 2026-05-12 砍掉（×N / i+1 雙意義混亂） */
.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; }

/* ═══ 繼續上次練習 sticky 卡（2026-05-18） ═══════════════════════
   user 反映：「他可以不隨著滾輪往下不見嗎」+「UIUX 專家調整」
   ─ position: sticky 在 #app-header (var(--hdr-h)) 下方 + 8px
   ─ 玻璃卡 + 朱印紅 left accent + play icon + arrow + dismiss(X)
   ─ 內含 session 資訊：考試 · 科目 / 年度 · 模式 · 第 N 題 + 相對時間
   ═══════════════════════════════════════════════════════════════ */
#ps-continue-bar {
  position: sticky;
  top: calc(var(--hdr-h, 56px) + 8px);
  z-index: 9;
  margin: 0 0 18px;
  /* dismiss 動畫共用 transition */
  transition: opacity .24s var(--ease-editorial, cubic-bezier(.2,.8,.2,1)),
              transform .24s var(--ease-editorial, cubic-bezier(.2,.8,.2,1));
}
.ps-continue-card {
  position: relative;
  display: flex; align-items: stretch;
  background: color-mix(in oklch, var(--c-surface) 78%, transparent);
  -webkit-backdrop-filter: blur(20px) saturate(1.05);
  backdrop-filter: blur(20px) saturate(1.05);
  border: 1px solid var(--c-border);
  border-left: 3px solid var(--c-vermilion, var(--c-primary));
  border-radius: clamp(14px, 1.4vw, 20px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.10),
              0 18px 48px -18px rgba(0,0,0,.22);
  overflow: hidden;
}
.ps-continue-main {
  flex: 1 1 auto; min-width: 0;
  display: flex; align-items: center; gap: 14px;
  padding: 14px 14px 14px 18px;
  background: transparent; border: 0;
  color: var(--c-text);
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  transition: background .15s ease;
}
.ps-continue-main:hover {
  background: color-mix(in oklch, var(--c-vermilion, var(--c-primary)) 6%, transparent);
}
.ps-continue-main:focus-visible {
  outline: 2px solid var(--c-vermilion, var(--c-primary));
  outline-offset: -2px;
}
.ps-continue-ico {
  flex-shrink: 0;
  width: 38px; height: 38px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: color-mix(in oklch, var(--c-vermilion, var(--c-primary)) 14%, var(--c-surface));
  color: var(--c-vermilion, var(--c-primary));
}
.ps-continue-ico svg { width: 16px; height: 16px; margin-left: 1px; /* play 視覺置中補正 */ }
.ps-continue-body {
  flex: 1 1 auto; min-width: 0;
  display: flex; flex-direction: column; gap: 2px;
  overflow: hidden;
}
.ps-continue-eyebrow {
  font-family: var(--ff-mono, monospace);
  font-size: 10.5px; font-weight: 600;
  letter-spacing: .08em;
  color: var(--c-vermilion, var(--c-primary));
  text-transform: uppercase;
}
.ps-continue-title {
  font-family: var(--ff-serif-cn, inherit);
  font-size: clamp(15px, 1.5vw, 17px);
  font-weight: 700;
  color: var(--c-ink, var(--c-text));
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ps-continue-meta {
  font-size: 12.5px;
  color: var(--c-muted);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ps-continue-arrow {
  flex-shrink: 0;
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--c-muted);
  transition: transform .18s var(--ease-editorial, cubic-bezier(.2,.8,.2,1)), color .15s ease;
}
.ps-continue-main:hover .ps-continue-arrow {
  transform: translateX(3px);
  color: var(--c-vermilion, var(--c-primary));
}
.ps-continue-arrow svg { width: 18px; height: 18px; }
.ps-continue-dismiss {
  flex-shrink: 0;
  width: 36px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent;
  border: 0; border-left: 1px solid var(--c-border);
  color: var(--c-muted);
  cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.ps-continue-dismiss:hover { background: var(--c-surface2); color: var(--c-text); }
.ps-continue-dismiss:focus-visible {
  outline: 2px solid var(--c-vermilion, var(--c-primary));
  outline-offset: -2px;
}
.ps-continue-dismiss svg { width: 14px; height: 14px; }

@media (max-width: 599.98px) {
  #ps-continue-bar { margin: 0 0 14px; }
  .ps-continue-main { padding: 12px 10px 12px 14px; gap: 10px; }
  .ps-continue-ico { width: 34px; height: 34px; }
  .ps-continue-title { font-size: 14px; }
  .ps-continue-meta { font-size: 11.5px; }
  .ps-continue-dismiss { width: 32px; }
}
@media (prefers-reduced-motion: reduce) {
  .ps-continue-main:hover .ps-continue-arrow { transform: none; }
}

/* 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; }
}
@media (max-width: 379.98px) {
  .edit-ps .subject-grid { gap: 8px; margin: 16px 0 4px; }
}

/* ═══ Premium Study Tile（取代 .subj-card）═══ */
.subj-tile {
  position: relative;
  background: var(--c-surface);
  border: 1px solid var(--c-border);
  border-radius: 14px;
  /* 2026-05-12 UI 調整：gap 10 → 12 給 name 放大後的呼吸；padding 維持 */
  padding: 18px 20px 16px;
  display: grid; gap: 12px;
  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);
  /* 2026-05-12 UI：15-18 → 17-19px。思源宋 15px 偏細沒主次；卡片標題該有份量
     vw 不用 cqi 因手機 viewport ≈ 卡片寬，clamp 走 vw 在手機自然落 17-18 */
  font-size: clamp(17px, 4.2vw, 19px);
  font-weight: 700;
  letter-spacing: -.01em;
  line-height: 1.4;
  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);
  /* 2026-05-12 UI：10.5 → 11.5px。a11y floor 11px（iOS HIG）；10.5 retina mono 偏糊 */
  font-size: 11.5px; font-weight: 600; letter-spacing: .04em;
  padding: 3.5px 10px; 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);
  /* 2026-05-12 UI：name 放大後 18px 箭頭顯瘦弱 → 20px 平衡 */
  font-size: 20px; 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); }

/* 2026-05-12 UI：手機（≤480px）給明確 18px floor，避 vw 在小螢幕回落到 17 不夠 */
@media (max-width: 480px) {
  .subj-tile { padding: 20px 18px 18px; }
  .subj-tile-name { font-size: 18px; }
}
.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 (mobile only) ─
   2026-05-14 v7：桌機保留 header + sidebar，sidebar 隱藏改走 body.sidebar-collapsed
   toggle button 控制。law-full 只在手機沉浸閱讀生效。 */
@media (max-width: 1023.98px) {
  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; }
}

/* ─ 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;}
