/* ==========================================================================
   小学课程同步练 · PRIMARY DRILLS
   视觉规范：霓虹赛博 / NEON CYBER —— 严格按规范色值实现
   ========================================================================== */

:root{
  /* —— 视觉规范配色（禁止替换） —— */
  --c-primary:#f141de;   /* 主色 */
  --c-accent:#df4734;    /* 辅助色 */
  --c-cta:#fbb64b;       /* 强调色 CTA/高亮 */
  --c-bg:#150e15;        /* 页面背景 */
  --c-surface:#231a22;   /* 卡片/表面 */
  --c-text:#f2eef1;      /* 正文文字 */
  --c-muted:#ae98ac;     /* 次要文字 */
  --c-border:#40303e;    /* 描边 */

  /* —— 语义色（判分用，与霓虹调统一） —— */
  --ok:#52f59c;
  --bad:var(--c-accent);
  --warn:var(--c-cta);

  /* —— 版式 —— */
  --r:4px;
  --font-title:'Poppins','Noto Sans SC',system-ui,sans-serif;
  --font-mono:'JetBrains Mono','Fira Code',ui-monospace,'SFMono-Regular','Courier New',monospace;

  /* —— 辉光 —— */
  --glow-p:0 0 14px rgba(241,65,222,.42);
  --glow-c:0 0 14px rgba(251,182,75,.38);
  --glow-a:0 0 12px rgba(223,71,52,.40);
}

