/* Lexia - de letter van Taalkrak (14-10) */
@font-face{font-family:'Lexia';src:url(data:font/woff;base64,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) format('woff');font-weight:400;font-style:normal;font-display:block}

/* Taalkrak oefenmotor - opmaak - versie 1 */

:root{
  /* --- bediening: alles waar je iets mee kan doen. Knoppen, keuze, focus,
     invulvakjes. Bewust geen merkkleur, zodat de bediening nooit met de
     inhoud concurreert. --- */
  --blauw:#5170ff;
  --blauw-licht:#eef1ff;

  /* --- merk: hiermee ziet Taalkrak eruit als Taalkrak. Alleen voor de
     inhoud: wat het kind kleurt, de wijzers, de breukdelen, de titel. --- */
  --paars:#b155e4;
  --paars-licht:#f7edfd;
  --oranje:#f08c2e;
  --oranje-licht:#fdf0e2;
  /* Oranjegeel als TEKST haalt maar 2,1 tegen wit. Waar de merkkleur een
     woord of een teken moet zijn - de bewerkingen boven een tabel - gaat ze
     een paar tinten donkerder: 5,3. */
  --oranje-donker:#a2560f;
  /* Oranjegeel als LIJN of TEKENTJE - een rand, een luidsprekertje - haalt
     tegen wit maar 2,5 en een tekentje dat betekenis draagt heeft er 3 nodig.
     Een paar tinten dieper haalt 4,0 en is nog altijd oranjegeel, geen bruin.
     Voor vlakken blijft --oranje gelden: daar staat de kleur zelf voor de
     vorm, dus daar speelt dit niet. */
  --oranje-lijn:#c96404;
  /* Hetzelfde verhaal voor paars als LIJN of TEKST op wit: --paars haalt 3,97
     en dat is net genoeg voor grote vette letters, maar niet voor kleine en
     niet met lucht. Deze tint haalt 5,23, ook met wit erop. */
  --paars-diep:#9b3fd0;
  /* De markeerkleur 'groen' is olijfgroen, bewust ver van het groen van
     'juist'. Iets donkerder dan het olijf in de paarkleuren, want als tekst
     op een lichte vulling moet het te lezen blijven (contrast 4,3). */
  --olijf:#6b7a15;
  --olijf-licht:#f2f4e3;

  /* --- oordeel: juist en fout. Bewust geen merkkleur, zodat een oordeel
     nooit voor inhoud kan doorgaan. Roest is donker genoeg om ook op een
     fel verlicht digibord te lezen (contrast 5,2 tegen de achtergrond);
     het koraalrood dat hier eerder stond haalde maar 2,8. --- */
  --groen:#22a06b;
  --groen-licht:#e6f6ef;
  --groen-diep:#1b7f57;   /* voor wit erop: #22a06b haalt maar 3,3 */
  --roest:#b4432a;
  --roest-licht:#faeae5;
  /* 'zo hoorde het', alleen op de getallenas: daar zou zwart wegvallen
     tegen de as zelf. Dezelfde kleur als in de oudere oefeningen. */
  --cyaan:#06b6d4;
  --cyaan-licht:#e0f7fd;
  --inkt:#1f2430;

  /* --- materiaal: de kleuren van het MAB-materiaal in de klas. De staaf van
     tien is groen, de losse blokjes goudgeel. Ze horen niet bij het merk en
     niet bij het oordeel; het zijn de dingen zelf, en een kind herkent ze
     van de bak op de tafel. --- */
  --mab-staaf:#22a06b;
  --mab-staaf-lijn:#1b7f57;
  --mab-blok:#f6ce4c;
  --mab-blok-lijn:#bf911c;
  --grijs:#6b7280;
  /* Kladwerk in een oefening - het onthoud- en leenvakje bij het cijferen.
     Grijzig blauw: duidelijk iets anders dan een antwoordvakje, maar het
     trekt geen aandacht. */
  --hulp:#eff2f7;
  --hulp-lijn:#9aa7bd;
  --hulp-inkt:#64748b;
  --lijn:#e5e7eb;
  --lijn-sterk:#c3cadb;
  --papier:#ffffff;
  --achtergrond:#f6f7fb;
  --rond:16px;
  --schaduw:0 2px 10px rgba(31,36,48,.08);
  --s:1;
}

*{box-sizing:border-box}

/* Op een tablet mag er nergens tekst geselecteerd worden: als de stift
   even naast het vakje neerkomt, kleurt anders de opgave blauw. Alleen in
   een invulveld en in het resultaatvenster blijft selecteren mogelijk. */
body{
  -webkit-touch-callout:none;
  -webkit-user-select:none;user-select:none;
  -webkit-tap-highlight-color:transparent;
}
input,textarea,.tk-verzonden pre{-webkit-user-select:text;user-select:text}
img{-webkit-user-drag:none;user-drag:none}

html,body{margin:0;padding:0}
body{
  background:var(--achtergrond);
  color:var(--inkt);
  font-family:'Lexia',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  font-size:calc(19px * var(--s));
  line-height:1.5;
  -webkit-text-size-adjust:100%;
}

.tk-blad{max-width:calc(900px * var(--s));margin:0 auto;padding:calc(20px * var(--s))}
/* Staat het kladpapier ernaast, dan mag het blad breder worden. */
.tk-blad.tk-breeduit{max-width:calc(1340px * var(--s))}

/* ---------- kop met gereedschap rechts ---------- */
/* De titel en het gereedschap staan naast elkaar zolang dat past. Wordt het
   te krap - een smal scherm, of een oefening die vergroot staat - dan zakt
   het gereedschap naar een eigen regel in plaats van de titel te versmallen
   tot een kolom van één letter breed. */
