:root{
  --bg:#fbf6ec; --paper:#ffffff; --ink:#1f2a37; --muted:#5b6675; --line:#e6dccb;
  --math:#e2553f; --math-soft:#fde7e1; --ela:#1f8a87; --ela-soft:#dcf2ef;
  --good:#1d9a55; --good-soft:#dff5e7; --bad:#d23c3c; --bad-soft:#fde3e3;
  --sun:#f4b63f; --shadow:0 2px 0 rgba(31,42,55,.08), 0 8px 24px rgba(31,42,55,.06);
  --radius:18px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#16191f; --paper:#20252d; --ink:#f1ece2; --muted:#a9b1bc; --line:#343b46;
    --math-soft:#3a2420; --ela-soft:#173533; --good-soft:#163525; --bad-soft:#3a1d1d;
    --shadow:0 2px 0 rgba(0,0,0,.3);
  }
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:"Andika","Trebuchet MS",system-ui,sans-serif;
  font-size:20px;line-height:1.45;-webkit-text-size-adjust:100%}
a{color:inherit}
.wrap{max-width:860px;margin:0 auto;padding:16px}
button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer}

/* ---------- Home ---------- */
.hero{padding:28px 4px 8px}
.hero h1{font-size:clamp(30px,6vw,46px);line-height:1.1;margin:0 0 6px;letter-spacing:-.5px}
.hero p{margin:0;color:var(--muted)}
.hero .wave{display:inline-block;transform-origin:70% 70%;animation:wave 2.4s ease-in-out 1}
@keyframes wave{0%,60%,100%{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%,40%{transform:rotate(-8deg)}}
.tabs{display:flex;gap:10px;margin:22px 0 8px;flex-wrap:wrap}
.tab{border:2px solid var(--line);background:var(--paper);border-radius:999px;padding:10px 20px;font-weight:700}
.tab[aria-selected="true"].math{background:var(--math);border-color:var(--math);color:#fff}
.tab[aria-selected="true"].ela{background:var(--ela);border-color:var(--ela);color:#fff}
.band{margin:22px 0 6px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.band h2{font-size:22px;margin:0}
.band span{color:var(--muted);font-size:16px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:10px}
.tile{display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;
  background:var(--paper);border:2px solid var(--line);border-radius:16px;min-height:84px;padding:8px;
  box-shadow:var(--shadow);transition:transform .12s}
.tile:hover{transform:translateY(-2px)}
.tile b{font-size:26px;line-height:1}
.tile small{font-size:13px;color:var(--muted);margin-top:4px}
.tile.done{border-color:var(--good)}
.tile.done small{color:var(--good);font-weight:700}
.panel[hidden]{display:none}
.math .tile b{color:var(--math)} .ela .tile b{color:var(--ela)}
.foot{margin:36px 0 20px;color:var(--muted);font-size:15px}

/* ---------- Quiz ---------- */
.top{display:flex;align-items:center;gap:12px;padding:6px 0 10px}
.home{display:inline-flex;align-items:center;gap:6px;text-decoration:none;font-weight:700;font-size:16px;
  border:2px solid var(--line);background:var(--paper);border-radius:999px;padding:6px 14px}
.qtitle{font-weight:700;font-size:18px;flex:1;min-width:0}
.qtitle small{display:block;color:var(--muted);font-weight:400;font-size:14px}
.dots{display:flex;gap:6px;margin:4px 0 14px}
.dot{flex:1;height:10px;border-radius:99px;background:var(--line)}
.dot.now{background:var(--sun)} .dot.ok{background:var(--good)} .dot.no{background:var(--bad)}
.card{background:var(--paper);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}
.subject-math .card{border-top:8px solid var(--math)}
.subject-ela .card{border-top:8px solid var(--ela)}
.meta{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.tag{font-size:14px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:var(--muted)}
.speak{border:2px solid var(--line);background:var(--bg);border-radius:999px;padding:6px 14px;font-size:16px;font-weight:700;white-space:nowrap}
.speak.on{background:var(--sun);border-color:var(--sun);color:#1f2a37}
.passage{background:var(--bg);border-left:6px solid var(--ela);border-radius:10px;padding:12px 16px;margin:0 0 14px}
.passage h3{margin:0 0 4px;font-size:19px}
.passage p{margin:0 0 6px}
.prompt{font-size:clamp(22px,4.2vw,28px);font-weight:700;margin:4px 0 14px}
.prompt b,.prompt u{color:var(--ela)}
.subject-math .prompt b{color:var(--math)}
.visual{display:flex;justify-content:center;margin:6px 0 16px;overflow-x:auto}
.visual svg{max-width:100%;height:auto}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.opts.wide{grid-template-columns:1fr}
@media (max-width:520px){.opts{grid-template-columns:1fr}}
.opt{display:flex;align-items:center;gap:12px;text-align:left;background:var(--paper);border:3px solid var(--line);
  border-radius:14px;padding:12px 14px;min-height:62px;font-size:22px;transition:transform .08s,border-color .15s}
.opt:hover:not([disabled]){border-color:var(--sun);transform:translateY(-1px)}
.opt .k{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:17px;font-weight:700;
  background:var(--bg);border:2px solid var(--line)}
.opt svg{max-height:110px;width:auto}
.opt[disabled]{cursor:default}
.opt.right{border-color:var(--good);background:var(--good-soft)}
.opt.right .k{background:var(--good);border-color:var(--good);color:#fff}
.opt.wrong{border-color:var(--bad);background:var(--bad-soft)}
.opt.wrong .k{background:var(--bad);border-color:var(--bad);color:#fff}
.opt.dim{opacity:.55}
.feedback{margin-top:16px;border-radius:14px;padding:14px 16px;font-size:19px}
.feedback.ok{background:var(--good-soft);border:2px solid var(--good)}
.feedback.no{background:var(--bad-soft);border:2px solid var(--bad)}
.feedback strong{display:block;font-size:22px;margin-bottom:2px}
.actions{display:flex;justify-content:flex-end;margin-top:16px}
.next{background:var(--ink);color:var(--bg);border:0;border-radius:999px;padding:14px 28px;font-weight:700;font-size:20px}
.subject-math .next{background:var(--math);color:#fff}
.subject-ela .next{background:var(--ela);color:#fff}
.score-big{font-size:64px;font-weight:700;text-align:center;line-height:1;margin:10px 0 4px}
.stars{text-align:center;font-size:44px;letter-spacing:6px;margin:6px 0}
.center{text-align:center}
.review{margin:18px 0 0;padding:0;list-style:none}
.review li{display:flex;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:17px}
.review li .m{flex:none;width:26px;text-align:center;font-weight:700}
.review .ok .m{color:var(--good)} .review .no .m{color:var(--bad)}
.endbtns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:18px}
.endbtns a,.endbtns button{text-decoration:none;border-radius:999px;padding:12px 22px;font-weight:700;border:2px solid var(--line);background:var(--paper)}
.endbtns .primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.subject-math .endbtns .primary{background:var(--math);border-color:var(--math);color:#fff}
.subject-ela .endbtns .primary{background:var(--ela);border-color:var(--ela);color:#fff}

/* ---------- Visual helpers ---------- */
.stroke{stroke:var(--ink)} .fillink{fill:var(--ink)} .fillpaper{fill:var(--paper)}
.fillmath{fill:var(--math)} .fillela{fill:var(--ela)} .fillsun{fill:var(--sun)} .fillsoft{fill:var(--bg)}
.pgraph{border-collapse:collapse;font-size:18px}
.pgraph td{padding:6px 10px;border:2px solid var(--line)}
.pgraph td:first-child{font-weight:700;white-space:nowrap}
.pgraph td:last-child{font-size:24px;letter-spacing:2px}
.pgraph caption{font-weight:700;margin-bottom:6px}
.pgraph .key{font-size:15px;color:var(--muted);caption-side:bottom;padding-top:6px}
.emoji-row{font-size:34px;letter-spacing:6px;text-align:center}
.coins{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.coin{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:700;
  border:3px solid #9b7a2f;background:#f1d48a;color:#4b3a12}
.coin.silver{border-color:#7d8691;background:#dfe3e8;color:#2e3540}
.coin.small{width:48px;height:48px;font-size:11px}
.coin.big{width:72px;height:72px}
.tally{font-family:inherit;font-size:28px;letter-spacing:4px}

/* parents page */
.prose h2{margin-top:28px}
.prose li{margin:6px 0}
.prose .callout{background:var(--paper);border:2px solid var(--line);border-radius:14px;padding:14px 18px}
.prose table{border-collapse:collapse;width:100%;font-size:17px}
.prose th,.prose td{border:1px solid var(--line);padding:8px;text-align:left;vertical-align:top}