/* ---------- reset ---------- */
*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html{ -webkit-text-size-adjust:100%; }
body{
  background:var(--c-bg);
  color:var(--c-text);
  font-family:var(--font-mono);
  font-size:15px;
  line-height:1.65;
  min-height:100vh;
  overflow-x:hidden;
  /* 霓虹网格背景 */
  background-image:
    linear-gradient(rgba(241,65,222,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(241,65,222,.055) 1px, transparent 1px),
    radial-gradient(1200px 600px at 50% -10%, rgba(241,65,222,.10), transparent 60%);
  background-size:34px 34px, 34px 34px, 100% 100%;
  background-attachment:fixed;
}
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; cursor:pointer; }
img{ max-width:100%; display:block; }
::selection{ background:var(--c-primary); color:#150e15; }

::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-track{ background:var(--c-bg); }
::-webkit-scrollbar-thumb{ background:var(--c-border); border:2px solid var(--c-bg); border-radius:var(--r); }
::-webkit-scrollbar-thumb:hover{ background:var(--c-primary); }

/* ---------- 扫描线 / 扫描光带 ---------- */
.scanlines::before{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:9990;
  background:repeating-linear-gradient(0deg, rgba(242,238,241,.026) 0 1px, transparent 1px 3px);
}
.scanlines::after{
  content:""; position:fixed; left:0; right:0; top:-140px; height:140px; z-index:9980; pointer-events:none;
  background:linear-gradient(180deg, transparent, rgba(241,65,222,.09), rgba(251,182,75,.05), transparent);
  animation:scan 9s linear infinite;
}
@keyframes scan{ 0%{ transform:translateY(0);} 100%{ transform:translateY(calc(100vh + 280px));} }

/* ---------- 布局 ---------- */
.wrap{ width:min(1080px, 92vw); margin-inline:auto; }
.hidden{ display:none !important; }
.mono-dim{ color:var(--c-muted); font-size:12px; letter-spacing:.04em; }
.skip-link{ position:absolute; left:-9999px; }
.skip-link:focus{ left:12px; top:12px; z-index:10000; background:var(--c-cta); color:#150e15; padding:6px 12px; border-radius:var(--r); }

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky; top:0; z-index:100;
  background:rgba(21,14,21,.92);
  border-bottom:1px solid var(--c-border);
  box-shadow:0 1px 0 var(--c-primary), 0 0 18px rgba(241,65,222,.14);
  backdrop-filter:blur(6px);
}
.topbar-in{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 0; }
.brand{ display:flex; align-items:center; gap:12px; }
.brand-mark{
  width:34px; height:34px; display:grid; place-items:center;
  color:#150e15; background:var(--c-primary); font-weight:800; font-size:16px;
  clip-path:polygon(0 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%);
  filter:drop-shadow(0 0 8px rgba(241,65,222,.7));
  animation:blink 2.4s steps(1) infinite;
}
.brand-name{ font-family:var(--font-title); font-weight:700; font-size:17px; line-height:1.15; letter-spacing:.02em; }
.brand-name em{ display:block; font-style:normal; font-family:var(--font-mono); font-size:9px; letter-spacing:.32em; color:var(--c-muted); }
.nav{ display:flex; gap:6px; }
.nav-link{
  font-size:12px; letter-spacing:.08em; padding:7px 12px; color:var(--c-muted);
  border:1px solid transparent; border-radius:var(--r); transition:.2s;
}
.nav-link:hover{ color:var(--c-text); border-color:var(--c-border); }
.nav-link.is-active{ color:var(--c-primary); border-color:var(--c-primary); box-shadow:inset 0 0 0 1px var(--c-primary), 0 0 10px rgba(241,65,222,.25); }

/* ---------- 标题 / kicker ---------- */
.kicker{
  font-size:11px; letter-spacing:.34em; text-transform:uppercase; color:var(--c-primary);
  margin-bottom:14px; text-shadow:0 0 10px rgba(241,65,222,.55);
}
h1,h2,h3{ font-family:var(--font-title); font-weight:700; line-height:1.2; }

/* ---------- 面板 ---------- */
.panel{
  background:linear-gradient(180deg, rgba(35,26,34,.92), rgba(35,26,34,.72));
  border:1px solid var(--c-border);
  border-radius:var(--r);
  box-shadow:0 0 0 1px rgba(64,48,62,.4), var(--glow-p);
  position:relative;
}
.panel::before{ /* 顶边霓虹线 */
  content:""; position:absolute; top:-1px; left:0; right:0; height:2px;
  background:linear-gradient(90deg, transparent, var(--c-primary), transparent);
}

/* 硬朗切角工具类 */
.notched{ clip-path:polygon(0 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%); }

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-family:var(--font-mono); font-size:13px; letter-spacing:.06em;
  padding:12px 22px; border:1px solid var(--c-primary); border-radius:var(--r);
  color:var(--c-primary); background:rgba(241,65,222,.06);
  transition:transform .15s, box-shadow .2s, background .2s, color .2s, border-color .2s;
  clip-path:polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 10px 100%, 0 calc(100% - 10px));
}
.btn:hover{ background:rgba(241,65,222,.16); box-shadow:var(--glow-p); filter:drop-shadow(0 0 6px rgba(241,65,222,.4)); }
.btn:active{ transform:translateY(1px) scale(.98); }
.btn-cta{
  border-color:var(--c-cta); color:#150e15; background:var(--c-cta); font-weight:700;
  box-shadow:0 0 0 1px var(--c-cta), var(--glow-c);
}
.btn-cta:hover{ background:#ffc46b; filter:drop-shadow(0 0 8px rgba(251,182,75,.55)); }
.btn-ghost{ border-color:var(--c-border); color:var(--c-muted); background:transparent; }
.btn-ghost:hover{ color:var(--c-text); border-color:var(--c-muted); box-shadow:none; filter:drop-shadow(0 0 6px rgba(242,238,241,.18)); }
.btn-sm{ padding:8px 14px; font-size:12px; }
.btn[disabled]{ opacity:.45; pointer-events:none; }

/* ---------- chips ---------- */
.chip-row{ display:flex; flex-wrap:wrap; gap:8px; }
.chip{
  font-size:12px; letter-spacing:.04em; padding:7px 13px; border:1px solid var(--c-border);
  border-radius:var(--r); color:var(--c-muted); background:transparent; transition:.18s; text-align:center;
}
.chip:hover{ color:var(--c-text); border-color:var(--c-muted); }
.chip.on{
  color:#150e15; background:var(--c-primary); border-color:var(--c-primary); font-weight:700;
  box-shadow:var(--glow-p);
}
.chip.on.c-cta{ background:var(--c-cta); border-color:var(--c-cta); box-shadow:var(--glow-c); }
.chip.on.c-a{ background:var(--c-accent); border-color:var(--c-accent); box-shadow:var(--glow-a); }

/* ---------- 区块 ---------- */
.sec{ margin-top:44px; }
.sec-head{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:18px; }
.sec-title{ font-size:22px; letter-spacing:.02em; display:flex; align-items:baseline; gap:10px; }
.sec-title::before{ content:"//"; color:var(--c-primary); font-family:var(--font-mono); font-size:16px; }
.sec-tag{ font-family:var(--font-mono); font-size:10px; letter-spacing:.26em; color:var(--c-muted); font-weight:400; }
.text-link{ font-size:12px; letter-spacing:.06em; color:var(--c-primary); transition:.2s; }
.text-link:hover{ text-shadow:0 0 10px rgba(241,65,222,.6); }

/* ---------- Hero ---------- */
.hero{ padding:40px 38px 34px; overflow:hidden; }
.hero h1{
  font-size:clamp(30px, 5.4vw, 52px); font-weight:800; letter-spacing:.01em;
  color:var(--c-text); text-shadow:0 0 22px rgba(241,65,222,.45);
}
.glitch{ position:relative; }
.glitch::before,.glitch::after{
  content:attr(data-text); position:absolute; inset:0; pointer-events:none; opacity:0;
}
.glitch:hover::before{ opacity:.55; color:var(--c-primary); transform:translate(-2px,1px); clip-path:inset(0 0 45% 0); animation:jitter .18s steps(2) infinite; }
.glitch:hover::after{ opacity:.55; color:var(--c-cta); transform:translate(2px,-1px); clip-path:inset(45% 0 0 0); animation:jitter .16s steps(2) infinite reverse; }
@keyframes jitter{ 50%{ transform:translate(-1px,0);} }
.lead{ color:var(--c-muted); font-size:14px; max-width:620px; margin:16px 0 22px; }
.hero-cta{ display:flex; flex-wrap:wrap; gap:14px; margin-top:6px; }
.stat-row{ display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; margin-top:30px; }
.stat{
  border:1px solid var(--c-border); border-radius:var(--r); background:rgba(21,14,21,.5);
  padding:14px 12px; text-align:center; transition:.2s;
}
.stat:hover{ border-color:var(--c-primary); box-shadow:var(--glow-p); }
.stat b{ display:block; font-family:var(--font-title); font-size:26px; color:var(--c-primary); text-shadow:0 0 12px rgba(241,65,222,.5); }
.stat span{ display:block; font-size:11px; letter-spacing:.12em; color:var(--c-muted); margin-top:4px; }

/* ---------- 年级卡片 ---------- */
.grade-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:14px; }
.grade-card{
  position:relative; padding:20px 18px; border:1px solid var(--c-border); border-radius:var(--r);
  background:var(--c-surface); transition:.22s; overflow:hidden;
}
.grade-card::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(115deg, transparent 60%, rgba(241,65,222,.16) 100%);
}
.grade-card:hover{ transform:translateY(-4px); border-color:var(--c-primary); box-shadow:var(--glow-p); }
.grade-card .g-code{ font-size:10px; letter-spacing:.3em; color:var(--c-muted); }
.grade-card h3{ font-size:20px; margin:8px 0 6px; }
.grade-card .g-count{ font-size:11px; color:var(--c-muted); }
.grade-card .g-arrow{ position:absolute; right:14px; top:14px; color:var(--c-primary); font-size:14px; opacity:0; transform:translateX(-6px); transition:.22s; }
.grade-card:hover .g-arrow{ opacity:1; transform:none; }

