
/* Layout: lichte, luchtige app in ecomflow-stijl — zachte off-white, grote stat-cijfers, koppen met cursieve accenten, pill-knoppen. */
:root{
  --bg:#F6F9F5; --panel:#FFFFFF; --ink:#0E1A14; --muted:#5E6B63; --line:#E3EAE4; --soft:#EEF4EF;
  --green:#1E4D40; --lime:#C9F27A; --green-soft:#E1EEE6; --plate:#F6C700; --plate-ink:#111;
  --ok:#25744A; --ok-bg:#E0F2E6; --warn:#9A5A00; --warn-bg:#FCEFD7; --bad:#B3261E; --bad-bg:#FBE4E2; --grey-bg:#EDF1EE;
  --display:"Manrope","Helvetica Neue",Arial,sans-serif; --serif:"Instrument Serif",Georgia,serif; --body:"Manrope","Helvetica Neue",Arial,sans-serif; --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0C1210; --panel:#131B17; --ink:#E8F0EA; --muted:#93A198; --line:#24302A; --soft:#18221D; --green:#8FD3B4; --lime:#C9F27A; --green-soft:#1A2C24;
  --ok:#7FD3A0; --ok-bg:#16301F; --warn:#F0B35A; --warn-bg:#33270F; --bad:#FF8A80; --bad-bg:#3A1A18; --grey-bg:#1E2823; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0C1210; --panel:#131B17; --ink:#E8F0EA; --muted:#93A198; --line:#24302A; --soft:#18221D; --green:#8FD3B4; --lime:#C9F27A; --green-soft:#1A2C24;
  --ok:#7FD3A0; --ok-bg:#16301F; --warn:#F0B35A; --warn-bg:#33270F; --bad:#FF8A80; --bad-bg:#3A1A18; --grey-bg:#1E2823; color-scheme:dark}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:14px;line-height:1.55}
em.s{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:0}
.app{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}
nav.side{padding:22px 14px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:14px;padding:0 10px 22px;letter-spacing:-.01em}
.brand .mk{width:30px;height:30px;border-radius:9px;background:var(--green);color:var(--lime);display:grid;place-items:center;font-size:12px;font-weight:800}
.brand small{display:block;font-weight:500;color:var(--muted);font-size:11.5px}
.navlbl{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:14px 12px 6px}
nav.side button{all:unset;cursor:pointer;padding:9px 12px;border-radius:999px;font-weight:600;color:var(--muted);display:flex;justify-content:space-between;align-items:center}
nav.side button:hover{background:var(--panel);color:var(--ink)}
nav.side button[aria-current="page"]{background:var(--ink);color:var(--bg)}
nav.side button:focus-visible,.btn:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.count{font-size:11px;font-weight:800;background:var(--lime);color:#0E1A14;border-radius:99px;padding:0 7px}
.user{margin-top:auto;padding:12px;font-size:12px;color:var(--muted);display:flex;gap:10px;align-items:center;justify-content:space-between}
.av{width:30px;height:30px;border-radius:50%;background:var(--green-soft);color:var(--green);display:grid;place-items:center;font-weight:800;flex:none}
main{padding-block:26px 70px;padding-inline:clamp(16px,3vw,40px);min-width:0}
.demo{display:inline-block;background:var(--panel);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:6px 14px;font-size:12px;margin-bottom:22px;font-weight:600}
.eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:800;color:var(--green);margin-bottom:6px}
h1{font-family:var(--display);font-size:clamp(28px,4vw,40px);font-weight:800;margin:0 0 6px;letter-spacing:-.03em;line-height:1.08;text-wrap:balance}
h1 em.s{font-size:1.08em}
.sub{color:var(--muted);margin:0 0 26px;max-width:62ch}
h2{font-size:15px;font-weight:800;margin:0 0 14px;letter-spacing:-.01em}
.grid{display:grid;gap:16px}
.kpis{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));margin-bottom:16px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:22px;min-width:0}
.kpi .l{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:700}
.kpi .v{font-size:30px;font-weight:800;margin-top:8px;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.1}
.kpi .n{font-size:12.5px;color:var(--muted);margin-top:4px}
.kpi.hero{background:var(--green);border-color:var(--green);color:#F6F9F5}
.kpi.hero .l,.kpi.hero .n{color:#BFD8CB}
.kpi.hero .v{color:var(--lime)}
.two{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:700;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:middle;font-variant-numeric:tabular-nums}
tbody tr:last-child td{border-bottom:0}
tr.click{cursor:pointer} tr.click:hover td{background:var(--soft)}
.r{text-align:right}
.plate{display:inline-flex;align-items:stretch;font-family:var(--mono);font-weight:600;font-size:13px;background:var(--plate);color:var(--plate-ink);border:1.5px solid #111;border-radius:5px;overflow:hidden;white-space:nowrap}
.plate::before{content:"NL";background:#1d3fa0;color:#ffe066;font-size:8px;display:flex;align-items:flex-end;padding:0 3px 2px}
.plate span{padding:2px 6px}
.pill{display:inline-block;font-size:12px;font-weight:700;border-radius:99px;padding:3px 10px;white-space:nowrap}
.ok{background:var(--ok-bg);color:var(--ok)} .warn{background:var(--warn-bg);color:var(--warn)} .bad{background:var(--bad-bg);color:var(--bad)} .grey{background:var(--grey-bg);color:var(--muted)}
.btn{all:unset;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;font-size:13.5px;border-radius:999px;padding:10px 18px;background:var(--ink);color:var(--bg)}
.btn:hover{opacity:.88}
.btn.lime{background:var(--lime);color:#0E1A14}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn.sm{padding:6px 12px;font-size:12px}
.btn.danger{background:transparent;color:var(--bad);border:1px solid var(--line)}
.drop{display:block;border:2px dashed var(--line);border-radius:22px;padding:44px 20px;text-align:center;color:var(--muted);cursor:pointer;background:var(--soft);font-weight:600}
.drop b{display:block;font-size:18px;color:var(--ink);margin-bottom:4px}
.drop:hover,.drop.over{border-color:var(--green);color:var(--green)}
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:700;color:var(--muted)}
input,select{font:inherit;font-weight:500;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.steps{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px;font-size:12px}
.steps span{padding:5px 12px;border-radius:99px;background:var(--panel);border:1px solid var(--line);color:var(--muted);font-weight:700}
.steps span.on{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.bar{height:10px;border-radius:99px;background:var(--grey-bg);overflow:hidden}
.bar i{display:block;height:100%;background:var(--green);border-radius:99px}
.dl{display:grid;grid-template-columns:max-content 1fr;gap:8px 18px;font-size:13.5px}
.dl dt{color:var(--muted)} .dl dd{margin:0;font-variant-numeric:tabular-nums;font-weight:600}
.toast{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:999px;font-weight:600;max-width:min(420px,calc(100vw - 40px));box-shadow:0 10px 30px rgba(0,0,0,.18)}
.agenda{list-style:none;margin:0;padding:0}
.agenda li{display:grid;grid-template-columns:96px auto 1fr auto;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.date{font-variant-numeric:tabular-nums;font-weight:700}
/* login */
.login{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}
.login .art{background:var(--green);color:#F6F9F5;padding:48px clamp(24px,5vw,64px);display:flex;flex-direction:column;justify-content:space-between;gap:30px}
.login .art h2{font-size:clamp(32px,4.5vw,54px);line-height:1.02;letter-spacing:-.035em;font-weight:800;margin:0;color:#F6F9F5}
.login .art h2 em.s{color:var(--lime)}
.login .stats{display:flex;gap:28px;flex-wrap:wrap}
.login .stats b{display:block;font-size:30px;font-weight:800;color:var(--lime);letter-spacing:-.03em}
.login .stats span{font-size:12px;color:#BFD8CB}
.login .box{display:grid;place-items:center;padding:40px 20px}
.login form{width:min(380px,100%);display:flex;flex-direction:column;gap:14px}
.login .hint{font-size:12px;color:var(--muted)}
.role{font-size:11.5px;font-weight:700;border-radius:99px;padding:3px 10px;background:var(--grey-bg);color:var(--ink)}
.role.admin{background:var(--ink);color:var(--bg)}
@media (max-width:820px){
  .app{grid-template-columns:1fr} nav.side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;padding:12px 16px;gap:4px}
  .brand{width:100%;padding:0 0 8px} .navlbl,.user{display:none}
  .agenda li{grid-template-columns:84px 1fr}
  .login{grid-template-columns:1fr} .login .art{padding:32px 20px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

.hidden{display:none!important}
.err{color:var(--bad);font-size:13px;font-weight:600;min-height:1em}
.qr{background:#fff;padding:12px;border-radius:16px;display:inline-block;border:1px solid var(--line)}
.qr img{display:block;width:200px;height:200px;image-rendering:pixelated}
.secret{font-family:var(--mono);font-size:13px;word-break:break-all;background:var(--soft);padding:8px 10px;border-radius:10px}
.link{color:var(--green);font-weight:700;text-decoration:underline;cursor:pointer;background:none;border:0;font:inherit;padding:0}
.modal{position:fixed;inset:0;background:rgba(14,26,20,.45);display:grid;place-items:center;padding:20px;z-index:20}
.modal .panel{width:min(520px,100%)}
.done td{opacity:.5;text-decoration:line-through}
