:root{--bg:#f6f7f5;--card:#fff;--ink:#1d2421;--muted:#5f6b66;--line:#d9dfdb;--accent:#1f6b52;--accent-ink:#fff;
--warn:#a35d00;--warn-bg:#fff4e0;--err:#a3231b;--err-bg:#fdecea;--ok-bg:#e8f5ee;--info-bg:#eaf1f8;
--concept:#eceff1;--voorlopig:#fff4d6;--definitief:#dff1e6;--coll:#e9e2f7}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#121614;--card:#1b201d;--ink:#e6ebe8;--muted:#9aa6a0;
--line:#2f3833;--accent:#4fb08c;--accent-ink:#0b1310;--warn:#f0b35a;--warn-bg:#33270f;--err:#ff8f86;--err-bg:#3a1714;--ok-bg:#163024;
--info-bg:#15263a;--concept:#252b28;--voorlopig:#3a3115;--definitief:#163024;--coll:#2b2240}}
*{box-sizing:border-box}
body{margin:0;font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--accent)}
header.top{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;justify-content:space-between;padding:.6rem 1rem;
background:var(--card);border-bottom:1px solid var(--line)}
.brand{font-weight:700;text-decoration:none;color:var(--ink)}
header nav{display:flex;flex-wrap:wrap;gap:.25rem .9rem;align-items:center}
main{max-width:1500px;margin:0 auto;padding:1rem}
h1{font-size:1.45rem;margin:.4rem 0 1rem}h2{font-size:1.1rem;margin:.2rem 0 .7rem}h3{font-size:1rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:1rem;margin-bottom:1rem}
.card.inner{margin:0}.card.narrow{max-width:460px;margin:2rem auto}
.card.selected,.selected{outline:2px solid var(--accent)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:1rem}
.stats{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}
.stat{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:.7rem 1rem;min-width:170px}
.stat b{display:block;font-size:1.3rem}.stat span{color:var(--muted);font-size:.85rem}
label{display:block;margin:.45rem 0;font-size:.9rem}
input,select,textarea,button{font:inherit}
input:not([type=checkbox]),select,textarea{display:block;width:100%;margin-top:.2rem;padding:.45rem .5rem;border:1px solid var(--line);
border-radius:6px;background:var(--bg);color:var(--ink)}
label.check{display:flex;gap:.45rem;align-items:center}label.check input{width:auto}
button,.btn{display:inline-block;padding:.45rem .8rem;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink);
cursor:pointer;text-decoration:none;font-size:.9rem}
button.primary,.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
button.danger{border-color:var(--err);color:var(--err)}
button.small{padding:.25rem .5rem;font-size:.8rem}
button.link{border:0;background:none;color:var(--accent);padding:0}
button:disabled{opacity:.5;cursor:not-allowed}
form.inline{display:inline}
.inline-form{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-end;margin:.4rem 0}
.inline-form label{margin:0}.inline-form input:not([type=checkbox]),.inline-form select{width:auto;min-width:6rem}
.w4{max-width:5rem}.w6{max-width:7rem}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.2rem 1rem;align-items:end}
.form-grid button{justify-self:start}
.flash{padding:.6rem .8rem;border-radius:6px;margin-bottom:.8rem;background:var(--info-bg)}
.flash.success{background:var(--ok-bg)}.flash.warning{background:var(--warn-bg)}.flash.error{background:var(--err-bg);color:var(--err)}
.muted{color:var(--muted)}
.badge{display:inline-block;font-size:.72rem;padding:.05rem .4rem;border-radius:4px;background:var(--concept);margin:.1rem .1rem 0 0;white-space:nowrap}
.badge.test{background:var(--err-bg);color:var(--err);font-weight:700}
.badge.coll{background:var(--coll)}
.st-concept .badge.st-concept,.badge.st-concept{background:var(--concept)}
.badge.st-voorlopig{background:var(--voorlopig)}.badge.st-definitief{background:var(--definitief)}
.lvl-fout{color:var(--err)}.lvl-waarschuwing{color:var(--warn)}
.row-between{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.actions{display:flex;flex-wrap:wrap;gap:.4rem}
table{border-collapse:collapse;width:100%}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.list th,table.list td{border-bottom:1px solid var(--line);padding:.4rem .5rem;text-align:left;vertical-align:top;font-size:.9rem}
table.list.compact td,table.list.compact th{padding:.25rem .4rem;font-size:.82rem}
tr.inactive{opacity:.55}tr.unfair td{background:var(--warn-bg)}tr.missing td{background:var(--warn-bg)}tr.coll td{background:var(--coll)}
tr.blocked td{background:var(--err-bg)}
table.plan{background:var(--card);border:1px solid var(--line)}
table.plan th,table.plan td{border:1px solid var(--line);padding:.35rem .45rem;vertical-align:top;font-size:.82rem;min-width:150px}
table.plan thead th{position:sticky;top:0;background:var(--card);z-index:1}
.nightcell{text-align:left;min-width:190px}.nightcell span{display:block}.nnum{font-weight:700;font-size:.95rem}
tr.st-voorlopig .nightcell{background:var(--voorlopig)}tr.st-definitief .nightcell{background:var(--definitief)}
td.conflict{background:var(--err-bg)}td.unfilled{background:var(--warn-bg)}td.na{color:var(--muted);background:var(--bg)}
.who{font-weight:600;text-decoration:none;display:block}
.portion{display:block;color:var(--muted);font-size:.78rem;margin-top:.15rem}
.exec{display:block;font-size:.78rem;color:var(--accent)}.exec.diff{color:var(--warn)}
.subnav{display:flex;flex-wrap:wrap;gap:.3rem 1rem;align-items:center;margin-bottom:.8rem;padding:.5rem .7rem;background:var(--card);
border:1px solid var(--line);border-radius:8px}
.weeks{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.6rem}
.week{border:1px solid var(--line);border-radius:6px;padding:.6rem}.week.st-voorlopig{background:var(--voorlopig)}.week.st-definitief{background:var(--definitief)}
.week-form{display:flex;flex-wrap:wrap;gap:.3rem;margin:.4rem 0}.week-form input:not([type=checkbox]){margin:0}
.exports{font-size:.85rem}
.warn{padding:.6rem .8rem;border-radius:6px;margin-bottom:.5rem;border-left:4px solid var(--line);background:var(--card)}
.lvl-box-fout{border-color:var(--err);background:var(--err-bg)}.lvl-box-waarschuwing{border-color:var(--warn);background:var(--warn-bg)}
.lvl-box-info{border-color:var(--accent)}
ul.log{list-style:none;padding:0;font-size:.85rem}ul.log li{padding:.25rem 0;border-bottom:1px solid var(--line)}
.checks{display:flex;flex-wrap:wrap;gap:.2rem 1rem}
fieldset{border:1px solid var(--line);border-radius:6px;margin:.6rem 0}
article.night header{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}
article.night ul{padding-left:1.1rem}article.night li{margin:.3rem 0}
article.unread{border-left:4px solid var(--accent)}
.pre{white-space:pre-wrap}
pre{overflow-x:auto;background:var(--bg);padding:.5rem;font-size:.8rem}
@media (max-width:640px){main{padding:.6rem}.card{padding:.75rem}h1{font-size:1.25rem}}
@media print{header.top,.subnav,.toolbar,form,.flash,.exports{display:none!important}body{background:#fff;color:#000}
.card{border:0;padding:0}table.plan th,table.plan td{font-size:9px;min-width:0}}