/* ---------- 科目卡片 ---------- */
.subject-row{ display:grid; grid-template-columns:repeat(3, 1fr); gap:14px; }
.subject-card{
  display:flex; align-items:center; gap:16px; padding:20px 18px;
  border:1px solid var(--c-border); border-radius:var(--r); background:var(--c-surface);
  transition:.22s;
}
.subject-card:hover{ transform:translateY(-4px); border-color:var(--c-primary); box-shadow:var(--glow-p); }
.subject-card.s-c{ --sc:var(--c-accent); --sg:var(--glow-a); }
.subject-card.s-e{ --sc:var(--c-cta); --sg:var(--glow-c); }
.subject-card .s-icon{
  width:52px; height:52px; display:grid; place-items:center; flex:none;
  font-size:24px; color:var(--sc, var(--c-primary));
  border:1px solid var(--sc, var(--c-primary)); border-radius:var(--r);
  background:rgba(21,14,21,.4); text-shadow:0 0 10px var(--sc, var(--c-primary));
  filter:drop-shadow(0 0 6px var(--sc, var(--c-primary)));
}
.subject-card:hover .s-icon{ box-shadow:var(--sg, var(--glow-p)); }
.subject-card h3{ font-size:18px; }
.subject-card .s-count{ font-size:11px; color:var(--c-muted); margin-top:3px; }

