/* =========================================================
   learn-theme.css —— 所有年级 / 学科页面共用
   ========================================================= */
* { box-sizing: border-box; margin: 0; padding: 0; }
:root{
  --bg:#eef2f7; --card:#fff; --ink:#1e293b; --muted:#546074; --line:#e2e8f0;
  --brand:#2563eb; --brand-soft:#eff6ff; --ok:#16a34a; --ok-soft:#f0fdf4;
  --bad:#dc2626; --bad-soft:#fef2f2; --warn:#d97706; --warn-soft:#fffbeb;
  --shadow:0 1px 2px rgba(15,23,42,.06),0 8px 24px -12px rgba(15,23,42,.18);
}
body{
  font-family:"Segoe UI","Microsoft YaHei",system-ui,-apple-system,"PingFang SC",sans-serif;
  background:radial-gradient(1200px 500px at 10% -10%,#dbeafe 0,transparent 60%),
             radial-gradient(900px 400px at 100% 0,#e0e7ff 0,transparent 55%),var(--bg);
  color:var(--ink); line-height:1.6; -webkit-font-smoothing:antialiased;
}
.wrap{max-width:1240px;margin:0 auto;padding:18px 16px 46px;}

/* ---------- 顶栏 ---------- */
header.top{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  background:linear-gradient(120deg,#1d4ed8,#2563eb 45%,#3b82f6);
  color:#fff;border-radius:18px;padding:16px 20px;box-shadow:var(--shadow);
}
header.top h1{font-size:1.22rem;letter-spacing:.5px;display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
header.top .sub{font-size:.8rem;opacity:.87;}
.top-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;}
.btn{
  border:1px solid transparent;background:#fff;color:var(--ink);cursor:pointer;font:inherit;
  font-size:.85rem;font-weight:600;padding:8px 14px;border-radius:10px;transition:.16s;white-space:nowrap;
}
.btn:hover{transform:translateY(-1px);box-shadow:0 4px 14px -6px rgba(15,23,42,.4);}
.btn:active{transform:translateY(0);}
.btn.ghost{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.45);}
.btn.ghost:hover{background:rgba(255,255,255,.26);}
.btn.primary{background:var(--brand);color:#fff;}
.btn.soft{background:#f1f5f9;color:#334155;}
.btn.warn{background:#fff7ed;color:#b45309;border-color:#fed7aa;}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none;}
.btn.link{background:transparent;color:var(--brand);padding:6px 8px;font-size:.8rem;}
.btn.link:hover{background:var(--brand-soft);box-shadow:none;transform:none;}

/* ---------- 布局 ---------- */
.layout{display:grid;grid-template-columns:252px minmax(0,1fr) 268px;gap:16px;margin-top:16px;align-items:start;}

/* ---------- 学习工具带（学科页） ----------
   把 7 个日常功能做成方块：有图标、鼠标悬停能看到它到底干什么。
   它们原来挤在深色顶栏里当一排等宽文字按钮，孩子看不出哪个是主功能。
   破坏性操作（清除本机数据）单独降到右下角小字，与日常功能分开层级。 */
.toolbelt{margin-top:14px;}
/* 列数自适应：语言类学科会多出「听写跟读」一格（8 格），
   数学/物理等没有词表的学科是 7 格。写死列数都会出现「剩下一个孤格」，
   所以用 auto-fit——排得下就一行，排不下自动折行，两边都整齐。 */
.tbgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:9px;}
.btn.tb{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  min-height:74px;padding:9px 6px;border-radius:14px;font-size:.8rem;font-weight:600;line-height:1.25;
  text-align:center;white-space:normal;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);
}
.btn.tb:hover{border-color:var(--brand);color:var(--brand);}
.btn.tb.on,.btn.tb.primary{background:var(--brand);border-color:var(--brand);color:#fff;}
.btn.tb:disabled{opacity:.45;}
/* 图标只能用伪元素挂：按钮里的文字会被引擎整段重写（「讲解」↔「返回练习」），
   textContent 赋值会清掉所有子元素，伪元素不受影响。 */
.btn.tb::before{font-size:1.3rem;line-height:1;}
#btnLesson::before{content:"📘";}
#btnPaper::before{content:"📝";}
#btnExam::before{content:"⏱";}
#btnDoc::before{content:"📋";}
#btnReport::before{content:"📊";}
#btnWrongBook::before{content:"🎯";}
#btnReview::before{content:"🔁";}
/* 只在有教材词表的学科出现（由 learn/build.js 决定是否输出这个按钮） */
#btnDictation::before{content:"🎧";}
.tbfoot{display:flex;justify-content:flex-end;margin-top:6px;}
.btn.dangerlink{
  background:transparent;border:1px solid transparent;color:#b91c1c;
  font-size:.76rem;font-weight:600;padding:6px 10px;min-height:44px;
  text-decoration:underline;text-underline-offset:3px;
}
.btn.dangerlink:hover{background:var(--bad-soft);box-shadow:none;transform:none;}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);}
.card h2{font-size:.94rem;padding:13px 16px 10px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.card h2 .dot{width:7px;height:7px;border-radius:99px;background:var(--brand);flex:none;}
.card h2 small{font-weight:400;color:var(--muted);font-size:.76rem;}
.card .body{padding:12px 14px;}

/* ---------- 知识点列表 ---------- */
.kp-tools{display:flex;gap:6px;margin-bottom:10px;}
.kp-tools .btn{flex:1;font-size:.76rem;padding:6px 8px;}
.kp-row{
  display:block;width:100%;text-align:left;border:1px solid var(--line);background:#fff;cursor:pointer;
  font:inherit;font-size:.84rem;padding:9px 11px;border-radius:11px;margin-bottom:7px;transition:.16s;color:var(--ink);
}
.kp-row:last-child{margin-bottom:0;}
.kp-row:hover{border-color:#bfdbfe;background:var(--brand-soft);}
.kp-row.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:inset 3px 0 0 var(--brand);}
.kp-row .kp-name{display:block;font-weight:600;line-height:1.5;}
.kp-row .kp-meta{display:flex;justify-content:space-between;align-items:center;margin-top:3px;font-size:.74rem;color:var(--muted);}
.kp-row .kp-meta i{font-style:normal;font-weight:700;}
.kp-row .kp-meta small{color:var(--muted);}
.kp-row .kp-bar{display:block;height:4px;background:#eef2f7;border-radius:99px;overflow:hidden;margin-top:5px;}
.kp-row .kp-bar i{display:block;height:100%;background:linear-gradient(90deg,#60a5fa,#22c55e);width:0;transition:width .3s;}
.due{font-style:normal;font-size:.68rem;font-weight:700;color:#b45309;background:var(--warn-soft);
  border:1px solid #fde68a;border-radius:99px;padding:0 6px;margin-left:4px;}

/* 掌握度配色 */
.lv-master{color:#15803d;} .lv-good{color:#2563eb;} .lv-ok{color:#0f766e;}
.lv-low{color:#b45309;} .lv-none{color:#94a3b8;}

/* ---------- 主区 ---------- */
.qbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:11px 16px;border-bottom:1px solid var(--line);}
.chip{font-size:.74rem;font-weight:700;padding:3px 10px;border-radius:99px;background:var(--brand-soft);color:var(--brand);border:1px solid #bfdbfe;}
.chip.gray{background:#f1f5f9;color:#475569;border-color:#e2e8f0;}
.chip.lv-master{background:var(--ok-soft);color:#15803d;border-color:#bbf7d0;}
.chip.lv-good{background:var(--brand-soft);color:#1d4ed8;border-color:#bfdbfe;}
.chip.lv-ok{background:#f0fdfa;color:#0f766e;border-color:#99f6e4;}
.chip.lv-low{background:var(--warn-soft);color:#b45309;border-color:#fde68a;}
.chip.lv-none{background:#f8fafc;color:#94a3b8;border-color:#e2e8f0;}
.progress{flex:1;min-width:110px;height:8px;background:#eef2f7;border-radius:99px;overflow:hidden;}
.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,#3b82f6,#22c55e);transition:width .3s;}

.question{padding:22px 20px 4px;}
.qtext{font-size:1.1rem;line-height:2.15;}
.qtext .choose-line{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px;}
.qtext .choose-line button{
  border:1.5px solid var(--line);background:#fff;border-radius:10px;padding:7px 14px;font:inherit;
  font-size:.92rem;cursor:pointer;transition:.15s;color:var(--ink);text-align:left;
}
.qtext .choose-line button:hover{border-color:var(--brand);background:var(--brand-soft);}
.qtext .choose-line button.on{border-color:var(--brand);background:var(--brand);color:#fff;font-weight:700;}

.frac{display:inline-flex;flex-direction:column;vertical-align:middle;text-align:center;margin:0 3px;position:relative;top:-.08em;line-height:1.18;}
.frac .num{padding:0 4px;font-size:.92em;}
.frac .den{padding:0 4px;border-top:1.6px solid currentColor;font-size:.92em;}
.mix{display:inline-flex;align-items:center;vertical-align:middle;}
.mix .int{padding-right:1px;}
.paren{color:#475569;}
sup{font-size:.72em;vertical-align:super;}

/* ---------- 作答区 ---------- */
.answer-zone{padding:12px 20px 0;}
.answer-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.ansbox{
  display:flex;align-items:center;gap:8px;background:#f8fafc;border:2px dashed #cbd5e1;
  border-radius:14px;padding:8px 14px;transition:.18s;
}
.ansbox:focus-within{border-color:var(--brand);background:#fff;box-shadow:0 0 0 4px rgba(37,99,235,.1);}
.ansbox.ok{border-color:var(--ok);border-style:solid;background:var(--ok-soft);}
.ansbox.bad{border-color:var(--bad);border-style:solid;background:var(--bad-soft);}
.fld{border:none;background:transparent;font:inherit;font-size:1.12rem;font-weight:600;color:var(--ink);text-align:center;outline:none;}
.fld::placeholder{color:#cbd5e1;font-weight:400;font-size:.88rem;}
.fld-int{width:3.4em;} .fld-num{width:4.4em;padding-bottom:1px;} .fld-den{width:4.4em;padding-top:1px;border-top:2px solid #94a3b8;}
.fld-text{width:min(340px,60vw);text-align:left;font-size:1rem;padding:2px 4px;}
.frac-input{display:flex;flex-direction:column;align-items:center;}
.sign-hint{font-size:.74rem;color:var(--muted);max-width:230px;line-height:1.7;}
.hint{margin-top:11px;font-size:.78rem;color:var(--muted);background:#f8fafc;border:1px dashed var(--line);border-radius:10px;padding:8px 12px;line-height:1.85;}
kbd{background:#f1f5f9;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:1px 5px;font-size:.74rem;font-family:inherit;color:#475569;}

/* ---------- 反馈 ---------- */
.feedback{margin:14px 20px 0;border-radius:13px;padding:13px 15px;display:none;border:1px solid;}
.feedback.show{display:block;animation:pop .22s ease-out;}
@keyframes pop{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.feedback.ok{background:var(--ok-soft);border-color:#bbf7d0;}
.feedback.bad{background:var(--bad-soft);border-color:#fecaca;}
.feedback .head{font-weight:800;font-size:.96rem;}
.feedback.ok .head{color:#15803d;} .feedback.bad .head{color:#b91c1c;}
.feedback .steps{margin-top:8px;font-size:.93rem;line-height:2.2;color:#334155;}
.feedback .ln{display:block;}
.feedback .step-title{font-weight:700;color:#0f172a;}
.feedback .ans-line{margin-top:6px;}
.feedback .tip{margin-top:8px;font-size:.84rem;color:#a16207;background:#fffbeb;border:1px solid #fde68a;border-radius:9px;padding:7px 11px;}
.feedback .tip:empty{display:none;}

.actions{padding:14px 20px 18px;display:flex;gap:9px;flex-wrap:wrap;}

/* ---------- 右侧统计 ---------- */
.stats{display:grid;grid-template-columns:1fr 1fr;gap:9px;}
.stat{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:9px 11px;}
.stat b{display:block;font-size:1.2rem;line-height:1.35;}
.stat span{font-size:.73rem;color:var(--muted);}
.tips{font-size:.8rem;color:#334155;line-height:2;}

/* ---------- 知识点速查文档 ---------- */
.doc{padding:16px 20px 24px;font-size:.91rem;}
.doc h3{font-size:1rem;margin:20px 0 8px;padding-left:10px;border-left:4px solid var(--brand);}
.doc h3:first-child{margin-top:2px;}
.doc h4{font-size:.93rem;margin:14px 0 6px;color:#1e3a8a;}
.doc p{margin:6px 0;color:#334155;}
.doc ul,.doc ol{margin:6px 0 6px 22px;color:#334155;}
.doc li{margin:4px 0;}
.doc .key{background:var(--brand-soft);border:1px solid #bfdbfe;border-radius:11px;padding:10px 13px;margin:10px 0;color:#1e3a8a;line-height:2.05;}
.doc .key b{color:var(--brand);}
.doc .warnbox{background:var(--warn-soft);border:1px solid #fde68a;border-radius:11px;padding:10px 13px;margin:10px 0;color:#92400e;line-height:2.05;}
.doc code{background:#f1f5f9;border-radius:5px;padding:1px 6px;font-size:.88em;}
.doc table{border-collapse:collapse;width:100%;margin:10px 0;font-size:.87rem;}
.doc th,.doc td{border:1px solid var(--line);padding:6px 9px;text-align:left;vertical-align:top;}
.doc th{background:#f8fafc;font-weight:700;}

/* ---------- 错题本 / 视图 ---------- */
.view{display:none;} .view.on{display:block;}
.wrong-list{display:flex;flex-direction:column;gap:8px;max-height:70vh;overflow:auto;}
.wrong-item{border:1px solid var(--line);border-radius:11px;padding:9px 11px;font-size:.85rem;background:#fff;}
.wrong-item .q{color:#334155;line-height:2;}
.wrong-item .bottom{display:flex;justify-content:space-between;align-items:center;margin-top:6px;font-size:.75rem;color:var(--muted);gap:8px;flex-wrap:wrap;}
.wrong-item .bottom b{color:var(--ok);}
.wrong-item .pa-step{color:#334155;font-size:.8rem;line-height:1.85;}
.wrong-item .btn{font-size:.76rem;padding:4px 11px;}
.empty{font-size:.82rem;color:var(--muted);text-align:center;padding:16px 0;}

/* ---------- 章节树（章 → 小节 → 知识点） ---------- */
#kpList.collapsed .kp-row, #kpList.collapsed .sec-row { display:none; }
.ch-row{display:grid;grid-template-columns:1fr auto;gap:2px 8px;align-items:center;cursor:pointer;
  margin:8px 0 4px;padding:7px 9px;border-radius:11px;background:#f1f5f9;border:1px solid var(--line);}
.ch-row:hover{background:#e8eefb;border-color:#bfdbfe;}
.ch-row.on{background:var(--brand-soft);border-color:#93c5fd;}
.ch-row .ch-name{font-weight:700;font-size:.86rem;color:#1e3a8a;}
.ch-row .ch-meta{grid-column:1;font-size:.72rem;color:var(--muted);}
.ch-row .ch-meta em{color:var(--bad);font-style:normal;font-weight:700;}
.ch-row .kp-bar{grid-column:1 / -1;}
.ch-row .ch-acts{grid-column:2;grid-row:1 / span 2;display:flex;gap:5px;align-items:center;}
.mini{font:inherit;font-size:.7rem;font-weight:700;padding:3px 8px;border-radius:8px;cursor:pointer;
  border:1px solid #bfdbfe;background:#fff;color:var(--brand);}
.mini:hover{background:var(--brand-soft);}
.sec-row{display:flex;justify-content:space-between;align-items:center;gap:8px;cursor:pointer;
  margin:5px 0 3px 8px;padding:4px 8px;border-left:2px solid #cbd5e1;font-size:.8rem;color:#334155;}
.sec-row:hover{color:var(--brand);border-left-color:var(--brand);}
.sec-row.on{color:var(--brand);font-weight:700;border-left-color:var(--brand);background:var(--brand-soft);border-radius:0 8px 8px 0;}
.sec-row .sec-name{font-weight:600;}
.sec-row .sec-meta{font-size:.7rem;color:var(--muted);}
.sec-row.plain{border-left-color:#fbbf24;color:#92400e;}
#kpList .kp-row{margin-left:16px;}

/* ---------- 难度档 ---------- */
.tierbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 22px 0;}
.tierbar .tier-label{font-size:.74rem;color:var(--muted);font-weight:700;}
.tier-btn{font:inherit;font-size:.74rem;font-weight:700;padding:3px 10px;border-radius:99px;cursor:pointer;
  border:1px solid var(--line);background:#fff;color:var(--muted);}
.tier-btn:hover{border-color:#bfdbfe;color:var(--brand);}
.tier-btn.on{background:var(--brand);border-color:var(--brand);color:#fff;}
.tier-btn.tier-off{opacity:.5;cursor:not-allowed;}

.kp-where{padding:6px 22px 0;font-size:.74rem;color:var(--muted);}
.kp-where:empty{display:none;}

/* ---------- 阶梯提示 ---------- */
.hintbox{display:none;margin:12px 22px 0;padding:10px 13px;border-radius:12px;background:#fffbeb;
  border:1px solid #fde68a;color:#92400e;font-size:.84rem;line-height:2;}
.hintbox .hint-title{display:block;font-weight:700;}
.hintbox .hint-more{display:block;font-size:.74rem;color:#b45309;}

/* ---------- 常见错因（答错时诊断） ---------- */
.feedback .pitfall{margin-top:9px;padding:9px 11px;border-radius:10px;background:#fff7ed;
  border:1px solid #fed7aa;color:#9a3412;font-size:.83rem;line-height:1.95;display:block;}
.feedback .pitfall:empty{display:none;}
.feedback .pitfall .pit-title{display:block;font-weight:700;}

/* ---------- 讲解 + 例题 ---------- */
.lesson-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:14px 22px 0;}
.lesson-where{font-size:.76rem;color:var(--muted);}
.lesson{padding:10px 22px 4px;}
.lesson .ls-p{margin:8px 0;font-size:.92rem;line-height:2.05;color:#334155;}
.lesson-tip{margin:6px 0 10px;padding:9px 12px;border-radius:11px;background:#eff6ff;
  border:1px solid #bfdbfe;color:#1e3a8a;font-size:.83rem;line-height:1.95;}
.lesson .pit-list{margin-top:12px;padding:10px 13px;border-radius:11px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;}
.lesson .pit-list b{display:block;margin-bottom:4px;}
.lesson .pit-list ul{margin:0 0 0 20px;}
.lesson .pit-list li{margin:3px 0;font-size:.85rem;line-height:1.9;}
.examples{padding:4px 22px 0;}
.ex-title{font-size:.92rem;margin:14px 0 8px;color:#1e3a8a;}
.ex-card{border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-bottom:10px;background:#fbfdff;}
.ex-q{font-size:.9rem;line-height:1.95;}
.ex-details{margin-top:8px;}
.ex-details summary{cursor:pointer;font-size:.8rem;font-weight:700;color:var(--brand);}
.ex-steps{margin:8px 0 0 20px;font-size:.85rem;line-height:1.95;color:#334155;}
.ex-ans{margin-top:8px;font-size:.85rem;color:var(--ok);}

/* ---------- 学习报告 ---------- */
.rep-top{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;}
.rep-top .stat{background:#f8fafc;border:1px solid var(--line);border-radius:11px;padding:8px 10px;text-align:center;}
.rep-top .stat b{display:block;font-size:1.15rem;color:var(--brand);}
.rep-top .stat span{font-size:.72rem;color:var(--muted);}
.rep-h{font-size:.92rem;margin:16px 0 8px;color:#1e3a8a;}
.rep-list{display:flex;flex-direction:column;gap:7px;}
.rep-row{display:grid;grid-template-columns:1.2fr 1.4fr auto;gap:10px;align-items:center;
  padding:7px 10px;border:1px solid var(--line);border-radius:11px;background:#fff;}
.rep-row .rep-name{font-size:.85rem;font-weight:600;color:#334155;}
.rep-row .rep-bar{height:8px;background:#eef2f7;border-radius:99px;overflow:hidden;}
.rep-row .rep-bar i{display:block;height:100%;background:linear-gradient(90deg,#60a5fa,#22c55e);}
.rep-row .rep-num{font-size:.74rem;color:var(--muted);white-space:nowrap;}
.rep-row .rep-num .due,.rep-advice .due{color:var(--bad);font-style:normal;font-weight:700;}
.rep-advice{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border-radius:11px;
  background:#fffbeb;border:1px solid #fde68a;color:#92400e;font-size:.83rem;}
.rep-advice .rep-where{color:#b45309;font-size:.76rem;}
.rep-advice-buttons{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}

/* ---------- 「继续学习」指引 ---------- */
.cont-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 8px;padding:8px 10px;
  border-radius:12px;background:linear-gradient(120deg,#eff6ff,#ecfdf5);border:1px solid #bfdbfe;cursor:pointer;}
.cont-row:hover{border-color:#93c5fd;}
.cont-row .cont-tag{font-size:.68rem;font-weight:700;color:#fff;background:var(--brand);border-radius:99px;padding:1px 8px;}
.cont-row b{font-size:.85rem;color:#1e3a8a;}
.cont-row small{font-size:.72rem;color:var(--muted);width:100%;}
.cont-row .cont-go{margin-left:auto;}

/* ---------- 错题本按章分组 ---------- */
.wb-ch{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:10px 0 6px;padding:7px 10px;
  border-radius:11px;background:#f1f5f9;border:1px solid var(--line);}
.wb-ch .wb-ch-name{font-weight:700;font-size:.85rem;color:#1e3a8a;}
.wb-ch .wb-ch-num{font-size:.74rem;color:var(--muted);}
.wb-ch .wb-retry{margin-left:auto;}

/* ---------- 练习卷（可打印 / 另存为 PDF） ---------- */
.paper-tools{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:12px;}
.paper-tools label{font-size:.82rem;color:var(--muted);}
.paper-tools select{font:inherit;font-size:.82rem;padding:5px 8px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);}
.paper-head{border-bottom:2px solid var(--ink);padding-bottom:9px;margin-bottom:14px;}
.paper-head h2{font-size:1.08rem;}
.paper-head .meta{font-size:.8rem;color:var(--muted);margin-top:5px;letter-spacing:.3px;}
.paper-qs{margin:0 0 0 22px;}
.paper-qs>li{margin:0 0 16px;padding-left:4px;break-inside:avoid;}
.paper-qs .pq-kp{font-size:.72rem;color:var(--muted);font-weight:600;}
.paper-qs .pq-q{font-size:.95rem;line-height:1.95;}
.paper-qs .pq-space{height:34px;border-bottom:1px dashed #cbd5e1;margin-top:6px;}
.paper-answers{page-break-before:always;border-top:2px solid var(--ink);padding-top:12px;margin-top:22px;}
.paper-answers h3{font-size:.98rem;margin-bottom:9px;}
.paper-answers ol{margin-left:22px;}
.paper-answers li{margin-bottom:10px;font-size:.85rem;line-height:1.9;break-inside:avoid;}
.paper-answers .pa-ans{color:var(--ok);font-weight:700;}
.paper-answers .pa-step{color:#334155;}

@media print{
  body{background:#fff;}
  header.top,.side-left,.side-right,.toast,.paper-tools,.back-link,.toolbelt{display:none !important;}
  .wrap{max-width:none;padding:0;margin:0;}
  .layout{display:block;}
  .view{display:none !important;} .view.on{display:block !important;}
  .card{border:none;box-shadow:none;border-radius:0;padding:0;background:#fff;}
  .paper-qs>li{margin-bottom:20px;}
  .paper-qs .pq-space{height:46px;}
  /* 打印默认**不含答案与解析**：卷子先在纸上做一遍，再另打答案页 */
  .paper-answers,.no-print{display:none !important;}
  body.print-answers .paper-answers{display:block !important;}
}

.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);background:#0f172a;color:#fff;
  padding:10px 20px;border-radius:99px;font-size:.85rem;opacity:0;pointer-events:none;transition:.25s;z-index:99;max-width:88vw;text-align:center;}
.toast.on{opacity:1;transform:translate(-50%,0);}

/* ---------- 返回入口 ---------- */
.back-link{display:inline-flex;align-items:center;gap:5px;color:#fff;text-decoration:none;font-size:.8rem;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.4);padding:5px 11px;border-radius:99px;}
.back-link:hover{background:rgba(255,255,255,.26);}

@media (max-width:1040px){
  .layout{grid-template-columns:1fr;}
  /* 窄屏把「题目」提到最前面。原来是目录排第一，孩子每开一页都得先划过
     整棵课程目录才看得到题；目录往后挪，要换章节往下滚一屏就到。 */
  .main{order:1}.side-left{order:2}.side-right{order:3}
  .tbgrid{grid-template-columns:repeat(4,minmax(0,1fr));}
  .stats{grid-template-columns:repeat(4,1fr);}
}
@media (max-width:640px){
  .wrap{padding:10px 9px 40px;}
  header.top{padding:13px 15px;} header.top h1{font-size:1.05rem;}
  .top-actions{width:100%;margin-left:0;}
  /* 工具带在手机上横滑一行：7 个方块排成网格要占掉半屏，孩子进来第一眼就看不到题；
     横滑只占一行高度，同时「露出半个方块」本身就提示了后面还有功能。 */
  .tbgrid{display:flex;overflow-x:auto;gap:8px;padding:2px 1px 8px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;}
  .btn.tb{flex:0 0 92px;min-height:66px;scroll-snap-align:start;}
  .stats{grid-template-columns:1fr 1fr;}
  .question{padding:16px 13px 2px;}
  .answer-zone,.actions{padding-left:13px;padding-right:13px;}
  .feedback{margin:13px 13px 0;}
  .qtext{font-size:1.02rem;} .sign-hint{max-width:none;}
}

/* ---------- 面包屑（首页 › 年级 › 学科） ---------- */
.crumb{margin-top:6px;font-size:.78rem;color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.crumb a{color:var(--brand);text-decoration:none;font-weight:600;}
.crumb a:hover{text-decoration:underline;}
.crumb b{color:var(--ink);}
.crumb .sep{opacity:.55;}
.scope-note{font-size:.78rem;color:var(--muted);}

/* ---------- 模拟考试（网页答题模式：计时 + 交卷判分 + 逐题讲评） ---------- */
.exambar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px;padding:10px 12px;
  border:1px solid #bfdbfe;background:var(--brand-soft);border-radius:12px;}
.exambar-tip{font-size:.78rem;color:var(--muted);}
.exambar-btns{margin-left:auto;display:flex;gap:8px;}
.ex-score{margin:6px 0 16px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#fff;}
.ex-score b{font-size:2rem;color:var(--brand);line-height:1.1;}
.ex-score span{display:block;font-size:.83rem;color:var(--muted);margin-top:6px;}
.exam-review{padding-left:0;list-style:none;margin:0;}
.exam-review>li{padding:12px 12px 14px;border-top:1px dashed var(--line);}
.exam-review>li.ex-ok{background:#f6fffb;}
.exam-review>li.ex-bad{background:#fff8f8;}
.exam-review .pq-kp{margin-bottom:4px;}
.ex-mark{font-weight:800;font-size:1rem;}
.ex-mark.ok{color:#16a34a;}
.ex-mark.bad{color:#dc2626;}
.ex-q{margin:6px 0 8px;line-height:1.9;}
.ex-line{font-size:.85rem;color:#334155;background:#f8fafc;border:1px solid var(--line);
  border-radius:10px;padding:7px 10px;display:inline-block;margin-bottom:6px;}
.muted{color:var(--muted);}

/* ---------- 交互与无障碍：按官方规范调整（触控尺寸 / 对比度 / 行距） ----------
   依据：Material 触控目标 48×48dp 且间距 ≥8dp、Apple 44×44pt、WCAG 2.2 SC 2.5.8 底线
   24×24 CSS px；NN/g 实测 6–10 岁儿童宜用 ≥2cm 目标；WCAG SC 1.4.3 正文对比度 ≥4.5:1；
   SC 1.4.12 行高 ≥1.5×；对错必须有"颜色 + 图标 + 文字"三通道（我们已在反馈标题里用 ✔/✖ + 文字）。
   这是"低成本高收益"的一轮：不改变任何判分逻辑，只把可点区域和可读性做到规范下限以上。 */
.btn{min-height:44px;min-width:44px;padding:10px 16px;}
.mini{min-height:32px;padding:5px 10px;}
.top-actions{gap:8px;}
.actions{gap:10px;flex-wrap:wrap;}
.actions .btn{min-height:48px;padding:11px 20px;}
.choose-line button{min-height:48px;padding:12px 16px;margin:5px 0;width:100%;text-align:left;}
.kp-row,.ch-row,.sec-row{min-height:44px;}
.tierbar .btn,.paper-tools .btn,.kp-tools .btn{min-height:40px;}
.pt-actions .btn,.pt-actions select{min-height:44px;}
.hero-stats b,.stat b{line-height:1.35;}
.pt-cards span,.stat span,.card .meta,.card .sub,.pt-sub,.crumb{line-height:1.6;}
@media (max-width:640px){
  /* 手机 / 平板：儿童手指目标再放大（NN/g：幼儿 2cm≈76px，这里取折中值） */
  .choose-line button{min-height:56px;}
  .actions .btn{min-height:52px;font-size:1rem;}
  .btn{min-height:46px;}
}

/* ---------- 「先自己想，再看答案」（答案与解析默认收起来） ---------- */
.fb-hintline{display:block;margin-top:5px;font-size:.82rem;font-weight:600;color:#b45309;}
.fb-details,.wb-details,.ex-details{margin-top:8px;}
.fb-details>summary,.wb-details>summary,.ex-details>summary{cursor:pointer;font-size:.85rem;font-weight:700;
  color:var(--brand);background:var(--brand-soft);border:1px solid #bfdbfe;border-radius:10px;
  padding:7px 12px;display:inline-block;list-style:none;}
.fb-details>summary::-webkit-details-marker,.wb-details>summary::-webkit-details-marker,.ex-details>summary::-webkit-details-marker{display:none;}
.fb-details>summary::before,.wb-details>summary::before,.ex-details>summary::before{content:"▸ ";}
.fb-details[open]>summary::before,.wb-details[open]>summary::before,.ex-details[open]>summary::before{content:"▾ ";}
.fb-details[open]>summary,.wb-details[open]>summary,.ex-details[open]>summary{border-bottom-left-radius:0;border-bottom-right-radius:0;}
.self-note,.ex-self{display:block;margin-top:9px;font-size:.8rem;color:var(--muted);border-left:3px solid var(--line);padding-left:9px;}
.ex-self{margin-top:8px;}
.ex-details[open]{border:1px solid var(--line);border-radius:12px;padding:10px 12px;}
.ex-details[open]>summary{margin-bottom:8px;}

/* 三步递进的第二层（答案在前一层里面）与对比示例 */
.fb-inner{margin-top:9px;}
.fb-details[open] .fb-details[open]{border-color:#fde68a;background:#fffbeb;}
.cmp{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:9px 0 4px;padding:9px 12px;
  border:1px dashed var(--line);border-radius:12px;background:#f8fafc;font-size:.86rem;}
.cmp .cmp-mine b{color:#dc2626;}
.cmp .cmp-right b{color:#16a34a;}
.cmp .cmp-arrow{color:var(--muted);font-weight:700;}

/* 错题追根溯源：该题依赖的前置知识点 */
.wb-pre{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:9px;font-size:.8rem;color:var(--muted);}
.wb-pre .wb-pre-btn{background:#fff;border:1px solid #bfdbfe;color:var(--brand);border-radius:999px;
  padding:4px 11px;font-size:.78rem;font-weight:600;cursor:pointer;}
.wb-pre .wb-pre-btn:hover{background:var(--brand-soft);}

/* ---------- 家长视图（parent-report.html 与首页入口共用） ---------- */
.pt-head{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;align-items:flex-start;}
.pt-head h2{font-size:1.15rem;}
.pt-sub{font-size:.8rem;color:var(--muted);margin-top:4px;line-height:1.8;}
.pt-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.pt-actions select{font:inherit;font-size:.85rem;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;}
.pt-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:10px;margin:18px 0 6px;}
.pt-cards>div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;text-align:center;}
.pt-cards b{display:block;font-size:1.12rem;color:var(--brand);}
.pt-cards span{display:block;font-size:.76rem;color:var(--muted);margin-top:5px;}
.pt-h{font-size:.95rem;margin:22px 0 10px;}
.pt-chart{display:flex;gap:6px;align-items:flex-end;overflow-x:auto;padding:10px 12px;background:#fff;
  border:1px solid var(--line);border-radius:14px;}
.pt-day{flex:1 0 34px;display:flex;flex-direction:column;align-items:center;gap:3px;}
.pt-bars{display:flex;gap:2px;align-items:flex-end;height:48px;}
.pt-bars i{width:8px;border-radius:3px 3px 0 0;display:block;}
.pt-bar-t{background:var(--brand);}
.pt-bar-n{background:#bfdbfe;}
.pt-lbl{font-size:.7rem;color:var(--muted);}
.pt-num{font-size:.66rem;color:var(--muted);}
.pt-subj{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;}
.pt-subj-row{display:flex;align-items:center;gap:10px;margin:6px 0;font-size:.85rem;}
.pt-subj-name{min-width:76px;}
.pt-subj-val{color:var(--muted);font-size:.78rem;min-width:76px;text-align:right;}
.pt-mini{flex:1;height:6px;background:#eef2f7;border-radius:99px;overflow:hidden;min-width:60px;}
.pt-mini i{display:block;height:100%;background:var(--brand);}
.pt-table{width:100%;border-collapse:collapse;font-size:.84rem;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;}
.pt-table th,.pt-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;}
.pt-table th{background:#f8fafc;font-size:.78rem;color:var(--muted);}
.pt-list{margin:0;padding-left:20px;font-size:.86rem;line-height:2.1;}
.pt-mini-note{font-size:.76rem;color:var(--muted);}
.pt-note{margin-top:22px;padding:12px 14px;background:#fffbeb;border:1px solid #fde68a;border-radius:14px;
  font-size:.79rem;color:#92400e;line-height:2;}
.pt-gate{max-width:420px;margin:10px auto;text-align:center;line-height:2;}
.pt-gate input{font:inherit;padding:9px 12px;border:1px solid var(--line);border-radius:10px;width:150px;text-align:center;}
@media print{
  .pt-actions,.back-link,header.top .top-actions{display:none !important;}
  .pt-cards>div,.pt-chart,.pt-subj,.pt-table,.pt-note{border-color:#cbd5e1 !important;}
}
@media (max-width:640px){
  .exambar-btns{margin-left:0;width:100%;}
  .exambar-tip{display:none;}
}
