/* Maths games. Everything is scoped to the game classes below; colours come from the data-c ancestor. */
.mm-row{display:flex;gap:10px;align-items:center}.mm-row.off{display:none}
.mm-input{flex:1;min-width:0;height:52px;padding:0 18px;border-radius:16px;border:2px solid var(--line-2);font:700 26px var(--sans);font-variant-numeric:tabular-nums;text-align:center;background:#fff;color:var(--ink)}
.mm-input:focus{outline:0;border-color:var(--c);box-shadow:0 0 0 4px var(--c-soft)}
.mm-input.bad{animation:shake .4s;border-color:#B3261E;background:#fdeceb}
.mm-row .btn{height:52px}

/* times table race */
.tq-card{display:grid;gap:12px;justify-items:center;padding:20px;border-radius:22px;background:var(--c-soft)}
.tq-q{font:600 clamp(42px,11vw,72px) var(--serif);color:var(--c-ink);font-variant-numeric:tabular-nums;line-height:1.1}
.mm-input.tq-answer{flex:none;width:min(240px,80%)}
.mm-input.ok{border-color:#17753A;background:#e6f6ec}
.tq-bar{width:100%;height:8px;border-radius:99px;background:rgba(0,0,0,.08);overflow:hidden}.tq-bar i{display:block;height:100%;width:0;background:var(--c);transition:width .2s}

/* equation balance */
.eb-eq{font:600 clamp(30px,7vw,50px) var(--serif);text-align:center;color:var(--c-ink);min-height:1.25em}
.eb-scale{position:relative;display:grid;justify-items:center;min-height:210px}
.eb-stand{position:absolute;left:50%;top:14px;bottom:-4px;width:12px;transform:translateX(-50%);background:var(--c-soft);border:2px solid var(--c-ink);border-radius:6px;z-index:0}
.eb-beam{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,6vw,70px);width:min(640px,100%);padding-top:20px;transform-origin:50% 8px}
.eb-beam::before{content:"";position:absolute;left:3%;right:3%;top:6px;height:9px;border-radius:99px;background:var(--c-ink)}
.eb-beam.wob{animation:eb-wob .6s ease-out}
@keyframes eb-wob{0%{transform:rotate(0)}25%{transform:rotate(-3deg)}55%{transform:rotate(2deg)}80%{transform:rotate(-1deg)}100%{transform:rotate(0)}}
.eb-pan{position:relative;display:flex;flex-wrap:wrap;gap:6px;justify-content:center;align-content:flex-start;min-height:130px;padding:14px 10px 20px;background:var(--c-soft);border:3px solid var(--c);border-top:0;border-radius:0 0 90px 90px/0 0 60px 60px}
.eb-pan::before{content:"";position:absolute;left:50%;top:-14px;width:2px;height:14px;background:var(--c-ink)}
.eb-tile{display:grid;place-items:center;min-width:38px;height:38px;padding:0 4px;border-radius:10px;font:800 17px var(--sans);color:#fff}
.eb-x{background:#6446C4}.eb-x.neg{background:#B3261E}
.eb-one{width:26px;min-width:26px;height:26px;padding:0;border-radius:50%;background:#E5A12C;color:#4a3300}.eb-one.neg{background:#B3261E;color:#fff}
.eb-big{background:#E5A12C;color:#4a3300;min-width:64px}.eb-big.neg{background:#B3261E;color:#fff}
.eb-empty{align-self:center;color:var(--ink-2);font:600 24px var(--serif)}
.eb-ctl{display:grid;gap:12px}
.eb-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:center}
.eb-row small{font:800 11px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--c-ink)}
.mm-input.eb-num{flex:none;width:84px;height:44px;font-size:20px}
.eb-msg{margin:0;min-height:1.6em;text-align:center;font-weight:700}.eb-msg.bad{color:#B3261E}.eb-msg.good{color:#17753A}.eb-msg.hint{color:var(--c-ink)}

/* fraction pizza */
.fp-play{position:relative;display:grid;gap:14px;justify-items:center}.fp-play[hidden]{display:none}
.fp-prompt{margin:0;display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center;font:500 clamp(22px,5vw,32px) var(--serif);text-align:center}
.fp-board{display:flex;gap:clamp(10px,4vw,34px);align-items:center;justify-content:center;flex-wrap:wrap}
.fp-one,.fp-choice{display:grid;gap:8px;justify-items:center}
.fp-pizza{width:clamp(130px,30vw,210px);height:auto;overflow:visible}
.fp-slice{cursor:pointer;transition:fill .15s}.fp-slice:hover{fill:#FFE3A8}.fp-slice.on:hover{fill:#C8742A}.fp-slice:focus-visible{outline:3px solid var(--c);outline-offset:2px}
.fp-choice{padding:14px;border-radius:22px;border:2px solid var(--line-2);background:#fff;cursor:pointer;transition:transform .15s,border-color .15s;font-size:24px}.fp-choice:hover{transform:translateY(-3px);border-color:var(--c)}
.fp-vs{font:600 26px var(--serif);color:var(--c-ink)}
.fp-frac{display:inline-grid;justify-items:center;line-height:1.05;font-weight:800;vertical-align:middle}.fp-frac i{font-style:normal;padding:0 6px;border-bottom:3px solid currentColor}.fp-frac b{padding-top:2px}
.fp-count{margin:0;font-weight:700;color:var(--ink-2)}
.fp-options{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.fp-opt{min-width:84px;padding:12px 18px;border-radius:18px;border:2px solid var(--line-2);background:#fff;font-size:26px;cursor:pointer;color:var(--ink)}.fp-opt:hover{border-color:var(--c);background:var(--c-soft)}
.fp-note{margin:0;min-height:1.6em;text-align:center;font-weight:700}.fp-note.good{color:#17753A}.fp-note.bad{color:#B3261E}

/* prime hunter */
.ph-play{display:grid;gap:14px}.ph-play[hidden]{display:none}
.ph-rule{margin:0;font:500 clamp(22px,5vw,32px) var(--serif);text-align:center;color:var(--c-ink)}
.ph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:10px;max-width:640px;margin-inline:auto;width:100%}
.ph-tile{aspect-ratio:1;border-radius:16px;border:2px solid var(--line-2);background:#fff;font:700 clamp(18px,4vw,26px) var(--sans);color:var(--ink);cursor:pointer;font-variant-numeric:tabular-nums;transition:transform .12s,background .15s,border-color .15s}
.ph-tile:hover:not(:disabled){transform:translateY(-2px);border-color:var(--c);background:var(--c-soft)}
.ph-tile.ok{background:#dff3e6;border-color:#17753A;color:#0e5a2a}.ph-tile.no{background:#fdeceb;border-color:#B3261E}
.ph-info{margin:0;text-align:center;font-weight:700;color:var(--ink-2);min-height:1.5em}.ph-info.good{color:#17753A}
.ph-tray{display:flex;justify-content:center}

/* number sequences */
.ns-play{display:grid;gap:14px;justify-items:center}.ns-play[hidden]{display:none}
.ns-terms{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.ns-term{display:grid;place-items:center;min-width:clamp(52px,11vw,76px);height:clamp(52px,11vw,76px);padding:0 8px;border-radius:18px;background:var(--c-soft);color:var(--c-ink);font:700 clamp(20px,4.5vw,30px) var(--sans);font-variant-numeric:tabular-nums;animation:ns-in .4s both}
.ns-term.q{background:var(--c);color:#fff}.ns-term.ok{background:#17753A}.ns-term.no{background:#B3261E}
@keyframes ns-in{from{opacity:0;transform:translateY(10px) scale(.9)}}
.ns-gaps{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;min-height:30px;font-weight:700;color:var(--ink-2)}
.ns-gap{padding:4px 10px;border-radius:99px;background:#FFF1D0}.ns-gap.hid{background:none;border:1.5px dashed var(--line-2)}
.ns-gap-label{align-self:center;font:800 11px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--c-ink)}
.ns-row{max-width:520px;width:100%}
.ns-msg{margin:0;text-align:center;font-weight:700;min-height:1.5em;max-width:560px}.ns-msg.good{color:#17753A}.ns-msg.bad{color:#B3261E}
.ns-after{display:flex;justify-content:center}

/* memory match */
.mm-board{display:grid;grid-template-columns:repeat(var(--cols,4),1fr);gap:clamp(6px,1.6vw,12px);max-width:640px;margin-inline:auto;width:100%}.mm-board[hidden]{display:none}
.mm-card{position:relative;aspect-ratio:1/1.05;border:0;padding:0;background:none;perspective:700px;cursor:pointer;font:inherit}
.mm-card:focus-visible{outline:3px solid var(--c);outline-offset:3px;border-radius:16px}
.mm-face{position:absolute;inset:0;display:grid;place-items:center;border-radius:16px;backface-visibility:hidden;-webkit-backface-visibility:hidden;transition:transform .45s;font:800 clamp(15px,3.4vw,24px) var(--sans);padding:4px;text-align:center}
.mm-face.back{background:linear-gradient(135deg,var(--c),var(--c-ink));color:rgba(255,255,255,.85);font-size:clamp(24px,5vw,38px)}
.mm-face.front{background:#fff;border:3px solid var(--c);color:var(--c-ink);transform:rotateY(180deg)}.mm-face.front.a{background:var(--c-soft)}
.mm-card.up .back{transform:rotateY(180deg)}.mm-card.up .front{transform:rotateY(360deg)}
.mm-card.done .front{background:#dff3e6;border-color:#17753A;color:#0e5a2a}
@media(prefers-reduced-motion:reduce){.mm-face{transition:none}}

/* coordinate battleships */
.cb-play{display:grid;gap:12px;justify-items:center}.cb-play[hidden]{display:none}
.cb-board{display:grid;grid-template-columns:auto repeat(calc(var(--n) - 1),minmax(0,1fr));gap:3px;width:min(100%,520px);align-items:center}
.cb-ax{font:700 12px var(--sans);color:var(--c-ink);text-align:center;min-width:18px}
.cb-cell{aspect-ratio:1;border:0;border-radius:6px;background:#CFE6F5;cursor:pointer;font-size:clamp(10px,2.4vw,18px);padding:0;display:grid;place-items:center;color:#1D4E7A;transition:background .12s}
.cb-cell:hover{background:#A8D2EE}.cb-cell.axis{background:#B7D8EE}.cb-cell.miss{background:#E3EEF7;color:#7A99B3}.cb-cell.hit{background:#F6C9A0}.cb-cell.sunk{background:#9FD9B2}
.cb-cell.sel{outline:3px solid var(--c);outline-offset:-1px}
.cb-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center}.cb-par{font:600 30px var(--serif);color:var(--c-ink)}
.mm-input.cb-in{flex:none;width:76px;height:48px;font-size:22px}
.cb-msg{margin:0;min-height:1.5em;text-align:center;font-weight:700}.cb-msg.good{color:#17753A}.cb-msg.bad{color:#B3261E}

/* clock game */
.ck-play{display:grid;gap:12px;justify-items:center}.ck-play[hidden]{display:none}
.ck-prompt{margin:0;font:500 clamp(20px,4.5vw,28px) var(--serif);text-align:center}
.ck-board{display:grid;gap:8px;justify-items:center}
.ck-face{width:clamp(200px,52vw,300px);height:auto;touch-action:none;user-select:none}.ck-face.live{cursor:grab}.ck-face:focus-visible{outline:3px solid var(--c);outline-offset:4px;border-radius:50%}
.ck-start,.ck-read{margin:0;font:600 clamp(26px,6vw,38px) var(--serif);color:var(--c-ink);font-variant-numeric:tabular-nums}.ck-start{font-size:20px}
.ck-options,.ck-set{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.ck-opt{min-width:96px;padding:12px 18px;border-radius:18px;border:2px solid var(--line-2);background:#fff;font:700 26px var(--sans);color:var(--ink);cursor:pointer;font-variant-numeric:tabular-nums}.ck-opt:hover{border-color:var(--c);background:var(--c-soft)}
.ck-note{margin:0;min-height:1.6em;text-align:center;font-weight:700;max-width:560px}.ck-note.good{color:#17753A}.ck-note.bad{color:#B3261E}
.ck-tray{display:flex;justify-content:center}

/* money counter */
.mc-play{display:grid;gap:14px;justify-items:center}.mc-play[hidden]{display:none}
.mc-prompt{margin:0;font:500 clamp(20px,4.5vw,28px) var(--serif);text-align:center}
.mc-board{display:grid;gap:10px;justify-items:center;width:100%}
.mc-pile{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center;padding:14px;border-radius:20px;background:var(--c-soft);min-height:84px;width:100%;max-width:640px}
.mc-item{display:inline-grid;place-items:center;font-weight:800;color:#fff;background:var(--mc);font-variant-numeric:tabular-nums;white-space:nowrap}
.mc-item.note{min-width:84px;height:46px;border-radius:8px;padding:0 10px;font-size:17px;background-image:linear-gradient(135deg,rgba(255,255,255,.2),transparent 55%);box-shadow:inset 0 0 0 3px rgba(255,255,255,.35),0 2px 4px rgba(0,0,0,.18)}
.mc-item.coin{width:50px;height:50px;border-radius:50%;font-size:13px;box-shadow:inset 0 0 0 4px rgba(255,255,255,.4),0 2px 4px rgba(0,0,0,.2)}
.mc-pick{border:0;background:none;padding:0;cursor:pointer;border-radius:12px;transition:transform .12s}.mc-pick:hover{transform:translateY(-3px)}.mc-pick:focus-visible{outline:3px solid var(--c);outline-offset:3px}
.mc-bank{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:680px}
.mc-total{margin:0;font:700 22px var(--sans);color:var(--c-ink)}.mc-empty{color:var(--ink-2);font-weight:600}
.mc-minus,.mc-price{font:600 30px var(--serif);color:var(--c-ink)}.mc-price.q{color:var(--c)}
.mc-row{max-width:420px;width:100%}.mm-input.mc-input{font-size:24px}
.mc-note{margin:0;min-height:1.6em;text-align:center;font-weight:700;max-width:560px}.mc-note.good{color:#17753A}.mc-note.bad{color:#B3261E}
.mc-tray{display:grid;gap:12px;justify-items:center;width:100%}

/* angle estimator */
.ae-play{display:grid;gap:12px;justify-items:center}.ae-play[hidden]{display:none}
.ae-stage{width:min(100%,420px)}.ae-svg{width:100%;height:auto;display:block;background:#fff;border-radius:22px;border:2px solid var(--line-2)}
.ae-ctl{display:grid;gap:10px;justify-items:center;width:min(100%,520px)}
.ae-sl{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;width:100%;font-weight:700;color:var(--ink-2)}
.ae-slider{width:100%;accent-color:var(--c);height:32px}
.ae-read{font:600 40px var(--serif);color:var(--c-ink);font-variant-numeric:tabular-nums}
.ae-note{margin:0;min-height:1.6em;text-align:center;font-weight:700;max-width:520px}.ae-note.good{color:#17753A}

/* maths practice (online skill practice) */
.fr{display:inline-grid;vertical-align:middle;text-align:center;line-height:1.1;font-size:.92em;margin:0 .1em}.fr i{font-style:normal;border-bottom:.07em solid currentColor;padding:0 .2em}.fr b{font-weight:500}
.mp .blank{display:inline-block;min-width:1.6em;border-bottom:3px solid var(--c);height:1em;vertical-align:baseline;margin:0 .15em}.mp sup{font-size:.65em;line-height:0}
.mp .ws-col{display:grid;justify-items:end;font:700 clamp(28px,7vw,44px) ui-monospace,Menlo,Consolas,monospace;min-width:5ch}.mp .ws-bot{border-bottom:3px solid var(--c-ink);padding-bottom:2px;padding-left:.2em}.mp .ws-op{margin-right:.55ch}
.mp-menu{display:grid;gap:14px;justify-items:center;text-align:center}.mp-menu h3{font:500 clamp(24px,5vw,32px) var(--serif);margin:0}.mp-grades{justify-content:center}
.mp-skills{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;width:100%;text-align:left}
.mp-skill{display:grid;gap:4px;align-content:start;padding:14px 16px;border-radius:18px;border:1.5px solid var(--line-2);background:#fff;cursor:pointer;font:inherit;color:var(--ink);text-align:left;transition:transform .15s,border-color .15s}.mp-skill:hover{transform:translateY(-3px);border-color:var(--c)}
.mp-ico{font-size:22px}.mp-name{font:700 15px var(--sans);line-height:1.25}.mp-group{font:800 10px var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--c-ink)}
.mp-bar{display:block;height:6px;border-radius:99px;background:var(--c-soft);overflow:hidden}.mp-bar i{display:block;height:100%;background:var(--c)}.mp-skill small{color:var(--ink-2)}.mp-skill.done{border-color:#17753A;background:#f1faf4}
.mp-play{display:grid;gap:14px;max-width:640px;margin-inline:auto;width:100%;position:relative}
.mp-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.mp-head b{display:block;font:600 20px var(--serif)}.mp-head small{color:var(--ink-2)}
.mp-meter{position:relative;height:22px;border-radius:99px;background:var(--c-soft);overflow:hidden}.mp-meter i{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,var(--c),var(--c-ink));transition:width .5s}.mp-meter span{position:absolute;right:10px;top:0;line-height:22px;font:800 12px var(--sans);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.mp-q{display:grid;gap:12px;justify-items:center;padding:20px;border-radius:22px;background:var(--c-soft);min-height:150px;align-content:center}
.mp-stem{margin:0;font:600 clamp(22px,5.2vw,36px) var(--serif);text-align:center;color:var(--c-ink);display:flex;flex-wrap:wrap;gap:6px 8px;justify-content:center;align-items:center;font-variant-numeric:tabular-nums}
.mm-input.mp-input{flex:none;width:min(220px,80%);height:54px;font-size:26px}.mm-input.mp-input.inline{width:130px}
.mm-input.no{border-color:#B3261E;background:#fdeceb}
.mp-fb{min-height:1.6em;text-align:center;font-weight:700}.mp-fb.good{color:#17753A}.mp-fb.bad{color:#B3261E}
.mp-tray{display:flex;justify-content:center;gap:10px}
.mp-choices{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.mp-choice{min-width:92px;padding:14px 22px;border-radius:18px;border:2px solid var(--line-2);background:#fff;font:700 28px var(--sans);cursor:pointer;color:var(--ink)}.mp-choice:hover{border-color:var(--c);background:var(--c-soft)}

/* estimation station */
.es-play{display:grid;gap:14px;justify-items:center;max-width:620px;margin-inline:auto;width:100%}.es-play[hidden]{display:none}
.es-lbl{margin:0;font:800 11px var(--sans);letter-spacing:.11em;text-transform:uppercase;color:var(--c-ink)}
.es-q{font:600 clamp(40px,10vw,68px) var(--serif);color:var(--c-ink);font-variant-numeric:tabular-nums;text-align:center;line-height:1.1}
.es-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:center}.mm-input.es-input{flex:none;width:min(240px,70vw)}
.es-fb{min-height:1.6em;text-align:center;line-height:1.5}.es-fb.good{color:#17753A}.es-fb.meh{color:#8A6D00}.es-fb.bad{color:#B3261E}.es-hint{margin:6px 0 0;color:var(--ink-2);font-weight:600}
.es-next{display:flex;justify-content:center}

/* ---------- function machine ---------- */
.fm-wrap{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(240px,1fr);gap:16px;align-items:start}
.fm-left,.fm-right{display:grid;gap:12px;min-width:0}
.fm-scene{position:relative;height:260px;border-radius:22px;background:radial-gradient(120% 90% at 50% 0%,#26327a,#0b1030 70%);overflow:hidden;box-shadow:0 0 0 2px color-mix(in srgb,var(--tc,#10b981) 55%,transparent),0 26px 60px -36px var(--tc,#10b981)}
.fm-scene::before{content:"";position:absolute;left:-15%;right:-15%;bottom:-6%;height:46%;background:repeating-linear-gradient(90deg,rgba(124,196,255,.18) 0 1px,transparent 1px 38px),repeating-linear-gradient(0deg,rgba(124,196,255,.18) 0 1px,transparent 1px 38px);transform:perspective(300px) rotateX(60deg);transform-origin:50% 100%;pointer-events:none}
.fm-machine{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%) scale(var(--fm-s,1));display:flex;align-items:center}
.fm-hopper{width:74px;height:84px;align-self:flex-start;margin:-34px -8px 0 0;background:linear-gradient(#6a79e6,#2b3690);clip-path:polygon(0 0,100% 0,70% 100%,30% 100%);display:grid;justify-items:center;padding-top:12px;color:#fff;font:800 11px var(--sans);letter-spacing:.12em;z-index:1}
.fm-chute{width:74px;height:58px;align-self:flex-end;margin:0 0 -6px 10px;background:linear-gradient(90deg,#2b3690,#6a79e6);clip-path:polygon(0 0,100% 34%,100% 100%,0 100%);display:grid;place-items:end center;padding-bottom:8px;color:#fff;font:800 11px var(--sans);letter-spacing:.12em}
.fm-body{position:relative;width:230px;height:150px}
.fm-front{position:absolute;inset:0;border-radius:8px;background:linear-gradient(160deg,#4253c4,#1e276b);box-shadow:inset 0 2px 0 rgba(255,255,255,.28),0 20px 34px -12px rgba(0,0,0,.65);padding:12px;display:grid;grid-template-rows:auto 1fr auto;gap:6px;transition:box-shadow .4s}
.fm-top{position:absolute;left:0;bottom:100%;width:100%;height:16px;background:linear-gradient(90deg,#6a79e6,#8592f0);transform:skewX(-45deg);transform-origin:0 100%;border-radius:6px 6px 0 0}
.fm-side{position:absolute;left:100%;top:0;width:16px;height:100%;background:linear-gradient(#18205c,#0f1544);transform:skewY(-45deg);transform-origin:0 0}
.fm-screen{background:#04122b;border-radius:8px;padding:7px 10px;font:700 17px ui-monospace,SFMono-Regular,Consolas,monospace;color:#7cffb2;text-shadow:0 0 8px #34d399;box-shadow:inset 0 0 0 1px rgba(124,255,178,.3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fm-gears{display:flex;gap:2px;justify-content:center;align-items:center}
.fm-gear{width:46px;height:46px;fill:#ffd166;animation:fm-spin 6s linear infinite;filter:drop-shadow(0 3px 2px rgba(0,0,0,.4))}.fm-gear .hole{fill:#24307a}
.fm-gear.g2{width:34px;height:34px;fill:#ff8fab;animation-direction:reverse;animation-duration:4.5s}.fm-gear.g3{width:54px;height:54px;fill:#7cc4ff;animation-duration:8s}
.fm-machine.busy .fm-gear{animation-duration:.55s}.fm-machine.busy .fm-gear.g3{animation-duration:.8s}
@keyframes fm-spin{to{transform:rotate(360deg)}}
.fm-lights{display:flex;gap:7px;justify-content:center}.fm-lights i{width:8px;height:8px;border-radius:50%;background:#34d399;box-shadow:0 0 8px #34d399;opacity:.35}
.fm-machine.busy .fm-lights i{animation:fm-blink .5s infinite alternate}.fm-lights i:nth-child(2n){animation-delay:.25s!important;background:#fbbf24;box-shadow:0 0 8px #fbbf24}
@keyframes fm-blink{to{opacity:1}}
.fm-machine.solved .fm-front{box-shadow:inset 0 2px 0 rgba(255,255,255,.28),0 0 46px -4px #34d399}.fm-machine.solved .fm-lights i{opacity:1}
.fm-ball{position:absolute;left:0;top:0;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font:800 14px var(--sans);color:#3a2600;background:radial-gradient(circle at 35% 30%,#fff,#ffd43b 42%,#e09a00);box-shadow:0 6px 14px rgba(0,0,0,.45);z-index:3;pointer-events:none;letter-spacing:-.02em}
.fm-ball.out{background:radial-gradient(circle at 35% 30%,#fff,#7cffb2 42%,#0f9f6e);color:#053b28}
.fm-ball.bad{background:radial-gradient(circle at 35% 30%,#fff,#ffb3b3 42%,#e03131);color:#4a0000}
.fm-tray{position:absolute;left:12px;right:12px;bottom:10px;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;max-height:56px;overflow:hidden}
.fm-chip{padding:3px 9px;border-radius:99px;background:rgba(255,255,255,.13);color:#e6fff3;font:700 13px var(--sans);animation:fm-pop .35s}.fm-chip small{opacity:.7;margin-right:4px}
@keyframes fm-pop{from{transform:scale(.5);opacity:0}}
.fm-controls[hidden],.fm-ask[hidden]{display:none}
.fm-controls{display:grid;gap:10px}
.fm-pad{display:flex;flex-wrap:wrap;gap:6px}
.fm-num{width:42px;height:42px;border-radius:12px;border:2px solid var(--line-2);background:#fff;font:800 16px var(--sans);cursor:pointer;box-shadow:0 4px 0 var(--line-2);transition:transform .1s,box-shadow .1s;color:var(--ink)}
.fm-num:hover{border-color:var(--c)}.fm-num:active{transform:translateY(3px);box-shadow:0 1px 0 var(--line-2)}.fm-num.used{background:var(--c-soft);border-color:var(--c);color:var(--c-ink)}
.fm-q{display:grid;gap:10px;padding:16px;border-radius:18px;background:var(--c-soft);border:2px solid var(--c)}
.fm-q p{margin:0;display:grid;gap:4px}.fm-q b{font:500 24px/1.2 var(--serif);color:var(--ink)}
.fm-tag{font:800 10.5px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--c-ink)}
.fm-eq{font:700 18px ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--c-ink)}
.fm-plot{width:100%;height:230px;border-radius:16px;display:block;box-shadow:0 18px 40px -28px #000}
.fm-table{width:100%;border-collapse:separate;border-spacing:0 4px;font-variant-numeric:tabular-nums}
.fm-table th{font:800 10.5px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--c-ink);text-align:left;padding:4px 12px}
.fm-table td{padding:7px 12px;background:#fff;font:700 16px var(--sans);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.fm-table td:first-child{border-left:1px solid var(--line);border-radius:10px 0 0 10px}.fm-table td:last-child{border-right:1px solid var(--line);border-radius:0 10px 10px 0;color:var(--c-ink)}
.fm-table tr.fm-new{animation:fm-pop .4s}.fm-table tr.ok td{background:#e3f9e5}.fm-table tr.bad td{background:#fde8e8}
.fm-msg{margin:0;min-height:1.4em;padding:10px 12px;border-radius:12px;background:var(--c-soft);color:var(--c-ink);font-weight:700;line-height:1.45}
.fm-msg.is-bad{background:#fde8e8;color:#9b1c1c}.fm-msg.is-good{background:#e3f9e5;color:#1b5e20}.fm-msg:empty{display:none}
@media(max-width:820px){.fm-wrap{grid-template-columns:1fr}}
@media(max-width:520px){.fm-scene{height:230px}.fm-num{width:38px;height:38px;font-size:15px}}
@media(prefers-reduced-motion:reduce){.fm-gear,.fm-machine.busy .fm-lights i{animation:none}}
/* Fraction Number Line, Times Table Bingo, Mental Maths Sprint */
.nl-play,.tb-play,.ms-play{display:grid;gap:16px;max-width:680px;margin-inline:auto;width:100%;justify-items:center;text-align:center}
.nl-play[hidden],.tb-play[hidden],.ms-play[hidden]{display:none}
.nl-prompt{display:grid;gap:2px}.nl-prompt small,.tb-call small{font:800 11px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--c-ink)}
.nl-prompt b{font:600 clamp(40px,10vw,64px)/1.1 var(--serif);color:var(--ink)}
.nl-line{position:relative;width:calc(100% - 40px);height:96px;margin:0 20px;touch-action:none;cursor:pointer;outline-offset:6px}
.nl-line::before{content:"";position:absolute;left:0;right:0;top:34px;height:8px;border-radius:99px;background:var(--line-2)}
.nl-tick{position:absolute;top:26px;width:3px;height:24px;margin-left:-1.5px;border-radius:2px;background:var(--c)}
.nl-end{position:absolute;top:44px;transform:translateX(-50%);font:800 16px var(--sans);color:var(--ink);padding-top:8px}
.nl-end .nl-tick.big{position:absolute;left:50%;top:-18px;margin-left:-2px;width:4px;height:24px;background:var(--ink)}
.nl-mark{position:absolute;top:18px;width:26px;height:40px;margin-left:-13px;border-radius:13px;background:var(--c);border:3px solid #fff;box-shadow:0 6px 14px -4px #0006;pointer-events:none}
.nl-mark[hidden],.nl-ans[hidden]{display:none}
.nl-ans{position:absolute;top:14px;width:6px;height:48px;margin-left:-3px;border-radius:3px;background:#17753A;pointer-events:none}
.nl-ans::after{content:attr(data-label);position:absolute;top:-26px;left:50%;transform:translateX(-50%);padding:2px 8px;border-radius:8px;background:#17753A;color:#fff;font:800 13px var(--sans);white-space:nowrap}
.nl-msg{margin:0;min-height:1.4em;font-weight:700;color:var(--ink)}.nl-msg.perfect,.nl-msg.close{color:#17753A}.nl-msg.miss{color:#B3261E}
.tb-call{display:grid;gap:2px;padding:14px 28px;border-radius:20px;background:var(--c-soft);border:2px solid var(--c)}.tb-call b{font:600 clamp(36px,9vw,54px)/1.1 var(--serif);color:var(--ink)}
.tb-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;width:100%;max-width:440px}
.tb-cell{aspect-ratio:1;border-radius:14px;border:2px solid var(--line-2);background:#fff;font:800 clamp(16px,4.6vw,24px) var(--sans);color:var(--ink);cursor:pointer;font-variant-numeric:tabular-nums;transition:transform .12s,background .15s}
.tb-cell:hover:not(.on){transform:translateY(-2px);border-color:var(--c)}.tb-cell.on{background:#dff3e6;border-color:#17753A;color:#0e5a2a}.tb-cell.free{font-size:12px;letter-spacing:.08em}.tb-cell.no{background:#fdeceb;border-color:#B3261E}
.tb-note{margin:0;min-height:1.4em;color:#9b1c1c;font-weight:700}
.ms-bar{width:100%;height:10px;border-radius:99px;background:var(--line-2);overflow:hidden}.ms-bar i{display:block;height:100%;width:100%;background:var(--c);transition:width 1s linear}.ms-bar.low i{background:#B3261E}
.ms-q{font:600 clamp(40px,11vw,72px)/1.1 var(--serif);color:var(--ink);min-height:1.2em;font-variant-numeric:tabular-nums}
.ms-in{width:min(280px,100%);padding:14px 16px;border-radius:16px;border:2px solid var(--line-2);font:700 28px var(--sans);text-align:center;color:var(--ink);background:#fff}.ms-in:focus{outline:none;border-color:var(--c)}
@media(prefers-reduced-motion:reduce){.ms-bar i{transition:none}}

/* Make 24 and Maths Password */
.play-page .m24-play,.play-page .mp-play,.play-page .sp-play,.play-page .ml-play{display:grid;gap:16px;max-width:680px;margin-inline:auto;width:100%;justify-items:center;text-align:center}
.play-page .m24-play[hidden],.play-page .mp-play[hidden],.play-page .sp-play[hidden],.play-page .ml-play[hidden]{display:none}
.m24-target{display:grid;gap:0;padding:6px 26px 2px;border:4px solid var(--cm-ink,#1b1340);border-radius:20px;background:var(--cm-yellow,#ffd23f);box-shadow:0 5px 0 var(--cm-ink,#1b1340);transform:rotate(-2deg)}
.m24-target small{font:700 13px var(--cm-ui,inherit);letter-spacing:.12em;text-transform:uppercase}.m24-target b{font:400 clamp(54px,12vw,84px)/1 var(--cm-display,inherit);letter-spacing:.04em;color:#fff;-webkit-text-stroke:3px var(--cm-ink,#1b1340);paint-order:stroke fill;text-shadow:4px 4px 0 var(--cm-ink,#1b1340)}
.m24-cards{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;min-height:130px;align-items:center}
.m24-card{width:clamp(80px,21vw,126px);aspect-ratio:3/4;border:4px solid var(--cm-ink,#1b1340);border-radius:18px;background:#fff;color:var(--cm-ink,#1b1340);font:400 clamp(40px,10vw,66px)/1 var(--cm-display,inherit);letter-spacing:.03em;box-shadow:0 6px 0 var(--cm-ink,#1b1340);cursor:pointer;transition:transform .22s var(--cm-pop,ease),background .15s,box-shadow .2s}
.m24-card.frac{font-size:clamp(26px,6.4vw,40px)}.m24-card:hover:not(:disabled){transform:translateY(-4px) rotate(-2deg);box-shadow:0 10px 0 var(--cm-ink,#1b1340)}
.m24-card.sel{background:var(--cm-pink,#ff5d8f);color:#fff;transform:translateY(-10px) rotate(-4deg);box-shadow:0 14px 0 var(--cm-ink,#1b1340)}
.m24-card.hint{outline:5px dashed var(--cm-sky,#3ec1ff);outline-offset:4px}.m24-card.fresh{animation:m24-in .5s var(--cm-pop,ease)}.m24-card.win{background:var(--cm-yellow,#ffd23f);animation:m24-win .8s var(--cm-pop,ease) 2}
@keyframes m24-in{from{transform:scale(.3) rotate(-18deg);opacity:0}to{transform:none;opacity:1}}@keyframes m24-win{50%{transform:scale(1.14) rotate(4deg)}}
.m24-ops{display:flex;gap:12px;justify-content:center}.m24-op{width:clamp(56px,14vw,72px);aspect-ratio:1;border:4px solid var(--cm-ink,#1b1340);border-radius:50%;background:#fff;color:var(--cm-ink,#1b1340);font:400 clamp(30px,7vw,42px)/1 var(--cm-display,inherit);box-shadow:0 5px 0 var(--cm-ink,#1b1340);cursor:pointer;transition:transform .2s var(--cm-pop,ease)}
.m24-op:hover:not(:disabled){transform:translateY(-3px) rotate(8deg)}.m24-op.sel{background:var(--cm-sky,#3ec1ff);transform:translateY(3px);box-shadow:0 1px 0 var(--cm-ink,#1b1340)}
.m24-msg,.mp-clue{margin:0;min-height:1.5em;font:600 clamp(17px,2.4vw,21px)/1.4 var(--cm-ui,inherit);color:var(--cm-ink,#1b1340)}.m24-msg.bad{color:#9b1c1c}.m24-msg.good{color:#17753A}
.m24-tray,.mp-tray{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.mp-field{width:100%}.mp-input{width:100%;box-sizing:border-box;padding:16px 18px;border:4px solid var(--cm-ink,#1b1340);border-radius:18px;background:#fff;color:var(--cm-ink,#1b1340);font:600 clamp(22px,4.5vw,32px) ui-monospace,Consolas,monospace;box-shadow:var(--cm-shadow-sm,0 4px 0 #1b1340)}.mp-input:focus{outline:none;background:#fffbe8;box-shadow:6px 6px 0 var(--c,#ff5d8f)}
.mp-rules{list-style:none;margin:0;padding:0;display:grid;gap:8px;width:100%;text-align:left}
.mp-rule{display:flex;gap:12px;align-items:center;padding:10px 14px;border:3px solid var(--cm-ink,#1b1340);border-radius:14px;background:#fff;font:600 clamp(16px,2.2vw,19px)/1.35 var(--cm-ui,inherit);color:var(--cm-ink,#1b1340);transition:background .2s}
.mp-rule b{flex:none;display:grid;place-items:center;width:30px;height:30px;border:3px solid var(--cm-ink,#1b1340);border-radius:50%;font:400 18px var(--cm-display,inherit)}.mp-rule.ok{background:#c9f7e6}.mp-rule.ok b{background:var(--cm-mint,#38d9a9)}.mp-rule.no{background:#ffe0e5}.mp-rule.no b{background:var(--cm-pink,#ff5d8f);color:#fff}
.mp-rule.newest{animation:mp-in .45s var(--cm-pop,ease)}@keyframes mp-in{from{transform:translateY(-14px) scale(.94);opacity:0}to{transform:none;opacity:1}}
@media(prefers-reduced-motion:reduce){.m24-card,.mp-rule.newest{animation:none!important}}

/* Algebra 2 Chapter 1 + Section 2.1 practice hub */
.a2-app{--a2-ink:#1d1c2d;--a2-muted:#696778;--a2-purple:#6547d2;--a2-soft:#f2efff;--a2-line:#e7e4ef;display:grid;gap:22px;max-width:820px;margin:0 auto;color:var(--a2-ink);animation:a2-enter .36s ease both}
@keyframes a2-enter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.a2-app button{font:inherit}.a2-hero{padding:22px clamp(18px,5vw,34px);border-radius:24px;background:linear-gradient(115deg,#f4f0ff,#eef8ff);text-align:left}
.a2-kicker,.a2-q-label{display:block;font:800 11px var(--sans);letter-spacing:.13em;text-transform:uppercase;color:var(--a2-purple)}
.a2-hero h2{margin:8px 0;font:650 clamp(24px,5vw,34px)/1.12 var(--serif);letter-spacing:-.025em;color:var(--a2-ink)}.a2-hero p,.a2-section-heading>p,.a2-copy{margin:0;color:var(--a2-muted);line-height:1.55}
.a2-chapters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.a2-chapter{position:relative;display:grid;grid-template-columns:48px 1fr;grid-template-rows:auto auto auto;align-items:center;gap:3px 12px;padding:15px;text-align:left;border:2px solid var(--a2-line);border-radius:20px;background:#fff;color:var(--a2-ink);cursor:pointer;transition:transform .16s,border-color .16s,box-shadow .16s}
.a2-chapter:hover{transform:translateY(-2px);border-color:#bcb0ef;box-shadow:0 8px 22px #432da40f}.a2-chapter.selected{border-color:var(--a2-purple);background:#faf9ff;box-shadow:0 0 0 3px #6547d21b}
.a2-chapter-num{grid-row:1/4;display:grid;place-items:center;width:46px;height:46px;border-radius:15px;background:var(--a2-soft);font:800 14px var(--sans);color:var(--a2-purple)}.a2-chapter b{font:750 16px var(--sans)}.a2-chapter>span:not(.a2-chapter-num){font-size:13px;color:var(--a2-muted)}.a2-chapter i{font:700 11px var(--sans);color:var(--a2-purple)}
.a2-menu-body{display:grid;gap:15px;padding:clamp(17px,4vw,26px);border:1px solid var(--a2-line);border-radius:22px;background:#fff;box-shadow:0 8px 30px #2823430b;animation:a2-enter .32s ease both}
.a2-section-heading h3{margin:4px 0 2px;font:650 22px/1.2 var(--serif);color:var(--a2-ink)}.a2-focus{margin:0;padding:10px 13px;border-radius:12px;background:#f7f5ff;color:#5544a5;font-size:13px;line-height:1.4}
.a2-mode-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.a2-mode{display:grid;align-content:start;gap:5px;min-height:78px;padding:13px;text-align:left;border:1.5px solid var(--a2-line);border-radius:16px;background:white;color:var(--a2-ink);cursor:pointer;transition:transform .15s,border-color .15s,background .15s}.a2-mode:hover{transform:translateY(-2px);border-color:#bcb0ef}.a2-mode.active{border-color:var(--a2-purple);background:#f7f5ff;box-shadow:inset 0 0 0 1px var(--a2-purple)}.a2-mode b{font:750 14px var(--sans)}.a2-mode span{font-size:12px;color:var(--a2-muted);line-height:1.35}
.a2-bottom{display:grid;gap:12px;padding-top:5px}.a2-bottom>p{margin:0;color:var(--a2-muted);font-size:14px}.a2-levels{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.a2-levels>span{margin-right:4px;font-weight:700;font-size:13px}.a2-level{padding:8px 14px;border:1px solid var(--a2-line);border-radius:99px;background:#fff;color:var(--a2-muted);cursor:pointer}.a2-level.chosen{border-color:var(--a2-purple);background:var(--a2-purple);color:#fff}
.a2-go{justify-self:start;min-height:48px;padding-inline:20px}.a2-app button:focus-visible,.a2-slider:focus-visible{outline:3px solid #9785e8;outline-offset:3px}.a2-app button:disabled{opacity:.62;cursor:default}
.a2-explore,.a2-quiz{display:grid;gap:16px;padding:clamp(18px,5vw,32px);border:1px solid var(--a2-line);border-radius:24px;background:#fff;box-shadow:0 8px 30px #2823430b;animation:a2-enter .32s ease both}.a2-explore h3,.a2-question h3{margin:2px 0 0;font:650 clamp(22px,5vw,30px)/1.25 var(--serif);color:var(--a2-ink)}.a2-copy{max-width:650px}
.a2-balance{display:grid;place-items:center;min-height:140px;margin:2px 0 0}.a2-beam{position:relative;display:grid;grid-template-columns:1fr 38px 1fr;gap:12px;align-items:end;width:min(520px,100%);padding:24px 8px 0;transform-origin:50% 18px}.a2-beam:before{content:"";position:absolute;top:13px;left:5%;right:5%;height:8px;border-radius:10px;background:#5645b4}.a2-beam:after{content:"";position:absolute;left:50%;top:21px;bottom:-1px;width:9px;transform:translateX(-50%);border-radius:6px;background:#bcb3e7}.a2-beam.move{animation:a2-wobble .58s ease-out}@keyframes a2-wobble{0%,100%{transform:rotate(0)}24%{transform:rotate(-3deg)}52%{transform:rotate(2deg)}78%{transform:rotate(-.8deg)}}
.a2-pan{position:relative;z-index:1;display:grid;place-items:center;min-height:62px;padding:12px;border:2px solid #bcb3e7;border-top:0;border-radius:4px 4px 42px 42px;background:#f6f4ff;font:750 clamp(18px,4vw,25px) var(--sans);color:#30265f}.a2-pivot{z-index:1;align-self:center;margin-bottom:20px;font-size:27px;text-align:center}
.a2-eq{padding:10px;border-radius:14px;background:#f3f0ff;text-align:center;font:750 clamp(25px,7vw,38px)/1.1 var(--sans);color:#30265f;font-variant-numeric:tabular-nums}.a2-step{min-height:3em;margin:0;color:var(--a2-muted);line-height:1.55}.a2-progress{height:8px;overflow:hidden;border-radius:99px;background:#efedf5}.a2-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#6547d2,#63a5e7);transition:width .32s ease}.a2-back{justify-self:start;border:0;background:none;color:var(--a2-muted);font-weight:700;cursor:pointer}
.a2-machine{display:grid;grid-template-columns:1fr minmax(120px,1.15fr) 1fr;align-items:center;gap:10px;margin:8px 0}.a2-machine-cell,.a2-machine-core{display:grid;justify-items:center;gap:8px;min-height:95px;padding:14px 10px;border-radius:18px;background:#f4f1ff}.a2-machine-cell span{font:800 10px var(--sans);letter-spacing:.1em;color:#6a5cb1;text-align:center}.a2-machine-cell b{font:750 clamp(24px,6vw,34px) var(--sans);color:#30265f;font-variant-numeric:tabular-nums}.a2-machine-cell b.pop{animation:a2-pop .28s ease-out}@keyframes a2-pop{50%{transform:scale(1.14);color:var(--a2-purple)}}.a2-machine-core{background:#30265f;color:#fff;box-shadow:0 8px 20px #30265f26}.a2-machine-core b{font:800 18px var(--sans)}.a2-machine-core span{font-size:12px;text-align:center}.a2-slider{width:100%;accent-color:var(--a2-purple)}.a2-caption{margin:0;color:var(--a2-muted);font-size:14px}.a2-relation{display:grid;gap:10px;padding:16px;border:1px solid var(--a2-line);border-radius:16px;background:#fcfbff}.a2-relation>p{margin:0;font-weight:750}.a2-relation code{font:700 16px var(--sans);color:#30265f}.a2-choice-row{display:flex;gap:8px;flex-wrap:wrap}.a2-choice{padding:9px 13px;border:1px solid #ded9ef;border-radius:12px;background:#fff;color:var(--a2-ink);cursor:pointer}.a2-choice:hover{border-color:var(--a2-purple);background:#f7f5ff}.a2-answer{margin:0;min-height:1.4em;color:#ad3535;line-height:1.5}.a2-answer.good{color:#17753a}
.a2-quiz{gap:14px}.a2-quiz-top{display:flex;justify-content:space-between;gap:8px;font:800 11px var(--sans);letter-spacing:.1em;color:var(--a2-purple)}.a2-question{display:grid;gap:8px;padding:12px 0 4px}.a2-options{display:grid;gap:9px}.a2-option{width:100%;padding:13px 15px;text-align:left;border:1.5px solid var(--a2-line);border-radius:14px;background:white;color:var(--a2-ink);cursor:pointer;transition:transform .15s,border-color .15s,background .15s}.a2-option:hover:not(:disabled){transform:translateX(3px);border-color:#a999e8;background:#fbfaff}.a2-answer-form{display:flex;gap:9px}.a2-answer-input{flex:1;min-width:0;min-height:48px;padding:10px 14px;border:1.5px solid var(--a2-line);border-radius:13px;font:700 17px var(--sans);color:var(--a2-ink)}.a2-answer-form .btn{white-space:nowrap}.a2-hint,.a2-print{justify-self:start;padding:7px 0;border:0;background:none;color:#5949aa;font-size:13px;font-weight:750;cursor:pointer}.a2-response{min-height:1.4em;padding:0;color:var(--a2-muted);line-height:1.5}.a2-response.good,.a2-response.bad,.a2-response.hint{padding:11px 13px;border-radius:12px}.a2-response.good{background:#eaf8ef;color:#176a38}.a2-response.bad{background:#fff0ee;color:#9a322c}.a2-response.hint{background:#f5f2ff;color:#51429b}.a2-continue{justify-self:start}.a2-tools{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.a2-print{color:var(--a2-muted)}
.a2-print-sheet{display:none}
/* Full chapter learning path: short concepts, responsive labs and a clear review route */
.a2-course-hero{padding:clamp(20px,4vw,32px);background:linear-gradient(120deg,#f0edff 0%,#eef9ff 65%,#edfff6 100%)}
.a2-course-hero h2{max-width:720px;font-size:clamp(27px,5vw,38px)}
.a2-course-progress{display:grid;grid-template-columns:minmax(120px,1fr) auto;gap:10px;align-items:center;margin-top:20px}
.a2-course-progress>span,.a2-section-progress>span{font:750 12px var(--sans);color:#5b5571;white-space:nowrap}
.a2-roadmap,.a2-section-view{display:grid;gap:16px}
.a2-roadmap-head{display:flex;justify-content:space-between;align-items:end;gap:12px}
.a2-roadmap-head h3,.a2-action-card h3,.a2-chapter-check h3{margin:4px 0;font:650 21px/1.2 var(--serif);color:var(--a2-ink)}
.a2-course-badge,.a2-pill{display:inline-flex;padding:7px 10px;border-radius:99px;background:#f1eff9;color:#5e5681;font:750 11px var(--sans);white-space:nowrap}
.a2-units{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.a2-unit{display:grid;align-content:start;justify-items:start;gap:8px;min-height:145px;padding:14px;text-align:left;border:1.5px solid var(--a2-line);border-radius:18px;background:#fff;color:var(--a2-ink);cursor:pointer;transition:transform .16s,border-color .16s,box-shadow .16s}
.a2-unit:hover{transform:translateY(-3px);border-color:#aa99e7;box-shadow:0 10px 25px #39237c14}
.a2-unit.next{border-color:#7558db;box-shadow:0 0 0 3px #7558db18}
.a2-unit.done{background:linear-gradient(145deg,#f1fff7,#fff);border-color:#86c8a2}
.a2-unit-num{display:grid;place-items:center;min-width:38px;height:34px;padding:0 8px;border-radius:12px;background:#f1efff;color:#6047c9;font:850 12px var(--sans)}
.a2-unit.done .a2-unit-num{background:#dff5e8;color:#197145}
.a2-unit b{font:750 13px/1.25 var(--sans)}
.a2-unit-skill{font-size:11px;line-height:1.3;color:var(--a2-muted)}
.a2-unit i{align-self:end;margin-top:auto;font:750 10px var(--sans);font-style:normal;color:#6251ae}
.a2-home-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.a2-action-card{display:grid;align-content:start;gap:9px;padding:18px;border:1px solid var(--a2-line);border-radius:20px;background:#fff}
.a2-action-card>p,.a2-chapter-check p{margin:0;color:var(--a2-muted);font-size:13px;line-height:1.5}
.a2-action-row{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-top:4px}
.a2-action-row .btn{margin-left:auto}
.a2-check{display:flex;align-items:center;gap:8px;font-size:13px;color:#514b68}
.a2-check input{accent-color:var(--a2-purple);width:17px;height:17px}
.a2-chapter-check{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;border-radius:20px;background:#29224e;color:#fff}
.a2-chapter-check h3,.a2-chapter-check p{color:#fff}.a2-chapter-check .a2-kicker{color:#c8bfff}.a2-chapter-check .btn{flex:none;background:#ffd75a;color:#211a3b}
.a2-focus{padding:11px 14px}
.a2-section-view>.a2-back{margin-bottom:-6px}
.a2-section-title{display:grid;gap:7px;padding:clamp(18px,4vw,28px);border-radius:22px;background:linear-gradient(120deg,#f2efff,#f1fbff)}
.a2-section-title h2{margin:0;font:650 clamp(25px,5vw,34px)/1.15 var(--serif);color:var(--a2-ink)}
.a2-section-title>p{margin:0;color:var(--a2-muted);line-height:1.5}
.a2-section-progress{display:grid;grid-template-columns:minmax(100px,1fr) auto;gap:10px;align-items:center;margin-top:4px}
.a2-idea-card{display:grid;gap:13px;padding:clamp(17px,4vw,25px);border:1px solid var(--a2-line);border-radius:20px;background:#fff}
.a2-idea-top{display:flex;justify-content:space-between;gap:8px;align-items:center}
.a2-idea-card>p{margin:0;font:550 clamp(17px,2.4vw,20px)/1.55 var(--sans);color:var(--a2-ink)}
.a2-idea-controls{display:flex;align-items:center;justify-content:space-between;gap:12px}
.a2-idea-controls .a2-back:disabled{opacity:.35}
.a2-lab{display:grid;gap:14px;padding:clamp(16px,3vw,22px);border:1px solid #ded9ef;border-radius:22px;background:#fbfaff}
.a2-lab-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}
.a2-lab-heading>p{margin:0;color:var(--a2-muted);font-size:12px}
.a2-lab-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.a2-range-wrap{display:grid;grid-template-columns:1fr auto;gap:4px 8px;align-items:center;padding:10px 12px;border:1px solid #e8e4f1;border-radius:13px;background:#fff}
.a2-range-wrap>span{font:700 12px var(--sans);color:#59536e}
.a2-range-value{font:800 13px var(--sans);color:var(--a2-purple);font-variant-numeric:tabular-nums}
.a2-range{grid-column:1/-1;width:100%;margin:4px 0 0;accent-color:var(--a2-purple)}
.a2-select{justify-self:end;padding:7px 10px;border:1px solid #ddd8ed;border-radius:10px;background:#fff;color:var(--a2-ink);font:750 16px var(--sans)}
.a2-lab-visual{display:grid;gap:10px;padding:13px;border:1px solid #e7e3ef;border-radius:17px;background:#fff}
.a2-graph{display:block;width:min(100%,560px);height:auto;margin:0 auto;border-radius:12px;background:linear-gradient(180deg,#fff,#fdfcff);animation:a2-graph-arrive .32s cubic-bezier(.2,.7,.2,1) both}
@keyframes a2-graph-arrive{from{opacity:.55;transform:translateY(5px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}
.a2-lab-result{margin:0;padding:10px 12px;border-radius:12px;background:#f1efff;color:#413477;font:750 14px/1.4 var(--sans);font-variant-numeric:tabular-nums}
.a2-lab-note{margin:0;color:var(--a2-muted);font-size:13px;line-height:1.5}
.a2-function-machine{display:grid;grid-template-columns:1fr minmax(130px,1.15fr) 1fr;align-items:center;gap:9px}
.a2-machine-cell,.a2-machine-rule{display:grid;justify-items:center;align-content:center;gap:6px;min-height:82px;padding:11px;border-radius:15px;background:#f1efff;color:#2f2858}
.a2-machine-cell small{font:850 10px var(--sans);letter-spacing:.12em;color:#6e61a7}
.a2-machine-number,.a2-lab-number{font:800 clamp(25px,6vw,35px) var(--sans);font-variant-numeric:tabular-nums}
.a2-machine-number.pop,.a2-lab-number.pop{animation:a2-lab-pop .3s ease-out}
@keyframes a2-lab-pop{50%{transform:scale(1.16);color:#7157dc}}
.a2-machine-cell.output{background:#eafff3}
.a2-machine-cell.output .a2-lab-number{color:#157245}
.a2-machine-rule{background:#30265f;color:#fff;text-align:center}
.a2-machine-rule code{font:850 19px var(--sans);color:#fff}
.a2-machine-rule span{font-size:11px;line-height:1.3}
.a2-mapping-check{display:grid;gap:10px;padding:13px;border-radius:14px;background:#f6f4fc}
.a2-mapping-check>b{font:750 13px var(--sans);color:#342d56}
.a2-choice-row{display:flex;flex-wrap:wrap;gap:8px}
.a2-choice{padding:9px 14px;border:1px solid #ded9ef;border-radius:11px;background:#fff;color:var(--a2-ink);cursor:pointer}
.a2-choice:hover{border-color:#806bda;background:#f8f6ff}
.a2-live-feedback{min-height:1.3em;margin:0;color:#a13932;font-size:13px;line-height:1.4}
.a2-live-feedback.good{color:#177344}
.a2-output-callout{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-radius:12px;background:#eafff3;color:#176943}
.a2-output-callout small{font:850 10px var(--sans);letter-spacing:.1em}
.a2-section-actions{display:flex;flex-wrap:wrap;gap:9px;align-items:center;padding-top:4px}
.a2-section-actions .btn{min-height:46px}
.a2-action-link{padding:9px 11px;border:1px solid #e1ddef;border-radius:12px;background:#fff;color:#584a9c;font-size:12px;font-weight:750;cursor:pointer}
.a2-action-link:hover{border-color:#8775d5;background:#f8f6ff}
.a2-quiz .a2-question h3{font-size:clamp(21px,4vw,29px)}
.a2-quiz .a2-options{grid-template-columns:repeat(2,minmax(0,1fr))}
.a2-quiz .a2-option{min-height:54px}
.a2-quiz-top>span:first-child{max-width:70%;line-height:1.35}
.a2-print-key{page-break-before:always;break-before:page}
.a2-print-key h2{margin:0 0 10px}
.a2-print-key li{margin:9px 0;break-inside:avoid}
.a2-print-question small,.a2-print-key small{display:block;margin-bottom:5px;color:#665a9b;font-size:9pt;font-weight:700}
.a2-print-foot{margin-top:20px;font-size:10pt}
@media(max-width:760px){.a2-units{grid-template-columns:repeat(2,minmax(0,1fr))}.a2-home-actions{grid-template-columns:1fr}.a2-section-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.a2-section-actions .btn{grid-column:1/-1}.a2-chapter-check{align-items:flex-start;flex-direction:column}.a2-lab-heading{align-items:flex-start;flex-direction:column}}
@media(max-width:480px){.a2-units{grid-template-columns:1fr}.a2-unit{min-height:unset;grid-template-columns:45px 1fr;grid-template-rows:auto auto auto;align-items:center}.a2-unit-num{grid-row:1/4}.a2-unit i{grid-column:2}.a2-course-progress,.a2-section-progress{grid-template-columns:1fr}.a2-function-machine{grid-template-columns:1fr 1fr}.a2-machine-rule{grid-column:1/-1;grid-row:2;min-height:64px}.a2-machine-cell{min-height:68px}.a2-lab-controls{grid-template-columns:1fr}.a2-quiz .a2-options{grid-template-columns:1fr}.a2-section-actions{grid-template-columns:1fr}.a2-section-actions .btn{grid-column:auto}.a2-idea-controls{align-items:flex-start;flex-direction:column}.a2-action-row .btn{width:100%;margin-left:0}}
@media(prefers-reduced-motion:reduce){.a2-unit,.a2-graph,.a2-machine-number.pop,.a2-lab-number.pop{animation:none!important;transition:none!important}}
@media(max-width:600px){.a2-chapters{grid-template-columns:1fr}.a2-chapter{min-height:76px}.a2-mode-row{grid-template-columns:1fr}.a2-mode{min-height:unset}.a2-machine{grid-template-columns:1fr 1fr;gap:8px}.a2-machine-core{grid-column:1/-1;grid-row:2;min-height:70px}.a2-machine-cell{min-height:80px}.a2-answer-form{align-items:stretch;flex-direction:column}.a2-answer-form .btn{min-height:46px}.a2-quiz-top{font-size:10px}}
@media(prefers-reduced-motion:reduce){.a2-app,.a2-menu-body,.a2-explore,.a2-quiz,.a2-chapter,.a2-mode,.a2-option,.a2-beam.move,.a2-machine-cell b.pop{animation:none!important;transition:none!important}}
@media print{
  @page{margin:17mm}
  body>*{display:none!important}
  body>.a2-print-sheet{display:block!important;position:absolute;inset:0;padding:0;background:#fff;color:#111;font:12pt/1.5 Arial,sans-serif}
  .a2-print-sheet h1{margin:0 0 8px;font:700 22pt/1.2 Arial,sans-serif}.a2-print-brand{font-size:9pt;font-weight:700;letter-spacing:.12em;color:#5846a7}.a2-print-sheet ol{padding-left:25px}.a2-print-question{margin:22px 0;break-inside:avoid}.a2-print-line{min-height:24px;margin:8px 0;color:#aaa;border-bottom:1px solid #bbb;font-size:9pt}
}
