/* 课页壳 · goal.css：再练一练样式。归属：题库线，谁的文件谁改、谁提交。源在构建脚本目录 scripts/shell/，build_lesson_pages.py 原样拼进产物 baike/shell/；2026-10-07 从构建脚本的大字符串里原样拆出（只搬不改）。 */
/* ---------- 再练一练（知识目标题库，2026-10-06）：每个小节末尾一块，默认收起；题目按 1/2/3 档摆（4/5 档选做），一次一题。
   全用现有 token，深浅色跟着换；题卡沿用练一练的 .box.-pr / .opts / .cells / .answer / .inline-fb / .expl。 ---------- */
.gb-slot:empty{display:none}
.gb-slot{margin-top:var(--sp-4)}
.card-fold.gb .fold-head .gb-n{margin-left:6px;color:var(--c-ink-3);font-weight:500;font-size:var(--fs-sm)}
.card-fold.gb .fold-body{padding:0 var(--pad-card) var(--pad-card)}
.gb-sec{font-size:var(--fs-sm);color:var(--c-ink-3);margin:0 0 var(--sp-2)}
.gb-bands{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:var(--sp-3)}
.gb-bands button{min-height:34px;padding:0 12px;border-radius:var(--r-pill);border:1px solid var(--c-line);background:var(--c-surface);font-size:var(--fs-sm);color:var(--c-ink-2);display:inline-flex;align-items:center;gap:6px}
.gb-bands button.is-on{border-color:var(--c-accent);background:var(--c-accent-soft);color:var(--c-accent);font-weight:600}
.gb-bands button .o{font-size:var(--fs-xs);color:var(--c-ink-3);font-weight:500}
.gb-bands button.is-on .o{color:var(--c-accent)}
.gb .box.-pr .bk{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gb .box.-pr .bk .n{margin-left:auto;color:var(--c-ink-3);font-size:var(--fs-xs)}
.gb-mark{font-size:var(--fs-xs);color:var(--c-ink-3);border:1px solid var(--c-line);border-radius:var(--r-pill);padding:1px 8px;white-space:nowrap}
.gb-mark.-opt{color:var(--c-accent);border-color:var(--c-accent-soft-2,var(--c-line))}
.gb .stem table{border-collapse:collapse;margin:var(--sp-2) 0;font-size:var(--fs-sm)}
.gb .stem td{border:1px solid var(--c-line);padding:4px 8px}
.gb-part{margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px dashed var(--c-line)}
.gb-part .pl{font-size:var(--fs-sm);font-weight:600;color:var(--c-ink-2);margin-bottom:var(--sp-1)}
.gb .opts{display:grid;gap:var(--sp-2);margin-top:var(--sp-3)}
.gb .opts .opt{min-width:0;min-height:48px}
.gb .opts .opt.is-ok{border-color:var(--c-ok);background:var(--c-ok-soft)}
.gb .opts .opt.is-no{border-color:var(--c-warn-line);background:var(--c-warn-soft)}
.gb .cells{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-3)}
.gb .cells .cell{display:flex;align-items:center;gap:6px}
.gb .cells .cell .lab{font-size:var(--fs-xs);color:var(--c-ink-3)}
.gb .cells .cell .input{width:96px}
.gb-acts{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-4);flex-wrap:wrap}
.gb-acts .gb-nav{margin-left:auto;display:flex;gap:var(--sp-2)}
.gb-fb{margin-top:var(--sp-3)}
.gb-fb .inline-fb{align-items:flex-start}
.gb-ans{margin-top:var(--sp-2);padding:10px 14px;border-radius:var(--r-md);background:var(--c-surface-2);color:var(--c-ink);font-size:var(--fs-sm)}
.gb-ans .k{font-weight:600;color:var(--c-ink-2);margin-right:6px}
.gb .expl{margin-top:var(--sp-2)}
/* 10/19 解析 / 答案里的列表（证明题：参考证明、关键几步、另一种走法、常见错法；全库老题的解析、答案里没有列表，只作用于新题）：
   缩进从浏览器默认 40 收到 1.6 字（手机上一行多两个字）、步骤之间留一点空、列表贴着上面的小标题，下一个小标题前再空开 */