/* ---------- 知识点 ---------- */
.kp-grid{ display:flex; flex-wrap:wrap; gap:10px; }
.kp-chip{
  font-size:12px; padding:9px 14px; border:1px dashed var(--c-border); border-radius:var(--r);
  color:var(--c-muted); background:rgba(35,26,34,.6); transition:.18s;
}
.kp-chip:hover{ color:var(--c-cta); border-color:var(--c-cta); border-style:solid; box-shadow:var(--glow-c); transform:translateY(-2px); }
.kp-chip small{ color:var(--c-muted); margin-left:6px; }

/* ---------- 学习档案 ---------- */
.archive{ display:flex; align-items:center; justify-content:space-between; gap:22px; padding:24px; }
.archive-info{ flex:1; min-width:0; }
.archive-bars{ margin-top:14px; display:grid; gap:10px; }
.bar-row{ display:grid; grid-template-columns:64px 1fr 44px; align-items:center; gap:10px; font-size:12px; color:var(--c-muted); }
.bar{ height:8px; border-radius:var(--r); background:rgba(64,48,62,.6); overflow:hidden; border:1px solid var(--c-border); }
.bar i{ display:block; height:100%; width:0; background:linear-gradient(90deg, var(--c-primary), var(--c-cta)); transition:width 1s cubic-bezier(.2,.8,.2,1); box-shadow:0 0 8px rgba(241,65,222,.6); }
.bar-row b{ font-size:12px; color:var(--c-text); text-align:right; font-weight:500; }
.archive-actions{ display:flex; flex-direction:column; gap:10px; align-items:stretch; }

/* ---------- 练习页：组卷 ---------- */
.cfg{ padding:24px; display:grid; gap:18px; }
.cfg-block{ display:grid; gap:9px; }
.cfg-label{ font-size:11px; letter-spacing:.22em; color:var(--c-muted); }
.select{
  width:100%; max-width:340px; padding:10px 12px; font-family:var(--font-mono); font-size:13px;
  color:var(--c-text); background:var(--c-bg); border:1px solid var(--c-border); border-radius:var(--r);
  appearance:none; cursor:pointer; transition:.2s;
}
.select:hover,.select:focus{ outline:none; border-color:var(--c-primary); box-shadow:var(--glow-p); }
.cfg-go{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; border-top:1px dashed var(--c-border); padding-top:18px; }

