/* Harjutaja ühine välimus (raamistiku etapp 1, 15. sept 2026).

   Mooduli CSS laeb PÄRAST seda faili ja määrab ainult oma aktsendi
   (--accent, --accent-edge, --accent-ink, --warm, --warm-soft) ja selle,
   mis on päriselt mooduli oma: joonistus, maskoti animatsioonid,
   vastamisviis. Kõik muu — päis, nupud, kiibid, riba, taimer, tagasiside,
   vihjekaart, tulemus, edetabel, veateate aken — on siin ja seega igas
   moodulis ühesugune. Kui muudad siin, muutub see korraga kõigis.

   Vaikimisi aktsent on Harjutaja kollane. */
:root{
  --paper:#fdfdfa;
  --ink:#1d2f4f;
  --ink-soft:#5a6a82;
  --edge:#c3d4ea;
  --rule-soft:#d3e1f3;
  --ok:#1d7f53;
  --ok-bg:#e3f5ec;
  --bad:#b8432d;
  --bad-bg:#fbe9e4;
  --mid-bg:#fff4d4;
  --card:#fff;
  --display:"Fredoka",ui-rounded,"Arial Rounded MT Bold",system-ui,sans-serif;
  --body:"Nunito",system-ui,-apple-system,"Segoe UI",sans-serif;
  color-scheme:light;
  /* vaikimisi aktsent; moodul kirjutab üle */
  --accent:#ffd166;
  --accent-edge:#e9b93f;
  --accent-ink:#3a2c00;
  --warm:#d9803c;
  --warm-soft:#fbead9;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{
  margin:0;font-family:var(--body);font-weight:700;color:var(--ink);background:var(--paper);
  background-image:radial-gradient(circle at 50% -10%, var(--warm-soft) 0%, transparent 55%);
  background-repeat:no-repeat;-webkit-text-size-adjust:100%;
}
.app{max-width:520px;margin:0 auto;padding:14px 16px 40px;display:flex;flex-direction:column;gap:18px}
.screen{display:flex;flex-direction:column;gap:18px}
.top{display:flex;align-items:center;gap:10px;min-height:44px}
.back{color:var(--ink-soft);text-decoration:none;font-weight:800;font-size:15px}
.icon-btn{width:44px;height:44px;flex:0 0 auto;display:grid;place-items:center;font:inherit;font-size:18px;color:var(--ink);background:var(--card);border:1.5px solid var(--edge);border-radius:14px;cursor:pointer}
.icon-btn[aria-pressed="false"] .wave{display:none}
.icon-btn[aria-pressed="true"] .off{display:none}
.top .back{margin-right:auto}
.icon-btn:disabled{opacity:.4;cursor:default}
/* Muusikanupp: võistluses muusikat ei ole, seega pole ka nuppu. */
#s-game.voistlus [data-muusika]{display:none!important}
/* Eelmise ülesande vaatamine (sama muster nagu Kirjutajas). */
.reviewbar{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  background:var(--warm-soft);border:1.5px solid var(--accent-edge);border-radius:14px;
  padding:8px 10px 8px 14px;font-weight:700;font-size:14.5px}
.reviewbar .ghost{padding:7px 12px;font-size:14px}
.track{flex:1;height:10px;border-radius:999px;background:var(--rule-soft);overflow:hidden}
.track i{display:block;height:100%;width:0;background:var(--accent);border-radius:999px;transition:width .25s ease}

.hero{text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px}
.mascot{border:0;background:none;padding:0;cursor:pointer;width:150px}
.mascot svg{width:100%;height:auto}
h1{font-family:var(--display);font-weight:600;font-size:40px;margin:0}
.sub{margin:0;color:var(--ink-soft);font-weight:600;line-height:1.45}

.block{display:flex;flex-direction:column;gap:10px}
.label{font-size:13px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);align-self:flex-start}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font:inherit;font-weight:800;color:var(--ink);background:var(--card);border:1.5px solid var(--edge);border-radius:999px;padding:8px 16px;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent-edge)}
.row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.primary{font-family:var(--display);font-weight:600;font-size:20px;background:var(--accent);color:var(--accent-ink);border:1.5px solid var(--accent-edge);border-radius:16px;padding:12px 28px;cursor:pointer;box-shadow:0 3px 0 var(--accent-edge)}
.primary:active{transform:translateY(2px);box-shadow:0 1px 0 var(--accent-edge)}
.primary.big{font-size:26px;padding:16px 28px}
/* Harjuta ja Võistle kõrvuti on ühesuurused. See rida peab olema pärast
   .primary.big-i, muidu on Harjuta suurem kui Võistle (nii oli Kellas ja
   Teisendajas kuni 15. sept). */