.gb .expl ol,.gb .expl ul,.gb-ans ol,.gb-ans ul{margin:var(--sp-1) 0 0;padding-left:1.6em}
.gb .expl li+li,.gb-ans li+li{margin-top:var(--sp-1)}
.gb .box.-pr .expl ol+p,.gb .box.-pr .expl ul+p{margin-top:var(--sp-4)}   /* 要压过 lesson.css 的 .box.-pr .expl p{margin:0} */
.gb-paper{display:flex;align-items:center;gap:8px;margin-top:var(--sp-3);color:var(--c-ink-2);font-size:var(--fs-sm)}
.gb-dots{display:flex;gap:4px;flex-wrap:wrap;margin:0 0 var(--sp-2)}
.gb-dots i{width:10px;height:10px;border-radius:3px;border:1.5px solid var(--c-line);display:inline-block}
.gb-dots i.is-on{border-color:var(--c-accent)}
.gb-dots i.-ok{background:var(--c-ok);border-color:var(--c-ok)}
.gb-dots i.-no{background:var(--c-warn);border-color:var(--c-warn)}
.gb-dots i.-seen{background:var(--c-line);border-color:var(--c-line)}
.gb .qfig{margin-top:var(--sp-2)}
/* 10/7 自判一对按钮（孩子身份、自己对的题看完答案后）：一行两个等宽不换行；点过 → 两个都灰，点的那个带勾和强调边 */
.gb-sv{display:flex;gap:var(--sp-2);margin-top:var(--sp-3)}
.gb-sv .btn{flex:1 1 0;min-width:0;white-space:nowrap;gap:6px}
.gb-sv .btn:disabled{opacity:.5;cursor:default}
.gb-sv .btn.is-on{border-color:var(--c-accent);background:var(--c-accent-soft);color:var(--c-accent);font-weight:600}
.gb-sv .btn.is-on:disabled{opacity:.8}
.lesson-v4[data-fit="tall"].is-tighter .card-fold.gb{display:block}
/* 10/19 题图新路（证明题配图，.svg 内联）：题干下居中大图，宽随卡（最宽 320、手机上最窄 220），线和字跟题干字色（深色模式自动变浅）；点图开放大层 */
.gb-fig{margin:var(--sp-3) auto 0;max-width:320px;color:inherit}
.gb-fig .gb-fig-b{display:block;width:100%;padding:0;border-radius:var(--r-md);cursor:zoom-in}
.gb-fig .gb-fig-in{display:block}
.gb-fig svg,.gb-fig img,.gb-fig .gb-fig-ph{display:block;width:100%;max-width:320px;min-width:220px;height:auto;margin:0 auto}
.gb-fig svg,.gb-zoom svg{overflow:visible;clip-path:inset(-6px)}   /* 点名的字框贴边时会出 viewBox 一点（量过 ≤1 像素）：放宽 6 像素不裁；出图万一画到更远，照样裁掉、不盖住题干和选项 */
.gb-fig .gb-fig-ph{border-radius:var(--r-md);background:var(--c-surface-2)}
.gb-fig .gb-fig-miss{display:block;padding:var(--sp-4) var(--sp-3);border:1px dashed var(--c-line);border-radius:var(--r-md);color:var(--c-ink-3);font-size:var(--fs-sm);text-align:center;cursor:default}
/* 退路图片（取不到 / 清洗不过）里线是黑的：垫白底（同 lesson.css 教材图 .figrow img、.ov-stage img），深色模式也看得清 */
.gb-fig img,.gb-zoom img{background:#fff;border-radius:var(--r-sm);padding:4px}
.gb-zoom{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:var(--sp-3);background:var(--c-scrim);cursor:zoom-out}
.gb-zoom[hidden]{display:none}
.gb-zoom .gb-zoom-box{display:flex;flex-direction:column;width:min(760px,100%);max-height:100%;padding:var(--sp-2) var(--sp-3) var(--sp-3);border-radius:var(--r-lg);background:var(--c-surface);color:var(--c-ink);box-shadow:var(--sh-2)}
.gb-zoom .gb-zoom-top{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);font-size:var(--fs-sm);color:var(--c-ink-3)}
.gb-zoom .gb-zoom-tip{flex:1;min-width:0}
.gb-zoom .gb-zoom-x{min-height:40px;padding:0 var(--sp-4);border-radius:var(--r-md);background:var(--c-surface-2);color:var(--c-ink);font-weight:600}
.gb-zoom .gb-zoom-st{display:flex;justify-content:center;min-height:0}
.gb-zoom .gb-zoom-st>.gb-fig-in{display:block;width:100%}
.gb-zoom svg,.gb-zoom img{display:block;width:100%;height:auto;max-height:calc(100vh - 120px);max-height:calc(100dvh - 120px)}
.gb-zoom img{object-fit:contain}   /* 退路图片被 max-height 卡住时等比缩，不压扁（svg 自带等比） */
