/* ===== Curriculum, Greater Depth, Challenges and the multiplication tables check ===== */
.sect{font-size:1.35rem;font-weight:700;margin:26px 4px 12px;color:var(--purple-d);display:flex;align-items:center;gap:10px}
.sect:first-child{margin-top:4px}
.sect small{font-size:.95rem;color:var(--soft);font-weight:500}
.g8{background:var(--teal);box-shadow:0 8px 0 var(--teal-d)}
.g9{background:#E8335A;box-shadow:0 8px 0 #B21E40}
.g10{background:#2B2340;box-shadow:0 8px 0 #000}
.tabs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:0 auto 16px;max-width:760px}
.tab{background:var(--card);border-radius:999px;padding:9px 16px;font-size:1.05rem;font-weight:600;box-shadow:0 4px 0 var(--line);min-width:44px}
.tab.on{background:var(--ink);color:#fff;box-shadow:0 4px 0 #000}
.tab.you::after{content:" ★";color:var(--yellow)}
.tab.on.you::after{color:var(--yellow)}
.strand{margin:18px 0 8px;font-size:1.15rem;font-weight:700;color:var(--ink);display:flex;align-items:baseline;gap:8px}
.strand small{color:var(--soft);font-weight:500;font-size:.9rem}
.skills{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.sk{background:var(--card);border-radius:20px;padding:14px 14px 12px;text-align:left;box-shadow:0 5px 0 var(--line);display:flex;flex-direction:column;gap:6px;min-height:96px;border:3px solid transparent;transition:transform .1s}
.sk:active{transform:translateY(3px)}
.sk b{font-size:1.08rem;line-height:1.2}
.sk .st{font-size:1.05rem;letter-spacing:2px;color:#E2D6BE}
.sk .st i{font-style:normal;color:var(--yellow-d)}
.sk.m{border-color:#E9FBF2}
.sk .lk{margin-left:auto;font-size:.9em}
.sk .row1{display:flex;align-items:center;gap:6px}
.sk small{color:var(--soft);font-size:.85rem;line-height:1.25}
.pill{display:inline-block;font-size:.8rem;font-weight:700;padding:2px 9px;border-radius:999px;background:#E9FBF2;color:#14704B}
.pill.free{background:#FFF3D6;color:#7A5400}
.legend{font-size:.95rem;color:var(--soft);text-align:center;margin:-8px 0 14px}

/* quiz */
.qz-top{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.qz-hud{display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap;font-weight:700;font-size:1.15rem;min-height:1.6rem}
.hearts{letter-spacing:2px}
.qz-dots{display:flex;gap:6px;justify-content:center;margin:6px 0 4px;flex-wrap:wrap}
.qz-dots i{width:14px;height:14px;border-radius:50%;background:#EDE2CB;display:block}
.qz-dots i.ok{background:var(--green)}.qz-dots i.no{background:#F2A3A3}.qz-dots i.now{background:var(--purple)}
.qz-q{font-family:var(--read);font-size:1.6rem;font-weight:700;line-height:1.4;margin:12px auto 14px;max-width:700px}
.qz-q .big{font-size:2.1rem}.qz-q .bigword{display:block;font-size:3.4rem;margin:6px 0 10px;color:var(--purple-d)}
.qz-q b.box{display:inline-block;min-width:1.4em;border:3px dashed #D9CCB0;border-radius:10px;padding:0 6px}
.qz-q .sent{display:block;font-size:1.55rem;background:#FFFCF4;border-radius:16px;padding:10px 14px;margin:8px auto 12px;max-width:640px;border:3px solid var(--line);font-weight:600}
.qz-q .qsvg{display:block;margin:6px auto 10px;max-width:100%;height:auto;max-height:230px}
.qz-q .qsvg.chart{max-height:260px}
.qz-q svg .t{font-family:var(--read);font-size:16px;fill:var(--ink)}.qz-q svg .t.s{font-size:13px}.qz-q svg .t.b{font-weight:700}
.qz-q .clock,.qz-q svg.clock{display:block;margin:4px auto 10px;width:200px;height:200px}
.qz-q .coins{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:6px 0 10px}
.qz-q .passage{text-align:left;font-weight:400;font-size:1.15rem;line-height:1.55;background:#FFFCF4;border:3px solid var(--line);border-radius:18px;padding:12px 16px;margin:0 auto 14px;max-height:260px;overflow:auto}
.qz-q .passage h4{font-family:var(--ui);font-size:1.15rem;margin-bottom:4px;color:var(--purple-d)}
.frac{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;line-height:1;margin:0 3px;font-size:.85em}
.frac span:first-child{border-bottom:3px solid currentColor;padding:0 3px 2px}.frac span:last-child{padding:2px 3px 0}
.groups{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:6px 0 10px}
.grp{background:#FFF3D6;border-radius:18px;padding:6px 10px;font-size:1.5rem;letter-spacing:2px;max-width:220px}
.emo{font-size:1.7rem;letter-spacing:3px;margin:6px auto 10px;max-width:520px;line-height:1.5}
.picto,.tally,.ttab{margin:6px auto 4px;border-collapse:separate;border-spacing:0 6px;font-size:1.2rem}
.picto th,.tally th{text-align:right;padding-right:12px;font-weight:600}.picto td,.tally td{text-align:left;font-size:1.5rem;letter-spacing:2px}
.picto .half{display:inline-block;width:.55em;overflow:hidden;vertical-align:bottom}
.key{font-size:1rem;color:var(--soft);margin-bottom:8px}
.tal{font-family:var(--read);font-weight:700;margin-right:10px;position:relative;display:inline-block}
.tal s{position:absolute;left:-2px;right:-2px;top:50%;border-top:3px solid var(--ink);transform:rotate(-20deg)}
.ttab td,.ttab th{padding:4px 14px;border-bottom:2px solid var(--line)}
.colm{display:inline-block;font-family:var(--read);font-size:2.1rem;text-align:right;line-height:1.25;margin:4px auto 10px}
.colm span{display:inline-block;min-width:.7em;text-align:center}.colm .op{margin-right:6px}
.colm .bar{border-top:4px solid var(--ink);margin-top:2px;height:4px}
.hear{display:inline-flex;align-items:center;gap:6px;background:#E5F6FF;color:var(--blue-d);border-radius:999px;padding:8px 16px;font-size:1.05rem;font-weight:700;margin:0 auto 10px;font-family:var(--ui)}
.qopts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;max-width:680px;margin:0 auto}
.qopts.long{grid-template-columns:1fr}
.qopt{background:#FFFCF4;border:4px solid var(--line);border-radius:20px;font-family:var(--read);font-size:1.4rem;font-weight:700;padding:14px 14px;line-height:1.3;transition:transform .1s;color:var(--ink);min-height:64px}
.qopts.long .qopt{text-align:left;font-size:1.2rem;font-weight:600}
.qopt:active{transform:scale(.97)}
.qopt.right{border-color:var(--green);background:#E9FBF2}
.qopt.wrong{border-color:#F2A3A3;background:#FFF0F0;animation:shake .4s;opacity:.55}
.qopt[disabled]{pointer-events:none}
.qin{display:flex;align-items:center;justify-content:center;gap:10px;margin:6px 0}
.qin .ansbox{min-width:150px;height:80px;font-family:var(--read);font-size:2.6rem;font-weight:700}
.qin .unit{font-size:1.5rem;font-weight:700;color:var(--soft)}
.npad.dec{grid-template-columns:repeat(4,1fr);max-width:420px}
.ordrow{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;min-height:66px;margin:8px auto;padding:8px;border-radius:18px;max-width:700px}
.ordrow.ans{background:#FFFCF4;border:3px dashed #D9CCB0}
.ochip{background:#F4EEFF;border-radius:16px;padding:10px 16px;font-family:var(--read);font-size:1.35rem;font-weight:700;box-shadow:0 4px 0 #D9CCF5;color:var(--ink)}
.ochip.sentence{font-size:1.05rem;font-weight:600;text-align:left;max-width:100%}
.ordrow.ans .ochip{background:#E5F6FF;box-shadow:0 4px 0 #B9DFF7}
.tapline{font-family:var(--read);font-size:1.6rem;line-height:2.1;max-width:700px;margin:6px auto;background:#FFFCF4;border:3px solid var(--line);border-radius:18px;padding:10px 14px}
.tw{border-radius:10px;padding:2px 5px;margin:0 1px;font-weight:600;color:var(--ink)}
.tw:hover{background:#F4EEFF}.tw.sel{background:var(--yellow)}.tw.right{background:#BDF0D6}.tw.wrong{background:#FFD3D3}
.qz-fb{min-height:2.2rem;font-size:1.3rem;font-weight:700;margin-top:14px}
.qz-fb.good{color:var(--green-d)}.qz-fb.bad{color:var(--pink-d)}
.qz-ex{font-size:1.1rem;color:var(--ink);background:#FFF8E1;border-radius:14px;padding:10px 14px;margin:8px auto 0;max-width:620px;font-family:var(--read)}
.qz-end .bigscore{margin-top:2px}
.endstars{font-size:3rem;letter-spacing:6px;margin:4px 0}
.endstars i{font-style:normal;opacity:.2}.endstars i.on{opacity:1}
.nc{font-size:.95rem;color:var(--soft);max-width:620px;margin:4px auto 0;font-style:normal}

/* challenges */
.trophies{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-top:10px}
.troph{background:var(--card);border-radius:18px;padding:12px 8px;text-align:center;box-shadow:0 4px 0 var(--line)}
.troph .i{font-size:2.3rem}.troph b{display:block;font-size:.95rem;margin-top:4px}.troph small{color:var(--soft);font-size:.8rem}
.troph.off .i{filter:grayscale(1);opacity:.25}.troph.off b{color:var(--soft)}
.chbest{font-size:.95rem;opacity:.95;margin-top:6px;font-weight:600}
.boss{display:flex;align-items:center;justify-content:center;gap:16px;margin:4px 0}
.boss .face{font-size:3.4rem;transition:transform .2s}.boss .face.hit{animation:shake .4s}
.hp{width:180px;height:16px;background:#EDE2CB;border-radius:999px;overflow:hidden}.hp div{height:100%;background:#E8335A;transition:width .3s}
.mount{font-size:1.1rem;font-weight:700}
.picker{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:10px 0}

/* parents */
.cov{margin-top:10px}.cov summary{cursor:pointer;font-weight:700;font-size:1.05rem;padding:6px 0}
.covt{width:100%;border-collapse:collapse;font-size:.95rem;margin:6px 0 10px}.covt th,.covt td{text-align:left;padding:5px 6px;border-bottom:1px solid var(--line);vertical-align:top}
.covt td.s{white-space:nowrap;text-align:right}
.bars{display:grid;grid-template-columns:auto 1fr auto;gap:6px 10px;align-items:center;font-size:.95rem;margin:6px 0}
.bar2{height:10px;background:#EDE2CB;border-radius:999px;overflow:hidden}.bar2 div{height:100%;background:var(--green)}
.setrow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0}
.setrow label{font-weight:600;min-width:180px}
.setrow select{font-family:var(--ui);font-size:1rem;padding:6px 10px;border-radius:10px;border:2px solid var(--line);background:#fff}
.setrow input[type=checkbox]{width:22px;height:22px}

/* ===== MTC: deliberately plain, like the real check ===== */
#mtc{--mfg:#000;--mbg:#fff;--mscale:1}
.mtc-shell{background:var(--mbg);color:var(--mfg);border-radius:12px;border:2px solid #CFCFCF;max-width:820px;margin:0 auto;padding:26px 22px 30px;font-family:Arial,Helvetica,sans-serif;text-align:center;min-height:440px;position:relative}
.mtc-shell h2{font-size:calc(1.9rem*var(--mscale));font-weight:700;margin:6px 0 14px}
.mtc-shell p,.mtc-shell li{font-size:calc(1.2rem*var(--mscale));line-height:1.5}
.mtc-shell ul{text-align:left;max-width:560px;margin:10px auto;padding-left:22px}
.mbtn{font-family:Arial,Helvetica,sans-serif;font-size:calc(1.3rem*var(--mscale));font-weight:700;background:#1D70B8;color:#fff;border-radius:6px;padding:14px 30px;box-shadow:0 3px 0 #003078;margin:8px}
.mbtn.alt{background:#F3F2F1;color:#0B0C0C;box-shadow:0 3px 0 #929191}
.mtc-q{font-size:calc(5rem*var(--mscale));font-weight:700;margin:26px 0 8px;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap}
.mtc-box{display:inline-flex;min-width:calc(170px*var(--mscale));height:calc(110px*var(--mscale));border:4px solid var(--mfg);align-items:center;justify-content:center;font-size:calc(4.4rem*var(--mscale))}
.mtc-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:330px;margin:16px auto 0}
.mtc-pad button{font-family:Arial,Helvetica,sans-serif;font-size:calc(2rem*var(--mscale));font-weight:700;background:var(--mbg);color:var(--mfg);border:3px solid var(--mfg);border-radius:6px;padding:12px 0}
.mtc-pad button.enter{background:#00703C;color:#fff;border-color:#00703C;font-size:calc(1.3rem*var(--mscale))}
.mtc-pad button.del{font-size:calc(1.3rem*var(--mscale))}
.mtc-meta{position:absolute;top:10px;left:16px;font-size:1rem;font-weight:700}
.mtc-pause{font-size:2rem;margin-top:90px;letter-spacing:8px}
.mtc-res{text-align:left;max-width:620px;margin:10px auto}
.mtc-res .tchip{font-family:Arial,Helvetica,sans-serif}
.mtcset{max-width:820px;margin:12px auto 0}
.ages{flex-wrap:wrap}.age{flex:1 0 21%}
.qz-top .hear{margin:0}.qz-top .title{font-size:1.7rem}
.g8{background:#4A5AE0;box-shadow:0 8px 0 #3A49C4}
.tw{font-size:inherit;font-family:inherit;line-height:1.5}
#qzPad .nkey{font-size:1.9rem;padding:9px 0}
#qzPad{gap:8px;max-width:330px}
/* ===== arcade: end card, rounds and new games ===== */
.endbox{position:fixed;inset:0;background:rgba(43,35,64,.45);display:none;align-items:center;justify-content:center;z-index:60;padding:16px}
.endbox.on{display:flex;animation:fadein .25s}
.endcard{background:#fff;border-radius:32px;padding:26px 22px;max-width:520px;width:100%;text-align:center;box-shadow:0 10px 0 var(--line);max-height:92vh;overflow:auto}
.endico{font-size:3.4rem;line-height:1}
.endh{font-family:var(--ui);font-size:1.9rem;margin:6px 0 4px}
.endcard .endstars{font-size:2.4rem;margin:4px 0}
.endcard .endstars i{filter:grayscale(1) opacity(.3);font-style:normal}
.endcard .endstars i.on{filter:none}
.endline{font-family:var(--read);font-size:1.2rem;color:var(--ink);margin:4px 0}
.endbest{color:var(--green-d);font-weight:700;margin:2px 0}
.endbtns{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.endbtns .btn{width:100%;justify-content:center}
.rdots{display:flex;justify-content:center;gap:7px;margin:-4px auto 12px;flex-wrap:wrap}
.rdots:empty{display:none}
.rdots i{width:13px;height:13px;border-radius:50%;background:var(--line);display:block}
.rdots i.done{background:var(--green)}.rdots i.miss{background:var(--orange)}.rdots i.now{background:var(--purple);transform:scale(1.25)}
.stage.arc{padding:20px 16px 24px}
/* memory */
.mhud{display:flex;justify-content:center;gap:22px;font-weight:600;color:var(--soft);margin-bottom:12px}
.mhud b{color:var(--ink)}
.mgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:620px;margin:0 auto 14px}
.mgrid.n8{grid-template-columns:repeat(4,1fr)}.mgrid.n10{grid-template-columns:repeat(5,1fr)}
.mcard{position:relative;aspect-ratio:1/1;border-radius:20px;perspective:600px;background:none;padding:0}
.mcard .back,.mcard .face{position:absolute;inset:0;border-radius:20px;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;-webkit-backface-visibility:hidden;transition:transform .35s}
.mcard .back{background:linear-gradient(135deg,var(--purple),var(--blue));font-size:2.2rem;box-shadow:0 5px 0 var(--purple-d)}
.mcard .face{background:#FFFBF2;border:3px solid var(--line);transform:rotateY(180deg);font-family:var(--read);font-size:1.25rem;font-weight:700;padding:4px;overflow:hidden;line-height:1.15}
.mcard.up .back{transform:rotateY(180deg)}.mcard.up .face{transform:rotateY(0)}
.mcard.done .face{border-color:var(--green);background:#E9FBF2}
.mpic{font-size:2.6rem}.mword{font-size:1.05rem;word-break:break-word}
.mclock{display:block;width:88%;height:88%}.mclock svg{width:100%;height:100%}
.mcoins{display:flex;flex-wrap:wrap;gap:2px;justify-content:center;align-items:center}.mcoins .coin{--s:34px!important;font-size:10px}.mcoins .cslot{--slot:38px}
/* pop */
.pprompt{font-family:var(--read);font-size:2.2rem;font-weight:700;min-height:56px;margin-bottom:8px}
.pprompt .pok{color:var(--green-d)}
.pprompt .cpics{font-size:1.9rem;line-height:1.35;max-width:560px;margin:0 auto;word-break:break-all}
.pprompt .cpics svg{max-width:100%;height:auto;max-height:110px}
.psky{position:relative;height:min(46vh,400px);border-radius:28px;overflow:hidden;background:linear-gradient(#BFE6FF,#E8F6FF 70%,#FFF7E8);margin-bottom:12px}
.bub{position:absolute;bottom:-120px;width:104px;height:104px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--read);font-weight:700;font-size:1.6rem;color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.2);animation:bubrise linear forwards;box-shadow:inset -8px -10px 0 rgba(0,0,0,.12),inset 8px 10px 0 rgba(255,255,255,.3)}
.bub span{padding:0 6px;line-height:1.1}
@keyframes bubrise{from{transform:translateY(0)}to{transform:translateY(calc(-1 * (min(46vh,400px) + 240px)))}}
.bub.popped{animation:none!important;opacity:0;transition:opacity .2s}
.bub.wrong{filter:grayscale(.7) brightness(.95)}
/* build */
.bclue{min-height:64px;margin-bottom:6px}.bpic{font-size:3.4rem;line-height:1.1;display:inline-block}
.bslots{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:8px auto 18px;max-width:640px}
.bslot{min-width:52px;height:60px;border-radius:14px;border:3px dashed #D9CBB0;background:#FFFBF2;font-family:var(--read);font-size:1.8rem;font-weight:700;padding:0 8px}
.bslots.words .bslot{min-width:64px;height:52px;font-size:1.25rem}
.bslot.f{border-style:solid;border-color:var(--purple);background:#F2EDFF}
.bslots.ok .bslot{border-color:var(--green);background:#E9FBF2}
.bslots.no{animation:shake .35s}
.btiles{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;max-width:640px;margin:0 auto 10px}
.btile{min-width:56px;height:60px;border-radius:16px;background:var(--yellow);box-shadow:0 5px 0 var(--yellow-d);font-family:var(--read);font-size:1.8rem;font-weight:700;padding:0 10px}
.btile.word{font-size:1.25rem;height:52px;background:#D8ECFF;box-shadow:0 5px 0 #9FC9EE}
.btile.used{opacity:.25;box-shadow:none}
.misw{font-family:var(--read);font-size:2.6rem;font-weight:700;letter-spacing:.08em}
.gapl{display:inline-block;min-width:1.1em;border-bottom:4px solid var(--purple);color:var(--purple)}
@media (max-width:560px){
  .mgrid,.mgrid.n8{grid-template-columns:repeat(3,1fr)}.mgrid.n10{grid-template-columns:repeat(4,1fr)}.mgrid.n12{grid-template-columns:repeat(3,1fr)}
  .bub{width:84px;height:84px;font-size:1.25rem}
  .pprompt{font-size:1.8rem}.btile,.bslot{min-width:44px;height:52px;font-size:1.5rem}
}
.mcard .face{font-size:1.9rem}
.mword{font-size:1.35rem}
@media (max-width:560px){.mcard .face{font-size:1.4rem}.mword{font-size:1.05rem}}
.qz-q .bpic{display:block;margin:0 auto 6px}
@media (max-width:560px){.bub{width:76px;height:76px;font-size:1.2rem}}

/* ---- Symmetry: card grids, memory boards and the keyboard centre any part-filled last row ---- */
.games,.shelf,.skills,.trophies,.book,.kids,.mgrid,.kb{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--g);grid-template-columns:none}
.games>*,.shelf>*,.skills>*,.trophies>*,.book>*,.kids>*,.mgrid>*{flex:0 0 calc((100% - (var(--c) - 1) * var(--g)) / var(--c) - .1px);min-width:0;box-sizing:border-box}
.games{--g:18px;--c:4}.shelf{--g:18px;--c:4}.skills{--g:12px;--c:4}.trophies{--g:10px;--c:6}.book{--g:14px;--c:6}.kids{--g:16px;--c:4}
.mgrid{--g:10px;--c:4}.mgrid.n6{--c:3}.mgrid.n8{--c:4}.mgrid.n10{--c:5}.mgrid.n12{--c:4}
.kb{--g:8px}
.kb>.key{flex:0 0 calc((100% - 8 * var(--g)) / 9 - .1px);min-width:0}
.kb>.key.wide,.kb>.key.go{flex-basis:calc(4 * (100% - 8 * var(--g)) / 9 + 3 * var(--g) - .1px)}
/* rows of choices: every button in a row is the same width (set by js/layout.js) and rows stay centred */
.levels,.tabs,.cl-opts,.ptools,.ordrow,.row,.sayopts,.name-tools,.tray{justify-content:center}
.levels{display:flex;flex-wrap:wrap;gap:10px}
.eqw>*{box-sizing:border-box;text-align:center;justify-content:center}
@media (max-width:600px){
  .kb{--g:5px}
  .mgrid,.mgrid.n6{--c:3}.mgrid.n8{--c:4}.mgrid.n10{--c:4}.mgrid.n12{--c:3}
}

.cl-opts{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));max-width:calc(var(--n,3) * 230px);margin-left:auto;margin-right:auto}
.cl-opts>.cl-opt{width:100%;min-width:0;padding-left:8px;padding-right:8px;text-align:center;overflow-wrap:normal;hyphens:none}
.cl-opts[style*="--n: 1"]{max-width:320px}
