/* Huishoudplanning: spreadsheetachtig (rasterlijnen, gele dag/tijd-cel, tabbladen onderin), verder rustig. */
:root{
  --bg:#f5f6f4; --vlak:#fff; --tekst:#1d2421; --zacht:#5b6661; --rand:#d3d9d5; --rand-zacht:#e6eae7;
  --accent:#1f6f5c; --accent-diep:#185848; --accent-zacht:#e1f0eb; --op-accent:#fff;
  --geel:#fff1a6; --geel-tekst:#3b3405; --kop:#eef1ef; --rij-kop:#f3f5f3;
  --rood:#b42318; --rood-zacht:#fde8e6; --oranje:#8a5200; --oranje-zacht:#fff1dc; --blauw:#1f4f9a; --blauw-zacht:#e6eefb;
  --grijs-vlak:repeating-linear-gradient(135deg,#eef0ee 0 6px,#e4e7e4 6px 12px);
  --schaduw:0 1px 2px rgba(20,30,25,.06),0 4px 16px rgba(20,30,25,.06);
  --f-tekst:"Segoe UI",system-ui,-apple-system,Calibri,Arial,sans-serif;
  --f-data:"Cascadia Mono",Consolas,ui-monospace,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#141917; --vlak:#1c2320; --tekst:#e6ece9; --zacht:#a2aea8; --rand:#34403b; --rand-zacht:#2a3430;
  --accent:#5fc3a6; --accent-diep:#7fd6bd; --accent-zacht:#1d3a32; --op-accent:#0d1a16;
  --geel:#4a4316; --geel-tekst:#fbefb0; --kop:#232c28; --rij-kop:#202925;
  --rood:#ff8a7f; --rood-zacht:#3d1f1c; --oranje:#f3b35b; --oranje-zacht:#3a2c15; --blauw:#8fb6ff; --blauw-zacht:#1c2a44;
  --grijs-vlak:repeating-linear-gradient(135deg,#222a26 0 6px,#1b211e 6px 12px);
  color-scheme:dark}}
*{box-sizing:border-box}
/* Anders wint display:grid van .veld en blijft een verborgen veld staan. */
[hidden]{display:none!important}
html,body{margin:0}
body{background:var(--bg);color:var(--tekst);font:15px/1.5 var(--f-tekst)}
a{color:var(--accent)}
h1,h2,h3,h4{line-height:1.25;margin:0 0 8px}
h1{font-size:1.45rem} h2{font-size:1.2rem} h3{font-size:1.05rem} h4{font-size:.95rem;margin-top:16px}
p{margin:0 0 10px}
.verborgen{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hint{color:var(--zacht);font-size:.88rem}
.zacht{color:var(--zacht)}
.mono{font-family:var(--f-data);font-size:.88em}
.label{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--zacht);font-weight:700}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* kop en menu */
.kop{display:flex;flex-wrap:wrap;align-items:center;gap:6px 20px;padding:10px 20px;background:var(--vlak);border-bottom:1px solid var(--rand)}
.merk{font-weight:800;color:var(--tekst);text-decoration:none;font-size:1.05rem}
.kop nav{display:flex;flex-wrap:wrap;gap:2px}
.kop nav a,.kop-r a{padding:6px 10px;border-radius:6px;text-decoration:none;color:var(--zacht)}
.kop nav a:hover,.kop-r a:hover{background:var(--kop);color:var(--tekst)}
.kop a[aria-current="page"]{background:var(--accent-zacht);color:var(--accent);font-weight:700}
.kop-r{margin-left:auto;display:flex;align-items:center;gap:4px}
.kop-r form{margin:0}
button.link{background:none;border:0;color:var(--zacht);cursor:pointer;padding:6px 10px;font:inherit}
button.link:hover{color:var(--tekst);text-decoration:underline}

.hoofd{padding:20px;max-width:1500px;margin:0 auto}
.melding{display:flex;gap:16px;align-items:center;justify-content:space-between;padding:10px 20px;border-bottom:1px solid var(--rand)}
.melding form{margin:0}
.melding-ok{background:var(--accent-zacht)}
.melding-fout{background:var(--rood-zacht);color:var(--rood);font-weight:600}

/* knoppen en velden */
.knop{display:inline-flex;align-items:center;justify-content:center;gap:4px;border:1px solid var(--rand);background:var(--vlak);color:var(--tekst);border-radius:6px;padding:6px 12px;min-height:34px;cursor:pointer;font:inherit;text-decoration:none;line-height:1.2;white-space:nowrap}
.knop:hover{border-color:var(--accent)}
.knop.hoofdknop{background:var(--accent);border-color:var(--accent);color:var(--op-accent);font-weight:700}
.knop.hoofdknop:hover{background:var(--accent-diep)}
.knop.klein{padding:2px 8px;min-height:28px;font-size:.84rem}
input,select,textarea{font:inherit;color:inherit;background:var(--vlak);border:1px solid var(--rand);border-radius:6px;padding:6px 8px;min-height:34px}
input[type=checkbox],input[type=radio]{min-height:0;accent-color:var(--accent);width:16px;height:16px}
.veld{display:grid;gap:4px;margin-bottom:10px}
.veld label{font-weight:600;font-size:.9rem;display:grid;gap:4px}
.veld input,.veld select{width:100%}
.rij2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
fieldset.keuze{border:1px solid var(--rand);border-radius:6px;padding:6px 12px 8px;margin:0 0 10px}
fieldset.keuze legend{font-weight:600;font-size:.9rem;padding:0 4px}
fieldset.keuze label,.vinkje{display:flex;align-items:center;gap:8px;padding:3px 0;font-weight:400}
fieldset.kolommen{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:2px 12px}
.knoppen,.paneel-knoppen{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.paneel-knoppen{justify-content:flex-end}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.filters input[type=search]{min-width:280px;flex:1}
.paginakop{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}
.paginakop h1{margin:0}
.tel-groot{font-size:.9rem;color:var(--zacht);font-weight:400;margin-left:6px}
.vak{background:var(--vlak);border:1px solid var(--rand);border-radius:8px;padding:18px;margin-bottom:16px}
.vak.smal{max-width:760px}
.twee{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:16px;align-items:start}
.sectiekop{margin-top:20px}
.waarsch{background:var(--rood-zacht);color:var(--rood);padding:8px 10px;border-radius:6px;font-size:.9rem;margin:0 0 10px}
.fouttekst{color:var(--rood);font-weight:600}

/* het venster met weekbalk en tabbladen */
.venster{background:var(--vlak);border:1px solid var(--rand);border-radius:10px;box-shadow:var(--schaduw);overflow:hidden}
.balk{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--rand);background:var(--kop)}
.balk-l,.balk-r{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.weeknav{display:flex;align-items:center;gap:4px}
.weektitel{min-width:150px;text-align:center;line-height:1.2}
.weektitel small{display:block;color:var(--zacht);font-size:.8rem}
.springen{margin:0}
.inhoud{padding:16px;min-height:360px}
.kopregel{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 16px;margin-bottom:10px}
.kopregel h1{margin:0}
.beschikbaar-regel{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;margin:0;font-size:.86rem;color:var(--zacht)}
.bs{padding:1px 6px;border-radius:4px;font-family:var(--f-data);font-size:.8rem}
.bs b{font-family:var(--f-tekst)}
.bs-ja{background:var(--accent-zacht);color:var(--tekst)}
.bs-nee{background:var(--kop);color:var(--zacht)}
.bs-onbekend{color:var(--zacht)}
/* relative: anders schuift een verborgen kopje (absolute) de hele pagina breder */
.tabel-wrap{position:relative;overflow-x:auto;border:1px solid var(--rand);border-radius:6px;background:var(--vlak)}
table{border-collapse:collapse;width:100%}

/* weekplanning per hulpverlener */
.blad{font-size:.92rem;min-width:1000px}
.blad th{background:var(--kop);text-align:left;padding:7px 10px;border:1px solid var(--rand);font-size:.8rem;white-space:nowrap}
.blad td{border:1px solid var(--rand-zacht);padding:6px 10px;vertical-align:top}
.blad tr.dagkop td{background:var(--rij-kop);font-weight:700;color:var(--zacht);font-size:.84rem;padding:5px 10px}
.blad td.tijd{background:var(--geel);color:var(--geel-tekst);font-family:var(--f-data);white-space:nowrap;font-variant-numeric:tabular-nums}
.blad td.duur{font-family:var(--f-data);white-space:nowrap;font-size:.86rem}
.blad td.naam a{font-weight:700;color:var(--tekst);text-decoration:none}
.blad td.naam a:hover{text-decoration:underline}
.blad tr.niet-door td{color:var(--zacht)}
.blad tr.niet-door td.tijd{background:transparent;text-decoration:line-through}
.blad tr.niet-door td.naam a{text-decoration:line-through;color:var(--zacht)}
.blad tr.ander-gaat td{color:var(--zacht)}
.blad tr.ander-gaat td.tijd{background:var(--kop)}
.blad tr.ander-gaat td.naam a{color:var(--zacht)}
.blad tr.probleem td{background:var(--rood-zacht)}
.blad tr.probleem td.tijd{color:var(--rood);font-weight:700}
.acties{display:flex;gap:4px;flex-wrap:nowrap;margin:0}
.labels{margin-top:2px}
.pil{display:inline-block;font-size:.74rem;padding:1px 7px;border-radius:999px;margin:2px 4px 0 0;font-weight:700;white-space:nowrap;vertical-align:middle}
.pil.inv{background:var(--blauw-zacht);color:var(--blauw)}
.pil.verpl{background:var(--oranje-zacht);color:var(--oranje)}
.pil.fout{background:var(--rood-zacht);color:var(--rood)}
.pil.grijs{background:var(--rand-zacht);color:var(--zacht)}
.pil.org{background:var(--accent-zacht);color:var(--accent)}
.leeg{padding:28px;color:var(--zacht);text-align:center}
.totaal{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-top:10px;color:var(--zacht);font-size:.92rem}
.totaal strong{color:var(--tekst)}

/* tabbladen onderin, zoals in Excel */
.tabs{display:flex;gap:2px;overflow-x:auto;padding:0 12px;background:var(--kop);border-top:1px solid var(--rand)}
.tabs a{display:flex;align-items:center;gap:6px;padding:8px 13px;white-space:nowrap;color:var(--zacht);text-decoration:none;border:1px solid transparent;border-top:0;border-radius:0 0 6px 6px}
.tabs a:hover{color:var(--tekst)}
.tabs a[aria-current="page"]{background:var(--vlak);border-color:var(--rand);color:var(--accent);font-weight:700;box-shadow:inset 0 3px 0 var(--accent)}
.tabs a.tab-invaller{font-style:italic}
.tabs .tel{font-family:var(--f-data);font-size:.74rem;opacity:.7}
.tabs .stip{background:var(--rood);color:#fff;border-radius:999px;font-size:.7rem;font-weight:800;padding:0 5px;font-style:normal}

/* weekoverzicht en beschikbaarheid */
.raster{table-layout:fixed;min-width:1000px}
.raster th{background:var(--kop);padding:7px 8px;border:1px solid var(--rand);text-align:left;font-size:.84rem;vertical-align:top}
.raster th small{display:block;font-weight:400;color:var(--zacht)}
.raster th.persoon-kop{width:150px}
.raster th.persoon{background:var(--rij-kop)}
.raster th.persoon a{color:var(--tekst)}
.raster th.persoon small{display:block;font-family:var(--f-data);font-size:.76rem}
.raster td{border:1px solid var(--rand-zacht);vertical-align:top;padding:5px;height:84px}
.raster td.cel-nee{background:var(--grijs-vlak)}
.raster td.doel{background:var(--accent-zacht);outline:2px dashed var(--accent);outline-offset:-3px}
.cel-bs{display:block;font-size:.72rem;color:var(--zacht);font-family:var(--f-data);margin-bottom:3px;min-height:1em}
.kaart{display:block;width:100%;text-align:left;border:1px solid var(--rand);border-left:4px solid var(--accent);background:var(--vlak);color:var(--tekst);border-radius:5px;padding:3px 6px;margin-bottom:4px;font:inherit;font-size:.8rem;line-height:1.3;cursor:grab}
.kaart:hover{border-color:var(--accent)}
.kaart .t{display:block;font-family:var(--f-data);font-size:.72rem;color:var(--zacht)}
.kaart small{display:block;color:var(--zacht);font-size:.72rem}
.kaart-inv{border-left-color:var(--blauw);border-style:dashed;border-left-style:solid}
.kaart-probleem{border-left-color:var(--rood);background:var(--rood-zacht)}
.kaart small.kaart-fout{color:var(--rood);font-weight:700}
.kaart-vervalt{text-decoration:line-through;color:var(--zacht);border-left-color:var(--rand)}
.kaart.sleept{opacity:.4}
.raster-bs td{height:auto;font-size:.8rem;font-family:var(--f-data)}
.raster-bs td.cel-ja{background:var(--accent-zacht)}
.raster-bs td.cel-onbekend{color:var(--zacht);font-family:var(--f-tekst);font-style:italic}
.raster-bs tr.gekozen th{box-shadow:inset 4px 0 0 var(--accent)}
.legenda{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:.84rem;color:var(--zacht)}
.voorbeeld{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:5px;border:1px solid var(--rand)}
.voorbeeld-inv{border-left:4px solid var(--blauw)}
.voorbeeld-probleem{background:var(--rood-zacht);border-left:4px solid var(--rood)}
.voorbeeld-nee{background:var(--grijs-vlak)}
.patroon{width:auto;margin-bottom:8px}
.patroon th,.patroon td{padding:3px 8px 3px 0;text-align:left;font-size:.9rem}
.afwijkingen{list-style:none;padding:0;margin:0}
.afwijkingen li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--rand-zacht)}
.afwijkingen li form{margin:0}
.afw-extra strong{color:var(--accent)}
.afwijking-form{border-bottom:1px solid var(--rand);padding-bottom:12px;margin-bottom:8px}

/* lijsten */
.lijst th{background:var(--kop);text-align:left;padding:7px 10px;border-bottom:1px solid var(--rand);font-size:.8rem;white-space:nowrap}
.lijst td{padding:7px 10px;border-bottom:1px solid var(--rand-zacht);vertical-align:top}
.lijst td.naam a{font-weight:700;color:var(--tekst)}
.lijst tr.niet-door td{color:var(--zacht)}
.afspraakregel{display:block;font-size:.86rem;white-space:nowrap}
.inline-bewerk summary{cursor:pointer;color:var(--accent)}
.inline-bewerk .paneel{margin-top:8px;min-width:260px}
.serie{border-bottom:1px solid var(--rand-zacht);padding:10px 0}
.serie details{margin-top:6px}
.serie summary{cursor:pointer;color:var(--accent);font-size:.9rem}
.serie-form{padding:10px 0 0}
.controle{margin:6px 0 0;padding-left:18px;font-size:.88rem}
.controle li{margin-bottom:3px}
.pad{background:var(--kop);padding:6px 8px;border-radius:4px;word-break:break-all}

/* vensters */
.venster-dialoog{border:0;padding:0;border-radius:10px;box-shadow:0 10px 40px rgba(0,0,0,.25);width:min(460px,calc(100% - 24px));max-height:calc(100% - 24px);background:var(--vlak);color:var(--tekst)}
.venster-dialoog::backdrop{background:rgba(10,20,16,.4)}
.paneel{padding:20px;display:grid;gap:4px}
.paneel h2{margin:2px 0 4px}

/* inloggen */
body.inlog{display:grid;place-items:center;min-height:100vh;padding:16px}
.inlogvak{background:var(--vlak);border:1px solid var(--rand);border-radius:10px;padding:28px;width:min(380px,100%);display:grid;gap:8px;box-shadow:var(--schaduw)}
.inlogvak input{width:100%}
.inlogvak .knop{margin-top:8px}
.inlogmelding{padding:8px 10px;border-radius:6px;margin:0}

/* algemeen, nieuw voor meerdere gebruikers */
.pil.ok{background:var(--accent-zacht);color:var(--accent)}
.midden{text-align:center}
.knop.groot{width:100%;min-height:48px;font-size:1.05rem;margin-top:8px}
.veldlabel{font-weight:600;font-size:.9rem}
.paneel-los{display:grid;gap:4px;margin-top:10px}
.tellers{gap:6px}
.stappen{margin:0 0 10px;padding-left:20px}
.qr{background:#fff;display:inline-block;padding:8px;border-radius:6px;border:1px solid var(--rand)}
.qr svg{display:block;width:200px;height:200px}
.linkvak{border-color:var(--accent);background:var(--accent-zacht)}
.kopieer{display:flex;gap:8px}
.kopieer input{flex:1;min-width:0}
.gegevens{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;margin:0 0 12px}
.gegevens dt{color:var(--zacht)}
.gegevens dd{margin:0}
.handtekening-groot{display:block;max-width:100%;width:420px;background:#fff;border:1px solid var(--rand);border-radius:6px}
.kaart-af{border-left-color:var(--accent);background:var(--accent-zacht);text-decoration:none;cursor:pointer}
.export-pdf{max-width:none}
.pdf-velden{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:0 12px}

/* hulpverlener: mijn week op de telefoon */
.mijn,.aftekenen{max-width:640px;margin:0 auto}
.mijn-kop{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.mijn-kop .knop{min-width:44px;min-height:44px}
.mijn-dag{font-size:1rem;margin:18px 0 6px;color:var(--zacht)}
.mijn-dag.vandaag{color:var(--accent)}
.mijn-bezoek{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;background:var(--vlak);border:1px solid var(--rand);border-radius:8px;padding:12px;margin-bottom:8px}
.mijn-bezoek.niet-door{opacity:1;color:var(--zacht)}
.mijn-bezoek.niet-door strong{text-decoration:line-through}
.mijn-tijd{background:var(--geel);color:var(--geel-tekst);font-family:var(--f-data);padding:4px 8px;border-radius:5px;align-self:start;white-space:nowrap}
.mijn-info{display:grid;gap:2px;min-width:0}
.mijn-info a[href^="tel:"]{color:var(--accent);font-family:var(--f-data)}
.mijn-actie{grid-column:1 / -1}
.mijn-actie .knop{width:100%;min-height:44px}

/* aftekenen: het tekenvak */
.aftekenformulier .veld input,.aftekenformulier .veld select{min-height:44px}
.tekenvak-wrap{position:relative}
.tekenvak{display:block;width:100%;height:200px;background:#fff;border:2px solid var(--rand);border-radius:8px;touch-action:none;cursor:crosshair}
.tekenvak-lijn{position:absolute;left:8%;right:8%;bottom:42px;border-bottom:1px dashed #b8beba;pointer-events:none}
.tekenvak-onder{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:4px}

@media (max-width:700px){.hoofd{padding:12px}.rij2{grid-template-columns:1fr}.twee{grid-template-columns:1fr}.kop-r{margin-left:0}
  .kop{padding:8px 12px}.kop nav{width:100%;overflow-x:auto;flex-wrap:nowrap}.kop nav a{white-space:nowrap}
  .aftekenformulier .rij2{grid-template-columns:1fr 1fr}
  .knop{min-height:40px}}
@media print{.kop,.balk,.tabs,.acties,.melding{display:none}.venster{border:0;box-shadow:none}}
