:root {
  --blauw: #2563eb;
  --groen: #16a34a;
  --rood: #dc2626;
  --grijs: #64748b;
  --bg: #f8fafc;
  --kaart: #ffffff;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  background: var(--bg);
  color: #0f172a;
}

header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  background: var(--kaart);
  border-bottom: 1px solid #e2e8f0;
  position: sticky;
  top: 0;
  flex-wrap: wrap;
  gap: 8px;
}

h1 { font-size: 20px; margin: 0; }

nav { display: flex; gap: 8px; flex-wrap: wrap; }
.hidden { display: none !important; }

main {
  max-width: 560px;
  margin: 0 auto;
  padding: 16px;
}

.kaart {
  background: var(--kaart);
  border-radius: 14px;
  padding: 20px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
  margin-bottom: 16px;
}

label {
  display: block;
  font-weight: 600;
  margin: 14px 0 6px;
  font-size: 14px;
}

input[type=password], input[type=text],input[type=search], input[type=email], select {
  width: 100%;
  padding: 12px;
  border: 1px solid #cbd5e1;
  border-radius: 10px;
  font-size: 16px;
}

button {
  cursor: pointer;
  border: none;
  border-radius: 10px;
  font-size: 16px;
  font-weight: 600;
  padding: 12px 16px;
}

