/* Leerlingdashboard: gegenereerd uit het concept (gedeeld, dash, leerling, compact: zelfde volgorde als het concept). */
@font-face{font-family:"Bricolage Grotesque";src:url(/beheer/fonts/bricolage-700.ttf) format("truetype");font-weight:700;font-display:swap}
@font-face{font-family:"Manrope";src:url(/beheer/fonts/manrope-var.ttf) format("truetype");font-weight:200 800;font-display:swap}
@font-face{font-family:Geist;src:url(/concepten/fonts/geist-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:Geist;src:url(/concepten/fonts/geist-500.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:Geist;src:url(/concepten/fonts/geist-600.woff2) format("woff2");font-weight:600 800;font-display:swap}
:root{--ink:#112e4a;--coral:#bb421f;--pale:#eaf2f8;--line:#cedae5;--quiet:#526b80;--navy:#0f2238;--ok:#1f6b4a}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.55 Inter,system-ui,sans-serif;color:var(--ink);background:#f0f5f9}
a{color:inherit}h1,h2,h3,p{margin:0}h1{font-size:28px;line-height:1.2;letter-spacing:-.6px}h2{font-size:20px;line-height:1.3}h3{font-size:17px}
button,.btn{font:inherit;font-weight:600;min-height:44px;border:1px solid var(--line);border-radius:8px;padding:8px 18px;background:var(--card);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;gap:8px}
button:hover,.btn:hover{background:var(--pale)}
.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.primary:hover{background:#244a6d}
.coral{background:var(--coral);color:#fff;border-color:var(--coral)}.coral:hover{background:#9c3516}
:focus-visible{outline:3px solid #d9562f;outline-offset:3px}
input,select{font:inherit;width:100%;min-height:44px;border:1px solid #8fa9bc;border-radius:7px;padding:10px 12px;background:var(--card);color:var(--ink)}
.brand{font-size:22px;font-weight:800;letter-spacing:-1px}.brand em{font-style:normal;color:var(--coral)}
.top{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 24px;background:var(--card);border-bottom:1px solid var(--line)}
.top .who{margin-left:auto;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.top nav{display:flex;gap:6px;flex-wrap:wrap}.top nav a,.top nav button{min-height:44px;border:0;background:none;padding:8px 14px;border-radius:8px;text-decoration:none;font-weight:600}
.top nav [aria-current=page]{background:var(--pale);box-shadow:inset 0 -3px 0 var(--coral)}
.wrap{max-width:1100px;margin:0 auto;padding:28px 24px 56px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:22px}
.muted{color:var(--quiet)}.head{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:22px}.head p{margin-top:6px;color:var(--quiet)}
.field{display:block;margin-bottom:16px;font-weight:600;font-size:14px}.field input,.field select{margin-top:6px;font-weight:400}
.err{color:#a33b24;background:#fff3ed;border-left:3px solid var(--coral);padding:10px 12px;margin:0 0 14px}.err:empty{display:none}
.login{max-width:440px;margin:48px auto}.login h1{margin:18px 0 8px}.login p{color:var(--quiet);margin-bottom:20px}
.hint{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:14px;color:var(--quiet)}
table{width:100%;border-collapse:collapse}th{text-align:left;font-weight:500;font-size:14px;color:var(--quiet);padding:10px 8px;border-bottom:1px solid var(--line)}td{padding:12px 8px;border-bottom:1px solid #e4ebf1}td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
.bar{height:8px;background:#e4ebf1;border-radius:99px;overflow:hidden;min-width:80px}.bar i{display:block;height:100%;background:var(--ink)}.bar i.low{background:var(--coral)}
.tag{display:inline-block;font-size:14px;padding:2px 10px;border-radius:99px;background:var(--pale);color:#244a6d}.tag.todo{background:#fff3ed;color:#8a3014}
dialog{border:0;border-radius:14px;padding:26px;max-width:480px;width:calc(100% - 32px);box-shadow:0 20px 60px rgba(15,34,56,.35)}dialog::backdrop{background:rgba(15,34,56,.55)}
dialog .row{display:flex;gap:10px;justify-content:flex-end;margin-top:8px;flex-wrap:wrap}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--navy-solid);color:#fff;padding:12px 18px;border-radius:8px;z-index:50}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
@media(max-width:700px){.top{padding:10px 16px}.wrap{padding:20px 16px 48px}h1{font-size:24px}.top .who{margin-left:0;width:100%}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ===== Vormgeving uit ReactVibe (reactvibe.com): rustig, wit, één accent. ===== */


:root{--r:10px;--shadow:#0a1828}
body{font-family:Manrope,system-ui,sans-serif;background:#f6f8fb}
h1,h2,.brand{font-family:"Bricolage Grotesque",Manrope,system-ui,sans-serif;font-weight:700}
.card,dialog,button,.btn,input,select{border-radius:var(--r)}
.card{border-color:#e1e8ef}
/* Shadow Button */
.primary,.coral{box-shadow:3px 3px 0 var(--shadow);transition:transform .12s,box-shadow .12s}
.primary:hover,.coral:hover{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--shadow)}
.primary:active,.coral:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--shadow)}
/* Glow: zacht licht rond een kaart bij aanwijzen */
.glow{transition:box-shadow .2s,border-color .2s}
.glow:hover{border-color:#e8a28b;box-shadow:0 0 0 3px rgba(217,86,47,.10),0 10px 28px -14px rgba(217,86,47,.55)}
/* Linear Reveal: onderdelen schuiven één voor één omhoog */
@keyframes rv{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.reveal{animation:rv .5s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i,0)*55ms)}
/* Pulse Ping: een stip die laat zien dat de Klasquiz klaarstaat */
.ping{position:relative}
.ping::before{content:"";width:9px;height:9px;border-radius:50%;background:#fff;margin-right:2px;flex:none;box-shadow:0 0 0 0 rgba(255,255,255,.7);animation:pg 1.8s ease-out infinite}
@keyframes pg{0%{box-shadow:0 0 0 0 rgba(255,255,255,.7)}80%,100%{box-shadow:0 0 0 9px rgba(255,255,255,0)}}
/* Orbit Border: licht dat langs de rand van de hoofdkeuze loopt */
@property --a{syntax:"<angle>";initial-value:0deg;inherits:false}
.orbit{position:relative}
.orbit::after{content:"";position:absolute;inset:-3px;border-radius:calc(var(--r) + 3px);padding:3px;background:conic-gradient(from var(--a),transparent 0 70%,#ffb597 90%,transparent);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:ob 4s linear infinite;pointer-events:none}
@keyframes ob{to{--a:360deg}}
/* Spotlight Grid: raster met een lichtvlek die de muis volgt (alleen op het inlogscherm) */
.spot{position:relative;background-image:linear-gradient(#dfe7ef 1px,transparent 1px),linear-gradient(90deg,#dfe7ef 1px,transparent 1px);background-size:36px 36px;min-height:100vh}
.spot::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(260px circle at var(--mx,50%) var(--my,30%),rgba(246,248,251,0),#f6f8fb 85%)}
.spot>*{position:relative}
/* Separator */
.sep{height:1px;background:linear-gradient(90deg,transparent,#cfdae5 20%,#cfdae5 80%,transparent);border:0;margin:20px 0}

/* ===== Uitleg: nummers op het scherm + lijst ernaast ===== */
.ubtn[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}
.u-badge{position:absolute;left:-10px;top:-10px;min-width:24px;height:24px;padding:0 6px;border-radius:99px;background:var(--coral);color:#fff;font:700 13px/24px Manrope,sans-serif;text-align:center;box-shadow:0 0 0 3px #fff;z-index:30;pointer-events:none}
.uitleg-aan [data-u]{outline:2px dashed var(--coral);outline-offset:3px}
[data-u].u-flash{outline:3px solid var(--coral)!important;outline-offset:4px}
.upanel{position:fixed;right:16px;bottom:16px;width:min(380px,calc(100% - 32px));max-height:min(70vh,560px);overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 50px -12px rgba(15,34,56,.45);z-index:40;padding:16px}
.upanel h2{font-size:18px;margin-bottom:4px}.upanel>p{font-size:14px;color:var(--quiet);margin-bottom:12px}
.upanel ol{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.upanel li button{width:100%;text-align:left;display:block;border-radius:10px;padding:10px 12px;min-height:44px;font-weight:400}
.upanel li b{display:flex;gap:8px;align-items:center;font-weight:700}
.upanel li b i{font-style:normal;background:var(--coral);color:#fff;border-radius:99px;min-width:22px;height:22px;display:inline-grid;place-items:center;font-size:12px}
.upanel li span{display:block;margin:2px 0 0 30px;font-size:14px;color:var(--quiet)}
.upanel li span.heen{color:var(--ink)}.upanel li span.heen::before{content:"Gaat naar: ";font-weight:700}
.upanel .vorm{font-size:14px;color:var(--quiet);margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.upanel .vorm b{color:var(--ink)}
@media(prefers-reduced-motion:reduce){.reveal,.ping::before,.orbit::after{animation:none!important}.primary,.coral{transition:none}}
/* Uitlegpaneel staat naast de inhoud, niet erover */
@media(min-width:1000px){.uitleg-aan #app{margin-right:404px}.uitleg-aan .upanel{top:76px;bottom:16px;max-height:none}}

/* Pijl van de uitleg naar het onderdeel */
.u-arrows{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:45;overflow:visible}
.upanel{z-index:46}
.upanel .unav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;position:sticky;top:-16px;background:var(--card);padding:8px 0;z-index:2}
.upanel .unav button{min-height:44px;padding:6px 14px}.upanel .unav span{font-weight:700;color:var(--quiet);font-size:14px}
.upanel li button.on{border-color:var(--coral);box-shadow:0 0 0 2px rgba(187,66,31,.18);background:#fff8f5}

/* Dashboards (docent en beheer). Vormgeving: rustige, even grote tegels. Effecten uit ReactVibe (reactvibe.com),
   met de waarden uit hun broncode: Linear Reveal, Shadow Button, Orbit Border, Glow, Spotlight Grid, Motion Switch, Pulse Ping. */



:root{--ink:#10243b;--tile:#f2f4f8;--quiet:#4a5d73;--navy:#123a63;--coral:#bb421f;--ok:#1d7a4f;--line:#dfe6ee;--th:256px;--gap:16px}
body{font-family:Geist,Manrope,system-ui,sans-serif;background:var(--card);color:var(--ink)}
h1,h2,h3,.brand{font-family:Geist,system-ui,sans-serif}
.top{background:var(--card);border-bottom:1px solid var(--line);padding:10px 28px;gap:18px}
.brand{display:flex;flex-direction:column;line-height:1;font-size:22px}.brand small{font:400 11px Geist,sans-serif;color:var(--quiet);margin-top:3px}
.top nav a{text-decoration:none;border-radius:999px;padding:8px 16px;min-height:44px;display:inline-flex;align-items:center;color:var(--quiet);font-weight:600}
.top nav a[aria-current=page]{background:var(--navy-solid);color:#fff;box-shadow:none}
.dwrap{max-width:1180px;margin:0 auto;padding:26px 28px 64px}
.back{display:inline-flex;align-items:center;min-height:44px;color:var(--quiet);text-decoration:none;font-weight:600;margin-bottom:6px}

/* ---- Shadow Button (ReactVibe): donkere verloop-knop met binnenschaduw, hover groter ---- */
button.primary,.btn.primary{background:linear-gradient(180deg,#0A0F1F 0%,#000511 55%,#00030A 100%);color:#fff;border:1px solid rgba(250,250,250,.28);border-radius:8px;box-shadow:0 24px 48px rgba(0,0,0,.45),inset 7px 7px 31px rgba(164,175,197,.35),inset 2px 2px 20px rgba(160,165,178,.25);transition:transform .15s ease-in-out}
button.primary:hover,.btn.primary:hover{transform:scale(1.1);background:linear-gradient(180deg,#0A0F1F 0%,#000511 55%,#00030A 100%)}
button.primary:active,.btn.primary:active{transform:scale(1.02)}
.btn.coral{background:linear-gradient(180deg,#d9562f 0%,#bb421f 55%,#9c3516 100%);color:#fff;border:1px solid rgba(250,250,250,.3);box-shadow:0 24px 48px rgba(0,0,0,.25),inset 7px 7px 31px rgba(255,255,255,.28),inset 2px 2px 20px rgba(255,255,255,.2);transition:transform .15s ease-in-out}.btn.coral:hover{transform:scale(1.1)}

/* ---- Hero ---- */
.hero{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.badge{width:96px;height:96px;border-radius:24px;background:var(--navy-solid);display:grid;place-items:center;flex:none}.badge svg{width:46px;height:46px;stroke:#fff;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.hero h1{font-size:40px;line-height:1.1;letter-spacing:-1px;margin:0 0 10px;font-weight:700}
.pill{display:inline-block;background:var(--tile);border-radius:16px;padding:12px 18px;text-decoration:none;font-size:17px;min-height:44px}.pill b{color:var(--coral)}
/* ---- Linear Reveal (ReactVibe): elke letter schuift omhoog, 0.05s na de vorige ---- */
.lr span{display:inline-block;animation:lr .4s cubic-bezier(.4,0,.2,1) both;animation-delay:calc(var(--c)*50ms)}
@keyframes lr{from{opacity:0;transform:translateY(10px);filter:blur(8px)}to{opacity:1;transform:none;filter:blur(0)}}

/* ---- Tegels: allemaal even groot ---- */
.sec{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin:32px 0 14px}
.sec h2{font-size:24px;font-weight:600;color:var(--quiet);margin:0}.sec small{font-size:20px;color:var(--quiet);font-weight:400}.sec .grow{flex:1}
.tiles{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--gap)}
.tile{position:relative;overflow:hidden;box-sizing:border-box;height:var(--th);min-width:0;background:var(--tile);border-radius:22px;padding:20px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:8px;color:inherit;text-decoration:none;text-align:left;font:inherit;border:1px solid transparent;border-color:transparent}
a.tile,button.tile{cursor:pointer}
/* Glow (ReactVibe): zacht licht dat de muis volgt, plus een lichte rand-gloed */
.tile::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .25s;background:radial-gradient(180px circle at var(--mx,50%) var(--my,50%),rgba(217,86,47,.13),transparent 70%)}
.tile::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .25s;border:1.5px solid transparent;background:radial-gradient(160px circle at var(--mx,50%) var(--my,50%),rgba(217,86,47,.55),transparent 65%) border-box;-webkit-mask:linear-gradient(#000 0 0) padding-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
a.tile:hover::before,button.tile:hover::before,a.tile:hover::after,button.tile:hover::after,.tile.glowon::before,.tile.glowon::after{opacity:1}
.tile>*{position:relative;z-index:1}
/* Kerncijfer */
.kpi .lab{color:var(--quiet);font-size:16px}.kpi b{display:block;font-size:52px;line-height:1;font-weight:700;letter-spacing:-1.5px;font-variant-numeric:tabular-nums;margin-top:auto}.kpi .cap{color:var(--quiet);font-size:15px}.kpi.warn b{color:var(--coral)}
/* Klas */
.kt{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:600}.dot{width:13px;height:13px;border-radius:50%;background:var(--c);flex:none}
.kmid{display:flex;align-items:center;gap:14px;margin:4px 0}.ring{display:block;width:76px;height:76px;flex:none}.ring text{font:700 19px Geist,sans-serif;fill:var(--ink)}.ring .u{font-size:12px;font-weight:500}
.kstat{display:grid;gap:2px;font-size:15px;color:var(--quiet);min-width:0}.kstat b{color:var(--ink);font-weight:600}
.on{color:var(--ok);font-weight:600}.off{color:var(--quiet)}.let{color:var(--coral);font-weight:600}
.th{margin-top:auto;font-size:15px;font-weight:600;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.klas:hover,.klas:focus-visible{border-color:var(--c)}
/* Snel naar en toevoegen */
.q>i:first-child{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;flex:none}.q>i:first-child svg{width:28px;height:28px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.q b{display:block;font-size:20px;font-weight:600;margin-top:auto}.q span{color:var(--quiet);font-size:15px}
.q:hover{border-color:#b9c6d6}
.add{background:var(--card);border:2px dashed #b4c2d2;align-items:center;justify-content:center;text-align:center;color:var(--quiet);font-weight:600;font-size:18px}.add svg{width:32px;height:32px;stroke:var(--quiet);fill:none;stroke-width:2;stroke-linecap:round}.add:hover{border-color:var(--navy);color:var(--navy)}
/* ---- Orbit Border (ReactVibe): draaiend verloop rond de hoofdkeuze, hover 1.05, klik .95 ---- */
@property --a{syntax:"<angle>";initial-value:0deg;inherits:false}
.orbit{box-sizing:border-box;height:var(--th);min-width:0;padding:3px;border-radius:25px;background:linear-gradient(var(--a),#d9562f,#ffffff,#f5d9cc,#cfe0f5);animation:ob 8s linear infinite;transition:transform .2s}
.orbit:hover{transform:scale(1.05)}.orbit:active{transform:scale(.95)}
@keyframes ob{to{--a:360deg}}
.orbit .tile{height:100%;border-radius:22px;background:#0f2a4a;color:#fff}.orbit .tile .lab2{display:flex;align-items:center;gap:8px;letter-spacing:.12em;font-size:12px;font-weight:700;color:#b9c8d6;text-transform:uppercase}
.orbit .tile b{color:#fff}.orbit .tile span{color:#d4deea}.orbit .tile>i:first-child{background:#d9562f}
.orbit .tile::before{background:radial-gradient(180px circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.12),transparent 70%)}
/* ---- Pulse Ping (ReactVibe): stip die laat zien dat er iets gebeurt ---- */
.pingdot{position:relative;display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--ok);margin-right:6px}
.pingdot::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--ok);animation:pg 1.8s ease-out infinite}
@keyframes pg{0%{transform:scale(1);opacity:.7}80%,100%{transform:scale(3);opacity:0}}
.lab2 .pingdot{background:#ff9a78;margin:0}.lab2 .pingdot::after{background:#ff9a78}
/* ---- Motion Switch (ReactVibe): schuifknop met veerbeweging ---- */
.sw{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0;border:0;background:none;font:inherit;font-weight:600;color:var(--ink);cursor:pointer}
.sw .tr{position:relative;display:block;width:56px;height:32px;border-radius:999px;background:#E5E7EB;transition:background-color .25s}
.sw .dt{position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:#323232;transition:left .5s cubic-bezier(.34,1.56,.64,1),background-color .25s}
.sw[aria-checked=true] .tr{background:#323232}.sw[aria-checked=true] .dt{left:28px;background:#fff}
.sw:focus-visible{outline:3px solid #d9562f;outline-offset:3px;border-radius:8px}
/* ---- Spotlight Grid (ReactVibe): stippenraster, bij de muis grotere stippen ---- */
.sg{position:relative;min-height:100vh;overflow:hidden;background:var(--card)}
.sg .l1{position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(rgba(0,0,0,.15) 1px,transparent 1px);background-size:22px 22px;-webkit-mask-image:radial-gradient(ellipse 50% 50% at 50% 50%,#000 60%,transparent 100%);mask-image:radial-gradient(ellipse 50% 50% at 50% 50%,#000 60%,transparent 100%)}
.sg .l2{position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(rgba(0,0,0,.5) 2px,transparent 2px);background-size:22px 22px;-webkit-mask-image:radial-gradient(circle 180px at var(--mx,50%) var(--my,40%),#000 0%,transparent 100%);mask-image:radial-gradient(circle 180px at var(--mx,50%) var(--my,40%),#000 0%,transparent 100%)}
.sg>main{position:relative;z-index:1}

/* ---- Klasdetail ---- */
.khead{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--tile);border-radius:22px;padding:22px 26px;border-left:8px solid var(--c)}
.khead h1{font-size:34px;margin:0;letter-spacing:-.8px}.khead p{margin:4px 0 0;color:var(--quiet);font-size:17px}
.acts{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.tabs{display:flex;gap:6px;margin:22px 0 14px;border-bottom:1px solid var(--line)}
.tabs a{display:inline-flex;align-items:center;min-height:44px;padding:8px 18px;text-decoration:none;font-weight:600;color:var(--quiet);border-radius:10px 10px 0 0}.tabs a[aria-current=page]{color:var(--ink);box-shadow:inset 0 -3px 0 var(--coral)}
.tool{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.tool p{margin:0;color:var(--quiet);flex:1 1 260px}
.cred{font-family:ui-monospace,Menlo,monospace;font-size:16px;font-weight:600}
.btn.sm,button.sm{min-height:44px;padding:6px 14px;font-size:15px}
/* ---- Beheer ---- */
.av{width:52px;height:52px;border-radius:50%;background:var(--navy-solid);color:#fff;display:grid;place-items:center;font-weight:700;font-size:22px;flex:none}
.tcard .who2{display:flex;gap:12px;align-items:center;min-width:0}.tcard .who2>div{min-width:0}.tcard b.n{font-size:19px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tcard small{color:var(--quiet);font-size:15px;display:block}
.tcard.off .av{background:#8fa0b3}.tcard.new .av{background:var(--card);color:var(--quiet);border:2px dashed #aebccb}
.tcard .meta{color:var(--quiet);font-size:15px}
.tcard .bot{margin-top:auto;display:grid;gap:6px}
.tag{font-size:14px;font-weight:600;border-radius:99px;padding:2px 12px;background:#e1ecf7;color:#1c4e82;align-self:flex-start;display:inline-block}.tag.todo{background:#fff1e8;color:#9a3714}
.ktable{background:var(--tile);border-radius:22px;padding:8px 10px;overflow:hidden}.ktable table{width:100%}.ktable td,.ktable th{padding:12px}.ktable tr:last-child td{border-bottom:0}.ktable select{min-height:44px;min-width:180px;background:var(--card)}
.viewas{background:#fff1e8;border-bottom:1px solid #f1cdb8;padding:10px 28px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}.viewas a{font-weight:600}
.guard{max-width:560px;margin:60px auto;text-align:center}.printcards{display:none}
@media(max-width:1100px){.tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.dwrap{padding:18px 16px 56px}.top{padding:10px 16px}.hero h1{font-size:30px}.badge{width:72px;height:72px}.badge svg{width:34px;height:34px}.kpi b{font-size:42px}.tiles{grid-template-columns:repeat(2,minmax(0,1fr));--gap:12px;--th:236px}.ktable thead{display:none}.ktable tr{display:grid;gap:4px;padding:10px 6px;border-bottom:1px solid #dde3ec}.ktable td{border:0;padding:2px 6px}.viewas{padding:10px 16px}.tile{padding:16px}}
@media(max-width:420px){.tiles{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.lr span,.orbit,.pingdot::after{animation:none!important}.sw .dt,.sw .tr,.tile::before,.tile::after,button.primary,.btn.primary,.btn.coral,.orbit{transition:none!important}}
@media print{body *{visibility:hidden}.printcards,.printcards *{visibility:visible}.printcards{display:grid;grid-template-columns:1fr 1fr;gap:10mm;position:absolute;left:0;top:0;width:100%}.pcard{border:1.5px dashed #444;border-radius:8px;padding:8mm;break-inside:avoid;font:14pt Geist,sans-serif}.pcard b{display:block;font-size:12pt;color:#555;font-weight:500}.pcard .v{font:700 17pt ui-monospace,Menlo,monospace;margin-bottom:5mm}}

/* Knoppen in een tegel: zelfde verloop, lichtere schaduw en passen in de tegel */
.tile button,.tile a.btn{width:100%;padding:8px 10px;font-size:15px;white-space:nowrap}
.tile button.primary{box-shadow:0 8px 18px rgba(0,0,0,.28),inset 7px 7px 31px rgba(164,175,197,.35),inset 2px 2px 20px rgba(160,165,178,.25)}
.tile button.primary:hover{transform:scale(1.04)}
.tile .sw{width:auto}
.kstat2{font-size:15px;color:var(--quiet)}.kstat2 b{color:var(--ink);font-weight:600}
.tcard .meta{line-height:1.35}

/* ===== Ronde 7: rijker en compacter, 3D-avatars terug ===== */
.av3d{display:block;position:relative;width:112px;height:112px;border-radius:26px;background:linear-gradient(160deg,#eef1f6,#dfe5ee);overflow:hidden;flex:none}
.av3d canvas{display:block;width:100%;height:100%}
.av3d.nogl{background:var(--navy-solid);display:grid;place-items:center}.av3d.nogl svg{width:48px;height:48px;stroke:#fff;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.hero{gap:22px}.hero .av3d{width:120px;height:120px}
.hero-in{display:flex;flex-direction:column;gap:10px;min-width:0}
.tiles.s{--th:136px}.tiles.m{--th:262px}
.tiles.s .kpi{padding:16px 18px;gap:2px}.tiles.s .kpi .lab{font-size:15px}.tiles.s .kpi b{font-size:42px;margin-top:auto}.tiles.s .kpi .cap{font-size:14px}
.tiles.q6{grid-template-columns:repeat(6,minmax(0,1fr))}
.tiles.q6>.eb-wrap,.tiles.q6>.orbit{grid-column:span 2}
.tile.qr{flex-direction:row;align-items:center;gap:14px;padding:16px 18px}
.tile.qr>i:first-child{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;flex:none}.tile.qr>i:first-child svg{width:26px;height:26px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tile.qr .tx{display:flex;flex-direction:column;gap:2px;min-width:0}.tile.qr .tx b{font-size:18px;font-weight:600;margin:0;line-height:1.25}.tile.qr .tx span{color:var(--quiet);font-size:14px;line-height:1.35}
.orbit .tile.qr .tx b{color:#fff}.orbit .tile.qr .tx span{color:#d4deea}
.eb-img{width:92px;height:92px;flex:none;object-fit:contain}
.orbit .tile.qr{background:linear-gradient(120deg,#0e2f52,#123a63)}
.orbit .tile .lab2{margin-bottom:2px}
@media(max-width:1100px){.tiles.q6{grid-template-columns:repeat(3,minmax(0,1fr))}.tiles.q6>.orbit{grid-column:span 3}}
@media(max-width:700px){.tiles.q6{grid-template-columns:repeat(2,minmax(0,1fr))}.tiles.q6>.orbit{grid-column:span 2}.hero .av3d{width:88px;height:88px}.tiles.m{--th:250px}.tiles.s{--th:128px}}
@media(max-width:420px){.tiles.q6{grid-template-columns:minmax(0,1fr)}.tiles.q6>.orbit{grid-column:span 1}}
/* werk open of dicht */
.oc{display:grid;gap:14px}.ocard{background:var(--tile);border-radius:22px;padding:20px 22px}.ocard h3{font-size:20px;margin:0 0 4px}.ocard p{margin:0 0 12px;color:var(--quiet)}
.ogrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px 18px}.ogrid .sw{justify-content:flex-start}
/* eindbaas live */
.bossbox{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:20px;align-items:center;background:linear-gradient(120deg,#0e2f52,#123a63);color:#fff;border-radius:22px;padding:24px 28px}
.bossbox img{width:100%;max-width:240px}.bossbox h2{color:#fff;margin:0 0 6px;font-size:28px}.bossbox p{margin:0 0 12px;color:#d4deea}
.hp{height:18px;border-radius:99px;background:rgba(255,255,255,.18);overflow:hidden;margin:6px 0 4px}.hp i{display:block;height:100%;background:linear-gradient(90deg,#ff9a78,#d9562f);transition:width .6s}
.lvls{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.lvl{min-height:44px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);font-weight:700;cursor:pointer;padding:10px 0}.lvl[aria-pressed=true]{background:var(--navy-solid);color:#fff;border-color:var(--navy)}
@media(max-width:700px){.bossbox{grid-template-columns:1fr}.lvls{grid-template-columns:repeat(5,minmax(0,1fr))}}
.ph2{margin:6px 0 20px}.ph2 h1{font-size:34px;margin:0;letter-spacing:-.8px}.ph2 p{margin:4px 0 0;color:var(--quiet);max-width:70ch}
/* Snel naar: brede eindbaas-tegel met 4 tegels eronder */
.tiles.q6{grid-template-columns:repeat(4,minmax(0,1fr))}
.tiles.q6>.orbit{grid-column:1/-1}
.tiles.q6>.orbit .eb-img{width:88px;height:88px}
.tiles.q6>.orbit .tx b{font-size:24px}
@media(max-width:1100px){.tiles.q6{grid-template-columns:repeat(2,minmax(0,1fr))}.tiles.q6>.orbit{grid-column:1/-1}}
@media(max-width:700px){.tiles.q6{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.tiles.q6{grid-template-columns:minmax(0,1fr)}}

.ebsetup{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:20px;align-items:stretch}.ebsetup .card{align-self:start}
@media(max-width:800px){.ebsetup{grid-template-columns:1fr}}
/* Knoppen netjes: zelfde verloop, rustige schaduw */
button.primary,.btn.primary{box-shadow:0 6px 14px rgba(5,12,28,.22),inset 7px 7px 31px rgba(164,175,197,.35),inset 2px 2px 20px rgba(160,165,178,.25)}
.btn.coral{box-shadow:0 6px 14px rgba(120,40,10,.25),inset 7px 7px 31px rgba(255,255,255,.28),inset 2px 2px 20px rgba(255,255,255,.2)}
.tile button.primary,.result button.primary,.deckbar button.primary,.acts button.primary,.acts a.btn.primary{box-shadow:0 4px 10px rgba(5,12,28,.2),inset 7px 7px 31px rgba(164,175,197,.35),inset 2px 2px 20px rgba(160,165,178,.25)}

/* Leerlingportaal: zelfde tegels en effecten als de dashboards, met leerlingteksten. */
.chips{display:flex;gap:8px;align-items:center}
.chip{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:999px;background:var(--tile);font-weight:600;font-variant-numeric:tabular-nums}
.chip svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.chip.fire svg{stroke:#d9562f}.chip.xp svg{stroke:#1c4e82}
.kpi.t b{font-size:30px;letter-spacing:-.6px;line-height:1.1}.kpi .ico{position:absolute;right:18px;top:18px;width:30px;height:30px;stroke:var(--quiet);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.kpi .ico.fl{stroke:#d9562f}
.pbar{display:block;height:8px;border-radius:99px;background:#dbe2ec;overflow:hidden;width:100%;margin-top:4px}.pbar i{display:block;height:100%;border-radius:99px;background:var(--c,#123a63);transform-origin:left;animation:fill 1.1s cubic-bezier(.2,.7,.2,1) .4s both}
@keyframes fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.skill i.ic{background:var(--c)}
.tile.locked{background:#f7f8fa;border:1.5px dashed #c5cfdb;color:#6a7c90;cursor:not-allowed}.tile.locked b,.tile.locked span{color:#6a7c90}.tile.locked>i:first-child{background:#aeb9c6}
.tile.locked::before,.tile.locked::after{display:none}
.ext>i:first-child{background:#123a63}
.crumbs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:var(--quiet);margin-bottom:8px}.crumbs a{color:var(--quiet);text-decoration:none;font-weight:600;min-height:44px;display:inline-flex;align-items:center}
.ph{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:6px 0 18px}.ph h1{font-size:34px;margin:0;letter-spacing:-.8px}.ph p{margin:4px 0 0;color:var(--quiet);max-width:70ch}
.tile .big{font-size:44px;font-weight:700;line-height:1;margin-top:auto;letter-spacing:-1px;color:var(--c,var(--ink))}
.tile .tn{font-size:13px;font-weight:600;color:var(--quiet);text-transform:none}
.themed .tag{margin:0}
.donebadge{display:inline-flex;align-items:center;gap:6px;color:var(--ok);font-weight:600}.donebadge svg{width:18px;height:18px;stroke:var(--ok);fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.split{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px;align-items:start}
.panel{background:var(--tile);border-radius:22px;padding:22px}.panel h2{font-size:20px;margin:0 0 10px}.panel ul{margin:0;padding-left:20px;display:grid;gap:6px}
.words{width:100%}.words td{padding:10px 8px;border-bottom:1px solid #dde3ec}.words td:first-child{font-weight:600}
.exq{display:grid;gap:14px}.item{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 18px;display:grid;gap:10px}
.item .q{font-size:18px;line-height:1.45}.item mark{background:#fff1e8;color:#9a3714;border-radius:6px;padding:0 6px;font-weight:600}
.item input[type=text],.item textarea,.item select{width:100%;min-height:44px;border:1px solid #8fa9bc;border-radius:10px;padding:10px 12px;font:inherit}
.item.ok{border-color:#1d7a4f;background:#f2faf5}.item.bad{border-color:#d9562f;background:#fff8f4}
.item .fb{font-weight:600;font-size:15px}.item.ok .fb{color:var(--ok)}.item.bad .fb{color:var(--coral)}
.opts{display:grid;gap:8px}.opt{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--card)}.opt:hover{border-color:#8fa9bc}.opt input{width:20px;height:20px;accent-color:#123a63}
.result{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--tile);border-radius:22px;padding:20px 24px;margin-top:6px}.result b{font-size:24px}
.choices{display:flex;gap:8px;flex-wrap:wrap}.choices span{background:var(--tile);border-radius:999px;padding:4px 12px;font-weight:600}
/* flashcards */
.deck{display:grid;gap:16px;justify-items:center;margin-top:8px}
.card3{width:min(520px,100%);height:260px;perspective:1000px;cursor:pointer;border:0;background:none;padding:0;font:inherit;color:inherit;min-height:44px}
.card3 .in{position:relative;width:100%;height:100%;transition:transform .6s cubic-bezier(.34,1.2,.64,1);transform-style:preserve-3d}
.card3.flip .in{transform:rotateY(180deg)}
.card3 .f,.card3 .b{position:absolute;inset:0;border-radius:22px;display:grid;place-content:center;text-align:center;backface-visibility:hidden;background:var(--tile);border:1px solid var(--line);font-size:34px;font-weight:700;padding:20px}
.card3 .b{transform:rotateY(180deg);background:#0f2a4a;color:#fff;border-color:#0f2a4a}
.card3 small{display:block;font-size:14px;font-weight:500;color:var(--quiet);margin-top:8px}.card3 .b small{color:#b9c8d6}
.deckbar{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;align-items:center}
/* ranglijst */
.ladder{display:grid;gap:10px}.rung{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:14px;align-items:center;background:var(--tile);border-radius:18px;padding:14px 18px}.rung.on{outline:2px solid var(--coral);background:#fff8f5}.rung.past{opacity:.7}
.rung .mk{width:48px;height:48px;border-radius:50%;background:var(--navy-solid);display:grid;place-items:center;color:#fff;font-weight:700}.rung.future .mk{background:#aeb9c6}
.msg{max-width:520px;margin:30px auto;text-align:center}
@media(max-width:900px){.split{grid-template-columns:1fr}}
@media(max-width:700px){.chip.hide{display:none}.ph h1{font-size:26px}.card3{height:220px}.card3 .f,.card3 .b{font-size:28px}}
@media(prefers-reduced-motion:reduce){.pbar i,.card3 .in{animation:none!important;transition:none!important}}
.result button.primary{box-shadow:0 8px 18px rgba(0,0,0,.28),inset 7px 7px 31px rgba(164,175,197,.35),inset 2px 2px 20px rgba(160,165,178,.25)}
.deckbar button.primary,.acts button.primary,.acts a.btn.primary{box-shadow:0 8px 18px rgba(0,0,0,.28),inset 7px 7px 31px rgba(164,175,197,.35),inset 2px 2px 20px rgba(160,165,178,.25)}

/* ===== Ronde 7: Files-startpagina (klas 1 t/m 3), eindbaas-melding, memory ===== */
.fh1{font-size:40px;letter-spacing:-1px;margin:0 0 18px;font-weight:700}
.fh-top{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:16px;align-items:stretch}
.fh-go{height:auto!important;min-height:170px}
.fh-card{display:flex;flex-direction:row!important;align-items:center!important;justify-content:space-between;gap:20px;height:100%;background:linear-gradient(120deg,#0e2f52,#123a63)!important;color:#fff;padding:26px 30px}
.fh-card span{display:flex;flex-direction:column;gap:4px;min-width:0}.fh-card b{font-size:30px;line-height:1.15;color:#fff}.fh-card small{color:#b9c8d6;font-size:16px}
.orbit.fh-go .tile::before,.orbit.fh-go .tile::after{display:none}
.fh-me{display:flex;gap:20px;align-items:center;border-radius:22px}.fh-me .nm{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fh-me .nm b{font-size:22px}
.fh-me .av3d.big{width:138px;height:138px}.fh-me .lnk{display:inline-block;margin-top:6px;font-weight:600;color:var(--navy);min-height:44px;line-height:44px}
.fh-me>div{min-width:0;flex:1}
.fh-streak{margin-top:16px;display:grid;grid-template-columns:auto auto 1fr auto;gap:24px;align-items:center;border-radius:22px}
.fh-streak .fl svg{width:46px;height:46px;stroke:#d9562f;fill:#ffd9c9;stroke-width:1.6}
.fh-streak .sk{display:flex;flex-direction:column;line-height:1.1}.fh-streak .sk b{font-size:52px;letter-spacing:-1.5px}.fh-streak .sk span{font-size:20px;font-weight:600;color:var(--quiet)}
.fh-streak .wd{display:flex;gap:10px}.fh-streak .wd i{width:26px;height:40px;border-radius:8px;background:#dbe2ec}.fh-streak .wd i.on{background:#123a63}
.fh-streak .wl{display:flex;gap:10px;margin-top:4px}.fh-streak .wl span{width:26px;text-align:center;font-size:14px;color:var(--quiet)}.fh-streak small{display:block;margin-top:6px;color:var(--quiet)}
.fh-streak .sv{display:flex;align-items:center;gap:12px;background:#e4eaf2;border-radius:16px;padding:14px 18px;max-width:280px}.fh-streak .sv svg{width:30px;height:30px;stroke:#7f93a8;fill:none;stroke-width:1.8;flex:none}
.tiles.f{--th:132px;grid-template-columns:repeat(4,minmax(0,1fr))}
.tiles.f3{--th:112px;grid-template-columns:repeat(3,minmax(0,1fr))}
.tiles.f5{--th:176px;grid-template-columns:repeat(5,minmax(0,1fr))}
.tile.file{flex-direction:row;align-items:center;gap:14px;padding:16px 18px}
.tile.file .no{width:50px;height:50px;border-radius:50%;background:var(--card);border:1.5px solid var(--line);display:grid;place-items:center;font-weight:700;font-size:18px;flex:none;color:var(--ink)}
.tile.file.now{background:var(--card);border-color:var(--c)}.tile.file.now .no{background:var(--c);color:#fff;border-color:var(--c)}
.tile.file .tx{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.tile.file .tx b{font-size:19px;font-weight:600;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile.file .tx span{color:var(--quiet);font-size:14px}.tile.file .nu{color:var(--coral);font-weight:700;font-size:13px}
.tile.file.locked{background:#f7f8fa;border:1.5px dashed #c5cfdb;cursor:not-allowed}.tile.file.locked .no{background:#eef1f5;color:#8a9bb0}.tile.file.locked b,.tile.file.locked .tx span{color:#8a9bb0}
.tile.file .pbar{margin-top:2px}.tile.file .tn{font-size:13px}
.wl2{margin:8px 0 0}.wl2 summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600;color:var(--quiet)}
.bossban{display:flex;align-items:center;gap:18px;margin:0 0 18px;padding:14px 20px;border-radius:22px;background:linear-gradient(120deg,#0e2f52,#123a63);color:#fff;text-decoration:none}
.bossban img{width:68px;height:68px;flex:none}.bossban>span:nth-child(2){flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.bossban small{display:flex;align-items:center;gap:8px;letter-spacing:.12em;text-transform:uppercase;font-size:12px;font-weight:700;color:#b9c8d6}.bossban b{font-size:22px}
.bossban .hp{margin:4px 0 0;max-width:360px}.bossban .pingdot{background:#ff9a78}.bossban .pingdot::after{background:#ff9a78}
.memgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;max-width:640px}
.mcard{min-height:92px;border-radius:16px;border:1.5px solid var(--line);background:var(--card);font:inherit;font-weight:700;font-size:18px;cursor:pointer;padding:8px;color:var(--ink)}.mcard:hover{border-color:#8fa9bc}.mcard.up{background:#0f2a4a;color:#fff;border-color:#0f2a4a}.mcard.found{background:#e0f2e8;color:#124d32;border-color:#1d7a4f}
.opt.bo{width:100%;font:inherit;font-weight:600}
@media(max-width:1100px){.fh-top{grid-template-columns:1fr}.tiles.f{grid-template-columns:repeat(2,minmax(0,1fr))}.tiles.f5{grid-template-columns:repeat(3,minmax(0,1fr))}.fh-streak{grid-template-columns:auto 1fr}.fh-streak .wk,.fh-streak .sv{grid-column:1/-1}}
@media(max-width:700px){.fh1{font-size:30px}.tiles.f3{grid-template-columns:minmax(0,1fr)}.tiles.f5{grid-template-columns:repeat(2,minmax(0,1fr))}.fh-card{flex-direction:column!important;align-items:flex-start!important}.fh-card b{font-size:24px}.fh-me .av3d.big{width:96px;height:96px}.memgrid{grid-template-columns:repeat(3,minmax(0,1fr))}.bossban{flex-wrap:wrap}}
@media(max-width:420px){.tiles.f{grid-template-columns:minmax(0,1fr)}.tiles.f5{grid-template-columns:minmax(0,1fr)}}
.tiles.s .kpi.t b{font-size:26px;letter-spacing:-.5px;line-height:1.15}

/* ===== Ronde 8: compact, één scherm, donkere modus, selecteerbare tegels ===== */
:root{--bg:#fff;--card:#fff;--tile:#f2f4f8;--ink:#10243b;--quiet:#4a5d73;--line:#dfe6ee;--pale:#eaf2f8;--navy:#123a63;--navy-solid:#123a63;--hover:#e6edf5;--field:#fff;--gap:12px;--r:16px;--ok:#1d7a4f;--coral:#bb421f;--tint-warn:#fff1e8;--tint-warn-ink:#9a3714;--tint-ok:#e0f2e8;--tint-ok-ink:#124d32;--tint-bad:#fff8f4;--tint-blue:#e1ecf7;--tint-blue-ink:#1c4e82}
html[data-theme=dark]{color-scheme:dark;--bg:#0b1d30;--card:#10283f;--tile:#14304a;--ink:#eaf1f7;--quiet:#a9bed2;--line:#2c4a63;--pale:#1d3d58;--navy:#8ec1ee;--hover:#1c3b56;--field:#0f2740;--coral:#ff9a78;--ok:#5fd49a;--tint-warn:#3a2a22;--tint-warn-ink:#ffb99f;--tint-ok:#16372b;--tint-ok-ink:#8ee3b4;--tint-bad:#34221f;--tint-blue:#1e3b57;--tint-blue-ink:#a9d0f5}
html,body{background:var(--bg);color:var(--ink)}
body{font-size:15px;line-height:1.45}
.muted,small{color:var(--quiet)}
/* kleurvlakken en velden volgen het thema */
.card,.item,.opt,.mcard,.lvl,.add,.ktable select,dialog,.upanel,.upanel .unav,.top{background:var(--card);color:var(--ink)}
button,.btn{background:var(--card);color:var(--ink);border-color:var(--line)}
button:hover,.btn:hover{background:var(--hover)}
input,select,textarea{background:var(--field);color:var(--ink);border-color:var(--line)}
.tile{background:var(--tile);color:var(--ink)}
.tag{background:var(--tint-blue);color:var(--tint-blue-ink)}.tag.todo{background:var(--tint-warn);color:var(--tint-warn-ink)}
.item mark,.mcard.up{}.item mark{background:var(--tint-warn);color:var(--tint-warn-ink)}
.item.ok{background:var(--tint-ok);border-color:var(--ok)}.item.bad{background:var(--tint-bad);border-color:var(--coral)}
.err{background:var(--tint-warn);color:var(--tint-warn-ink)}
.viewas{background:var(--tint-warn);border-color:var(--line);color:var(--ink)}
.rung.on{background:var(--tint-warn)}.upanel li button.on{background:var(--tint-warn)}
.sg,.sg>main{background:var(--bg)}
.ptable td,.words td,td,th{border-color:var(--line)}
.card.login,.login{background:var(--card)}
.bar{background:var(--line)}.pbar{background:var(--line)}
.ring circle:first-child{stroke:var(--line)}.ring text{fill:var(--ink)}
.kcard,.hp{}
.tile.add{background:var(--card);border-color:var(--line)}
.tile.file .no{background:var(--card);border-color:var(--line)}
.tile.file.now{background:var(--card)}
.tile.locked,.tile.file.locked{background:var(--bg);border-color:var(--line);color:var(--quiet)}
.donebadge,.on{color:var(--ok)}
/* ---------- kop ---------- */
.top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:14px;flex-wrap:nowrap;padding:0 20px;min-height:56px;border-bottom:1px solid var(--line)}
.top .brand{font-size:20px}.top .brand small{font-size:12px;margin-top:2px}
.top nav{display:flex;gap:4px}.top nav a{min-height:36px;padding:0 14px;font-size:14px;border-radius:999px}
.top nav a[aria-current=page]{background:var(--navy-solid);color:#fff}
.who{margin-left:auto;display:flex;align-items:center;gap:6px;flex-wrap:nowrap}
.who>span{font-size:14px;color:var(--quiet);padding:0 6px;white-space:nowrap}
.who button,.who .ubtn{min-height:36px;padding:0 12px;font-size:14px;font-weight:600;border:1px solid transparent;background:transparent;color:var(--ink);border-radius:999px;display:inline-flex;align-items:center;gap:6px;box-shadow:none}
.who button:hover{background:var(--hover);transform:none}
.who button svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.who .ubtn[aria-pressed=true]{background:var(--navy-solid);color:#fff}
.who .sep2{width:1px;height:20px;background:var(--line);margin:0 4px}
.chips{display:flex;gap:6px}.chip{min-height:32px;padding:0 10px;font-size:14px}
.sw.sm{min-height:36px;gap:8px;font-size:14px;color:var(--quiet);padding:0 6px}
.sw.sm .tr{width:40px;height:22px}.sw.sm .dt{width:16px;height:16px;top:3px;left:3px}.sw.sm[aria-checked=true] .dt{left:21px}
.sw.sm .sl{font-weight:600}
/* ---------- compacte indeling ---------- */
.dwrap{max-width:1240px;padding:14px 24px 20px}
.hero{gap:14px;align-items:center}.hero .av3d,.av3d{width:72px;height:72px;border-radius:18px}.hero h1{font-size:26px;letter-spacing:-.5px;margin:0 0 6px}
.pill{padding:5px 12px;min-height:32px;line-height:22px;font-size:14px;border-radius:12px;display:inline-block}
.sec{margin:14px 0 8px;gap:10px}.sec h2{font-size:17px;font-weight:600}.sec small{font-size:14px}
.tiles{gap:var(--gap)}
.tile{padding:10px 14px;border-radius:14px;gap:2px;border:1.5px solid transparent;transition:border-color .15s,background-color .15s,transform .15s}
.tiles.s{--th:84px}.tiles.m{--th:96px}.tiles.g{--th:64px}.tiles.t{--th:116px}
.tiles.s,.tiles.m,.tiles.g,.tiles.t{grid-template-columns:repeat(5,minmax(0,1fr))}
.tiles.m4{grid-template-columns:repeat(4,minmax(0,1fr))}.tiles.g{grid-template-columns:repeat(5,minmax(0,1fr))}
/* selecteren: hover, toetsenbord, gekozen */
a.tile,button.tile,.tile[role=button]{cursor:pointer}
a.tile:hover,button.tile:hover,.tile[aria-pressed=true],.tile[aria-current=true]{border-color:var(--c,var(--navy));background:var(--tile)}
a.tile:focus-visible,button.tile:focus-visible{outline:2px solid var(--c,var(--coral));outline-offset:2px;border-color:var(--c,var(--coral))}
.tile[aria-pressed=true]{background:var(--card);box-shadow:inset 0 0 0 1px var(--c,var(--navy))}
/* kerncijfer */
.tile.kpi{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"lab lab" "num cap";align-items:end;column-gap:8px;row-gap:0;padding:9px 14px 10px;--c:var(--navy)}
.tile.kpi .lab{grid-area:lab;font-size:13px;color:var(--quiet);align-self:start}
.tile.kpi b{grid-area:num;margin:0;font-size:30px;line-height:1.1;letter-spacing:-.8px}
.tile.kpi .cap{grid-area:cap;font-size:12px;color:var(--quiet);padding-bottom:3px;align-self:end;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile.kpi .ico{top:9px;right:12px;width:20px;height:20px}
.tiles.s .kpi b,.tiles.s .kpi.t b{font-size:30px}.tiles.s .kpi.t b{font-size:22px;letter-spacing:-.3px}
.tile.kpi.warn b{color:var(--coral)}
/* klas-tegel */
.tile.klas{display:grid;grid-template-columns:56px minmax(0,1fr);column-gap:12px;align-items:center;padding:8px 14px}
.tile.klas .ring{width:56px;height:56px;margin:0}.tile.klas .ring text{font-size:20px}
.tile.klas .kx{display:flex;flex-direction:column;gap:1px;min-width:0}
.tile.klas .kt{font-size:15px;gap:8px}.tile.klas .dot{width:10px;height:10px}
.tile.klas .k2{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile.klas .k3{font-size:12px;color:var(--quiet);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile.klas .k3 .on,.tile.klas .k3 .let{font-weight:600}
.tile.add{flex-direction:row;gap:10px;font-size:15px;border-width:1.5px}.tile.add svg{width:22px;height:22px}
/* snel naar */
.tiles.q6{grid-template-columns:repeat(6,minmax(0,1fr))}.tiles.q6>.orbit{grid-column:span 2}
.orbit{--th:84px;padding:2px;border-radius:17px}.orbit .tile{border-radius:15px}
.tile.qr{padding:8px 14px;gap:12px}.tile.qr>i:first-child{width:40px;height:40px;border-radius:12px}.tile.qr>i:first-child svg{width:22px;height:22px}
.tile.qr .tx b{font-size:15px}.tile.qr .tx span{font-size:12.5px}
.eb-img{width:56px!important;height:56px!important}.tiles.q6>.orbit .tx b{font-size:17px!important}
/* groep van spellen */
.tile.game{flex-direction:row;align-items:center;gap:10px;padding:8px 12px}.tile.game>i:first-child{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--c,#123a63)}.tile.game>i:first-child svg{width:20px;height:20px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tile.game .tx{display:flex;flex-direction:column;min-width:0}.tile.game .tx b{font-size:14.5px;margin:0;font-weight:600}.tile.game .tx span{font-size:12px;color:var(--quiet);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* leerling: vaardigheden en Files compact */
.tile.q.skill{flex-direction:row;align-items:center;gap:12px;padding:8px 14px}.tile.skill>i.ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:none}.tile.skill>i.ic svg{width:22px;height:22px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tile.skill .sx{display:flex;flex-direction:column;min-width:0;flex:1;gap:1px}.tile.skill .sx b{font-size:15px;margin:0}.tile.skill .sx span{font-size:12.5px;color:var(--quiet)}.tile.skill .pbar{height:5px;margin-top:3px}
.tile.file{padding:8px 12px;gap:10px}.tile.file .no{width:38px;height:38px;font-size:15px}.tile.file .tx b{font-size:15px}.tile.file .tx span{font-size:12px}.tile.file .pbar{height:5px}
.tiles.f{--th:72px;grid-template-columns:repeat(4,minmax(0,1fr))}.tiles.f3{--th:64px}.tiles.f5{--th:100px}
/* hoofdopbouw klas 1-3 */
.fh1{font-size:26px;margin:0 0 10px;letter-spacing:-.5px}
.fh-top{gap:var(--gap);grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
.fh-go{min-height:0!important;height:96px!important}.fh-card{padding:12px 20px!important}.fh-card b{font-size:20px!important}.fh-card small{font-size:13px!important}.fh-card .btn{min-height:36px;padding:0 16px}
.fh-me{padding:8px 14px;border-radius:14px;gap:14px;height:96px}.fh-me .av3d.big{width:68px;height:68px}.fh-me .nm b{font-size:17px}.fh-me .nm button{min-height:30px;padding:0 10px;font-size:13px}.fh-me p{font-size:13px!important;margin:2px 0!important}.fh-me .lnk{margin:0;line-height:20px;min-height:0;font-size:13px}.fh-me .pbar{height:6px}
.fh-streak{margin-top:var(--gap);padding:8px 16px;border-radius:14px;gap:18px;height:64px;grid-template-columns:auto auto 1fr auto}.fh-streak .fl svg{width:30px;height:30px}.fh-streak .sk{flex-direction:row;align-items:baseline;gap:8px}.fh-streak .sk b{font-size:30px}.fh-streak .sk span{font-size:14px}.fh-streak .wd i{width:20px;height:24px}.fh-streak .wl span{width:20px;font-size:12px}.fh-streak small{display:none}.fh-streak .sv{padding:6px 12px;font-size:13px;border-radius:12px}.fh-streak .sv svg{width:20px;height:20px}.fh-streak .wk{display:flex;flex-direction:column;gap:2px}
.panel{background:var(--tile);border-radius:14px}
.bossban{margin:0 0 var(--gap);padding:8px 16px;border-radius:14px;gap:14px}.bossban img{width:44px;height:44px}.bossban b{font-size:16px}
/* docent: lijsten, eindbaas, open/dicht */
.ph2{margin:4px 0 10px}.ph2 h1{font-size:26px}.back{min-height:32px;margin-bottom:0;font-size:14px}
.ocard{padding:12px 16px;border-radius:14px}.ocard h3{font-size:16px}.ocard p{margin:0 0 6px;font-size:13px}.ogrid .sw{min-height:34px;font-size:14px}
.sec h2{margin:0}
.khead{padding:12px 18px;border-radius:14px}.khead h1{font-size:24px}.khead p{font-size:14px}
.tabs{margin:12px 0 10px}.tabs a{min-height:36px}
.tool{margin-bottom:8px}.card{border-radius:14px;padding:14px 16px}
table th,table td{padding:8px 10px}
.btn.sm,button.sm{min-height:32px;padding:0 12px;font-size:13px}
/* beheer: twee kolommen */
.bgrid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:var(--gap);align-items:start}
.bgrid .tiles.t{grid-template-columns:repeat(3,minmax(0,1fr))}
.tile.tcard{padding:8px 12px;gap:4px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto auto;align-items:center;column-gap:8px}
.tile.tcard .who2{grid-column:1;gap:10px}.tile.tcard .av{width:36px;height:36px;font-size:16px}.tile.tcard b.n{font-size:15px}.tile.tcard small{font-size:12px}
.tile.tcard .meta{grid-column:1/-1;font-size:12.5px}.tile.tcard .bot{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;margin:0;gap:8px}.tile.tcard .bot .sw{min-height:32px;font-size:13px}.tile.tcard .bot button{width:auto;min-height:30px;padding:0 12px;font-size:13px}
.tile.tcard .tag{grid-column:2;grid-row:1;font-size:12px;padding:1px 8px}
.tile.add.tadd{--th:116px}
.ktable{border-radius:14px;padding:4px 8px}.ktable td,.ktable th{padding:5px 8px;font-size:13.5px}.ktable select{min-height:30px;min-width:0;width:100%;padding:0 8px;font-size:13px}
.ktable table{width:100%}
.fchips{display:flex;gap:6px;flex-wrap:wrap}.fchip{min-height:30px;padding:0 12px;border-radius:999px;font-size:13px;font-weight:600;border:1.5px solid var(--line);background:var(--card);cursor:pointer}.fchip[aria-pressed=true]{background:var(--navy-solid);color:#fff;border-color:var(--navy-solid)}
/* eindbaas en spelen */
.bossbox{padding:14px 20px;gap:16px;border-radius:14px;grid-template-columns:minmax(0,120px) minmax(0,1fr)}.bossbox img{max-width:112px}.bossbox h2{font-size:20px;margin:0 0 4px}.bossbox p{margin:0 0 6px;font-size:14px}.hp{height:12px}
.arena{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.arena .pl{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.1);border-radius:999px;padding:4px 12px 4px 4px;color:#fff;font-size:13px}.arena .pl i{width:28px;height:28px;border-radius:50%;background:#ff9a78;color:#10243b;display:grid;place-items:center;font-style:normal;font-weight:700;font-size:13px}.arena .pl b{font-weight:600}.arena .pl span{opacity:.8}
.ebsetup{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--gap)}
.srcs{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.src{min-height:32px;padding:0 12px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);font-size:13px;font-weight:600;cursor:pointer}.src[aria-pressed=true]{background:var(--navy-solid);color:#fff;border-color:var(--navy-solid)}
.lvls{gap:8px}.lvl{min-height:36px}
.field{margin-bottom:10px;font-size:13px}.field input,.field select{min-height:38px;margin-top:4px}
/* spelkeuze */
.wsel{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin:0 0 10px}.wsel label{font-size:13px;font-weight:600;display:grid;gap:4px}.wsel select{min-height:36px;min-width:160px;width:auto}
.rounds{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}.rd{min-height:34px;padding:0 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);font-weight:600;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:var(--ink)}.rd[aria-current=page]{background:var(--navy-solid);color:#fff;border-color:var(--navy-solid)}.rd.dn::after{content:"\2713";color:var(--ok);font-weight:700}.rd[aria-current=page].dn::after{color:#9be8bf}
.hang{display:grid;gap:12px;justify-items:center;margin-top:4px}.hang .word{font:700 34px ui-monospace,Menlo,monospace;letter-spacing:.2em}.hang .lives{display:flex;gap:6px}.hang .lives i{width:14px;height:14px;border-radius:50%;background:var(--coral)}.hang .lives i.x{background:var(--line)}
.kb{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:6px;max-width:560px;width:100%}.kb button{min-height:40px;padding:0;font-size:15px}.kb button[disabled]{opacity:.35}.kb button.hit{background:var(--tint-ok);border-color:var(--ok)}.kb button.miss{background:var(--tint-bad);border-color:var(--coral)}
.timer{font:700 22px ui-monospace,Menlo,monospace}.qgame{max-width:560px;margin:0 auto;display:grid;gap:12px;text-align:center}
.qgame .big{font-size:32px;font-weight:700}
.lstat{display:flex;gap:18px;justify-content:center;flex-wrap:wrap;color:var(--quiet);font-size:14px}
/* lijst-pagina's */
.ptable{width:100%}.ptable td,.ptable th{padding:7px 10px}
@media(max-width:1100px){.tiles.s,.tiles.m,.tiles.g,.tiles.t{grid-template-columns:repeat(3,minmax(0,1fr))}.tiles.q6{grid-template-columns:repeat(2,minmax(0,1fr))}.tiles.q6>.orbit{grid-column:1/-1}.tiles.f{grid-template-columns:repeat(2,minmax(0,1fr))}.bgrid{grid-template-columns:1fr}.bgrid .tiles.t{grid-template-columns:repeat(2,minmax(0,1fr))}.fh-top{grid-template-columns:1fr}.fh-go,.fh-me{height:auto!important}.fh-streak{height:auto;grid-template-columns:auto 1fr}.tiles.m4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){button,.btn,.sw,.who button,.nav a{min-height:44px}.top{flex-wrap:wrap;padding:8px 14px;row-gap:4px}.top .who{margin-left:0;width:100%;flex-wrap:wrap}.dwrap{padding:12px 14px 40px}.tiles.s,.tiles.m,.tiles.g,.tiles.t,.tiles.f,.tiles.f3{grid-template-columns:repeat(2,minmax(0,1fr))}.kb{grid-template-columns:repeat(7,minmax(0,1fr))}}
@media(max-width:700px){.tiles.s{--th:84px}.tiles.m{--th:96px}}
@media(max-width:420px){.tiles.s,.tiles.m,.tiles.g,.tiles.t,.tiles.f,.tiles.f3,.tiles.q6{grid-template-columns:minmax(0,1fr)}.tiles.q6>.orbit{grid-column:1/-1}.hero h1{font-size:22px}}
@media(prefers-reduced-motion:reduce){.tile,.rd,.src{transition:none!important}}

.tiles.s .tile.kpi{column-gap:8px;row-gap:0;padding:10px 14px 11px}
:root{--k1:#1fa58c;--k2:#e07b3a;--k3:#3b7bd4;--k4:#123a63}
html[data-theme=dark]{--k4:#8ec1ee}
.tile.tcard .tag{grid-column:1/-1;grid-row:auto;justify-self:start}

.streakt td{text-align:center;padding:8px 0}.streakt th{text-align:center}.sd{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--tile);font-size:13px;color:var(--quiet)}.sd.on{background:var(--navy-solid);color:#fff;font-weight:700}
.tiles.g5{grid-template-columns:repeat(5,minmax(0,1fr))}.tiles.g7{grid-template-columns:repeat(7,minmax(0,1fr))}
.tile.game{padding:8px 10px;gap:8px}.tile.game>i:first-child{width:32px;height:32px}.tile.game .tx b{font-size:13.5px}.tile.game .tx span{font-size:12px}
.chip{text-decoration:none;color:var(--ink)}a.chip:hover{background:var(--hover)}
@media(max-width:1100px){.tiles.g5,.tiles.g7{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.tiles.g5,.tiles.g7{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.tiles.g5,.tiles.g7{grid-template-columns:minmax(0,1fr)}}

.tiles.m .orbit{--th:96px}

.tile.file.locked b,.tile.file.locked .tx span,.tile.locked b,.tile.locked span,.tile.skill.locked .sx b,.tile.skill.locked .sx span{color:var(--quiet)}
.tile.locked>i,.tile.file.locked .no{opacity:.75}
@media(max-width:900px){.tiles.t{--th:136px}.tile.add.tadd{--th:136px}}
@media(max-width:560px){.bgrid .tiles.t{grid-template-columns:minmax(0,1fr)}}
.fh-streak .sv{background:var(--hover);color:var(--ink)}.fh-streak .wd i{background:var(--line)}.fh-streak .wd i.on{background:var(--navy-solid)}
.fh-streak .sv svg{stroke:var(--quiet)}

.fh-me a.lnk{display:inline-block;padding:7px 4px;margin:-7px -4px;color:inherit;text-decoration:underline;min-height:30px;line-height:16px}
.oc{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap)}.ogrid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:2px 12px}
@media(max-width:900px){.oc{grid-template-columns:1fr}}
@media(min-width:1100px){.oc{grid-template-columns:repeat(3,minmax(0,1fr))}.ogrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1200px){.oc{grid-template-columns:repeat(4,minmax(0,1fr))}.ogrid{grid-template-columns:minmax(0,1fr);gap:0}.ogrid .sw{min-height:28px;font-size:13px;text-align:left}.ocard{padding:10px 14px}.ocard p{display:none}.ocard h3{margin:0 0 4px}}
/* echte opdrachten in een kader onder de kop */
html:has(.realwrap){overflow:hidden}
main.dwrap:has(.realwrap){padding:0;max-width:none;margin:0}
.realwrap{display:block;line-height:0}
.real{display:block;width:100%;height:calc(100vh - var(--topH,64px));height:calc(100dvh - var(--topH,64px));border:0}
/* verwijderen (beheer) */
.dng{color:#a3321a;border-color:#e7b7ab;background:transparent}.dng:hover{background:#fbeae6}.dng.sure{background:#a3321a;color:#fff;border-color:#a3321a}
html[data-theme=dark] .dng{color:#ffb4a2;border-color:#7a3b30}html[data-theme=dark] .dng:hover{background:#3a1d18}html[data-theme=dark] .dng.sure{background:#ffb4a2;color:#2a0f0a}
.dngb{background:#a3321a!important;border-color:#a3321a!important;color:#fff!important}
.llist{display:grid;gap:4px;max-height:320px;overflow:auto;margin-bottom:12px}.srow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px solid var(--line)}
.srow button{min-height:32px;padding:0 12px;font-size:13px}
.ktable .lln{min-width:40px;min-height:30px;padding:0 10px;border-radius:999px;font-weight:700}
.tcard .bot .dng{width:36px;min-width:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-left:auto}
.tcard .bot{gap:8px}.tcard .bot button:not(.dng):not(.primary){padding:0 14px}.tcard .bot .dng{flex:none}
.tcard{position:relative}.tcard .bot .dng{position:absolute;top:10px;right:10px;width:32px;min-width:32px;height:32px;min-height:32px;margin:0}
.tcard .bot button:not(.dng):not(.primary){padding:0 14px}.tcard .bot{gap:8px}
.tcard .bot{position:static!important}.tcard .bot .dng{transform:none!important}
.tcard .bot .dng{width:32px!important;min-width:32px!important;max-width:32px!important;padding:0!important;box-sizing:border-box}
.tcard .bot{gap:6px!important}.tcard .bot button:not(.dng):not(.primary){padding:0 10px!important}

/* ronde 10: tegel past, ook met 'Uitgeschakeld' */
.tile.tcard .bot{flex-wrap:nowrap;min-width:0}.tile.tcard .bot .sw{flex:1 1 0;min-width:0;gap:8px;padding:0}.tile.tcard .bot .sw .tr{flex:none}.tile.tcard .bot .sw .sl{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile.tcard .bot button:not(.sw):not(.dng){flex:none;white-space:nowrap}
.top nav a[aria-current=location]{background:rgba(120,140,170,.22);color:var(--ink)}

/* ===== aansluiting op de bestaande lesapp (geen eigen vormgeving) ===== */
body.ww-dashboard{zoom:1!important}
.ww-dashboard #app{width:100%!important;max-width:none!important;padding:0!important;margin:0!important}.ww-dashboard>.head,.ww-dashboard>header{display:none}
#wwDashboard{min-height:100vh}
#wwDashboard footer{margin-top:16px;color:var(--quiet);font-size:13px}
#wwDashboard .locked{opacity:.75}
#wwDashboard a.tile.file,#wwDashboard a.tile.game{text-decoration:none;color:inherit}
#wwDashboard .dwrap{display:block}
/* klas 4: de oude site heeft een eigen .tile (38px breed); die mag het dashboard niet raken */
#wwDashboard .tile{width:auto;max-width:none}
#wwDashboard .tile,#wwDashboard .tile *{text-transform:none}#wwDashboard .tile{aspect-ratio:auto;min-height:0}
#wwDashboard .tiles.g .tile{height:64px}#wwDashboard .tiles.f .tile.file{height:var(--th,72px)}
/* klas 4: de oude site heeft een eigen .hero; die mag de kop van het dashboard niet raken */
#wwDashboard .hero{padding:0;background:none;border:0;border-radius:0;box-shadow:none;margin:0;min-height:0}#wwDashboard .hero h1{color:var(--ink)}#wwDashboard .hero-in{padding:0}
html.ww-dashboard body.ww-dashboard{margin:0;padding:0;max-width:none}#wwDashboard{margin:0;padding:0}#wwDashboard .pill{color:var(--ink)}
#wwDashboard .hero{flex-wrap:nowrap;min-width:0}#wwDashboard .hero-in{min-width:0;flex:1 1 0}#wwDashboard .hero h1,#wwDashboard .hero .pill{max-width:100%;overflow-wrap:anywhere;white-space:normal}#wwDashboard .hero h1 .lr{display:inline;white-space:normal}

/* Telefoon: alle knoppen, menulinks en keuzevelden minstens 44 px hoog; kleine tekst nooit onder 12 px */
@media (max-width:700px){
 #wwDashboard header.top a,#wwDashboard header.top button,#wwDashboard .chip,#wwDashboard .tile{min-height:44px;display:inline-flex;align-items:center}
 #wwDashboard header.top .brand{display:flex;flex-direction:column;justify-content:center;min-height:44px}
 #wwDashboard .top .brand small{font-size:12px}
}
