/* ---- Anim player (shared across chapters) ---- */
.anim{margin:18px 0 0;border:1px solid var(--line);border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow);overflow:hidden}
.anim .a-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;padding:14px 18px 0}
.anim .a-title{font-family:var(--serif);font-size:19px;font-weight:600}
.anim .a-kicker{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink);font-weight:600}
.anim .a-stage{padding:6px 10px 0}
.anim svg{display:block;width:100%;height:auto;max-height:440px}
.anim .a-cap{padding:10px 18px 0;min-height:104px}
.anim .a-cap .a-step{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.06em}
.anim .a-cap .a-lbl{font-family:var(--serif);font-size:18px;font-weight:600;margin-top:2px}
.anim .a-cap p{font-size:14.5px;color:var(--muted);margin-top:4px;max-width:68ch}
.anim .a-ctrl{display:flex;align-items:center;gap:8px;padding:12px 18px 16px;flex-wrap:wrap}
.anim .a-ctrl button{font-family:var(--mono);font-size:13px;font-weight:600;min-width:40px;height:36px;padding:0 12px;border-radius:9px;border:1px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer}
.anim .a-ctrl button:hover{border-color:var(--accent);color:var(--accent-ink)}
.anim .a-ctrl button.a-play{background:var(--accent);border-color:var(--accent);color:#fff;min-width:96px}
.anim .a-ctrl input[type=range]{flex:1 1 140px;accent-color:var(--accent);min-width:120px}
.anim .a-dots{display:flex;gap:5px;padding:0 18px}
.anim .a-dots button{width:22px;height:6px;border-radius:3px;border:0;padding:0;background:var(--line);cursor:pointer}
.anim .a-dots button.on{background:var(--accent)}
.anim .a-speed{font-family:var(--mono);font-size:11px;color:var(--muted)}
/* theme-aware strokes/fills usable inside animation SVGs */
.anim .ink{fill:var(--ink)} .anim .s-ink{stroke:var(--ink)}
.anim .muted{fill:var(--muted)} .anim .s-muted{stroke:var(--muted)}
.anim .s-line{stroke:var(--line)} .anim .paper{fill:var(--paper)} .anim .paper2{fill:var(--paper-2)}
.anim .acc{fill:var(--accent)} .anim .s-acc{stroke:var(--accent)}
.anim text{font-family:var(--mono);font-size:12px}
.anim text:not([fill]){fill:var(--muted)}
.anim text.lbl{font-family:var(--sans);font-size:13px;font-weight:600}
.anim text.lbl:not([fill]){fill:var(--ink)}
.anim .cell{fill:var(--accent-weak);stroke:var(--accent);stroke-width:2}
