@font-face{font-family:Onest;src:url('assets/onest/Onest-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Onest;src:url('assets/onest/Onest-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Onest;src:url('assets/onest/Onest-600.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Onest;src:url('assets/onest/Onest-700.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:Onest;src:url('assets/onest/Onest-800.woff2') format('woff2');font-weight:800;font-display:swap}
/* Klas 4 online — stijl 'Zacht': zachte kleurverloop-achtergrond, half doorzichtige witte kaarten, nachtblauwe tekst, periwinkle accent, Lexend (goed leesbaar). */
@font-face{font-family:Lexend;src:url('assets/Lexend-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Lexend;src:url('assets/Lexend-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Lexend;src:url('assets/Lexend-600.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Lexend;src:url('assets/Lexend-700.woff2') format('woff2');font-weight:700;font-display:swap}
:root{
  --green:#007a4a;--green-ink:#00643c;--deep:#05192b;--ink:#05192b;--muted:#5b6672;--canvas:#f4f5f6;--surface:#ffffff;--line:#e5e7eb;--pale:#e3f5e6;--cream:#f1f2f4;
  --ok:#1b7f45;--ok-bg:#e3f4e8;--bad:#b4352b;--bad-bg:#fbe8e5;--warn:#9a6200;--warn-bg:#fdf1d8;--gap:#fff3c4;--gap-ink:#5c4300;
  --on-deep:#ffffff;--on-deep-muted:#cee1d3;--shadow:none;--hi:#00d680;
  --font:Lexend,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--read:Charter,"Iowan Old Style","Palatino Linotype",Georgia,serif;
  --r:16px;color-scheme:light;
}
*{box-sizing:border-box}
body{background:var(--canvas);color:var(--ink);font:16px/1.55 var(--font);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:0 40px}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--green)}
:focus-visible{outline:3px solid var(--green);outline-offset:3px}
h1,h2,h3,h4,p{margin:0}
h1,h2,h3{text-wrap:balance;letter-spacing:-.02em;font-weight:600}
.wrap{max-width:1180px;margin:0 auto}
.eyebrow{display:block;color:var(--green);font-size:12px;font-weight:600;letter-spacing:.09em;text-transform:uppercase}
.muted{color:var(--muted)}
.small{font-size:14px}

/* gate & profile */
.gate{min-height:100vh;display:grid;place-items:center;padding-block:24px}
.gate-card{width:100%;max-width:460px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:32px;display:grid;gap:18px}
.gate-card h1{font-size:clamp(30px,6vw,40px);line-height:1.1}
.gate-card form{display:grid;gap:14px}
.field{display:grid;gap:6px}
.field label,.flabel{font-size:14px;font-weight:500}
.input,textarea.input,select.input{width:100%;background:var(--surface);border:1px solid #d9dee3;border-radius:8px;padding:11px 13px;min-height:46px}
textarea.input{resize:vertical;line-height:1.55;min-height:90px}
.input:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 22%,transparent)}
.err{color:var(--bad);font-size:14px}
.seg{display:flex;gap:8px;flex-wrap:wrap}
.seg label{flex:1;min-width:120px;display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:14px;padding:12px 14px;cursor:pointer}
.seg label:has(input:checked){border-color:var(--green);background:var(--pale)}
.seg small{display:block;color:var(--muted);font-size:12px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:42px;padding:9px 16px;border-radius:8px;border:1px solid var(--line);background:var(--surface);font-weight:600;font-size:15px;text-decoration:none;color:var(--ink)}
.btn:hover{background:var(--pale)}
.btn.primary{background:var(--green);border-color:var(--green);color:#fff}
.btn.primary:hover{background:var(--green-ink)}
.btn.ghost{background:none;border-color:transparent;color:var(--green)}
.btn.sm{min-height:36px;padding:6px 12px;font-size:14px}
.btn-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}

/* top bar */
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--canvas)}
.topbar{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:color-mix(in srgb,var(--canvas) 88%,transparent);backdrop-filter:blur(8px);padding-block:12px}
.topbar-in{max-width:1180px;margin:0 auto;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:8px 10px 8px 14px;display:flex;align-items:center;gap:12px}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;line-height:1.2;text-decoration:none;color:var(--ink);flex-shrink:0}
.brand small{display:block;color:var(--muted);font-weight:400;font-size:12px}
.mark{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;background:var(--deep);color:#fff;font-size:17px;letter-spacing:-.04em}
.nav{display:flex;gap:2px;overflow-x:auto;flex:1;min-width:0;scrollbar-width:none}
.nav a{white-space:nowrap;color:var(--muted);text-decoration:none;padding:8px 12px;border-radius:10px;font-size:14px;font-weight:500}
.nav a:hover{background:var(--cream);color:var(--ink)}.nav a.on{background:var(--hi);color:var(--deep)}
.me{display:flex;align-items:center;gap:8px;flex-shrink:0;border:0;background:var(--pale);border-radius:12px;padding:6px 10px;font-size:13px;font-weight:500}
.me b{background:var(--green);color:#fff;border-radius:6px;padding:1px 6px;font-size:11px}
@media (max-width:760px){.topbar-in{flex-wrap:wrap}.nav{order:3;flex-basis:100%}.brand small{display:none}.me{display:none}.lvl{margin-left:auto}}

/* home */
.hero{margin-top:18px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:16px;padding:clamp(22px,4vw,40px);display:grid;grid-template-columns:1.4fr 1fr;gap:24px;align-items:end}
.hero h1{font-size:clamp(32px,4.4vw,54px);line-height:1.05;margin:12px 0}
.hero h1 span{color:var(--green)}
.hero p{color:var(--muted);max-width:52ch}

.hero-stats{display:flex;gap:22px;flex-wrap:wrap;color:var(--muted);font-size:13px}
.hero-stats b{display:block;color:var(--ink);font-size:26px;font-variant-numeric:tabular-nums}
@media (max-width:760px){.hero{grid-template-columns:1fr}}
.sec-h{display:flex;justify-content:space-between;align-items:end;gap:16px;margin:30px 0 14px;flex-wrap:wrap}
.sec-h h2{font-size:24px;margin-top:4px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.card{display:flex;flex-direction:column;gap:8px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px;color:var(--ink);text-decoration:none;transition:border-color .15s,transform .15s}
a.card:hover,button.card:hover{border-color:var(--green);transform:translateY(-2px)}
.card h3{font-size:19px}
.card p{color:var(--muted);font-size:14px}
.card .top{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.skill-ico{width:42px;height:42px;border-radius:12px;background:var(--pale);color:var(--green);display:grid;place-items:center}
.skill-ico svg{width:22px;height:22px}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;border-radius:999px;padding:3px 10px;background:var(--pale);color:var(--green);white-space:nowrap}
.pill.done{background:var(--ok-bg);color:var(--ok)}
.pill.warn{background:var(--warn-bg);color:var(--warn)}
.bar{height:6px;border-radius:6px;background:var(--pale);overflow:hidden;margin-top:auto}
.bar i{display:block;height:100%;background:var(--green);border-radius:6px}
@media (prefers-reduced-motion:reduce){.card{transition:none}a.card:hover{transform:none}}

/* page */
.page-h{margin:22px 0 18px;display:grid;gap:8px}
.page-h h1{font-size:clamp(28px,3.6vw,40px);line-height:1.1}
.page-h p{color:var(--muted);max-width:70ch}
.crumbs{display:flex;gap:6px;flex-wrap:wrap;font-size:14px;color:var(--muted)}
.crumbs a{text-decoration:none}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:clamp(16px,3vw,26px)}
.stack{display:grid;gap:14px}
.tip{background:var(--cream);border:1px solid var(--line);border-radius:14px;padding:14px 16px;font-size:15px}
.tip b{color:var(--deep)}
.list-rows{display:grid;gap:8px}
.row-link{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 16px;text-decoration:none;color:var(--ink)}
.row-link:hover{border-color:var(--green)}
.row-link .num{width:34px;height:34px;flex-shrink:0;border-radius:50%;background:var(--pale);color:var(--green);display:grid;place-items:center;font-weight:600;font-size:14px;font-variant-numeric:tabular-nums}
.row-link .t{flex:1;min-width:0}
.row-link .t small{display:block;color:var(--muted);font-size:13px}

/* reading */
.reader{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:18px;align-items:start}
.text-panel{position:sticky;top:96px;max-height:calc(100vh - 110px);overflow:auto}
.text-panel h2{font-size:24px;margin-bottom:14px}
.text-panel p{font-family:var(--read);font-size:17.5px;line-height:1.65;margin-bottom:14px;max-width:68ch}
.pn{font-family:var(--font);display:inline-grid;place-items:center;min-width:26px;height:22px;padding:0 5px;border-radius:6px;background:var(--pale);color:var(--green);font-size:12px;font-weight:600;margin-right:6px;vertical-align:2px}
.gapm{font-family:var(--font);display:inline-block;background:var(--gap);color:var(--gap-ink);border-radius:6px;padding:0 7px;font-size:13px;font-weight:600}
@media (max-width:900px){.reader{grid-template-columns:1fr}.text-panel{position:static;max-height:none}}
.q{display:grid;gap:10px;padding:16px 0;border-top:1px solid var(--line)}
.q:first-child{border-top:0;padding-top:0}
.q-h{display:flex;gap:10px;align-items:flex-start}
.qn{flex-shrink:0;min-width:30px;height:30px;padding:0 6px;border-radius:8px;background:var(--deep);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.q-h p{font-weight:500}
.opts{display:grid;gap:6px}
.opt{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:9px 12px;cursor:pointer;background:var(--surface)}
.opt:hover{border-color:var(--green)}
.opt input{margin-top:4px;accent-color:var(--green)}
.opt .l{font-weight:600;color:var(--green);min-width:16px}
.opt:has(input:checked){border-color:var(--green);background:var(--pale)}
.opt.right{border-color:var(--ok);background:var(--ok-bg)}
.opt.wrong{border-color:var(--bad);background:var(--bad-bg)}
.wn{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--line)}
.wn:last-child{border-bottom:0}
.tog{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.tog label{padding:6px 12px;cursor:pointer;font-size:14px;font-weight:500}
.tog input{position:absolute;opacity:0;pointer-events:none}
.tog label:has(input:checked){background:var(--green);color:#fff}
.tog label:has(input:focus-visible){outline:3px solid var(--green);outline-offset:-3px}
.fb{font-size:14px;border-radius:10px;padding:8px 12px}
.fb.ok{background:var(--ok-bg);color:var(--ok)}
.fb.bad{background:var(--bad-bg);color:var(--bad)}
.fb.self{background:var(--warn-bg);color:var(--warn)}
.fb .model{display:block;color:var(--ink);margin-top:4px}
.mark-ok{color:var(--ok);font-weight:600}
.mark-bad{color:var(--bad);font-weight:600}
.scorebar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:space-between;background:var(--pale);border-radius:14px;padding:12px 16px;margin-top:14px}
.score{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}

/* vocab */
.tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:14px;scrollbar-width:thin}
.tabs a{white-space:nowrap;text-decoration:none;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:7px 14px;font-size:14px;font-weight:500}
.tabs a.on{background:var(--green);border-color:var(--green);color:#fff}
.tabs a .ck{color:var(--ok);margin-left:4px}
.tabs a.on .ck{color:#fff}
.vi{display:grid;grid-template-columns:30px minmax(0,1fr);gap:8px 12px;align-items:start;padding:12px 0;border-top:1px solid var(--line)}
.vi:first-child{border-top:0}
.vi .n{color:var(--muted);font-variant-numeric:tabular-nums;padding-top:10px;font-size:14px}
.vi .sent{padding-top:9px}
.vi .body{display:grid;gap:8px;min-width:0}
.hl{background:var(--gap);color:var(--gap-ink);border-radius:5px;padding:0 4px;font-weight:600}
.blank{display:inline-block;min-width:70px;border-bottom:2px solid var(--muted);margin:0 2px}
.vi .input.ok{border-color:var(--ok);background:var(--ok-bg)}
.vi .input.bad{border-color:var(--bad);background:var(--bad-bg)}
.vi .input.almost{border-color:var(--warn);background:var(--warn-bg)}
.vi .input.syn{border-color:#2d6cdf;background:#e6effc}
.syn-t{color:#2d6cdf;font-weight:600}
.ans{font-size:14px}
.choices{display:flex;flex-wrap:wrap;gap:6px}
.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 12px;font-size:14px}
button.chip:hover{border-color:var(--green);color:var(--green)}
.match{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
@media (max-width:640px){.match{grid-template-columns:1fr}}
.match-row{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:10px;align-items:center;padding:6px 0}
.match-row select{min-height:40px;padding:6px 8px}
.right-list{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.right-list li{display:flex;gap:10px;background:var(--pale);border-radius:10px;padding:7px 12px}
.right-list b{color:var(--green);min-width:16px}
.wc{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.wc.good{color:var(--ok)}
.wc.over{color:var(--warn)}

/* word list & flashcards */
.wl{width:100%;border-collapse:collapse;font-size:15px}
.wl th{text-align:left;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line)}
.wl td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.wl td:first-child{font-weight:600}
.wl td:last-child{color:var(--muted);font-family:var(--read)}
.tbl{overflow-x:auto}
.flash{display:grid;place-items:center;gap:14px;text-align:center}
.fcard{width:100%;max-width:520px;min-height:220px;border-radius:22px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;padding:28px;cursor:pointer}
.fcard .w{font-size:clamp(28px,5vw,40px);font-weight:600;letter-spacing:-.02em}
.fcard .s{color:var(--muted);font-family:var(--read);margin-top:10px}
.fcard.back{background:var(--pale)}

/* writing */
.write{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:18px;align-items:start}
@media (max-width:900px){.write{grid-template-columns:1fr}}
.write ol,.write ul{margin:0;padding-left:20px;display:grid;gap:4px}
.mailhead{display:grid;gap:4px;font-size:14px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--canvas)}
.mailhead span{color:var(--muted);display:inline-block;min-width:64px}
.editor{min-height:340px;font-size:16px}
.meter{display:grid;gap:6px}
.meter .track{position:relative;height:8px;background:var(--pale);border-radius:8px;overflow:hidden}
.meter .track i{position:absolute;inset:0 auto 0 0;background:var(--green);border-radius:8px}
.meter .track i.over{background:var(--warn)}
.checks{display:grid;gap:6px}
.checks label{display:flex;gap:10px;align-items:flex-start;cursor:pointer;font-size:15px}
.checks input{margin-top:5px;accent-color:var(--green);width:16px;height:16px;flex-shrink:0}
.formbox{border:2px solid var(--deep);border-radius:16px;overflow:hidden}
.formbox .fh{background:var(--deep);color:#fff;padding:10px 16px;font-weight:600;letter-spacing:.04em;font-size:14px}
.formbox .fs{padding:14px 16px;display:grid;gap:12px;border-top:1px solid var(--line)}
.formbox .fs:first-of-type{border-top:0}
.formbox h4{font-size:15px}
.optrow{display:flex;flex-wrap:wrap;gap:8px}
.optrow label{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:7px 12px;cursor:pointer;font-size:15px}
.optrow label:has(input:checked){border-color:var(--green);background:var(--pale)}
.optrow input{accent-color:var(--green)}

/* blocks (fictie / speaking) */
.task{display:grid;gap:14px}
.task + .task{margin-top:14px}
.task h3{font-size:20px}
.note{font-size:15px}
.note ul{margin:8px 0 0;padding-left:20px}
.dialog{display:grid;gap:10px}
.say{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px;align-items:start}
.say .who{font-weight:600;font-size:14px;padding-top:10px}
.say .bubble{background:var(--pale);border-radius:14px 14px 14px 4px;padding:10px 14px;font-style:italic}
@media (max-width:520px){.say{grid-template-columns:1fr;gap:4px}.say .who{padding-top:0}}
.steps{list-style:none;padding:0;margin:0;display:grid;gap:8px;counter-reset:s}
.steps li{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:12px;align-items:start;background:var(--canvas);border-radius:12px;padding:10px 12px}
.steps li::before{counter-increment:s;content:counter(s);width:28px;height:28px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;font-weight:600;font-size:13px}
.steps input{width:20px;height:20px;accent-color:var(--green);margin-top:4px}
.nato-out{display:flex;flex-wrap:wrap;gap:6px}
.nato-out span{background:var(--pale);border-radius:8px;padding:4px 9px;font-size:14px}
.nato-out b{color:var(--green)}
.timer{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.timer .t{font-size:44px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.phr{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.phr ul{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:6px}
.phr li{background:var(--canvas);border-radius:10px;padding:7px 11px;font-size:15px}
.phr.quiz li span{filter:blur(5px);transition:filter .15s;cursor:pointer}
.phr.quiz li span.show{filter:none}
.scene-ico{font-size:26px}
.vid{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:18px;align-items:center}
@media (max-width:640px){.vid{grid-template-columns:1fr}}
.play{aspect-ratio:16/9;max-width:100%;border-radius:16px;background:var(--deep);color:#fff;display:grid;place-items:center;text-decoration:none;position:relative}
.play .tri{width:56px;height:56px;border-radius:50%;background:#ff0033;display:grid;place-items:center}
.play small{position:absolute;bottom:8px;right:10px;font-size:12px;background:rgb(0 0 0 / 55%);padding:1px 6px;border-radius:5px}
.rubric{width:100%;border-collapse:collapse;font-size:14px}
.rubric th,.rubric td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.rubric th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
details.opt-card{border:1px solid var(--line);border-radius:14px;background:var(--surface)}
details.opt-card summary{padding:12px 16px;cursor:pointer;font-weight:600;display:flex;gap:10px;align-items:center}
details.opt-card[open] summary{border-bottom:1px solid var(--line)}
details.opt-card .in{padding:14px 16px;display:grid;gap:12px}
details.opt-card.chosen{border-color:var(--green);background:var(--pale)}
.vtable td{padding:4px}
.vtable input{min-height:38px;padding:6px 8px;border-radius:8px}
.vtable td:first-child{color:var(--muted);font-size:13px;width:28px;text-align:right}

/* export / toast */
.export{position:fixed;inset:0;background:rgb(0 0 0 / 45%);display:grid;place-items:center;z-index:30;padding:16px}
.export .panel{width:100%;max-width:720px;display:grid;gap:12px;max-height:90vh}
.export textarea{min-height:300px;font-size:14px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--deep);color:#fff;padding:10px 18px;border-radius:12px;font-size:14px;z-index:40;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.show{opacity:1}
.foot{max-width:1180px;margin:34px auto 0;font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

.lvl{display:flex;flex-shrink:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}
.lvl button{border:0;background:none;padding:6px 11px;font-size:13px;font-weight:600;color:var(--muted)}
.lvl button.on{background:var(--deep);color:#fff}
.nav a.locked{opacity:.55}
.card.locked{opacity:.6;cursor:not-allowed}
.card.locked:hover{transform:none;border-color:var(--line)}
/* games */
.game{min-height:260px}
.ws-wrap{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start}
.ws{display:grid;gap:3px;width:min(100%,460px);user-select:none}
.ws-c{aspect-ratio:1;border:1px solid var(--line);background:#fff;border-radius:6px;font:600 clamp(12px,3.4vw,17px)/1 inherit;color:var(--ink);cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}
.ws-c:hover{border-color:var(--green)}
.ws-c.s{background:var(--hi);border-color:var(--hi)}
.ws-c.f{background:var(--pale);border-color:#9bd6ad;color:var(--green)}
.ws-list{flex:1;min-width:180px}
.ws-list ul{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:4px}
.ws-list li{padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}
.ws-list li.f{background:var(--pale);border-color:#9bd6ad;text-decoration:line-through;text-decoration-color:var(--green)}
.win{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:14px;padding:12px 14px;border-radius:12px;background:var(--pale);border:1px solid #9bd6ad}
.win.lose{background:var(--cream);border-color:var(--line)}
.mem{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;max-width:620px}
.mem-c{min-height:84px;border-radius:12px;border:1px solid var(--deep);background:var(--deep);color:#fff;font:600 22px/1.2 inherit;cursor:pointer;padding:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.mem-c.up{background:#fff;color:var(--ink);border-color:var(--line);font-size:15px}
.mem-c.up.en{border-color:var(--green)}
.mem-c small{font-size:11px;color:var(--muted);font-weight:500}
.mem-c.got{background:var(--pale);border-color:#9bd6ad}
@media (max-width:560px){.mem{grid-template-columns:repeat(3,1fr)}.mem-c.up{font-size:13px}}
.hg-word{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.hg-l{width:32px;height:40px;border-bottom:3px solid var(--deep);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:600}
.hg-l.miss{color:var(--bad)}
.hg-sp{width:16px}
.hg-lives{display:flex;gap:5px;align-items:center;margin-bottom:14px}
.hg-lives i{width:14px;height:14px;border-radius:50%;background:var(--green)}
.hg-lives i.gone{background:var(--line)}
.hg-lives span{margin-left:6px}
.kbd{display:flex;flex-wrap:wrap;gap:5px;max-width:520px}
.key{width:40px;height:44px;border-radius:8px;border:1px solid var(--line);background:#fff;font:600 16px inherit;color:var(--ink);cursor:pointer}
.key:hover:not(:disabled){border-color:var(--green)}
.key.ok{background:var(--pale);border-color:#9bd6ad;color:var(--green)}
.key.no{background:var(--cream);color:var(--muted)}
.scr{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.tile{width:38px;height:42px;border-radius:8px;background:var(--deep);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:600;text-transform:uppercase}
.quiz{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-width:560px}
.qopt{justify-content:center;min-height:52px;font-size:16px}
.qopt.ok{background:var(--pale);border-color:var(--green);color:var(--green)}
.qopt.no{background:#fde8e8;border-color:var(--bad);color:var(--bad)}
@media (max-width:480px){.quiz{grid-template-columns:1fr}}
/* docent */
.big{font-size:34px;font-weight:600;line-height:1.1;margin-top:4px}
.tbl-wrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--cream)}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl td a{text-decoration:none;color:var(--ink)}
.tbl td a:hover b{color:var(--green)}
.tbl .bar{margin-top:4px;min-width:70px}
.heat{display:flex;gap:3px}
.heat i{width:14px;height:14px;border-radius:3px;background:var(--line)}
.heat i.h1{background:#c9ecd3}.heat i.h2{background:#6fcf8f}.heat i.h3{background:var(--green)}
/* nakijken & feedback */
.stars{color:#d79a00;letter-spacing:2px;font-size:18px}
.stars .off{color:var(--line)}
.fbpanel{border-left:4px solid var(--green)}
.crit{display:grid;grid-template-columns:max-content max-content;gap:4px 14px;align-items:center;margin:8px 0}
.fbcomment{background:var(--cream);border-radius:12px;padding:10px 14px;margin-top:8px}
.fbcard{border:1px solid var(--line);border-radius:14px;margin-bottom:10px;background:var(--surface)}
.fbcard>summary{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;list-style:none}
.fbcard>summary::-webkit-details-marker{display:none}
.fbcard[open]>summary{border-bottom:1px solid var(--line)}
.fbbody{padding:12px 14px}
.fbrow{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed var(--line)}
.fbtext{flex:1;min-width:0;overflow-wrap:anywhere}
.critpick{display:grid;gap:6px;margin:12px 0}
.critpick>div{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.hints{color:var(--warn);margin-top:4px}
.hints:empty{display:none}
.hints b{color:var(--warn)}
.risk{margin:0;padding-left:20px}
.risk li{margin:3px 0}
a.pill{text-decoration:none}
@media (max-width:600px){.fbrow{flex-direction:column}.crit{grid-template-columns:1fr}}
.tog label:has(input[value="bad"]:checked){background:var(--bad)}

/* compacter op laptopschermen (Tarik, 21-10) */
body{font-size:15px;line-height:1.5}
.topbar{padding-block:8px}
.topbar-in{padding:6px 8px 6px 12px}
.mark{width:34px;height:34px;font-size:15px}
.nav a{padding:6px 10px}
.hero{margin-top:10px;padding:clamp(16px,2.5vw,26px);gap:16px}
.hero h1{font-size:clamp(26px,3vw,38px);margin:8px 0}
.hero-stats b{font-size:22px}
.sec-h{margin:20px 0 10px}
.sec-h h2{font-size:20px}
.grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.card{padding:14px 16px;gap:6px}
.card h3{font-size:17px}
.skill-ico{width:34px;height:34px;border-radius:10px}
.skill-ico svg{width:18px;height:18px}
.page-h{margin:12px 0 12px;gap:4px}
.page-h h1{font-size:clamp(24px,2.6vw,30px)}
.panel{padding:clamp(14px,2vw,20px)}
.tip{padding:10px 14px;font-size:14px}
.tabs{margin-bottom:10px}
.tabs a{padding:5px 12px;font-size:13px}
.btn{min-height:38px;padding:7px 14px;font-size:14px}
.btn.sm{min-height:32px;padding:5px 11px;font-size:13px}
.input,textarea.input,select.input{min-height:38px;padding:7px 11px}
textarea.input{min-height:60px}
.vgrid{display:grid;grid-template-columns:1fr;column-gap:28px}
@media (min-width:980px){.vgrid:not(.one){grid-template-columns:1fr 1fr}.vgrid:not(.one) .vi:nth-child(2){border-top:0}}
.vi{padding:8px 0;gap:4px 10px;grid-template-columns:24px minmax(0,1fr)}
.vi .n{padding-top:6px}
.vi .sent{padding-top:4px}
.vi .body{gap:5px}
.vgrid textarea.input{min-height:56px}
.optrow label{padding:5px 10px}
.match-row{padding:3px 0}
.match-row select{min-height:34px}
.right-list li{padding:5px 10px}
.q{padding:12px 0;gap:8px}
.opt{padding:7px 10px}
.text-panel p{font-size:16.5px;margin-bottom:10px}
.text-panel{top:70px;max-height:calc(100vh - 84px)}
.scorebar{padding:9px 14px;margin-top:10px}
.score{font-size:19px}
.row-link{padding:9px 14px}
.row-link .num{width:30px;height:30px}
.list-rows{gap:6px}
.wl td{padding:6px 10px}
.editor{min-height:260px}
.big{font-size:28px}
.foot{margin-top:24px}
@media (min-width:900px){.grid.mods{grid-template-columns:repeat(3,1fr)}}
.tip.about{margin-bottom:10px}
.tip.about summary{cursor:pointer}
/* uitleg voor leerlingen (digibord) */
.board{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:clamp(20px,3vw,40px);display:grid;gap:20px}
.board-h{display:flex;gap:16px;align-items:center}
.board-h .mark{width:56px;height:56px;font-size:22px;border-radius:14px}
.board-h h1{font-size:clamp(26px,3.2vw,40px);line-height:1.1;margin-top:4px}
.board-task{background:var(--hi);color:var(--deep);border-radius:14px;padding:14px 20px;font-size:clamp(20px,2.2vw,28px);font-weight:600}
.board-task span{display:block;font-size:13px;letter-spacing:.09em;text-transform:uppercase;font-weight:600;opacity:.75}
.steps{list-style:none;counter-reset:s;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
.steps li{counter-increment:s;background:var(--canvas);border-radius:14px;padding:16px 18px 16px 64px;position:relative;display:grid;gap:4px;font-size:clamp(16px,1.5vw,19px)}
.steps li::before{content:counter(s);position:absolute;left:16px;top:14px;width:36px;height:36px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;font-weight:600}
.steps li b{font-size:1.1em}
.steps .url{font-size:1.35em;font-weight:600;color:var(--green)}
.steps code{background:var(--gap);color:var(--gap-ink);border-radius:6px;padding:1px 7px;font-weight:600;font-family:inherit}
.board-rules{display:flex;flex-wrap:wrap;gap:8px 24px;color:var(--muted);font-size:clamp(14px,1.3vw,17px)}
@media print{.topbar,.foot,.noprint{display:none!important}body{background:#fff;padding:0}.board{border:0;padding:0}.steps li{background:#f4f5f6;-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.steps li{display:block;counter-increment:none;padding-left:66px}
.steps li::before{content:none}
.steps li i{position:absolute;left:16px;top:14px;width:36px;height:36px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;font-weight:600;font-style:normal}
.steps li b,.steps li span{display:block}
.steps li b{margin-bottom:4px}
.risk{display:grid;gap:10px;margin-top:8px;padding:0}
.risk b{font-size:14px;display:block;margin-bottom:5px}
.risk .chip{text-decoration:none;color:var(--ink);font-size:13px;padding:3px 10px}
.risk .chip:hover{border-color:var(--green)}
.steps li b,.steps li span{display:inline}
.steps li>b,.steps li>span{display:block}
@media (min-width:1100px){.steps{grid-template-columns:repeat(5,1fr)}.steps li{padding:62px 16px 16px}.steps li i{top:16px}}
.steps .url{font-size:1.1em;overflow-wrap:anywhere}

/* ===== stijl Zacht (Tarik, 21-10) ===== */
:root{
  --green:#4f6bed;--green-ink:#3a54d4;--deep:#1f2a44;--ink:#1f2a44;--muted:#5a6684;--canvas:#f3f2fb;--surface:rgba(255,255,255,.82);--solid:#ffffff;
  --line:#e2e5f2;--pale:#eaeeff;--cream:#f6f3fc;--hi:#1f2a44;--gap:#ffe0d1;--gap-ink:#7a3413;
  --ok:#1a8f63;--ok-bg:#ddf6ec;--bad:#c2413a;--bad-bg:#fde7e4;--warn:#9a6200;--warn-bg:#fff1d6;
  --peach:#ff9f7a;--lilac:#b98cff;--sky:#6c8cff;--r:20px;
}
body{background:linear-gradient(135deg,#e7f3ff 0%,#f4ecff 50%,#fff1ea 100%) fixed;background-color:var(--canvas);font-weight:400}
h1,h2,h3{font-weight:600;letter-spacing:-.015em}
.topbar{background:transparent;backdrop-filter:none}
.topbar-in{background:rgba(255,255,255,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.9);border-radius:999px;padding:6px 8px 6px 10px;box-shadow:0 6px 24px rgba(31,42,68,.06)}
.mark{border-radius:50%;background:linear-gradient(135deg,var(--sky),var(--lilac));font-weight:600}
.nav a{border-radius:999px}
.nav a.on{background:var(--deep);color:#fff}
.nav a:hover{background:rgba(31,42,68,.06)}
.nav a.on:hover{background:var(--deep)}
.me{background:#fff;border-radius:999px}
.lvl{border-radius:999px;overflow:hidden}
.lvl button{border-radius:999px}
.lvl button.on{background:var(--deep)}
.panel,.card,.hero,.row-link,.board,.fbcard,.tip,.flash .fcard,.gate-card{background:var(--surface);border:1px solid rgba(255,255,255,.9);box-shadow:0 8px 30px rgba(31,42,68,.06);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.panel,.card,.hero,.board,.gate-card{border-radius:var(--r)}
.tip{background:rgba(255,255,255,.6)}
.hero h1 span{color:var(--green)}
a.card:hover,button.card:hover{border-color:#fff;box-shadow:0 12px 34px rgba(79,107,237,.16)}
.skill-ico{border-radius:50%;background:var(--pale);color:var(--green)}
.pill{background:var(--pale);color:var(--green-ink)}
.bar{background:#e6e9f7}.bar i{background:linear-gradient(90deg,var(--sky),var(--lilac))}
.btn{border-radius:999px;background:#fff;border-color:var(--line)}
.btn:hover{background:var(--pale)}
.btn.primary{background:var(--deep);border-color:var(--deep);color:#fff}
.btn.primary:hover{background:#2c3a5e}
.btn.ghost{background:none;border-color:transparent}
.input,textarea.input,select.input{border-radius:12px;border-color:#d7deef;background:#fff}
.input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(79,107,237,.18)}
.tabs a{border-radius:999px;background:rgba(255,255,255,.75);border-color:rgba(255,255,255,.9)}
.tabs a.on{background:var(--deep);border-color:var(--deep)}
.scorebar{background:rgba(234,238,255,.85);border-radius:16px}
.opt,.optrow label,.right-list li,.chip{border-radius:12px}
.opt:has(input:checked),.optrow label:has(input:checked){border-color:var(--green);background:var(--pale)}
.right-list li{background:var(--pale)}
.right-list b,.opt .l{color:var(--green-ink)}
.qn{background:var(--deep);border-radius:50%}
.pn{background:var(--pale);color:var(--green-ink)}
.row-link .num{background:var(--pale);color:var(--green-ink)}
.text-panel p{font-family:var(--font);font-size:16px;line-height:1.75}
.wl td:last-child,.fcard .s{font-family:var(--font)}
.tbl-wrap,.tbl{border-radius:var(--r)}
.heat i.h3{background:var(--sky)}
.board-task{background:linear-gradient(135deg,#dfe7ff,#f1e6ff);color:var(--deep)}
.steps li{background:rgba(255,255,255,.7)}
.steps li i{background:var(--deep)}
.ws-c.s{background:var(--gap);border-color:var(--peach)}
.toast{border-radius:999px}
.gate{background:transparent}
.foot{color:var(--muted)}
.eyebrow{color:var(--green-ink)}

/* startpagina: zes tegels (concept C) */
.home-h h1{font-size:clamp(22px,2.6vw,30px);margin:6px 0 16px;letter-spacing:-.01em}
.wbs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media (max-width:640px){.wbs{grid-template-columns:repeat(2,minmax(0,1fr))}}
.wb{display:grid;justify-items:center;align-content:center;gap:8px;text-align:center;min-height:150px;padding:20px 14px;border-radius:var(--r);background:#fff;border:1px solid #fff;box-shadow:0 6px 18px rgba(31,42,68,.07);color:var(--ink);text-decoration:none;transition:transform .15s,box-shadow .15s}
a.wb:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(31,42,68,.12)}
.wb .skill-ico{width:52px;height:52px;border-radius:50%;background:var(--pale);display:grid;place-items:center;color:var(--green)}
.wb .skill-ico svg{width:24px;height:24px}
.wb b{font-size:17px;font-weight:600}
.wb small{font-size:12px;color:var(--muted)}
.wb .bar{width:70%;margin:2px 0 0}
.wb.locked{background:rgba(255,255,255,.45);box-shadow:none;color:#9aa3b8;cursor:default}
.wb.locked b{font-weight:500}
.wb.locked .skill-ico{background:#eef0f5;color:#b3bacb}

/* Vocabulary: tabbladen (concept B), elk thema een eigen kleur */
.vh{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin:6px 0 16px}
.vh h1{margin:0;font-size:clamp(24px,2.6vw,30px);line-height:1.1}
.vh-tools{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.vh-tools .btn{background:#fff;color:var(--ink);border:1px solid #dcd9d1;box-shadow:none}
.tabs-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
@media (max-width:1000px){.tabs-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:560px){.tabs-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tab-card{display:grid;align-content:space-between;gap:10px;min-height:118px;padding:12px 14px 14px;background:#fff;border:1px solid #e3e0d8;border-top:8px solid var(--c);border-radius:8px;color:var(--ink);text-decoration:none;box-shadow:none;transition:transform .12s}
.tab-card:hover{transform:translateY(-2px)}
.tab-card b{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--c);color:#fff;font-size:13px;font-weight:600}
.tab-card span{font-weight:600;font-size:15px;line-height:1.2}
.tab-card .dots{display:flex;gap:3px;flex-wrap:wrap}
.tab-card .dots i{width:10px;height:10px;border-radius:2px;background:#e8e5de}
.tab-card .dots i.on{background:var(--c)}

/* minder "AI-look": effen achtergrond, geen paarse verlopen */
body{background:#f7f5f0;background-image:none}
.mark{background:var(--ink);border-radius:8px;color:#fff}
.bar i{background:var(--green)}
.board-task{background:#eef1fb}

/* docentportaal: vier vakken (concept A) */
:root{--kb:#1597a8;--gl:#d9821e}
.portal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media (max-width:640px){.portal{grid-template-columns:1fr}}
.pt{display:grid;gap:10px;align-content:start;min-height:170px;padding:16px 18px;background:#fff;border:1px solid #e3e0d8;border-top:8px solid var(--c);border-radius:8px;color:var(--ink);text-decoration:none}
a.pt:hover{transform:translateY(-2px)}
.pt.mat{background:#fbfaf7}
.pt .k{justify-self:start;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#fff;background:var(--c);padding:2px 8px;border-radius:4px}
.pt h2{margin:0;font-size:22px;line-height:1.15}
.pt .nums{display:flex;gap:22px}
.pt .nums b{display:block;font-size:26px;line-height:1.1}
.pt .nums span{font-size:12px;color:var(--muted)}
.pt .warn{font-size:13px;font-weight:600;color:#a33a1d}
.pt .go{font-size:13px;font-weight:600;color:var(--c);text-decoration:none;justify-self:start}
.wbchips{display:flex;flex-wrap:wrap;gap:6px}
.wbchips button{font:inherit;font-size:12px;font-weight:500;padding:4px 10px;border-radius:5px;border:0;background:#efede7;color:#7d8291;cursor:pointer}
.wbchips button.on{background:var(--c);color:#fff}
.preview-bar{background:#1d2433;color:#fff;text-align:center;font-size:13px;padding:7px 12px}
.preview-bar a{color:#fff;font-weight:600;margin-left:8px}

/* XP en rang (zoals Sayventure) */
.xpchip{font-size:12px;font-weight:600;background:#fff4dc;color:#7a4d00;border-radius:999px;padding:5px 10px;white-space:nowrap}
.rank{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid #e3e0d8;border-radius:8px;padding:10px 14px;margin:-4px 0 14px;font-size:14px}
.rank .rk{font-weight:700;background:var(--ink);color:#fff;border-radius:5px;padding:2px 9px;font-size:13px}
.rank .bar{flex:1;min-width:120px;margin:0}
.tab-card small.les{font-size:11px;font-weight:600;color:var(--c)}
.klaar{display:inline-flex;align-items:center;gap:6px;font-size:13px;background:#fff;border:1px solid #e3e0d8;border-radius:8px;padding:3px 8px}
.klaar .btn{padding:2px 9px;min-width:0}

/* toegankelijkheid: donkerdere linkkleur (contrast 4,5:1+) en woordenbank */
:root{--green:#3a52c9}
a{color:#3a52c9}
.tab-card small.les{color:color-mix(in srgb,var(--c) 60%,#000)}
.wordbank{margin:0 0 12px;font-size:13px}
.wordbank summary{cursor:pointer;color:#3a52c9;font-weight:600}
.wordbank .choices{margin-top:8px}
.tab-card b{background:color-mix(in srgb,var(--c) 78%,#000)}

/* feestje bij nieuwe rang of badge */
#party{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:rgba(29,36,51,.45);padding:16px}
.party-card{position:relative;z-index:2;background:#fff;border-radius:16px;padding:26px 28px;text-align:center;max-width:340px;width:100%;box-shadow:0 20px 50px rgba(0,0,0,.25);animation:pop .45s cubic-bezier(.2,1.6,.4,1)}
.party-ic{font-size:54px;line-height:1;margin-bottom:6px;animation:wiggle 1s ease-in-out 2}
.party-card h2{margin:4px 0 6px;font-size:26px}
.party-card p{margin:0 0 16px;color:var(--muted)}
.confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.confetti i{position:absolute;top:-12px;width:9px;height:14px;border-radius:2px;animation:fall linear forwards}
@keyframes fall{to{top:105%;transform:rotate(540deg) translateX(40px)}}
@keyframes pop{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-12deg)}75%{transform:rotate(12deg)}}
@media (prefers-reduced-motion:reduce){.confetti{display:none}.party-card,.party-ic{animation:none}}

/* Vocabulary: extra tegels onder de thema's */
.more-h{font-size:16px;margin:22px 0 10px}
.tab-card.extra{min-height:92px}
.tab-card.extra b{font-size:16px;line-height:1;background:color-mix(in srgb,var(--c) 14%,#fff)}

/* ===== stijl Oceaan, indeling Strook (Tarik, 21-10): volwassen en strak, donkerblauw + koraal + lichtblauw, Onest ===== */
:root{
  --navy:#123a63;--navy-ink:#0f2238;--coral:#ff8a65;--coral-ink:#2a1006;--sky:#bfe0f5;--sea:#eaf1f7;--soft:#56687d;
  --green:#123a63;--green-ink:#0f2238;--deep:#123a63;--ink:#0f2238;--muted:#56687d;--canvas:#eaf1f7;--surface:#ffffff;--solid:#ffffff;
  --line:#dbe6f0;--pale:#e3eef8;--cream:#f2f6fa;--hi:#123a63;--gap:#ffd8c9;--gap-ink:#5a1f08;
  --font:"Onest",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--r:18px;
}
body{background:var(--sea);background-image:none;font-family:var(--font)}
a{color:#1b4f86}
h1,h2,h3{font-weight:700;letter-spacing:-.025em}
:focus-visible{outline:3px solid var(--coral);outline-offset:2px}
.eyebrow{color:var(--soft)}
/* bovenbalk */
.topbar{background:color-mix(in srgb,var(--sea) 90%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.topbar-in{background:#fff;border:0;border-radius:16px;box-shadow:none;padding:6px 8px 6px 10px}
.mark{background:var(--navy);border-radius:9px;font-weight:700;width:36px;height:36px;font-size:14px}
.brand{font-weight:800;letter-spacing:-.02em}
.nav a{border-radius:999px;font-weight:600;color:var(--soft)}
.nav a.on,.nav a.on:hover{background:var(--navy);color:#fff}
.nav a:hover{background:var(--pale);color:var(--ink)}
.me{background:var(--pale);border:0;border-radius:999px;font-weight:600}
.xpchip{background:var(--coral);color:var(--coral-ink);font-weight:700}
.lvl button.on{background:var(--navy)}
/* vlakken: wit, geen schaduw, geen glas */
.panel,.card,.hero,.row-link,.board,.fbcard,.tip,.flash .fcard,.gate-card{background:#fff;border:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
.panel,.card,.hero,.board,.gate-card{border-radius:var(--r)}
.tip{background:var(--pale)}
a.card:hover,button.card:hover{box-shadow:0 0 0 2px var(--sky)}
/* knoppen */
.btn{border-radius:999px;border:0;background:var(--pale);color:var(--ink);font-weight:600}
.btn:hover{background:#d3e4f3}
.btn.primary{background:var(--navy);color:#fff}
.btn.primary:hover{background:var(--navy-ink)}
.btn.ghost{background:none;color:#1b4f86}
.input,textarea.input,select.input{border-radius:12px;border:1px solid var(--line);background:#fff}
.input:focus{border-color:var(--navy);box-shadow:0 0 0 3px rgba(18,58,99,.16)}
/* tabbladen en opdrachten */
.tabs a{border-radius:999px;background:#fff;border:0;font-weight:600}
.tabs a.on{background:var(--navy);color:#fff}
.scorebar{background:var(--pale);border-radius:14px}
.optrow label,.opt,.chip,.right-list li{border-radius:999px;background:var(--sea);border-color:transparent}
.right-list li{border-radius:10px}
.optrow label:has(input:checked),.opt:has(input:checked){background:#d3e4f3;border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}
.right-list b,.opt .l{color:var(--navy)}
.hl{background:#ffd8c9;color:#5a1f08;border-radius:5px}
.qn{background:var(--navy)}
.pn,.row-link .num,.pill,.skill-ico{background:var(--pale);color:var(--navy)}
.bar{background:#dbe6f0}.bar i{background:var(--navy)}
.board-task{background:var(--pale)}
.steps li i{background:var(--navy)}
.toast{background:var(--navy-ink)}
/* strook */
.sec-h{font-size:15px;font-weight:700;margin:18px 0 10px;letter-spacing:-.01em}
.home-h h1,.vh h1{font-size:clamp(24px,2.6vw,30px);margin:6px 0 14px}
.vh{margin:0}
.strip{display:grid;grid-template-columns:4fr 3fr 3fr;gap:10px}
.strip.two{grid-template-columns:3fr 2fr}
@media (max-width:760px){.strip,.strip.two{grid-template-columns:1fr}}
.sb{border-radius:var(--r);padding:12px 16px;display:grid;gap:3px;align-content:center;text-decoration:none;min-width:0}
.sb small{font-size:12px;font-weight:500;opacity:.8}
.sb b{font-size:20px;font-weight:800;letter-spacing:-.02em;line-height:1.15}
.sb-go{background:var(--navy);color:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}
.sb-t{display:grid;gap:2px;min-width:0}
.sb-btn{background:var(--coral);color:var(--coral-ink);border-radius:999px;padding:8px 14px;font-weight:700;font-size:13px;white-space:nowrap}
a.sb-go:hover .sb-btn{background:#ff9d7e}
.sb-xp{background:var(--coral);color:var(--coral-ink)}
.sb-xp b{font-size:22px}
.sb-bar{height:7px;border-radius:9px;background:rgba(42,16,6,.15);overflow:hidden;margin:3px 0}
.sb-bar i{display:block;height:100%;background:var(--coral-ink);border-radius:9px}
.sb-sig{background:var(--sky);color:var(--navy-ink)}
a.sb-sig:hover{background:#acd5ef}
/* thema-tegels */
.th-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
@media (max-width:1000px){.th-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:560px){.th-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.th-tile{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;column-gap:10px;row-gap:1px;align-items:center;background:#fff;border-radius:16px;padding:11px 12px;color:var(--ink);text-decoration:none;transition:box-shadow .12s}
.th-tile:hover{box-shadow:0 0 0 2px var(--sky)}
.th-tile b{grid-row:span 2;width:28px;height:28px;border-radius:8px;background:color-mix(in srgb,var(--c) 85%,#000);color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center}
.th-tile span{font-weight:700;font-size:14px;line-height:1.2;overflow-wrap:break-word}
.th-tile small{font-size:12px;font-weight:600;color:var(--soft)}
.th-tile.af small{color:#1f7a4d}
.th-tile.extra{grid-template-columns:minmax(0,1fr)}
/* startpagina */
.wbs{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media (max-width:640px){.wbs{grid-template-columns:repeat(2,minmax(0,1fr))}}
.wb{min-height:0;justify-items:start;text-align:left;align-content:start;padding:14px 16px;border:0;border-radius:var(--r);box-shadow:none;background:#fff;gap:6px}
a.wb:hover{transform:none;box-shadow:0 0 0 2px var(--sky)}
.wb .skill-ico{width:36px;height:36px;border-radius:10px;background:var(--pale);color:var(--navy)}
.wb .skill-ico svg{width:20px;height:20px}
.wb b{font-weight:700;font-size:16px}
.wb .bar{width:100%}
.wb.locked{background:rgba(255,255,255,.5);color:#8a98a8}
/* docentportaal */
.pt{border:0;border-radius:var(--r);background:#fff}
.pt.mat{background:#fff}
.pt .k{border-radius:6px}
.wbchips button{border-radius:999px;background:var(--sea)}
.rank,.klaar{border:0;border-radius:14px}
.preview-bar{background:var(--navy-ink)}
/* feestje: rustiger */
.party-card{border-radius:20px}
.party-ic{width:64px;height:64px;margin:0 auto 8px;border-radius:50%;background:var(--coral);color:var(--coral-ink);display:grid;place-items:center;font-size:26px;font-weight:800;animation:none}
.wb{grid-template-columns:auto minmax(0,1fr);column-gap:12px;row-gap:2px;align-items:center}
.wb .skill-ico{grid-row:span 2}
.wb .bar{grid-column:1/-1;margin-top:6px}

/* spelerbanner met robot (Tarik, 21-10): achtergrond wordt mooier per rang */
.strip{grid-template-columns:4fr 4fr 2.4fr}
.strip.two{grid-template-columns:1fr 1fr}
@media (max-width:760px){.strip,.strip.two{grid-template-columns:1fr}}
.ban{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;position:relative;overflow:hidden;color:var(--fg,#0f2238);background:var(--bgb)}
.ban::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(115deg,rgba(255,255,255,var(--st,0)) 0 18px,transparent 18px 40px);pointer-events:none}
.ban .bot{width:64px;height:64px;border-radius:50%;background:#fff;padding:4px;box-shadow:0 0 0 var(--rw,2px) var(--ring,#c5d0db);position:relative;z-index:1}
.ban-t{display:grid;gap:2px;min-width:0;position:relative;z-index:1}
.ban-t b{font-size:17px}
.ban .sb-bar{background:color-mix(in srgb,var(--fg,#0f2238) 18%,transparent)}
.ban .sb-bar i{background:var(--barc,#0f2238)}
.ban.t0{--bgb:#dfe7ef;--ring:#c5d0db}
.ban.t1{--bgb:linear-gradient(90deg,#bfe0f5,#e3f1fb);--ring:#8796a8}
.ban.t2{--bgb:linear-gradient(90deg,#123a63,#2f67c9);--fg:#fff;--ring:#fff;--st:.06;--barc:#fff}
.ban.t3{--bgb:linear-gradient(90deg,#123a63,#ff8a65);--fg:#fff;--ring:#ff8a65;--rw:4px;--st:.06;--barc:#fff}
.ban.t4{--bgb:linear-gradient(90deg,#1d1d22,#ff8a65);--fg:#fff;--ring:#f2b632;--rw:4px;--st:.06;--barc:#f2b632}
.ban.t5{--bgb:linear-gradient(90deg,#f2b632,#ffe9a8);--ring:#fff;--rw:4px;--st:.08;--barc:#123a63}
.party-ic:has(.party-bot){background:#eaf1f7;width:96px;height:96px}
.party-bot{width:84px;height:84px}

/* tegel naar Sayventure */
.wb-ext{background:var(--sky)}
.wb-ext .skill-ico{background:#fff}

/* ===== docentportaal met zijbalk (concept 2, 22-10) ===== */
.dp{display:grid;grid-template-columns:220px minmax(0,1fr);gap:18px;align-items:start}
.dp-side{position:sticky;top:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 8px;display:grid;gap:2px}
.dp-side .grp{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:12px 10px 4px}
.dp-side a{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:8px;color:var(--ink);text-decoration:none;font-weight:500;font-size:14px}
.dp-side a i{flex:none;width:9px;height:9px;border-radius:3px;background:var(--c,var(--line))}
.dp-side a:hover{background:var(--cream)}
.dp-side a.on{background:var(--pale);color:var(--navy);font-weight:700}
.dp-side a .n{margin-left:auto;font-size:12px;color:var(--muted);font-weight:500}
.dp-main{display:grid;gap:14px;min-width:0}
.dp-hd{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;justify-content:space-between}
.dp-hd h1{margin:2px 0 0;font-size:clamp(22px,2.4vw,28px);line-height:1.1}
.dp .tag{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.dp .row-btns{display:flex;flex-wrap:wrap;gap:6px}
.dp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.dp-k{display:grid;gap:8px;background:#fff;border:1px solid var(--line);border-top:4px solid var(--c);border-radius:12px;padding:14px;color:var(--ink);text-decoration:none}
.dp-k:hover{border-color:var(--c)}
.dp-k strong{font-size:19px}
.dp-k strong small{font-size:13px;color:var(--muted);font-weight:500;margin-left:4px}
.dp-k .pill{justify-self:start}
.dp-lv{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.dp-c{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;display:grid;gap:10px;align-content:start}
.dp-c .t{display:flex;justify-content:space-between;align-items:center;gap:8px}
.dp-c .t strong{font-size:18px}
.dp .pill{font-size:12px;font-weight:700;border-radius:999px;padding:2px 9px;background:var(--pale);color:var(--navy)}
.dp .pill.w{background:#fde8dc;color:#a33a1d}
.dp .prog{height:8px;background:var(--pale);border-radius:99px;overflow:hidden}
.dp .prog i{display:block;height:100%;background:var(--c);border-radius:99px}
.dp .kv{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:12px;color:var(--muted)}
.dp .kv b{display:block;font-size:17px;color:var(--ink)}
.dp .chips{display:flex;flex-wrap:wrap;gap:6px}
.dp .chip{background:#fff7f3;border:1px solid #f3d2c3;border-radius:999px;padding:2px 9px;font-size:12px;color:var(--ink);text-decoration:none}
.dp-box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:grid;gap:8px}
.dp-link{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.dp-link b{overflow-wrap:anywhere}
@media (max-width:760px){.dp{grid-template-columns:minmax(0,1fr)}.dp-side{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.dp-side .grp{grid-column:1/-1}.dp-grid{grid-template-columns:minmax(0,1fr)}}
.dp-box{--c:#123a63}
.dp-att summary{cursor:pointer;font-size:13px;font-weight:600;color:#a33a1d}
.dp-att .chips{margin-top:6px}
.dp-files{display:grid;gap:6px}

/* Leesbaarheid (website-check 24-10): kleine teksten met genoeg contrast */
.wb-ext small{color:#33465a}
.pill.done{color:#11684a}
/* Op de telefoon vallen spellen en opdrachten niet meer rechts uit beeld */
.tabs{flex-wrap:wrap;overflow-x:visible}
/* Wordwise (24-10): naam + docentportaal met menu bovenin, kerngetallen en tabel */
.wwm{font-weight:800;letter-spacing:-.02em;color:var(--navy);font-size:19px;line-height:1.1}
.wwm em,.gate-ww em{font-style:normal;color:#d9562f}
.gate-card h1.gate-ww{letter-spacing:-.03em;color:var(--navy)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.dp{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.dp-tabs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:6px}
.dp-tabs a{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:8px;color:var(--muted);text-decoration:none;font-weight:600;font-size:14px}
.dp-tabs a i{width:9px;height:9px;border-radius:3px;background:var(--c)}
.dp-tabs a:hover{background:var(--cream);color:var(--ink)}
.dp-tabs a.on{background:var(--pale);color:var(--navy)}
.dp-tabs a.x{font-weight:500;font-size:13px}
.dp-tabs .sp{flex:1}
.dp-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.dp-kpis>div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.dp-kpis small{display:block;color:var(--muted);font-size:13px}
.dp-kpis b{font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.dp-kpis .w b{color:#a33a1d}
.dp-tbl{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:12px}
.dp-tbl table{width:100%;border-collapse:collapse;font-size:14px;min-width:720px}
.dp-tbl th{text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:10px 12px;background:var(--cream);border-bottom:1px solid var(--line)}
.dp-tbl td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.dp-tbl tr:last-child td{border-bottom:0}
.dp-tbl tbody tr:hover{background:#f8fbfd}
.dp-tbl .kl{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--ink);text-decoration:none;white-space:nowrap}
.dp-tbl .kl i{width:9px;height:9px;border-radius:3px;background:var(--c)}
.dp-tbl .now{color:var(--muted)}
.dp-tbl .pb{display:inline-block;width:90px;height:6px;border-radius:3px;background:var(--pale);overflow:hidden;vertical-align:middle;margin-right:8px}
.dp-tbl .pb i{display:block;height:100%;background:var(--c)}
.dp-tbl .pill{white-space:nowrap}
@media (max-width:760px){.dp-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.dp-tabs .sp{display:none}}

/* Lastige woorden (28-10): balk op home/Vocabulary en de herhaalronde */
.lw-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:12px 16px;border-radius:14px;background:#fff;border:1px solid var(--line);border-left:5px solid var(--coral);color:var(--navy-ink);text-decoration:none}
.lw-bar:hover{background:var(--cream)}
.lw-bar span:first-child{display:grid;gap:2px}
.lw-bar small{color:var(--soft);font-size:14px}
.lw-bar .lw-btn{background:var(--navy);color:#fff;border-radius:999px;padding:8px 14px;font-weight:600;font-size:14px;white-space:nowrap}
.lw-bar.rest{border-left-color:var(--sky)}
.lw-bar.rest .lw-btn{background:var(--sea);color:var(--navy-ink)}
.lw-q{display:grid;gap:14px;max-width:640px}
.lw-top{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:baseline}
.lw-word{font-size:34px;font-weight:700;color:var(--navy);line-height:1.2}
/* Vaak fout: groot voor het digibord */
.fout.big .tbl{font-size:20px}
.fout.big .tbl .small{font-size:15px}

/* Matching: tik-en-koppel */
.match-row[data-act="mrow"]{cursor:pointer;border-radius:10px;padding-left:6px;padding-right:4px}
.match-row.on{background:#e6effc;box-shadow:inset 0 0 0 2px #2d6cdf}
.right-list.pick li{cursor:pointer;transition:opacity .15s}
.right-list.pick li:hover,.right-list.pick li:focus-visible{outline:2px solid #2d6cdf;outline-offset:1px}
.right-list.pick li.used{opacity:.45}
@media (max-width:640px){
  .right-list.pick{position:sticky;bottom:0;z-index:5;display:flex;flex-wrap:wrap;gap:6px;background:var(--card,#fff);padding:10px 0 calc(10px + env(safe-area-inset-bottom,0px));box-shadow:0 -8px 12px -8px rgba(18,58,99,.25)}
  .right-list.pick li{padding:6px 10px;gap:6px;font-size:14px}
}

/* Op slot-werkboeken op de telefoon samenvatten tot één regel */
.wb-locked{display:none;margin:8px 0 0;font-size:13px;color:var(--muted,#5a6b80);padding:10px 14px;border-radius:12px;background:rgba(255,255,255,.55)}
@media (max-width:640px){.wbs .wb.locked{display:none}.wb-locked{display:block}}
