/*    vorio-base.css — Vorio Gedeelde Stijl
   Versie 3.0
   Merge van vorio-stijl.css v2.0 + admin.php/dossiers.html design tokens.
   Backwards-compat: zowel --p (legacy) als --accent (nieuw) bestaan.
   Kantoor-kleuren worden overschreven via CSS-variabelen vanuit DB.
 */

/* ── CSS Variabelen */
:root {
 /* Primary (legacy --p naming + nieuwere --accent alias) */
 --p: #1a6bdc;
 --p2: #1558c0;
 --p-light: #e8f4fc;
  --accent:        var(--p);
  --accent2:       var(--p2);
  --accent-light:  var(--p-light);
  --row-hover:     rgba(26,107,220,.06);
  --grad: linear-gradient(135deg, var(--p2), var(--p));

 /* Backgrounds */
 --bg: #f0f4f8;
 --bg2: #ffffff;
 --bg3: #f8fafc;
 --bg4: #f1f5f9;

 /* Borders */
 --border: #e2e8f0;
 --border2: #d0d7e2;

 /* Text */
 --text1: #1a1a2e;
 --text2: #475569;
 --text3: #64748b;

 /* Status colors */
 --green: #15803d;
 --green-light: #f0fdf4;
 --green-bg: #dcfce7;
 --green-border: #b7e4c7;
  --green-text:   var(--green);
 --red: #b91c1c;
 --red-solid: #dc2626;
 --red-light: #fef2f2;
 --red-border: #f5c6c2;
  --red-bg:       rgba(239,68,68,.10);
 --red-text: #7f1d1d;
 --amber: #d97706;
 --amber-light: #fffbeb;
  --amber-text:   var(--amber);
  --amber-bg:     rgba(217,119,6,.10);
  --amber-border: rgba(217,119,6,.25);
 --purple: #7c3aed;
 --purple-light:#f5f3ff;
 --goud: #c8a96e;
 --goud2: #8b7345;
 --goud-light: #faf5ec;

 /* Layout — radius-scale */
  --r-xs: 4px;
  --r-sm: 6px;
 --r: 10px; /* --r-md alias */
  --r-md: var(--r);
  --r-lg: 14px;
  --r-xl: 18px;
  --r-2xl:22px;
  --r-pill: 999px;
  --shadow: 0 1px 4px rgba(0,0,0,.06);
 /* Focus-ring (4px translucent accent) */
 --ring: 0 0 0 4px color-mix(in srgb, var(--accent,#1a6bdc) 14%, transparent);
 /* Gap-alias */
  --gap: var(--space-3);

 /* Typography */
  --font: 'DM Sans', system-ui, -apple-system, sans-serif;
  --mono: 'DM Sans', system-ui, sans-serif;
 /* Universele font-tokens (gebruikt in per-page CSS — moeten in beide thema's bestaan) */
  --font-display: 'DM Serif Display', serif;
  --font-body: 'DM Sans', 'Apple Color Emoji', 'Segoe UI Emoji', sans-serif;
  --font-kantoor: var(--font-body);
  --font-mono: 'DM Mono', monospace;

 /* Vorio design-tokens */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --font-xs: 10.5px;
  --font-sm: 12px;
  --font-md: 13.5px;
  --font-lg: 15px;
  --font-xl: 18px;
  --font-2xl: 22px;
  --shadow-sm: 0 1px 3px rgba(15,23,42,.06);
  --shadow-md: 0 4px 14px rgba(15,23,42,.08);
  --shadow-lg: 0 10px 30px rgba(15,23,42,.12);

 /* Surfaces / inputs (semantische tokens — los van bg2 voor dark-mode-controle) */
 --surface: var(--bg2); /* card-oppervlak */
 --surface-2: var(--bg3); /* genest oppervlak, subtieler */
 --surface-hover: var(--bg4); /* hover-state op rijen/items */
  --input-bg:       var(--bg2);
  --input-border:   var(--border2);
  --code-bg:        var(--bg4);

 /* Legacy per-page aliassen (compat — voorheen in per-page :root gedefinieerd) */
  --text:   var(--text1);
  --muted:  var(--text3);
 --pl: var(--p-light); /* light primary tint */
 --pg: var(--p-light); /* primary "page" tint, was iets lichter blauw */
  --bg1:    var(--bg);
}

/* ── Dark-modus tokens (data-theme="dark" op <html>) */
/* Slim ontwerp: overschrijft alleen tokens; alles wat var(--…) gebruikt past
   automatisch aan. Inline hex codes in HTML moeten worden vervangen door deze
   tokens om dark-modus te laten werken. */
html[data-theme="dark"] {
 /* Backgrounds — slate-900/800 schaal */
 --bg: #0b1220;
 --bg2: #111a2c; /* card */
 --bg3: #0f1729; /* subtieler */
 --bg4: #1a2540; /* hover */

 /* Borders */
 --border: #2a3550;
 --border2: #3a4664;

 /* Text */
 --text1: #e6ebf4;
 --text2: #b6c0d3;
 --text3: #8a96ac;

 /* Primary blijft kantoorkleur (kan via inline override worden gewijzigd),
     maar lichte tint wordt transparant zodat hij over donker oppervlak werkt. */
  --p-light:        rgba(26,107,220,.22);
  --accent-light:   var(--p-light);
  --row-hover:      rgba(95,161,240,.07);

 /* Status — light/bg variant transparant maken voor donker oppervlak */
  --green-light:    rgba(34,197,94,.14);
  --green-bg:       rgba(34,197,94,.22);
  --green-border:   rgba(34,197,94,.40);
 --green-text: #4ade80;
 --green: #4ade80;
 --red-light: rgba(239,68,68,.14); --red-border:rgba(239,68,68,.32); --red-text:#ef8276;
 --red-solid: #dc2626;
  --amber-light:    rgba(217,119,6,.14);
  --amber-border:   rgba(251,191,36,.35);
 --amber-text: #fbbf24;
 --amber: #fbbf24;
  --purple-light:   rgba(167,139,250,.22);
 --purple: #c4b5fd;
  --goud-light:     rgba(200,169,110,.16);

 /* Semantische surface-tokens herdefinieren voor donker contrast */
  --surface:        var(--bg2);
  --surface-2:      var(--bg3);
  --surface-hover:  var(--bg4);
  --input-bg:       var(--bg3);
  --input-border:   var(--border2);
  --code-bg:        var(--bg4);

 /* Legacy per-page aliassen */
  --text:   var(--text1);
  --muted:  var(--text3);
  --pl:     var(--p-light);
  --pg:     var(--p-light);
  --bg1:    var(--bg);

 /* Schaduwen sterker (op donker oppervlak nauwelijks zichtbaar) */
  --shadow:    0 1px 4px rgba(0,0,0,.45);
  --shadow-sm: 0 1px 3px rgba(0,0,0,.35);
  --shadow-md: 0 4px 14px rgba(0,0,0,.45);
  --shadow-lg: 0 10px 30px rgba(0,0,0,.55);

  color-scheme: dark;
}

/* Standaard color-scheme voor lichte modus (helpt form controls + scrollbars) */
html { color-scheme: light }

/* Smooth thema-transitie (vermijdt flits bij toggle) */
html[data-theme-transition] body,
html[data-theme-transition] body * {
  transition: background-color .18s ease, color .18s ease, border-color .18s ease, fill .18s ease, stroke .18s ease !important;
}

/* ── Reset & Base */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0 }
body {
  font-family: var(--font);
  background: var(--bg);
  color: var(--text1);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: geometricPrecision;
}
a { color: inherit; text-decoration: none }

/* ── Typografie */
h1 { font-size: 20px; font-weight: 800; letter-spacing: -.3px; margin-bottom: 3px; color: var(--text1) }
h2 { font-size: 16px; font-weight: 700; color: var(--text1) }
h3 { font-size: 14px; font-weight: 700; color: var(--text1) }

/* ── Kaarten */
.vr-card {
  background: var(--bg2);
  border-radius: 12px;
  padding: 22px 24px;
  margin-bottom: 18px;
  box-shadow: var(--shadow);
}
.vr-card-title {
  font-size: 14.5px;
  font-weight: 700;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

/* ── Knoppen (.vr-btn legacy + .btn nieuwere conventie) */
.vr-btn {
  display: inline-flex; align-items: center; gap: 6px;
 background: var(--p); color: #fff; border: none;
  border-radius: 8px; padding: 9px 18px;
  font-size: 13px; font-weight: 600; font-family: var(--font);
  cursor: pointer; transition: filter .15s;
  text-decoration: none;
}
.vr-btn:hover { filter: brightness(1.1) }
.vr-btn-sm { padding: 5px 12px; font-size: 12px; border-radius: 6px }
.vr-btn-ghost { background: var(--bg4); color: var(--text2); border: none }
.vr-btn-ghost:hover { background: var(--border); filter: none }
.vr-btn-sec { background: transparent; color: var(--p); border: 1.5px solid var(--p) }
.vr-btn-sec:hover { background: var(--p-light); filter: none }
.vr-btn-rood { background: var(--red); color: #fff }
.vr-btn-groen { background: var(--green); color: #fff }
.vr-btn-amber { background: var(--amber); color: #fff }
.vr-btn:disabled { opacity: .5; cursor: not-allowed }

/* .btn varianten (admin.php / dossiers.html stijl) */
.btn {
  display: inline-flex; align-items: center; gap: 5px;
  border-radius: 8px; padding: 8px 16px;
  font-size: 13px; font-weight: 600;
  font-family: var(--font);
  cursor: pointer; transition: all .15s;
  border: none; text-decoration: none;
}
.btn-primair, .btn-primary { background: var(--accent); color: #fff }
.btn-primary:hover { background: var(--accent2) }
.btn-ghost { background:var(--bg2); color: var(--text2); border:1px solid var(--border) }
.btn-ghost:hover { background:var(--bg3); border-color:var(--border2); filter: none }
.btn-sm { padding: 5px 12px; font-size: 12px; border-radius: 6px }
.btn-danger { background: transparent; color: var(--red); border: 1px solid var(--red-border) }
.btn-danger:hover { background: var(--red-light) }
.btn-danger-solid, .btn-rood { background: var(--red); color: #fff; border: none }
.btn-danger-solid:hover, .btn-rood:hover { filter: brightness(1.1) }
.btn-green { background: transparent; color: var(--green); border: 1px solid #b7e4c7 }
.btn-green:hover { background: var(--green-light) }
.btn:disabled { opacity: .5; cursor: not-allowed }

/* ── Badges */
.vr-badge, .badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 9px; border-radius: 20px;
  font-size: 11px; font-weight: 600; line-height: 1.4;
}
.badge.groen,  .badge-groen   { background: var(--green-light); color: var(--green) }
.badge.amber,  .badge-amber   { background: var(--amber-light); color: var(--amber) }
.badge.rood,   .badge-rood    { background: var(--red-light);   color: var(--red) }
.badge.blauw,  .badge-blauw   { background: var(--p-light);     color: var(--p) }
.badge.grijs,  .badge-grijs   { background: var(--bg4);         color: var(--text3) }
.badge.paars,  .badge-paars   { background: var(--purple-light);color: var(--purple) }
.badge.goud,   .badge-goud    { background: var(--goud-light);  color: var(--goud2) }
.badge-wacht    { background: var(--amber-light); color: var(--amber) }
.badge-getekend { background: var(--green-light); color: var(--green) }
.badge-verlopen { background: var(--red-light);   color: var(--red) }

/* ── Tabellen */
.vr-tbl, .tbl {
  width: 100%; border-collapse: collapse; font-size: 13.5px;
}
.vr-tbl th, .tbl th {
  text-align: left; font-size: 11px; font-weight: 700;
 color: #94a3b8; text-transform: uppercase; letter-spacing: .6px;
  padding: 0 12px 10px; border-bottom: 1.5px solid var(--bg4);
}
.vr-tbl td, .tbl td {
 padding: 10px 12px; border-bottom: 1px solid #f8fafc;
  vertical-align: middle;
}
.vr-tbl tr:last-child td, .tbl tr:last-child td { border-bottom: none }
.vr-tbl tbody tr:hover td, .tbl tbody tr:hover td { background: var(--bg3) }

/* ── Formulier-elementen */
.vr-field { margin-bottom: 14px }
.vr-field label {
  display: block; font-size: 12px; font-weight: 600;
  color: var(--text2); margin-bottom: 5px;
  text-transform: uppercase; letter-spacing: .3px;
}
.vr-field input, .vr-field select, .vr-field textarea, .vr-input {
  width: 100%; padding: 9px 12px;
  border: 1.5px solid var(--border); border-radius: 8px;
  font-size: 13.5px; font-family: var(--font);
  outline: none; transition: border .15s;
  background: var(--bg2); color: var(--text1);
}
.vr-field input:focus, .vr-field select:focus, .vr-field textarea:focus, .vr-input:focus {
  border-color: var(--p);
  box-shadow: 0 0 0 3px rgba(26,107,220,.1);
}

/* ── Meldingen */
.vr-melding {
  border-radius: 9px; padding: 11px 16px; font-size: 13px;
  margin-bottom: 16px; display: flex; align-items: flex-start; gap: 8px;
}
.vr-melding-ok, .melding-ok { background: var(--green-light); color: var(--green); border: 1px solid #bbf7d0 }
.vr-melding-fout, .melding-fout { background: var(--red-light); color: var(--red); border: 1px solid #fecaca }
.vr-melding-info, .melding-info { background: var(--p-light); color: var(--p2); border: 1px solid #b8d9f0 }

/* ── Pagina header (twee regels) */
.vr-topbar, .topbar {
  background: var(--bg2);
 border-bottom: 1.5px solid var(--border, #e2e8f0);
  padding: 0 28px; height: 56px;
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px;
  position: sticky; top: 0; z-index: 10;
  box-shadow: 0 1px 0 var(--border), 0 2px 6px rgba(15,23,42,.04);
}
.topbar-title, .vr-topbar-title, .content-topbar-titel, .kb-topbar-title { font-size: 13.5px; font-weight: 600; color: var(--text3, #64748b) }
.topbar-sub, .vr-topbar-sub { font-size: 11.5px; color: var(--text3, #94a3b8) }
.topbar-right, .vr-topbar-right { margin-left: auto; display: flex; align-items: center; gap: 10px }

.vr-page-banner, .page-banner {
  background: var(--bg2); padding: 18px 28px;
 border-bottom: 1px solid var(--border, #e2e8f0);
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.vr-page-banner h1, .page-banner h1 {
 font-size: 20px; font-weight: 800; color: var(--text1, #1a1a2e);
  letter-spacing: -.3px; margin: 0;
}
.vr-page-banner .sub, .page-banner .sub {
 font-size: 13px; color: var(--text3, #64748b); margin-top: 2px;
}
.vr-page-banner-right, .page-banner-right {
 text-align: right; font-size: 12px; color: var(--text3, #64748b);
}

/* ── Topbar overrides — uniforme witte headers (medewerker-pagina's)
   Hogere specificity via `html` ipv !important — wint van page-CSS `.topbar`. */
html .topbar, html .kb-topbar {
  background: var(--bg2); color: var(--text1);
  box-shadow: none;
  border-bottom: 1.5px solid var(--border);
  height: 56px; overflow: visible;
}
html .topbar::before, html .topbar::after { display: none }
html .topbar h1, html .topbar-title, html .kb-topbar-title, html .content-topbar-titel, html .vr-topbar-title {
  font-size: 13.5px; font-weight: 600;
  color: var(--text3);
  font-family: 'DM Sans', sans-serif;
}
html .topbar-sub {
  font-size: 11.5px; color: var(--text3);
}
html .topbar .meta {
  color: var(--text3); opacity: 1;
  font-family: 'DM Sans', sans-serif;
}
html .topbar-logo { height: 28px; filter: none }

/* ── Canonical stat-cards (gedeeld door ondertekenen/akten/debiteuren etc.) ── */
.stats-grid {
  display: grid; grid-template-columns: repeat(3,1fr); gap: 12px;
}
.stat-card {
 background: var(--bg2); border: 1px solid var(--border, #e2e8f0);
  border-radius: 10px; padding: 14px 18px; cursor: pointer;
  transition: border-color .15s, box-shadow .15s, transform .12s;
  box-shadow: var(--shadow, 0 1px 3px rgba(0,0,0,.04));
}
.stat-card:hover {
 border-color: var(--border2, #cbd5e1);
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
}
.stat-num { font-size: 22px; font-weight: 700; line-height: 1.1; letter-spacing: -.5px; color: var(--text1, #1a1a2e) }
.stat-lbl { font-size: 12px; color: var(--text3, #64748b); margin-top: 4px; font-weight: 500 }
.stat-lbl svg { display: none }
@media (max-width: 700px) {
  .stats-grid { gap: 8px }
  .stat-num { font-size: 22px }
}


/* ── Header (cliënt-facing site-header) */
.site-header {
 background: linear-gradient(135deg, color-mix(in srgb, var(--p) 80%, #003d6b), var(--p));
  padding: 0 28px;
  display: flex; align-items: center; justify-content: space-between;
  height: 62px; gap: 16px;
  position: relative; overflow: hidden;
  box-shadow: 0 2px 16px rgba(0,80,160,.18);
}
.site-header::before {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(118deg, rgba(255,255,255,.08) 0%, rgba(255,255,255,0) 55%);
  pointer-events: none;
}
.site-header > * { position: relative; z-index: 1 }
.site-header-logo { height: 36px; flex-shrink: 0 }
.site-header-naam { font-size: 16px; font-weight: 700; color: #fff; white-space: nowrap }

/* ── Stappen indicator */
.stappen { display: flex; gap: 0; margin-bottom: 28px }
.stap { flex: 1; text-align: center; position: relative }
.stap:not(:last-child)::after { content: ''; position: absolute; top: 14px; left: 50%; right: -50%; height: 2px; background: var(--border); z-index: 0 }
.stap.actief::after, .stap.klaar::after { background: var(--p) }
.stap-nr { width: 28px; height: 28px; border-radius: 50%; border: 2px solid var(--border); background: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; color: var(--text3); margin: 0 auto 6px; position: relative; z-index: 1 }
.stap.actief .stap-nr { border-color: var(--p); color: var(--p); background: var(--p-light) }
.stap.klaar .stap-nr { border-color: var(--green); background: var(--green); color: #fff }
.stap-label { font-size: 11px; color: var(--text3); font-weight: 500 }
.stap.actief .stap-label { color: var(--p); font-weight: 600 }
.stap.klaar .stap-label { color: var(--green) }

/* ── Selectie-actiebalk */
.vr-selectie-balk {
  display: none; align-items: center; gap: 8px;
 padding: 8px 12px; background: #eff6ff;
 border: 1.5px solid #bfdbfe; border-radius: 8px;
 margin-bottom: 10px; font-size: 13px; font-weight: 600; color: #1d4ed8;
}
.vr-selectie-balk.zichtbaar { display: flex }

/* ── Spinner */
.spinner, .spin {
  display: inline-block; width: 18px; height: 18px;
 border: 2.5px solid rgba(255,255,255,.4); border-top-color: #fff;
  border-radius: 50%; animation: vr-spin .7s linear infinite;
}
@keyframes vr-spin { to { transform: rotate(360deg) } }

/* ── Danger zone */
.danger-zone {
 border: 1.5px solid #fecaca; border-radius: 10px;
 padding: 18px 20px; background: #fff5f5; margin-top: 16px;
}
.danger-zone h3 { font-size: 13px; font-weight: 700; color: var(--red); margin-bottom: 8px }
.danger-zone p { font-size: 12.5px; color: var(--text3); margin-bottom: 12px }

/* ── Checkbox/Radio styling */
.checkbox-wrap {
  display: flex; align-items: flex-start; gap: 12px;
  background: var(--bg); border: 1px solid var(--border);
  border-radius: 8px; padding: 14px 16px;
  cursor: pointer; transition: border-color .15s;
}
.checkbox-wrap:hover { border-color: var(--p) }
.checkbox-wrap input[type=checkbox] {
  width: 18px; height: 18px; flex-shrink: 0;
  accent-color: var(--p); cursor: pointer;
}

/* ── Code input (verificatiecode) */
.code-wrap { display: flex; gap: 8px; justify-content: center; margin: 8px 0 4px }
.code-input {
  width: 44px; height: 52px;
  border: 2px solid var(--border); border-radius: 8px;
  font-size: 22px; font-weight: 700; text-align: center;
  font-family: var(--font); color: var(--text1);
 background: #fff; transition: border-color .15s; outline: none;
}
.code-input:focus { border-color: var(--p) }
.code-input.fout { border-color: var(--red); background: var(--red-light) }

/* ── PDF Viewer */
.pdf-wrap {
  border-radius: 8px; overflow: hidden;
  border: 1px solid var(--border);
 margin-bottom: 20px; background: #fff;
}

/* ── Modal */
.modal-bg {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,.55); z-index: 1000;
  display: none; align-items: center; justify-content: center;
  padding: 20px;
}
.modal-bg.actief { display: flex }
.modal {
 background: #fff; border-radius: 14px;
  box-shadow: 0 8px 40px rgba(0,0,0,.25);
  width: 100%; max-width: 540px; overflow: hidden;
}
.modal-header {
  padding: 16px 20px; border-bottom: 1.5px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
}
.modal-titel { font-size: 15px; font-weight: 700; color: var(--text1) }
.modal-sluit { background: none; border: none; cursor: pointer; color: var(--text3); font-size: 20px; line-height: 1; padding: 0 }
.modal-sluit:hover { color: var(--text1) }
.modal-body { padding: 20px }
.modal-footer {
  padding: 14px 20px; border-top: 1.5px solid var(--border);
  display: flex; gap: 8px; justify-content: flex-end;
}

/* ── Upload zones */
.upload-zone {
  border: 2px dashed var(--border); border-radius: 10px;
  padding: 20px; text-align: center; cursor: pointer;
  transition: all .2s; background: var(--bg3);
  min-height: 80px;
  display: flex; align-items: center; justify-content: center;
}
.upload-zone:hover { border-color: var(--p); background: #f0f7ff }
.upload-zone.heeft-foto { border-style: solid; border-color: var(--green); background: var(--green-bg) }

/* ── Notificatie toast */
.vr-notif, .notif {
  position: fixed; bottom: 24px; right: 24px;
 background: #1a1a2e; color: #fff;
  padding: 10px 18px; border-radius: 8px;
  font-size: 13px;
  opacity: 0; transition: opacity .25s;
  pointer-events: none; z-index: 9999;
  max-width: 380px;
}
.vr-notif.zichtbaar, .notif.toon, .notif.show { opacity: 1; pointer-events: auto }

/* ── Grid helpers */
.vr-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px }
.vr-grid3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px }
@media(max-width:700px) { .vr-grid2, .vr-grid3 { grid-template-columns: 1fr } }

/* ── Responsive */
@media(max-width:520px) {
  .site-header { padding: 0 16px; height: 56px }
  .site-header-naam { font-size: 14px }
  .code-input { width: 38px; height: 46px; font-size: 18px }
}

/* ── Print */
@media print {
 body { background: #fff }
  .site-header, .sidebar, .btn, .danger-zone { display: none }
}

/*    UNIFIED DESIGN COMPONENTS — vr-* namespace, opt-in markup
 */

/* ── Stat cards (rij van klikbare cijfer-kaartjes bovenaan) ──────────────── */
.vr-stat-row {
  display: flex; gap: 10px; flex-wrap: wrap;
  margin-bottom: 14px;
}
.vr-stat-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 16px;
  cursor: pointer;
  transition: border-color .15s, background .15s, box-shadow .15s;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
  flex: 1; min-width: 140px;
  display: flex; flex-direction: column; gap: 6px;
}
.vr-stat-card:hover {
  border-color: var(--p);
  background: var(--bg3);
}
.vr-stat-card.active {
  border-color: var(--p);
  border-left: 3px solid var(--p);
  background: var(--bg3);
}
.vr-stat-card .vr-stat-label {
  font-size: 11px; font-weight: 600;
  color: var(--text3);
  text-transform: uppercase;
  letter-spacing: .4px;
}
.vr-stat-card .vr-stat-value {
  font-size: 22px; font-weight: 700;
  color: var(--text1); line-height: 1;
}
.vr-stat-card .vr-stat-sub {
  font-size: 11.5px; color: var(--text3);
}
/* Color-variants (apply to .vr-stat-value via modifier class on card) */
.vr-stat-card.red    .vr-stat-value { color: var(--red); }
.vr-stat-card.amber  .vr-stat-value { color: var(--amber); }
.vr-stat-card.green  .vr-stat-value { color: var(--green); }
.vr-stat-card.blue   .vr-stat-value { color: var(--p); }

/* ── Filter-bar (search + select + chips combineren) */
.vr-filter-bar {
  display: flex; align-items: center; gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}

/* ── Search-pill (rounded grey met 🔍-icon links) */
.vr-search-pill {
  display: inline-flex; align-items: center; gap: 7px;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 7px 11px;
  min-width: 220px;
  transition: border-color .15s, box-shadow .15s;
}
.vr-search-pill:focus-within {
  border-color: var(--p);
  box-shadow: 0 0 0 3px rgba(26,107,220,.1);
}
.vr-search-pill svg { color: var(--text3); flex-shrink: 0; }
.vr-search-pill input {
  background: none; border: none; outline: none;
  color: var(--text1);
  font-family: var(--font); font-size: 12.5px;
  width: 100%; min-width: 0;
}
.vr-search-pill input::placeholder { color: var(--text3); }

/* ── Select-pill (dropdown met chevron) */
.vr-select-pill {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text2);
  font-family: var(--font); font-size: 12.5px;
  padding: 7px 28px 7px 12px;
  outline: none; cursor: pointer;
  appearance: none;
 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23555e75'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  transition: border-color .15s;
}
.vr-select-pill:hover, .vr-select-pill:focus { border-color: var(--p); }

/* ── Filter-chip (rounded white pill — variant met dot of badge) ─────────── */
.vr-filter-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 13px;
  border-radius: 8px;
  background: var(--bg2);
  border: 1px solid var(--border);
  color: var(--text2);
  font-size: 13px; font-weight: 600;
  cursor: pointer;
  transition: all .15s;
  font-family: var(--font);
  white-space: nowrap;
  user-select: none;
}
.vr-filter-chip:hover {
  border-color: var(--p);
  color: var(--p);
}
.vr-filter-chip.active {
  border-color: var(--text1);
  color: var(--text1);
  background: var(--bg2);
  font-weight: 600;
}
/* Variant: gekleurde dot vóór tekst (•) */
.vr-filter-chip .vr-chip-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
}
/* Variant: getal-badge ná tekst (15, 109) */
.vr-filter-chip .vr-chip-badge {
  font-size: 10.5px; font-weight: 700;
  background: var(--bg4);
  color: var(--text2);
  padding: 1px 7px;
  border-radius: 10px;
  margin-left: 2px;
  line-height: 1.4;
}
.vr-filter-chip.active .vr-chip-badge {
  background: var(--p);
 color: #fff;
}
/* Color-coded badges (Controleren-amber, Nog-afronden-goud, etc.) */
.vr-chip-badge.amber { background: var(--amber); color: #fff; }
.vr-chip-badge.goud { background: var(--goud, #b8860b); color: #fff; }
.vr-chip-badge.green { background: var(--green); color: #fff; }
.vr-chip-badge.red { background: var(--red); color: #fff; }

/* ── Tabel-koppen (uppercase grey small-caps) */
.vr-tbl-head th {
  text-align: left;
  font-size: 11px;
  font-weight: 700;
  color: var(--text3);
  text-transform: uppercase;
  letter-spacing: .5px;
  padding: 9px 14px;
  background: var(--bg4);
  border-bottom: 2px solid var(--border2);
  white-space: nowrap;
}
.vr-tbl-head th.sortable { cursor: pointer; }
.vr-tbl-head th.sortable:hover { color: var(--text1); }
.vr-tbl-head th.sortable.active { color: var(--p); }


/*    CANONICAL search & filter bar — used across debiteuren/dossiers/offertes/
   ondertekenen/vorioconnect. Edit HERE, all pages update.
 */
.filterbar { display:flex; gap:8px; align-items:center; margin-bottom:16px; flex-wrap:wrap; }
.filterbar input[type="text"], .filterbar input[type="search"] {
  padding:6px 11px 6px 32px; border:1px solid var(--border); border-radius:8px;
  font-size:12.5px; font-family:var(--font, inherit); color:var(--text1, var(--text));
  background-color:var(--bg2);
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%2394a3b8%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2211%22%20cy%3D%2211%22%20r%3D%227%22%2F%3E%3Cline%20x1%3D%2221%22%20y1%3D%2221%22%20x2%3D%2216.65%22%20y2%3D%2216.65%22%2F%3E%3C%2Fsvg%3E");
  background-repeat:no-repeat;
  background-position:11px center;
  min-width:220px; outline:none; transition:border-color .15s, box-shadow .15s;
}
.filterbar input:focus { border-color:var(--p, var(--accent)); box-shadow:0 0 0 3px rgba(26,107,220,.1); }
.filterbar select {
  padding:6px 30px 6px 11px; border:1px solid var(--border); border-radius:8px;
  background-color:var(--bg2);
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%2394a3b8%22%20stroke-width%3D%223%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6%209l6%206%206-6%22%2F%3E%3C%2Fsvg%3E");
  background-repeat:no-repeat;
  background-position:right 10px center;
  font-family:var(--font, inherit); font-size:12.5px; line-height:1.4;
  color:var(--text1, var(--text)); outline:none; cursor:pointer;
  appearance:none; -webkit-appearance:none; -moz-appearance:none;
}
.filterbar input, .filterbar select { box-sizing:border-box; height:32px; }

.search-box {
  display:flex; align-items:center; gap:7px;
  background:var(--bg2); border:1px solid var(--border); border-radius:8px;
  padding:6px 11px; min-width:220px; transition:border-color .15s, box-shadow .15s;
}
.search-box:focus-within { border-color:var(--p, var(--accent)); box-shadow:0 0 0 3px rgba(26,107,220,.1); }
.search-box input {
  background:none; border:none; outline:none;
  color:var(--text1, var(--text)); font-family:var(--font, inherit);
  font-size:12.5px; width:100%;
}
.search-box input::placeholder { color:var(--text3); }

.list-toolbar { display:flex; gap:8px; align-items:center; margin-bottom:16px; flex-wrap:wrap; }

/*    CANONICAL chips & table-head — debiteuren/dossiers/offertes share via base.
 */
.filter-chips { display:flex; gap:6px; flex-wrap:wrap; }
.chip {
  padding:7px 13px; border-radius:8px;
  font-size:12px; font-weight:500; font-family:var(--font, inherit);
  cursor:pointer; user-select:none; white-space:nowrap;
  border:1px solid var(--border); background:var(--bg2);
  color:var(--text2, var(--text));
  display:inline-flex; align-items:center; gap:5px;
  transition:border-color .15s, background .15s, color .15s;
}
.chip:hover { border-color:var(--border2, var(--border)); }
.chip.active {
  border-color:var(--p, var(--accent));
 background:var(--accent-light, #eff6ff);
  color:var(--p, var(--accent));
}
.chip-dot {
  width:7px; height:7px; border-radius:50%;
  background:currentColor; display:inline-block; flex-shrink:0;
}
.chip-cnt {
  background:var(--p, var(--accent));
 color:#fff;
  padding:1px 6px;
  border-radius:10px;
  font-size:10px;
  font-weight:700;
  margin-left:4px;
  line-height:1.3;
}
.chip.active .chip-cnt { background:#fff; color:var(--p, var(--accent)); }
.chip-cnt.rood, .sf-btn .chip-cnt.rood { background:var(--red,#dc2626); color:#fff; }
.chip-cnt.amber, .sf-btn .chip-cnt.amber { background:var(--amber,#d97706); color:#fff; }
.chip-cnt.groen, .sf-btn .chip-cnt.groen { background:var(--green,#16a34a); color:#fff; }
.sf-btn.actief .chip-cnt { background:#fff; color:var(--p, var(--accent)); }

/* ─── Canonical tabel (.v-tbl) — gedeeld door dossiers/offertes/lijst-views ─── */
.v-tbl{width:100%;border-collapse:collapse;background:var(--bg2);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden;border:1px solid var(--border)}
.v-tbl thead{position:sticky;top:0;z-index:5}
.v-tbl thead tr{background:var(--bg3);border-bottom:1px solid var(--border)}
.v-tbl th.center{text-align:center}
.v-tbl th.sortable{cursor:pointer;user-select:none;transition:color .15s,opacity .15s}
.v-tbl th.sortable:hover{color:var(--text1)}
.v-tbl th.sortable .sort-ic{display:none;font-size:10px;margin-left:4px;font-style:normal}
.v-tbl th.sortable.actief .sort-ic{display:inline}
.v-tbl th.sortable.actief{color:var(--accent);opacity:1}
.v-tbl th.sortable:not(.actief){opacity:.55}
.v-tbl tbody tr{height:44px;cursor:pointer;transition:background .12s;border-bottom:1px solid var(--border)}
.v-tbl tbody tr:last-child{border-bottom:none}
.v-tbl tbody tr:hover{background:var(--row-hover)}
.v-tbl td{padding:11px 14px;font-size:13px;line-height:1.4;vertical-align:middle;color:var(--text)}
.v-tbl td.center{text-align:center}
@media(max-width:700px){
 /* Tabel zelf wordt scrollable container, inner-rendering blijft table-layout */
  .v-tbl{
    display:block;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    width:100%;
    max-width:100%;
    font-size:12px;
    border-radius:var(--r);
  }
  .v-tbl thead, .v-tbl tbody, .v-tbl tfoot{display:table-row-group}
  .v-tbl tr{display:table-row}
  .v-tbl td, .v-tbl th{display:table-cell;padding:8px 10px;white-space:nowrap}
  .v-tbl tbody tr{height:auto}
}
/* Canonical table-head — geldt voor elke <thead> tenzij page override */
/* Canonical voor alle tabel-headers (page override via specifieke class indien nodig) */
table thead th,
thead.tbl-head th {
  padding:9px 14px; text-align:left;
  font-size:10.5px; font-weight:600;
  color:var(--text3); text-transform:uppercase; letter-spacing:.6px;
  background:var(--bg3); border-bottom:1px solid var(--border);
  white-space:nowrap; font-family:var(--font, inherit); vertical-align:middle;
}

/* Canonical select-styled — gebruikt door dossiers/debiteuren/vorioconnect/portaal */
.select-styled {
  background:var(--bg2) url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%2394a3b8%22%20stroke-width%3D%223%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6%209l6%206%206-6%22%2F%3E%3C%2Fsvg%3E") no-repeat right 10px center;
  border:1px solid var(--border); border-radius:8px;
  color:var(--text2, var(--text)); font-family:var(--font, inherit); font-size:12.5px;
  padding:6px 28px 6px 11px; outline:none; cursor:pointer;
  appearance:none; -webkit-appearance:none; -moz-appearance:none;
  box-sizing:border-box; height:32px;
  transition:border-color .15s, box-shadow .15s;
}
.select-styled:focus, .select-styled:hover {
  border-color:var(--p, var(--accent));
  color:var(--text1, var(--text));
}
.select-styled:focus { box-shadow:0 0 0 3px rgba(26,107,220,.1); }

/* ── Modal close-button (X) — twee semantische varianten ──
   .modal-close          → standaard op witte modal-header (donkere X, hover lichtgrijs fill)
   .modal-close--light   → voor gekleurde modal-header (witte X, hover wit-15% fill) */
.modal-close{
 background:none;border:none;color:var(--text3,#94a3b8);
  font-size:20px;cursor:pointer;padding:4px 8px;border-radius:6px;
  font-family:inherit;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .15s, color .15s;
}
.modal-close:hover{background:var(--bg3);color:var(--text1)}
.modal-close:active{background:var(--bg4)}
.modal-close:focus-visible{outline:2px solid var(--p,#1a6bdc);outline-offset:2px}

.modal-close--light{
 background:none;border:none;color:#fff;
  font-size:22px;cursor:pointer;padding:4px 8px;border-radius:6px;
  font-family:inherit;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .15s;
}
.modal-close--light:hover{background:rgba(255,255,255,.15)}
.modal-close--light:active{background:rgba(255,255,255,.25)}
.modal-close--light:focus-visible{outline:2px solid rgba(255,255,255,.5);outline-offset:2px}

/* ─── Centrale Vorio-loader (favicon + roterende ring) ─── */
.vorio-loader{
  position:relative;
  width:48px;height:48px;
  display:inline-flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.vorio-loader::before{
  content:'';position:absolute;inset:0;border-radius:50%;
  border:3px solid rgba(15,23,42,.08);
 border-top-color:#1a6bdc;
  animation:vorioLoaderSpin .9s linear infinite;
}
.vorio-loader::after{
  content:'';
  width:60%;height:60%;
  background:url('/vorio_favicon.png?v=8') center/contain no-repeat;
  animation:vorioLoaderPulse 1.4s ease-in-out infinite;
}
html[data-theme="dark"] .vorio-loader::before{
  border-color:rgba(255,255,255,.10);
 border-top-color:#1a6bdc;
}
/* Dark-loader: wordmark zonder extra cirkel (geen "dubbele spinner") */
html[data-theme="dark"] .vorio-loader::after{
  background-image:url("/vorio_favicon_dark.png?v=20260603dark9");
}
.vorio-loader-sm{ width:28px;height:28px; }
.vorio-loader-sm::before{ border-width:2px; }
.vorio-loader-lg{ width:72px;height:72px; }
.vorio-loader-lg::before{ border-width:4px; }

@keyframes vorioLoaderSpin{ to{ transform:rotate(360deg) } }
@keyframes vorioLoaderPulse{ 0%,100%{ opacity:.85; transform:scale(.96) } 50%{ opacity:1; transform:scale(1.04) } }

/* Block-variant met tekst eronder (voor full-page laad-states) */
.vorio-loader-block{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
 padding:48px 24px;gap:18px;color:var(--text2, #475569);font-size:13.5px;text-align:center;
}

/* ─── XL variant + fullscreen overlay + inline-button helper ─── */
.vorio-loader-xl{ width:120px;height:120px; }
.vorio-loader-xl::before{ border-width:5px; }

.vorio-loader-overlay{
  position:fixed;inset:0;z-index:99999;
  background:rgba(255,255,255,.92);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;
 color:var(--text2, #475569);font-size:14.5px;font-weight:500;letter-spacing:.2px;
  opacity:0;pointer-events:none;transition:opacity .18s ease;
}
.vorio-loader-overlay.actief{ opacity:1;pointer-events:auto; }
.vorio-loader-overlay .vol-tekst{ max-width:340px;text-align:center;line-height:1.5; }

/* Voor in-knop gebruik: kleine variant inline — clean ring zonder favicon (te klein voor detail) */
.vorio-loader-inline{
  width:14px;height:14px;display:inline-block;vertical-align:-3px;margin-right:6px;
  border-radius:50%;
  border:2px solid rgba(15,23,42,.18);
 border-top-color:#1a6bdc;
  animation:vorioLoaderSpin .8s linear infinite;
  background:transparent;position:relative;
}
.vorio-loader-inline::before, .vorio-loader-inline::after{ content:none !important; display:none !important; }

/* ─── Legacy spinner-klassen — schone ring, GEEN favicon (vierkant-issue bij klein formaat) ─── */
/* Override van oudere .spinner / .spin / .upload-spinner. Per-klasse geometrie blijft. */
.spinner, .upload-spinner, .spin{
  position:relative !important;
  box-sizing:border-box;
  border-radius:50% !important;
  background:transparent !important;
  display:inline-block;vertical-align:middle;
  animation:vorioLoaderSpin .8s linear infinite !important;
}
.spinner::before, .upload-spinner::before, .spin::before,
.spinner::after,  .upload-spinner::after,  .spin::after{
  content:none !important; display:none !important;
}
/* Per-klasse geometrie + kleur */
.spin, .upload-spinner{
  width:14px;height:14px;
  border:2px solid rgba(15,23,42,.18) !important;
 border-top-color:var(--p, #1a6bdc) !important;
}
.spinner{
  width:32px;height:32px;
  border:3px solid rgba(15,23,42,.14) !important;
 border-top-color:var(--p, #1a6bdc) !important;
}
/* Witte variant binnen primaire (donker-gekleurde) knoppen */
.btn-primary .spinner, .btn-primary .spin, .btn-primary .upload-spinner,
.btn-primary .vorio-loader-inline{
  border-color:rgba(255,255,255,.35) !important;
 border-top-color:#fff !important;
}
/* ─── Canonical Vorio-wordmark 
   Eén bron-van-waarheid voor "vorio." renderen.
   Helper: lib/vorio_logo.php (PHP)  +  js/vorio_logo.js (client)
 Tokens: DM Sans 700, navy #0f2744 / brand-blue #1a6bdc,
   letter-spacing −3.8% van font-size, dot bottom-aligned.
 */

.v-logo {
  display: inline-flex;
  align-items: flex-end;
  gap: 1px;
  font-family: 'DM Sans', 'Segoe UI', Arial, sans-serif;
  font-weight: 700;
 color: #0f2744;
  line-height: 1;
  text-decoration: none;
  flex-shrink: 0;
  white-space: nowrap;
}
.v-logo .v-dot {
 background: #1a6bdc;
  border-radius: 50%;
  flex-shrink: 0;
  display: inline-block;
}

/* Sizes: dot schaalt ~23% van font-size, margin-bottom ~15% */
.v-logo-xs { font-size: 14px; letter-spacing: -.55px; }
.v-logo-xs .v-dot { width: 3.5px; height: 3.5px; margin-bottom: 2px; }
.v-logo-sm { font-size: 18px; letter-spacing: -.7px; }
.v-logo-sm .v-dot { width: 4.5px; height: 4.5px; margin-bottom: 2.5px; }
.v-logo-md { font-size: 22px; letter-spacing: -.85px; }
.v-logo-md .v-dot { width: 5px; height: 5px; margin-bottom: 3px; }
.v-logo-lg { font-size: 26px; letter-spacing: -1px; }
.v-logo-lg .v-dot { width: 6px; height: 6px; margin-bottom: 4px; }
.v-logo-xl { font-size: 44px; letter-spacing: -1.7px; }
.v-logo-xl .v-dot { width: 10px; height: 10px; margin-bottom: 7px; }

/* Variants — brand-blue dot blijft hetzelfde, alleen tekstkleur verandert */
.v-logo-dark { color: #ffffff; }
.v-logo-inverted { color: #ffffff; }
.v-logo-inverted .v-dot { background: #ffffff; }

/* Automatic dark-mode honoring */
html[data-theme="dark"] .v-logo:not(.v-logo-light):not(.v-logo-inverted) { color: #ffffff; }

/* "powered by vorio." compositie */
.v-powered {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
 color: #6b7280;
  font-weight: 500;
}
.v-powered-dark { color: #9ca3af; }
.v-powered-inverted  { color: rgba(255,255,255,.85); }
html[data-theme="dark"] .v-powered:not(.v-powered-light):not(.v-powered-inverted) { color: #94a3b8; }

/* Powered-by — vorio-wordmark schaalt mee met omringende tekst */
.v-powered { font-size: 9px; gap: 3px; letter-spacing: .2px }
.v-powered .v-logo { font-size: 1em; letter-spacing: -.4px }
.v-powered .v-logo .v-dot { width: 3px; height: 3px; margin-bottom: 1.5px }

/* Dark-mode override met !important — beats inline-fallback in vorioPoweredBy() */
html[data-theme="dark"] .v-powered { color: #cbd5e1 !important }
html[data-theme="dark"] .v-powered .v-logo,
html[data-theme="dark"] .v-powered span[style*="currentColor"] { color: #ffffff !important }


/* ── .v-rij-x — gedeelde rij-verwijderknop 
   Voor delete-knoppen IN form-rijen (offerte-regels, vestigingen-rijen).
   Klein, bordered, transparante achtergrond, rode hover.
   Niet bedoeld voor lijst-record-deletes — gebruik daar .adm-icon-btn.danger met trash-sprite.
*/
.v-rij-x {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 5px;
  color: var(--text3);
  font-size: 14px;
  font-family: inherit;
  line-height: 1;
  cursor: pointer;
  transition: color .12s, border-color .12s, background .12s;
  box-sizing: border-box;
  flex-shrink: 0;
}
.v-rij-x:hover { color: var(--red); border-color: rgba(239,68,68,.32) }
.v-rij-x:focus-visible { outline: 2px solid var(--p,#1a6bdc); outline-offset: 1px }
/* Grotere variant — sluit aan op 41px form-input-hoogte */
.v-rij-x-lg { width: 41px; height: 41px; font-size: 22px; font-weight: 400; border-radius: 8px }

/*    Vorio Design System — Fase 0
   Herbruikbare component-classes. Gebruik <button class="v-btn v-btn--primary">
   i.p.v. eigen page-CSS. Style 1× hier = overal door.
   Volgt BEM: .v-component / .v-component__part / .v-component--variant
 */

/* ── Cards */
.v-card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  padding:var(--space-4) var(--space-5);
  box-shadow:var(--shadow-sm);
  color:var(--text1);
}
.v-card--elev{box-shadow:var(--shadow-md)}
.v-card--flat{box-shadow:none;background:var(--surface-2)}
.v-card__title{
  font-size:var(--font-md);font-weight:700;margin:0 0 var(--space-3);
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);
  color:var(--text1);
}
.v-card__title .v-card__title-sub{
  font-size:var(--font-sm);font-weight:500;color:var(--text3);
}

/* ── Stat-card (rounded number-card zoals dossiers-strip) ─────────────── */
.v-stat-strip{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:var(--space-3);margin-bottom:var(--space-4);
}
.v-stat{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  padding:var(--space-3) var(--space-4);
  display:flex;align-items:center;gap:var(--space-3);
  color:var(--text2);
}
.v-stat__num{font-size:var(--font-2xl);font-weight:800;line-height:1;color:var(--accent);letter-spacing:-.5px}
.v-stat__lbl{font-size:var(--font-sm);color:var(--text3);font-weight:500}
.v-stat--amber  .v-stat__num{color:var(--amber)}
.v-stat--red    .v-stat__num{color:var(--red)}
.v-stat--green  .v-stat__num{color:var(--green)}
.v-stat--purple .v-stat__num{color:var(--purple)}
.v-stat--goud   .v-stat__num{color:var(--goud2)}
.v-stat--indigo .v-stat__num{color:#6366f1}
/* Clickable + actief-staat (filter-pillen) */
.v-stat--btn{cursor:pointer;transition:border-color .15s, box-shadow .15s, transform .1s}
.v-stat--btn:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}
.v-stat--goud.v-stat--btn:hover{border-color:var(--goud2)}
.v-stat--btn:active{transform:translateY(1px)}
.v-stat--stacked{flex-direction:column;align-items:stretch;text-align:left;gap:2px}
.v-stat.is-active,.v-stat.active{border-color:var(--accent);background:var(--accent-light);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent), var(--shadow-sm)}
html[data-theme="dark"] .v-stat.is-active,
html[data-theme="dark"] .v-stat.active{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 30%, transparent), var(--shadow-sm)}
.v-stat.is-active .v-stat__num,.v-stat.active .v-stat__num{color:var(--accent)}
/* Dark mode: bedrag in actieve kaart krijgt wit-blauw zodat het leesbaar blijft op het accent-tint vlak */
html[data-theme="dark"] .v-stat.is-active .v-stat__num,
html[data-theme="dark"] .v-stat.active .v-stat__num{color:color-mix(in srgb, var(--accent) 35%, #fff 65%)}
html[data-theme="dark"] .v-stat--goud.is-active .v-stat__num,
html[data-theme="dark"] .v-stat--goud.active .v-stat__num{color:color-mix(in srgb, var(--goud2) 35%, #fff 65%)}
.v-stat--goud.is-active,.v-stat--goud.active{border-color:var(--goud2);background:var(--goud-light);box-shadow:0 0 0 2px color-mix(in srgb, var(--goud2) 35%, transparent), var(--shadow-sm)}
.v-stat--goud.is-active .v-stat__num,.v-stat--goud.active .v-stat__num{color:var(--goud2)}
/* Lege stat (count = 0) — gedimd zodat alleen kaarten met waarde aandacht trekken */
.v-stat.is-empty{opacity:.45}
.v-stat.is-empty:hover{opacity:.7}
.v-stat.is-empty.active,.v-stat.is-empty.is-active{opacity:1}

/* ── Knoppen */
.v-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:9px 16px;min-height:36px;
  font-family:inherit;font-size:var(--font-md);font-weight:600;
  border-radius:var(--r-sm);
  border:1px solid transparent;
  cursor:pointer;background:none;color:var(--text1);
  transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform .1s;
  text-decoration:none;line-height:1.2;
}
.v-btn:focus-visible{outline:none;box-shadow:var(--ring)}
.v-btn:active{transform:scale(.98)}
.v-btn[disabled],.v-btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}
.v-btn svg{width:14px;height:14px;flex-shrink:0}

.v-btn--primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.v-btn--primary:hover{background:var(--accent2);border-color:var(--accent2)}
.v-btn--ghost{background:var(--surface-2);color:var(--text2);border-color:var(--border)}
.v-btn--ghost:hover{background:var(--surface-hover);color:var(--text1)}
.v-btn--outline{background:transparent;color:var(--accent);border-color:var(--accent)}
.v-btn--outline:hover{background:color-mix(in srgb, var(--accent) 10%, transparent)}
.v-btn--danger{background:var(--red-solid);color:#fff;border-color:var(--red-solid)}
.v-btn--danger-soft{background:color-mix(in srgb, var(--red-solid) 12%, transparent);color:var(--red-solid);border-color:color-mix(in srgb, var(--red-solid) 38%, transparent)}
.v-btn--danger-soft:hover{background:color-mix(in srgb, var(--red-solid) 18%, transparent);border-color:var(--red-solid)}
.v-btn--danger:hover{filter:brightness(1.08)}
.v-btn--success{background:var(--green);color:#fff;border-color:var(--green)}
.v-btn--primary-soft{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent);border-color:color-mix(in srgb, var(--accent) 38%, transparent)}
.v-btn--primary-soft:hover{background:color-mix(in srgb, var(--accent) 20%, transparent);border-color:var(--accent)}
.v-btn--success-soft{background:color-mix(in srgb, var(--green) 14%, transparent);color:var(--green);border-color:color-mix(in srgb, var(--green) 38%, transparent)}
.v-btn--success-soft:hover{background:color-mix(in srgb, var(--green) 20%, transparent);border-color:var(--green)}
.v-btn--success:hover{filter:brightness(1.08)}
.v-btn--amber{background:color-mix(in srgb, var(--amber) 14%, transparent);color:var(--amber);border-color:color-mix(in srgb, var(--amber) 38%, transparent)}
.v-btn--amber:hover{background:color-mix(in srgb, var(--amber) 20%, transparent);border-color:var(--amber)}

.v-btn--sm{padding:6px 12px;min-height:32px;font-size:var(--font-sm)}
.v-btn--lg{padding:12px 22px;min-height:44px;font-size:var(--font-lg)}
.v-btn--block{width:100%}

.v-iconbtn{
  display:inline-flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:var(--r-sm);
  background:var(--surface-2);color:var(--text2);
  border:1px solid var(--border);cursor:pointer;
  transition:background .15s,color .15s,border-color .15s;
}
.v-iconbtn:hover{background:var(--surface-hover);color:var(--text1)}
.v-iconbtn:focus-visible{outline:none;box-shadow:var(--ring)}
.v-iconbtn svg{width:15px;height:15px}
.v-iconbtn--sm{width:24px;height:24px;border-radius:6px}
.v-iconbtn--sm svg{width:12px;height:12px}
.v-iconbtn--xs{width:18px;height:18px;border-radius:4px}
.v-iconbtn--xs svg{width:10px;height:10px}
.v-iconbtn--danger:hover{background:var(--red-light);color:var(--red);border-color:var(--red-border)}

/* ── Badges / Chips / Pills */
.v-badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 9px;border-radius:var(--r-pill);
  font-size:var(--font-xs);font-weight:600;line-height:1.4;
  background:var(--surface-2);color:var(--text2);border:1px solid var(--border);
}
.v-badge--blue  {background:var(--accent-light);color:var(--accent); border-color:color-mix(in srgb, var(--accent) 22%, transparent)}
.v-badge--green {background:var(--green-light); color:var(--green);  border-color:color-mix(in srgb, var(--green)  22%, transparent)}
.v-badge--amber {background:var(--amber-light); color:var(--amber);  border-color:color-mix(in srgb, var(--amber)  22%, transparent)}
.v-badge--red   {background:var(--red-light);   color:var(--red);    border-color:var(--red-border)}
.v-badge--purple{background:var(--purple-light);color:var(--purple); border-color:color-mix(in srgb, var(--purple) 22%, transparent)}
.v-badge--goud  {background:var(--goud-light);  color:var(--goud2);  border-color:color-mix(in srgb, var(--goud)   22%, transparent)}

.v-chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 11px;border-radius:var(--r-pill);
  font-size:var(--font-sm);font-weight:500;
  background:var(--surface-2);color:var(--text2);border:1px solid var(--border);
  cursor:pointer;transition:background .15s,color .15s,border-color .15s;
}
.v-chip:hover{background:var(--surface-hover);color:var(--text1)}
.v-chip--actief{background:var(--accent-light);color:var(--accent);border-color:color-mix(in srgb, var(--accent) 30%, transparent)}
.v-chip__count{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-pill);
  background:color-mix(in srgb, var(--accent) 18%, transparent);
  color:var(--accent);font-size:11px;font-weight:700;line-height:1;
}

/* Filter-tabs (rij van .v-chip's) — zoals "Alle / Mijn / Bekeken" */
.v-filter-tabs{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}

/* ── Tabellen */
.v-table{
  width:100%;border-collapse:collapse;font-size:var(--font-md);
  background:var(--surface);
}
.v-table th{
  text-align:left;font-size:var(--font-xs);font-weight:700;
  color:var(--text3);text-transform:uppercase;letter-spacing:.5px;
  padding:10px 12px;border-bottom:1.5px solid var(--border);
  background:var(--surface-2);
}
.v-table td{
  padding:12px;border-bottom:1px solid var(--border);
  color:var(--text1);vertical-align:middle;
}
.v-table tbody tr:hover td{background:var(--surface-hover)}
.v-table tbody tr:last-child td{border-bottom:none}
.v-table--compact td{padding:8px 10px}

/* ── Formulier-elementen */
.v-field{margin-bottom:var(--space-4)}
.v-label{
  display:block;font-size:var(--font-xs);font-weight:600;
  color:var(--text2);margin-bottom:5px;
  text-transform:uppercase;letter-spacing:.4px;
}
.v-input,.v-select,.v-textarea{
  width:100%;padding:10px 12px;min-height:38px;
  font-family:inherit;font-size:var(--font-md);
  background:var(--input-bg);color:var(--text1);
  border:1.5px solid var(--input-border);
  border-radius:var(--r-sm);
  outline:none;box-sizing:border-box;line-height:1.4;
  transition:border-color .15s,box-shadow .15s;
}
.v-input:focus,.v-select:focus,.v-textarea:focus{
  border-color:var(--accent);
  box-shadow:var(--ring);
}
.v-textarea{min-height:80px;resize:vertical}
.v-select{
  appearance:none;-webkit-appearance:none;
  padding-right:32px;
 background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='none' stroke='%2394a3b8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M1 1l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;
}

/* ── Modal / Overlay */
.v-overlay{
  position:fixed;inset:0;z-index:8000;
  background:rgba(0,0,0,.5);
  display:flex;align-items:center;justify-content:center;
  padding:var(--space-3);
  visibility:hidden;opacity:0;transition:opacity .2s;
}
.v-overlay.open{visibility:visible;opacity:1}
.v-modal{
  background:var(--surface);color:var(--text1);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  width:100%;max-width:560px;max-height:calc(100vh - 60px);
  display:flex;flex-direction:column;
  overflow:hidden;
  box-shadow:var(--shadow-lg);
}
.v-modal__head{
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  padding:var(--space-4) var(--space-5);
  border-bottom:1px solid var(--border);
  flex-shrink:0;
}
.v-modal__title{font-size:var(--font-lg);font-weight:700;color:var(--text1);margin:0}
.v-modal__body{
  padding:var(--space-4) var(--space-5);
  overflow-y:auto;flex:1;
}
.v-modal__foot{
  padding:var(--space-3) var(--space-5);
  border-top:1px solid var(--border);
  display:flex;gap:var(--space-2);justify-content:flex-end;
  flex-shrink:0;background:var(--surface-2);
}
.v-modal--lg{max-width:780px}
.v-modal--sm{max-width:420px}

/* ── Brand-modal-header 
   Light: dynamische kantoor-kleur (var(--p)) met witte tekst/X/inverted btn
   Dark : matcht reguliere modal-head (var(--bg2)) — geen felle kleur op donker */
.v-modal__head--brand,.modal-header--brand,.preview-modal-header{background:var(--p);border-bottom:1px solid color-mix(in srgb,#000 12%,var(--p))}
.v-modal__head--brand .v-modal__title,.modal-header--brand .modal-titel,.preview-modal-header .preview-modal-title{color:#fff}
/* X-close binnen brand-header altijd licht-style — overschrijft .modal-close grijs */
.v-modal__head--brand .modal-close,.modal-header--brand .modal-close,.preview-modal-header .modal-close,.v-modal__head--brand .modal-sluit,.modal-header--brand .modal-sluit,.preview-modal-header .modal-sluit{color:rgba(255,255,255,.85);background:none}
.v-modal__head--brand .modal-close:hover,.modal-header--brand .modal-close:hover,.preview-modal-header .modal-close:hover,.v-modal__head--brand .modal-sluit:hover,.modal-header--brand .modal-sluit:hover,.preview-modal-header .modal-sluit:hover{color:#fff;background:rgba(255,255,255,.15)}
.v-modal__head--brand .v-btn--primary,.modal-header--brand .v-btn--primary,.preview-modal-header .v-btn--primary{background:#fff;color:var(--p);border-color:#fff}
.v-modal__head--brand .v-btn--primary:hover,.modal-header--brand .v-btn--primary:hover,.preview-modal-header .v-btn--primary:hover{background:rgba(255,255,255,.92);color:var(--p)}

/* Dark mode: modal-body & brand-header op donker oppervlak (anders blijven inputs/labels mismatch met witte modal) */
html[data-theme="dark"] .modal{background:var(--bg2);color:var(--text1)}
html[data-theme="dark"] .modal-header{border-bottom-color:var(--border)}
html[data-theme="dark"] .v-modal__head--brand,
html[data-theme="dark"] .modal-header--brand,
html[data-theme="dark"] .preview-modal-header{background:var(--bg2);border-bottom:1px solid var(--border)}
html[data-theme="dark"] .v-modal__head--brand .v-modal__title,
html[data-theme="dark"] .modal-header--brand .modal-titel,
html[data-theme="dark"] .preview-modal-header .preview-modal-title{color:var(--text1)}
html[data-theme="dark"] .v-modal__head--brand .modal-close,
html[data-theme="dark"] .modal-header--brand .modal-close,
html[data-theme="dark"] .preview-modal-header .modal-close,
html[data-theme="dark"] .v-modal__head--brand .modal-sluit,
html[data-theme="dark"] .modal-header--brand .modal-sluit,
html[data-theme="dark"] .preview-modal-header .modal-sluit{color:var(--text3)}
html[data-theme="dark"] .v-modal__head--brand .modal-close:hover,
html[data-theme="dark"] .modal-header--brand .modal-close:hover,
html[data-theme="dark"] .preview-modal-header .modal-close:hover,
html[data-theme="dark"] .v-modal__head--brand .modal-sluit:hover,
html[data-theme="dark"] .modal-header--brand .modal-sluit:hover,
html[data-theme="dark"] .preview-modal-header .modal-sluit:hover{color:var(--text1);background:var(--bg3)}
html[data-theme="dark"] .v-modal__head--brand .v-btn--primary,
html[data-theme="dark"] .modal-header--brand .v-btn--primary,
html[data-theme="dark"] .preview-modal-header .v-btn--primary{background:var(--p);color:#fff;border-color:var(--p)}
html[data-theme="dark"] .v-modal__head--brand .v-btn--primary:hover,
html[data-theme="dark"] .modal-header--brand .v-btn--primary:hover,
html[data-theme="dark"] .preview-modal-header .v-btn--primary:hover{filter:brightness(1.08)}

@media(max-width:480px){
  .v-modal{max-width:100%;border-radius:var(--r);max-height:calc(100vh - 24px)}
  .v-modal__head,.v-modal__body{padding:var(--space-3) var(--space-4)}
  .v-modal__foot{padding:var(--space-3) var(--space-4);flex-wrap:wrap}
  .v-modal__foot .v-btn{flex:1 1 calc(50% - 4px)}
}

/* ── Search-input met icoon (zoek-balk patroon) */
.v-search{
  position:relative;display:flex;align-items:center;
}
.v-search__input{
  width:100%;padding:9px 12px 9px 36px;min-height:38px;
  font-family:inherit;font-size:var(--font-md);
  background:var(--input-bg);color:var(--text1);
  border:1.5px solid var(--input-border);
  border-radius:var(--r-sm);outline:none;box-sizing:border-box;
  transition:border-color .15s,box-shadow .15s;
}
.v-search__input:focus{border-color:var(--accent);box-shadow:var(--ring)}
.v-search__icon{
  position:absolute;left:12px;color:var(--text3);
  width:14px;height:14px;pointer-events:none;
}

/* ── Empty-state */
.v-empty{
  text-align:center;padding:var(--space-7) var(--space-4);
  color:var(--text3);
}
.v-empty__ico{
  width:48px;height:48px;border-radius:50%;
  background:var(--surface-2);color:var(--text3);
  display:inline-flex;align-items:center;justify-content:center;
  margin-bottom:var(--space-3);
}
.v-empty__title{font-size:var(--font-lg);font-weight:600;color:var(--text2);margin:0 0 4px}
.v-empty__sub{font-size:var(--font-md);color:var(--text3);max-width:340px;margin:0 auto;line-height:1.5}

/* ── Mobile-safety voor v-* components */
@media(max-width:760px){
  .v-stat-strip{grid-template-columns:repeat(2,1fr);gap:var(--space-2)}
  .v-stat{padding:var(--space-3)}
  .v-table{font-size:var(--font-sm)}
}
@media(max-width:480px){
  .v-card{padding:var(--space-3) var(--space-4);border-radius:var(--r)}
  .v-btn{padding:9px 14px}
}

/* ─── iOS date-input alignment fix 
   iOS Safari toont datum-tekst rechts-uitgelijnd in <input type="date">.
   Forceer links + neutraliseer default appearance voor consistentie. */
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"],
input[type="week"]{
  text-align:left;
  -webkit-appearance:none;
  appearance:none;
  font-family:inherit;
}

/* ─── Mobile responsive — gedeeld voor alle pages ───────────── */
@media (max-width: 600px) {
 /* Filter chips — kantoor pills compacter zonder logo-overlap */
  .filter-chips { gap: 5px }
  .chip { padding: 6px 11px; font-size: 11.5px; max-width: calc(50% - 6px) }
  .chip img { max-height: 14px !important; width: auto !important; flex-shrink: 0 }
  .chip-cnt { padding: 1px 5px; font-size: 9.5px; margin-left: 3px }

 /* Stat grid — 2-koloms wrap, niet horizontaal scrollen */
  .stats { gap: 6px }
  .stats > .stat-card,
  .stats > .v-stat-card { flex: 1 1 calc(50% - 6px); min-width: calc(50% - 6px) }
  .stat-num,
  .v-stat-num { font-size: 20px }
  .stat-lbl,
  .v-stat-lbl { font-size: 11px }

 /* Filter-row — alles stack-bar onder elkaar als 't krap is */
  .filterbar { gap: 6px; flex-wrap: wrap }
  .filterbar > select,
  .filterbar > input { flex: 1 1 100%; min-width: 0 }
  .filterbar > div:last-child { width: 100%; margin-left: 0 !important }

 /* Page padding compacter op mobile */
  .page { padding: 12px 10px }
  .topbar { padding: 0 12px; gap: 8px }
}

@media (max-width: 400px) {
 /* Extra-narrow — kantoor chips ook stacken als nodig */
  .chip { max-width: 100% }
  .filter-chips .chip img { max-height: 13px !important }
}


/* ─── Status-dropdown (gekleurde dot per optie) 
   Shared component voor alle aanklikbare status-pills (offertes, dossiers,
   debiteuren, ondertekenen, etc). Open via window.vorioStatusDd.open(...). */
.v-statusdd{
  position:fixed; z-index:9999;
  background:var(--bg2); border:1.5px solid var(--border); border-radius:10px;
  box-shadow:0 8px 24px rgba(0,0,0,.18);
  padding:4px; min-width:170px;
  font-size:12.5px; font-family:var(--font);
  animation:v-statusdd-in .12s ease-out;
}
@keyframes v-statusdd-in{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}
.v-statusdd__item{
  display:flex; align-items:center; gap:9px;
  padding:7px 12px; border-radius:7px; cursor:pointer;
  color:var(--text1); font-weight:500;
  transition:background .12s;
}
.v-statusdd__item:hover{ background:var(--bg3) }
.v-statusdd__item.is-current{
  background:var(--bg3); font-weight:700;
}
.v-statusdd__dot{
  width:9px; height:9px; border-radius:50%;
  background:var(--dot,var(--text3));
  flex-shrink:0;
  box-shadow:0 0 0 2px color-mix(in srgb, var(--dot, var(--text3)) 25%, transparent);
}

/*    Vorio succes-pagina (vorio_succes.js)
   Klassieke .v-page-* DOM-structuur — gerendered ná submit door wwft/herkomst/
   aanlever/intake. Light + dark in 1 plek, via design-tokens.
   Was eerder inline-JS injection in vorio_succes.js.
 */
.v-page-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg);box-sizing:border-box}
.v-page-card{width:100%;max-width:520px;background:var(--bg2);border-radius:16px;overflow:hidden;box-shadow:0 4px 24px rgba(15,23,42,.06);color:var(--text1)}
html[data-theme=dark] .v-page-card{box-shadow:0 4px 24px rgba(0,0,0,.45)}
.v-page-head{padding:28px 32px 18px;text-align:center;border-bottom:1px solid var(--border)}
.v-page-kantoor-logo img{max-height:48px;max-width:200px;display:block;margin:0 auto 8px}
html[data-theme=dark] .v-page-kantoor-logo img{filter:brightness(0) invert(1)}
.v-page-kantoor-naam{font-weight:700;font-size:18px;color:var(--text1)}
.v-page-sub{font-size:13px;color:var(--text3);margin-top:4px}
.v-page-body{padding:32px 32px 24px;text-align:center}
.v-page-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;margin:0 auto 18px}
.v-page-icon svg{width:32px;height:32px}
.v-page-icon-green{background:color-mix(in srgb,var(--green) 14%,transparent);color:var(--green)}
.v-page-titel{font-size:22px;font-weight:700;margin:0 0 8px;color:var(--green)}
.v-page-tekst{font-size:14px;color:var(--text2);line-height:1.5;margin:0 0 6px;max-width:380px;margin-left:auto;margin-right:auto}
.v-page-cta{display:inline-flex;align-items:center;gap:7px;padding:10px 18px;background:var(--p);color:#fff;border-radius:8px;font-weight:600;font-size:14px;text-decoration:none;transition:filter .15s}
.v-page-cta:hover{filter:brightness(1.08)}
.v-succes-info{margin-top:18px;padding:14px 16px;border-radius:10px;border:1px solid var(--border);text-align:left;background:var(--bg3)}
.v-succes-info h4{margin:0 0 4px;font-size:14px;font-weight:700;color:var(--text1)}
.v-succes-info p{margin:0;font-size:13px;color:var(--text2);line-height:1.5}
.v-succes-info.blue{border-color:color-mix(in srgb,var(--p) 30%,var(--border));background:color-mix(in srgb,var(--p) 6%,var(--bg3))}
.v-succes-info.amber{border-color:#d97706;background:color-mix(in srgb,#d97706 12%,var(--bg3))}
.v-page-foot{padding:14px 24px;background:var(--bg3);border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.v-page-foot-left{display:inline-flex;gap:0;align-items:center}
.v-page-lang{display:inline-flex;align-items:center;padding:5px 12px;font-size:11px;font-weight:700;letter-spacing:.4px;color:var(--text3);text-decoration:none;background:transparent;border:1.5px solid var(--border);cursor:pointer;line-height:1;transition:all .15s}
.v-page-lang:first-of-type{border-radius:6px 0 0 6px}
.v-page-lang:last-of-type{border-radius:0 6px 6px 0;margin-left:-1.5px}
.v-page-lang:hover{color:var(--p);border-color:var(--p)}
.v-page-lang.actief{color:var(--p);border-color:var(--p);background:color-mix(in srgb,var(--p) 8%,transparent);position:relative;z-index:1}

/* Contact-blok (telefoon + email) op succes-pagina — intake/etc */
.v-page-contact{display:inline-flex;align-items:center;gap:14px;padding:12px 18px;background:var(--bg3);border:1px solid var(--border);border-radius:8px;font-size:12px;color:var(--text3);margin-bottom:14px;flex-wrap:wrap;justify-content:center}
.v-page-contact-link{display:inline-flex;align-items:center;gap:6px;color:var(--p);text-decoration:none;font-weight:500;transition:opacity .15s}
.v-page-contact-link:hover{opacity:.75}
.v-page-contact-link svg{width:13px;height:13px;flex-shrink:0;color:var(--text3)}

/*    Vorio language toggle (.lt-seg) — CANONICAL SINGLE SOURCE OF TRUTH
   Werkt op 3 backgrounds:
   1. Default (in cards/forms) → grijs/border, actief = kantoor-kleur pill
   2. .header (mijn/connect dashboard, witte bg) → idem, met dark-mode variant
 3. .site-header / #siteHeader / header.site-header / .vorio-header / .hdr
      (kantoor-gradient topbar) → witte gloed-rand, witte tekst, actief = subtiel sterkere bg
 */
.lt-seg{--lt-bg:transparent;--lt-border:var(--border,#e5e7eb);--lt-color:var(--text3,#6b7280);--lt-active-bg:color-mix(in srgb,var(--p) 8%,transparent);--lt-active-border:var(--p);--lt-active-color:var(--p);display:inline-flex;flex-shrink:0;line-height:1;font-family:inherit}
.lt-seg>button,.lt-seg>a{display:inline-flex;align-items:center;padding:5px 12px;font-size:11px;font-weight:700;letter-spacing:.4px;color:var(--lt-color);text-decoration:none;background:var(--lt-bg);border:1.5px solid var(--lt-border);cursor:pointer;font-family:inherit;transition:all .15s;border-radius:0;margin:0}
.lt-seg>button:hover,.lt-seg>a:hover{color:var(--lt-active-color);border-color:var(--lt-active-border)}
.lt-seg>:first-child{border-radius:6px 0 0 6px}
.lt-seg>:last-child{border-radius:0 6px 6px 0;margin-left:-1.5px}
.lt-seg>button.actief,.lt-seg>a.actief,.lt-seg>button.active,.lt-seg>a.active{color:var(--lt-active-color);border-color:var(--lt-active-border);background:var(--lt-active-bg);position:relative;z-index:1}
/* Variant: in WITTE dashboard-header (mijn/connect) — kantoor-kleur actief */
.header .lt-seg{--lt-bg:transparent;--lt-border:#cfd6e2;--lt-color:#475569;--lt-active-bg:color-mix(in srgb,var(--p) 10%,transparent);--lt-active-border:var(--p);--lt-active-color:var(--p)}
[data-theme="dark"] .header .lt-seg{--lt-border:var(--border2,#3a4666);--lt-color:var(--text2,#c4cce0);--lt-active-bg:color-mix(in srgb,var(--p) 14%,transparent)}
/* Variant: in kantoor-gradient topbar — witte gloed-rand, witte tekst, geen wit-pill */
.site-header .lt-seg,.hdr .lt-seg,#siteHeader .lt-seg,.vorio-header .lt-seg,header.site-header .lt-seg{--lt-bg:rgba(255,255,255,.10);--lt-border:rgba(255,255,255,.40);--lt-color:#fff;--lt-active-bg:rgba(255,255,255,.22);--lt-active-border:rgba(255,255,255,.85);--lt-active-color:#fff}
.site-header .lt-seg>button.actief,.site-header .lt-seg>a.actief,#siteHeader .lt-seg>button.actief,#siteHeader .lt-seg>a.actief,header.site-header .lt-seg>button.actief,header.site-header .lt-seg>a.actief,.hdr .lt-seg>button.actief,.hdr .lt-seg>a.actief{box-shadow:0 0 0 2px rgba(255,255,255,.10)}

/* === Vorio toggle switch === */
.vt-tog input:checked ~ .vt-tog-bg{background:var(--p)!important}
.vt-tog input:checked ~ .vt-tog-dot{left:21px!important}
.vt-tog input:disabled ~ .vt-tog-bg{opacity:.5}
.vt-tog input:disabled ~ .vt-tog-dot{opacity:.7}
/* Font-sharpness — crispness via -webkit-font-smoothing */
h1{ letter-spacing:-.6px }
h2{ letter-spacing:-.4px }
.v-stat-getal,.stat-getal,.dash-stat-num,.tile-getal{ letter-spacing:-.8px; font-variant-numeric:tabular-nums; font-feature-settings:'ss01' }
.v-stat-label,.stat-label,.dash-stat-label{ letter-spacing:.85px }
/* eind sharpness-test */
/* ─── ICON-SHARPNESS TEST — geometricPrecision + uniform stroke ─── */
svg{ shape-rendering:geometricPrecision }
.nav-icon,.adm-icon-btn svg,.btn svg,svg[class*='ic-']{ vector-effect:non-scaling-stroke }
/* eind icon-sharpness */


/* ─── TOPBAR LIJN-UNIFICATIE — dark mode dunner + zelfde tint als sidebar logo-lijn ─── */
html[data-theme="dark"] .topbar,
html[data-theme="dark"] .content-topbar,
html[data-theme="dark"] .kb-topbar,
html[data-theme="dark"] .deb-topbar,
html[data-theme="dark"] #embedNav{
  border-bottom:1px solid rgba(255,255,255,.07) !important;
}
/* eind topbar lijn-unificatie */