.two .big{font-size:22px;padding:15px 10px}
.compete{font-family:var(--display);font-weight:600;font-size:20px;background:var(--ink);color:#fff;border:1.5px solid var(--ink);border-radius:16px;padding:12px 28px;cursor:pointer;box-shadow:0 3px 0 #14223b}
.compete:active{transform:translateY(2px);box-shadow:0 1px 0 #14223b}
.compete[disabled]{background:var(--card);color:var(--ink-soft);border-color:var(--edge);box-shadow:none;cursor:default;transform:none}
.compete.armed{background:var(--bad);border-color:var(--bad);box-shadow:0 3px 0 #8f3222}
/* Ootel ✕: laps vaatab oma sõrme, seega peab muutuma nupp ise. */
.icon-btn.armed{background:var(--bad);border-color:var(--bad);color:#fff}
.quitnote{margin:0 0 4px;padding:10px 12px;border-radius:12px;background:var(--bad-bg);border:1.5px solid var(--bad);color:var(--bad);font-weight:700;font-size:15.5px;line-height:1.4}
.ghost{font:inherit;font-weight:800;color:var(--ink);background:var(--card);border:1.5px solid var(--edge);border-radius:14px;padding:12px 18px;cursor:pointer}
button:focus-visible,a:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.count-note,.hint-small{margin:0;color:var(--ink-soft);font-weight:600;font-size:13px;line-height:1.5}
.klass-line{margin:0;font-weight:800}

/* kellaaegade kaart */
.map{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.mcell{background:var(--card);border:1.5px solid var(--edge);border-radius:14px;padding:8px 4px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}
.mcell.y{background:var(--mid-bg);border-color:var(--accent-edge)}
.mcell.g{background:var(--ok-bg);border-color:var(--ok)}
.mcell small{font-size:11px;font-weight:700;color:var(--ink-soft);line-height:1.25}

/* mäng */
.stage{display:flex;flex-direction:column;align-items:center;gap:14px}
.timer{width:100%;max-width:420px;height:8px;border-radius:999px;background:var(--rule-soft);overflow:hidden}
.timer i{display:block;height:100%;width:100%;background:var(--ok);border-radius:999px;transition:width .12s linear}
.timer i.low{background:var(--bad)}
@media (prefers-reduced-motion:reduce){.timer i{transition:none}}
.ask{margin:0;text-align:center;font-family:var(--display);font-weight:600;font-size:22px;line-height:1.35}
.opts{display:grid;gap:10px;width:100%}
.opt{font:inherit;font-weight:800;font-size:18px;color:var(--ink);background:var(--card);border:2px solid var(--edge);border-radius:16px;padding:14px 12px;cursor:pointer;text-align:center}
.opt.right{border-color:var(--ok);background:var(--ok-bg)}
.opt.wrong{border-color:var(--bad);background:var(--bad-bg)}
.opt[disabled]{cursor:default}
.feedback{min-height:26px;font-family:var(--display);font-weight:600;font-size:20px;text-align:center}
.feedback.ok{color:var(--ok)}
.feedback.bad{color:var(--bad)}
.hintcard{display:flex;gap:10px;align-items:flex-start;background:var(--card);border:1.5px solid var(--edge);border-radius:16px;padding:12px 14px;width:100%}
.hintcard svg{width:52px;flex:0 0 auto}
.hinttext{font-weight:600;line-height:1.5;font-size:15px}
.hinttext b{font-weight:800}

/* tulemus */
.res-hero{display:flex;flex-direction:column;align-items:center;gap:6px}
.res-hero svg{width:170px;height:auto}
.bubble{font-family:var(--display);font-weight:600;font-size:28px;background:var(--card);border:1.5px solid var(--edge);border-radius:18px;padding:10px 20px}
.stats{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}
.stat{background:var(--card);border:1.5px solid var(--edge);border-radius:14px;padding:10px 16px;text-align:center;min-width:110px}
.stat b{display:block;font-family:var(--display);font-size:30px;font-weight:600;font-variant-numeric:tabular-nums}
.stat span{font-size:12px;font-weight:700;color:var(--ink-soft)}
.words{display:flex;flex-wrap:wrap;gap:10px}
.vaeg{display:flex;flex-direction:column;align-items:center;gap:2px;width:86px;text-align:center}
.vaeg small{font-size:11px;font-weight:700;color:var(--ink-soft);line-height:1.25}

/* edetabel */
.board{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.brow{display:flex;align-items:center;gap:10px;background:var(--card);border:1.5px solid var(--edge);border-radius:14px;padding:10px 12px}
.brow.me{border-color:var(--accent-edge);background:var(--mid-bg)}
.brow.empty{display:block;color:var(--ink-soft);font-weight:600;line-height:1.5}
.brow .pos{font-family:var(--display);font-weight:600;font-size:18px;color:var(--ink-soft);min-width:28px;font-variant-numeric:tabular-nums}
.brow .mid{display:flex;flex-direction:column;flex:1;min-width:0}
.brow .nm{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brow .mid small{color:var(--ink-soft);font-weight:600;font-size:12px}
.brow .val{font-family:var(--display);font-weight:600;font-size:24px;font-variant-numeric:tabular-nums}

/* abi ja jalus */
.help{background:var(--card);border:1.5px solid var(--edge);border-radius:16px;padding:12px 14px}
.help summary{cursor:pointer;font-weight:800}
.help-body{font-weight:600;line-height:1.55;font-size:15px}
.help-body p{margin:10px 0}
.help-body ul{margin:8px 0;padding-left:20px}
.help-body li{margin:4px 0}
.credit{color:var(--ink-soft);font-weight:600;font-size:13px;text-align:center;line-height:1.6}
.credit a{color:var(--ink)}

/* --- veast teada andmine ---
   Nupp on lause all ja tekstiga: kusimark paisereal ei utle kellelegi midagi. */
.flag-note{margin:10px 0 0;text-align:center;color:var(--ok);font-weight:700}
.flagbtn{margin:18px auto 0;display:block;font:inherit;font-size:14px;font-weight:700;
  color:var(--ink-soft);background:none;border:0;border-bottom:1.5px dotted var(--ink-soft);
  padding:2px 0;cursor:pointer}
.flagbtn:hover{color:var(--ink);border-bottom-color:var(--ink)}
.flagwrap{position:fixed;inset:0;z-index:8;background:rgba(29,47,79,.45);
  display:flex;align-items:flex-end;justify-content:center}
.flagcard{background:var(--card);width:100%;max-width:520px;border-radius:20px 20px 0 0;
  padding:18px 16px 22px;display:flex;flex-direction:column;gap:8px;
  box-shadow:0 -8px 24px rgba(29,47,79,.18)}
.flagcard h3{margin:0;font-family:var(--display);font-weight:600;font-size:22px}
.flag-sent{margin:0 0 4px;color:var(--ink-soft)}
.flagopts{display:flex;flex-direction:column;gap:8px}
.flagopts .ghost{text-align:left}
.flag-cancel{margin-top:6px;align-self:center}

/* Raamistiku etapp 2: ringi pikkus nähtav nupul ja mängu ajal („4 / 12"). */
.big small{display:block;font-family:var(--body);font-size:13px;font-weight:700;opacity:.75;margin-top:2px}
.loendur{flex:0 0 auto;min-width:3.2em;text-align:center;font-weight:800;font-size:14px;color:var(--ink-soft);font-variant-numeric:tabular-nums}
.flagopts button:focus-visible{outline:3px solid var(--ink);outline-offset:2px}

/* Raamistiku etapp 4: ühine edetabel ja seadete leht. */
.scr-title{flex:1;margin:0;font-family:var(--display);font-weight:600;font-size:22px;text-align:center}
.bcard{display:flex;flex-direction:column;gap:10px;background:var(--card);border:1.5px solid var(--edge);border-radius:16px;padding:14px}
.bcard .ghost{align-self:flex-start}
.classline{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.classline b{font-family:var(--display);font-weight:600;font-size:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.classline span{font-family:var(--display);font-weight:600;letter-spacing:.12em;color:var(--ink-soft);flex:none}
.goal small{display:flex;justify-content:space-between;gap:8px;color:var(--ink-soft);font-weight:700;font-size:12px;margin-top:6px}
.goal .track{height:10px}
.brow.gap{justify-content:center;background:none;border:0;padding:0;color:var(--ink-soft);font-weight:800}
.field{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--card);border:1.5px solid var(--edge);border-radius:16px;padding:12px 14px}
.field small{display:block;color:var(--ink-soft);font-weight:600;font-size:13px;line-height:1.35}
.flabel{font-weight:800}
.field input{font:inherit;font-weight:700;color:var(--ink);border:1.5px solid var(--edge);border-radius:12px;padding:8px 10px;width:10em;max-width:50%}
.seg{display:flex;flex:none;border:1.5px solid var(--edge);border-radius:12px;overflow:hidden}
.seg button{font:inherit;font-weight:800;font-size:14px;color:var(--ink);background:var(--card);border:0;padding:9px 12px;cursor:pointer}
.seg button.on{background:var(--accent);color:var(--accent-ink)}
.setrow{margin:0;font-weight:700}
.setrow b{font-family:var(--display);font-weight:600;letter-spacing:.08em}
#setLeave.armed{background:var(--bad);border-color:var(--bad);color:#fff}
#setExtra:empty{display:none}
.goal small span:last-child{white-space:nowrap}