.primary {
  background: var(--blauw);
  color: white;
  width: 100%;
  margin-top: 16px;
}
.primary:disabled { background: #94a3b8; cursor: wait; }

.linkbtn {
  background: #eef2ff;
  color: var(--blauw);
  padding: 8px 12px;
  font-size: 14px;
}

.fout {
  color: var(--rood);
  font-size: 14px;
  margin-top: 8px;
}

.foto-upload {
  border: 2px dashed #cbd5e1;
  border-radius: 12px;
  padding: 20px;
  text-align: center;
  margin-top: 10px;
}

.thumbs { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.thumbs img { width: 70px; height: 70px; object-fit: cover; border-radius: 8px; border: 1px solid #cbd5e1; }

.laadtekst { text-align: center; color: var(--grijs); padding: 30px 0; }

.vraag-kop { font-size: 13px; color: var(--grijs); margin-bottom: 4px; }
.vraag-tekst { font-size: 18px; font-weight: 600; margin-bottom: 14px; line-height: 1.4; }

.opties { display: flex; flex-direction: column; gap: 10px; }
.optie {
  display: block;
  border: 2px solid #e2e8f0;
  border-radius: 10px;
  padding: 12px;
  cursor: pointer;
  font-size: 16px;
}
.optie.gekozen { border-color: var(--blauw); background: #eef2ff; }

textarea {
  width: 100%;
  min-height: 90px;
  padding: 12px;
  border: 1px solid #cbd5e1;
  border-radius: 10px;
  font-size: 16px;
  font-family: inherit;
}

.vooruitgang { font-size: 13px; color: var(--grijs); margin-bottom: 10px; }

.resultaat-item { border-bottom: 1px solid #e2e8f0; padding: 12px 0; }
.resultaat-item:last-child { border-bottom: none; }
.goed { color: var(--groen); font-weight: 700; }
.fout-antwoord { color: var(--rood); font-weight: 700; }
.feedback { font-size: 14px; color: var(--grijs); margin-top: 4px; }

.score-groot { font-size: 40px; font-weight: 800; text-align: center; margin: 10px 0; }

table { width: 100%; border-collapse: collapse; font-size: 14px; }
th, td { text-align: left; padding: 8px 6px; border-bottom: 1px solid #e2e8f0; }

/* Overhoor: shared visual system and accessible interaction states */
:root { --blauw:#147d73; --groen:#217a4c; --rood:#b83737; --grijs:#5e6b72; --bg:#f5f6f2; --kaart:#fff; }
body { color:#243a40; line-height:1.6; }
header { padding:18px max(24px,calc((100vw - 1120px)/2)); gap:20px; z-index:10; position:relative; background:#fff; border-color:#e1e7e2; }
h1 { display:flex; align-items:center; gap:10px; font-size:23px; letter-spacing:-.6px; flex-wrap:wrap; }
.logo-icoon { background:var(--blauw); color:white; width:36px; height:36px; display:inline-grid; place-items:center; border-radius:11px; }
.brand-sub { display:block; flex-basis:100%; padding-left:46px; font-size:11px; font-weight:400; color:var(--grijs); letter-spacing:0; margin-top:-13px; }
main { max-width:760px; padding:40px 24px 24px; min-height:calc(100vh - 170px); }
h2,h3,p { margin-top:0; } h2 { font-size:24px; line-height:1.25; letter-spacing:-.6px; margin-bottom:12px; } h3 { margin-bottom:8px; }
p { color:var(--grijs); } .eyebrow { display:block; font-size:11px; font-weight:750; letter-spacing:1.7px; color:var(--blauw); margin-bottom:12px; }
.intro { text-align:center; margin:10px auto 30px; max-width:480px; } .intro h2 { font-size:42px; letter-spacing:-1.5px; line-height:1.15; } .intro p { font-size:16px; }
.login-kaart { max-width:460px; margin:0 auto; } .kaart { padding:30px; border:1px solid #e1e7e2; border-radius:20px; box-shadow:0 4px 20px #233b3805; }
.subtekst { font-size:13px; color:var(--grijs); margin:8px 0; } label { margin-top:20px; }
input[type=password],input[type=text],input[type=search],input[type=email],select,textarea { background:#fcfdfb; border-color:#ced8d2; color:#243a40; font-family:inherit; min-height:48px; }
textarea { min-height:150px; resize:vertical; }
button { font-family:inherit; min-height:44px; transition:background .15s,border-color .15s; }
button:disabled { cursor:not-allowed; opacity:.65; } .primary:disabled { background:#8daba5; cursor:not-allowed; }
.primary { background:var(--blauw); border:1px solid transparent; } .primary:hover:not(:disabled) { background:#0c655c; }
.secondary { background:white; color:#243a40; border:1px solid #bccdc5; }
.linkbtn { background:#eff4ef; color:#38615a; } nav .linkbtn { background:transparent; color:#596d6b; font-size:13px; } nav .nav-actief { background:#e6f2eb; color:#126459; } .linkbtn:hover:not(:disabled) { background:#e0ede4; }
:focus-visible { outline:3px solid #c58a2b; outline-offset:3px; }
.pagina-kop { margin:4px 0 24px; } .pagina-kop h2 { font-size:32px; } .stappen { display:flex; justify-content:space-between; font-size:12px; color:#697572; border-bottom:1px solid #dce4dc; margin-bottom:24px; gap:10px; padding-bottom:14px; } .stappen .actief { color:var(--blauw); font-weight:700; }
.foto-upload { background:#f8fbf6; border:1px dashed #a9c5b8; padding:26px 20px 16px; margin:20px 0; }
.upload-symbool { width:44px; height:44px; display:inline-grid; place-items:center; background:#e4efe3; color:#43764f; border-radius:12px; font-size:26px; margin-bottom:12px; }
.foto-upload p { font-size:14px; } .upload-acties { display:flex; gap:10px; justify-content:center; margin:18px 0 8px; } .upload-acties .primary { width:auto; margin:0; } .upload-hint { font-size:11px!important; margin:14px 0 0; }
.thumbs { gap:16px; } .thumbs img { width:92px; height:92px; } .thumbs .foto-verwijderen { width:28px!important; height:28px!important; min-height:28px; border:2px solid white!important; }
.vooruitgang { display:flex; justify-content:space-between; gap:12px; } progress { display:block; width:100%; height:7px; border:0; border-radius:10px; overflow:hidden; appearance:none; margin-bottom:28px; background:#e5ece4; } progress::-webkit-progress-bar { background:#e5ece4; } progress::-webkit-progress-value { background:var(--blauw); border-radius:10px; } progress::-moz-progress-bar { background:var(--blauw); }
.vraag-tekst { font-size:24px; line-height:1.45; margin:12px 0 24px; } .vraag-kop { text-transform:none; font-size:13px; }
.optie { display:flex; align-items:center; gap:14px; text-align:left; background:white; font-weight:450; border-width:1px; min-height:62px; line-height:1.5; color:#243a40; } .optie:hover { background:#f4f8f1; border-color:#8eafa0; } .optie.gekozen { background:#eaf4ed; border:2px solid var(--blauw); padding:11px; } .optie-letter { display:grid; place-items:center; flex-shrink:0; width:32px; height:32px; background:#f0f3ed; border-radius:8px; font-size:13px; font-weight:700; }.optie.gekozen .optie-letter { color:white; background:var(--blauw); }
.score-groot { background:#eef5e9; border-radius:16px; padding:24px; color:#326745; font-size:52px; }.resultaat-item { padding:22px 0; line-height:1.65; }.feedback { color:#536962; margin-top:10px; }
.tabel-scroll { overflow-x:auto; } th { font-size:11px; color:var(--grijs); text-transform:uppercase; letter-spacing:.5px; } td { padding:14px 8px; } .historie-rij:hover { background:#f5f8f1; }
footer { text-align:center; color:#63766d; font-size:12px; padding:20px; }.fout:not(:empty) { background:#fff1ee; padding:12px; border-radius:8px; }.laadtekst { padding:38px 20px; }.laadtekst::before { content:''; display:block; width:24px; height:24px; border:3px solid #d4e4d9; border-top-color:var(--blauw); border-radius:50%; margin:0 auto 14px; animation:draai 1s linear infinite; } @keyframes draai { to { transform:rotate(360deg); } }
@media(max-width:600px) { header { padding:14px 16px; gap:14px; } nav { width:100%; gap:4px; } nav .linkbtn { flex:1; padding:8px 5px; font-size:11px; } main { padding:26px 16px 16px; } .kaart { padding:22px 18px; border-radius:16px; }.intro h2 { font-size:36px; }.pagina-kop h2 { font-size:28px; }.stappen { font-size:10px; gap:4px; }.vraag-tekst { font-size:21px; }.upload-acties { flex-direction:column; }.foto-upload { padding:22px 12px 16px; }.brand-sub { display:none; }.optie { font-size:16px; }.tabel-scroll { margin:0 -8px; } }
@media(prefers-reduced-motion:reduce) { *,*::before { animation:none!important; transition:none!important; } }
.thumbs .foto-verwijderen { width:44px!important; height:44px!important; min-height:44px; top:-10px!important; right:-10px!important; }
@media(max-width:600px) { .historie-rij { display:grid; grid-template-columns:1fr auto; padding:12px 0; border-bottom:1px solid #e2e8f0; } .historie-rij td { border:0; padding:5px 8px; } .historie-rij td:nth-child(2) { grid-row:1; grid-column:1; font-weight:600; } .historie-rij td:nth-child(3) { grid-row:1; grid-column:2; font-weight:700; white-space:nowrap; } .historie-rij td:first-child { grid-column:1 / -1; font-size:12px; } .historie-rij td:last-child { grid-column:1 / -1; }.historie-rij td:last-child:empty { display:none; } table tr:has(th) { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); } table,tbody { display:block; width:100%; } }

/* Make feedback an inviting, clearly separated part of each result. */
.resultaat-vraag { padding:28px 0; border-bottom:1px solid #e1e7e2; overflow-wrap:anywhere; }
.resultaat-vraag:last-of-type { border-bottom:0; }
.resultaat-kop { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px 12px; margin-bottom:12px; }
.resultaat-kop .vraag-kop { margin:0; }
.resultaat-status { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:650; }
.resultaat-status.is-goed { color:var(--groen); }
.resultaat-status.is-fout { color:#a52e2e; background:#ffeded; border:1px solid #efbcbc; border-radius:7px; padding:4px 9px; }
.resultaat-vraagtekst { font-size:19px; line-height:1.5; font-weight:650; margin:0 0 18px; }
.antwoord-label { display:block; font-size:12px; font-weight:650; color:#5e6b72; margin-bottom:4px; }
.resultaat-antwoord { padding:16px; border:1px solid #d5e7df; border-left:4px solid #238578; border-radius:12px; background:#eef6f1; }
.resultaat-antwoord.antwoord-fout { background:#fff1f0; border-color:#efc4c0; border-left-color:#c33c36; }
.antwoord-fout .antwoord-label { color:#a52e2e; }
.antwoord-fout p { color:#742d29; }
.antwoord-goed .antwoord-label { color:#24665c; }
.resultaat-antwoord p { margin:0; font-size:14px; line-height:1.6; white-space:pre-wrap; }
.resultaat-correct { margin-top:12px; padding:16px; border:1px solid #cce2d1; border-left:4px solid #318354; border-radius:12px; background:#eef7ef; }
.resultaat-correct .antwoord-label { color:#24665c; }
.resultaat-correct p { margin:0; color:#243a40; font-weight:600; font-size:16px; line-height:1.65; white-space:pre-wrap; }
.resultaat-uitleg { margin-top:18px; padding:20px; border:1px solid #e0e4e7; border-left:4px solid #a0aab2; border-radius:12px; background:#f5f6f7; }
.uitleg-kop { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.uitleg-kop h4 { margin:0; font-size:16px; line-height:1.4; font-weight:750; color:#34444f; }
.uitleg-icoon { display:inline-grid; place-items:center; width:24px; height:24px; flex-shrink:0; border-radius:50%; background:#e4e8ec; color:#34444f; font-size:15px; font-weight:750; font-family:Georgia,serif; }
.resultaat-uitleg p { margin:0; font-size:16px; line-height:1.75; color:#34444f; white-space:pre-wrap; }
.uitleg-goed { background:#f5f8f3; border-color:#e1e9dc; border-left-color:#97b293; }
@media(max-width:600px) { .resultaat-vraag { padding:24px 0; } .resultaat-vraagtekst { font-size:18px; } .resultaat-uitleg { padding:16px; } }

/* Warm, distinct explanation panel for incorrect answers. */
.resultaat-uitleg:not(.uitleg-goed) { background:#fff8e6; border-color:#f0d497; border-left-color:#de931c; }
.resultaat-uitleg:not(.uitleg-goed) .uitleg-kop h4 { color:#81500d; }
.resultaat-uitleg:not(.uitleg-goed) .uitleg-icoon { background:#fce6b3; color:#81500d; }
.resultaat-uitleg:not(.uitleg-goed) p { color:#59441f; }

/* Viewer: lesstof-foto's op volledig scherm bekijken */
.viewer-overlay {
  position: fixed; inset: 0; background: rgba(15, 23, 42, 0.92);
  z-index: 1000; display: flex; flex-direction: column;
}
.viewer-kop {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px; color: #f8fafc; font-size: 14px;
}
.viewer-kop .linkbtn { background: rgba(255,255,255,0.12); color: #f8fafc; }
.viewer-beeld {
  flex: 1; display: flex; align-items: center; justify-content: center;
  gap: 12px; padding: 0 12px 16px; min-height: 0;
}
.viewer-beeld img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 8px; }
.viewer-nav {
  background: rgba(255,255,255,0.15); color: #fff; border: none; border-radius: 50%;
  width: 44px; height: 44px; font-size: 24px; flex-shrink: 0; cursor: pointer;
}

/* Personal learning overview. */
.dashboard-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 20px}.dashboard-stats>div{background:#eef3e8;border:1px solid #dbe5d4;border-radius:12px;padding:18px 12px}.dashboard-stats strong{display:block;font-size:28px;letter-spacing:-1px;color:#174c40}.dashboard-stats span{display:block;font-size:11px;color:#667366;margin-top:7px}.dashboard-resume{border:1px solid #b5c993;background:#f3f7e9}.dashboard-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.dashboard-heading h2{font-size:18px}.dashboard-heading .linkbtn{font-size:12px;flex-shrink:0}.dashboard-result{display:flex;justify-content:space-between;align-items:center;gap:16px;text-align:left;background:transparent;color:inherit;border:0;border-top:1px solid #e4e8de;width:100%;padding:16px 0;cursor:pointer}.dashboard-result strong{font-size:14px}.dashboard-result small{display:block;margin-top:5px;color:#6b7668;font-size:12px}.dashboard-result b{font-size:17px;color:#174c40}.dashboard-result b span{margin-left:12px}.dashboard-result:hover{background:#f6f8f1}@media(max-width:400px){.dashboard-stats>div{padding:14px 8px}.dashboard-stats span{font-size:10px}.dashboard-stats strong{font-size:25px}.dashboard-heading{align-items:flex-start;flex-direction:column}}

.app-brand-symbol{vertical-align:middle;flex-shrink:0;margin-right:6px}header h1>a{display:flex;align-items:center;flex-wrap:wrap;gap:4px}header h1>a .brand-sub{margin-top:0}

/* PDF page selection uses the existing product colors and controls. */
.pdf-stappen{display:flex;gap:12px;list-style:none;padding:0;flex-wrap:wrap;margin:0 0 22px}.pdf-stappen li{padding:10px 16px;background:#e9eeea;border-radius:8px;color:#536b70}.pdf-stappen .actief{background:#147d73;color:white;font-weight:700}
.pdf-waarschuwing{background:#fff7e5;border:1px solid #e8c779;border-left:4px solid #ca941f;padding:18px 22px;border-radius:12px;margin:0 0 22px;color:#654910}.pdf-waarschuwing p:last-child{margin-bottom:0}
.pdf-set-editor{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:18px}.pdf-set-editor fieldset{border:1px solid #d6e0d9;border-radius:10px;padding:16px;min-width:0}.pdf-set-editor legend{font-weight:700;padding:0 6px}
.pdf-acties{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:16px}.pdf-acties .primary{width:auto;flex:1;min-width:180px;margin:0}
.pdf-pagina-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:16px;margin:24px 0}.pdf-pagina{background:white;border:1px solid #d6e0d9;padding:14px;border-radius:12px;min-width:0}.pdf-pagina.overgeslagen{background:#edf0ed;border-style:dashed}.pdf-pagina.overgeslagen img{opacity:.4}.pdf-pagina select{width:100%;font-size:13px}.pdf-thumbnail{display:block;width:100%;background:#f2f4f0;border:0;border-radius:6px;padding:8px;cursor:zoom-in}.pdf-thumbnail img{width:100%;height:210px;object-fit:contain;display:block}.pdf-pagina label{margin-top:10px}
.pdf-controle-thumbs{display:flex;gap:12px;flex-wrap:wrap}.pdf-controle-thumbs figure{margin:0;text-align:center}.pdf-controle-thumbs img{width:72px;height:100px;object-fit:contain;border:1px solid #d6e0d9;background:#f7f8f4}.pdf-controle-thumbs figcaption{font-size:12px;color:#536b70}
.pdf-vergroot{border:0;border-radius:12px;padding:18px;max-width:90vw;max-height:90vh}.pdf-vergroot::backdrop{background:#152c36b3}.pdf-vergroot img{display:block;max-width:100%;max-height:72vh;margin-top:14px;object-fit:contain}.pdf-overzicht{border:2px solid #147d73}
@media(max-width:480px){.pdf-pagina-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.pdf-pagina{padding:9px}.pdf-thumbnail img{height:155px}.pdf-pagina select{font-size:12px;padding:8px 3px}.pdf-waarschuwing{padding:14px}.pdf-acties>*{max-width:100%}}