/* ---------- 练习页：答题 ---------- */
.quiz-sec{ display:grid; gap:16px; }
.quiz-top{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.quiz-top .kicker{ margin:0; }
.quiz-progress{ font-family:var(--font-title); font-size:22px; color:var(--c-cta); text-shadow:0 0 12px rgba(251,182,75,.5); }
.strip{ display:flex; gap:5px; flex:1; min-width:140px; flex-wrap:wrap; }
.strip i{
  width:16px; height:16px; border:1px solid var(--c-border); border-radius:var(--r); display:block;
  transition:.25s; background:transparent;
}
.strip i.cur{ border-color:var(--c-cta); box-shadow:0 0 8px rgba(251,182,75,.55); animation:blink 1.2s steps(1) infinite; }
.strip i.ok{ background:var(--ok); border-color:var(--ok); box-shadow:0 0 8px rgba(82,245,156,.5); }
.strip i.bad{ background:var(--bad); border-color:var(--bad); box-shadow:0 0 8px rgba(223,71,52,.5); }
@keyframes blink{ 50%{ opacity:.35; } }

.qcard{ padding:26px; }
.q-tags{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:16px; }
.tag{
  font-size:11px; letter-spacing:.14em; padding:4px 10px; border-radius:var(--r);
  border:1px solid var(--c-border); color:var(--c-muted); background:rgba(21,14,21,.5);
}
.tag-grade{ color:var(--c-primary); border-color:var(--c-primary); text-shadow:0 0 8px rgba(241,65,222,.5); }
.tag-type{ color:var(--c-cta); border-color:var(--c-cta); }
.q-text{
  font-family:var(--font-title); font-weight:600; font-size:clamp(18px, 3vw, 24px);
  line-height:1.6; margin-bottom:20px; letter-spacing:.01em;
}
.q-text .blank{ display:inline-block; min-width:88px; border-bottom:2px dashed var(--c-primary); text-align:center; text-shadow:0 0 8px rgba(241,65,222,.5); }

.opts{ display:grid; gap:10px; }
.opt{
  display:flex; align-items:center; gap:12px; width:100%; text-align:left;
  padding:13px 16px; font-size:14px; color:var(--c-text);
  border:1px solid var(--c-border); border-radius:var(--r); background:rgba(21,14,21,.45);
  transition:.18s;
}
.opt .opt-key{
  width:26px; height:26px; flex:none; display:grid; place-items:center; font-size:12px;
  border:1px solid var(--c-border); border-radius:var(--r); color:var(--c-muted); transition:.18s;
}
.opt:hover{ border-color:var(--c-primary); box-shadow:var(--glow-p); transform:translateX(3px); }
.opt:hover .opt-key{ color:var(--c-primary); border-color:var(--c-primary); }
.opt.sel{ border-color:var(--c-cta); box-shadow:0 0 0 1px var(--c-cta), var(--glow-c); background:rgba(251,182,75,.08); }
.opt.sel .opt-key{ background:var(--c-cta); color:#150e15; border-color:var(--c-cta); }
.opt.ok{ border-color:var(--ok); background:rgba(82,245,156,.08); box-shadow:0 0 12px rgba(82,245,156,.25); }
.opt.ok .opt-key{ background:var(--ok); color:#150e15; border-color:var(--ok); }
.opt.bad{ border-color:var(--bad); background:rgba(223,71,52,.10); box-shadow:0 0 12px rgba(223,71,52,.28); }
.opt.bad .opt-key{ background:var(--bad); color:#150e15; border-color:var(--bad); }
.opt.dim{ opacity:.45; }

.fill-wrap{ display:flex; gap:10px; align-items:stretch; }
.fill-input{
  flex:1; min-width:0; padding:13px 14px; font-family:var(--font-mono); font-size:16px;
  color:var(--c-text); background:rgba(21,14,21,.5); border:1px solid var(--c-border);
  border-bottom:2px solid var(--c-primary); border-radius:var(--r); transition:.2s;
}
.fill-input:focus{ outline:none; box-shadow:var(--glow-p); }

.feedback{
  margin-top:18px; padding:14px 16px; border-radius:var(--r); font-size:13px; line-height:1.7;
  border:1px solid var(--c-border); background:rgba(21,14,21,.5);
  animation:fadeUp .3s ease both;
}
.feedback .fb-head{ display:flex; align-items:center; gap:8px; font-weight:700; margin-bottom:6px; letter-spacing:.04em; }
.feedback.good{ border-color:var(--ok); box-shadow:0 0 14px rgba(82,245,156,.18); }
.feedback.good .fb-head{ color:var(--ok); text-shadow:0 0 8px rgba(82,245,156,.5); }
.feedback.wrong{ border-color:var(--bad); box-shadow:0 0 14px rgba(223,71,52,.18); }
.feedback.wrong .fb-head{ color:var(--bad); text-shadow:0 0 8px rgba(223,71,52,.5); }
.feedback .fb-ans{ color:var(--c-cta); }
@keyframes fadeUp{ from{ opacity:0; transform:translateY(8px);} to{ opacity:1; transform:none;} }

.q-actions{ margin-top:20px; display:flex; justify-content:flex-end; gap:10px; }

/* ---------- 结果页 ---------- */
.result{ padding:36px 26px; text-align:center; }
.ring-wrap{ position:relative; width:168px; height:168px; margin:6px auto 18px; }
.ring{ width:100%; height:100%; transform:rotate(-90deg); }
.ring circle{ fill:none; stroke-width:9; }
.ring-bg{ stroke:var(--c-border); }
.ring-fg{ stroke:var(--c-cta); stroke-linecap:round; stroke-dasharray:326.7; stroke-dashoffset:326.7; filter:drop-shadow(0 0 6px rgba(251,182,75,.65)); transition:stroke-dashoffset 1s cubic-bezier(.2,.8,.2,1); }
.ring-num{ position:absolute; inset:0; display:grid; place-content:center; }
.ring-num b{ font-family:var(--font-title); font-size:40px; color:var(--c-cta); text-shadow:0 0 16px rgba(251,182,75,.6); }
.ring-num span{ font-size:12px; color:var(--c-muted); letter-spacing:.2em; }
.result-stats{ display:flex; justify-content:center; gap:14px; margin-bottom:24px; }
.result-stats .stat{ min-width:110px; }

/* ---------- 错题本 ---------- */
.mistake-list{ display:grid; gap:14px; }
.m-card{ padding:20px; transition:.2s; }
.m-card:hover{ border-color:var(--c-accent); box-shadow:var(--glow-a); }
.m-head{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.m-ans{ margin-top:10px; display:grid; gap:6px; font-size:13px; }
.m-ans .row-u{ color:var(--bad); }
.m-ans .row-c{ color:var(--ok); }
.m-explain{ margin-top:10px; padding:10px 12px; border-left:2px solid var(--c-cta); background:rgba(21,14,21,.4); font-size:12px; color:var(--c-muted); }
.m-foot{ margin-top:14px; display:flex; gap:10px; flex-wrap:wrap; }
.m-time{ margin-left:auto; font-size:11px; color:var(--c-muted); letter-spacing:.06em; }
.empty{ padding:44px 24px; text-align:center; }
.empty-mark{ font-size:46px; color:var(--c-primary); text-shadow:0 0 18px rgba(241,65,222,.6); animation:blink 2.4s steps(1) infinite; }
.empty h2{ margin:10px 0 8px; }
.empty p{ margin-bottom:18px; }

/* ---------- toast ---------- */
.toast{
  position:fixed; left:50%; bottom:26px; transform:translate(-50%, 20px); z-index:10001;
  padding:12px 20px; font-size:13px; border-radius:var(--r); opacity:0; pointer-events:none;
  border:1px solid var(--c-primary); background:var(--c-surface); color:var(--c-text);
  box-shadow:var(--glow-p); transition:.3s; max-width:88vw;
}
.toast.show{ opacity:1; transform:translate(-50%,0); }
.toast.good{ border-color:var(--ok); box-shadow:0 0 14px rgba(82,245,156,.3); }
.toast.bad{ border-color:var(--bad); box-shadow:var(--glow-a); }

/* ---------- footer ---------- */
.footer{ margin-top:60px; border-top:1px solid var(--c-border); box-shadow:0 -1px 0 rgba(241,65,222,.35); }
.footer-in{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:20px 0; flex-wrap:wrap; font-size:12px; color:var(--c-muted); }

/* ---------- 动效降级 ---------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{ animation-duration:.001s !important; transition-duration:.001s !important; }
}

/* ---------- 响应式 ---------- */
@media (max-width: 860px){
  .grade-grid{ grid-template-columns:repeat(2, 1fr); }
  .subject-row{ grid-template-columns:1fr; }
  .stat-row{ grid-template-columns:repeat(2, 1fr); }
  .archive{ flex-direction:column; align-items:stretch; }
  .archive-actions{ flex-direction:row; flex-wrap:wrap; }
}
@media (max-width: 560px){
  body{ font-size:14px; }
  .topbar-in{ flex-direction:column; align-items:flex-start; gap:10px; }
  .nav{ width:100%; overflow-x:auto; }
  .nav-link{ flex:none; }
  .hero{ padding:28px 20px; }
  .grade-grid{ grid-template-columns:1fr; }
  .sec-title{ font-size:18px; flex-wrap:wrap; }
  .qcard{ padding:18px 14px; }
  .fill-wrap{ flex-direction:column; }
  .footer-in{ flex-direction:column; text-align:center; }
}
