:root{--blauw:#1f3a5f;--blauw-licht:#e8eef7;--accent:#c8891a;--groen:#2e7d4f;--oranje:#d97b12;--rood:#b83232;--grijs:#5c6470;--rand:#d9dee6;--achtergrond:#f6f7f9;--wit:#fff}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--achtergrond);color:#1c2430;line-height:1.5;font-size:16px}
.kop{background:var(--blauw);color:var(--wit);padding:12px 16px;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.merk{color:var(--wit);text-decoration:none;font-weight:700}
.stappen{list-style:none;display:flex;gap:14px;margin:0;padding:0;font-size:14px}
.stappen li{opacity:.55;display:flex;align-items:center;gap:6px}
.stappen li span{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.25);font-size:13px}
.stappen li.actief{opacity:1;font-weight:600}.stappen li.actief span{background:var(--accent)}
.stappen li.klaar{opacity:.85}.stappen li.klaar span{background:var(--groen)}
.inhoud{max-width:960px;margin:0 auto;padding:20px 16px 48px}
.voet{text-align:center;color:var(--grijs);font-size:13px;padding:16px}
h1{font-size:1.5rem;margin:.2em 0 .6em}h2{font-size:1.15rem;margin:1.4em 0 .5em;color:var(--blauw)}
.meta{color:var(--grijs);font-size:14px}
.hero{background:var(--wit);border:1px solid var(--rand);border-radius:12px;padding:24px 20px;text-align:center}
.kaarten{display:grid;gap:12px;margin-top:16px}
@media(min-width:640px){.kaarten{grid-template-columns:repeat(3,1fr)}}
.kaart{background:var(--wit);border:1px solid var(--rand);border-radius:10px;padding:14px}
.kaart p{margin:4px 0 0;color:var(--grijs);font-size:14px}
.formulier{background:var(--wit);border:1px solid var(--rand);border-radius:12px;padding:18px 16px;display:grid;gap:14px}
label{display:grid;gap:4px;font-weight:600;font-size:15px}label small{font-weight:400;color:var(--grijs)}
input[type=text],input[type=email],input[type=number],input[type=password],input:not([type]){padding:12px;border:1px solid var(--rand);border-radius:8px;font-size:16px;width:100%}
fieldset{border:1px solid var(--rand);border-radius:8px;padding:10px 12px;display:grid;gap:8px}legend{font-weight:600;padding:0 6px}
.radio{display:flex;align-items:center;gap:10px;font-weight:400;min-height:44px}
.radio input{width:20px;height:20px}
.keuzes{display:grid;gap:10px}
.keuze{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid var(--rand);border-radius:10px;font-weight:400;cursor:pointer}
.keuze input{width:22px;height:22px;margin-top:2px;flex:none}
.keuze:has(input:checked){border-color:var(--blauw);background:var(--blauw-licht)}
.fout{color:var(--rood);font-size:14px;font-weight:400}
.acties{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;margin-top:8px}
.knop{display:inline-block;padding:12px 18px;border-radius:8px;border:1px solid var(--rand);background:var(--wit);color:var(--blauw);text-decoration:none;font-weight:600;font-size:15px;cursor:pointer;min-height:44px}
.knop.primair{background:var(--blauw);color:var(--wit);border-color:var(--blauw)}
.lid{border:1px solid var(--rand);border-radius:10px;padding:0 12px 12px;background:#fafbfc}
.lid summary{padding:12px 0;font-weight:600;cursor:pointer}
.lidvelden{display:grid;gap:10px;margin-bottom:10px}
@media(min-width:640px){.lidvelden{grid-template-columns:1fr 1fr auto;align-items:end}}
.scores{width:100%;border-collapse:collapse;font-size:14px}
.scores th{text-align:left;font-weight:500;padding:6px 4px;width:55%}
.scores td{padding:4px}
.score{display:inline-block;margin-right:4px;font-weight:400}
.score input{position:absolute;opacity:0;width:0;height:0}
.score span{display:inline-grid;place-items:center;width:38px;height:38px;border:1px solid var(--rand);border-radius:8px;background:var(--wit);cursor:pointer}
.score input:checked+span{background:var(--blauw);color:var(--wit);border-color:var(--blauw)}
.samenvatting{display:grid;gap:16px;margin-top:8px}
@media(min-width:720px){.samenvatting{grid-template-columns:220px 1fr}}
.meter{background:var(--wit);border:1px solid var(--rand);border-radius:12px;padding:20px;text-align:center}
.meter-cirkel{--pct:0;width:120px;height:120px;border-radius:50%;margin:0 auto 8px;display:grid;place-items:center;background:conic-gradient(var(--groen) calc(var(--pct)*1%),var(--blauw-licht) 0)}
.meter-cirkel span{background:var(--wit);width:92px;height:92px;border-radius:50%;display:grid;place-items:center;font-size:1.5rem;font-weight:700;color:var(--blauw)}
.meter p{margin:0;color:var(--grijs);font-size:14px}
.profielen{background:var(--wit);border:1px solid var(--rand);border-radius:12px;padding:16px}
.profielen h2{margin-top:0}
.profiel{border-left:4px solid var(--accent);padding:8px 12px;margin-bottom:10px;background:#fbf7ef;border-radius:0 8px 8px 0}
.profiel.hoog{border-left-color:var(--rood);background:#fbf0f0}
.profiel p{margin:4px 0;font-size:14px}.profiel small{color:var(--grijs)}
.badge{font-size:12px;background:var(--blauw-licht);color:var(--blauw);padding:2px 8px;border-radius:999px;margin-left:8px}
.tabelwrap{overflow-x:auto}
.matrix{border-collapse:collapse;width:100%;font-size:14px;background:var(--wit)}
.matrix th,.matrix td{border:1px solid var(--rand);padding:6px 8px;text-align:center}
.matrix tbody th{text-align:left;font-weight:500}
.cel{font-weight:600;border-radius:4px}
.cel.s0,.cel.v0{background:#f1f2f4;color:#9aa3ae}.cel.s1,.cel.v1{background:#e3ecf7}.cel.s2,.cel.v2{background:#b9cff0}.cel.s3,.cel.v3{background:#1f3a5f;color:#fff}
.gap.ontbreekt{background:#f8d7d7;color:var(--rood);font-weight:700}.gap.zwak{background:#fde8cf;color:var(--oranje);font-weight:700}.gap.gedekt{color:var(--groen)}
.legende{font-size:13px;color:var(--grijs)}.legende .cel{display:inline-block;padding:1px 8px;margin:0 2px}
.regels{list-style:none;padding:0;display:grid;gap:8px}
.regels li{padding:10px 12px;border-radius:8px;border-left:4px solid var(--grijs);background:var(--wit)}
.regels li.ok{border-left-color:var(--groen)}.regels li.waarschuwing{border-left-color:var(--oranje)}.regels li.info{border-left-color:var(--blauw)}
.motivatie li{margin-bottom:6px}
.leeg{color:var(--grijs);font-style:italic}
.lijst{columns:2;font-size:14px}
@media print{.kop,.voet,.acties{display:none}.inhoud{padding:0}body{background:#fff}}
/* --- patch1: admin & portaal --- */
.adminnav{display:flex;flex-wrap:wrap;gap:4px;align-items:center;background:var(--wit);border:1px solid var(--rand);border-radius:10px;padding:6px;margin-bottom:16px}
.adminnav a{padding:8px 12px;border-radius:8px;text-decoration:none;color:var(--blauw);font-weight:600;min-height:44px;display:flex;align-items:center}
.adminnav a.actief{background:var(--blauw-licht)}
.adminnav .uitlog{margin-left:auto}
button.link{background:none;border:0;color:var(--grijs);cursor:pointer;padding:8px 12px;font-size:14px;min-height:44px}
.flash{background:#e7f4ec;border:1px solid #b7dcc4;border-radius:8px;padding:8px 12px;margin-bottom:12px}.flash p{margin:2px 0}
.tegels{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}@media(min-width:640px){.tegels{grid-template-columns:repeat(4,1fr)}}
.tegel{background:var(--wit);border:1px solid var(--rand);border-radius:10px;padding:14px;text-align:center}
.tegel strong{display:block;font-size:1.8rem;color:var(--blauw)}.tegel span{font-size:13px;color:var(--grijs)}
.tegel.let strong{color:var(--oranje)}
.lijsttabel{border-collapse:collapse;width:100%;background:var(--wit);font-size:14px}
.lijsttabel th,.lijsttabel td{border-bottom:1px solid var(--rand);padding:8px;text-align:left;vertical-align:top}
.lijsttabel thead th{background:var(--blauw-licht);font-weight:600}
.gedimd{opacity:.55}
.ok{color:var(--groen)}.let{color:var(--oranje)}
.kopregel{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px}
.filterbalk{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.filterbalk input,.filterbalk select{padding:10px;border:1px solid var(--rand);border-radius:8px;font-size:15px}
.kolommen{display:grid;gap:12px}@media(min-width:640px){.kolommen{grid-template-columns:1fr 1fr}}
select,textarea{padding:10px;border:1px solid var(--rand);border-radius:8px;font-size:16px;width:100%;font-family:inherit}
.formulier.smal{max-width:420px}
.scores.breed th{width:40%}
.knop.klein{padding:6px 10px;font-size:13px;min-height:36px}
.inline{display:flex;flex-wrap:wrap;gap:4px}
.profielblok{background:var(--wit);border:1px solid var(--rand);border-radius:12px;padding:12px 14px;margin-top:14px}
.profielblok h2{margin-top:0}.profielblok h2 small{font-weight:400;color:var(--grijs);font-size:13px}
.portaallink input{width:100%;max-width:560px;padding:8px;border:1px solid var(--rand);border-radius:8px;font-size:13px}
.motivatie.klein{font-size:13px;color:var(--grijs);padding-left:18px;margin:4px 0}
.badge.s-shortlist,.badge.s-gesprek{background:#fde8cf;color:var(--oranje)}.badge.s-aangesteld{background:#e7f4ec;color:var(--groen)}.badge.s-klant_afgewezen,.badge.s-afgevallen,.badge.s-niet_beschikbaar{background:#f8d7d7;color:var(--rood)}.badge.s-klant_interesse{background:#e7f4ec;color:var(--groen)}
.fiches{display:grid;gap:12px}@media(min-width:720px){.fiches{grid-template-columns:1fr 1fr}}
.fiche{border:1px solid var(--rand);border-radius:10px;padding:12px;background:#fafbfc}
.fiche header{display:flex;justify-content:space-between;align-items:center;gap:8px}
.fiche.s-klant_afgewezen,.fiche.s-afgevallen{opacity:.6}
.reactie{display:grid;gap:8px;margin-top:8px}.reactie details{display:grid;gap:8px}.reactie summary{list-style:none;display:inline-block;text-align:center}
/* --- patch2a: accounts & 2FA --- */
.stappenlijst{padding-left:20px}.stappenlijst li{margin-bottom:6px}
.qrblok{background:var(--wit);border:1px solid var(--rand);border-radius:12px;padding:16px;text-align:center;margin-bottom:14px}
.qrblok img{background:#fff;border-radius:8px}
.sleutel{font-size:15px;letter-spacing:2px;word-break:break-all}
.codes{display:grid;grid-template-columns:1fr 1fr;gap:8px;background:var(--wit);border:1px solid var(--rand);border-radius:12px;padding:16px;margin:12px 0}
.codes code{font-size:18px;letter-spacing:1px;text-align:center;padding:8px;background:var(--blauw-licht);border-radius:8px}
.lijst-eenvoudig{padding-left:20px}.lijst-eenvoudig li{margin-bottom:6px}
.kaart strong{display:block;margin-bottom:4px}.kaart{margin-bottom:12px}
@media print{.codes{border:1px solid #000}}
/* --- patch2b: raden --- */
.raadnav{display:flex;flex-wrap:wrap;gap:4px;align-items:center;background:var(--blauw);border-radius:10px;padding:6px 10px;margin-bottom:16px}
.raadnav strong{color:var(--wit);margin-right:8px}
.raadnav a{padding:8px 12px;border-radius:8px;text-decoration:none;color:var(--wit);font-weight:600;min-height:40px;display:flex;align-items:center;opacity:.85}
.raadnav a.actief{background:rgba(255,255,255,.18);opacity:1}
.kaart.klik{text-decoration:none;color:inherit;display:block}.kaart.klik:hover{border-color:var(--blauw)}
.tekst{white-space:pre-wrap;font-family:inherit;font-size:15px;margin:6px 0;background:#fafbfc;padding:10px;border-radius:8px;border:1px solid var(--rand)}
.ndatekst{white-space:pre-wrap;line-height:1.6}
.let-blok{background:#fde8cf;border-color:#f3c48f}
.bericht header{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px}
.acties-cel{white-space:nowrap}
.badge.s-aanwezig,.badge.s-afgerond{background:#e7f4ec;color:var(--groen)}.badge.s-afwezig,.badge.s-vervallen{background:#f8d7d7;color:var(--rood)}.badge.s-verontschuldigd,.badge.s-bezig{background:#fde8cf;color:var(--oranje)}
input[type=file],input[type=date],input[type=time]{padding:10px;border:1px solid var(--rand);border-radius:8px;font-size:15px;width:100%;background:var(--wit)}

/* --- patch3: notulen-editor & weergave --- */
.editor{min-height:420px;background:var(--wit);font-size:15px}
.ql-toolbar.ql-snow{border-radius:8px 8px 0 0;border-color:var(--rand);background:#fafbfc}
.ql-container.ql-snow{border-radius:0 0 8px 8px;border-color:var(--rand)}
.notulen-weergave{background:#fafbfc;border:1px solid var(--rand);border-radius:8px;padding:14px 18px;line-height:1.55}
.notulen-weergave h1{font-size:1.3rem}.notulen-weergave h2{font-size:1.1rem;margin:1em 0 .4em}.notulen-weergave h3{font-size:1rem}
.notulen-weergave blockquote{border-left:3px solid var(--rand);margin:8px 0;padding-left:12px;color:#444}
.notulen-weergave .ql-align-center{text-align:center}.notulen-weergave .ql-align-right{text-align:right}.notulen-weergave .ql-align-justify{text-align:justify}
.notulen-weergave .ql-indent-1{padding-left:2em}.notulen-weergave .ql-indent-2{padding-left:4em}.notulen-weergave .ql-indent-3{padding-left:6em}
.notulen-weergave table{border-collapse:collapse}.notulen-weergave td,.notulen-weergave th{border:1px solid var(--rand);padding:4px 8px}
@media print{.notulen-weergave{border:0;background:#fff}}

/* --- patch4: evaluatie, screening --- */
.scores th.thema{padding-top:14px;color:var(--blauw);font-weight:700;text-transform:capitalize}
.tijdlijn{list-style:none;padding:0;margin:0;border-left:2px solid var(--rand)}
.tijdlijn li{padding:4px 0 10px 14px;position:relative}
.tijdlijn li::before{content:"";position:absolute;left:-6px;top:9px;width:10px;height:10px;border-radius:50%;background:var(--blauw)}

.verborgen{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
