:root{
  --bg:#08090c; --paneel:#0f1117; --paneel-2:#141821; --rand:#1e2330;
  --tekst:#e8ecf2; --gedempt:#79839a; --accent:#3b82c4; --accent-licht:#5fa8e0;
  --ok:#3fb27f; --let-op:#d9a441; --fout:#d1544f;
  --radius:4px; --breed:1200px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--tekst);
  font-family:Inter,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-size:15px; line-height:1.55; -webkit-font-smoothing:antialiased;
}
a{color:var(--accent-licht); text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--accent-licht); outline-offset:2px}

/* ---- koppen ---- */
h1,h2,h3,.merk,.cijfer{font-family:"Bebas Neue",Impact,sans-serif; font-weight:400;
  letter-spacing:.04em; margin:0}
h1{font-size:30px}
h2{font-size:21px; margin-bottom:14px}
h3{font-size:16px; letter-spacing:.08em}
.label{font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--gedempt)}

/* ---- balk ---- */
.balk{border-bottom:1px solid var(--rand); background:#0a0c11; position:sticky; top:0; z-index:20}
.balk-in{max-width:var(--breed); margin:0 auto; padding:0 20px; display:flex;
  align-items:center; gap:26px; height:58px}
.merk{font-size:23px; color:#fff; letter-spacing:.12em}
.merk span{color:var(--accent-licht)}
.nav{display:flex; gap:20px; flex:1; flex-wrap:wrap}
.nav a{color:var(--gedempt); font-size:13px; letter-spacing:.06em; text-transform:uppercase;
  padding:4px 0; border-bottom:2px solid transparent}
.nav a:hover{color:var(--tekst); text-decoration:none}
.nav a.actief{color:#fff; border-bottom-color:var(--accent)}
.balk-rechts{display:flex; align-items:center; gap:14px; font-size:13px; color:var(--gedempt)}

.omhulsel{max-width:var(--breed); margin:0 auto; padding:26px 20px 70px}
.kop{display:flex; justify-content:space-between; align-items:flex-end; gap:16px;
  flex-wrap:wrap; margin-bottom:22px}

/* ---- kaarten ---- */
.kaart{background:var(--paneel); border:1px solid var(--rand); border-radius:var(--radius);
  padding:18px 20px; margin-bottom:16px}
.rooster{display:grid; gap:16px}
.rooster-4{grid-template-columns:repeat(4,1fr)}
.rooster-3{grid-template-columns:repeat(3,1fr)}
.rooster-2{grid-template-columns:2fr 1fr}
.cijfer{font-size:38px; line-height:1; color:#fff}
.cijfer.blauw{color:var(--accent-licht)}

/* ---- tabel ---- */
table{width:100%; border-collapse:collapse; font-size:14px}
th{text-align:left; font-size:11px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--gedempt); font-weight:500; padding:0 12px 10px; border-bottom:1px solid var(--rand)}
td{padding:13px 12px; border-bottom:1px solid #171b25; vertical-align:middle}
tbody tr:hover{background:var(--paneel-2)}
td.nr{font-variant-numeric:tabular-nums; white-space:nowrap}
.leeg{text-align:center; color:var(--gedempt); padding:40px 0}

/* ---- status ---- */
.status{display:inline-block; font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  padding:4px 9px; border-radius:2px; border:1px solid; white-space:nowrap}
.s-nieuw{color:#8fa2bd; border-color:#33405a; background:#141a26}
.s-analyse{color:#8fa2bd; border-color:#33405a; background:#141a26}
.s-restauratie{color:var(--accent-licht); border-color:#2b5580; background:#101c2a}
.s-renderen{color:var(--accent-licht); border-color:#2b5580; background:#101c2a}
.s-controle{color:var(--let-op); border-color:#5c4720; background:#231c0f}
.s-geleverd{color:var(--ok); border-color:#255744; background:#0e2019}
.s-geannuleerd{color:#8b8b8b; border-color:#333; background:#151515}

/* ---- signatuur: renderrail ---- */
.rail{display:flex; gap:3px; margin:20px 0 6px}
.rail-stap{flex:1; min-width:0}
.rail-balk{height:5px; background:#1a1f2b; border-radius:1px; position:relative; overflow:hidden}
.rail-stap.klaar .rail-balk{background:var(--accent)}
.rail-stap.nu .rail-balk{background:linear-gradient(90deg,var(--accent) 0 55%,#1a1f2b 55%)}
.rail-stap.nu .rail-balk::after{content:""; position:absolute; inset:0;
  background:linear-gradient(90deg,transparent,rgba(95,168,224,.55),transparent);
  animation:scan 2.2s linear infinite}
@keyframes scan{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.rail-naam{font-size:10px; letter-spacing:.08em; text-transform:uppercase;
  color:#4d566b; margin-top:8px; white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis}
.rail-stap.klaar .rail-naam{color:var(--gedempt)}
.rail-stap.nu .rail-naam{color:#fff}
.rail.gestopt .rail-balk{background:#2a2a2a}
@media (prefers-reduced-motion:reduce){.rail-stap.nu .rail-balk::after{animation:none}}

/* ---- tijdlijn ---- */
.tijdlijn{list-style:none; margin:0; padding:0}
.tijdlijn li{position:relative; padding:0 0 18px 22px; border-left:1px solid var(--rand)}
.tijdlijn li:last-child{border-left-color:transparent; padding-bottom:0}
.tijdlijn li::before{content:""; position:absolute; left:-4.5px; top:6px; width:8px; height:8px;
  border-radius:50%; background:var(--accent)}
.tijdlijn li.stil::before{background:#39404f}
.tijdlijn .wanneer{font-size:11px; color:var(--gedempt); letter-spacing:.06em}

/* ---- formulieren ---- */
label{display:block; font-size:11px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--gedempt); margin-bottom:6px}
input[type=text],input[type=email],input[type=password],input[type=number],
input[type=date],input[type=search],select,textarea,input[type=file]{
  width:100%; background:#0a0c11; border:1px solid var(--rand); color:var(--tekst);
  border-radius:var(--radius); padding:9px 11px; font-family:inherit; font-size:14px}
textarea{min-height:84px; resize:vertical}
input:focus,select:focus,textarea:focus{border-color:var(--accent); outline:none}
.veld{margin-bottom:14px}
.velden{display:grid; grid-template-columns:repeat(2,1fr); gap:0 14px}
.aankruis{display:flex; align-items:center; gap:8px; font-size:13px; color:var(--gedempt);
  text-transform:none; letter-spacing:0; margin:10px 0}
.aankruis input{width:auto}

.knop{display:inline-block; background:var(--accent); color:#fff; border:1px solid var(--accent);
  border-radius:var(--radius); padding:9px 18px; font-family:inherit; font-size:13px;
  font-weight:500; letter-spacing:.04em; cursor:pointer}
.knop:hover{background:var(--accent-licht); border-color:var(--accent-licht); text-decoration:none}
.knop.stil{background:transparent; color:var(--tekst); border-color:var(--rand)}
.knop.stil:hover{background:var(--paneel-2); border-color:var(--gedempt)}
.knop.gevaar{background:transparent; color:var(--fout); border-color:#4a2321}
.knop.gevaar:hover{background:#1d1211; border-color:var(--fout)}
.knop.klein{padding:5px 11px; font-size:12px}
.knoprij{display:flex; gap:10px; flex-wrap:wrap; align-items:center}

/* ---- meldingen ---- */
.melding{border-radius:var(--radius); padding:12px 16px; margin-bottom:18px; font-size:14px;
  border:1px solid}
.melding.goed{background:#0e2019; border-color:#255744; color:#8fe0bd}
.melding.slecht{background:#1d1211; border-color:#4a2321; color:#f0a5a2}
.melding code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace; background:#000;
  padding:2px 7px; border-radius:2px; color:#fff; user-select:all}

/* ---- bestanden ---- */
.bestand{display:flex; align-items:center; gap:14px; padding:11px 0;
  border-bottom:1px solid #171b25}
.bestand:last-child{border-bottom:none}
.bestand-naam{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.bestand-meta{font-size:12px; color:var(--gedempt); white-space:nowrap}
.tag{font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--gedempt);
  border:1px solid var(--rand); padding:2px 7px; border-radius:2px}
.verborgen-rij{opacity:.5}

.inline{display:inline}
.gedempt{color:var(--gedempt)}
.klein{font-size:13px}
.rechts{text-align:right}
hr{border:none; border-top:1px solid var(--rand); margin:18px 0}

/* ---- inloggen ---- */
.inlog{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px}
.inlog-kaart{width:100%; max-width:380px}
.inlog .merk{font-size:34px; display:block; margin-bottom:6px}

@media(max-width:900px){
  .rooster-4{grid-template-columns:repeat(2,1fr)}
  .rooster-3,.rooster-2{grid-template-columns:1fr}
  .velden{grid-template-columns:1fr}
  .balk-in{height:auto; padding:12px 20px; flex-wrap:wrap; gap:12px}
  .rail-naam{display:none}
  table{font-size:13px}
  td,th{padding:10px 7px}
  .verbergen-klein{display:none}
}