.tk-koprij{display:flex;align-items:flex-start;gap:calc(16px * var(--s));flex-wrap:wrap}
.tk-koprij .tk-titel{flex:1 1 calc(220px * var(--s));min-width:0;margin-bottom:calc(10px * var(--s))}
.tk-koprij .tk-gereedschap{margin-left:auto}
.tk-gereedschap{display:flex;gap:calc(10px * var(--s));flex:none;padding-top:calc(2px * var(--s))}
.tk-rondje{
  width:calc(52px * var(--s));height:calc(52px * var(--s));border-radius:50%;
  border:0;cursor:pointer;background:#fff;box-shadow:var(--schaduw);
  display:inline-flex;align-items:center;justify-content:center;padding:0;
}
.tk-rondje svg{width:calc(24px * var(--s));height:calc(24px * var(--s));fill:var(--blauw)}
.tk-rondje.tk-paars svg{fill:var(--paars)}
.tk-rondje.aan{background:var(--blauw)}
.tk-rondje.aan svg{fill:#fff}
.tk-rondje.tk-paars.aan{background:var(--paars)}
/* Oranjegeel is te licht voor wit erop (contrast 2,3), dus het teken wordt
   donkerbruin - dezelfde tekstkleur als de oranje paarkleur bij koppelen. */
.tk-rondje.tk-oranje svg{fill:var(--oranje)}
.tk-rondje.tk-oranje.aan{background:var(--oranje)}
.tk-rondje.tk-oranje.aan svg{fill:#3d2100}
.tk-rondje:focus-visible{outline:3px solid var(--blauw);outline-offset:3px}

/* ---------- werkblad: oefening en kladpapier ---------- */
.tk-werkblad{display:flex;flex-wrap:wrap;gap:calc(18px * var(--s));align-items:flex-start}
.tk-werkblad > .tk-kaart{flex:1 1 100%;order:2;margin-top:0}
.tk-werkblad.klad-naast > .tk-kaart{flex:1 1 calc(560px * var(--s))}
.tk-werkblad.klad-naast > .tk-klad-paneel{flex:1 1 calc(380px * var(--s));order:3;position:sticky;top:calc(16px * var(--s))}
.tk-werkblad.klad-boven > .tk-klad-paneel{
  /* Boven de oefening mag het kladpapier niet het hele scherm opeten:
     de opgave moet zichtbaar blijven zonder te scrollen. */
  flex:1 1 100%;order:1;min-height:calc(200px * var(--s));
  max-height:min(38vh, calc(300px * var(--s)));
}

/* ---------- kop ---------- */
.tk-kop{margin-bottom:calc(18px * var(--s))}
/* Hoe breed een invulvak hoogstens mag worden. `min-width` wint van
   `max-width`, dus de grens moet in de min-width zelf zitten - anders duwt
   een vakje voor een woord van acht letters de hele kaart uit beeld. */
:root{--vakbreed:calc(100vw - 96px)}
.tk-titel{
  /* Begrensd: bij 180 procent zou 30px op 54 uitkomen, en dan past er op een
     telefoon geen woord meer op een regel. De titel is de naam van de
     oefening, niet de oefening zelf. */
  font-size:min(calc(30px * var(--s)), calc(30px * 1.25));
  font-weight:700;margin:0 0 calc(10px * var(--s));
  text-wrap:balance;line-height:1.25;overflow-wrap:anywhere;
}
.tk-balk{height:calc(10px * var(--s));background:var(--lijn);border-radius:999px;overflow:hidden}
/* De voortgangsbalk is geen bediening - je kan er niets mee - maar een
   stukje Taalkrak in beeld. Vandaar de merkkleur. */
.tk-balk i{display:block;height:100%;width:0;background:var(--paars);border-radius:999px;transition:width .35s ease}
.tk-teller{color:var(--grijs);font-size:calc(15px * var(--s));margin-top:calc(6px * var(--s))}

/* ---------- kaart ---------- */
.tk-kaart{
  background:var(--papier);border-radius:var(--rond);box-shadow:var(--schaduw);
  padding:calc(22px * var(--s));margin:calc(16px * var(--s)) 0;
}
.tk-vraag{font-size:calc(22px * var(--s));font-weight:600;margin:0 0 calc(16px * var(--s));text-wrap:balance}
/* De zin waar de vraag over gaat, als eigen regel onder de vraag. Niet vet -
   dat is de opdracht - maar wel in gewone leesmaat, want dit is het stuk dat
   een kind echt moet lezen. Een lichte vulling en een streep links zetten hem
   apart van de opdracht erboven en van de antwoorden eronder; zonder dat viel
   hij weg tussen de invulregels. */
.tk-zinregel{
  font-size:calc(24px * var(--s));line-height:1.5;font-weight:400;
  margin:calc(18px * var(--s)) 0 calc(16px * var(--s));
  padding:calc(12px * var(--s)) calc(16px * var(--s));
  background:var(--achtergrond);
  border-left:calc(4px * var(--s)) solid var(--lijn-sterk);
  border-radius:calc(10px * var(--s));
  text-wrap:balance;
}
/* Staat hij meteen onder de opdracht, dan hoeft er geen lucht boven: de
   opdracht brengt die zelf al mee. */
.tk-vraag + .tk-zinregel{margin-top:0}
@media (max-width:520px){
  .tk-zinregel{font-size:calc(21px * var(--s));padding:calc(10px * var(--s)) calc(12px * var(--s))}
}
/* Het luidsprekertje op een keuzeknop. */
.tk-keuze.met-oortje{display:flex;align-items:center;gap:calc(14px * var(--s));justify-content:center}
.tk-oortje{
  flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  width:calc(44px * var(--s));height:calc(44px * var(--s));
  border-radius:999px;border:calc(2px * var(--s)) solid var(--oranje);
  background:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;
}
.tk-oortje:hover{background:var(--oranje-licht, #fff4e6)}
.tk-oortje .tk-luistermerk{width:calc(24px * var(--s));height:calc(24px * var(--s))}
.tk-oortje.speelt{background:var(--oranje);}
.tk-oortje.speelt .tk-luistermerk{fill:#fff;stroke:#fff}
.tk-onderwerp{
  font-size:calc(21px * var(--s));color:var(--inkt);
  margin:calc(-6px * var(--s)) 0 calc(16px * var(--s));text-wrap:pretty;
}
.tk-hint{color:var(--grijs);font-size:calc(16px * var(--s));margin:calc(-8px * var(--s)) 0 calc(14px * var(--s))}

/* ---------- knoppen ---------- */
.tk-knoppen{display:flex;gap:calc(12px * var(--s));flex-wrap:wrap;align-items:center;margin-top:calc(18px * var(--s))}
/* display:flex wint van het hidden-kenmerk, dus de knoppenrij bleef op het
   eindscherm staan met een verdwaalde knop Klaar erin. */
.tk-knoppen[hidden]{display:none}
.tk-knop{
  font:inherit;font-weight:700;border:0;cursor:pointer;
  padding:calc(14px * var(--s)) calc(28px * var(--s));border-radius:999px;
  background:var(--blauw);color:#fff;box-shadow:0 calc(3px * var(--s)) calc(10px * var(--s)) rgba(81,112,255,.3);
  min-height:calc(52px * var(--s));
}
.tk-knop:hover{filter:brightness(1.06)}
.tk-knop:active{transform:translateY(1px)}
.tk-knop.tk-stil{background:#fff;color:var(--blauw);box-shadow:inset 0 0 0 2px var(--blauw)}
.tk-knop:focus-visible{outline:3px solid var(--blauw);outline-offset:3px}
.tk-knop[hidden]{display:none}
.tk-knop[disabled]{opacity:.4;cursor:default;filter:none;transform:none}

/* ---------- feedback ---------- */
.tk-feedback{
  margin-top:calc(16px * var(--s));font-weight:600;font-size:calc(18px * var(--s));
  min-height:calc(28px * var(--s));
}
.tk-feedback.goed{color:var(--groen)}
.tk-feedback.mis{color:var(--roest)}
.tk-feedback-regel{margin:0 0 calc(4px * var(--s))}
.tk-feedback-regel:last-child{margin-bottom:0}
/* De tip nadat het kind op Opnieuw klikte: leesbaar, maar niet langer een
   verwijt. */
.tk-feedback.tip{color:var(--grijs)}

/* Alles wat zegt "dit klopte niet" is roest. Een fout is geen alarm; het is
   iets om nog eens naar te kijken - vandaar geen fel rood. */
/* juist en fout dragen hun eigen kleur, ook voor er gekozen is: het woord
   'juist' in het groen en 'fout' in de roestkleur. Het oordeel na Controleer
   gebruikt diezelfde twee kleuren, dus dat leest vanzelf. */
.tk-jf .tk-keuze.tk-juistknop{color:var(--groen)}
.tk-jf .tk-keuze.tk-foutknop{color:var(--roest)}
.tk-jf .tk-keuze.tk-juistknop.gekozen{border-color:var(--groen);background:var(--groen-licht)}
.tk-jf .tk-keuze.tk-foutknop.gekozen{border-color:var(--roest);background:var(--roest-licht)}

/* ---------- invulvak ---------- */
.tk-vak{
  display:inline-flex;align-items:stretch;vertical-align:middle;
  position:relative;margin:0 calc(12px * var(--s));
}
/* Vier pixels lucht naast een vakje van honderd is geen lucht: het vakje en
   de zin ernaast lezen als een ding. Negen is genoeg om te zien dat het twee
   dingen zijn, en nog altijd weinig genoeg om bij elkaar te horen. */
.tk-vak-veld{
  position:relative;background:var(--blauw-licht);
  border:0;border-bottom:calc(3px * var(--s)) solid var(--blauw);
  border-radius:calc(8px * var(--s)) calc(8px * var(--s)) 0 0;
  min-width:min(calc(210px * var(--s)), var(--vakbreed));height:calc(78px * var(--s));
  touch-action:pinch-zoom;
}
.tk-vak-veld.breed{min-width:min(calc(360px * var(--s)), var(--vakbreed))}

/* De ingevulde tekens staan onder het schrijfdoek. Het doek ligt erboven en
   vangt alle aanrakingen; deze regel raakt de stift dus nooit. */
.tk-vak-veld .tk-tekst{
  position:absolute;inset:0;z-index:1;
  display:flex;align-items:center;justify-content:flex-start;
  padding:0 calc(12px * var(--s));gap:0;
  font-size:calc(30px * var(--s));font-weight:400;line-height:1;
  color:var(--inkt);pointer-events:none;overflow:hidden;
}
/* Niet vet en zonder extra lucht tussen de letters: "v e g e n" las als vijf
   losse letters, en in een lange zin schoven de letters in elkaar zodra de
   rij te breed werd (een flex-kind krimpt mee). Elk teken houdt nu zijn
   eigen breedte; een spatie blijft een spatie. */
.tk-vak-veld .tk-teken{display:inline-block;flex-shrink:0;white-space:pre;min-width:calc(4px * var(--s));text-align:center}
/* Er stond hier 'schrijf hier' in het lege vakje. Weg: het vakje met zijn
   schrijflijnen zegt zelf al genoeg, en met lijnen liep die tekst er nog
   dwars doorheen ook. De klasse .leeg blijft, die dient voor meer. */
/* Schrijflijnen, zoals in een schrift: gestippeld de x-hoogte, vol de
   schrijflijn. De motor zet de hoogtes zelf (LIJN_X en LIJN_BASIS), zodat
   opmaak en herkenner dezelfde lijn bedoelen. */
.tk-lijn{position:absolute;left:0;right:0;height:0;z-index:0;pointer-events:none}
.tk-lijn-x{border-top:1px dashed rgba(31,36,48,.18)}
.tk-lijn-basis{border-top:1px solid rgba(31,36,48,.28)}
/* Met lijnen staat de ingevulde tekst OP de schrijflijn, niet in het midden.
   Let op: een percentage in padding rekent tegen de BREEDTE, in bottom tegen
   de hoogte - het moet dus met bottom. De .20em haalt de staartruimte van de
   letter eraf, zodat de schrijflijn van het lettertype op de lijn valt. */
/* De staart van een g, j, p of y hangt onder de schrijflijn. Het tekstvak
   hield op bij de lijn en sneed die staart weg; nu loopt het een stukje
   verder door, en de padding houdt de letters op dezelfde lijn. */
.tk-vak-veld.lijnen .tk-tekst{align-items:flex-end;bottom:calc(34% - .20em - .32em);padding-bottom:.32em}

.tk-vak-veld canvas{z-index:2}
.tk-vak-veld canvas{
  position:absolute;inset:0;width:100%;height:100%;display:block;border-radius:inherit;
  /* touch-action erft niet: dit moet op het doek zelf staan, anders ziet
     Safari twee snelle aanrakingen als een dubbeltik om in te zoomen en
     breekt hij de tweede streek af. */
  touch-action:pinch-zoom;
}
.tk-vak-veld input{
  position:absolute;inset:0;width:100%;height:100%;
  font:inherit;font-size:calc(24px * var(--s));font-weight:400;text-align:center;
  background:transparent;border:0;outline:0;color:var(--inkt);border-radius:inherit;
}
.tk-vak.goed .tk-vak-veld{background:var(--groen-licht);border-bottom-color:var(--groen)}
.tk-vak.mis  .tk-vak-veld{background:var(--roest-licht);border-bottom-color:var(--roest)}
/* Een vakje voor een getal is een vierkantje met een gestreepte rand: het zegt
   "hier schrijf je iets" zonder dat er iets in staat. Het komt uit de
   oefeningen van het tweede leerjaar, waar het al zo was, maar dan in het
   blauw van de bediening - een leeg vakje is nog geen oordeel. */
.tk-vak.cijfer .tk-vak-veld{
  min-width:calc(74px * var(--s));height:calc(74px * var(--s));
  background:#fff;border:calc(3px * var(--s)) dashed var(--blauw);
  border-radius:calc(16px * var(--s));
}
.tk-vak.cijfer .tk-vak-veld .tk-tekst{
  justify-content:center;padding:0;font-size:calc(34px * var(--s));font-weight:500;
}
.tk-vak.cijfer .tk-vak-veld input{font-size:calc(32px * var(--s))}
.tk-vak.cijfer.actief .tk-vak-veld{background:var(--blauw-licht)}
.tk-vak.cijfer.goed .tk-vak-veld{
  border-style:solid;border-color:var(--groen);background:var(--groen-licht);
}
.tk-vak.cijfer.mis .tk-vak-veld{
  border-style:solid;border-color:var(--roest);background:var(--roest-licht);
}
@media (max-width:480px){
  .tk-vak.cijfer .tk-vak-veld{min-width:calc(60px * var(--s));height:calc(60px * var(--s))}
  .tk-vak.cijfer .tk-vak-veld .tk-tekst{font-size:calc(28px * var(--s))}
}
.tk-vak-knop{
  align-self:flex-end;margin-left:calc(6px * var(--s));
  width:calc(44px * var(--s));height:calc(44px * var(--s));border-radius:50%;
  border:0;background:#fff;box-shadow:var(--schaduw);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;padding:0;
}
.tk-vak-knop svg{width:calc(22px * var(--s));height:calc(22px * var(--s));fill:var(--blauw)}
.tk-vak-knop:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}

/* wat de motor denkt te lezen */
.tk-lezing{
  position:absolute;left:calc(100% + 54px * var(--s));top:50%;transform:translateY(-50%);z-index:5;
  background:var(--inkt);color:#fff;border-radius:calc(10px * var(--s));
  padding:calc(8px * var(--s)) calc(12px * var(--s));font-size:calc(15px * var(--s));
  white-space:nowrap;display:flex;align-items:center;gap:calc(8px * var(--s));
  box-shadow:var(--schaduw);
}
.tk-lezing b{font-size:calc(20px * var(--s))}
.tk-lezing .tk-gok{background:var(--blauw);color:#fff;font-size:calc(19px * var(--s));
  padding:calc(6px * var(--s)) calc(16px * var(--s))}
.tk-vak.bevestigd .tk-vak-veld{background:#eef7ff}
.tk-lezing button{
  font:inherit;font-size:calc(14px * var(--s));font-weight:700;border:0;cursor:pointer;
  border-radius:999px;padding:calc(4px * var(--s)) calc(12px * var(--s));background:#fff;color:var(--inkt);
}

/* ---------- raket: letters raden ---------- */
/* De raket staat links op zijn platform en klimt op wat het kind VINDT. In de
   bron steeg hij bij elke misser en bij winst ook - dan wijst het signaal twee
   kanten op. Hier is stijgen altijd goed nieuws. */
.tk-raketboven{
  display:flex;gap:calc(20px * var(--s));align-items:stretch;
  margin:calc(8px * var(--s)) 0;
}
.tk-raketbaan{
  position:relative;flex:0 0 auto;
  width:calc(96px * var(--s));min-height:calc(260px * var(--s));
  border-radius:calc(18px * var(--s));
  /* Lucht: blauw bovenaan, lichter naar de grond toe - zoals een lucht er
     uitziet. Stond eerst andersom en in lichtpaars, en dan las het als een
     paarse koker in plaats van als de hemel waar de raket naartoe gaat. Het
     is een tekening en geen signaal, dus deze twee blauwen staan hier los van
     de bedieningskleur. */
  background:linear-gradient(180deg, #cfe1ff 0%, #f4f8ff 72%, #fff 100%);
  box-shadow:inset 0 0 0 calc(2px * var(--s)) var(--lijn);
  overflow:hidden;
}
.tk-raketgrond{
  position:absolute;left:0;right:0;bottom:0;height:calc(16px * var(--s));
  background:var(--oranje);opacity:.35;
}
.tk-raket{
  position:absolute;left:50%;bottom:calc(16px * var(--s));
  transform:translateX(-50%);
  transition:bottom .5s cubic-bezier(.3,1.2,.5,1);
  bottom:calc(16px * var(--s) + var(--hoog, 0%));
}
.tk-raketbeeld{width:calc(48px * var(--s));height:calc(96px * var(--s));display:block}
/* De vlam brandt pas als hij echt vertrekt. */
.tk-raketvlam{opacity:0;transform-origin:24px 70px}
.tk-raketbaan.vertrekt .tk-raketvlam{opacity:1;animation:tk-vlam .18s ease-in-out infinite alternate}
.tk-raketbaan.vertrekt .tk-raket{bottom:110%;transition:bottom 1.4s cubic-bezier(.5,0,.75,0)}
.tk-raketbaan.leeg .tk-raketbeeld{filter:grayscale(.5);opacity:.75}
@keyframes tk-vlam{from{transform:scaleY(.8)}to{transform:scaleY(1.15)}}
@media (prefers-reduced-motion:reduce){
  .tk-raket{transition:none}
  .tk-raketbaan.vertrekt .tk-raket{transition:none}
  .tk-raketbaan.vertrekt .tk-raketvlam{animation:none}
}

.tk-raketkant{flex:1;min-width:0;display:flex;flex-direction:column;gap:calc(12px * var(--s))}
.tk-raketzin{
  font-size:calc(23px * var(--s));font-weight:700;margin:0;
}
/* De vakjes: een streepje per letter, en wat er niet geraden hoeft te worden
   (een spatie, een streepje) staat er gewoon. */
.tk-raketvakjes{display:flex;flex-wrap:wrap;gap:calc(8px * var(--s))}
.tk-raketvak{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:calc(38px * var(--s));height:calc(50px * var(--s));
  font-size:calc(30px * var(--s));font-weight:600;
  border-bottom:calc(4px * var(--s)) solid var(--lijn-sterk);
}
.tk-raketvak.vol{border-bottom-color:var(--paars);color:var(--inkt)}
.tk-raketvak.los{border-bottom:none;min-width:calc(12px * var(--s))}
/* Brandstof in plaats van "pogingen over": het hoort bij de raket, en een kind
   van zes ziet aan de streepjes meteen hoeveel er nog is. */
.tk-brandstof{display:flex;align-items:center;gap:calc(10px * var(--s))}
.tk-brandstoflabel{font-size:calc(16px * var(--s));color:var(--hulp-inkt, #6b7186)}
.tk-brandstofrij{display:flex;gap:calc(5px * var(--s))}
.tk-brandstofstreep{
  width:calc(18px * var(--s));height:calc(14px * var(--s));border-radius:calc(4px * var(--s));
  background:var(--oranje);transition:background .2s ease, opacity .2s ease;
}
.tk-brandstofstreep.op{background:var(--lijn);opacity:.7}
.tk-rakettoetsen{
  display:grid;grid-template-columns:repeat(auto-fill, minmax(calc(48px * var(--s)), 1fr));
  gap:calc(7px * var(--s));
}
.tk-raketletter{
  font:inherit;font-size:calc(22px * var(--s));font-weight:600;
  height:calc(50px * var(--s));cursor:pointer;
  background:#fff;border:calc(2px * var(--s)) solid var(--lijn);
  border-radius:calc(11px * var(--s));color:var(--inkt);
}
.tk-raketletter:hover:not([disabled]){border-color:var(--paars)}
.tk-raketletter:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-raketletter.goed{background:var(--groen-licht);border-color:var(--groen);color:var(--groen-diep)}
.tk-raketletter.mis{background:var(--roest-licht);border-color:var(--roest);color:var(--roest);opacity:.8}
.tk-raketletter[disabled]{cursor:default}
@media (max-width:480px){
  .tk-raketboven{gap:calc(12px * var(--s))}
  .tk-raketbaan{width:calc(70px * var(--s));min-height:calc(210px * var(--s))}
  .tk-raketbeeld{width:calc(36px * var(--s));height:calc(72px * var(--s))}
  .tk-raketzin{font-size:calc(19px * var(--s))}
  .tk-raketvak{min-width:calc(30px * var(--s));height:calc(42px * var(--s));font-size:calc(24px * var(--s))}
  .tk-raketletter{font-size:calc(19px * var(--s));height:calc(44px * var(--s))}
  .tk-rakettoetsen{grid-template-columns:repeat(auto-fill, minmax(calc(40px * var(--s)), 1fr))}
}

/* ---------- inslepen: een woord in het gat van een zin ---------- */
/* De zinnen staan als zinnen, niet als een kolom van een tabel: je moet ze
   kunnen lezen met het woord erin. Het gat is een streepje op de regel, breed
   genoeg om een woord te vangen met een vinger. */
.tk-inzinnen{margin:calc(6px * var(--s)) 0 calc(16px * var(--s))}
.tk-inzinnen.rij{display:flex;flex-wrap:wrap;align-items:center;gap:calc(8px * var(--s)) calc(4px * var(--s))}
.tk-inzinnen.rij .tk-inzin{margin:0}
.tk-inzin{
  font-size:calc(23px * var(--s));line-height:2;margin:0 0 calc(10px * var(--s));
}
.tk-ingat{
  display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;
  min-width:calc(120px * var(--s));min-height:calc(50px * var(--s));
  margin:0 calc(4px * var(--s));padding:0 calc(6px * var(--s));
  border-bottom:calc(3px * var(--s)) dashed var(--lijn-sterk);
  border-radius:calc(8px * var(--s)) calc(8px * var(--s)) 0 0;
  background:var(--achtergrond);
}
/* Zodra er een woord opgepakt is, lichten alle gaten op: daar kan het heen. */
/* Een zin met een getalbeeld erin: het beeld en de zin staan naast elkaar en
   breken samen af als de regel te smal wordt. De emoji's zijn kleiner dan op
   een los kaartje, anders wordt een zin met achttien appels een bladzijde. */
.tk-inzin.met-hoeveelheid{
  display:flex;flex-wrap:wrap;align-items:center;
  gap:calc(4px * var(--s)) calc(14px * var(--s));
  /* Twee rijen emoji's per zin: zonder lucht ertussen loopt de onderste rij
     van de ene zin tegen de bovenste van de volgende. */
  line-height:1.4;margin:0 0 calc(22px * var(--s));
}
.tk-inzin .tk-tienrij{
  justify-content:flex-start;gap:calc(16px * var(--s));
}
.tk-inzin .tk-tiengroep{gap:calc(5px * var(--s)) calc(7px * var(--s))}
.tk-inzin .tk-emoji{font-size:calc(26px * var(--s));line-height:1}
@media (max-width: 700px){
  .tk-inzin .tk-emoji{font-size:calc(22px * var(--s))}
  .tk-inzin .tk-tienrij{gap:calc(12px * var(--s))}
}
.tk-inzinnen.wachtend .tk-ingat:not(.vol){
  border-bottom-color:var(--blauw);background:var(--blauw-licht);
}
.tk-ingat.raak{box-shadow:0 0 0 calc(3px * var(--s)) rgba(81,112,255,.35)}
/* Ligt er een woord in, dan sluit het gat eromheen: geen leeg vak meer naast
   het woord, zodat de zin weer als een zin leest. */
.tk-ingat.vol{
  background:transparent;border-bottom-style:solid;border-bottom-color:transparent;
  min-width:0;padding:0;margin:0 calc(3px * var(--s));
}
.tk-ingat.goed{border-bottom-color:var(--groen)}
.tk-ingat.mis{border-bottom-color:var(--roest)}
.tk-ingat .tk-kaartje{font-size:calc(22px * var(--s));min-height:calc(44px * var(--s));
  padding:calc(6px * var(--s)) calc(12px * var(--s))}
/* Het juiste woord bij een gat dat leeg of fout bleef. */
.tk-indoel{
  font-size:calc(20px * var(--s));font-weight:700;color:var(--paars);
  background:var(--paars-licht);border-radius:calc(10px * var(--s));
  padding:calc(4px * var(--s)) calc(10px * var(--s));
}
.tk-inbak{margin-bottom:calc(6px * var(--s))}
@media (max-width:480px){
  .tk-inzin{font-size:calc(19px * var(--s));line-height:2.1}
  .tk-ingat{min-width:calc(96px * var(--s));min-height:calc(44px * var(--s))}
}

/* ---------- geheugenspel ---------- */
/* De kaarten dragen geen prentjes maar letters, in de merkkleuren: de kleur is
   hier de inhoud, want daarop zoek je het paar. De rug is het ruitje van
   Taalkrak - lichtpaars met okergele blokjes - in css getekend, zodat er voor
   veertig spellen geen enkel bestand nodig is. */
.tk-memtelling{
  display:flex;justify-content:center;gap:calc(22px * var(--s));
  margin:calc(6px * var(--s)) 0 calc(14px * var(--s));
  font-size:calc(17px * var(--s));color:var(--inkt);
}
.tk-memcijfer span{font-weight:700;color:var(--paars)}
.tk-memrooster{
  display:grid;grid-template-columns:repeat(var(--memkolommen, 4), 1fr);
  gap:calc(12px * var(--s));max-width:calc(640px * var(--s));margin:0 auto;
}
.tk-memkaart{
  border:0;padding:0;background:none;cursor:pointer;aspect-ratio:1/1;
  perspective:800px;-webkit-tap-highlight-color:transparent;
}
.tk-memkaart:focus-visible{outline:3px solid var(--blauw);outline-offset:3px;border-radius:calc(16px * var(--s))}
.tk-memkaart[disabled]{cursor:default}
.tk-membinnen,.tk-memkaart .tk-membinnen{
  position:relative;display:block;width:100%;height:100%;
  transition:transform .35s ease;transform-style:preserve-3d;
}
.tk-memkaart.open .tk-membinnen,.tk-memkaart.gevonden .tk-membinnen{transform:rotateY(180deg)}
.tk-memvlak{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  border-radius:calc(16px * var(--s));backface-visibility:hidden;overflow:hidden;
}
/* Een hoeveelheid op een memorykaart moet in een vierkantje passen:
   kleinere tekens en minder lucht dan op een kaart die alleen staat. */
.tk-memvlak .tk-tienrij{gap:calc(7px * var(--s))}
.tk-memvlak .tk-tiengroep{gap:calc(3px * var(--s)) calc(4px * var(--s))}
.tk-memvlak .tk-emoji{font-size:calc(21px * var(--s));line-height:1}
/* De rug: een paars vlak met een oranjegeel hoekje rechtsonder. Eerst stond
   hier een ruitje van tweeentwintig pixels; op een kaart was dat een aardig
   detail, maar acht kaarten naast elkaar werden een behangstaal - en een kaart
   die dicht ligt hoort niets te vragen. Een vlak en een schuine lijn, meer is
   het niet, en er komt geen bestand aan te pas.
   Allebei de kleuren staan een stap lichter dan de merkkleur: twintig procent
   wit erdoor, dus #c177e9 en #f3a358. Op volle sterkte trok het bord meer
   aandacht dan de letter die er straks onder ligt, en dat is de omgekeerde
   volgorde van wat je wil. */
.tk-memrug{
  background:#c177e9;
  background-image:linear-gradient(135deg, transparent 0 64%, #f3a358 64% 100%);
}
.tk-memvoor{
  transform:rotateY(180deg);background:#fff;
  box-shadow:inset 0 0 0 calc(3px * var(--s)) var(--lijn);
  container-type:inline-size;
}
.tk-memkaart.gevonden .tk-memvoor{
  box-shadow:inset 0 0 0 calc(3px * var(--s)) var(--groen);background:var(--groen-licht);
}
.tk-memtekst{
  font-size:calc(72px * var(--s));font-weight:400;line-height:1;
  color:var(--inkt);padding:calc(6px * var(--s));text-align:center;
}
/* Een heel woord op een kaartje moet kleiner dan een losse letter. De motor
   zet de klasse zodra er meer dan drie tekens op staan. */
.tk-memtekst.lang{font-size:calc(28px * var(--s));font-weight:400}
/* Beter nog: de letter meet zich aan de kaart in plaats van aan het scherm.
   Zo past hij op een digibord en op een telefoon zonder tussenmaten. Browsers
   die dit niet kennen houden de vaste maten hierboven. */
@supports (container-type:inline-size){
  .tk-memtekst{font-size:48cqw}
  .tk-memtekst.lang{font-size:20cqw}
}
.tk-memvoor .tk-beeld{max-width:80%;max-height:80%}
@media (prefers-reduced-motion:reduce){
  .tk-membinnen,.tk-memkaart .tk-membinnen{transition:none}
}
@media (max-width:480px){
  .tk-memrooster{gap:calc(9px * var(--s))}
  /* Woordkaarten gaan op een telefoon naar twee per rij en worden liggend:
     zo blijft "peertje" een woord en geen twee stukken. */
  .tk-memrooster.woorden{grid-template-columns:repeat(2, 1fr)}
  .tk-memrooster.woorden .tk-memkaart{aspect-ratio:5/3}
  .tk-memtelling{font-size:calc(15px * var(--s));gap:calc(14px * var(--s))}
}

/* ---------- zelf schrijven ---------- */
/* Een schrijfvak met dezelfde blauwe onderlijn als een invulvakje: het is
   hetzelfde gebaar - hier schrijf jij iets - alleen zonder verwacht antwoord. */
.tk-schrijfvel{margin:calc(14px * var(--s)) 0}
.tk-schrijfveld{
  font:inherit;font-size:calc(26px * var(--s));line-height:1.6;
  display:block;width:100%;box-sizing:border-box;resize:none;
  background:var(--blauw-licht);color:var(--inkt);
  border:0;border-bottom:calc(3px * var(--s)) solid var(--blauw);
  border-radius:calc(8px * var(--s)) calc(8px * var(--s)) 0 0;
  padding:calc(12px * var(--s)) calc(14px * var(--s));
}
.tk-schrijfveld::placeholder{color:#8a93b8}
.tk-schrijfveld:focus{
  outline:0;box-shadow:0 0 0 calc(3px * var(--s)) rgba(81,112,255,.35);
}
.tk-schrijfvel.goed .tk-schrijfveld{background:var(--groen-licht);border-bottom-color:var(--groen)}
.tk-schrijfvel.mis  .tk-schrijfveld{background:var(--roest-licht);border-bottom-color:var(--roest)}
/* Wat Krakkie van het geschrevene vindt, en daaronder wat er ook had gekund.
   Het voorbeeld staat in de merkkleur en niet in het groen: het is geen
   verbetering van wat er staat, het is nog een manier om het te zeggen. */
.tk-schrijfzegt{
  margin:calc(12px * var(--s)) 0 0;font-size:calc(19px * var(--s));font-weight:700;
  color:var(--groen-diep);
}
.tk-voorbeeldzin{
  margin:calc(10px * var(--s)) 0 0;font-size:calc(19px * var(--s));
  background:var(--paars-licht);border-radius:calc(12px * var(--s));
  padding:calc(10px * var(--s)) calc(14px * var(--s));
}
.tk-voorbeeldkop{font-weight:700;color:var(--paars)}
@media (max-width:480px){
  .tk-schrijfveld{font-size:calc(20px * var(--s))}
  .tk-schrijfzegt,.tk-voorbeeldzin{font-size:calc(17px * var(--s))}
}

/* ---------- keuzes ---------- */
.tk-keuzes{display:flex;flex-direction:column;gap:calc(12px * var(--s))}
.tk-keuze{
  font:inherit;text-align:left;cursor:pointer;
  background:#fff;border:calc(2px * var(--s)) solid var(--lijn);border-radius:calc(14px * var(--s));
  padding:calc(16px * var(--s)) calc(20px * var(--s));min-height:calc(60px * var(--s));
  transition:border-color .15s,background .15s;
}
.tk-keuze:hover{border-color:var(--blauw)}
/* Gekozen, maar nog niet nagekeken: blauw, de neutrale kleur. Groen of
   paars verschijnt pas na Controleer - anders kun je het juiste antwoord
   uit de knoppen aflezen. */
.tk-keuze.gekozen{border-color:var(--blauw);background:var(--blauw-licht)}
.tk-keuze.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-keuze.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-keuze.uit{opacity:.45;pointer-events:none}
.tk-keuze:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}

/* .tk-keuzes zet flex-direction op column; zonder deze regel erfde juist/
   fout dat en stonden de twee knoppen onder elkaar. Op een gsm is onder
   elkaar wel het beste, daar passen ze niet naast elkaar. */
/* Vier luidsprekers naast elkaar, gecentreerd en even groot. */
.tk-keuzes.alleen-geluid{
  flex-direction:row;flex-wrap:wrap;justify-content:center;
  gap:calc(14px * var(--s));
}
.tk-keuzes.alleen-geluid .tk-keuze{
  flex:0 0 auto;min-width:calc(120px * var(--s));justify-content:center;
}
.tk-jf{display:flex;flex-direction:row;gap:calc(14px * var(--s))}
@media (max-width:480px){ .tk-jf{flex-direction:column} }
.tk-jf .tk-keuze{flex:1;text-align:center;font-weight:400;font-size:calc(23px * var(--s))}

/* ---------- sorteren: kaartjes en bakken ---------- */
.tk-bakken{display:flex;gap:calc(14px * var(--s));flex-wrap:wrap;margin-bottom:calc(4px * var(--s))}
/* De bakken dragen de merkkleuren, om en om paars en oranjegeel - in hun
   lichtste tint, want het zijn vlakken van een halve kaart groot en geen
   accenten. Dat mag: een bak is inhoud (waar hoort dit woord bij?) en geen
   bediening. Zo zie je ook in een oogopslag dat het twee verschillende bakken
   zijn, zonder dat je de naam hoeft te lezen. Dezelfde afwisseling als bij de
   balken van de letterreeks. */
.tk-bak{
  flex:1 1 calc(200px * var(--s));display:flex;flex-direction:column;
  background:var(--paars-licht);border:calc(2px * var(--s)) dashed var(--lijn);
  border-radius:calc(14px * var(--s));padding:calc(12px * var(--s));
  min-height:calc(130px * var(--s));transition:border-color .15s,background .15s;
}
.tk-bak:nth-child(even){background:var(--oranje-licht)}
/* Bij drie bakken gaat om en om niet meer op: de eerste en de derde zouden
   allebei paars zijn en dan lijken ze dezelfde bak. De derde krijgt olijf -
   ook een inhoudskleur, en ver genoeg van de andere twee. */
.tk-bak:nth-child(3){background:var(--olijf-licht)}
.tk-bakken.wachtend .tk-bak:nth-child(3),
.tk-bak.raak:nth-child(3){background:var(--blauw-licht)}
/* Ligt er een kaartje klaar, dan lichten ze blauw op: dat is bediening en
   gaat dus vóór de merkkleur. */
.tk-bakken.wachtend .tk-bak,
.tk-bakken.wachtend .tk-bak:nth-child(even){border-color:var(--blauw);background:var(--blauw-licht)}
.tk-bak.raak,
.tk-bak.raak:nth-child(even){border-color:var(--blauw);background:var(--blauw-licht);border-style:solid}
.tk-bak-naam{font-weight:700;font-size:calc(17px * var(--s));margin-bottom:calc(8px * var(--s))}
.tk-bak-inhoud{display:flex;flex-wrap:wrap;gap:calc(8px * var(--s));align-content:flex-start;flex:1}

/* --- blokjesmeten: blokjes naast een ding leggen en tellen ---
   Het ding bovenaan, de strook eronder, allebei links uitgelijnd. De strook
   is breder dan het ding: er moet plaats zijn om er een paar te veel te
   leggen, want juist dat vergelijken is de oefening. */
.tk-blokmeet{
  margin:calc(14px * var(--s)) 0;
  background:var(--achtergrond);border-radius:calc(16px * var(--s));
  padding:calc(14px * var(--s));
}
.tk-blokmeet-ding{width:100%;display:flex}
.tk-blokmeet-ding .tk-blokmeet-prent{width:var(--deel);height:auto;max-width:none;display:block}
.tk-blokmeet-balk{
  width:var(--deel);height:calc(34px * var(--s));border-radius:calc(10px * var(--s));
  background:var(--oranje);
}
/* De strook: een lichte baan met een stippellijn, zodat ze leeg LIJKT en niet
   stuk. Tikken legt er een blokje bij. */
/* Geen rand en geen binnenmarge, maar een schaduw binnenin: zo is de strook
   precies even breed als de rij erboven, en ligt het eerste blokje exact
   onder het begin van het ding. Met een rand van drie pixels schoof alles een
   haartje op, en juist dat haartje is wat een kind vergelijkt. */
.tk-blokmeet-strook{
  display:flex;align-items:stretch;width:100%;box-sizing:border-box;
  min-height:calc(54px * var(--s));margin-top:calc(10px * var(--s));
  border:0;padding:0;border-radius:calc(12px * var(--s));
  box-shadow:inset 0 0 0 calc(3px * var(--s)) var(--lijn);
  background:#fff;cursor:pointer;
}
.tk-blokmeet-strook.goed{box-shadow:inset 0 0 0 calc(3px * var(--s)) var(--groen);background:var(--groen-licht)}
.tk-blokmeet-strook.mis{box-shadow:inset 0 0 0 calc(3px * var(--s)) var(--roest);background:var(--roest-licht)}
.tk-blokmeet-strook:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-blokmeet-blok{
  box-sizing:border-box;
  border:calc(3px * var(--s)) solid #6d3fd6;background:#8b5cf6;
  border-radius:calc(10px * var(--s));padding:0;margin:0;
  min-height:calc(46px * var(--s));cursor:pointer;
}
.tk-blokmeet-blok + .tk-blokmeet-blok{margin-left:calc(-1px * var(--s))}
.tk-blokmeet-teller{margin-top:calc(6px * var(--s))}
.tk-blokmeet-regel{font-size:calc(21px * var(--s));margin:calc(10px * var(--s)) 0 0}
@media (max-width:480px){
  .tk-blokmeet{padding:calc(10px * var(--s))}
  .tk-blokmeet-strook{min-height:calc(42px * var(--s))}
  .tk-blokmeet-blok{min-height:calc(34px * var(--s))}
}

/* --- erbijzetten: het kaartje BIJ het vakje zetten ---
   Twee kolommen naast elkaar: links de losse kaartjes, rechts de vakjes.
   Precies zoals het op papier staat, en precies zoals de bron het deed. Het
   kaartje blijft op zijn plaats staan als je het neerlegt - het vergrijst
   alleen - zodat de rij niet verspringt onder de hand van een kind. */
.tk-erbij{
  display:flex;flex-wrap:wrap;gap:calc(26px * var(--s));
  justify-content:center;align-items:flex-start;
  margin:calc(12px * var(--s)) 0;
}
.tk-erbijgroep{
  display:grid;grid-template-columns:auto auto;
  gap:calc(9px * var(--s)) calc(13px * var(--s));align-items:center;
}
/* Het losse kaartje: iets smaller dan een vakje, want het is wat je oppakt
   en niet waar het om draait. Breed genoeg voor een som van drie tekens. */
.tk-erbijkaart{
  font:inherit;font-weight:400;font-size:calc(21px * var(--s));cursor:grab;
  width:calc(152px * var(--s));height:calc(116px * var(--s));
  display:flex;align-items:center;justify-content:center;
  background:#fff;border:calc(2px * var(--s)) solid var(--lijn);
  border-radius:calc(12px * var(--s));padding:calc(7px * var(--s));
  touch-action:pinch-zoom;user-select:none;
  transition:border-color .12s,opacity .12s,filter .12s;
}
.tk-erbijkaart .tk-beeld{max-width:100%;max-height:100%;width:auto}
/* Staan er alleen korte getallen op de kaartjes, dan mogen ze fors: anders is
   een kaartje van 152 bij 116 bijna helemaal wit. Wat neergelegd is groeit
   mee, zodat het in het vakje hetzelfde cijfer blijft. */
.tk-erbij.kort .tk-erbijkaart,
.tk-erbij.kort .tk-erbijgelegd{font-size:calc(44px * var(--s));font-weight:400}
.tk-erbijkaart:hover{border-color:var(--blauw)}
.tk-erbijkaart.op{border-color:var(--blauw);background:var(--blauw-licht);
  box-shadow:0 0 0 calc(3px * var(--s)) rgba(81,112,255,.25)}
.tk-erbijkaart.sleept{z-index:50;cursor:grabbing;
  box-shadow:0 calc(8px * var(--s)) calc(20px * var(--s)) rgba(31,36,48,.25)}
/* Neergelegd: het kaartje blijft staan waar het stond, maar vergrijsd. Zo
   zie je in een oogopslag wat je al gedaan hebt en waar het lag. */
.tk-erbijkaart.gebruikt{filter:grayscale(100%);opacity:.4;pointer-events:none;cursor:default}
.tk-erbijkaart.uit{pointer-events:none}
.tk-erbijkaart:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
/* Het vakje: breder dan een kaartje, want er moet nog iets bij passen. */
.tk-erbijvak{
  width:calc(240px * var(--s));height:calc(116px * var(--s));
  display:flex;align-items:center;justify-content:center;gap:calc(10px * var(--s));
  background:#fff;border:calc(2px * var(--s)) solid var(--lijn);
  border-radius:calc(12px * var(--s));padding:calc(7px * var(--s));
  font-weight:400;font-size:calc(23px * var(--s));cursor:pointer;
  transition:border-color .12s,background .12s;
}
.tk-erbijdoel{
  display:flex;align-items:center;justify-content:center;
  max-width:78%;max-height:100%;transition:max-width .15s ease;
}
.tk-erbijdoel .tk-beeld{max-width:100%;max-height:calc(96px * var(--s));width:auto}
/* Ligt er iets bij, dan schuift het opzij: het staat nu samen met wat erbij
   kwam. Dat schuiven IS de oefening, dus het mag zichtbaar gebeuren - maar
   niet te veel: wat in het vakje staat, is net wat een kind moet tellen. */
.tk-erbijvak.vol .tk-erbijdoel{max-width:58%}
.tk-erbijgelegd{
  display:flex;align-items:center;justify-content:center;
  max-width:36%;max-height:100%;
}
.tk-erbijgelegd .tk-beeld{max-width:100%;max-height:calc(96px * var(--s));width:auto}
/* Heb je iets vast, dan lichten de vakjes blauw op: bediening gaat voor. */
.tk-erbij.wachtend .tk-erbijvak{border-color:var(--blauw);background:var(--blauw-licht)}
.tk-erbijvak.raak{border-color:var(--blauw);background:var(--blauw-licht);border-style:dashed}
.tk-erbijvak.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-erbijvak.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-erbijvak:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
@media (max-width:480px){
  .tk-erbij{gap:calc(16px * var(--s))}
  .tk-erbijgroep{gap:calc(7px * var(--s)) calc(9px * var(--s))}
  .tk-erbijkaart{width:calc(114px * var(--s));height:calc(88px * var(--s));
    padding:calc(5px * var(--s));font-size:calc(17px * var(--s))}
  .tk-erbij.kort .tk-erbijkaart,
  .tk-erbij.kort .tk-erbijgelegd{font-size:calc(32px * var(--s));font-weight:400}
  .tk-erbijvak{width:calc(196px * var(--s));height:calc(88px * var(--s));
    padding:calc(5px * var(--s));font-size:calc(19px * var(--s))}
  .tk-erbijdoel .tk-beeld,
  .tk-erbijgelegd .tk-beeld{max-height:calc(74px * var(--s))}
}

.tk-pakhint{margin-top:calc(-4px * var(--s))}
.tk-voorraad[hidden]{display:none}
.tk-voorraad{
  display:flex;flex-wrap:wrap;gap:calc(10px * var(--s));
  padding:calc(10px * var(--s));border-radius:calc(14px * var(--s));
  background:var(--achtergrond);min-height:calc(70px * var(--s));align-content:flex-start;
}
.tk-kaartje{
  font:inherit;font-weight:400;font-size:calc(21px * var(--s));cursor:grab;
  background:#fff;border:calc(2px * var(--s)) solid var(--lijn);
  border-radius:calc(12px * var(--s));
  padding:calc(10px * var(--s)) calc(16px * var(--s));min-height:calc(52px * var(--s));
  touch-action:pinch-zoom;user-select:none;
}
.tk-kaartje:hover{border-color:var(--blauw)}
.tk-kaartje.op{border-color:var(--blauw);background:var(--blauw-licht);
  box-shadow:0 0 0 calc(3px * var(--s)) rgba(81,112,255,.25)}
.tk-kaartje.sleept{z-index:50;cursor:grabbing;box-shadow:0 calc(8px * var(--s)) calc(20px * var(--s)) rgba(31,36,48,.25);
  transform:rotate(-2deg);pointer-events:none}
.tk-kaartje.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-kaartje.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-kaartje.uit{pointer-events:none}
.tk-kaartje:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}

/* ---------- kleuren: woorden in een zin markeren ---------- */
.tk-kleurkiezer{display:flex;gap:calc(10px * var(--s));flex-wrap:wrap;margin-bottom:calc(16px * var(--s))}
.tk-kleurkiezer.uit{pointer-events:none}
.tk-kleurknop{
  font:inherit;font-weight:700;font-size:calc(17px * var(--s));cursor:pointer;
  border:calc(2px * var(--s)) solid currentColor;background:#fff;
  border-radius:999px;padding:calc(10px * var(--s)) calc(18px * var(--s));
  min-height:calc(48px * var(--s));
}
/* De actieve knop krijgt de kleur als vulling en witte tekst. Let op de
   volgorde: de kleurregels hieronder zetten color, dus de witte tekst moet
   in DIE regels staan - anders wordt het blauw op blauw en leest niemand
   nog wat er op de knop staat. */
.tk-kleurknop:focus-visible{outline:3px solid var(--inkt);outline-offset:2px}
.tk-kleurknop.kleur-paars {color:var(--paars)}   .tk-kleurknop.kleur-paars.aan {background:var(--paars);color:#fff}
.tk-kleurknop.kleur-oranje{color:var(--oranje)}  .tk-kleurknop.kleur-oranje.aan{background:var(--oranje);color:#fff}
.tk-kleurknop.kleur-groen {color:var(--olijf)}   .tk-kleurknop.kleur-groen.aan {background:var(--olijf);color:#fff}
.tk-kleurknop.kleur-blauw {color:var(--blauw)}   .tk-kleurknop.kleur-blauw.aan {background:var(--blauw);color:#fff}

.tk-zin{
  font-size:calc(28px * var(--s));line-height:1.9;margin:0;
  text-wrap:balance;touch-action:pinch-zoom;
}
.tk-woord{
  display:inline-block;padding:calc(2px * var(--s)) calc(8px * var(--s));
  border-radius:calc(8px * var(--s));cursor:pointer;
  border-bottom:calc(3px * var(--s)) solid transparent;
  transition:background .12s,color .12s;
}
.tk-woord:hover{background:var(--lijn)}
.tk-woord.kleur-paars {background:var(--paars-licht); color:var(--paars)}
.tk-woord.kleur-oranje{background:#fdf0e2;          color:#b8630f}
.tk-woord.kleur-groen {background:var(--olijf-licht);color:var(--olijf)}
.tk-woord.kleur-blauw {background:var(--blauw-licht);color:var(--blauw)}
/* Na het nakijken: een streepje eronder zegt of het klopte, zodat de kleur
   zelf zichtbaar blijft - anders zie je niet meer wat je gedaan had. */
/* Fout gekleurd: een kader eromheen, geen kleur erin. De kleur in het woord
   blijft van het kind, zodat het ziet wat het zelf koos. Het kader draagt de
   gewone foutkleur; roest is hier veilig omdat het nooit een markeerkleur
   is - die zijn paars, oranje, groen en blauw. */
.tk-woord.tk-mis-kader{
  box-shadow:0 0 0 calc(3px * var(--s)) var(--roest);
  border-bottom-color:var(--roest);
}
/* De juiste zin eronder, pas als de opgave afgelopen is. */
.tk-oplossing{
  margin-top:calc(18px * var(--s));padding-top:calc(14px * var(--s));
  border-top:calc(2px * var(--s)) dashed var(--lijn);
}
.tk-oplossing-kop{
  display:block;font-size:calc(15px * var(--s));font-weight:700;
  color:var(--grijs);margin-bottom:calc(4px * var(--s));
}
.tk-oplossing .tk-zin{margin:0}
.tk-oplossing .tk-woord{cursor:default}

/* ---------- volgorde ---------- */
.tk-volgorde{
  display:flex;flex-wrap:wrap;gap:calc(12px * var(--s));
  align-items:stretch;margin:calc(10px * var(--s)) 0;
}
.tk-volgorde.kolom{flex-direction:column;align-items:flex-start}
.tk-volgorde.uit{pointer-events:none}
.tk-volgkaart{
  position:relative;
  font:inherit;font-weight:400;font-size:calc(23px * var(--s));
  background:#fff;border:calc(2px * var(--s)) solid var(--lijn);
  border-radius:calc(12px * var(--s));
  padding:calc(12px * var(--s)) calc(20px * var(--s));min-width:calc(64px * var(--s));
  text-align:center;cursor:grab;touch-action:pinch-zoom;user-select:none;
}
.tk-volgkaart:hover{border-color:var(--blauw)}
.tk-volgkaart:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-volgkaart.op{
  border-color:var(--blauw);background:var(--blauw-licht);
  box-shadow:0 0 0 calc(3px * var(--s)) rgba(81,112,255,.25);
}
.tk-volgkaart.sleept{
  z-index:50;cursor:grabbing;position:relative;
  box-shadow:0 calc(8px * var(--s)) calc(20px * var(--s)) rgba(31,36,48,.25);
}
.tk-volgkaart.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-volgkaart.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-oplossing .tk-volgkaart{cursor:default;opacity:.9}

/* ---------- klok ---------- */
/* Maten en kleuren van de klokoefeningen van het tweede leerjaar: een witte
   plaat met een lichte rand, grijze streepjes, de kleine wijzer oranje en de
   grote taalkrakpaars. Het oordeel kan hier dus geen paars zijn - dat is al
   de kleur van een wijzer - en staat als ring rond de plaat: groen als het
   klopt, zwart als het niet klopt. */
.tk-klok-doos{display:flex;flex-direction:column;align-items:center;margin:calc(10px * var(--s)) 0}
.tk-klok-doos.uit{pointer-events:none}
.tk-klok-schaal{
  width:min(calc(420px * var(--s)), 92vw);aspect-ratio:1/1;border-radius:50%;
  background:#fff;box-shadow:0 calc(18px * var(--s)) calc(60px * var(--s)) rgba(31,36,48,.10);
  touch-action:pinch-zoom;cursor:grab;transition:box-shadow .18s ease;
}
.tk-klok-schaal.draait{cursor:grabbing}
.tk-klok-schaal.vast{cursor:default}
.tk-klok-schaal.goed{
  box-shadow:0 calc(18px * var(--s)) calc(60px * var(--s)) rgba(31,36,48,.10),
             0 0 0 calc(10px * var(--s)) rgba(34,160,107,.55) inset;
}
.tk-klok-schaal.mis{
  box-shadow:0 calc(18px * var(--s)) calc(60px * var(--s)) rgba(31,36,48,.10),
             0 0 0 calc(10px * var(--s)) rgba(180,67,42,.55) inset;
}
.tk-klok{width:100%;height:100%;display:block}
.tk-klok-blad{fill:#fff}
.tk-klok-rand{fill:none;stroke:var(--lijn);stroke-width:12}
.tk-klok-streep{stroke:#999;stroke-width:1;stroke-linecap:round}
.tk-klok-streep.groot{stroke-width:2}
.tk-klok-cijfer{
  text-anchor:middle;font-family:inherit;font-size:20px;font-weight:900;fill:var(--inkt);
  user-select:none;pointer-events:none;
}
.tk-klok-wijzer{stroke-linecap:round;pointer-events:none}
.tk-klok-wijzer.klein{stroke:var(--oranje);stroke-width:8}
.tk-klok-wijzer.groot{stroke:var(--paars);stroke-width:6}
.tk-klok-as{fill:#333}
.tk-klok-invul{text-align:center;font-size:calc(21px * var(--s));margin:calc(10px * var(--s)) 0 0}

/* Een breuk hoort er als breuk uit te zien, waar hij ook staat: in de vraag,
   in een knop, in de uitleg. De maten zijn in em, zodat hij meeschaalt met de
   tekst eromheen. */
.tk-breuknotatie{
  display:inline-flex;flex-direction:column;align-items:center;justify-content:center;
  vertical-align:middle;position:relative;top:-.08em;
  text-align:center;line-height:1.06;font-size:.92em;
  margin:0 .16em;font-variant-numeric:tabular-nums;
}
.tk-breuk-teller{
  display:block;border-bottom:.09em solid currentColor;
  padding:0 .2em .06em;
}
.tk-breuk-noemer{display:block;padding:.05em .2em 0}

/* Een breuk om in te vullen: teller en noemer boven elkaar, met de streep
   ertussen. De streep loopt over de volle breedte van het breedste van de
   twee, zodat ze niet korter is dan het vakje eronder. */
.tk-breukvak{
  display:inline-flex;flex-direction:column;align-items:center;
  width:max-content;vertical-align:middle;margin:0 calc(6px * var(--s));
}
.tk-breukvak-helft{display:flex;justify-content:center;align-items:center;padding:calc(2px * var(--s)) 0}
.tk-breukvak-getal{font-size:calc(30px * var(--s));font-weight:700;color:var(--inkt);padding:0 calc(10px * var(--s))}
/* De streep loopt over de volle breedte van het breedste van de twee helften,
   en geen pixel verder: anders hangt ze rechts naast de vakjes uit. */
.tk-breukvak-streep{align-self:stretch;border-top:calc(3px * var(--s)) solid var(--inkt);margin:calc(3px * var(--s)) 0}
.tk-breukvak-invul .tk-vak-veld{min-width:calc(70px * var(--s))}

/* ---------- breuk ---------- */
/* Strook en taart in de stijl van het vierde leerjaar: gevuld is
   taalkrakpaars, leeg is lichtpaars, de scheidingen zijn wit. Ook hier draagt
   de vulkleur betekenis, dus het oordeel staat als rand rond de figuur. */
.tk-breuk-doos{display:flex;justify-content:center;margin:calc(16px * var(--s)) 0;padding:calc(6px * var(--s))}
.tk-breuk-doos.uit{pointer-events:none}
.tk-breukstrook{
  display:grid;width:min(100%, calc(560px * var(--s)));height:calc(84px * var(--s));
  border:calc(3px * var(--s)) solid var(--paars);border-radius:calc(12px * var(--s));
  overflow:hidden;background:var(--paars-licht);
}
.tk-breukstrook .tk-breukdeel{
  border:0;border-right:calc(3px * var(--s)) solid #fff;
  background:var(--paars-licht);padding:0;margin:0;cursor:pointer;min-width:0;
  transition:background .12s ease;
}
.tk-breukstrook .tk-breukdeel:last-child{border-right:0}
/* Een strook als PRENT bij een vraag staat in een flexrij die zo breed is als
   wat erin zit. "100% van niets" gaf een strook van een paar pixels: een dun
   paars staafje, en "schrijf de breuk" was niet te maken. Hier dus een eigen
   breedte. */
.tk-breuk-doos.vast .tk-breukstrook{width:calc(420px * var(--s));max-width:100%;flex:0 1 auto}
.tk-stukken > .tk-breuk-doos.vast{max-width:100%}
.tk-breukstrook .tk-breukdeel:hover{background:#efd8fb}
.tk-breukstrook .tk-breukdeel.aan{background:var(--paars)}
.tk-breukcirkel{
  width:calc(260px * var(--s));height:calc(260px * var(--s));max-width:100%;display:block;
}
.tk-breukcirkel .tk-breukdeel{
  fill:var(--paars-licht);stroke:#fff;stroke-width:2.5;cursor:pointer;
  transition:fill .12s ease;
}
.tk-breukcirkel .tk-breukdeel:hover{fill:#efd8fb}
.tk-breukcirkel .tk-breukdeel.aan{fill:var(--paars)}
.tk-breukrand{fill:none;stroke:var(--paars);stroke-width:2.5;pointer-events:none}
/* De ring hoort om de figuur, niet om de hele rij: het vak eromheen is zo
   breed als de kaart en dan lijkt het of de hele opgave fout staat. */
.tk-breuk-doos.goed .tk-breukstrook{box-shadow:0 0 0 calc(4px * var(--s)) var(--groen)}
.tk-breuk-doos.mis  .tk-breukstrook{box-shadow:0 0 0 calc(4px * var(--s)) var(--roest)}
.tk-breuk-doos.goed .tk-breukcirkel{
  border-radius:50%;box-shadow:0 0 0 calc(4px * var(--s)) var(--groen);
}
.tk-breuk-doos.mis .tk-breukcirkel{
  border-radius:50%;box-shadow:0 0 0 calc(4px * var(--s)) var(--roest);
}
.tk-breuk-doos.klein{margin:calc(6px * var(--s)) 0}
.tk-breuk-doos.klein .tk-breukstrook{height:calc(52px * var(--s));width:min(100%, calc(360px * var(--s)))}
.tk-breuk-doos.klein .tk-breukcirkel{width:calc(150px * var(--s));height:calc(150px * var(--s))}
.tk-oplossing .tk-breukdeel{cursor:default}
/* In de schrijfmodus is de figuur gegeven: er valt niets aan te tikken. */
.tk-breuk-doos.vast{pointer-events:none}
/* Kleuren gaat met slepen. De browser mag daar niet zijn eigen scrollen of
   tekstselectie overheen leggen, anders verliest de vinger de figuur. */
.tk-breuk-doos:not(.vast):not(.uit){touch-action:pinch-zoom;-webkit-user-select:none;user-select:none}
/* Teller boven, streep, noemer onder - de twee vakjes staan zelf al als
   breuk op het scherm, zodat de vorm klopt voor het kind hem opschrijft. */
.tk-breuk-invul{
  display:flex;flex-direction:column;align-items:center;
  gap:calc(13px * var(--s));margin-top:calc(14px * var(--s));
}
.tk-breuk-invul-kop{
  font-size:calc(16px * var(--s));color:var(--grijs,#6b7280);
  margin-bottom:calc(4px * var(--s));
}
.tk-breuk-invul-streep{
  width:calc(150px * var(--s));height:calc(5px * var(--s));
  background:var(--inkt);border-radius:3px;
}
.tk-breuk-oplos{margin:calc(4px * var(--s)) 0;font-size:calc(30px * var(--s));font-weight:700}

/* ---------- geld ---------- */
/* De stukken zijn uitgeknipte foto's, onderling op schaal: een cent is
   echt kleiner dan twee euro. Geen kader eromheen dus - dat zou de vorm
   van de munt kapotmaken - maar een zachte schaduw, zodat ze op tafel
   lijken te liggen. */
.tk-geldkop{
  margin:calc(20px * var(--s)) 0 calc(10px * var(--s));
  font-size:calc(16px * var(--s));color:var(--grijs);
}
/* De regel onder de portemonnee stond tegen de kader aan geplakt. */
.tk-geldbeurs + .tk-pakhint{margin-top:calc(12px * var(--s))}
.tk-geldrij{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:calc(10px * var(--s));
}
.tk-geldstuk{
  border:none;background:none;padding:calc(6px * var(--s));margin:0;
  border-radius:calc(14px * var(--s));cursor:pointer;line-height:0;
  transition:transform .12s ease, background .12s ease;
  -webkit-tap-highlight-color:transparent;
}
.tk-geldstuk:hover{background:var(--blauw-licht)}
.tk-geldstuk:active{transform:scale(.94)}
.tk-geldstuk:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-geldstuk.stil{cursor:default}
.tk-geldbeeld{
  display:block;height:auto;max-width:100%;
  filter:drop-shadow(0 calc(2px * var(--s)) calc(4px * var(--s)) rgba(31,36,48,.28));
}
.tk-geldlade{
  background:var(--achtergrond);border-radius:calc(18px * var(--s));
  padding:calc(4px * var(--s)) calc(12px * var(--s)) calc(14px * var(--s));
}
.tk-geldlade.uit,.tk-geldbeurs.uit{pointer-events:none}
.tk-geldbeurs{
  min-height:calc(104px * var(--s));border-radius:calc(18px * var(--s));
  border:calc(2px * var(--s)) dashed var(--lijn);
  padding:calc(16px * var(--s)) calc(14px * var(--s));
  display:flex;align-items:center;justify-content:center;
}
.tk-geldbeurs.goed{border-style:solid;border-color:var(--groen);background:var(--groen-licht)}
.tk-geldbeurs.mis{border-style:solid;border-color:var(--roest);background:var(--roest-licht)}
.tk-geldleeg{margin:0;color:var(--grijs);font-size:calc(16px * var(--s))}
.tk-geldinvul{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:calc(6px * var(--s));margin:calc(18px * var(--s)) 0 0;
  font-size:calc(21px * var(--s));
}
.tk-geldeenheid{display:inline-flex;align-items:center;gap:calc(6px * var(--s));white-space:nowrap}
/* Op een telefoon passen euro en cent niet naast elkaar. Ze gaan dan onder
   elkaar staan - elk met zijn eigen woord ernaast - en het "en" ertussen valt
   weg: twee regels onder elkaar zeggen dat al. */
@media (max-width:640px){
  .tk-geldinvul{flex-direction:column;align-items:center;gap:calc(10px * var(--s))}
  .tk-geldinvul .tk-geldvoegwoord{display:none}
}
.tk-geldantwoord{margin:calc(4px * var(--s)) 0;font-size:calc(26px * var(--s));font-weight:700}

/* ---------- prenten op knoppen en kaartjes ---------- */
/* Een prent op een keuzeknop of een kaartje is de inhoud van de oefening:
   hij mag dus ruim zijn, maar nooit zo groot dat er nog maar een optie op
   het scherm past. De maat staat in em, zodat hij meeschaalt met de tekst.
   Staat er een woord onder, dan hoort dat woord bij de prent en niet
   ernaast: vandaar de kolom. */
.tk-beeld{
  display:block;width:100%;height:auto;max-width:calc(150px * var(--s));
  border-radius:calc(10px * var(--s));
}
.met-beeld{
  display:inline-flex;flex-direction:column;align-items:center;
  gap:calc(6px * var(--s));
}
.tk-beeld-tekst{display:block;line-height:1.2}
/* Het vette woord in de zin op een kaartje. De kaartjes staan in
   gewoon schrift (font-weight:400), en dan rekent de browser "bolder"
   uit op 700 - maar dat hangt van het lettertype af, dus staat het
   hier gewoon. */
.tk-beeld-tekst b{font-weight:700}
/* De prent bij de vraag zelf: groot genoeg om naar te kijken, en gecentreerd
   zodat hij bij de vraag hoort en niet bij het eerste antwoord. */
.tk-vraagbeeld{margin:calc(14px * var(--s)) 0;display:flex;justify-content:center}
.tk-vraagbeeld .tk-beeld{max-width:calc(230px * var(--s));max-height:calc(190px * var(--s));border-radius:calc(16px * var(--s))}
@media (max-width:480px){ .tk-vraagbeeld .tk-beeld{max-width:calc(180px * var(--s))} }
/* "beeldGroot": een infografiek waar de antwoorden in staan. Die is de vraag
   zelf, dus hij krijgt de volle breedte van de kaart; de zoomknop doet de
   rest voor wie het nog groter wil. */
.tk-vraagbeeld.tk-beeldgroot .tk-beeld{width:min(calc(640px * var(--s)), 100%);max-width:100%;max-height:none}
@media (max-width:480px){ .tk-vraagbeeld.tk-beeldgroot .tk-beeld{width:100%} }
/* Een RIJ prenten bij een vraag: vier pictogrammen die samen een verhaal
   samenvatten. Ze moeten naast elkaar passen, dus kleiner dan een losse
   prent bij een vraag - deze regels komen na die van .tk-vraagbeeld en
   winnen daarom. */
.tk-vraagbeeld.tk-beeldrij{flex-wrap:wrap;gap:calc(10px * var(--s))}
.tk-vraagbeeld.tk-beeldrij .tk-beeld{max-width:calc(120px * var(--s));max-height:calc(120px * var(--s));background:#fff;border-radius:calc(12px * var(--s));padding:calc(4px * var(--s))}
@media (max-width:480px){ .tk-vraagbeeld.tk-beeldrij .tk-beeld{max-width:calc(62px * var(--s));max-height:calc(62px * var(--s))} }
/* Een rij van twee: dan is er plaats zat en mogen ze fors. */
.tk-vraagbeeld.tk-beeldrij.tk-beeldrij-kort{gap:calc(18px * var(--s))}
.tk-vraagbeeld.tk-beeldrij.tk-beeldrij-kort .tk-beeld{
  max-width:calc(148px * var(--s));max-height:calc(148px * var(--s));
}
@media (max-width:480px){
  .tk-vraagbeeld.tk-beeldrij.tk-beeldrij-kort .tk-beeld{
    max-width:calc(112px * var(--s));max-height:calc(112px * var(--s));
  }
}

/* "beeldMaat": de prent bij de vraag en de prenten op de knoppen worden met
   elkaar vergeleken, en dan MOETEN ze even groot getekend staan. Anders zou
   een kind dat "even groot als deze" zoekt naar twee verschillende
   maatstaven kijken. Een vaste maat voor allebei; de knoppen breken maar af
   naar een volgende regel als ze niet naast elkaar passen. */
.tk-maatvergelijk .tk-vraagbeeld .tk-beeld,
.tk-maatvergelijk .tk-keuze.met-beeld .tk-beeld{
  width:calc(104px * var(--s));max-width:calc(104px * var(--s));
  max-height:calc(104px * var(--s));
}
@media (max-width:480px){
  .tk-maatvergelijk .tk-vraagbeeld .tk-beeld,
  .tk-maatvergelijk .tk-keuze.met-beeld .tk-beeld{
    width:calc(82px * var(--s));max-width:calc(82px * var(--s));
    max-height:calc(82px * var(--s));
  }
}

/* Een keuzeknop met een prent wordt een tegel in plaats van een regel. */
.tk-keuze.met-beeld{
  padding:calc(12px * var(--s));text-align:center;
}
/* Kies je er meerdere, dan mogen de knoppen dichter op elkaar: het is een rij
   om te overzien, geen lijst om een voor een af te lezen. */
.tk-keuzes.meervoudig{gap:calc(10px * var(--s))}
/* Korte woorden staan naast elkaar in een rooster. Het woord staat gecentreerd
   in zijn vakje: bij één woord in een breed vak leest links uitgelijnd scheef. */
.tk-keuzes.rooster{
  display:grid;grid-template-columns:repeat(var(--kolommen, 3), minmax(0, 1fr));
  gap:calc(10px * var(--s));
}
.tk-keuzes.rooster .tk-keuze{
  display:flex;align-items:center;justify-content:center;text-align:center;
  /* Een zesjarige leest deze woorden letter voor letter. Ze staan hier alleen
     in hun vakje, dus ze mogen fors. Wel in gewoon schrift en niet vet: een
     kind dat leert lezen, leest de letters zoals het ze leert schrijven, en
     vet maakt de vormen dikker dan ze in zijn schrift staan. In een gewone
     keuzelijst blijft de tekst kleiner: daar kan een hele zin staan. */
  font-size:calc(34px * var(--s));font-weight:400;
  min-height:calc(88px * var(--s));
  padding:calc(12px * var(--s)) calc(10px * var(--s));
}
/* Op een gsm passen er hooguit twee naast elkaar zonder dat de woorden breken.
   Een lang woord mag daar een maatje kleiner en desnoods afbreken - liever dat
   dan een vakje dat over de rand schuift. */
@media (max-width:520px){
  .tk-keuzes.rooster:not(.vast){grid-template-columns:repeat(2, minmax(0, 1fr))}
  .tk-keuzes.rooster .tk-keuze{font-size:calc(28px * var(--s))}
}
.tk-keuzes.rooster .tk-keuze{overflow-wrap:anywhere}
/* Zo hoorde het: een juiste die niet aangetikt is, in de merkkleur. */
.tk-keuze.doel{border-color:var(--paars);background:var(--paars-licht)}
/* De keuzelijst wordt een rij tegels zodra er prenten op staan. */
.tk-keuzes.met-beelden{
  flex-direction:row;flex-wrap:wrap;justify-content:center;
}
.tk-keuzes.met-beelden .tk-keuze{flex:0 1 auto;min-height:0}
.tk-kaartje.met-beeld{
  padding:calc(6px * var(--s));
  /* Een uitknipsel is doorzichtig gemaakt; een wit vlak met een randje
     eromheen doet dat teniet en sleept als een sticker mee de bak in. */
  background:transparent;border-color:transparent;
}
/* Breedte EN hoogte begrenzen. Alleen een breedte was niet genoeg: een smalle,
   hoge prent (een klauw, een augurk) schoot dan twee keer zo hoog uit als de
   rest en de rij kaartjes stond scheef. */
.tk-kaartje.met-beeld .tk-beeld{
  max-width:calc(124px * var(--s));max-height:calc(104px * var(--s));
  width:auto;height:auto;object-fit:contain;
}
/* Terugkoppeling komt wel terug: aanwijzen alleen als rand (een wit blok dat
   onder de muis verschijnt is onrustig), opgepakt en nagekeken met vlak. */
.tk-kaartje.met-beeld:hover{border-color:var(--blauw);background:transparent}
.tk-kaartje.met-beeld.op{border-color:var(--blauw);background:var(--blauw-licht)}
.tk-kaartje.met-beeld.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-kaartje.met-beeld.mis{border-color:var(--roest);background:var(--roest-licht)}
/* Onder de vinger hoort geen kader: de prent zelf gaat mee. En de schaduw
   volgt de vorm van de prent - een box-shadow zou de rechthoek tekenen die er
   juist niet is. */
.tk-kaartje.met-beeld.sleept{
  background:transparent;border-color:transparent;box-shadow:none;
  filter:drop-shadow(0 calc(6px * var(--s)) calc(12px * var(--s)) rgba(31,36,48,.35));
}
/* Even veel lucht links als rechts, anders staat de prent scheef naast het
   bolletje met het paarnummer. */
.tk-koppelkaart.met-beeld{
  padding:calc(10px * var(--s)) calc(44px * var(--s));
}
/* De prent krijgt een VASTE hoogte, geen vaste breedte. Zo is elke kaart even
   hoog, of het plaatje nu vierkant of breed is - en dan lopen de twee kolommen
   gelijk in plaats van dat de ene halverwege ophoudt. */
.tk-koppelkaart.met-beeld .tk-beeld{
  height:calc(130px * var(--s));width:auto;max-width:100%;object-fit:contain;
}
/* Staat er in de ene kolom een prent en in de andere een woord, dan moet dat
   woord ook fors: een klein regeltje tekst naast een kaart met een prent van
   130 pixels leest als een bijschrift in plaats van als het antwoord. Zelfde
   maat en zelfde rust als de woordroosters. De hoogte regelt het rooster
   zelf - de rij is zo hoog als zijn hoogste kaart. */
.tk-koppel.met-beelden .tk-koppelkaart:not(.met-beeld){
  display:flex;align-items:center;justify-content:center;text-align:center;
  font-size:calc(32px * var(--s));font-weight:400;
  padding:calc(12px * var(--s)) calc(44px * var(--s));
}
.tk-bak-naam.met-beeld .tk-beeld{max-width:calc(140px * var(--s));max-height:calc(52px * var(--s))}
/* Op een smal scherm mogen de prenten kleiner, anders past er nog maar een
   keuze naast elkaar. */
/* Twee kolommen blijven, ook smal: het nummer gaat dan boven de prent staan
   in plaats van ernaast, zodat de prent de volle breedte van het kaartje
   krijgt. */
@media (max-width:520px){
  .tk-koppel.met-beelden{grid-template-columns:1fr 1fr;gap:calc(8px * var(--s))}
  .tk-koppel.met-beelden .tk-koppelkaart.met-beeld{
    padding:calc(30px * var(--s)) calc(6px * var(--s)) calc(8px * var(--s));
  }
  .tk-koppel.met-beelden .tk-koppelkaart.met-beeld .tk-koppelmerk{
    top:calc(6px * var(--s));right:calc(6px * var(--s));transform:none;
  }
}
@media (max-width:480px){
  .tk-beeld{max-width:calc(120px * var(--s))}
  .tk-kaartje.met-beeld .tk-beeld{max-width:calc(96px * var(--s));max-height:calc(82px * var(--s))}
  .tk-koppelkaart.met-beeld .tk-beeld{height:calc(92px * var(--s))}
  .tk-koppel.met-beelden .tk-koppelkaart:not(.met-beeld){
    font-size:calc(25px * var(--s));
    padding:calc(8px * var(--s)) calc(30px * var(--s));
  }
}

/* ---------- letterraster ---------- */
/* Grote, losstaande letters: een kind van zes moet ze kunnen aanwijzen met
   een vinger, dus de vakjes zijn ruim en er zit lucht tussen. */
/* De zoekkaart: letters die scheef over de kaart liggen, met een loep in de
   hoek. Geen kadertjes - die maken van een zoekspel een rekenblad. Wat een
   letter aangetikt maakt, is een rond vlekje eronder, zoals je met een stift
   een rondje om een letter zet. */
.tk-zoekkaart{
  position:relative;
  padding:calc(10px * var(--s)) 0 calc(20px * var(--s));
  margin:calc(10px * var(--s)) 0 0;
}
.tk-loep{
  position:absolute;left:0;bottom:0;aspect-ratio:1;height:auto;
  transform:translate(-16%, 16%);
  pointer-events:none;z-index:0;
}
/* Zacht, niet fel: de loep is versiering en mag de letters niet overstemmen. */
.tk-loep-vlek{fill:var(--oranje-licht)}
.tk-loep-ring{fill:none;stroke:var(--paars);stroke-width:7;opacity:.42}
.tk-loep-steel{fill:none;stroke:var(--paars);stroke-width:9;stroke-linecap:round;opacity:.42}
.tk-loep-glans{fill:none;stroke:#fff;stroke-width:4;stroke-linecap:round;opacity:.75}
.tk-raster{
  position:relative;z-index:1;
  display:grid;gap:0;
  margin:0 auto;max-width:100%;
}
.tk-raster.uit{pointer-events:none}
.tk-raster-letter{
  aspect-ratio:1;display:flex;align-items:center;justify-content:center;
  border:none;border-radius:50%;background:transparent;color:var(--inkt);
  font-family:inherit;font-size:calc(24px * var(--s));font-weight:700;
  line-height:1;padding:0;cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition:background .12s ease, color .12s ease, transform .1s ease;
}
.tk-raster-teken{display:block;transform-origin:50% 50%}
.tk-raster-letter:hover{background:var(--achtergrond)}
.tk-raster-letter:active{transform:scale(.9)}
.tk-raster-letter:focus-visible{outline:3px solid var(--blauw);outline-offset:0}
/* Aangetikt is blauw: gekozen, nog niet nagekeken. */
.tk-raster-letter.aan{background:var(--blauw-licht);color:var(--blauw)}
.tk-raster-letter.goed{background:var(--groen-licht);color:var(--groen-diep)}
.tk-raster-letter.mis{background:var(--roest-licht);color:var(--roest)}
.tk-raster-letter.stil{cursor:default}
/* In het Zo-hoort-het-raster staan de gezochte letters in de merkkleur: daar
   gaat het over de inhoud, niet over juist of fout. */
.tk-raster-letter.doel{background:var(--paars-licht);color:var(--paars)}
/* De regel eronder mag niet tegen de loep aan plakken. */
.tk-zoekkaart + .tk-pakhint{margin-top:calc(10px * var(--s))}
.tk-raster.klein{gap:0;margin:calc(8px * var(--s)) auto}
.tk-raster.klein .tk-raster-letter{font-size:calc(17px * var(--s))}

/* Een volgordekaartje met een prent: vaste hoogte, zodat alle kaartjes even
   hoog zijn ook als het ene plaatje breder is dan het andere. */
.tk-volgkaart.met-beeld{padding:calc(8px * var(--s))}
/* Bij "zet de prenten in de volgorde van het verhaal" is de prent de hele
   opgave: een kind moet kunnen zien wát er gebeurt voor het kan beslissen wat
   er eerst komt. Dus zo fors als de rij toelaat.

   De kaartjes verdelen de breedte onder elkaar (`flex:1 1 0`) in plaats van
   elk een vaste maat te nemen. Zo staat een verhaal van vier prenten op één
   regel - wat de volgorde is, lees je dan van links naar rechts, zoals een zin
   - en zijn de prenten meteen zo groot als er plaats is. `max-height` zet er
   een bovengrens op, zodat drie prenten op een breed scherm niet uitgroeien
   tot plakkaten. En wat lucht ertussen: prenten die tegen elkaar aan staan
   lezen als één plaat, terwijl het kind ze net als losse momenten moet zien. */
.tk-volgorde.met-beelden{gap:calc(20px * var(--s));flex-wrap:nowrap}
.tk-volgorde.met-beelden .tk-volgkaart{flex:1 1 0;min-width:0}
.tk-volgkaart.met-beeld .tk-beeld{
  /* `max-width` moet hier los: de algemene regel voor een prent houdt hem op
     150 px, en dat is nu net wat we willen overschrijven. */
  width:100%;max-width:100%;height:auto;
  max-height:calc(190px * var(--s));object-fit:contain;
}
/* Het plaatsnummer op een prentkaartje: een wit bolletje in de bovenhoek, met
   de oranjegele ring en het cijfer in taalkrakpaars van de luisterknop. Wit op
   de prent, zodat het leesbaar blijft wat er ook onder ligt, en een zacht
   schaduwtje zodat het van de foto af komt. Het hoort bij de rij en niet bij
   het kaartje, dus het vangt geen tikken: `pointer-events` uit. */
.tk-volgnummer{
  position:absolute;top:calc(6px * var(--s));left:calc(6px * var(--s));
  display:flex;align-items:center;justify-content:center;
  width:calc(30px * var(--s));height:calc(30px * var(--s));
  border-radius:50%;background:#fff;color:var(--paars-diep);
  font-size:calc(17px * var(--s));font-weight:700;line-height:1;
  box-shadow:inset 0 0 0 calc(2px * var(--s)) var(--oranje-lijn),
             0 calc(1px * var(--s)) calc(4px * var(--s)) rgba(31,36,48,.35);
  pointer-events:none;
}
/* Op een telefoon past een rij van vier niet: dan twee per regel, nog altijd
   ruimer dan de 104 px van vroeger. */
@media (max-width:560px){
  .tk-volgorde.met-beelden{flex-wrap:wrap;gap:calc(12px * var(--s))}
  .tk-volgorde.met-beelden .tk-volgkaart{flex:1 1 calc(50% - 14px * var(--s))}
  .tk-volgkaart.met-beeld .tk-beeld{max-height:calc(150px * var(--s))}
  .tk-volgnummer{
    width:calc(26px * var(--s));height:calc(26px * var(--s));
    font-size:calc(15px * var(--s));
  }
}

/* ---------- Krakkie op het eindscherm ---------- */
/* Hij staat tussen de kop en het cijfer in. De boodschap eronder draagt de
   merkkleuren - paars met de oranjegele streep - en niet de oordeelkleuren.
   Groen en roest betekenen juist en fout, en juist die twee mogen hier niet
   staan: dan leest "niet opgeven" als een berisping in plaats van als een
   aanmoediging. Dezelfde kleur of het nu goed of minder goed ging; wat
   verandert is wat Krakkie doet, niet hoe streng het scherm kijkt. */
.tk-krakkie{
  display:flex;flex-direction:column;align-items:center;gap:calc(6px * var(--s));
  margin:calc(6px * var(--s)) 0 calc(14px * var(--s));
}
.tk-krakkie img{
  width:auto;height:calc(150px * var(--s));
  /* Even opveren als het scherm verschijnt. Eén keer, kort: een kind mag
     merken dat er iets gebeurt, maar het is geen feestje dat blijft duren. */
  animation:tk-krak-op .45s cubic-bezier(.2,1.5,.4,1) both;
}
.tk-krakzegt{
  font-size:calc(21px * var(--s));font-weight:700;text-align:center;
  /* Ruimer dan elders: de streep onder de eerste regel heeft plaats nodig,
     anders raakt hij de kop van de tweede regel. */
  max-width:calc(420px * var(--s));line-height:1.6;
  color:var(--paars);
  /* De streep volgt de regels: onder elke regel een oranjegele lijn, precies zo
     lang als die regel is. Een losse balk onder het hele blok stond te ver van
     de woorden af; dit is de streep die bij de zin hoort. 'skip-ink:none' laat
     de lijn onder de j en de p gewoon doorlopen, anders ligt hij vol gaatjes. */
  text-decoration:underline;
  text-decoration-color:var(--oranje);
  text-decoration-thickness:calc(4px * var(--s));
  text-underline-offset:calc(7px * var(--s));
  text-decoration-skip-ink:none;
}
@keyframes tk-krak-op{
  from{transform:scale(.7) translateY(calc(10px * var(--s)));opacity:0}
  to{transform:none;opacity:1}
}
@media (prefers-reduced-motion:reduce){
  .tk-krakkie img{animation:none}
}
@media (max-width:480px){
  .tk-krakkie img{height:calc(116px * var(--s))}
  /* Net klein genoeg om "Blijf oefenen en dan lukt het je vast!" op een
     telefoon op een regel te houden: breekt hij toch, dan blijft er een los
     "vast!" onder hangen met een streepje eronder. */
  .tk-krakzegt{font-size:calc(16px * var(--s))}
}

/* ---------- leestekst ---------- */
/* Het verhaal boven de vragen. Ruim gezet en met een regel per zin, zoals het
   op papier ook staat: een eersteklasser leest zin voor zin, niet in een lap
   tekst. Lichte achtergrond zodat het duidelijk iets anders is dan de vraag. */
.tk-leestekst{
  background:var(--achtergrond);border-radius:calc(16px * var(--s));
  padding:calc(18px * var(--s)) calc(22px * var(--s));
  margin:0 0 calc(18px * var(--s));
  font-size:calc(22px * var(--s));line-height:1.55;
}
.tk-leestekst p{margin:0 0 calc(2px * var(--s))}
.tk-leeskop{
  margin:0 0 calc(10px * var(--s));
  font-size:calc(24px * var(--s));font-weight:700;color:var(--paars);
}
@media (max-width:480px){
  .tk-leestekst{font-size:calc(19px * var(--s));padding:calc(14px * var(--s))}
  .tk-leeskop{font-size:calc(21px * var(--s))}
}

/* Een voorgelezen tekst staat waar bij begrijpend lezen de leestekst staat:
   bovenaan, in hetzelfde vlak, met de knop erin. Zo ziet een kind dat de twee
   oefeningen familie van elkaar zijn - de ene lees je, de andere hoor je. */
.tk-luisterblad{
  background:var(--achtergrond);border-radius:calc(16px * var(--s));
  padding:calc(14px * var(--s)) calc(22px * var(--s)) calc(6px * var(--s));
  margin:0 0 calc(18px * var(--s));text-align:center;
}
.tk-luisterkop{
  margin:0;font-size:calc(24px * var(--s));font-weight:700;color:var(--paars);
}
.tk-luisterblad .tk-luister{margin:calc(12px * var(--s)) 0 calc(10px * var(--s))}
@media (max-width:480px){
  .tk-luisterblad{padding:calc(12px * var(--s)) calc(14px * var(--s)) calc(4px * var(--s))}
  .tk-luisterkop{font-size:calc(21px * var(--s))}
}

/* ---------- hoeveelheden tellen ---------- */
/* Bij "zijn dit er drie?" is het plaatje de vraag. Groot genoeg om in een
   oogopslag te tellen, met lucht tussen de figuurtjes zodat drie appels drie
   appels blijven en geen appelmoes worden. */
.tk-hoeveelheid{
  margin:calc(14px * var(--s)) 0;
  display:flex;justify-content:center;
}
/* De tienstructuur. Een blok van hoogstens tien: boven ceil(n/2), onder de
   rest, dus de bovenste rij is nooit langer dan vijf. Meer dan tien valt
   uiteen in blokken met een duidelijke ruimte ertussen - dertien is een volle
   tien en nog drie, en zo leert een kind het ook zeggen. */
.tk-tienrij{
  display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;
  gap:calc(30px * var(--s));
}
.tk-tiengroep{
  display:grid;grid-template-columns:repeat(var(--kol,5), auto);
  gap:calc(10px * var(--s)) calc(12px * var(--s));
  justify-items:center;align-items:center;
}
.tk-hoeveelheid .tk-emoji{font-size:calc(44px * var(--s));line-height:1}
/* Stippen worden getekend, niet geschreven: dan staan ze overal even groot en
   even ver uit elkaar, wat bij tellen nu net de bedoeling is. */
.tk-stippen{
  margin:calc(16px * var(--s)) 0;
  display:flex;flex-wrap:wrap;justify-content:center;
}
.tk-stip{
  display:block;width:calc(34px * var(--s));height:calc(34px * var(--s));
  border-radius:50%;background:var(--paars);
}
/* Het tweede deel van een splitsing, in hetzelfde getalbeeld: dezelfde
   bolletjes, andere kleur. De vorm verandert niet, want het getalbeeld moet
   kloppen; alleen de kleur zegt waar de splitsing loopt. */
.tk-stip.anders{background:var(--oranje)}
.tk-geenstip{font-size:calc(19px * var(--s));color:var(--grijs)}
/* Stippen op een keuzeknop of een kaartje: kleiner dan bij de vraag, want daar
   staan er meerdere naast elkaar. */
/* Op een knop of een kaartje is dezelfde structuur wat kleiner. Nul stippen is
   ook een antwoord: het kaartje houdt zijn maat, en wat je ziet is precies wat
   er staat - niets. */
.met-stippen .tk-tienrij,.met-emoji .tk-tienrij{
  gap:calc(18px * var(--s));min-height:calc(34px * var(--s));min-width:calc(72px * var(--s));
}
.met-stippen .tk-tiengroep,.met-emoji .tk-tiengroep{gap:calc(7px * var(--s)) calc(9px * var(--s))}
.met-stippen .tk-stip{width:calc(20px * var(--s));height:calc(20px * var(--s))}
.met-emoji .tk-emoji{font-size:calc(28px * var(--s));line-height:1}
.tk-emojirij{font-size:calc(34px * var(--s));line-height:1.2;letter-spacing:calc(4px * var(--s))}
.met-stippen,.met-emoji{display:inline-flex;flex-direction:column;align-items:center;gap:calc(6px * var(--s))}
/* Tik er precies zoveel aan. De kaartjes zijn allemaal hetzelfde, dus ze
   mogen er ook allemaal hetzelfde uitzien; alleen "gekozen" springt eruit. */
.tk-kiesdingen{
  display:flex;flex-wrap:wrap;justify-content:center;
  gap:calc(14px * var(--s));margin:calc(14px * var(--s)) 0;
}
.tk-kiesding{
  font:inherit;background:#fff;cursor:pointer;
  border:calc(2px * var(--s)) solid var(--lijn);border-radius:calc(14px * var(--s));
  padding:calc(10px * var(--s)) calc(14px * var(--s));
  display:flex;align-items:center;justify-content:center;
}
.tk-kiesteken{font-size:calc(46px * var(--s));line-height:1.1}
.tk-kiesding .tk-beeld{max-width:calc(96px * var(--s))}
.tk-kiesding:hover{border-color:var(--blauw)}
.tk-kiesding:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-kiesding.gekozen{
  border-color:var(--blauw);background:var(--blauw-licht);
  box-shadow:0 0 0 calc(3px * var(--s)) rgba(81,112,255,.25);
}
.tk-kiesding.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-kiesding.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-kiesding.uit{pointer-events:none;opacity:.9}
@media (max-width:480px){
  .tk-hoeveelheid .tk-emoji{font-size:calc(34px * var(--s))}
  .tk-stip{width:calc(26px * var(--s));height:calc(26px * var(--s))}
  .tk-tienrij{gap:calc(20px * var(--s))}
  .tk-tiengroep{gap:calc(8px * var(--s)) calc(9px * var(--s))}
  .tk-kiesteken{font-size:calc(36px * var(--s))}
  .tk-kiesdingen{gap:calc(10px * var(--s))}
}

/* ---------- het splitsingshuisje ---------- */
/* Het geheel bovenaan, twee pootjes, de delen eronder. De maten zijn fors: dit
   is het hart van het eerste leerjaar en het moet van achter in de klas nog te
   zien zijn op een digibord. */
.tk-splitshuis{
  display:flex;flex-direction:column;align-items:center;
  margin:calc(18px * var(--s)) auto;max-width:calc(420px * var(--s));
}
.tk-splitsbeeld{margin-bottom:calc(14px * var(--s))}
/* Twee groepjes DINGEN naast elkaar, met een duidelijke bres ertussen: je
   moet in een oogopslag zien dat het twee hoopjes zijn die samen komen. */
.tk-splitsbeeld.met-tekens{
  display:flex;align-items:center;justify-content:center;
  gap:calc(20px * var(--s));flex-wrap:wrap;
}
/* Elk hoopje op zijn eigen vlakje. Met alleen lucht ertussen leest twee en
   drie appels als een rij van vijf; met een vlakje eronder zie je meteen dat
   het twee hoopjes zijn die samen komen. */
.tk-splitsbeeld.met-tekens > *{
  background:var(--achtergrond);border-radius:calc(16px * var(--s));
  padding:calc(10px * var(--s)) calc(14px * var(--s));
}
/* Even groot als de dingen boven een gewone telvraag: kleiner tellen twee
   hoopjes niet makkelijker. */
.tk-splitsbeeld.met-tekens .tk-emoji{font-size:calc(44px * var(--s));line-height:1}
@media (max-width:480px){
  .tk-splitsbeeld.met-tekens{gap:calc(26px * var(--s))}
  .tk-splitsbeeld.met-tekens .tk-emoji{font-size:calc(34px * var(--s))}
}
.tk-splitskop,.tk-splitsonder{display:flex;justify-content:center}
.tk-splitsonder{gap:calc(62px * var(--s));width:100%}
.tk-splitsvak{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:calc(84px * var(--s));min-height:calc(84px * var(--s));
  border-radius:calc(16px * var(--s));
  font-size:calc(40px * var(--s));font-weight:700;line-height:1;
}
/* Wat al gegeven is, staat er rustig: wit met een lijntje. Het vakje waar het
   kind schrijft krijgt geen extra kader - het Invulvak brengt er zelf een mee,
   en twee kaders om elkaar heen is een doos in een doos. */
.tk-splitsvak.vast{
  background:#fff;border:calc(3px * var(--s)) solid var(--lijn);color:var(--inkt);
}
.tk-splitsvak.open{min-width:0;min-height:0}
.tk-splitsbenen{
  width:calc(240px * var(--s));height:calc(40px * var(--s));
  margin:calc(4px * var(--s)) 0;
}
.tk-splitsbenen line{stroke:var(--paars);stroke-width:3;stroke-linecap:round;vector-effect:non-scaling-stroke}
/* De splitstoren: het getal in het dak en daaronder rij na rij een gegeven
   getal met een leeg vakje ernaast. Geen tabel met lijnen: de vakjes zelf
   tekenen de kolommen al, en lijnen erbij maken er een rekenblad van. */
.tk-splitstoren{
  display:flex;flex-direction:column;align-items:center;
  gap:calc(8px * var(--s));margin:calc(16px * var(--s)) auto;
  width:max-content;max-width:100%;
}
.tk-torendak{
  display:flex;align-items:center;justify-content:center;
  min-width:calc(92px * var(--s));min-height:calc(92px * var(--s));
  border-radius:50%;background:var(--paars);color:#fff;
  margin-bottom:calc(4px * var(--s));
}
.tk-torengetal{font-size:calc(46px * var(--s));font-weight:700;line-height:1}
.tk-torenrij{display:flex;align-items:center;gap:calc(10px * var(--s))}
@media (max-width:480px){
  .tk-torendak{min-width:calc(72px * var(--s));min-height:calc(72px * var(--s))}
  .tk-torengetal{font-size:calc(36px * var(--s))}
  .tk-torenrij{gap:calc(7px * var(--s))}
  .tk-splitstoren{gap:calc(6px * var(--s))}
}
@media (max-width:480px){
  .tk-splitsvak{
    min-width:calc(66px * var(--s));min-height:calc(66px * var(--s));
    font-size:calc(32px * var(--s));
  }
  .tk-splitsonder{gap:calc(34px * var(--s))}
  .tk-splitsbenen{width:calc(180px * var(--s));height:calc(32px * var(--s))}
}

/* ---------- werken op een prent ---------- */
/* De prent draagt de oefening, dus hij mag groot. De laag erboven heeft
   precies dezelfde maat: alles wat erop komt staat in procenten, en dan klopt
   het op elk scherm. De plekken zelf zijn onzichtbaar - een randje om het
   juiste cijfer zou de oefening voor je oplossen. */
.tk-prentvel{
  position:relative;display:block;margin:calc(14px * var(--s)) auto;
  max-width:min(100%, calc(720px * var(--s)));line-height:0;
}
.tk-prentfoto{
  display:block;width:100%;height:auto;max-width:100%;
  border-radius:calc(14px * var(--s));border:calc(2px * var(--s)) solid var(--lijn);
  user-select:none;-webkit-user-drag:none;
}
.tk-prentlaag{position:absolute;inset:0;cursor:pointer;touch-action:manipulation}
.tk-prentvel.uit .tk-prentlaag{pointer-events:none}
/* Wat het kind aanwijst: een ring in het blauw van de bediening, want dit is
   nog geen oordeel. Groen of roest komt er pas bij het nakijken bij. */
.tk-prentmerk{
  position:absolute;border:calc(3px * var(--s)) solid var(--blauw);
  background:rgba(81,112,255,.16);border-radius:calc(6px * var(--s));
  box-shadow:0 0 0 calc(2px * var(--s)) #fff;
}
.tk-prentmerk.rond{border-radius:50%}
.tk-prentmerk.goed{border-color:var(--groen);background:rgba(34,160,107,.18)}
.tk-prentmerk.mis{border-color:var(--roest);background:rgba(180,67,42,.16)}
/* Een plek die het kind niet gevonden heeft, komt er na afloop bij: gestippeld,
   zodat het verschil met wat je zelf aanwees meteen te zien is. */
.tk-prentopen{
  position:absolute;border:calc(3px * var(--s)) dashed var(--groen);
  border-radius:calc(6px * var(--s));background:rgba(34,160,107,.10);
}
.tk-prentopen.rond{border-radius:50%}
/* Een tik naast alles: een kringetje dat vanzelf weer weggaat. */
.tk-prentmis{
  position:absolute;width:calc(30px * var(--s));height:calc(30px * var(--s));
  margin:calc(-15px * var(--s)) 0 0 calc(-15px * var(--s));
  border-radius:50%;border:calc(3px * var(--s)) solid var(--roest);
  opacity:.85;animation:tk-vervaag .9s ease-out forwards;pointer-events:none;
}
@keyframes tk-vervaag{ to{opacity:0;transform:scale(1.5)} }
/* De kaartjes om te slepen staan onder de prent tot ze een plek krijgen. */
.tk-prentbank{
  display:flex;flex-wrap:wrap;justify-content:center;
  gap:calc(10px * var(--s));margin:calc(12px * var(--s)) 0;line-height:normal;
}
.tk-prentkaartje{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:calc(46px * var(--s));
  font:inherit;font-size:calc(28px * var(--s));font-weight:400;line-height:1;
  background:#fff;color:var(--inkt);cursor:grab;touch-action:pinch-zoom;user-select:none;
  border:calc(2px * var(--s)) solid var(--lijn);border-radius:calc(10px * var(--s));
  padding:calc(8px * var(--s)) calc(14px * var(--s));min-width:calc(46px * var(--s));
}
.tk-prentkaartje:hover{border-color:var(--blauw)}
.tk-prentkaartje:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-prentkaartje.op{
  border-color:var(--blauw);background:var(--blauw-licht);
  box-shadow:0 0 0 calc(3px * var(--s)) rgba(81,112,255,.25);
}
.tk-prentkaartje.sleept{z-index:60;position:relative;cursor:grabbing}
/* Eenmaal gelegd hangt het kaartje op zijn plek in de laag, met zijn midden op
   het punt waar het losgelaten is. */
.tk-prentkaartje.gelegd{
  /* Even groot als in de bak: een kaartje dat ligt is nog altijd hetzelfde
     kaartje. Vierkant genoeg om een cijfer in het midden te zetten, en een 1
     en een 10 even breed - anders leest een rij getallen als een trapje. */
  position:absolute;transform:translate(-50%,-50%);
  box-shadow:0 calc(2px * var(--s)) calc(8px * var(--s)) rgba(31,36,48,.25);
}
.tk-prentkaartje.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-prentkaartje.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-prentkaartje .tk-beeld{max-width:calc(52px * var(--s))}
@media (max-width:480px){
  .tk-prentkaartje{font-size:calc(22px * var(--s));
                   min-width:calc(40px * var(--s));min-height:calc(40px * var(--s))}
  .tk-prentmis{width:calc(24px * var(--s));height:calc(24px * var(--s));
               margin:calc(-12px * var(--s)) 0 0 calc(-12px * var(--s))}
}

/* Een koppelkaart die een opname draagt: het luidsprekertje groot in het
   midden, in de merkkleuren van de luisterknop, en helemaal paars zolang hij
   speelt. */
/* Het luidsprekertje staat in het midden van de kaart, net als de hoeveelheid
   aan de overkant. Links uitgelijnd hing het tegen de rand terwijl de rest van
   de kaart leeg bleef, en dan lijkt de kaart stuk.

   En hier is het zwart-wit, anders dan de losse luisterknop. Bij koppelen
   krijgt elk paar zijn eigen kleur, en als het luidsprekertje daar zelf ook
   nog oranjegeel bij staat, wordt het een kermis. */
.tk-koppelkaart.met-geluid{
  color:var(--inkt);
  display:flex;align-items:center;justify-content:center;
  padding-left:calc(44px * var(--s));           /* even veel als rechts, voor het nummer */
}
.tk-koppelkaart.met-geluid .tk-luistermerk path{fill:var(--inkt)}
.tk-koppelkaart.met-geluid .tk-luistermerk .tk-luistergolf{stroke:var(--inkt)}
.tk-koppelkaart.met-geluid .tk-luistermerk{
  width:calc(38px * var(--s));height:calc(38px * var(--s));
}
.tk-koppelkaart.met-geluid.speelt{background:var(--paars-diep)}
.tk-koppelkaart.met-geluid.speelt .tk-luistermerk path{fill:#fff}
.tk-koppelkaart.met-geluid.speelt .tk-luistergolf{stroke:#fff}

/* ---------- luisteren ---------- */
/* Een knop om de opname te horen, in de merkkleuren en niet in het blauw van
   de bediening. Dat is met opzet: bij een dictee IS de opname de vraag, en de
   vraag is inhoud. Wit met een oranjegele ring en het woord in taalkrakpaars,
   fors genoeg dat een kind van zes hem zonder aanwijzen vindt. Zodra de opname
   loopt wordt hij helemaal paars met wit erop - dat zie je van een halve meter,
   ook als het geluid uit staat. */
.tk-luister{display:flex;justify-content:center;margin:calc(16px * var(--s)) 0}
.tk-luisterknop{
  display:inline-flex;align-items:center;gap:calc(10px * var(--s));
  font:inherit;font-size:calc(22px * var(--s));font-weight:700;
  color:var(--paars-diep);background:#fff;border:none;
  /* De ring van binnenuit, zodat hij niets aan de maat van de knop verandert
     als hij tijdens het spelen verdwijnt. */
  box-shadow:inset 0 0 0 calc(3px * var(--s)) var(--oranje-lijn);
  border-radius:calc(999px * var(--s));
  padding:calc(12px * var(--s)) calc(26px * var(--s));
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:transform .1s ease, background .15s ease, color .15s ease,
             box-shadow .15s ease;
}
.tk-luisterknop:hover{background:var(--paars-licht)}
.tk-luisterknop:active{transform:scale(.96)}
.tk-luisterknop:focus-visible{outline:3px solid var(--paars-diep);outline-offset:3px}
.tk-luistermerk{width:calc(26px * var(--s));height:calc(26px * var(--s));flex:0 0 auto}
.tk-luistermerk path{fill:var(--oranje-lijn)}
.tk-luistermerk .tk-luistergolf{
  fill:none;stroke:var(--oranje-lijn);stroke-width:2;stroke-linecap:round;
}
/* Terwijl het speelt: paars vlak, wit erop, en de golfjes gaan aan en uit. */
.tk-luisterknop.speelt{background:var(--paars-diep);color:#fff;box-shadow:none}
.tk-luisterknop.speelt .tk-luistermerk path{fill:#fff}
.tk-luisterknop.speelt .tk-luistergolf{
  fill:none;stroke:#fff;animation:tk-golf 1s ease-in-out infinite;
}
.tk-luisterknop.speelt .tk-luistergolf:last-child{animation-delay:.2s}
@keyframes tk-golf{0%,100%{opacity:.35}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){
  .tk-luisterknop.speelt .tk-luistergolf{animation:none;opacity:1}
}
@media (max-width:480px){
  .tk-luisterknop{font-size:calc(19px * var(--s));padding:calc(10px * var(--s)) calc(20px * var(--s))}
}

/* ---------- woordzoeker ---------- */
/* Een rooster van letters waarin je met een streep een woord aanwijst. Geen
   kadertjes per letter: dat maakt er een tabel van. Wat de streep zichtbaar
   maakt is de achtergrond, zoals je met een markeerstift over een woord gaat. */
.tk-zoeker{
  display:grid;gap:calc(2px * var(--s));
  margin:calc(16px * var(--s)) auto;
  /* Een hokje wordt niet breder dan 34 pixels. Anders rekt het rooster mee met
     de kaart, en omdat elk hokje vierkant is groeit het dan ook in de hoogte -
     een 16 bij 16 werd zo een blok van negenhonderd pixels en stond de
     woordenlijst eronder buiten beeld. Op een smal scherm wint de 100% en
     krimpt het rooster gewoon mee. */
  max-width:min(100%, calc(var(--kolommen, 12) * var(--zoekhok, 34px) * var(--s)));
  touch-action:pinch-zoom;user-select:none;
}
/* Op een breed scherm mag een hokje groter. De grens staat op de BREEDTE en
   niet op de hoogte: op de site staat elke oefening in een iframe waarvan de
   motor zelf de hoogte bijstelt aan de inhoud, en een rooster dat met `vh`
   meegroeit zou zichzelf blijven opblazen. */
@media (min-width:1400px){ .tk-zoeker{--zoekhok:40px} }
@media (min-width:1900px){ .tk-zoeker{--zoekhok:46px} }
@media (min-width:2560px){ .tk-zoeker{--zoekhok:52px} }
.tk-zoeker.uit{pointer-events:none}
.tk-zoeker-letter{
  aspect-ratio:1;display:flex;align-items:center;justify-content:center;
  border:none;border-radius:calc(8px * var(--s));background:transparent;
  color:var(--inkt);font-family:inherit;font-size:calc(22px * var(--s));
  font-weight:400;line-height:1;padding:0;cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition:background .1s ease, color .1s ease;
}
.tk-zoeker-letter:hover{background:var(--achtergrond)}
.tk-zoeker-letter:focus-visible{outline:3px solid var(--blauw);outline-offset:0}
/* Bezig met slepen: blauw, want gekozen en nog niet nagekeken. */
.tk-zoeker-letter.bezig{background:var(--blauw-licht);color:var(--blauw)}
/* Gevonden: groen. Dat is hier geen oordeel achteraf maar meteen juist - een
   woord staat er of het staat er niet, daar valt niets aan te vergissen. */
.tk-zoeker-letter.raak{background:var(--groen-licht);color:var(--groen-diep)}
.tk-zoeker-letter.doel{background:var(--paars-licht);color:var(--paars)}

.tk-zoeklijst{
  display:flex;flex-wrap:wrap;justify-content:center;
  gap:calc(8px * var(--s));margin-top:calc(4px * var(--s));
}
.tk-zoekwoord{
  font-size:calc(18px * var(--s));font-weight:600;
  padding:calc(4px * var(--s)) calc(10px * var(--s));
  border-radius:calc(999px * var(--s));
  background:var(--achtergrond);color:var(--inkt);
}
.tk-zoekwoord.raak{background:var(--groen-licht);color:var(--groen-diep);text-decoration:line-through}
.tk-zoekwoord.doel{background:var(--paars-licht);color:var(--paars)}
@media (max-width:480px){
  .tk-zoeker-letter{font-size:calc(16px * var(--s))}
  .tk-zoekwoord{font-size:calc(15px * var(--s))}
}

/* ---------- letters kleuren in een woord ---------- */
/* Met "aaneen" staan de stukken tegen elkaar: samen vormen ze een woord en
   kleur je letters in plaats van woorden. Elk woord op zijn eigen regel, en
   fors - het gaat om lettervormen, en die moet je kunnen zien. */
.tk-zin.aaneen{
  display:flex;flex-wrap:wrap;justify-content:center;
  gap:calc(6px * var(--s)) 0;
  font-size:calc(34px * var(--s));line-height:1.25;
}
/* Geen lucht tussen de letters: samen vormen ze een woord, en "r aa m" met
   gaten ertussen leest niet als raam. De kleur zit dus strak om de letter. */
.tk-zin.aaneen .tk-woord{
  padding:calc(3px * var(--s)) 0;
  border-radius:calc(5px * var(--s));
}
.tk-woordbreuk{flex-basis:100%;height:0}
.tk-zin:not(.aaneen) .tk-woordbreuk{display:block;width:100%;height:calc(8px * var(--s))}
@media (max-width:480px){
  .tk-zin.aaneen{font-size:calc(27px * var(--s))}
}

/* ---------- letterreeks ---------- */
/* Een rij letters in een balk, met de zoekletter in een vakje ervoor. Hier
   staan de letters wél netjes op een rij en rechtop: je leest een reeks van
   links naar rechts, je dwaalt er niet over rond zoals op de zoekkaart. */
.tk-reeksen{display:flex;flex-direction:column;gap:calc(10px * var(--s));margin:calc(18px * var(--s)) 0}
.tk-reeksen.uit{pointer-events:none}
.tk-reeks{
  display:flex;align-items:stretch;gap:calc(8px * var(--s));
  background:var(--paars-licht);border-radius:calc(14px * var(--s));
  padding:calc(8px * var(--s));
}
.tk-reeks.om{background:var(--oranje-licht)}
.tk-reeks-merk{
  flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  min-width:calc(46px * var(--s));
  background:#fff;border:calc(2px * var(--s)) solid var(--lijn-sterk);
  border-radius:calc(10px * var(--s));
  font-size:calc(27px * var(--s));font-weight:400;color:var(--inkt);
}
.tk-reeks-band{
  flex:1 1 auto;display:flex;justify-content:space-around;align-items:center;
  min-width:0;
}
.tk-reeks-letter{
  flex:0 1 auto;border:none;background:transparent;color:var(--inkt);
  font-family:inherit;font-size:calc(27px * var(--s));font-weight:400;line-height:1;
  padding:calc(6px * var(--s)) calc(4px * var(--s));
  border-radius:calc(8px * var(--s));cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition:background .12s ease, color .12s ease, transform .1s ease;
}
.tk-reeks-letter:hover{background:#fff}
.tk-reeks-letter:active{transform:scale(.9)}
.tk-reeks-letter:focus-visible{outline:3px solid var(--blauw);outline-offset:0}
.tk-reeks-letter.aan{background:var(--blauw-licht);color:var(--blauw)}
.tk-reeks-letter.goed{background:var(--groen-licht);color:var(--groen-diep)}
.tk-reeks-letter.mis{background:var(--roest-licht);color:var(--roest)}
@media (max-width:480px){
  .tk-reeks-merk{min-width:calc(34px * var(--s));font-size:calc(21px * var(--s))}
  .tk-reeks-letter{font-size:calc(21px * var(--s));padding:calc(5px * var(--s)) calc(2px * var(--s))}
}

/* ---------- letterplaats ---------- */
/* Het woord groot, de hokjes eronder als een eigen rij. Ze zijn smaller dan de
   letters en staan er dus niet recht onder: het kind moet tellen, niet
   aanwijzen. */
/* Drie naast elkaar, in twee rijen van drie: dat leest rustiger dan zes
   kaarten op een rij die op een smaller scherm ineens breken. Een rooster en
   geen losse rij, zodat alle kaarten even breed zijn ook al is het ene woord
   langer dan het andere. */
.tk-plaatsen{
  display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:calc(14px * var(--s));margin:calc(18px * var(--s)) 0;
}
.tk-plaatsen.uit{pointer-events:none}
.tk-plaatskaart{
  display:flex;flex-direction:column;align-items:center;gap:calc(8px * var(--s));
  background:var(--papier);border:calc(2px * var(--s)) solid var(--lijn);
  border-radius:calc(14px * var(--s));
  padding:calc(12px * var(--s)) calc(14px * var(--s));
}
.tk-plaatswoord{
  display:flex;font-size:calc(34px * var(--s));font-weight:400;
  line-height:1;letter-spacing:calc(1px * var(--s));color:var(--inkt);
}
.tk-plaatsletter{display:block}
.tk-plaatshokjes{display:flex;gap:calc(4px * var(--s))}
.tk-plaatshokje{
  width:calc(26px * var(--s));height:calc(26px * var(--s));
  border:calc(2px * var(--s)) solid var(--lijn-sterk);
  border-radius:calc(6px * var(--s));background:#fff;padding:0;cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition:background .12s ease, border-color .12s ease, transform .1s ease;
}
.tk-plaatshokje:hover{border-color:var(--blauw)}
.tk-plaatshokje:active{transform:scale(.9)}
.tk-plaatshokje:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-plaatshokje.aan{border-color:var(--blauw);background:var(--blauw)}
.tk-plaatshokje.goed{border-color:var(--groen-diep);background:var(--groen-diep)}
.tk-plaatshokje.mis{border-color:var(--roest);background:var(--roest)}
/* Zo hoorde het: de gemiste plaats in de merkkleur. */
.tk-plaatshokje.doel{border-color:var(--paars);background:var(--paars-licht)}
@media (max-width:520px){
  .tk-plaatsen{grid-template-columns:repeat(2, minmax(0, 1fr));gap:calc(10px * var(--s))}
}
@media (max-width:480px){
  .tk-plaatswoord{font-size:calc(28px * var(--s))}
  .tk-plaatshokje{width:calc(22px * var(--s));height:calc(22px * var(--s))}
  .tk-plaatskaart{padding:calc(10px * var(--s)) calc(6px * var(--s))}
}

/* ---------- cijferen ---------- */
/* Overgenomen van cijferen-4de-tienduizend: kolommen onder elkaar, een
   streep, en kleine vakjes voor het onthouden en het lenen. De maten zijn
   ruimer dan in de oude oefening, want in onze vakjes wordt geschreven en
   niet getypt: een cijfer met de pen heeft plaats nodig. */
.tk-cij-doos{overflow-x:auto;max-width:100%;margin:calc(14px * var(--s)) 0}
.tk-cij-doos.uit{pointer-events:none}
.tk-cij-blok{
  display:inline-block;margin:calc(6px * var(--s)) auto;
  padding-bottom:calc(10px * var(--s));font-variant-numeric:tabular-nums;
}
.tk-cij-rij{
  display:flex;align-items:flex-end;justify-content:flex-start;
  min-height:calc(8px * var(--s));margin-bottom:calc(3px * var(--s));
}
.tk-cij-rij.ruim{margin-bottom:calc(22px * var(--s))}
.tk-cij-rij.strp{margin:calc(2px * var(--s)) 0 calc(6px * var(--s))}
.tk-cij-cel{
  width:calc(64px * var(--s));display:flex;justify-content:center;
  align-items:flex-end;position:relative;
}
.tk-cij-teken{
  width:calc(44px * var(--s));font-size:calc(32px * var(--s));font-weight:700;
  color:var(--inkt);display:flex;justify-content:center;align-items:flex-end;
}
.tk-cij-cijfer{
  font-size:calc(34px * var(--s));font-weight:700;color:var(--inkt);
  line-height:1.15;position:relative;
}
/* De nullen die een deelproduct opschuiven horen bij de opbouw, niet bij het
   rekenwerk: die staan in de merkkleur. */
.tk-cij-cijfer.flauw{color:var(--paars)}
/* De komma krijgt geen eigen kolom: ze hangt rechtsonder aan het cijfer
   waar ze achter hoort. Zo blijven de cijfers van 3,4 en 2,5 netjes onder
   elkaar staan, en dat onder elkaar staan is bij cijferen de hele les. */
.tk-cij-komma{
  position:absolute;right:calc(6px * var(--s));bottom:calc(-9px * var(--s));
  font-size:calc(34px * var(--s));font-weight:700;color:var(--inkt);line-height:1;
  pointer-events:none;
}
.tk-cij-blok.klein .tk-cij-komma{right:calc(3px * var(--s));bottom:calc(-6px * var(--s));font-size:calc(23px * var(--s))}
.tk-cij-cijfer.klik{cursor:pointer;-webkit-tap-highlight-color:transparent}
.tk-cij-cijfer.klik:hover{color:var(--paars)}
/* Doorstrepen bij het lenen: dat is het werk van het kind, geen oordeel,
   dus het krijgt de merkkleur en niet groen of roest. */
.tk-cij-cijfer.door::after{
  content:"";position:absolute;left:calc(-7px * var(--s));right:calc(-7px * var(--s));
  top:46%;height:calc(3.5px * var(--s));border-radius:2px;
  background:var(--paars);transform:rotate(-12deg);
}
.tk-cij-streep{border-top:calc(3px * var(--s)) solid var(--inkt);height:calc(7px * var(--s));width:100%}
.tk-cij-vak .tk-vak-veld{
  min-width:calc(52px * var(--s));width:calc(52px * var(--s));
}
/* Het onthoud- en leenvakje staat op een eigen rij bovenaan, klein en met
   een stippellijn: het is kladwerk en telt niet mee. In de hoek van de
   antwoordcel hangen lukte niet - bij vakjes waarin je schrijft in plaats
   van typt is daar gewoon geen plaats, en het ging over het antwoord heen. */
.tk-cij-rij.hulprij{margin-bottom:calc(6px * var(--s))}
.tk-cij-hulpvak .tk-vak-veld{
  min-width:calc(40px * var(--s));width:calc(40px * var(--s));
  height:calc(42px * var(--s));border-bottom-style:dashed;
  border-bottom-color:var(--hulp-lijn);background:var(--hulp);
}
.tk-cij-hulpvak .tk-tekst{font-size:calc(20px * var(--s));color:var(--hulp-inkt)}
.tk-cij-staart{display:flex;align-items:stretch;justify-content:center}
.tk-cij-staartlinks{display:flex;flex-direction:column;align-items:flex-start}
.tk-cij-staartrechts{
  display:flex;flex-direction:column;align-items:flex-start;
  border-left:calc(3px * var(--s)) solid var(--inkt);
  margin-left:calc(10px * var(--s));padding-left:calc(12px * var(--s));
}
.tk-cij-uitleg{text-align:center;margin-top:calc(10px * var(--s))}
/* Het Zo-hoort-het-blok: dezelfde som, maar ingevuld en kleiner. */
.tk-cij-blok.klein .tk-cij-cel{width:calc(40px * var(--s))}
.tk-cij-blok.klein .tk-cij-teken{width:calc(28px * var(--s));font-size:calc(22px * var(--s))}
.tk-cij-blok.klein .tk-cij-cijfer{font-size:calc(23px * var(--s))}

/* ---------- tabel ---------- */
/* Een tabel is inhoud, geen bediening: de lijnen zijn dus neutraal grijs en
   niet blauw. Alleen de bewerkingen erboven dragen een merkkleur, want die
   zijn het verhaal van de tabel - wat je met de vorige kolom gedaan hebt. */
.tk-tabel-doos{overflow-x:auto;max-width:100%;margin:calc(18px * var(--s)) 0}
/* Een brede tabel mag binnen zijn eigen kader schuiven, maar hij mag de
   pagina niet meeslepen. Een flexkind krimpt van zichzelf niet onder zijn
   inhoud, vandaar de min-width:0 op de kaart. */
.tk-werkblad > .tk-kaart{min-width:0}
.tk-kaart{min-width:0}
.tk-tabel{
  border-collapse:collapse;margin:0 auto;
  font-size:calc(19px * var(--s));font-variant-numeric:tabular-nums;
}
.tk-tabel th,.tk-tabel td{
  border:calc(2px * var(--s)) solid var(--lijn-sterk);
  padding:calc(8px * var(--s)) calc(14px * var(--s));text-align:center;
}
.tk-tabel th{
  background:var(--achtergrond);color:var(--inkt);
  font-weight:700;text-align:left;white-space:nowrap;
}
.tk-tabel-vast{font-weight:700;color:var(--inkt)}
.tk-tabel-invul{padding:calc(4px * var(--s)) calc(8px * var(--s))}
.tk-tabel tr.tk-tabel-bewerking td,.tk-tabel tr.tk-tabel-bewerking th{
  border:none;background:transparent;font-weight:700;
  color:var(--oranje-donker);padding:0 calc(14px * var(--s)) calc(4px * var(--s));
  font-size:calc(17px * var(--s));
}
.tk-tabel.klein{font-size:calc(17px * var(--s))}
.tk-tabel.klein th,.tk-tabel.klein td{padding:calc(5px * var(--s)) calc(11px * var(--s))}
.tk-tabel-oplos{color:var(--inkt)}
/* Een bewerking die ingevuld moet worden: twee knopjes voor de kant die je
   op gaat, en een vakje voor het getal. Blanco aan het begin - dat is juist
   de vraag. De knopjes zijn bediening, dus blauw als ze gekozen zijn. */
.tk-bewerking-invul{
  display:inline-flex;align-items:center;gap:calc(5px * var(--s));
  padding:calc(4px * var(--s)) calc(6px * var(--s));
  border-radius:calc(12px * var(--s));
  /* Een zachte vulling houdt de twee knopjes en het vakje bij elkaar: het is
     één antwoord, geen drie losse dingen die boven de tabel zweven. */
  background:var(--achtergrond);
}
.tk-bewerking-invul.goed{background:var(--groen-licht)}
.tk-bewerking-invul.mis{background:var(--roest-licht)}
.tk-bewerking-knop{
  width:calc(34px * var(--s));height:calc(34px * var(--s));border-radius:50%;
  border:calc(2px * var(--s)) solid var(--lijn-sterk);background:var(--papier);
  color:var(--inkt);font-family:inherit;font-size:calc(18px * var(--s));
  font-weight:700;line-height:1;padding:0;cursor:pointer;flex:none;
  -webkit-tap-highlight-color:transparent;
}
.tk-bewerking-knop:hover:not(:disabled){border-color:var(--blauw)}
.tk-bewerking-knop.gekozen{border-color:var(--blauw);background:var(--blauw-licht);color:var(--blauw)}
.tk-bewerking-knop:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-bewerking-knop:disabled{cursor:default;opacity:.85}

/* ---------- koppelen ---------- */
.tk-koppel{
  display:grid;grid-template-columns:1fr 1fr;
  gap:calc(14px * var(--s)) calc(28px * var(--s));
  align-items:stretch;margin:calc(8px * var(--s)) 0;
}
.tk-koppel.uit{pointer-events:none}
/* De kaarten staan rechtstreeks in het rooster, om beurten links en rechts.
   Zo krijgt elke rij de hoogte van zijn hoogste kaart en lopen de twee
   kolommen gelijk, ook als er links een prent staat en rechts een woord. */
.tk-koppel > .tk-koppelkaart{min-width:0}
.tk-koppelkaart{
  position:relative;font:inherit;font-weight:400;font-size:calc(21px * var(--s));
  text-align:left;cursor:pointer;background:#fff;
  border:calc(2px * var(--s)) solid var(--lijn);border-radius:calc(12px * var(--s));
  padding:calc(10px * var(--s)) calc(16px * var(--s));
  padding-right:calc(44px * var(--s));           /* plaats voor het nummer */
  min-height:calc(52px * var(--s));user-select:none;
}
.tk-koppelkaart:hover{border-color:var(--blauw)}
/* Woord en luidsprekertje op een koppelkaart: wat lucht ertussen. Zonder
   flex en gap plakte het oortje tegen het woord (Mohamed, 14-10). */
.tk-koppelkaart.met-oortje{display:flex;align-items:center;gap:calc(14px * var(--s))}
/* Het luidsprekertje vooraan en het woord in een stuk: "de" blijft bij
   "tafel", ook op een smalle gsm-kaart (Mohamed, 14-10). */
.tk-koppelkaart.met-oortje .tk-oortje{order:-1}
.tk-koppelkaart.met-oortje .tk-beeld-tekst{white-space:nowrap}
/* Op een gsm staat het luidsprekertje boven het woord: naast elkaar blijft er
   op een halve schermbreedte te weinig over voor "de thermometer". Het nummer
   schuift naar de hoek, zodat het woord de hele breedte heeft. Past het dan
   nog niet, dan maakt tk.js alle woorden van de rij evenveel kleiner. */
@media (max-width:520px){
  .tk-koppel .tk-koppelkaart.met-oortje,
  .tk-koppel.met-beelden .tk-koppelkaart.met-oortje:not(.met-beeld){
    flex-direction:column;gap:calc(6px * var(--s));
    padding:calc(10px * var(--s)) calc(8px * var(--s))}
  .tk-koppel .tk-koppelkaart.met-oortje .tk-koppelmerk{top:calc(6px * var(--s));right:calc(6px * var(--s));transform:none}
}
.tk-koppelkaart:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-koppelkaart.gekozen{
  border-color:var(--blauw);background:var(--blauw-licht);
  box-shadow:0 0 0 calc(3px * var(--s)) rgba(81,112,255,.25);
}
/* Een paar draagt zijn eigen kleur EN zijn eigen nummer. Alleen kleur is
   niet genoeg: ongeveer een op de twaalf jongens ziet er twee door elkaar. */
.tk-koppelkaart.gekoppeld{
  border-color:var(--paar);
  background:color-mix(in srgb, var(--paar) 14%, white);
}
.tk-koppelmerk{
  position:absolute;right:calc(10px * var(--s));top:50%;transform:translateY(-50%);
  min-width:calc(26px * var(--s));height:calc(26px * var(--s));border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:calc(15px * var(--s));font-weight:700;color:#fff;
}
.tk-koppelkaart.gekoppeld .tk-koppelmerk{background:var(--paar);color:var(--paar-tekst,#fff)}
/* Het oordeel gaat voor de paarkleur: groen of roest, zoals overal.
   Het cijfer wordt dan altijd wit. Het droeg eerst de tekstkleur van zijn
   paarkleur, en die is bij oranjegeel, geel, lichtblauw en lichtgrijs bijna
   zwart - zwart op groen leest niet. Het bolletje krijgt bij groen een diepere
   tint, want wit op #22a06b haalt maar 3,3 tegen 4,9 op #1b7f57. */
.tk-koppelkaart.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-koppelkaart.goed .tk-koppelmerk{background:var(--groen-diep);color:#fff}
.tk-koppelkaart.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-koppelkaart.mis .tk-koppelmerk{background:var(--roest);color:#fff}
/* Staat er links iets klaar, dan mag de rechterkolom oplichten. */
.tk-koppel.wachtend .tk-koppelkaart.rechts:not(.gekoppeld){
  border-style:dashed;border-color:var(--blauw);
}
.tk-oplossing-lijst{margin:0;padding-left:calc(20px * var(--s));font-weight:600}
.tk-oplossing-lijst li{margin:calc(3px * var(--s)) 0}
/* Smal scherm, en geen prenten: dan onder elkaar, maar wel om beurten - links,
   rechts, links - zodat je niet eerst door alle vragen moet scrollen voor je de
   antwoorden ziet. */
@media (max-width:520px){
  .tk-koppel{grid-template-columns:1fr;gap:calc(8px * var(--s))}
}

/* ---------- getallenas ---------- */
/* De as is een rij knoppen: elk streepje is aan te tikken en daartussen zit
   niets. Zo kan een kind niet half tussen twee getallen in blijven staan. */
.tk-as-doos{padding:calc(30px * var(--s)) calc(28px * var(--s)) calc(52px * var(--s))}
.tk-as{
  position:relative;height:calc(10px * var(--s));margin:calc(30px * var(--s)) 0 0;
}
.tk-as.uit{pointer-events:none}
.tk-as-lijn{
  position:absolute;left:0;right:0;top:50%;height:calc(5px * var(--s));
  transform:translateY(-50%);background:var(--inkt);border-radius:999px;
}
/* De knop zelf is onzichtbaar en ruim: een streepje van twee pixels is niet
   te raken met een vinger. */
.tk-as-punt{
  position:absolute;top:50%;transform:translate(-50%,-50%);
  height:calc(92px * var(--s));border:0;background:transparent;padding:0;margin:0;
  font:inherit;color:inherit;cursor:pointer;overflow:visible;
  -webkit-tap-highlight-color:transparent;
}
.tk-as-punt:focus-visible{outline:3px solid var(--blauw);outline-offset:2px;border-radius:calc(8px * var(--s))}
.tk-as-streep{
  position:absolute;left:50%;top:50%;width:calc(3px * var(--s));height:calc(20px * var(--s));
  transform:translate(-50%,-50%);background:var(--paars);border-radius:calc(2px * var(--s));
}
/* De streepjes tussen de getallen staan in het paars, de getallen zelf in het
   donker: zo zie je waar de lijn zijn ankers heeft en waar de stapjes ertussen
   liggen. Zo staat het in de oefeningen van het vierde leerjaar, en dat leest
   rustiger dan een rij grijze streepjes die allemaal even zwaar wegen. */
.tk-as-streep.groot{height:calc(34px * var(--s));width:calc(4px * var(--s));background:var(--inkt)}
.tk-as-label{
  position:absolute;left:50%;top:calc(50% + 26px * var(--s));transform:translateX(-50%);
  font-size:calc(18px * var(--s));font-weight:600;color:var(--inkt);
  font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;
}
/* De vlag boven het gekozen streepje zegt welk getal daar staat. */
.tk-as-vlag{
  position:absolute;left:50%;bottom:calc(50% + 16px * var(--s));transform:translateX(-50%);
  background:var(--blauw);color:#fff;border-radius:999px;
  padding:calc(3px * var(--s)) calc(10px * var(--s));
  font-size:calc(15px * var(--s));font-weight:700;white-space:nowrap;pointer-events:none;
}
.tk-as-punt:hover .tk-as-streep{background:var(--blauw)}
.tk-as-punt.gekozen .tk-as-streep{background:var(--blauw);width:calc(5px * var(--s));height:calc(30px * var(--s))}
/* Het eerste en het laatste getal schuiven naar binnen, zodat ze niet half
   buiten de lijn hangen. */
.tk-as-label.begin{left:0;transform:none}
.tk-as-label.eind{left:auto;right:0;transform:none}
.tk-as-punt.gekozen .tk-as-label{color:var(--blauw);font-weight:700}
.tk-as-punt.goed .tk-as-streep{background:var(--groen);width:calc(5px * var(--s));height:calc(30px * var(--s))}
.tk-as-punt.goed .tk-as-vlag{background:var(--groen)}
.tk-as-punt.mis .tk-as-streep{background:var(--roest);width:calc(5px * var(--s));height:calc(30px * var(--s))}
.tk-as-punt.mis .tk-as-vlag{background:var(--roest)}
/* 'Zo hoorde het' - dezelfde cyaan als bij het kleuren. */
.tk-as-punt.oplossing .tk-as-streep{background:var(--cyaan);width:calc(5px * var(--s));height:calc(30px * var(--s))}
.tk-as-punt.oplossing .tk-as-label{color:var(--cyaan);font-weight:700}
.tk-oplossingsvlag{background:var(--cyaan)}
/* Staat de fout vlak naast de oplossing, dan botsen de twee vlaggen. */
.tk-as-punt.oplossing .tk-as-vlag{bottom:calc(50% + 44px * var(--s))}

.tk-grondplan{margin:0 0 calc(16px * var(--s))}
.tk-grondplan-kop{font-size:calc(15px * var(--s));color:var(--grijs);margin-bottom:calc(6px * var(--s))}
/* Het pijltje hangt links onder het rooster, buiten de vakjes, en wijst de
   hoek in. Op het bouwvlak staat hetzelfde teken bij dezelfde hoek. */
.tk-plan-hoek{position:relative;display:inline-block;padding:calc(4px * var(--s)) 0 0 calc(26px * var(--s))}
.tk-hoekpijl{
  position:absolute;left:0;top:calc(2px * var(--s));
  width:calc(22px * var(--s));height:calc(22px * var(--s));color:var(--oranje);
}
.tk-grondplan-rooster{display:inline-grid;gap:calc(3px * var(--s));background:var(--lijn);
  padding:calc(3px * var(--s));border-radius:calc(8px * var(--s))}
.tk-grondplan-vak{
  background:#fff;display:flex;align-items:center;justify-content:center;
  height:calc(46px * var(--s));font-weight:700;font-size:calc(20px * var(--s));
  font-variant-numeric:tabular-nums;
}
.tk-grondplan-vak.leeg{background:var(--achtergrond);color:var(--lijn)}
.tk-bouwknoppen{margin-bottom:calc(12px * var(--s))}
.tk-bouwvlak{
  background:var(--achtergrond);border-radius:calc(14px * var(--s));
  padding:calc(8px * var(--s));overflow:hidden;
}
.tk-bouwvlak canvas{display:block;margin:0 auto;touch-action:pinch-zoom;cursor:pointer}

/* ---------- kladpapier ---------- */
.tk-klad-paneel{
  background:#fffdf7;border-radius:var(--rond);box-shadow:var(--schaduw);
  display:flex;flex-direction:column;overflow:hidden;
  min-height:calc(360px * var(--s));max-height:calc(70vh);
}
.tk-klad-paneel[hidden]{display:none}
.tk-klad-kop{
  display:flex;align-items:center;gap:calc(10px * var(--s));
  padding:calc(12px * var(--s)) calc(16px * var(--s));border-bottom:1px solid var(--lijn);
}
.tk-klad-kop strong{margin-right:auto;font-size:calc(18px * var(--s))}
.tk-klad-kop .tk-knop{padding:calc(8px * var(--s)) calc(16px * var(--s));min-height:calc(38px * var(--s));font-size:calc(15px * var(--s))}
.tk-klad-vel{
  position:relative;flex:1;min-height:0;
  background:repeating-linear-gradient(#fffdf7 0 calc(38px * var(--s)), #f0ece0 calc(38px * var(--s)) calc(39px * var(--s)));
}
.tk-klad-vel canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:pinch-zoom;display:block}
/* De getypte tekst ligt boven de inkt en laat die doorschijnen, zodat een
   kind een som kan schrijven en er iets naast kan typen. */
.tk-klad-tekst{
  position:absolute;inset:0;width:100%;height:100%;
  background:transparent;border:0;outline:0;resize:none;
  font:inherit;font-size:calc(24px * var(--s));line-height:calc(38px * var(--s));
  padding:0 calc(14px * var(--s));color:var(--inkt);
  -webkit-user-select:text;user-select:text;
}
.tk-klad-tekst[hidden]{display:none}
.tk-rondje.tk-klein{width:calc(40px * var(--s));height:calc(40px * var(--s));box-shadow:inset 0 0 0 2px var(--lijn)}
.tk-rondje.tk-klein svg{width:calc(19px * var(--s));height:calc(19px * var(--s))}
.tk-klad-kop .tk-rondje.tk-klein{margin-right:auto}
.tk-klad-kop strong{margin-right:calc(10px * var(--s))}

/* ---------- schermtoetsenbord ---------- */
.tk-toetsenbord{
  background:#fff;border-radius:var(--rond);box-shadow:var(--schaduw);
  padding:calc(12px * var(--s));margin-top:calc(14px * var(--s));
}
.tk-toetsenbord[hidden]{display:none}
.tk-toets-rijen{display:flex;flex-direction:column;gap:calc(8px * var(--s))}
/* Een rij toetsen mag NIET afbreken: dan valt er een losse p onder de rij
   en zoekt een kind zich blind. De toetsen krimpen mee tot de rij past. */
.tk-toets-rij{display:flex;gap:calc(6px * var(--s));justify-content:center;flex-wrap:nowrap}
.tk-toets{
  font:inherit;font-weight:700;font-size:calc(20px * var(--s));
  border:0;cursor:pointer;border-radius:calc(12px * var(--s));
  background:var(--blauw-licht);color:var(--inkt);
  flex:1 1 calc(52px * var(--s));min-width:calc(30px * var(--s));max-width:calc(64px * var(--s));
  height:calc(56px * var(--s));padding:0;
}
/* De onderste rij (wissen, sluiten, spatie) heeft bredere toetsen nodig en
   mag wel afbreken - daar staan woorden op, geen letters. */
.tk-toets-rij:last-child{flex-wrap:wrap;gap:calc(8px * var(--s))}
.tk-toets:active{background:var(--blauw);color:#fff}
.tk-toets.tk-breed{flex:0 1 auto;min-width:calc(120px * var(--s));max-width:none;
  padding:0 calc(18px * var(--s));font-size:calc(16px * var(--s));color:var(--blauw)}
.tk-toets:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}

/* het vakje waarin getypt wordt */
.tk-vak.actief .tk-vak-veld{box-shadow:0 0 0 calc(3px * var(--s)) rgba(81,112,255,.35)}
/* Het vakje is zelf aantikbaar (tabIndex), en dan tekent de browser er een
   zwart kadertje omheen zodra je het aanraakt. Dat vecht met het blauwe
   vierkantje. Voor wie met de tab-toets werkt blijft er wel een rand staan. */
.tk-vak:focus{outline:none}
.tk-vak:focus-visible{outline:calc(3px * var(--s)) solid var(--blauw);outline-offset:calc(3px * var(--s));border-radius:calc(18px * var(--s))}

/* ---------- slot ---------- */
.tk-slot{text-align:center;padding:calc(28px * var(--s)) calc(20px * var(--s))}
.tk-slot h2{font-size:calc(30px * var(--s));margin:0 0 calc(8px * var(--s))}
.tk-slot .tk-score{font-size:calc(22px * var(--s));margin-bottom:calc(18px * var(--s))}
.tk-verzonden{
  margin-top:calc(18px * var(--s));text-align:left;background:#fff;border-radius:var(--rond);
  box-shadow:var(--schaduw);padding:calc(16px * var(--s));font-size:calc(15px * var(--s));
}
.tk-verzonden h3{margin:0 0 calc(8px * var(--s));font-size:calc(17px * var(--s))}
.tk-verzonden pre{
  margin:0;background:#f6f7fb;border-radius:calc(10px * var(--s));padding:calc(12px * var(--s));
  overflow:auto;max-height:calc(260px * var(--s));font-size:calc(13px * var(--s));
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-word;
}
.tk-fout-lijst{list-style:none;margin:0 0 calc(14px * var(--s));padding:0}
.tk-fout-lijst li{
  border-left:calc(4px * var(--s)) solid var(--paars);background:var(--paars-licht);
  border-radius:calc(8px * var(--s));padding:calc(10px * var(--s)) calc(14px * var(--s));
  margin-bottom:calc(8px * var(--s));
}
.tk-fout-lijst .tk-denkfout{display:block;color:var(--grijs);font-size:calc(14px * var(--s));margin-top:calc(4px * var(--s))}

@media (max-width:640px){
  :root{--s:.92}
  .tk-jf{flex-direction:column}
}

@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
}

/* ---------- een maat voor een los woord ---------- */
/* Waar er een los woordje op een kaartje staat - een keuze, een volgorde, een
   koppeling, een sorteerkaartje - krijgt het overal dezelfde maat: even groot
   als in een keuzerooster, en in gewoon schrift. Een kind van zes leest deze
   woorden letter voor letter, en het formaat hoort niet af te hangen van het
   soort oefening waarin ze toevallig staan. Vet valt weg: dat maakt de letters
   dikker dan ze in zijn eigen schrift staan.
   Deze regel staat helemaal achteraan met opzet. Hij moet de maat van de
   afzonderlijke kaartsoorten overschrijven, en bij gelijke gewichten wint in
   css wat het laatst staat. */
.tk-woordgroot{font-size:calc(34px * var(--s));font-weight:400}
/* De tussenmaat voor koppelkaartjes: te lang om fors te staan, te kort om
   klein te blijven. Zie de uitleg bij de koppeloefening in tk.js. */
.tk-woordmiddel{font-size:calc(27px * var(--s));font-weight:400}
@media (max-width:480px){ .tk-woordmiddel{font-size:calc(23px * var(--s))} }
@media (max-width:480px){ .tk-woordgroot{font-size:calc(28px * var(--s))} }

/* De woorden in de bak van een sleepzin horen bij de ZINNEN en niet bij een
   losse kaart: ze gaan straks middenin een zin staan. Daarom volgen ze de maat
   van de zin en niet de grote kaartmaat - een woord van 34 px in een zin van
   23 px leest als een stuk uit een andere oefening. Wel in gewoon schrift,
   zoals overal, en ook deze regel hoort achteraan om de kaartmaat te
   overschrijven. */
.tk-inwoord{font-size:calc(21px * var(--s));font-weight:400}
@media (max-width:480px){ .tk-inwoord{font-size:calc(18px * var(--s))} }

/* Een regel met cijfervakjes: de vakjes zijn groot, dus de som ernaast mag
   niet als kleine lettertjes staan. Alles op dezelfde hoogte uitgelijnd. */
.tk-regel.cijferrij{
  display:flex;flex-wrap:wrap;align-items:center;
  gap:calc(10px * var(--s));line-height:1.2;font-weight:600;
}
/* Een kale getallenrij is geen som: daar zijn de getallen gewoon getallen. */
.tk-regel.cijferrij.gewoon{font-weight:400}

/* --- sprongen op de getallenlijn ---
   Dezelfde lijn als de getallenas (.tk-as-lijn en .tk-as-streep), maar met
   een dier erboven, boogjes voor de sprongen en een bolletje met het getal
   onder elk streepje. De bolletjes kunnen verborgen worden: op de lege
   getallenlijn staat alleen het begingetal er, en dat is precies de stap
   die de oefening moeilijker maakt. */
.tk-sprong-som{
  text-align:center;margin:0 0 calc(4px * var(--s));
  font-size:calc(38px * var(--s));font-weight:700;color:var(--inkt);
  font-variant-numeric:tabular-nums;
}
.tk-sprong-som .a{color:var(--oranje-lijn)}
.tk-sprong-som .b{color:var(--blauw)}
.tk-sprong-doos{padding:calc(104px * var(--s)) calc(30px * var(--s)) calc(64px * var(--s))}
.tk-sprong{position:relative;height:calc(10px * var(--s))}
.tk-sprong.uit{pointer-events:none}
.tk-sprong-bogen{position:absolute;left:0;right:0;top:50%;height:0}
/* De boog staat met zijn voeten op de lijn en wijst naar boven. Gestippeld
   blauw, want een sprong is iets wat het kind doet - bediening, geen inhoud. */
.tk-sprong-boog{position:absolute;bottom:0;height:calc(42px * var(--s));overflow:visible;pointer-events:none}
.tk-sprong-boog path{
  fill:none;stroke:var(--blauw);stroke-width:3;stroke-linecap:round;
  stroke-dasharray:6 6;vector-effect:non-scaling-stroke;
}
.tk-sprong-dier{
  position:absolute;top:calc(-38px * var(--s));left:0;
  font-size:calc(50px * var(--s));line-height:1;
  transform:translate(-50%,-100%);transition:left .3s ease;
  pointer-events:none;user-select:none;
}
/* De meeste dieren kijken in een emoji naar links; springen doe je hier naar
   rechts, dus ze worden gespiegeld. Net als in de oude oefeningen. */
.tk-sprong-dier.gespiegeld{transform:translate(-50%,-100%) scaleX(-1)}
@keyframes tk-hup{
  0%{margin-top:0}
  45%{margin-top:calc(-20px * var(--s))}
  100%{margin-top:0}
}
.tk-sprong-dier.hup{animation:tk-hup .33s ease}
/* Een dier als afbeelding krijgt een vaste hoogte; de breedte volgt. Zo staan
   het konijn, de kangoeroe en de geit even groot op de lijn, ook al is de
   kangoeroe langer dan hij hoog is. */
.tk-sprong-dier.beeld{font-size:0}
/* De tekeningen hebben in hun eigen vierkant een randje lucht (zo'n 3%),
   dus ze staan iets kleiner dan hun maat doet vermoeden. Bijsnijden brak
   een van de drie - die tekent met clip-paden en die schoven mee - dus
   staan ze hier onbewerkt en wordt de maat gewoon wat ruimer genomen. */
.tk-sprong-dier.beeld img{display:block;height:calc(66px * var(--s));width:auto}
@media (prefers-reduced-motion:reduce){
  .tk-sprong-dier{transition:none}
  .tk-sprong-dier.hup{animation:none}
}
.tk-sprong-punt{
  position:absolute;top:50%;transform:translate(-50%,-50%);box-sizing:border-box;
  height:calc(92px * var(--s));border:0;background:transparent;padding:0;margin:0;
  font:inherit;color:inherit;cursor:pointer;overflow:visible;
  -webkit-tap-highlight-color:transparent;
}
.tk-sprong-punt.stil{cursor:default}
.tk-sprong-punt:focus-visible{outline:calc(3px * var(--s)) solid var(--blauw);outline-offset:2px;border-radius:calc(8px * var(--s))}
.tk-sprong-bol{
  position:absolute;left:50%;top:calc(50% + 22px * var(--s));transform:translateX(-50%);
  box-sizing:border-box;width:100%;text-align:center;
  padding:calc(3px * var(--s)) 0;
  border:calc(3px * var(--s)) solid var(--lijn-sterk);border-radius:999px;background:#fff;
  font-size:calc(19px * var(--s));font-weight:700;color:var(--inkt);
  font-variant-numeric:tabular-nums;
}
.tk-sprong-bol.weg{visibility:hidden}
/* Waar het dier begint: oranjegeel. Waar het landt: paars. Dezelfde twee
   kleuren als in de oude oefeningen, en ze zeggen inhoud - geen oordeel. */
.tk-sprong-punt.begin .tk-sprong-bol{border-color:var(--oranje-lijn);box-shadow:0 0 0 calc(4px * var(--s)) var(--oranje-licht)}
.tk-sprong-punt.land .tk-sprong-bol{border-color:var(--paars-diep);box-shadow:0 0 0 calc(4px * var(--s)) var(--paars-licht)}
.tk-sprong-punt:not(.stil):hover .tk-sprong-bol{border-color:var(--blauw)}
.tk-sprong-punt.gekozen .tk-sprong-bol{border-color:var(--blauw);background:var(--blauw-licht);color:var(--blauw)}
.tk-sprong-punt.goed .tk-sprong-bol{border-color:var(--groen);background:var(--groen-licht);color:var(--groen-diep)}
.tk-sprong-punt.mis  .tk-sprong-bol{border-color:var(--roest);background:var(--roest-licht);color:var(--roest)}
.tk-sprong-punt.oplossing .tk-sprong-bol{border-color:var(--cyaan);background:var(--cyaan-licht);color:var(--inkt)}
/* De keuzeknoppen dragen dezelfde maat als het cijfervakje, maar met een
   volle rand: een knop is iets om aan te tikken, geen vak om in te vullen. */
.tk-sprong-keuzes{
  display:flex;flex-wrap:wrap;justify-content:center;
  gap:calc(14px * var(--s));margin:calc(26px * var(--s)) 0 0;
}
.tk-sprong-keuze{
  min-width:calc(74px * var(--s));height:calc(74px * var(--s));
  border:calc(3px * var(--s)) solid var(--blauw);border-radius:calc(16px * var(--s));
  background:#fff;color:var(--inkt);font:inherit;font-size:calc(34px * var(--s));
  font-weight:700;cursor:pointer;font-variant-numeric:tabular-nums;
}
.tk-sprong-keuze:focus-visible{outline:calc(3px * var(--s)) solid var(--blauw);outline-offset:calc(3px * var(--s))}
.tk-sprong-keuze.gekozen{background:var(--blauw-licht);color:var(--blauw)}
.tk-sprong-keuze.goed{border-color:var(--groen);background:var(--groen-licht);color:var(--groen-diep)}
.tk-sprong-keuze.mis{border-color:var(--roest);background:var(--roest-licht);color:var(--roest)}
.tk-sprong-keuze.oplossing{border-color:var(--cyaan);background:var(--cyaan-licht)}
@media (max-width:640px){
  .tk-sprong-doos{padding:calc(92px * var(--s)) calc(16px * var(--s)) calc(56px * var(--s))}
  .tk-sprong-som{font-size:calc(30px * var(--s))}
  .tk-sprong-dier{font-size:calc(40px * var(--s))}
  .tk-sprong-dier.beeld img{height:calc(52px * var(--s))}
  .tk-sprong-bol{font-size:calc(15px * var(--s));border-width:calc(2px * var(--s));padding:calc(2px * var(--s)) 0}
  .tk-sprong-keuze{min-width:calc(60px * var(--s));height:calc(60px * var(--s));font-size:calc(28px * var(--s))}
}

/* --- verhaalkaartjes: drie rijen om uit te kiezen ---
   Tien kaartjes passen niet op een scherm, dus elke rij schuift opzij. Dat is
   ook wat de bron deed, en het is beter dan ze laten teruglopen: zo blijft een
   rij een rij, en zie je in een oogopslag dat er drie keuzes te maken zijn. */
.tk-kaartkiezer{margin:calc(6px * var(--s)) 0 calc(4px * var(--s))}
.tk-kaartkiezer.uit{pointer-events:none;opacity:.7}
.tk-kaartkop{
  margin:calc(14px * var(--s)) 0 calc(6px * var(--s));
  font-size:calc(19px * var(--s));font-weight:700;color:var(--inkt);
}
.tk-kaartstrip{
  display:flex;gap:calc(12px * var(--s));overflow-x:auto;overflow-y:hidden;
  padding:calc(4px * var(--s)) calc(2px * var(--s)) calc(10px * var(--s));
  scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.tk-schrijfkaart{
  flex:0 0 auto;scroll-snap-align:center;
  width:calc(124px * var(--s));box-sizing:border-box;
  display:flex;flex-direction:column;align-items:center;gap:calc(6px * var(--s));
  padding:calc(8px * var(--s));margin:0;
  border:calc(3px * var(--s)) solid var(--lijn);border-radius:calc(16px * var(--s));
  background:#fff;font:inherit;color:inherit;cursor:pointer;text-align:center;
  -webkit-tap-highlight-color:transparent;transition:border-color .12s,background .12s;
}
.tk-schrijfkaart .tk-beeld{
  width:100%;aspect-ratio:1 / 1;height:auto;object-fit:cover;
  border-radius:calc(10px * var(--s));max-width:100%;
}
.tk-schrijfkaart.met-beeld{padding:calc(6px * var(--s))}
.tk-schrijfkaart-naam{
  font-size:calc(17px * var(--s));line-height:1.25;color:var(--inkt);
  font-weight:600;
}
/* Zonder prent is het kaartje zelf het kaartje: wat hoger, en de tekst in het
   midden. */
.tk-schrijfkaart:not(.met-beeld){
  min-height:calc(78px * var(--s));justify-content:center;
}
/* Een rij van tien past niet op een scherm. Een vage rand rechts zegt dat er
   nog meer staat; zonder dat lijkt de rij bij de derde af te breken. Hij staat
   op de doos eromheen, want op de schuivende rij zelf schuift hij mee. */
.tk-kaartrand{
  position:relative;
  -webkit-mask-image:linear-gradient(to right, #000 calc(100% - 34px), transparent);
  mask-image:linear-gradient(to right, #000 calc(100% - 34px), transparent);
}
.tk-schrijfkaart:hover{border-color:var(--lijn-sterk)}
/* Gekozen is blauw: kiezen is bediening, geen oordeel. Er valt hier niets
   juist of fout te kiezen - elk kaartje mag. */
.tk-schrijfkaart.aan{
  border-color:var(--blauw);background:var(--blauw-licht);
  box-shadow:0 0 0 calc(3px * var(--s)) rgba(81,112,255,.18);
}
.tk-schrijfkaart.aan .tk-schrijfkaart-naam{color:var(--blauw);font-weight:700}
.tk-schrijfkaart:focus-visible{outline:calc(3px * var(--s)) solid var(--blauw);outline-offset:calc(2px * var(--s))}
.tk-kaartbalk{
  display:flex;flex-wrap:wrap;align-items:center;gap:calc(12px * var(--s));
  margin:calc(10px * var(--s)) 0 0;
}
.tk-kaartzegt{
  margin:0;font-size:calc(18px * var(--s));color:var(--grijs);
}
.tk-kaartzegt b{color:var(--paars-diep)}
.tk-kaartleeg{color:var(--lijn-sterk)}
@media (max-width:640px){
  .tk-schrijfkaart{width:calc(96px * var(--s))}
  .tk-schrijfkaart-naam{font-size:calc(15px * var(--s))}
  .tk-kaartzegt{font-size:calc(16px * var(--s))}
  .tk-kaartrand{
    -webkit-mask-image:linear-gradient(to right, #000 calc(100% - 26px), transparent);
    mask-image:linear-gradient(to right, #000 calc(100% - 26px), transparent);
  }
}

/* Een hele zin op een volgordekaartje leest links uitgelijnd: gecentreerd
   valt de laatste regel op als een fout. Losse woorden blijven in het midden. */
.tk-volgkaart.zin{text-align:left}

/* --- een prent in een invulregel, en regels naast elkaar ---
   Samen is dat een rebus: alle plaatjes in beeld, onder elk een vak. Pas
   samen vormen ze de zin, dus ze horen ook samen te staan. */
.tk-regelrij{
  display:flex;flex-wrap:wrap;align-items:flex-end;
  gap:calc(18px * var(--s)) calc(22px * var(--s));
  margin:calc(10px * var(--s)) 0 calc(14px * var(--s));
}
.tk-regel.naastelkaar{
  display:flex;flex-direction:column;align-items:center;gap:calc(8px * var(--s));
}
/* Even hoog, zodat de plaatjes van een rebus op een rij staan en niet als
   losse plaatjes van willekeurige grootte. */
.tk-regelbeeld{
  display:block;height:calc(104px * var(--s));width:auto;
  max-width:calc(190px * var(--s));border-radius:calc(12px * var(--s));
}
/* En even brede vakjes. Laat je ze meegroeien met het antwoord, dan verraadt
   de breedte hoe lang het woord is - bij een rebus is dat het halve raadsel. */
.tk-regel.naastelkaar .tk-vak-veld{
  min-width:calc(190px * var(--s)) !important;
}
@media (max-width:640px){
  .tk-regelbeeld{height:calc(82px * var(--s));max-width:calc(140px * var(--s))}
  .tk-regel.naastelkaar .tk-vak-veld{min-width:calc(140px * var(--s)) !important}
  .tk-regelrij{gap:calc(14px * var(--s))}
}

/* --- het overzicht op het eindscherm ---
   Wat je deed, opgave per opgave. Groen of roest zegt of het klopte, en waar
   het misging staat het juiste antwoord erachter. De prent staat klein links:
   bij tien keer dezelfde vraag zegt het woord alleen niet meer wélke opgave
   het was. */
.tk-overzichtvak h3{margin:0 0 calc(10px * var(--s))}
.tk-overzicht{list-style:none;margin:0;padding:0;display:grid;gap:calc(8px * var(--s))}
.tk-overzicht-rij{
  display:flex;align-items:center;gap:calc(12px * var(--s));
  padding:calc(8px * var(--s)) calc(12px * var(--s));
  border-radius:calc(12px * var(--s));background:#fff;
  border:calc(2px * var(--s)) solid var(--lijn);
}
.tk-overzicht-rij.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-overzicht-rij.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-overzicht-beeld{
  flex:0 0 auto;width:calc(48px * var(--s));height:calc(48px * var(--s));
  object-fit:cover;border-radius:calc(10px * var(--s));max-width:none;
}
.tk-overzicht-merk{
  flex:0 0 auto;font-size:calc(20px * var(--s));font-weight:700;line-height:1;
  width:calc(22px * var(--s));text-align:center;
}
.tk-overzicht-rij.goed .tk-overzicht-merk{color:var(--groen-diep)}
.tk-overzicht-rij.mis  .tk-overzicht-merk{color:var(--roest)}
.tk-overzicht-tekst{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:calc(4px * var(--s)) calc(10px * var(--s));
  font-size:calc(18px * var(--s));color:var(--inkt);min-width:0;
}
.tk-overzicht-gaf{font-weight:700;word-break:break-word}
.tk-overzicht-rij.mis .tk-overzicht-gaf{text-decoration:line-through;color:var(--roest);font-weight:600}
/* Het juiste antwoord in cyaan: "zo hoorde het", dezelfde kleur als op de
   getallenas en bij het kleuren. */
.tk-overzicht-juist{color:var(--inkt);font-weight:700}
.tk-overzicht-juist::before{content:'\2192\00a0';color:var(--cyaan);font-weight:700}
@media (max-width:640px){
  .tk-overzicht-tekst{font-size:calc(16px * var(--s))}
  .tk-overzicht-beeld{width:calc(40px * var(--s));height:calc(40px * var(--s))}
}

/* ---------- oefenkaartjes: zelf nakijken ---------- */
.tk-oefenteller{margin:calc(6px * var(--s)) 0 calc(14px * var(--s));color:var(--grijs);font-size:calc(15px * var(--s))}
.tk-oefenkaart{
  display:flex;align-items:center;justify-content:center;
  width:min(100%, calc(360px * var(--s)));min-height:calc(190px * var(--s));
  margin:0 auto;padding:calc(20px * var(--s));
  border:calc(3px * var(--s)) solid var(--lijn);border-radius:calc(22px * var(--s));
  background:#fff;cursor:pointer;font:inherit;color:var(--inkt);
  box-shadow:0 calc(4px * var(--s)) calc(14px * var(--s)) rgba(31,36,48,.07);
  transition:border-color .15s ease, background .15s ease;
}
.tk-oefenkaart:hover{border-color:var(--blauw)}
.tk-oefenkaart:focus-visible{outline:3px solid var(--blauw);outline-offset:3px}
.tk-oefenkaart.om{border-color:var(--paars);background:var(--paars-licht)}
.tk-oefenkaart[disabled]{cursor:default;opacity:.7}
.tk-oefenkaart-tekst{font-size:calc(52px * var(--s));font-weight:400;line-height:1.1;text-align:center}
.tk-oefenknoppen{display:flex;gap:calc(12px * var(--s));justify-content:center;flex-wrap:wrap;margin-top:calc(18px * var(--s))}
.tk-oefenwist{background:var(--groen-diep);box-shadow:none}
.tk-oefenniet{background:#fff;color:var(--roest);box-shadow:inset 0 0 0 2px var(--roest)}

/* ---------- rekenen met materiaal ---------- */
.tk-materiaal{margin:calc(14px * var(--s)) 0 calc(20px * var(--s))}
.tk-materiaalkop{
  margin:calc(14px * var(--s)) 0 calc(6px * var(--s));color:var(--grijs);
  font-size:calc(15px * var(--s));font-weight:700;
}
.tk-materiaalkop:first-child{margin-top:0}
/* De bak met materiaal: een staaf en tien losse blokjes, altijd te zien. De
   tien naast de staaf zijn geen versiering - ze laten zien wat een staaf
   waard is. */
.tk-materiaalbak{
  padding:calc(12px * var(--s)) calc(14px * var(--s)) calc(14px * var(--s));
  border:calc(2px * var(--s)) solid var(--lijn);border-radius:calc(16px * var(--s));
  background:#fff;
}
.tk-bakvlak{display:flex;flex-direction:column;align-items:flex-start;gap:calc(8px * var(--s))}
.tk-materiaalvlak{
  display:flex;flex-direction:column;flex-wrap:wrap;align-items:flex-start;gap:calc(6px * var(--s));
  min-height:calc(120px * var(--s));padding:calc(14px * var(--s));
  border:calc(2px * var(--s)) dashed var(--lijn-sterk, #c3cadb);border-radius:calc(16px * var(--s));
  background:#fbfcff;
}
.tk-materiaalleeg{margin:auto;color:var(--grijs);font-size:calc(15px * var(--s))}
/* De kleuren zijn die van het materiaal in de klas: de staaf van tien groen,
   de losse blokjes oranjegeel. Dat is geen oordeel maar materiaal - het groen
   van "juist" zit op de rand van een vakje en nooit op een staaf, dus ze
   raken elkaar niet.

   De staaf ligt plat: tien vakjes naast elkaar, even groot als een los
   blokje. Zo zie je in een oogopslag dat tien blokjes samen een staaf zijn -
   met een staande staaf van 13 px per vakje naast blokjes van 28 klopt die
   vergelijking niet meer. */
.tk-mstaaf{
  display:grid;grid-template-columns:repeat(10, calc(26px * var(--s)));
  height:calc(26px * var(--s));padding:0;border:calc(2px * var(--s)) solid var(--mab-staaf-lijn);
  border-radius:calc(6px * var(--s));background:var(--mab-staaf);cursor:pointer;overflow:hidden;
  flex:0 0 auto;box-sizing:content-box;
}
.tk-mstaaf:hover{filter:brightness(1.08)}
.tk-mstaaf:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-mcel{border-right:1px solid rgba(255,255,255,.55)}
.tk-mcel:last-child{border-right:0}
/* Blokjes liggen in de tienstructuur: per groepje van tien een rooster van
   ceil(n/2) breed, dus twee rijen, en groepjes van tien met lucht ertussen. */
.tk-mblokjes{display:flex;flex-wrap:wrap;align-items:flex-start;gap:calc(16px * var(--s))}
.tk-mgroep{
  display:grid;grid-template-columns:repeat(var(--kol,5), calc(26px * var(--s)));
  gap:calc(4px * var(--s));align-content:start;
}
.tk-mblok{
  width:calc(26px * var(--s));height:calc(26px * var(--s));padding:0;cursor:pointer;
  border:calc(2px * var(--s)) solid var(--mab-blok-lijn);border-radius:calc(6px * var(--s));
  background:var(--mab-blok);box-sizing:border-box;
}
.tk-mblok:hover{filter:brightness(1.08)}
.tk-mblok:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-materiaalbalk{display:flex;gap:calc(10px * var(--s));align-items:center;flex-wrap:wrap;margin-top:calc(12px * var(--s))}
.tk-materiaalknop{padding:calc(9px * var(--s)) calc(18px * var(--s));min-height:calc(42px * var(--s));font-size:calc(15px * var(--s))}
.tk-materiaalknop.stil{background:#fff;color:var(--blauw);box-shadow:inset 0 0 0 2px var(--blauw)}
.tk-materiaalteller{margin-left:auto;font-weight:700;color:var(--inkt);font-size:calc(17px * var(--s))}

/* ---------- een figuur bouwen ---------- */
.tk-figuurdoos{
  width:min(100%, calc(420px * var(--s)));margin:calc(10px * var(--s)) auto 0;
  border:calc(2px * var(--s)) solid var(--lijn);border-radius:calc(18px * var(--s));
  background:#fff;padding:calc(10px * var(--s));
}
.tk-figuurdoos.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-figuurdoos.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-figuurvel{display:block;width:100%;height:auto;touch-action:manipulation}
.tk-figuurstip{fill:#cbd2e0;cursor:pointer}
.tk-figuurstip:hover{fill:var(--blauw)}
.tk-figuurstip:focus-visible{outline:none;stroke:var(--blauw);stroke-width:1.4}
.tk-figuurstip.aan{fill:var(--paars)}
.tk-figuurstip.eerste{fill:var(--oranje)}
.tk-figuurlijn{stroke:var(--paars);stroke-width:1.6;stroke-linecap:round}
.tk-figuurwis{background:#fff;color:var(--blauw);box-shadow:inset 0 0 0 2px var(--blauw);
  margin-top:calc(12px * var(--s));padding:calc(9px * var(--s)) calc(18px * var(--s));min-height:calc(42px * var(--s))}

/* ---------- een figuur volgen ---------- */
.tk-volgdoos{
  width:min(100%, calc(420px * var(--s)));margin:calc(10px * var(--s)) auto 0;
  border:calc(2px * var(--s)) solid var(--lijn);border-radius:calc(18px * var(--s));
  background:#fff;padding:calc(10px * var(--s));
}
.tk-volgdoos.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-volgdoos.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-volgvel{display:block;width:100%;height:auto;touch-action:pinch-zoom}
.tk-volgbaan{fill:none;stroke:var(--lijn);stroke-width:7;stroke-linecap:round;stroke-linejoin:round}
.tk-volggedaan{fill:none;stroke:var(--paars);stroke-width:7;stroke-linecap:round;stroke-linejoin:round}
.tk-volgstip{fill:var(--oranje);stroke:var(--oranje-lijn);stroke-width:1.2;cursor:grab}

/* ---------- winkeltje ---------- */
.tk-winkelbeurs{margin:calc(4px * var(--s)) 0 calc(14px * var(--s));font-weight:700;font-size:calc(19px * var(--s))}
.tk-winkelrek{display:flex;flex-wrap:wrap;gap:calc(12px * var(--s));justify-content:center}
.tk-winkelding{
  display:flex;flex-direction:column;align-items:center;gap:calc(6px * var(--s));
  width:calc(124px * var(--s));padding:calc(12px * var(--s));font:inherit;color:var(--inkt);
  border:calc(3px * var(--s)) solid var(--lijn);border-radius:calc(16px * var(--s));
  background:#fff;cursor:pointer;
}
.tk-winkelding:hover{border-color:var(--blauw)}
.tk-winkelding:focus-visible{outline:3px solid var(--blauw);outline-offset:3px}
.tk-winkelding.aan{border-color:var(--paars);background:var(--paars-licht)}
.tk-winkelding.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-winkelding.mis{border-color:var(--roest);background:var(--roest-licht)}
.tk-winkelding[disabled]{cursor:default}
.tk-winkelding .tk-beeld{max-width:100%;max-height:calc(70px * var(--s));object-fit:contain}
.tk-winkelnaam{font-size:calc(16px * var(--s));color:var(--grijs);text-align:center;line-height:1.2}
.tk-winkelprijs{font-weight:400;font-size:calc(20px * var(--s))}
.tk-winkeltotaal{margin-top:calc(16px * var(--s));font-weight:700;font-size:calc(18px * var(--s))}
.tk-winkeltotaal.teveel{color:var(--roest)}

@media (max-width:640px){
  .tk-oefenkaart-tekst{font-size:calc(42px * var(--s))}
  .tk-winkelding{width:calc(104px * var(--s))}
  .tk-mblokjes{gap:calc(12px * var(--s))}
  .tk-mgroep{grid-template-columns:repeat(var(--kol,5), calc(22px * var(--s)));gap:calc(3px * var(--s))}
  .tk-mblok{width:calc(22px * var(--s));height:calc(22px * var(--s))}
  .tk-mstaaf{grid-template-columns:repeat(10, calc(22px * var(--s)));height:calc(22px * var(--s))}
}
.tk-materiaal.goed .tk-materiaalvlak{border-color:var(--groen);background:var(--groen-licht)}
.tk-materiaal.mis .tk-materiaalvlak{border-color:var(--roest);background:var(--roest-licht)}
.tk-figuurdoos + .tk-hint, .tk-volgdoos + .tk-hint{margin-top:calc(14px * var(--s))}
.tk-volgdoos + .tk-knop, .tk-figuurdoos + .tk-knop{margin-top:calc(14px * var(--s))}

/* Een zoekkaart met getallen erop: "100" past niet op de maat van een losse
   letter. De cijfers krimpen mee met hoeveel er staan, en de rondjes blijven
   even groot - anders danst het raster. */
.tk-raster-letter .tk-raster-teken{max-width:100%}
.tk-raster.getallen .tk-raster-letter{font-size:calc(19px * var(--s))}
.tk-raster.getallen.klein .tk-raster-letter{font-size:calc(13px * var(--s))}
@media (max-width:640px){
  .tk-raster.getallen .tk-raster-letter{font-size:calc(15px * var(--s))}
}

/* Een vakje mag nooit breder worden dan de kaart. Een lang antwoord - een
   hele zin - krijgt een vakje van hooguit 600 px waarin de tekst meeschuift,
   zoals in een gewoon invoerveld; wat je net schreef blijft dus in beeld. */
.tk-vak, .tk-vak-veld{max-width:100%}
/* Pas als de tekst ook verkleind niet past, schuift hij naar links weg en
   blijft het einde in beeld; anders staat hij gewoon links, zoals elk vakje. */
.tk-vak.lang .tk-vak-veld .tk-tekst{overflow:hidden;padding-right:calc(6px * var(--s))}
.tk-vak.lang .tk-vak-veld .tk-tekst.schuift{justify-content:flex-end}
/* Een hele zin als antwoord krijgt de volle breedte van de kaart, op een
   eigen regel: daar is plaats om te schrijven, en de getypte zin hoeft niet
   in een vakje van 600 pixels te passen. */
.tk-vak.zin{display:flex;width:100%;margin:calc(4px * var(--s)) 0}
.tk-vak.zin .tk-vak-veld{width:100%;flex:1 1 auto}

/* Weggestreept materiaal blijft liggen: je moet kunnen zien wat je weghaalde.
   Het stuk verbleekt en krijgt een streep - net zoals een kind op papier een
   blokje doorstreept in plaats van het uit te gummen. */
.tk-mstaaf.uit, .tk-mblok.uit{position:relative;background:#eceff4;border-color:#b6bdc9}
.tk-mstaaf.uit .tk-mcel{border-right-color:rgba(31,36,48,.14)}
/* De streep zelf blijft donker: de kleur van het stuk verbleekt, de streep
   niet. Zet je de doorzichtigheid op het hele knopje, dan vervaagt de streep
   mee en zie je niet meer wat je weggestreept hebt. */
.tk-mstaaf.uit::after, .tk-mblok.uit::after{
  content:'';position:absolute;left:calc(-3px * var(--s));right:calc(-3px * var(--s));
  top:calc(50% - 2px);height:calc(4px * var(--s));
  background:var(--inkt);transform:rotate(-14deg);transform-origin:50% 50%;border-radius:2px;
}
.tk-mstaaf.uit::after{transform:rotate(-3deg)}

/* ---------- verdelen: hetzelfde aantal, telkens anders verdeeld ---------- */
.tk-verdeelronde{margin:calc(4px * var(--s)) 0 calc(14px * var(--s));color:var(--grijs);font-size:calc(15px * var(--s));font-weight:700}
.tk-verdeelpot{
  display:flex;align-items:center;gap:calc(12px * var(--s));
  min-height:calc(76px * var(--s));padding:calc(10px * var(--s)) calc(14px * var(--s));
  border:calc(2px * var(--s)) dashed var(--lijn-sterk, #c3cadb);border-radius:calc(16px * var(--s));
  background:#fbfcff;margin-bottom:calc(16px * var(--s));
}
.tk-verdeelpot-teken{font-size:calc(40px * var(--s));line-height:1}
.tk-verdeelpot-teken:empty{display:none}
.tk-verdeelvak{display:flex;flex-wrap:wrap;gap:calc(6px * var(--s));align-items:center;min-height:calc(48px * var(--s))}
.tk-verdeelleeg{color:var(--grijs);font-size:calc(14px * var(--s))}
.tk-verdeelstuk{
  font-size:calc(34px * var(--s));line-height:1;padding:calc(2px * var(--s));border:0;
  background:transparent;cursor:pointer;border-radius:calc(10px * var(--s));
}
.tk-verdeelstuk.stil{display:inline-block;cursor:default}
.tk-verdeelstuk:not(.stil):hover{background:var(--blauw-licht)}
.tk-verdeelstuk:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-verdeelkaarten{display:flex;gap:calc(16px * var(--s));flex-wrap:wrap;justify-content:center}
.tk-verdeelkaart{
  flex:1 1 calc(200px * var(--s));min-width:calc(150px * var(--s));
  display:flex;flex-direction:column;align-items:center;gap:calc(8px * var(--s));
  padding:calc(12px * var(--s));border:calc(3px * var(--s)) solid var(--lijn);
  border-radius:calc(18px * var(--s));background:#fff;
}
.tk-verdeelgezicht{
  font-size:calc(46px * var(--s));line-height:1;padding:calc(4px * var(--s)) calc(10px * var(--s));
  border:0;background:transparent;cursor:pointer;border-radius:calc(14px * var(--s));
}
.tk-verdeelgezicht:hover{background:var(--blauw-licht)}
.tk-verdeelgezicht:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-verdeelkaart .tk-verdeelvak{justify-content:center;min-height:calc(46px * var(--s))}
.tk-verdeelteller{
  font-weight:800;font-size:calc(22px * var(--s));color:var(--paars-diep);
  min-width:calc(40px * var(--s));text-align:center;
}
@media (max-width:640px){
  .tk-verdeelstuk{font-size:calc(28px * var(--s))}
  .tk-verdeelgezicht{font-size:calc(38px * var(--s))}
  .tk-verdeelkaart{min-width:calc(130px * var(--s))}
}
.tk-verdeeloverzicht{
  float:right;margin:0 0 calc(12px * var(--s)) calc(16px * var(--s));
  min-width:calc(150px * var(--s));padding:calc(10px * var(--s)) calc(14px * var(--s));
  border:calc(2px * var(--s)) solid var(--lijn);border-radius:calc(14px * var(--s));background:#fff;
}
.tk-verdeeloverzicht-kop{margin:0 0 calc(6px * var(--s));font-weight:700;font-size:calc(14px * var(--s));color:var(--grijs)}
.tk-verdeellijst{margin:0;padding:0;list-style:none}
.tk-verdeelregel{font-weight:700;font-size:calc(17px * var(--s));padding:calc(2px * var(--s)) 0}
.tk-verdeelregel.leeg{font-weight:400;color:var(--grijs);font-size:calc(14px * var(--s))}
@media (max-width:640px){
  .tk-verdeeloverzicht{float:none;margin:0 0 calc(12px * var(--s));min-width:0}
}

/* Een klok die alleen iets toont, is geen bediening: geen greep, geen
   aanwijzer, en iets kleiner dan een klok die je zelf zet. */
.tk-klok-schaal.stil{cursor:default}
.tk-klok-schaal.stil .tk-klok-wijzer{pointer-events:none}

/* Een vlakke figuur bij de vraag: alleen de omtrek, in de merkkleur, en
   ruim genoeg om de hoeken te kunnen zien. */
.tk-figuurdoos{display:flex;justify-content:center;margin:calc(14px * var(--s)) 0}
.tk-figuurbeeld{width:calc(220px * var(--s));height:calc(220px * var(--s));max-width:100%}
.tk-figuurlijn{fill:none;stroke:var(--paars);stroke-width:5;stroke-linejoin:round}
@media (max-width:640px){
  .tk-figuurbeeld{width:calc(180px * var(--s));height:calc(180px * var(--s))}
}
.met-figuur .tk-figuurbeeld{width:calc(96px * var(--s));height:calc(96px * var(--s));margin:0}
.met-figuur .tk-figuurdoos{margin:0}

/* ---------- de beelden van het vierde leerjaar ---------- */
/* Een rij stukken: tekst, breuken en beelden op een regel, zoals de bron ze
   zette. Ze staan gecentreerd, want zo leest een som: als een geheel. */
.tk-stukken{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:calc(8px * var(--s));font-size:calc(22px * var(--s));line-height:1.3;
}
.tk-stukkenvraag{margin:calc(14px * var(--s)) 0;font-size:calc(26px * var(--s))}
.met-stukken .tk-stukken{gap:calc(6px * var(--s));font-size:calc(20px * var(--s))}

/* Het honderdveld: tien bij tien. De ingekleurde vakjes in de merkkleur, want
   dit is inhoud en geen oordeel - een kind ziet hier 0,42 liggen. */
.tk-honderdveld{
  display:grid;grid-template-columns:repeat(10, calc(15px * var(--s)));
  gap:calc(1px * var(--s));padding:calc(3px * var(--s));
  border:calc(2px * var(--s)) solid var(--lijn);border-radius:calc(6px * var(--s));
  background:#fff;
}
.tk-hvak{
  width:calc(15px * var(--s));height:calc(15px * var(--s));
  background:#f2f4f8;border-radius:calc(2px * var(--s));
}
.tk-hvak.aan{background:var(--paars)}
/* Elke vijfde rij en kolom een tikje donkerder: dan kan je in vijven tellen
   in plaats van een voor een. */
.tk-honderdveld .tk-hvak:nth-child(10n+5){margin-right:calc(2px * var(--s))}

/* De staaf in tienden. */
.tk-staafrij{display:flex;flex-wrap:wrap;gap:calc(8px * var(--s));align-items:center}
.tk-tiendenstaaf{
  display:grid;grid-template-columns:repeat(10, calc(20px * var(--s)));
  border:calc(2px * var(--s)) solid var(--lijn-sterk, #c3cadb);border-radius:calc(6px * var(--s));
  overflow:hidden;background:#fff;
}
.tk-sdeel{height:calc(30px * var(--s));border-right:1px solid var(--lijn);background:#f2f4f8}
.tk-sdeel:last-child{border-right:0}
.tk-sdeel.aan{background:var(--paars)}
.tk-tiendenstaaf.vol .tk-sdeel{background:var(--paars)}

/* De positietabel. De komma staat tussen twee kolommen, als een streep - een
   kind moet zien waar het gehele getal ophoudt. */
.tk-positietabel{border-collapse:collapse;margin:calc(6px * var(--s)) 0;font-size:calc(20px * var(--s))}
.tk-positietabel th,.tk-positietabel td{
  border:calc(2px * var(--s)) solid var(--lijn);
  min-width:calc(44px * var(--s));height:calc(44px * var(--s));
  text-align:center;padding:0 calc(4px * var(--s));
}
.tk-positietabel th{background:#f6f7fb;font-size:calc(15px * var(--s));color:var(--grijs);font-weight:700}
.tk-positietabel td{font-weight:700;font-size:calc(24px * var(--s))}
.tk-positietabel th.voorkomma,.tk-positietabel td.voorkomma{border-right-color:var(--oranje);border-right-width:calc(4px * var(--s))}
@media (max-width:640px){
  .tk-honderdveld{grid-template-columns:repeat(10, calc(12px * var(--s)))}
  .tk-hvak{width:calc(12px * var(--s));height:calc(12px * var(--s))}
  .tk-tiendenstaaf{grid-template-columns:repeat(10, calc(15px * var(--s)))}
  .tk-sdeel{height:calc(24px * var(--s))}
  .tk-positietabel th,.tk-positietabel td{min-width:calc(34px * var(--s));height:calc(38px * var(--s))}
  .tk-stukkenvraag{font-size:calc(22px * var(--s))}
}

/* Korte kaartjes - een breuk, een kommagetal - blijven in twee kolommen, ook
   op een gsm. Gestapeld is koppelen raadwerk: je ziet dan niet meer welke
   kant links is en welke rechts. */
@media (max-width:520px){
  .tk-koppel.kort{grid-template-columns:1fr 1fr;gap:calc(8px * var(--s))}
  .tk-koppel.kort .tk-koppelkaart{
    padding:calc(10px * var(--s)) calc(26px * var(--s)) calc(10px * var(--s)) calc(10px * var(--s));
    font-size:calc(24px * var(--s));
  }
}
/* Het beeld IS de vraag bij "welk kommagetal hoort bij dit vlak?" - dan mag
   het ook groot. */
.tk-stukkenvraag .tk-tiendenstaaf{grid-template-columns:repeat(10, calc(30px * var(--s)))}
.tk-stukkenvraag .tk-sdeel{height:calc(44px * var(--s))}
.tk-stukkenvraag .tk-honderdveld{grid-template-columns:repeat(10, calc(20px * var(--s)))}
.tk-stukkenvraag .tk-hvak{width:calc(20px * var(--s));height:calc(20px * var(--s))}
@media (max-width:640px){
  .tk-stukkenvraag .tk-tiendenstaaf{grid-template-columns:repeat(10, calc(26px * var(--s)))}
  .tk-stukkenvraag .tk-sdeel{height:calc(38px * var(--s))}
  .tk-stukkenvraag .tk-honderdveld{grid-template-columns:repeat(10, calc(17px * var(--s)))}
  .tk-stukkenvraag .tk-hvak{width:calc(17px * var(--s));height:calc(17px * var(--s))}
}
.tk-stukken .tk-klok-doos{margin:0}
.tk-stukken .tk-klok-schaal{width:calc(180px * var(--s))}
/* Is de klok de VRAAG, dan mag ze groot: het kind moet er de wijzers op
   kunnen onderscheiden voor het een antwoord aanduidt. */
.tk-stukkenvraag .tk-klok-schaal{width:min(calc(250px * var(--s)), 86vw)}
.met-stukken .tk-klok-schaal{width:calc(120px * var(--s))}
/* Een klok op een kaartje moet nog te LEZEN zijn: bij 120 pixels zijn de
   cijfers op de wijzerplaat kleiner dan de wijzers, en dat is nu net waar een
   kind naar kijkt. Vier klokken van 140 passen naast elkaar. */
.tk-keuze.met-stukken .tk-klok-schaal,
.tk-volgkaart.met-stukken .tk-klok-schaal,
.tk-koppelkaart.met-stukken .tk-klok-schaal,
.tk-kaartje.met-stukken .tk-klok-schaal,
.tk-memvoor .tk-klok-schaal{width:calc(140px * var(--s))}
@media (max-width:480px){
  .tk-keuze.met-stukken .tk-klok-schaal,
  .tk-volgkaart.met-stukken .tk-klok-schaal,
  .tk-koppelkaart.met-stukken .tk-klok-schaal,
  .tk-kaartje.met-stukken .tk-klok-schaal,
  .tk-memvoor .tk-klok-schaal{width:calc(124px * var(--s))}
}
.tk-stukken .tk-breuk-doos{margin:0}
.tk-stukken .tk-breukcirkel{width:calc(120px * var(--s));height:calc(120px * var(--s))}
.met-stukken .tk-breukcirkel{width:calc(84px * var(--s));height:calc(84px * var(--s))}
.tk-breuk-doos.stil .tk-breukdeel{cursor:default}
.tk-tekening{display:flex;justify-content:center}
.tk-tekenbeeld{width:calc(140px * var(--s));height:auto;max-width:100%}
.tk-stukkenvraag .tk-tekenbeeld{width:calc(190px * var(--s))}
.met-stukken .tk-tekenbeeld{width:calc(96px * var(--s))}
@media (max-width:640px){.tk-stukkenvraag .tk-tekenbeeld{width:calc(150px * var(--s))}}
/* Brede tekeningen (grafieken): zo breed als de kaart, maar niet reusachtig. */
.tk-tekenbeeld.breed,.tk-stukkenvraag .tk-tekenbeeld.breed,.met-stukken .tk-tekenbeeld.breed{width:min(100%, calc(620px * var(--s)))}
.tk-tekening:has(.tk-tekenbeeld.breed){width:100%}

/* De stilstaande getallenlijn. Dezelfde dikke donkere lijn als bij het
   getallenas-type, met paarse streepjes en een oranje stip - de stip is wat
   de vraag aanwijst, dus die springt eruit. */
.tk-lijnbeeld{display:block;width:100%;max-width:calc(420px * var(--s));margin:calc(10px * var(--s)) auto}
.tk-lijnvlak{width:100%;height:auto;display:block}
.tk-lijnas{stroke:var(--inkt, #1f2430);stroke-width:4;stroke-linecap:round}
.tk-lijnstreep{stroke:var(--paars);stroke-width:2}
.tk-lijnstreep.groot{stroke:var(--inkt, #1f2430);stroke-width:3}
.tk-lijnlabel{font-size:15px;text-anchor:middle;fill:var(--inkt, #1f2430);font-weight:700}
.tk-lijnstip{fill:var(--oranje);stroke:var(--oranje-lijn, #dd7510);stroke-width:2}
.met-stukken .tk-lijnbeeld{max-width:calc(260px * var(--s));margin:0}

/* Een positietabel waarin je zelf schrijft: de hokjes zijn invulvakken, dus
   ze dragen geen eigen rand meer - anders staat er een rand om een rand. */
.tk-positietabel.invul td{padding:calc(3px * var(--s));min-width:calc(56px * var(--s))}
.tk-positietabel.invul .tk-vak{margin:0}
.tk-positietabel.invul .tk-vak-veld{min-width:calc(46px * var(--s));height:calc(46px * var(--s))}
.tk-positietabel.invul .tk-vak-veld .tk-tekst{font-size:calc(24px * var(--s))}
@media (max-width:640px){
  .tk-positietabel.invul td{min-width:calc(42px * var(--s));padding:calc(2px * var(--s))}
  .tk-positietabel.invul .tk-vak-veld{min-width:calc(36px * var(--s));height:calc(38px * var(--s))}
  .tk-positietabel.invul .tk-vak-veld .tk-tekst{font-size:calc(19px * var(--s))}
}

/* ---------- het foute cijfer aanwijzen ---------- */
.tk-foutsom{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:calc(12px * var(--s));margin:calc(20px * var(--s)) 0;
}
.tk-foutregel{font-size:calc(34px * var(--s));font-weight:700;letter-spacing:.02em}
.tk-foutcijfers{display:flex;gap:calc(8px * var(--s))}
/* Elk cijfer is een knop, dus blauw: dit is bediening. Wat je aantikt licht
   op; pas na het nakijken komt er een oordeel bij. */
.tk-foutcijfer{
  width:calc(56px * var(--s));height:calc(70px * var(--s));
  font-size:calc(34px * var(--s));font-weight:700;color:var(--inkt, #1f2430);
  background:#fff;border:calc(3px * var(--s)) solid var(--lijn);
  border-radius:calc(12px * var(--s));cursor:pointer;
}
.tk-foutcijfer:hover{border-color:var(--blauw)}
.tk-foutcijfer:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-foutcijfer.aan{border-color:var(--blauw);background:var(--blauw-licht)}
.tk-foutcijfer.goed{border-color:var(--groen);background:var(--groen-licht)}
.tk-foutcijfer.mis{border-color:var(--roest);background:var(--roest-licht)}
@media (max-width:640px){
  .tk-foutregel{font-size:calc(26px * var(--s))}
  .tk-foutcijfer{width:calc(42px * var(--s));height:calc(56px * var(--s));font-size:calc(26px * var(--s))}
}

/* ---------- meten met de liniaal ---------- */
.tk-meetdoos{margin:calc(18px * var(--s)) 0}
.tk-meetblad{position:relative;height:calc(150px * var(--s));width:100%}
/* Het lijnstuk: dik en donker, want dat is wat je meet. */
.tk-meetlijn{
  position:absolute;top:calc(26px * var(--s));height:calc(8px * var(--s));
  background:var(--inkt, #1f2430);border-radius:999px;
}
.tk-meetlijn::before,.tk-meetlijn::after{
  content:'';position:absolute;top:calc(-8px * var(--s));width:calc(4px * var(--s));
  height:calc(24px * var(--s));background:var(--inkt, #1f2430);border-radius:2px;
}
.tk-meetlijn::before{left:0}
.tk-meetlijn::after{right:0}
/* De liniaal is gereedschap in je hand, dus blauw. */
.tk-liniaal{
  position:absolute;top:calc(74px * var(--s));height:calc(58px * var(--s));
  background:var(--blauw-licht);border:calc(3px * var(--s)) solid var(--blauw);
  border-radius:calc(8px * var(--s));cursor:grab;touch-action:pinch-zoom;
}
.tk-liniaal:active{cursor:grabbing}
.tk-liniaal:focus-visible{outline:3px solid var(--blauw);outline-offset:3px}
.tk-latstreep{position:absolute;top:0;width:calc(2px * var(--s));height:calc(16px * var(--s));background:var(--blauw)}
.tk-latcijfer{
  position:absolute;top:calc(18px * var(--s));left:50%;transform:translateX(-50%);
  font-size:calc(14px * var(--s));font-weight:700;color:var(--blauw);
}
@media (max-width:640px){
  .tk-meetblad{height:calc(130px * var(--s))}
  .tk-liniaal{height:calc(50px * var(--s));top:calc(64px * var(--s))}
  .tk-latcijfer{font-size:calc(11px * var(--s))}
}

/* Elk cijfer in de uitgewerkte oefening is aantikbaar. Het blijft eruitzien
   als een cijfer - geen knop met een rand eromheen - want de oefening moet
   leesbaar blijven als een som; alleen wat je aanwijst licht op.

   Deze klasse heette eerder tk-foutknop, net als de "nee"-knop van juist of
   fout. Die deelde daardoor de kale opmaak en stond zonder kader naast een
   "ja" met kader. Vandaar een eigen naam. */
.tk-kaalknop{
  background:transparent;border:0;padding:0;cursor:pointer;
  border-radius:calc(8px * var(--s));font:inherit;color:inherit;
}
.tk-kaalknop:hover{background:var(--blauw-licht)}
.tk-kaalknop:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-kaalknop.aan{background:var(--blauw-licht);box-shadow:inset 0 0 0 3px var(--blauw)}
.tk-kaalknop.goed{background:var(--groen-licht);box-shadow:inset 0 0 0 3px var(--groen)}
.tk-kaalknop.mis{background:var(--roest-licht);box-shadow:inset 0 0 0 3px var(--roest)}
.tk-liniaal.vast{cursor:default}

/* Merkjes met een letter op een getallenlijn: "welk getal hoort bij A?" */
.tk-lijnmerk{stroke-width:3;fill:none}
.tk-lijnmerk circle,circle.tk-lijnmerk{stroke:none}
.tk-lijnletter{font-size:13px;font-weight:700;text-anchor:middle}
.tk-merk-a{stroke:#5170ff}
circle.tk-merk-a,text.tk-merk-a{fill:#5170ff}
.tk-merk-b{stroke:#dd7510}
circle.tk-merk-b,text.tk-merk-b{fill:#dd7510}
.tk-merk-c{stroke:#22a06b}
circle.tk-merk-c,text.tk-merk-c{fill:#22a06b}
.tk-merk-d{stroke:#b155e4}
circle.tk-merk-d,text.tk-merk-d{fill:#b155e4}
.tk-merk-e{stroke:#b4432a}
circle.tk-merk-e,text.tk-merk-e{fill:#b4432a}

/* Kleur vakjes in een rooster: 25% van honderd, of een rechthoek van 4 op 3. */
.tk-kleurrooster{display:grid;grid-template-columns:repeat(var(--kol),1fr);gap:calc(2px * var(--s));
  width:100%;max-width:calc(380px * var(--s));margin:calc(12px * var(--s)) auto;touch-action:pinch-zoom}
.tk-krvak{aspect-ratio:1;padding:0;border:calc(1.5px * var(--s)) solid #cbd5e1;background:#fff;
  border-radius:calc(3px * var(--s));cursor:pointer}
.tk-krvak:hover{background:#f3e8ff}
.tk-krvak.aan{background:color-mix(in srgb, var(--paars) 42%, #fff);border-color:var(--paars)}
.tk-krvak.goed{background:color-mix(in srgb, var(--groen) 38%, #fff);border-color:var(--groen)}
.tk-krvak.mis{background:color-mix(in srgb, var(--roest) 34%, #fff);border-color:var(--roest)}
.tk-kleurrooster.uit .tk-krvak{cursor:default}
.tk-krteller{text-align:center;font-weight:700;margin:calc(6px * var(--s)) 0 0}
@media (max-width:480px){ .tk-kleurrooster{max-width:calc(300px * var(--s))} }

/* De thermometer: de eerste staande schaal, met getallen onder nul. */
.tk-thermodoos{display:block;width:100%;max-width:calc(220px * var(--s));margin:calc(10px * var(--s)) auto;
  touch-action:pinch-zoom;cursor:pointer;border-radius:calc(14px * var(--s))}
.tk-thermodoos:focus-visible{outline:calc(3px * var(--s)) solid var(--blauw);outline-offset:calc(3px * var(--s))}
.tk-thermodoos.uit{cursor:default}
.tk-thermo{width:100%;height:auto;display:block}
.tk-thermobuis{fill:#fff;stroke:var(--inkt,#1f2430);stroke-width:3}
.tk-thermovocht{fill:var(--paars);stroke:none}
.tk-thermostreep{stroke:#94a3b8;stroke-width:2;stroke-linecap:round}
.tk-thermostreep.groot{stroke:#4b5563;stroke-width:3}
.tk-thermostreep.nul{stroke:var(--oranje-lijn);stroke-width:4}
.tk-thermolabel{font-size:19px;fill:#4b5563}
.tk-thermoknop{fill:#fff;stroke:var(--blauw);stroke-width:4}
.tk-thermodoos.goed .tk-thermoknop{stroke:var(--groen)}
.tk-thermodoos.mis .tk-thermoknop{stroke:var(--roest)}
.tk-thermodoel{stroke:var(--paars);stroke-width:3;stroke-dasharray:6 4}
.tk-thermodoellabel{font-size:15px;font-weight:700;fill:var(--paars-diep,var(--paars));text-anchor:end}
.tk-thermostand{text-align:center;font-weight:700;font-size:calc(22px * var(--s));margin:calc(4px * var(--s)) 0 0}

/* Een grafiek als beeld bij een vraag. */
.tk-grafiekdoos{display:block;width:100%;max-width:calc(420px * var(--s));margin:calc(10px * var(--s)) auto}
.tk-grafiek{width:100%;height:auto;display:block}
.tk-grafieklijn{stroke:#e5e7eb;stroke-width:1.5}
.tk-grafiekas-lijn{stroke:#4b5563;stroke-width:2.5;stroke-linecap:round}
.tk-grafiekas{font-size:12px;fill:#6b7280;text-anchor:end}
.tk-grafiekpad{fill:none;stroke:var(--paars);stroke-width:3.5;stroke-linejoin:round;stroke-linecap:round}
.tk-grafiekstip{fill:var(--paars)}
.tk-grafiekstaaf{fill:var(--paars);fill-opacity:.75}
.tk-grafiekwaarde{font-size:14px;font-weight:700;fill:var(--paars-diep,var(--paars));text-anchor:middle}
.tk-grafieklabel{font-size:13px;fill:#4b5563;text-anchor:middle}
.tk-grafiekasnaam{font-size:12px;fill:#6b7280;text-anchor:start}
.tk-grafiekwaarde.kwijt{font-size:20px;fill:var(--oranje-lijn)}

/* De gradenboog. */
.tk-hoekdoos{display:block;width:100%;max-width:calc(400px * var(--s));margin:calc(10px * var(--s)) auto;
  touch-action:pinch-zoom;border-radius:calc(14px * var(--s))}
.tk-hoekdoos:focus-visible{outline:calc(3px * var(--s)) solid var(--blauw);outline-offset:calc(3px * var(--s))}
.tk-hoekvlak{width:100%;height:auto;display:block}
.tk-hoekboog{fill:#f6f7fb;stroke:#cbd5e1;stroke-width:2}
.tk-hoekstreep{stroke:#93a5ff;stroke-width:2;stroke-linecap:round}
.tk-hoekstreep.groot{stroke:#4b5563;stroke-width:2.5}
.tk-hoeklabel{font-size:13px;fill:#4b5563;text-anchor:middle}
.tk-hoekbeen{stroke-width:5;stroke-linecap:round}
.tk-hoekbeen.vast{stroke:#4b5563}
.tk-hoekbeen.los{stroke:var(--paars)}
.tk-hoekvulling{fill:var(--paars);fill-opacity:.18}
.tk-hoekbol{fill:#fff;stroke:var(--paars);stroke-width:4;cursor:grab}
.tk-hoekdoos.uit .tk-hoekbol{cursor:default}
.tk-hoekmidden{fill:#4b5563}
.tk-hoekdoel{stroke:var(--groen);stroke-width:4;stroke-dasharray:8 5;stroke-linecap:round}
.tk-hoekdoos.goed .tk-hoekbol{stroke:var(--groen)}
.tk-hoekdoos.mis .tk-hoekbol{stroke:var(--roest)}
.tk-hoekstand{text-align:center;font-weight:700;font-size:calc(22px * var(--s));margin:calc(4px * var(--s)) 0 0}

/* Een tekening in een invulregel staat op haar eigen regel en gecentreerd:
   een liftschacht of een thermometer hoort niet midden in een zin. */
.tk-regelstuk{display:block;width:100%;text-align:center;margin:calc(8px * var(--s)) 0}
.tk-regelstuk > *{margin-left:auto;margin-right:auto}

/* Een rij thermometers naast elkaar, met hun letter erboven. */
.tk-thermorij{display:grid;grid-template-columns:repeat(var(--n,4),1fr);justify-items:center;
  align-items:end;gap:calc(10px * var(--s));margin:calc(10px * var(--s)) 0}
.tk-thermodoos.inrij{max-width:calc(120px * var(--s));margin:0;width:100%}
.tk-thermoletter{margin:0 0 calc(2px * var(--s));text-align:center;font-weight:700;
  font-size:calc(22px * var(--s));color:var(--paars-diep)}
.tk-thermokop{margin:0 0 calc(2px * var(--s));text-align:center;font-weight:700;
  font-size:calc(16px * var(--s))}
@media (max-width:480px){
  /* Twee per regel: vier naast elkaar zijn op een telefoon niet meer af te
     lezen, en daar gaat de oefening juist over. */
  .tk-thermorij{grid-template-columns:repeat(2,1fr)}
  .tk-thermodoos.inrij{max-width:calc(132px * var(--s))}
}

/* De liftschacht. */
.tk-liftdoos{display:block;width:100%;max-width:calc(210px * var(--s));margin:calc(10px * var(--s)) auto}
.tk-liftvlak{width:100%;height:auto;display:block}
.tk-liftschacht{stroke:#4b5563;stroke-width:3}
.tk-liftvloer{stroke:#cbd5e1;stroke-width:2}
.tk-liftvloer.grond{stroke:var(--oranje-lijn);stroke-width:4}
.tk-liftlabel{font-size:17px;fill:#4b5563;text-anchor:end}
.tk-liftlabel.grond{fill:var(--oranje-lijn);font-weight:700}
.tk-liftkooi{fill:var(--paars);fill-opacity:.85;stroke:var(--paars-diep);stroke-width:2}

/* Een thermometer op een kaartje (volgorde, sorteren, een keuzeknop) mag niet
   de hele regel opeten: vier kaartjes onder elkaar op volle hoogte maken van
   een korte oefening een lange pagina. */
/* Op een breed scherm is er plaats zat: vier kaartjes naast elkaar op 900
   pixels krijgen er elk ruim 190. Een thermometer van 96 pixels daarin is
   nodeloos klein - aflezen is juist wat de oefening vraagt. */
.tk-volgkaart .tk-thermodoos,
.tk-kaartje .tk-thermodoos,
.tk-keuze .tk-thermodoos,
.tk-koppelkaart .tk-thermodoos,
.tk-bak .tk-thermodoos{max-width:calc(150px * var(--s));margin:0 auto}
/* Vier kaartjes met een thermometer erop horen naast elkaar te passen, ook
   als de rij daarvoor moet afbreken. */
.tk-volgorde{flex-wrap:wrap}
@media (max-width:480px){
  .tk-volgkaart .tk-thermodoos,
  .tk-kaartje .tk-thermodoos,
  .tk-keuze .tk-thermodoos,
  .tk-koppelkaart .tk-thermodoos,
  .tk-bak .tk-thermodoos{max-width:calc(104px * var(--s))}
}

/* ---------- vergroten ---------- */
/* Alles in dit huis is uitgedrukt in `--s`, dus een grotere `--s` maakt de
   hele oefening groter: de letters, de vakjes, de tekeningen en de ruimte
   ertussen, allemaal in dezelfde verhouding. Het knopje rechtsboven zet die
   maat; de motor onthoudt hem op dit toestel. */
.tk-rondje.tk-zoom{position:relative}
.tk-rondje.tk-zoom svg{fill:var(--groen-diep)}
.tk-zoommaat{
  position:absolute;right:calc(-4px * var(--s));bottom:calc(-4px * var(--s));
  background:var(--groen-diep);color:#fff;border-radius:calc(8px * var(--s));
  font-size:calc(11px * var(--s));font-weight:700;line-height:1;
  padding:calc(2px * var(--s)) calc(4px * var(--s));
}

/* ================= spellen: het woord leggen met de letterdoos =================
   De blokjes hebben precies de kleuren van de letterdoos uit de klastools
   (tkletter.css), zodat een kind dat daar gewerkt heeft hier hetzelfde
   materiaal terugziet. Bleek gehouden: het is materiaal, geen verkeerslicht.
   Op een breed scherm staat de prent rechts naast de doos, op een gsm
   gewoon erboven. */
.tk-spel{
  --spel-blok:#fffdf6;      --spel-blok-rand:#96a1b6;
  --spel-klinker:#cdeff3;   --spel-klinker-rand:#45aebb;
  --spel-mede-2:#cfd7e3;    --spel-mede-2-rand:#5d6b82;
  --spel-lang:#dcb2ea;      --spel-lang-rand:#a77bb6;   /* aa ee oo uu: paars */
  --spel-enkel:#e8c5f1;     --spel-enkel-rand:#b37cc2;  /* a e o u ernaast: lichter paars */
  --spel-combi:#fdeada;     --spel-combi-rand:#e5ad74;
  --spel-drie:#d7ddf7;      --spel-drie-rand:#6f86de;
  --spel-w:#d9f0e1;         --spel-w-rand:#5fbd89;
  margin-top:14px;display:flex;flex-direction:column;gap:16px;
}
/* De lijn waarop het woord komt te staan: één schrijflijn, zoals op de
   letterdoos zelf. Geen vakjes - het aantal vakjes zou verklappen uit
   hoeveel klanken het woord bestaat. */
.tk-spellijn{
  min-height:68px;display:flex;flex-wrap:wrap;align-items:center;
  padding:8px 8px 6px;border-bottom:3px solid #a9c2d8;border-radius:10px 10px 0 0;
  background:#fbfdff;
}
.tk-spellijn.tekort{border-bottom-style:dashed}
.tk-spelleeg{color:#78839a;font-style:italic;padding-left:4px}
.tk-spelblok{
  font-family:inherit;font-size:26px;font-weight:600;line-height:1;
  min-width:46px;height:54px;padding:0 11px;margin:3px;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--spel-blok);border:2px solid var(--spel-blok-rand);border-radius:6px;
  box-shadow:0 1px 2px rgba(31,36,48,.14);
  color:var(--inkt);white-space:nowrap;cursor:pointer;
}
.tk-spelblok:hover{border-color:var(--blauw)}
.tk-spelblok:disabled{cursor:default;opacity:.75}
.tk-spelblok.k-klinker{background:var(--spel-klinker);border-color:var(--spel-klinker-rand)}
.tk-spelblok.k-mede   {background:var(--spel-blok);   border-color:var(--spel-blok-rand)}
.tk-spelblok.k-mede-2 {background:var(--spel-mede-2); border-color:var(--spel-mede-2-rand)}
.tk-spelblok.k-lang   {background:var(--spel-lang);   border-color:var(--spel-lang-rand)}
.tk-spelblok.k-combi  {background:var(--spel-combi);  border-color:var(--spel-combi-rand)}
.tk-spelblok.k-drie   {background:var(--spel-drie);   border-color:var(--spel-drie-rand)}
.tk-spelblok.k-w      {background:var(--spel-w);      border-color:var(--spel-w-rand)}
/* De lange klinker met één letter (a e o u naast aa ee oo uu): half zo smal,
   lichtroze. En de doffe e: een wit blokje, een vette zwarte e met een cyaan
   rand - zoals Taalkrak hem tekent. */
.tk-spelblok.k-smal{min-width:24px;padding:0 4px;background:var(--spel-enkel);border-color:var(--spel-enkel-rand)}
.tk-spelblok.k-dof{background:#fff;border-color:var(--spel-blok-rand);color:#000;font-weight:800;
  text-shadow:1.3px 0 0 #7fdfe3,-1.3px 0 0 #7fdfe3,0 1.3px 0 #7fdfe3,0 -1.3px 0 #7fdfe3,
    .9px .9px 0 #7fdfe3,-.9px .9px 0 #7fdfe3,.9px -.9px 0 #7fdfe3,-.9px -.9px 0 #7fdfe3,
    1.2px .5px 0 #7fdfe3,-1.2px .5px 0 #7fdfe3,1.2px -.5px 0 #7fdfe3,-1.2px -.5px 0 #7fdfe3,
    .5px 1.2px 0 #7fdfe3,-.5px 1.2px 0 #7fdfe3,.5px -1.2px 0 #7fdfe3,-.5px -1.2px 0 #7fdfe3}
/* Op de lijn klikken de blokjes tegen elkaar aan, zodat een woord één strook
   wordt in plaats van losse tegeltjes. */
.tk-spellijn .tk-spelblok{margin:3px 0}
.tk-spellijn .tk-spelblok + .tk-spelblok{margin-left:-2px}
/* Goed of mis laat de kleur van de klanksoort staan: die kleur zegt wát voor
   blokje het is, en dat blijft waar ook als het op de verkeerde plaats ligt. */
.tk-spelblok.goed{border-color:var(--groen);box-shadow:inset 0 0 0 3px var(--groen)}
.tk-spelblok.mis {border-color:var(--roest);box-shadow:inset 0 0 0 3px var(--roest)}
/* Er mist een letter: op die plek schuift de rij open en staat een rood
   gestippeld vakje. Zo zie je niet alleen dát er iets mist maar ook waar -
   bij *muis* gelegd als m-u-s schuift de s op en valt het gat tussen de u en
   de s. Het gat staat meteen aan: het volgende blokje valt er vanzelf in. */
.tk-spelgat{
  min-width:46px;height:54px;margin:3px 0;
  border:2px dashed var(--roest);border-radius:6px;background:transparent;
  display:inline-flex;align-items:center;justify-content:center;
  color:var(--roest);font-size:26px;font-weight:600;line-height:1;
  cursor:pointer;user-select:none;
}
.tk-spelgat.aan{background:var(--roest-licht)}
/* Zodra er iets in gevallen is, krimpt het gat tot een streepje: het
   wijst nog waar het volgende blokje komt, maar het roept niet meer dat
   er iets mist. */
.tk-spelgat.smal{min-width:0;width:10px;border-width:0 0 0 3px;border-radius:0;
                 box-shadow:none;background:transparent}
.tk-spellijn .tk-spelgat + .tk-spelblok,
.tk-spellijn .tk-spelblok + .tk-spelgat{margin-left:-2px}
@media (max-width:520px){
  .tk-spelgat{min-width:40px;height:46px;font-size:22px;margin:2px 0}
}
/* De doos zelf: per soort bij elkaar, met lucht tussen de groepen. */
.tk-speldoos{
  display:flex;flex-wrap:wrap;gap:4px 16px;
  padding:10px 8px;border:1px solid var(--lijn);border-radius:12px;
  background:var(--papier,#fff);
}
.tk-spelgroep{display:flex;flex-wrap:wrap}
@media (max-width:520px){
  .tk-spelblok{font-size:22px;min-width:40px;height:46px;padding:0 8px;margin:2px}
  .tk-spelblok.k-smal{min-width:20px;padding:0 3px}
  .tk-spellijn{min-height:58px}
  .tk-speldoos{gap:3px 10px}
}
/* Breed scherm: de prent naast de doos in plaats van erboven, zodat het kind
   het woord en zijn prent samen in beeld heeft terwijl het legt. */
@media (min-width:780px){
  .tk-kaart.tk-spelkaart{
    display:grid;grid-template-columns:minmax(0,1fr) minmax(170px,240px);
    column-gap:24px;align-items:start;grid-auto-flow:dense;
  }
  .tk-spelkaart > .tk-vraag,
  .tk-spelkaart > .tk-hint,
  .tk-spelkaart > .tk-tip,
  .tk-spelkaart > .tk-uitleg,
  .tk-spelkaart > .tk-feedback{grid-column:1 / -1}
  .tk-spelkaart > .tk-vraagbeeld{grid-column:2;grid-row:3}
  .tk-spelkaart > .tk-spel{grid-column:1;grid-row:3;margin-top:0}
}

/* De woordenbak bovenaan een invuloefening: wat het kind al geschreven heeft,
   gaat door en vervaagt. Het blijft leesbaar - het is geen fout, het is
   gebruikt - en het komt vanzelf terug zodra het woord uit het vakje gaat. */
/* De bak zelf staat in een gestippeld kadertje, zoals op de site: het is een
   voorraad om uit te putten, geen zin om te lezen. */
.tk-woordenbak{
  border:2px dashed var(--lijn);border-radius:calc(12px * var(--s));
  padding:calc(12px * var(--s)) calc(16px * var(--s));
  line-height:1.5;
}
.tk-bakwoord{transition:opacity .18s ease, text-decoration-color .18s ease}
.tk-bakwoord.op{text-decoration:line-through;text-decoration-thickness:2px;opacity:.38}
@media (prefers-reduced-motion: reduce){ .tk-bakwoord{transition:none} }

/* Twee of drie kolommen met een kop erboven, voor "schrijf het woord in de
   juiste kolom". De koppen staan op een lijn, zoals op een blad papier; op
   een smal scherm blijven de kolommen naast elkaar staan - ze uit elkaar
   trekken zou de hele vergelijking wegnemen - maar de letters krimpen mee. */
.tk-kolommen{display:grid;gap:10px 18px;margin:4px 0 16px;align-items:start}
.tk-kolomkop{
  font-weight:600;font-size:calc(19px * var(--s));line-height:1.25;
  padding-bottom:7px;margin-bottom:2px;border-bottom:2px solid var(--lijn);
}
/* `.tk-vak` is een inline-flex met `align-items:stretch`; die flex moet
   blijven staan, anders klapt het vakje tot nul hoog dicht. Het wordt dus
   een blok-flex, geen blok. */
.tk-kolomhok .tk-vak{display:flex;width:100%;margin:0}
.tk-kolomhok .tk-vak-veld{min-width:0;width:100%;flex:1 1 auto}
@media (max-width:560px){
  .tk-kolommen{gap:8px 10px}
  .tk-kolomkop{font-size:calc(15px * var(--s))}
}

/* ---- de hulplijn ----
   Steun bij de opgave, geen deel van de vraag. Ze staat onder het werk, in
   een rustiger vlak, en het knopje rechtsboven zet ze weg. */
.tk-hulpstukken{
  margin-top:calc(18px * var(--s));
  padding:calc(10px * var(--s)) calc(6px * var(--s)) calc(2px * var(--s));
  border-top:calc(2px * var(--s)) dashed var(--lijn);
  opacity:.9;
}
.tk-hulpstukken .tk-lijnbeeld{width:100%;max-width:calc(560px * var(--s))}
.hulp-uit .tk-hulpstukken{display:none}
.tk-rondje.tk-hulpknop svg{fill:var(--groen, #22a06b)}
.tk-rondje.tk-hulpknop.aan{background:var(--groen, #22a06b)}
.tk-rondje.tk-hulpknop.aan svg{fill:#fff}

/* ---- geld dat alleen te zien is ----
   Een rij munten in een vraag, op een kaartje of op een antwoordknop. Geen
   lade, geen beurs: alleen kijken en tellen. Ze mogen dichter op elkaar dan in
   de lade, en op een kaartje krimpen ze mee. */
.tk-geldrij.tk-geldstil{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:calc(6px * var(--s));margin:0;
}
.tk-geldrij.tk-geldstil .tk-geldstuk{padding:0;background:none;border:0;box-shadow:none}
.tk-stukkenvraag .tk-geldstil .tk-geldbeeld{width:calc(var(--geldbreed, 70px) * var(--s))}
.tk-keuze .tk-geldstil .tk-geldbeeld,
.tk-kaartje .tk-geldstil .tk-geldbeeld,
.tk-koppelkaart .tk-geldstil .tk-geldbeeld,
.tk-volgkaart .tk-geldstil .tk-geldbeeld,
.tk-memvoor .tk-geldstil .tk-geldbeeld{max-width:calc(58px * var(--s))}
@media (max-width:480px){
  .tk-keuze .tk-geldstil .tk-geldbeeld,
  .tk-kaartje .tk-geldstil .tk-geldbeeld{max-width:calc(46px * var(--s))}
}

/* ---- het mandje van "sleep er precies zes" ----
   Wat erin ligt is gekozen. Leeg draagt het een tekst, zodat het vak niet als
   een gat in de bladzijde oogt. */
.tk-kiesmandje{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:calc(10px * var(--s));
  min-height:calc(86px * var(--s));
  padding:calc(12px * var(--s));
  border:calc(2px * var(--s)) dashed var(--lijn);
  border-radius:calc(14px * var(--s));
  background:var(--zacht, #f6f7fb);
}
.tk-kiesmandje.leeg::before{
  content:attr(data-leeg);
  color:var(--grijs, #6b7280);
  font-weight:700;
  font-size:calc(15px * var(--s));
}
.tk-kiesdingen.tk-voorraad{
  min-height:calc(86px * var(--s));
  padding:calc(10px * var(--s));
  border-radius:calc(14px * var(--s));
}
.tk-kiesding.sleept{
  position:relative;z-index:6;cursor:grabbing;
  box-shadow:0 calc(6px * var(--s)) calc(14px * var(--s)) rgba(0,0,0,.22);
}

/* Een staafje of blokje onderweg naar de tafel. */
.tk-mstaaf.sleept, .tk-mblok.sleept{
  position:relative;z-index:6;cursor:grabbing;
  box-shadow:0 calc(6px * var(--s)) calc(14px * var(--s)) rgba(0,0,0,.22);
}
.tk-materiaalvlak{min-height:calc(56px * var(--s))}

/* ---- een volle tienstructuur in de bak ----
   Tien blokjes in een vakje, vijf boven vijf, dat je in een beweging neemt.
   Het is geen stuk dat tien waard is - het zijn tien blokjes. */
.tk-mtienblok{
  display:grid;grid-template-columns:repeat(5, calc(26px * var(--s)));
  gap:calc(4px * var(--s));padding:calc(7px * var(--s));cursor:pointer;
  border:calc(2px * var(--s)) dashed var(--mab-blok-lijn);
  border-radius:calc(10px * var(--s));background:rgba(246,206,76,.12);
}
.tk-mtiencel{
  width:calc(26px * var(--s));height:calc(26px * var(--s));
  border:calc(2px * var(--s)) solid var(--mab-blok-lijn);
  border-radius:calc(6px * var(--s));background:var(--mab-blok);box-sizing:border-box;
}
.tk-mtienblok:hover{filter:brightness(1.05)}
.tk-mtienblok:focus-visible{outline:3px solid var(--blauw);outline-offset:2px}
.tk-mtienblok.sleept{
  position:relative;z-index:6;cursor:grabbing;
  box-shadow:0 calc(6px * var(--s)) calc(14px * var(--s)) rgba(0,0,0,.22);
}
@media (max-width:480px){
  .tk-mtienblok{grid-template-columns:repeat(5, calc(22px * var(--s)))}
  .tk-mtiencel{width:calc(22px * var(--s));height:calc(22px * var(--s))}
}

/* ---- blokspiegelen ----
   Ruitjespapier met een spiegellijn in het midden. De gegeven helft staat er
   al; de andere helft kleurt het kind. Het oordeel is een RAND en geen
   vulling: wat fout staat moet zijn eigen kleur blijven tonen, anders weet
   een kind niet wat het fout deed. */
.tk-spkiezer{display:flex;flex-wrap:wrap;gap:calc(8px * var(--s));
  justify-content:center;margin:calc(10px * var(--s)) 0 0}
.tk-spkleurknop{
  font:inherit;font-weight:700;font-size:calc(15px * var(--s));
  display:inline-flex;align-items:center;gap:calc(8px * var(--s));
  padding:calc(7px * var(--s)) calc(14px * var(--s));
  border:calc(2px * var(--s)) solid var(--lijn);border-radius:999px;
  background:#fff;color:var(--inkt,#1f2430);cursor:pointer;
}
.tk-spkleurknop::before{
  content:'';width:calc(16px * var(--s));height:calc(16px * var(--s));
  border-radius:50%;background:var(--verf);
  box-shadow:inset 0 0 0 calc(1.5px * var(--s)) rgba(0,0,0,.25);
}
.tk-spkleurknop.aan{border-color:var(--blauw);box-shadow:0 0 0 calc(3px * var(--s)) var(--blauw-licht)}
.tk-spkleurknop:focus-visible{outline:calc(3px * var(--s)) solid var(--blauw);outline-offset:calc(2px * var(--s))}

.tk-sprooster{
  display:grid;grid-template-columns:repeat(var(--kol), 1fr);gap:0;
  width:100%;max-width:calc(440px * var(--s));margin:calc(14px * var(--s)) auto;
  touch-action:pinch-zoom;border:calc(2px * var(--s)) solid #94a3b8;
  border-radius:calc(4px * var(--s));overflow:hidden;background:#fff;
}
.tk-spvak{
  aspect-ratio:1;padding:0;margin:0;cursor:pointer;background:#fff;
  border:calc(1px * var(--s)) solid #cbd5e1;border-radius:0;
}
.tk-spvak.gegeven{cursor:default}
/* Een vakje dat fout staat, blijft fout staan - ook met de muis erop. */
.tk-spvak:not(.gegeven):not(.mis):hover{box-shadow:inset 0 0 0 calc(2px * var(--s)) var(--blauw)}
/* De spiegellijn zelf: dik, donker en over de volle hoogte. */
.tk-spvak.as-links{border-right:calc(3px * var(--s)) solid var(--inkt,#1f2430)}
.tk-spvak.as-rechts{border-left:0}
/* Fout: een rand, geen andere vulling - het kind moet zijn eigen werk
   blijven zien. Binnenin een wit haarlijntje, zodat de rand ook op een bruin
   of donker vakje niet wegvalt tegen de verf. */
.tk-spvak.mis{box-shadow:inset 0 0 0 calc(1px * var(--s)) var(--papier),
                          inset 0 0 0 calc(4px * var(--s)) var(--roest)}
.tk-sprooster.uit .tk-spvak{cursor:default}
@media (max-width:480px){ .tk-sprooster{max-width:calc(320px * var(--s))} }


/* ---- lijnenrooster ----
   Punten op een rooster, en lijnen van punt naar punt. Het rooster is
   kolommen x rijen vierkantjes met een punt in het midden van elk vierkantje,
   zodat elk punt een knop van volle grootte is - ook onder een vinger. De
   lijnen staan in een svg eronder, de knoppen liggen er doorzichtig overheen. */
.tk-lrblok{display:flex;flex-wrap:wrap;gap:calc(18px * var(--s));
  justify-content:center;align-items:flex-start;margin:calc(14px * var(--s)) 0}
.tk-lrkolom{display:flex;flex-direction:column;align-items:center;gap:calc(6px * var(--s))}
.tk-lrkop{margin:0;font-size:calc(14px * var(--s));font-weight:700;color:var(--grijs)}
.tk-lrrooster{
  position:relative;width:calc(300px * var(--s));max-width:100%;
  aspect-ratio:var(--kol) / var(--rij);
  background:#fff;border:calc(2px * var(--s)) solid #94a3b8;
  border-radius:calc(6px * var(--s));overflow:hidden;touch-action:pinch-zoom;
}
.tk-lrvel{position:absolute;inset:0;width:100%;height:100%;display:block}
.tk-lrstip{fill:#64748b}
.tk-lrvlak{stroke:none}
.tk-lrlijn{stroke:var(--inkt,#1f2430);stroke-width:.075;stroke-linecap:round;fill:none}
/* Fout is een KLEUR en geen verdwijning: de lijn die het kind trok blijft
   staan, zodat het ziet wat het zelf deed. Wat ontbrak komt er gestippeld
   naast. */
.tk-lrlijn.mis{stroke:var(--roest);stroke-width:.11}
/* Roest is fout, cyaan is 'zo hoorde het' - dezelfde taal als op de
   getallenas. Naast elkaar in dezelfde kleur zetten zou de twee juist
   onherkenbaar maken. */
.tk-lrlijn.gemist{stroke:var(--cyaan);stroke-width:.1;stroke-dasharray:.22 .16;opacity:1}
.tk-lrlijn.gegeven{stroke:var(--inkt,#1f2430)}
.tk-lrpunten{position:absolute;inset:0;display:grid;
  grid-template-columns:repeat(var(--kol), 1fr);
  grid-template-rows:repeat(var(--rij), 1fr)}
.tk-lrpunt{
  position:relative;padding:0;margin:0;border:0;background:transparent;
  cursor:pointer;-webkit-tap-highlight-color:transparent;
}
.tk-lrpunt::before{
  content:'';position:absolute;left:50%;top:50%;
  width:60%;height:60%;border-radius:50%;
  transform:translate(-50%,-50%);background:transparent;
}
.tk-lrpunt:hover::before{background:var(--blauw-licht)}
.tk-lrpunt.aan::before{background:var(--blauw-licht);
  box-shadow:inset 0 0 0 calc(2px * var(--s)) var(--blauw)}
.tk-lrpunt:focus-visible{outline:none}
.tk-lrpunt:focus-visible::before{box-shadow:0 0 0 calc(3px * var(--s)) var(--blauw)}
.tk-lrblok.alleen .tk-lrrooster{width:calc(360px * var(--s))}
.tk-lrblok.uit .tk-lrpunt{cursor:default}
@media (max-width:480px){ .tk-lrrooster{width:calc(260px * var(--s))} }


/* ---- beeldhelft ----
   De gegeven helft en de lege plek staan tegen elkaar: geen gat, geen rand
   ertussen, want anders staan er twee halve beelden naast elkaar in plaats van
   een heel beeld. De maat komt van het beeld zelf (--breed en --hoog worden
   gezet zodra het geladen is), zodat de tweede helft nooit een paar pixels
   hoger of lager staat. */
.tk-bhblok{display:flex;justify-content:center;align-items:stretch;gap:0;
  margin:calc(16px * var(--s)) auto;width:fit-content;max-width:100%}
.tk-bhhelft, .tk-bhplek{
  width:calc(150px * var(--s));max-width:38vw;
  aspect-ratio:var(--breed, 2150) / var(--hoog, 2924);
  padding:0;margin:0;border:0;background:transparent;
}
.tk-bhhelft{display:block}
.tk-bhhelft .tk-beeld, .tk-bhplek .tk-beeld{
  display:block;width:100%;height:100%;object-fit:fill}
/* De lege plek: een gestippeld vlak dat precies zo hoog is als de helft
   ernaast. Vol geworden verdwijnt de stippellijn, anders zou er een naad
   midden door het beeld lopen. */
.tk-bhplek{
  border:calc(2px * var(--s)) dashed var(--lijn-sterk);
  border-left:0;border-radius:0 calc(8px * var(--s)) calc(8px * var(--s)) 0;
  background:var(--hulp);cursor:pointer;
}
.tk-bhplek.vol{border:0;background:transparent;border-radius:0}
.tk-bhplek:not(.vol):hover{background:var(--blauw-licht)}
.tk-bhplek:focus-visible{outline:calc(3px * var(--s)) solid var(--blauw);outline-offset:calc(2px * var(--s))}
/* Het oordeel staat OM het beeld heen, niet erover: het kind moet zijn eigen
   keuze blijven zien. */
.tk-bhplek.mis{box-shadow:0 0 0 calc(3px * var(--s)) var(--roest)}
.tk-bhplek.goed{box-shadow:0 0 0 calc(3px * var(--s)) var(--groen)}

.tk-bhbank{display:flex;flex-wrap:wrap;gap:calc(10px * var(--s));
  justify-content:center;margin:calc(14px * var(--s)) 0}
.tk-bhkaart{
  width:calc(86px * var(--s));aspect-ratio:var(--breed, 2150) / var(--hoog, 2924);
  padding:calc(4px * var(--s));margin:0;cursor:pointer;
  border:calc(2px * var(--s)) solid var(--lijn);border-radius:calc(10px * var(--s));
  background:#fff;
}
.tk-bhkaart:hover{border-color:var(--blauw)}
.tk-bhkaart:focus-visible{outline:calc(3px * var(--s)) solid var(--blauw);outline-offset:calc(2px * var(--s))}
.tk-bhkaart.weg{visibility:hidden}
.tk-bhkaart.mis{border-color:var(--roest)}
.tk-bhkaart.goed{border-color:var(--cyaan);box-shadow:0 0 0 calc(3px * var(--s)) var(--cyaan-licht)}
.tk-bhblok.uit .tk-bhplek{cursor:default}


/* ---- uitlijnen: de regels van een invuloefening in gedeelde kolommen ----
   Voor een vervoeging. Zonder dit begint elk vakje achter de tekst die ervoor
   staat, en omdat `ik`, `jij` en `hij/zij/het` niet even lang zijn, staan de
   uitgangen niet onder elkaar - net wat je bij een vervoeging wil zien.

   De alinea zelf krijgt `display:contents`: zij blijft bestaan voor haar
   klassen en haar lettergrootte, maar haar doos verdwijnt zodat haar kinderen
   rechtstreeks hokjes van het rooster worden. */
.tk-uitlijn{
  display:grid;
  grid-template-columns:repeat(var(--kolommen, 3), max-content);
  gap:calc(8px * var(--s)) calc(10px * var(--s));
  align-items:center;justify-content:start;
  margin:0 0 calc(14px * var(--s));
}
.tk-uitlijnrij{display:contents}
.tk-uitlijncel{display:block;white-space:nowrap}
/* De eerste kolom staat rechts uitgelijnd, zodat `ik`, `jij` en `hij/zij/het`
   allemaal tegen hun vakje aan staan in plaats van los links te hangen. Dat is
   nodig omdat de omkeervraag (`veeg jij af?`) in die kolom een vakje heeft
   staan en de kolom dus zo breed is als dat vakje. Die ene regel steekt er nu
   links uit - en dat hoort: daar staat het werkwoord echt vooraan. */
.tk-uitlijnrij > .tk-uitlijncel:first-child{text-align:right}
/* In een vervoegtabel zijn alle vakjes van een kolom even breed: 'veeg' en
   'veegt' kregen elk hun eigen maat, en dan stond de tabel scheef. */
.tk-uitlijn > .tk-uitlijnrij > .tk-vak{display:flex;margin:0}
.tk-uitlijn > .tk-uitlijnrij > .tk-vak .tk-vak-veld{flex:1 1 auto}
@media (max-width:480px){
  .tk-uitlijn{gap:calc(6px * var(--s)) calc(6px * var(--s))}
}

/* Een regel met alleen een breuk om in te vullen staat onder zijn prent, in
   het midden - niet tegen de linkerrand. */
.tk-regel:has(> .tk-breukvak:only-child){text-align:center}

/* Scheiding tussen groepjes regels die bij elkaar horen. In een uitgelijnd
   rooster loopt ze over alle kolommen. */
.tk-scheiding{border:0;border-top:calc(2px * var(--s)) solid var(--lijn, #e3e5ec);margin:calc(10px * var(--s)) 0;grid-column:1 / -1}

/* Een breuk om in te slepen: twee plaatsen boven elkaar met de breukstreep
   ertussen, in het midden onder de taart. */
.tk-inzinnen.breuk{display:flex;justify-content:center}
.tk-sleepbreuk{display:inline-flex;flex-direction:column;align-items:center;gap:calc(6px * var(--s))}
.tk-sleepbreuk-streep{width:calc(84px * var(--s));height:calc(5px * var(--s));background:var(--inkt);border-radius:3px}
.tk-sleepbreuk-getal{font-size:calc(44px * var(--s));font-weight:700;line-height:1;min-height:calc(64px * var(--s));display:flex;align-items:center}
.tk-sleepbreuk .tk-ingat{min-width:calc(72px * var(--s));min-height:calc(64px * var(--s));margin:0;
  border:calc(2px * var(--s)) dashed var(--lijn-sterk);border-radius:calc(12px * var(--s))}
.tk-sleepbreuk .tk-ingat.vol{border-style:solid;border-color:transparent;padding:0}
.tk-sleepbreuk .tk-ingat.goed{border-color:var(--groen)}
.tk-sleepbreuk .tk-ingat.mis{border-color:var(--roest)}
.tk-sleepbreuk .tk-ingat .tk-kaartje{font-size:calc(30px * var(--s));min-width:calc(64px * var(--s));justify-content:center}
.tk-inzinnen.breuk + .tk-voorraad .tk-kaartje{font-size:calc(28px * var(--s));min-width:calc(64px * var(--s));justify-content:center}

/* ---------------- naspreken ----------------
   Het woord groot in beeld, de letter waar het om gaat in kleur, en daaronder
   de knoppen. De melding staat eronder en verandert van kleur, nooit van
   plaats - een kind dat na elke poging naar een andere hoek moet kijken,
   raakt de draad kwijt.

   Let op de [hidden]-regels: `display:flex` wint het van de ingebouwde
   [hidden], dus zonder die regels blijft een verborgen rij gewoon staan. */
.tk-naspreek{display:flex;flex-direction:column;align-items:center;
  gap:calc(14px * var(--s));margin:calc(10px * var(--s)) 0}
.tk-naspreek[hidden],.tk-naspreekzelf[hidden],.tk-naspreekknoppen[hidden]{display:none}

.tk-naspreekwoord{display:flex;align-items:baseline;flex-wrap:wrap;justify-content:center;
  font-size:calc(52px * var(--s));font-weight:700;line-height:1.1;letter-spacing:.01em}
.tk-naspreekdeel{padding:0 calc(1px * var(--s));border-radius:calc(6px * var(--s))}
.tk-naspreekdeel.let{color:var(--paars-diep);background:var(--paars-licht)}
.tk-naspreeklet{margin:0;color:var(--grijs);font-size:calc(17px * var(--s));
  text-align:center;max-width:36ch}

.tk-naspreekknoppen{display:flex;gap:calc(10px * var(--s));flex-wrap:wrap;justify-content:center}

/* De luisterknop draagt dezelfde oranje ring als die van de luisteroefeningen,
   zodat een kind hem meteen herkent. */
.tk-naspreekluister{display:inline-flex;align-items:center;gap:calc(10px * var(--s));
  font:inherit;font-size:calc(20px * var(--s));font-weight:700;
  color:var(--paars-diep);background:#fff;border:none;cursor:pointer;
  box-shadow:inset 0 0 0 calc(3px * var(--s)) var(--oranje-lijn);
  border-radius:999px;padding:calc(12px * var(--s)) calc(24px * var(--s));
  min-height:calc(52px * var(--s))}
.tk-naspreekluister:hover{background:var(--paars-licht)}
.tk-naspreekluister:active{transform:scale(.96)}
.tk-naspreekluister.speelt{box-shadow:inset 0 0 0 calc(3px * var(--s)) var(--paars-diep)}
.tk-naspreekluister svg{width:calc(24px * var(--s));height:calc(24px * var(--s));flex:0 0 auto}

.tk-knop.tk-naspreekneem.bezig{background:var(--roest);
  box-shadow:0 calc(3px * var(--s)) calc(10px * var(--s)) rgba(180,67,42,.3)}

.tk-naspreekmelding{margin:0;min-height:calc(26px * var(--s));text-align:center;
  font-size:calc(18px * var(--s));max-width:40ch}
.tk-naspreekmelding.goed{color:var(--groen-diep);font-weight:600}
.tk-naspreekmelding.mis{color:var(--roest);font-weight:600}
.tk-naspreekmelding.vraag{color:var(--grijs)}

.tk-naspreekzelf{display:flex;gap:calc(10px * var(--s));flex-wrap:wrap;justify-content:center}
/* twee keer de klasse: anders wint .tk-knop met zijn blauwe vulling */
.tk-knop.tk-naspreekklopt.tk-naspreekklopt{background:#fff;color:var(--groen-diep);
  box-shadow:inset 0 0 0 2px var(--groen)}
.tk-knop.tk-naspreekniet.tk-naspreekniet{background:#fff;color:var(--grijs);
  box-shadow:inset 0 0 0 2px var(--grijs)}

@media (max-width:520px){
  .tk-naspreekwoord{font-size:calc(38px * var(--s))}
}


/* Lexia - de letter van Taalkrak (14-10) - knoppen en vakken erven de letter */
button,input,select,textarea{font-family:inherit}

/* ---- het leesblad: meelezen (14-10) ---- */
.tk-meelezen *,.tk-meelezen *::before,.tk-meelezen *::after{box-sizing:border-box}
.tk-meelezen button{font-family:inherit;font-size:inherit;color:inherit;margin:0;line-height:1.15}
.tk-meelezen{--paars:#b155e4;--paars-diep:#9b3fd0;--paars-bleek:#f4e9fb;--oranje:#f08c2e;--inkt:#1f2430;--grijs:#6b7280;--lijn:#e5e7eb;
  box-sizing:border-box;container-type:inline-size;user-select:none;-webkit-user-select:none;color:var(--inkt);line-height:1.2;
  height:clamp(340px, calc(100vh - 190px * var(--s)), 820px);height:clamp(340px, calc(100svh - 190px * var(--s)), 820px);margin:0 auto;display:flex;flex-direction:column;background:#f6f7fb;border:1px solid var(--lijn);border-radius:18px;overflow:hidden}
.tk-ml-kop{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#fff;border-bottom:1px solid var(--lijn);flex-wrap:wrap}
.tk-ml-titel[hidden]{display:none}
.tk-ml-titel{display:flex;align-items:baseline;gap:10px;white-space:nowrap}
.tk-ml-titel-t{font-size:16px;color:var(--grijs)}
.tk-ml-kopletters{font-size:24px;color:var(--paars-diep);letter-spacing:.06em}
.tk-ml-tabs{display:flex;gap:6px;flex:1;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;min-width:0}
.tk-ml-tabs::-webkit-scrollbar{display:none}
.tk-ml-tab{border:2px solid var(--lijn);background:#fff;border-radius:999px;padding:6px 14px;font-size:16px !important;cursor:pointer;white-space:nowrap}
.tk-ml-tab.aan{background:var(--paars);border-color:var(--paars);color:#fff !important}
.tk-ml-bij{display:flex;align-items:center;gap:6px;border:2px solid var(--lijn);background:#fff;border-radius:12px;padding:6px 12px;font-size:16px !important;cursor:pointer;margin-left:auto}
.tk-ml-bij[hidden]{display:none}
.tk-ml-bij.aan{background:#fff7d6;border-color:#e9b500}
.tk-ml-bij-i{font-size:20px;line-height:1;filter:grayscale(1);opacity:.6}
.tk-ml-bij.aan .tk-ml-bij-i{filter:none;opacity:1}
.tk-ml-vak{flex:1;min-height:0;display:flex}
.tk-ml-inhoud{flex:1;min-width:0;overflow:hidden;padding:14px 20px;display:flex;flex-direction:column;align-items:flex-start;font-size:40px}
.tk-ml-inhoud > *{margin:auto;flex:none}
.tk-ml-onder{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;background:#fff;border-top:1px solid var(--lijn)}
.tk-ml-pijl{width:48px;height:48px;border-radius:50%;border:0;background:var(--oranje);color:#fff !important;font-size:34px !important;line-height:1 !important;cursor:pointer;padding:0 0 4px}
.tk-ml-pijl:disabled{opacity:.25;cursor:default}
.tk-ml-verder{font-size:18px !important}
.tk-ml-tegels{display:flex;flex-wrap:wrap;justify-content:center;align-content:center;gap:.3em .35em;max-width:100%}
.tk-ml-tegel{background:#fff;border:.06em solid var(--lijn);border-bottom-width:.1em;border-radius:.3em;padding:.18em .45em .22em;cursor:pointer;min-width:2.6em;text-align:center;transition:transform .08s,background .12s,border-color .12s}
.tk-ml-tegel:active{transform:scale(.96)}
.tk-ml-tegel.speelt{border-color:var(--paars);background:var(--paars-bleek)}
.tk-ml-letter{min-width:1.6em;padding:.15em .3em}
.tk-ml-letters.tk-ml-tegels{display:grid;gap:.3em .5em}
.tk-ml-g{border-radius:.12em;transition:background .1s}
.tk-ml-g.aan{background:#ffd76a;color:#5a3c00}
.tk-ml-w.heel{color:var(--paars-diep)}
.tk-ml-nee{animation:tk-ml-nee .3s}
@keyframes tk-ml-nee{25%{transform:translateX(-.08em)}75%{transform:translateX(.08em)}}
.tk-ml-paren{gap:.35em .9em}
.tk-ml-paar{display:flex;align-items:center;gap:.2em}
.tk-ml-paarpijl{color:var(--grijs);font-size:.6em}
.tk-ml-zinnen{display:grid;gap:.28em;grid-template-columns:repeat(var(--kol,1),auto);column-gap:1.2em;max-width:100%}
.tk-ml-zin{display:flex;align-items:center;gap:.35em;padding:.06em .2em;border-radius:.25em}
.tk-ml-zin.speelt{background:var(--paars-bleek)}
.tk-ml-zin-t{white-space:nowrap}
.tk-ml-zw{cursor:pointer;border-radius:.15em;padding:0 .04em}
.tk-ml-zw.speelt{background:#ffd76a}
.tk-ml-speel{flex:none;width:1.25em;height:1.25em;border-radius:50%;border:0;background:var(--paars);color:#fff !important;font-size:.6em !important;cursor:pointer;padding:0 0 0 .12em}
.tk-ml-speel.leeg{background:var(--lijn);cursor:default}
@container (max-width:640px){
  .tk-ml-tabs{order:5;flex-basis:100%;justify-content:flex-start}
  .tk-ml-titel-t{display:none}
  .tk-ml-zin-t{white-space:normal}
  .tk-ml-zin{align-items:flex-start}
  .tk-ml-inhoud{padding:10px 12px}
  .tk-ml-verder{font-size:16px !important}
}

/* De en het in een vaste kleur (lidwoordkleur, 18-10). */
.tk-lw{font-weight:700}
.tk-lw-de{color:#3a55e0}
.tk-lw-het{color:#c25f00}
/* Na een fout: de naam onder de gekozen en de juiste prent (18-10). */
.tk-keuze .tk-naamlabel{display:block;margin-top:.35em;font-size:1.05em;line-height:1.2;text-align:center;color:var(--tk-tekst,#222)}
/* Na een fout blijven de gekozen en de juiste prent helder, met hun naam eronder. */
.tk-keuzes.met-beelden .tk-keuze.uit.mis,.tk-keuzes.met-beelden .tk-keuze.uit.doel{opacity:1}


/* Lettertekeningen (26-10) - een tekening heeft de maat van een letter:
   het doek is 720 hoog, de x-hoogte 284 en de basislijn ligt op 579, dus
   met de x-hoogte van Lexia (0,511 em) wordt het beeld 1,296 em hoog en
   zakt het 0,254 em onder de basislijn - net als de staart van een p. */
.tk-ml-tek{height:1.296em;width:auto;vertical-align:-0.254em;display:inline-block;margin:0 -0.015em;
  -webkit-user-drag:none;user-select:none;pointer-events:none}
.tk-ml-g.tk-ml-getekend{padding:0 .02em;white-space:nowrap}
.tk-ml-g.tk-ml-getekend.aan{background:#ffe9a3}
.tk-ml-stand-tekening .tk-ml-tegel,.tk-ml-stand-tussen .tk-ml-tegel{padding:.12em .3em .14em}


/* Lettertekeningen in de oefeningen (26-10) - dezelfde maat als in het
   leesblad: 1,296 em hoog en 0,254 em onder de basislijn, zodat een tekening
   even groot staat als een letter van Lexia ernaast. */
.tk-lt-woord{white-space:nowrap}
.tk-lt-tek{height:1.296em;width:auto;vertical-align:-0.254em;display:inline-block;margin:0 -0.015em;
  -webkit-user-drag:none;user-select:none;pointer-events:none}
/* Wie leest met tekeningen, moet ze ook kunnen zien: de leesstof iets groter
   dan gewone letters op dezelfde plek. */
.tk-raster-letter .tk-raster-teken.tk-lt{max-width:none;font-size:min(2em, 8.5vw)}
.tk-reeks-letter.tk-lt,.tk-reeks-merk.tk-lt{font-size:calc(27px * var(--s))}
.tk-keuze .tk-beeld-tekst.tk-lt,.tk-kaartje .tk-beeld-tekst.tk-lt,
.tk-koppelkaart .tk-beeld-tekst.tk-lt,.tk-volgkaart .tk-beeld-tekst.tk-lt{font-size:1.3em;line-height:1.5}
.tk-onderwerp.tk-lt{font-size:calc(48px * var(--s));line-height:1.5;margin-top:0}
.tk-plaatsletter.tk-lt{font-size:1.15em}
