/* beheer.css — Gedeelde styles voor admin.php (kantoor-beheer) + admin.vorio.nl/index.php (superadmin) Vereist: vorio-base.css (laden vóór dit bestand). */
/* admin.php — Kantoor-beheer panelen */
/* iOS Safari schaalt tabeltekst op bij smalle kolommen; hier uitgezet zodat dossier-nrs op mobiel niet 22-28px worden. */
html{ -webkit-text-size-adjust:100%; text-size-adjust:100%; --vorio-brand:var(--p) }
html[data-theme="light"]{
  --accent:var(--vorio-brand); --accent2:#1558c0; --accent-light:#e8f4fc; --grad:linear-gradient(135deg,#1558c0,var(--vorio-brand));
  --bg:#f0f4f8; --bg2:#fff; --bg3:#f8fafc; --bg4:#f1f5f9;
  --border:#e2e8f0; --border2:#d0d7e2;
  --text1:#1a1a2e; --text2:#475569; --text3:#64748b;
  --red:#b91c1c; --red-light:#fef2f2; --red-border:#f5c6c2; --red-text:#7f1d1d;
  --amber:#d97706; --amber-light:#fffbeb;
  --green:#15803d; --green-light:#f0fdf4;
  --purple:#7c3aed; --purple-light:#f5f3ff;
  --goud:#c8a96e; --goud2:#8b7345; --goud-light:#faf5ec;
  --r:10px; --shadow:0 1px 2px rgba(15,23,42,.05);
  --font:'DM Sans',system-ui,sans-serif;
  --mono:'DM Mono',monospace;
}
body{font-family:var(--font);background:var(--bg);color:var(--text1);min-height:100vh}
#loginScreen{position:fixed;inset:0;background:linear-gradient(135deg,#0f172a,#1e293b);display:flex;align-items:center;justify-content:center;z-index:var(--adm-z-login)}
#loginScreen::before{display:none}
.login-box{background:#fff;border:none;border-radius:var(--r-modal);padding:40px;width:100%;max-width:380px;box-shadow:var(--shadow-xl);position:relative;z-index:1}
.login-field{margin-bottom:14px}
.login-field label{display:block;font-size:12px;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.3px;margin-bottom:5px}
.login-field input{width:100%;padding:9px var(--space-3);border:1.5px solid #e2e8f0;border-radius:var(--r-2);font-size:13.5px;font-family:var(--font);color:var(--text1);background:#fff;outline:none;transition:border var(--t-base)}
.login-field input:focus{border-color:var(--accent,#1a6bdc);box-shadow:var(--ring)}
.login-btn{width:100%;padding:11px;background:var(--accent,#1a6bdc);color:#fff;border:none;border-radius:var(--r-2);font-size:14px;font-weight:600;cursor:pointer;transition:filter var(--t-base);font-family:var(--font);margin-top:6px}
.login-btn:hover{opacity:.92}
.login-btn:active{transform:scale(.99)}

#app{display:none}
.topbar{background:var(--bg2);border-bottom:1.5px solid var(--border);height:56px;display:flex;align-items:center;padding:0 28px;gap:14px;position:sticky;top:0;z-index:var(--adm-z-chrome)}
.topbar-logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px}
.layout{display:block;min-height:100vh}
.sidebar{width:230px;background:#0f172a;color:#fff;flex-shrink:0;position:fixed;top:0;left:0;bottom:0;height:100vh;overflow-y:auto;border-right:none;display:flex;flex-direction:column;z-index:var(--adm-z-chrome)}
.sb-logo{padding:20px 18px 14px;border-bottom:1px solid rgba(255,255,255,.07);position:relative;display:flex;align-items:center;gap:var(--space-2)}
.sb-logo-btn{padding:0;flex:1;min-width:0;display:flex;align-items:center;justify-content:flex-start;color:inherit}
/* SIDEBAR COLLAPSE — gedeeld tussen tenant-admin (beheer/admin.php nav.sidebar) én superadmin (admin.vorio.nl aside.sidebar)
 State via data-attribute op sidebar element zelf:
 - data-sb-collapsed = user-toggle (persistent in localStorage, alle schermformaten)
 - data-sb-rail     = auto-collapse op instellingen-panel (desktop-only, zie @media hieronder)
 Beide modes renderen identiek: 52px icon-rail.
 Tenant-admin gebruikt .nav-item als link-class, superadmin .sb-link — beide zelfde behavior. */
/* Rail-toggle buttons (twee namen behouden voor backward-compat met bestaande HTML) */
.adm-rail-toggle,.sa-rail-toggle{border:0;background:none;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:inherit;color:#fff}
.adm-rail-toggle svg,.sa-rail-toggle svg{flex-shrink:0;opacity:.92;box-sizing:content-box;padding:5px;background:rgba(255,255,255,.10);border-radius:var(--r-sm);color:#fff;transition:background var(--t-fast)}
.adm-rail-toggle:hover svg,.sa-rail-toggle:hover svg{background:rgba(255,255,255,.16);opacity:1}
/* Verberg toggle in rail-mode (instellingen) én op mobile (sidebar wordt drawer) */
.sidebar[data-sb-rail="1"] .adm-rail-toggle,
.sidebar[data-sb-rail="1"] .sa-rail-toggle{display:none}
@media(max-width: 768px){.adm-rail-toggle,.sa-rail-toggle{display:none}}
.ntf-svg-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center}
/* -- Collapsed sidebar (user-toggle, alle schermen) -- */
nav.sidebar[data-sb-collapsed="1"],
aside.sidebar[data-sb-collapsed="1"]{width:52px;overflow:visible;transition:width var(--t-base) ease}
.sidebar[data-sb-collapsed="1"] .nav-item,
.sidebar[data-sb-collapsed="1"] .sb-link{justify-content:center;padding:6px 0;margin:3px var(--space-2);gap:0;font-size:0;position:relative;overflow:visible;min-height:37px;white-space:nowrap}
.sidebar[data-sb-collapsed="1"] .nav-item > *,
.sidebar[data-sb-collapsed="1"] .sb-link > *{display:none}
/* Icoon absoluut centreren i.p.v. flex+margin:auto: WebKit houdt subpixel-restbreedte op font-size:0 label → icoon schuift per label-lengte. Absolute centrering is engine-onafhankelijk (nav-item/sb-link zijn position:relative). */
.sidebar[data-sb-collapsed="1"] .nav-item > svg,
.sidebar[data-sb-collapsed="1"] .nav-item > .nav-icon,
.sidebar[data-sb-collapsed="1"] .sb-link > svg{display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);margin:0;font-size:initial}
.sidebar[data-sb-collapsed="1"] .sb-link [style*=background]{display:none}
.sidebar[data-sb-collapsed="1"] .nav-item > .ntf-svg-wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;width:auto;height:auto;margin:0;padding:0}
.sidebar[data-sb-collapsed="1"] .nav-item svg,
.sidebar[data-sb-collapsed="1"] .sb-link svg{width:15px;height:15px;padding:5px;background:rgba(255,255,255,.08);border-radius:var(--r-2);box-sizing:content-box}
.sidebar[data-sb-collapsed="1"] .nav-item .ntf-svg-wrap svg{width:13px;height:13px;padding:6px}
.sidebar[data-sb-collapsed="1"] .nav-item:hover svg,
.sidebar[data-sb-collapsed="1"] .sb-link:hover svg{background:rgba(255,255,255,.16)}
.sidebar[data-sb-collapsed="1"] .nav-item.active svg{background:var(--vorio-brand);box-shadow:none}
.sidebar[data-sb-collapsed="1"] .sb-link.actief svg{background:var(--vorio-brand);box-shadow:0 4px 12px color-mix(in srgb,var(--p) 35%,transparent)}
.sidebar[data-sb-collapsed="1"] .nav-section,
.sidebar[data-sb-collapsed="1"] .nav-sub-groep,
.sidebar[data-sb-collapsed="1"] .sb-sec{display:none}
.sidebar[data-sb-collapsed="1"] .nav-item-first,
.sidebar[data-sb-collapsed="1"] .sb-logo + .nav-item{margin-top:3px}
nav.sidebar[data-sb-collapsed="1"] > .sb-logo,
aside.sidebar[data-sb-collapsed="1"] > .sb-logo{padding:var(--space-2);justify-content:center;gap:0}
.sidebar[data-sb-collapsed="1"] .sb-logo-btn{display:none}

/* Hover-tooltip (800ms delay) op collapsed/rail nav-items — label rechts naast icon.
 Werkt voor .nav-item (tenant) én .sb-link (superadmin) in beide collapse-modes. */
.sidebar[data-sb-collapsed="1"] .nav-item[data-tip]::after,
.sidebar[data-sb-collapsed="1"] .sb-link[data-tip]::after,
.sidebar[data-sb-rail="1"] .nav-item[data-tip]::after,
.sidebar[data-sb-rail="1"] .sb-link[data-tip]::after{content:attr(data-tip);position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);background:#0f172a;color:#fff;padding:6px 10px;border-radius:var(--r-sm);font-size:12px;font-weight:500;white-space:nowrap;z-index:var(--adm-z-tooltip);pointer-events:none;box-shadow:var(--shadow-sm);border:1px solid rgba(255,255,255,.10);font-family:var(--font,'DM Sans',system-ui,sans-serif);letter-spacing:.1px;opacity:0;visibility:hidden;transition:opacity var(--t-fast) ease,visibility 0s linear var(--t-fast)}
.sidebar[data-sb-collapsed="1"] .nav-item[data-tip]:hover::after,
.sidebar[data-sb-collapsed="1"] .sb-link[data-tip]:hover::after,
.sidebar[data-sb-rail="1"] .nav-item[data-tip]:hover::after,
.sidebar[data-sb-rail="1"] .sb-link[data-tip]:hover::after{opacity:1;visibility:visible;transition:opacity var(--t-fast) ease .8s,visibility 0s linear .8s}
body.no-tip .nav-item[data-tip]::after,body.no-tip .sb-link[data-tip]::after{display:none}
html[data-theme="light"] .sidebar[data-sb-collapsed="1"] .nav-item[data-tip]::after,
html[data-theme="light"] .sidebar[data-sb-collapsed="1"] .sb-link[data-tip]::after,
html[data-theme="light"] .sidebar[data-sb-rail="1"] .nav-item[data-tip]::after,
html[data-theme="light"] .sidebar[data-sb-rail="1"] .sb-link[data-tip]::after{background:#fff;color:#0f172a;border-color:rgba(15,23,42,.12)}
/* -- Rail mode (instellingen-panel) — ALLEEN desktop (>881px), op mobiel drawer-gedrag zonder centering.
 Logo tile blijft links op mobiel (net als de nav-items eronder). --  */
@media (min-width: 881px){
  .sidebar[data-sb-rail="1"] .sb-logo-btn{justify-content:center;padding:0}
  nav.sidebar[data-sb-rail="1"] > .sb-logo,
  aside.sidebar[data-sb-rail="1"] > .sb-logo{padding:var(--space-2) 0;justify-content:center;gap:0}
}
/* Mobile drawer (<1024px): dwing .sb-logo en tile links, ongeacht data-sb-rail/collapsed state.
 Hogere specificity (nav.sidebar/aside.sidebar > .sb-logo binnen @media) + source-order wint van rail/collapsed rules. */
@media (max-width: 1023px){
  nav.sidebar > .sb-logo,
  aside.sidebar > .sb-logo{justify-content:flex-start;padding:0 22px;gap:var(--space-2)}
  nav.sidebar .sb-logo-btn,
  aside.sidebar .sb-logo-btn{justify-content:flex-start;padding:0;display:flex;flex:1}
}
/* Admin user-pill onderaan sidebar (zelfde patroon als portaal) */
.adm-sb-bottom{margin-top:auto;padding:var(--space-2) 10px var(--space-3);border-top:none;flex-shrink:0;display:flex;flex-direction:column;gap:var(--space-1)}

.adm-sb-bottom .user-pill{display:flex;align-items:center;gap:9px;padding:var(--space-2) 10px;border-radius:var(--r-2);background:rgba(255,255,255,.08);cursor:pointer;transition:background var(--t-base);user-select:none;color:#fff}
.adm-sb-bottom .user-pill:hover{background:rgba(255,255,255,.14)}
.adm-sb-bottom .user-av{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.22);border:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;letter-spacing:.5px;flex-shrink:0;overflow:hidden}
.adm-sb-bottom .user-av img{width:100%;height:100%;object-fit:cover}
.adm-sb-bottom .user-name{font-size:12.5px;font-weight:600;color:#fff;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adm-sb-bottom .user-role{font-size:10.5px;color:rgba(255,255,255,.55);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adm-sb-bottom .chevron{margin-left:auto;font-size:10px;color:rgba(255,255,255,.4)}
/* Collapsed: alleen avatar zichtbaar (desktop-only — op mobiel opent sidebar altijd full-width, dus pill blijft compleet) */
/* User-pill compact in collapsed — globaal (collapse-breedte + label-hiding zijn ook globaal; zonder dit werd de bottom-pill op mobiel <769px niet ingeklapt terwijl de rail wel 52px smal is, waardoor chevron/naam uit de rail poken). Rail-variant blijft desktop-only, zie nested @media. */
/* Bottom-container (tenant: .adm-sb-bottom, super: .sb-bottom) én generieke .user-pill compact in collapsed/rail */
.sidebar[data-sb-collapsed="1"] .adm-sb-bottom,
.sidebar[data-sb-collapsed="1"] .sb-bottom{padding:var(--space-2) 0 10px;display:flex;flex-direction:column;align-items:center;gap:20px;width:100%;max-width:52px;overflow:hidden;box-sizing:border-box}
.sidebar[data-sb-collapsed="1"] .user-pill{padding:0;background:transparent;justify-content:center;gap:0;width:34px;max-width:34px;flex:0 0 34px;overflow:hidden;box-sizing:border-box}
.sidebar[data-sb-collapsed="1"] .user-pill:hover{background:transparent}
.sidebar[data-sb-collapsed="1"] .user-pill > *{display:none}
.sidebar[data-sb-collapsed="1"] .user-pill > .user-av{display:flex;width:34px;height:34px;flex:0 0 34px;border:0}
.sidebar[data-sb-collapsed="1"] .user-pill .chevron{display:none}
/* Rail-variant desktop-only: mobiele drawer (<881px) toont bottom-pill altijd uitgeklapt */
@media (min-width:881px){
  .sidebar[data-sb-rail="1"] .adm-sb-bottom,
  .sidebar[data-sb-rail="1"] .sb-bottom{padding:var(--space-2) 0 10px;display:flex;flex-direction:column;align-items:center;gap:20px;width:100%;max-width:52px;overflow:hidden;box-sizing:border-box}
  .sidebar[data-sb-rail="1"] .user-pill{padding:0;background:transparent;justify-content:center;gap:0;width:34px;max-width:34px;flex:0 0 34px;overflow:hidden;box-sizing:border-box}
  .sidebar[data-sb-rail="1"] .user-pill:hover{background:transparent}
  .sidebar[data-sb-rail="1"] .user-pill > *{display:none}
  .sidebar[data-sb-rail="1"] .user-pill > .user-av{display:flex;width:34px;height:34px;flex:0 0 34px;border:0}
  .sidebar[data-sb-rail="1"] .user-pill .chevron{display:none}
}
.nav-section{padding:9px var(--space-3) var(--space-1);font-size:9px;font-weight:700;color:rgba(255,255,255,.45);text-transform:uppercase;letter-spacing:1.4px;margin-top:2px}
.nav-item{display:flex;align-items:center;gap:10px;padding:var(--space-2) var(--space-3);margin:0 10px;border-radius:var(--r-2);font-size:12.5px;font-weight:500;color:rgba(255,255,255,.84);cursor:pointer;transition:background var(--t-base),color var(--t-base);border-left:none;user-select:none;background:none;border-top:none;border-right:none;border-bottom:none;width:auto;text-align:left;font-family:var(--font)}
.nav-item:hover{background:rgba(255,255,255,.05);color:#fff}
.nav-item.active{background:color-mix(in srgb,var(--p) 10%,transparent);color:#fff;border-left-color:transparent;font-weight:700}
.nav-item svg{flex-shrink:0;opacity:.92;transition:background var(--t-base),opacity var(--t-base),color var(--t-base);box-sizing:content-box;padding:5px;background:rgba(255,255,255,.10);border-radius:var(--r-sm);color:#fff}
.nav-item:hover svg{background:rgba(255,255,255,.16)}
.nav-item.active svg{opacity:1;background:var(--vorio-brand);color:#fff;box-shadow:0 4px 12px color-mix(in srgb,var(--p) 35%,transparent)}
.nav-sub-groep{display:none;border-left:2px solid rgba(255,255,255,.1);margin:2px 0 var(--space-1) 28px}
.nav-sub-groep.zichtbaar{display:block}
.nav-sub{display:flex;align-items:center;gap:7px;padding:6px var(--space-3);font-size:12.5px;font-weight:600;color:rgba(255,255,255,.5);cursor:pointer;transition:all var(--t-fast);user-select:none;background:none;border:none;width:100%;text-align:left;font-family:var(--font)}
.nav-sub:hover{color:rgba(255,255,255,.85);background:rgba(255,255,255,.05)}
.nav-sub.active{color:#60b4f4;background:color-mix(in srgb,var(--p) 10%,transparent);font-weight:600}
.main{flex:1;padding:var(--space-5);overflow-x:clip}
.main-inner{padding:28px;flex:1}
@media(max-width: 700px){.main-inner{padding:var(--space-3)}}
/* Tenant-admin margin-left alleen op desktop (>1024px). Op mobiel wordt sidebar drawer,
 .main krijgt margin-left:0 via mobile @media in admin.php inline styles. */
@media (min-width: 1025px){
  .layout > .main{margin-left:230px;transition:margin-left var(--t-base) ease}
  .layout > nav.sidebar[data-sb-collapsed="1"] ~ .main{margin-left:52px;transition:margin-left var(--t-base) ease}
}
.panel{display:none}
.panel.active{display:block}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-3);margin-bottom:var(--space-5)}
.kpi{background:var(--bg2);border:var(--bd);border-radius:var(--r-card);padding:var(--space-4);box-shadow:var(--shadow)}
.kpi-val{font-size:28px;font-weight:700;line-height:1;margin-bottom:var(--space-1)}
.kpi.blauw .kpi-val{color:var(--kc)}
.kpi.groen .kpi-val{color:var(--green)}
.kpi.rood .kpi-val{color:var(--red)}
.kpi.amber .kpi-val{color:var(--amber)}
.kpi.paars .kpi-val{color:var(--purple)}
.sectie-hoofd{display:flex;align-items:center;gap:10px;margin-bottom:var(--space-4);flex-wrap:wrap;min-height:51px}
.sectie-hoofd h2{font-size:15px;font-weight:700;flex:1;letter-spacing:-.2px;margin:0}
/* .sectie-hoofd .count: canon = token-variant verderop in dit bestand (dedup 2026-09-22, hardcoded-hex dubbel verwijderd) */

.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--r-pill);font-size:11px;font-weight:600;line-height:1.4;white-space:nowrap;border:1px solid transparent}
.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(--accent-light);color:var(--kc)}
.badge.grijs,.badge-grijs{background:var(--bg3);color:var(--text3)}
.badge.paars{background:var(--purple-light);color:var(--purple)}
.badge.goud{background:#fef9e7;color:#b8860b}
/* DEBITEUR STATUS POPUP */
.deb-status-btn{display:inline-flex;align-items:center;gap:var(--space-1);background:none;border:none;padding:0;cursor:pointer;font-family:var(--font)}
.deb-status-btn:hover .badge{opacity:.85;transform:scale(1.03)}
/* .btn base-herdef verwijderd 2026-09-16 — canon .v-btn (alias) is leidend. */
/* .btn-groen verwijderd 2026-09-16 — dode code (0 gebruik). */
/* Backwards-compat aliassen */
.btn-primary{background:var(--accent);color:#fff;border:none}
.filter-bar{display:flex;gap:var(--space-2);margin-bottom:14px;flex-wrap:wrap;align-items:center}
.filter-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 13px;border-radius:var(--r-modal);border:var(--bd-strong);background:var(--bg2);color:var(--text2);font-size:13px;font-weight:600;font-family:var(--font);cursor:pointer;transition:all var(--t-base);white-space:nowrap}
.filter-btn:hover{border-color:var(--goud);color:var(--goud2);background:var(--goud-light)}
.filter-btn.active{background:var(--goud-light);color:var(--goud2);border-color:var(--goud);font-weight:600}
.filter-bar input,.filter-bar select{padding:7px 11px;border:var(--bd-strong);border-radius:var(--r-2);font-size:12.5px;font-family:var(--font);background:var(--bg2);color:var(--text1);outline:none;transition:border var(--t-base)}
.filter-bar input:focus,.filter-bar select:focus{border-color:var(--accent)}
.filter-bar input{min-width:240px}
/* Instellingen sub-nav (super-stijl: H1 buiten card + filled cards) */
.inst-page-h1{font-size:20px;font-weight:800;color:var(--text1);letter-spacing:-.3px;margin:0 0 3px}
.inst-shell{display:flex;gap:var(--space-5);align-items:flex-start;margin-top:14px;min-height:calc(100vh - 200px)}
.inst-trigger,.inst-bd,.inst-drawer-head{display:none}
.inst-subnav{width:220px;flex-shrink:0;position:sticky;top:14px}
.inst-sub-sec{font-size:10.5px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:1.2px;padding:14px 10px 6px}
.inst-sub-item{display:flex;align-items:center;gap:9px;padding:var(--space-2) var(--space-3);border-radius:var(--r-2);cursor:pointer;color:var(--text2);font-size:13px;font-weight:500;text-decoration:none;transition:background var(--t-base),color var(--t-base)}
.inst-sub-ic{width:13px;height:13px;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:.75}
.inst-sub-ic.is-filled{fill:currentColor;stroke:none}
.inst-sub-item.actief .inst-sub-ic{opacity:1}
.inst-sub-item:hover{background:var(--bg2);color:var(--text1)}
.inst-sub-item.actief{background:color-mix(in srgb, var(--p) 14%, transparent);color:var(--kc);font-weight:700}
.inst-content{flex:1;min-width:0}
.inst-mw{max-width:640px}
.inst-sec{display:none}
.inst-sec.actief{display:block}
.inst-sec-hoofd{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.inst-sec-h2{font-size:20px;font-weight:700;color:var(--text1);letter-spacing:-.2px;margin:0;flex:1}
.inst-sec-hoofd .count{font-size:11px;color:var(--text3);background:var(--bg3);border:var(--bd);border-radius:var(--r-pill);padding:2px 9px;font-weight:600}

/* Cards binnen Instellingen gebruiken default .card rule (zelfde als super) — geen override meer */
/* Instellingen-panel zelf is transparant + zonder dubbele padding zodat layout 1:1 super matched */
#panel-instellingen{background:transparent;border:none;box-shadow:none;border-radius:0;padding:0;margin-bottom:0}
/* Blok-filter binnen instContainer: alleen het actieve blok tonen */
#instContainer[data-actief-blok="kantoor"] .inst-blok-wrap:not([data-blok="kantoor"]),
#instContainer[data-actief-blok="huisstijl"] .inst-blok-wrap:not([data-blok="huisstijl"]),
#instContainer[data-actief-blok="vestigingen"] .inst-blok-wrap:not([data-blok="vestigingen"]){display:none}
/* Vestigingen — simpel card-design met altijd-zichtbare delete-X */
.vest-lijst{display:flex;flex-direction:column;gap:var(--space-2)}
.vest-lijst.vest-leeg{border:1px dashed var(--border);border-radius:var(--r-card);padding:0}
.vest-head{display:grid;grid-template-columns:18px 26px 46px 1.05fr 1.55fr 1.3fr 34px;gap:10px;align-items:center;padding:0 var(--space-3) var(--space-2)}
.vest-head span{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.9px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vest-card{display:grid;grid-template-columns:18px 26px 46px 1.05fr 1.55fr 1.3fr 34px;gap:10px;align-items:center;padding:9px var(--space-3);background:var(--bg3);border:var(--bd);border-radius:var(--r-card);transition:border-color var(--t-fast),background var(--t-fast)}
.vest-card:hover{border-color:color-mix(in srgb,var(--p) 40%,var(--border));background:var(--bg2)}
.vest-drag{display:flex;align-items:center;justify-content:center;width:18px;height:34px;color:var(--text3);cursor:grab;opacity:.4;transition:opacity var(--t-fast)}
.vest-drag:active{cursor:grabbing}
.vest-card:hover .vest-drag{opacity:.85}
.vest-drag svg{width:14px;height:14px}
.vest-card.vest-dragging{opacity:.45}
.vest-card.vest-drop{box-shadow:inset 0 2px 0 0 var(--p)}
.vest-kleur{position:relative;width:26px;height:26px;flex-shrink:0;cursor:pointer;border-radius:var(--r-2);box-shadow:0 0 0 1px var(--border),inset 0 0 0 1.5px rgba(255,255,255,.14);transition:transform var(--t-fast)}
.vest-kleur:hover{transform:scale(1.08)}
.vest-kleur input[type=color]{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;cursor:pointer;background:transparent;opacity:0}
.vest-kleur-dot{position:absolute;inset:0;border-radius:var(--r-2);pointer-events:none}
.vest-kleur::after{content:"";position:absolute;right:-3px;bottom:-3px;width:12px;height:12px;border-radius:50%;background:var(--bg2);border:var(--bd);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='7' height='7' viewBox='0 0 24 24' fill='none' stroke='%238a96ac' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M12 20h9'/><path d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4Z'/></svg>");background-repeat:no-repeat;background-position:center;opacity:0;transition:opacity var(--t-fast)}
.vest-card:hover .vest-kleur::after{opacity:1}
.vest-kleur:hover::after{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='7' height='7' viewBox='0 0 24 24' fill='none' stroke='%231a6bdc' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M12 20h9'/><path d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4Z'/></svg>")}
/* Beeld-acties: hover-chips op logo/banner previews (Instellingen -> Huisstijl) */
.v-imgprev{position:relative}
.v-imgchips{position:absolute;top:6px;right:6px;display:flex;gap:5px;opacity:.5;transform:translateY(-1px);transition:opacity var(--t-fast),transform var(--t-fast)}
.v-imgprev:hover .v-imgchips,.v-imgprev:focus-within .v-imgchips{opacity:1;transform:none}
.v-imgchip{position:relative;width:27px;height:27px;border-radius:var(--r-2);border:var(--bd);background:color-mix(in srgb,var(--bg2) 85%,transparent);backdrop-filter:blur(5px);color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}
.v-imgchip svg{width:15px;height:15px}
.v-imgchip:hover{color:#fff;background:var(--vorio-brand);border-color:var(--vorio-brand)}
.v-imgchip--del:hover{color:#fff;background:var(--red,#dc2626);border-color:var(--red,#dc2626)}
.v-imgchip input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:0}
.v-imgempty{position:relative;display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:var(--space-4) var(--space-3);font-size:11.5px;font-weight:600;color:var(--text3);cursor:pointer;transition:color var(--t-fast)}
.v-imgempty svg{width:15px;height:15px}
.v-imgempty:hover{color:var(--vorio-brand)}
.v-imgempty input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:0}
/* Pandfoto-thumbnail per vestiging — verschijnt op de VorioConnect afspraak-kaart */
.vest-foto{position:relative;width:46px;height:34px;flex-shrink:0;padding:0;border-radius:var(--r-2);border:var(--bd);background:var(--bg2) center/cover no-repeat;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text3);transition:border-color var(--t-fast),color var(--t-fast)}
.vest-foto:hover{border-color:color-mix(in srgb,var(--p) 55%,var(--border));color:var(--kc)}
.vest-foto--leeg{border-style:dashed}
.vest-foto--leeg svg{width:16px;height:16px}
.vest-foto--set{box-shadow:0 0 0 1px var(--border)}
.vest-foto-x{position:absolute;right:-3px;bottom:-3px;width:14px;height:14px;border-radius:50%;background:var(--bg2);border:var(--bd);display:flex;align-items:center;justify-content:center;color:var(--text3);opacity:0;cursor:pointer;transition:opacity var(--t-fast),color var(--t-fast)}
.vest-foto-x svg{width:8px;height:8px}
.vest-card:hover .vest-foto-x{opacity:1}
.vest-foto-x:hover{color:var(--red)}
/* AI-assistent logo-control (rond; pen + verwijderen verschijnen bij hover, vestigingen-stijl) */
.ai-logo-ctl{position:relative;flex:none;width:46px;height:46px;cursor:pointer}
.ai-logo-av{position:relative;width:46px;height:46px;border-radius:50%;overflow:hidden;display:grid;place-items:center;color:#fff;font-weight:800;font-size:19px;letter-spacing:.01em;background:linear-gradient(140deg,var(--p,#1a6bdc),#0f2744);box-shadow:0 3px 8px -4px color-mix(in srgb,var(--p,#1a6bdc) 35%,transparent),inset 0 1px 0 rgba(255,255,255,.22);transition:box-shadow var(--t-fast,var(--t-base,.15s))}
.ai-logo-ctl:hover .ai-logo-av{box-shadow:0 0 0 2px color-mix(in srgb,var(--p,#1a6bdc) 45%,transparent),0 4px 12px -4px color-mix(in srgb,var(--p,#1a6bdc) 45%,transparent)}
.ai-logo-av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.ai-logo-badge{position:absolute;width:18px;height:18px;border-radius:50%;background:var(--bg2,#111a2c);border:1px solid var(--border,#3a4664);display:none;align-items:center;justify-content:center;color:var(--text3,#8a96ac);box-shadow:var(--shadow);transition:color var(--t-fast,var(--t-base,.15s)),border-color var(--t-fast,var(--t-base,.15s))}
.ai-logo-badge svg{width:9px;height:9px}
.ai-logo-pen{right:-3px;bottom:-3px}
.ai-logo-x{right:-4px;top:-4px;cursor:pointer}
.ai-logo-ctl:hover .ai-logo-pen{display:flex}
.ai-logo-pen:hover{color:var(--p,#1a6bdc)}
.ai-logo-ctl.has:hover .ai-logo-x{display:flex}
.ai-logo-x:hover{color:var(--red,#e5484d);border-color:color-mix(in srgb,var(--red,#e5484d) 50%,var(--border,#3a4664))}
.vest-card .v-rij-x-lg{width:34px;height:34px}
.vest-card .v-rij-x-lg svg{width:14px;height:14px}
.vest-input{width:100%;height:var(--ctrl-h);padding:0 11px;border:1px solid transparent;border-radius:var(--r-sm);font-size:13px;font-family:inherit;color:var(--text1);background:var(--bg4);box-sizing:border-box;transition:border-color var(--t-fast),background var(--t-fast);min-width:0;text-overflow:ellipsis}
html[data-theme="dark"] .vest-input{background:rgba(255,255,255,.03)}
.vest-input:focus{outline:none;border-color:var(--p);background:var(--bg2);box-shadow:var(--ring)}
.vest-input.vest-naam{font-weight:600}
.vest-url-wrap{position:relative;display:block;min-width:0}
.vest-url-ic{position:absolute;left:9px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--text3);pointer-events:none}
.vest-input.vest-url{padding-left:var(--space-6);padding-right:30px;font-size:12px;color:var(--text2);font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,monospace)}
.vest-url-ok{position:absolute;right:9px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--green);opacity:0;pointer-events:none;transition:opacity var(--t-fast)}
.vest-url-wrap:has(.vest-url:not(:placeholder-shown)) .vest-url-ok{opacity:1}
.vest-add{margin-top:var(--space-2);width:100%;height:44px;display:flex;align-items:center;justify-content:center;gap:var(--space-2);background:none;border:1px dashed var(--border2);border-radius:var(--r-card);color:var(--text2);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:border-color var(--t-fast),color var(--t-fast),background var(--t-fast)}
.vest-add:hover{border-color:var(--p);color:var(--kc);background:color-mix(in srgb,var(--p) 8%,transparent)}
.vest-add svg{width:15px;height:15px}
.vest-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:var(--space-4)}
.vest-dirty{display:inline-flex;align-items:center;gap:var(--space-2);font-size:12.5px;color:var(--text3);visibility:hidden}
.vest-dirty.on{visibility:visible}
.vest-dirty-dot{width:7px;height:7px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 3px color-mix(in srgb,var(--amber) 22%,transparent)}
@media (max-width:720px){
  .vest-head{display:none}
  .vest-card .vest-drag{display:none}
  .vest-card{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}
  .vest-card .vest-naam{order:1;flex:1;min-width:120px}
  .vest-card .v-rij-x{order:2}
  .vest-card .vest-adres{order:3;flex-basis:100%}
  .vest-card .vest-url-wrap{order:4;flex-basis:100%}
}
@media (max-width: 880px){
  /* Drawer-pattern op mobiel: trigger-knop opent slide-in nav links */
  .inst-shell{flex-direction:column;align-items:stretch;margin-top:0}
  .inst-page-h1{margin-bottom:var(--space-3)}
  .inst-trigger{display:flex;align-items:center;gap:10px;width:100%;padding:11px 14px;border:var(--bd);border-radius:var(--r-card);background:var(--bg2);color:var(--text1);font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;margin-bottom:var(--space-3)}
  .inst-trigger:active{background:var(--bg3)}
  .inst-trigger-icn{width:16px;height:16px;color:var(--text3);flex-shrink:0;stroke:currentColor;fill:none;stroke-width:2}
  .inst-trigger-lbl{flex:1;text-align:left;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .inst-trigger-chev{width:14px;height:14px;color:var(--text3);flex-shrink:0}
  .inst-bd{display:block;position:fixed;inset:0;background:rgba(0,0,0,.45);opacity:0;visibility:hidden;transition:opacity var(--t-slow),visibility var(--t-slow);z-index:var(--adm-z-inst-bg);backdrop-filter:blur(2px)}
  .inst-bd.open{opacity:1;visibility:visible}
  .inst-subnav{position:fixed;top:0;left:0;bottom:0;width:min(320px,86vw);max-width:none;background:var(--bg2);border-right:1px solid var(--border);transform:translateX(-100%);transition:transform var(--t-slow) ease;z-index:var(--adm-z-inst);overflow-y:auto;padding:0 10px 18px;margin:0;flex-direction:column}
  .inst-subnav.open{transform:translateX(0);box-shadow:6px 0 24px rgba(0,0,0,.35)}
  .inst-drawer-head{display:flex;align-items:center;justify-content:space-between;padding:max(var(--space-4),env(safe-area-inset-top)) 6px var(--space-3);border-bottom:1px solid var(--border);margin-bottom:6px;position:sticky;top:0;background:var(--bg2);z-index:1}
  .inst-drawer-head-title{font-size:15px;font-weight:700;color:var(--text1)}
  .inst-drawer-close{width:34px;height:34px;border:0;background:var(--bg3);border-radius:var(--r-2);color:var(--text2);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
  .inst-drawer-close:active{background:var(--bg4)}
  .inst-sub-item{padding:11px var(--space-3);font-size:14px}
  .inst-sub-sec{padding:14px 10px var(--space-1);font-size:10px}
}
/* Dual-sidebar — main-sidebar krimpt naar icon-rail in Instellingen-panel (desktop-only) */
@media (min-width: 881px){
  nav.sidebar[data-sb-rail="1"],
  aside.sidebar[data-sb-rail="1"]{width:52px;overflow:visible}
  .layout > nav.sidebar[data-sb-rail="1"] ~ .main{margin-left:52px}
  .sidebar[data-sb-rail="1"] .nav-item,
  .sidebar[data-sb-rail="1"] .sb-link{justify-content:center;padding:6px 0;margin:3px var(--space-2);gap:0;font-size:0;position:relative;overflow:visible;min-height:37px}
  .sidebar[data-sb-rail="1"] .nav-item > *,
  .sidebar[data-sb-rail="1"] .sb-link > *{display:none}
  .sidebar[data-sb-rail="1"] .nav-item > svg{display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);margin:0;font-size:initial}
  .sidebar[data-sb-rail="1"] .nav-item > .ntf-svg-wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;width:auto;height:auto;margin:0;padding:0}
  .sidebar[data-sb-rail="1"] .nav-item .ntf-svg-wrap svg{width:13px;height:13px;padding:6px}
  .sidebar[data-sb-rail="1"] .nav-item svg,
  .sidebar[data-sb-rail="1"] .sb-link svg{width:15px;height:15px;padding:5px;background:rgba(255,255,255,.08);border-radius:var(--r-2);box-sizing:content-box}
  .sidebar[data-sb-rail="1"] .nav-item:hover svg,
  .sidebar[data-sb-rail="1"] .sb-link:hover svg{background:rgba(255,255,255,.16)}
  .sidebar[data-sb-rail="1"] .nav-item.active svg{background:var(--vorio-brand);box-shadow:0 4px 12px color-mix(in srgb,var(--p) 35%,transparent)}
  .sidebar[data-sb-rail="1"] .sb-link.actief svg{background:var(--vorio-brand);box-shadow:0 4px 12px color-mix(in srgb,var(--p) 35%,transparent)}
  .sidebar[data-sb-rail="1"] .nav-section,
  .sidebar[data-sb-rail="1"] .sb-sec{display:none}
  .sidebar[data-sb-rail="1"] .nav-item-first,
  .sidebar[data-sb-rail="1"] .sb-logo + .nav-item{margin-top:3px}
  .sidebar[data-sb-rail="1"] .nav-sub-groep{display:none}
  nav.sidebar[data-sb-rail="1"] > .sb-logo,
  aside.sidebar[data-sb-rail="1"] > .sb-logo{padding:var(--space-2);justify-content:center}
  /* .sb-logo-btn centering staat al top-level (line 113) — hier niet dupliceren */
  /* Notif dot: wit op blauwe active-bubble voor contrast */
  .sidebar[data-sb-rail="1"] .nav-item.active #navNotifDot{background:#fff;border-color:var(--vorio-brand)}
}
/* Bundle-tabs (Financieel, Compliance) — gedeelde tab-bar bovenaan bundle-panel */
.vorio-bundle-tabs{display:flex;gap:var(--space-1);margin:0 0 10px;padding:var(--space-1);background:var(--bg3);border:var(--bd);border-radius:var(--r-card);width:fit-content;max-width:100%}
.vorio-bundle-tab{display:inline-flex;align-items:center;min-height:calc(var(--ctrl-h) - 8px);padding:0 18px;background:transparent;border:none;border-radius:var(--r-sm);font-family:inherit;font-size:var(--font-md);font-weight:600;color:var(--text3);cursor:pointer;transition:background var(--t-base),color var(--t-base)}
.vorio-bundle-tab:hover{color:var(--text1)}
.vorio-bundle-tab.actief{background:var(--p);color:#fff;box-shadow:0 1px 3px color-mix(in srgb,var(--p) 30%,transparent)}
html[data-theme="dark"] .vorio-bundle-tab.actief{background:var(--p);color:#fff;box-shadow:var(--shadow)}
/* AI LOG (grid-uitlijning per kolom voor consistent rij-zicht) */
.log-rij{background:var(--bg2);border:var(--bd);border-radius:var(--r-2);margin-bottom:var(--space-2);overflow:hidden}
.log-kop{padding:10px 14px;display:grid;grid-template-columns:130px 170px 1fr 90px 70px 95px 14px;align-items:center;gap:var(--space-3);cursor:pointer;user-select:none}
.log-kop:hover{background:var(--bg3)}
.log-kop .log-deel-cel{justify-self:start;min-width:0}
.log-kop .log-chev{justify-self:end;color:var(--text3);font-size:10px}
.log-tijdstip{font-size:11px;font-variant-numeric:tabular-nums;color:var(--text3);white-space:nowrap}
.log-mw-avatar{width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff;flex-shrink:0;letter-spacing:.5px}
.log-mw-naam{font-size:12px;font-weight:600;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.log-vraag-preview{font-size:12.5px;color:var(--text1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.log-engine-cel{justify-self:start;min-width:0}
.log-tokens{font-size:11px;color:var(--text3);background:var(--bg4);border:var(--bd);border-radius:var(--r-2);padding:2px var(--space-2);justify-self:end;white-space:nowrap;font-variant-numeric:tabular-nums}
/* Mobiel: stack kolommen verticaal zodat alles past zonder horizontale scroll */
@media (max-width: 760px){
  .log-kop{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);padding:10px var(--space-3)}
  .log-kop > *{justify-self:auto;margin:0;width:auto;max-width:100%}
  .log-kop .log-vraag-preview{white-space:normal;overflow:visible;text-overflow:initial;line-height:1.4;font-size:12.5px;color:var(--text1)}
  .log-kop .log-tijdstip{font-size:10.5px}
  .log-kop .log-mw-naam{font-size:12.5px;color:var(--text1)}
  .log-kop .log-chev{position:absolute;top:10px;right:10px}
  .log-rij{position:relative}
  .log-kop .log-engine-cel,.log-kop .log-deel-cel,.log-kop .log-tokens{display:inline-flex;align-self:flex-start;margin-top:2px}
}
.log-body{display:none;border-top:1px solid var(--border);padding:var(--space-3) 14px}
.log-rij.open .log-body{display:block}
.log-vraag{background:var(--accent-light);border:1px solid var(--accent);border-radius:var(--r-sm);padding:10px var(--space-3);font-size:12.5px;line-height:1.6;margin-bottom:10px;white-space:pre-wrap}
.log-antwoord{background:var(--green-light);border:1px solid var(--green);border-radius:var(--r-sm);padding:10px var(--space-3);font-size:12.5px;line-height:1.6;white-space:pre-wrap}
/* AI-log: als antwoord markdown bevat (.adm-md), verwijder de gekleurde card-styling
 zodat de tabel/headers dezelfde platte look krijgen als in de SA-view. */
.log-antwoord.adm-md { background:transparent; border:0; padding:0; white-space:normal; }
.log-vraag.adm-md { background:transparent; border:0; padding:0 0 var(--space-2); white-space:pre-wrap; color:var(--text1); }
.log-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text3);margin-bottom:5px}
.danger-zone{background:var(--red-light);border:1px solid var(--red-border);border-radius:var(--r-card);padding:var(--space-4) 20px;margin-top:20px}
.danger-zone h3{font-size:13px;font-weight:700;color:var(--red);margin-bottom:10px}
.danger-zone p{font-size:12px;color:var(--text2);margin-bottom:var(--space-3);line-height:1.5}
.danger-acties{display:flex;gap:var(--space-2);flex-wrap:wrap}
/* Confirm-modal CSS komt uit vorio-lib.js (inject) */
/* DEBITEUR DETAIL */
.detail-modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:var(--adm-z-modal);display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:opacity var(--t-slow)}
.detail-modal-bg.open{visibility:visible;opacity:1}
.detail-modal{background:var(--bg2);color:var(--text1);border-radius:var(--r-card);width:var(--modal-md);max-width:94vw;max-height:88vh;overflow-y:auto;box-shadow:var(--shadow-xl);padding:var(--space-5)}
.detail-modal h3{font-size:15px;font-weight:700;margin-bottom:var(--space-4);display:flex;justify-content:space-between;align-items:center}
.detail-modal .sluit{background:none;border:none;font-size:20px;cursor:pointer;color:var(--text3);padding:6px var(--space-2);min-width:32px;min-height:32px;display:inline-flex;align-items:center;justify-content:center;line-height:1;border-radius:var(--r-sm)}
.detail-modal .sluit:hover{background:var(--bg3)}
.detail-rij{display:flex;gap:var(--space-2);margin-bottom:var(--space-2);align-items:baseline}
.detail-rij .lbl{font-size:11px;font-weight:700;color:var(--text3);text-transform:uppercase;min-width:130px;flex-shrink:0}
.detail-rij .val{font-size:13px;color:var(--text1)}
.offerte-drawer-bg{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:var(--adm-z-drawer-bg);visibility:hidden;opacity:0;transition:opacity var(--t-slow)}
.offerte-drawer-bg.open{visibility:visible;opacity:1}
.offerte-drawer{position:fixed;top:0;right:-700px;width:680px;max-width:96vw;height:100vh;background:var(--bg2);color:var(--text1);box-shadow:-4px 0 32px rgba(0,0,0,.45);z-index:var(--adm-z-drawer);display:flex;flex-direction:column;transition:right var(--t-slow) ease;overflow:hidden}
.offerte-drawer-bg.open .offerte-drawer{right:0}
.offerte-drawer-foot{padding:14px 22px;border-top:1px solid var(--border);display:flex;gap:10px;justify-content:flex-end;flex-shrink:0;background:var(--bg2)}
/* LEEG ── (rich variant: icon-in-circle + titel + uitleg) */
.leeg-blok{text-align:center;padding:var(--space-7) 20px;color:var(--text2)}
.leeg-blok .leeg-icon{width:52px;height:52px;border-radius:50%;background:var(--bg3);display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px;color:var(--text3)}
.leeg-blok .leeg-icon svg{width:22px;height:22px;opacity:.85;color:var(--text2)}
.leeg-blok svg{opacity:.55;color:var(--text3)}
.leeg-blok .v-btn svg{opacity:1;color:currentColor}
.leeg-blok .leeg-titel{font-size:14px;font-weight:600;color:var(--text1);margin:0 0 var(--space-1)}
.leeg-blok .leeg-uitleg{font-size:12.5px;color:var(--text3);line-height:1.5;margin:0;max-width:360px;margin-left:auto;margin-right:auto}
.leeg-blok p{font-size:13.5px;color:var(--text3);margin:0}
.pagina-wrap{display:flex;align-items:center;gap:var(--space-2);margin-top:14px;flex-wrap:wrap}
.pagina-wrap .pagina-info{font-size:12px;color:var(--text3);flex:1}
.grafiek-wrap{background:var(--bg2);border:var(--bd);border-radius:var(--r-card);padding:20px;box-shadow:var(--shadow);margin-bottom:20px}
.grafiek-wrap h3{font-size:13px;font-weight:700;margin-bottom:14px;color:var(--text2)}
.stat-balk-wrap{margin-bottom:10px}
.stat-balk-label{display:flex;justify-content:space-between;font-size:12px;margin-bottom:3px;color:var(--text2)}
.stat-balk{height:8px;background:var(--bg4);border-radius:var(--r-xs);overflow:hidden}
.stat-balk-fill{height:100%;background:var(--accent);border-radius:var(--r-xs);transition:width .5s ease}
.actlog-rij{display:grid;grid-template-columns:150px minmax(0,1fr) 92px 116px 132px auto;align-items:center;gap:var(--space-3);padding:7px 14px;border-bottom:1px solid var(--border);font-size:12.5px}
.actlog-rij:last-child{border-bottom:none}
.actlog-tijd{font-size:11px;font-variant-numeric:tabular-nums;color:var(--text3);white-space:nowrap}
.actlog-wie{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.actlog-wie .actlog-mail{color:var(--text3);font-size:12px;margin-left:6px}
.actlog-kantoor,.actlog-rol{min-width:0;overflow:hidden}
.actlog-kantoor .badge,.actlog-rol .badge{max-width:100%;overflow:hidden;text-overflow:ellipsis}
.actlog-ip{font-size:11px;font-family:var(--mono);color:var(--text3);white-space:nowrap;text-align:right;justify-self:end}
.actlog-status{justify-self:end}
html.density-compact .actlog-rij{padding-top:3px;padding-bottom:3px}
.menu-toggle{display:none;background:none;border:none;cursor:pointer;padding:6px;color:var(--text1);flex-shrink:0}
.sidebar-overlay.open{display:block}
@media(max-width: 1100px){
  /* KPI grids: 3 kolommen op kleinere schermen — ID-specificity beats .kpi-grid base */
  #kpiGrid, #kpiGrid + div{grid-template-columns:repeat(3,1fr)}
}
@media(max-width: 768px){
  /* KPI grids: 2 kolommen op mobiel */
  #kpiGrid, #kpiGrid + div{grid-template-columns:repeat(2,1fr)}
  /* login */
  .login-box{width:92vw;padding:28px 20px}
  /* topbar */
  .topbar{padding:0 14px;gap:10px}
  .topbar-logo img{height:22px}
  #topbarTijd{display:none}
  .menu-toggle{display:flex;align-items:center;justify-content:center}
  /* sidebar als drawer — source order + @media wint van base .sidebar rule */
  .sidebar{
    position:fixed;top:0;left:0;bottom:0;z-index:200;
    width:240px;transform:translateX(-100%);transition:transform var(--t-slow) ease;
    box-shadow:none
  }
  .sidebar.open{transform:translateX(0);box-shadow:4px 0 20px rgba(0,0,0,.15)}
  .sidebar-overlay{z-index:var(--adm-z-sidebar-ov)}
  .layout > nav.sidebar[data-sb-collapsed="1"] ~ .main{margin-left:0}
  /* main — margin-left reset op mobiel */
  .main{padding:14px;margin-left:0}
  .content-topbar{padding:0 26px}
  /* KPI grid: 2 kolommen op mobiel */
  .kpi-grid{grid-template-columns:1fr 1fr;gap:var(--space-2)}
  .kpi{padding:var(--space-3)}
  .kpi-val{font-size:22px}
  /* cockpit grids: stapelen */
  #cockpitGrids{grid-template-columns:1fr}
  .grafiek-wrap + .grafiek-wrap{margin-top:0}
  /* filter bar: vol breed */
  .filter-bar input{min-width:0;width:100%}
  .filter-bar select{width:100%}
  .filter-bar{flex-direction:column}
  /* sectie header knoppen: kleiner */
  .sectie-hoofd{gap:6px}
  .sectie-hoofd .btn{font-size:11px;padding:var(--space-1) var(--space-2)}
  /* danger zone */
  .danger-zone{padding:var(--space-3) 14px}
  .danger-acties{flex-direction:column}
  .danger-acties .btn{width:100%;justify-content:center}
  /* activiteitslog — 2-regel grid op mobiel: naam + status boven, tijd + IP als meta-regel eronder.
   Voorkomt dat het lange e-mailadres over de IP-kolom heen valt (flex-min had geen overflow-grens). */
  .actlog-rij{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    grid-template-areas:"wie status" "tijd ip";
    align-items:start;column-gap:10px;row-gap:2px
  }
  .actlog-rij .actlog-wie{grid-area:wie;min-width:0;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
  .actlog-rij .actlog-status{grid-area:status;justify-self:end;align-self:center}
  .actlog-rij .actlog-tijd{grid-area:tijd;min-width:0;font-size:10px}
  .actlog-rij .actlog-ip{grid-area:ip;justify-self:end;text-align:right;white-space:nowrap}
  .actlog-rij .actlog-kantoor,.actlog-rij .actlog-rol{display:none}
  /* pagination */
  .pagina-wrap{gap:6px}
  /* Cockpit "Recente offertes" — voorkom horizontale overflow */
  #cockpitOffertes, #cockpitAiLog, #cockpitOndertekenen{ overflow-x:auto; -webkit-overflow-scrolling:touch }
  /* WWFT inzendingen / tokens — compactere mobile-layout */
  #tbl-inzendingen, #tbl-tokens{ font-size:12.5px }#tbl-inzendingen td,#tbl-tokens td{ font-size:12.5px; padding:var(--space-2) 10px }
  #tbl-inzendingen .nr, #tbl-tokens .nr{ font-size:13px; font-weight:600 }
}
@media(max-width: 400px){
  .kpi-grid{grid-template-columns:1fr}
}
.insta-tab {
  background: none;
  border: none;
  padding: 11px 14px;
  font-size: 13px;
  font-weight: 500;
  color: var(--text2);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all var(--t-fast);
  white-space: nowrap;
  font-family: var(--font);
}
.insta-tab:hover {
  border-bottom-color: color-mix(in srgb, var(--accent) 40%, transparent);
  color: var(--kc);
  background: var(--bg3);
}
.insta-tab.active {
  color: var(--kc);
  border-bottom-color: var(--accent);
}
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
/* VORIO-ADMIN STIJL OVERRIDES — override via source-order (dit blok komt na base-rules).
 Latere identieke selectors winnen automatisch bij gelijke specificity. */
body{font-family:var(--font);background:var(--bg)}
.nav-sub::before{content:''}
/* Layout — .layout is display:flex voor tenant-admin (aparte block-mode is dead code) */
.layout{display:flex;min-height:100vh}
.main{flex:1;padding:28px}
/* .btn base-herdef verwijderd 2026-09-16 — canon .v-btn (alias) is leidend. */
/* Badges: canon = enkele bron hoger in dit bestand (dedup 2026-09-17) */
.sectie-hoofd h2{font-size:15px;font-weight:700;letter-spacing:-.2px;color:var(--text1);margin:0}
.sectie-hoofd .count{background:var(--bg3);border:var(--bd);color:var(--text3);font-size:11.5px;font-weight:600;border-radius:var(--r-card);padding:2px 9px}
.kpi{background:var(--bg2);border-radius:var(--r-card);box-shadow:var(--shadow);border:none;min-height:80px;display:flex;flex-direction:column;justify-content:center;padding:var(--space-4) 18px}
.kpi-val{font-size:26px;font-weight:800;letter-spacing:-1px;line-height:1.1}
.filter-bar input,.filter-bar select{border:var(--bd);border-radius:var(--r-2);font-size:13px;font-family:var(--font);background:var(--bg2);color:var(--text1);padding:7px 11px}
.filter-bar input:focus,.filter-bar select:focus{border-color:var(--accent);box-shadow:var(--ring);outline:none}
.insta-tab{font-family:var(--font);font-size:13px;font-weight:600;border-bottom:2.5px solid transparent;color:var(--text3);padding:9px var(--space-4);margin-bottom:-1.5px;background:none;border-top:none;border-left:none;border-right:none}
.insta-tab.active{color:var(--kc);border-bottom-color:var(--accent);background:transparent}
.filter-btn{border-radius:var(--r-sm);border:var(--bd);background:var(--bg2);color:var(--text2);font-family:var(--font);font-size:12.5px;font-weight:600;padding:6px 14px}
.filter-btn:hover{border-color:var(--accent);color:var(--kc);background:var(--accent-light)}
.filter-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.leeg-blok{background:transparent;border:none;color:var(--text3)}
.leeg-blok p{color:var(--text3);font-size:13px}
/* Main content — margin-left alleen op desktop (>1024px). Op mobiel drawer-mode → margin:0. */
.main{background:var(--bg);padding:0}
@media (min-width: 1025px){
  .layout > .main{margin-left:230px}
}
/* Panel = card zoals vorio-admin */
.panel{background:var(--bg2);border-radius:var(--r-card);box-shadow:var(--shadow);padding:var(--space-5);margin-bottom:18px}
.main>.panel,.main>div>.panel{margin-bottom:18px}
/* Groep B — cascade via source-order (dit blok staat ná de base-regels).
 Voor identieke selectors wint de latere regel automatisch bij gelijke specificity. */
/* Sectie-hoofd als card-header */
.sectie-hoofd{border-bottom:1px solid var(--border);padding-bottom:14px;margin-bottom:18px}
.sectie-hoofd h2{font-size:15px;font-weight:700;color:var(--text1);letter-spacing:-.2px;margin:0}

.panel .filter-bar{margin-bottom:14px}
.selectie-balk{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#eff6ff;border:1.5px solid #bfdbfe;border-radius:var(--r-2);margin-bottom:10px;font-size:13px;font-weight:600;color:#1d4ed8}
.danger-zone{border:1.5px solid rgba(239,68,68,.32);border-radius:var(--r-card);background:rgba(239,68,68,.10)}
.danger-zone h3{color:var(--red)}
/* Export/import knoppen consistentie */
.btn-ghost svg,.btn-primary svg{vertical-align:-2px}
/* Content topbar — sluit aan op sidebar, zelfde hoogte */
.content-topbar{background:var(--bg2);border-bottom:1.5px solid var(--border);padding:0 28px;height:56px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:var(--adm-z-content-top);flex-shrink:0;margin-left:0}
.content-topbar-titel{font-size:13.5px;font-weight:600;color:var(--text2);display:flex;align-items:center;gap:6px}
.content-topbar-datum{font-size:12px;color:var(--text3);font-weight:500}
/* Nav section zonder grijze achtergrond */
.nav-section{background:none;padding:9px var(--space-3) var(--space-1)}
/* Sub-kaarten binnen panel geen dubbele shadow */
.panel .kpi{box-shadow:var(--shadow)}
.panel .leeg-blok{background:transparent;border-radius:0;padding:40px 20px}
.kpi-grid{gap:var(--space-3)}
.kpi{border-radius:var(--r-card);padding:var(--space-4) 18px}
.kpi-val{font-size:26px;font-weight:800;letter-spacing:-.5px;line-height:1.1}
/* MOBIEL EXTRAS — uniek voor mobiele iOS/edge-to-edge */
/* De .sidebar/.main mobile-drawer basis staat in het @media blok hierboven (line ~446-540).
 Dit blok voegt alleen edge-to-edge topbar en iOS safe-area padding toe. */
@media(max-width: 768px){
  .sidebar{height:100vh;padding-top:env(safe-area-inset-top, 0)}
  .menu-toggle{display:flex;align-items:center;justify-content:center}
  /* Topbar edge-to-edge op mobiel — flush tegen viewport-randen (portaal + superadmin pattern).
   padding:0 14px + gap:10px voor consistente spacing tussen hamburger/arrows/titel/datum. */
  .main > .topbar,
  .main > .content-topbar{
    margin:-14px -14px 14px -14px;
    width:calc(100% + 28px);
    border-radius:0;
    max-width:none;
    padding:env(safe-area-inset-top, 0) 26px 0;
    gap:10px;
    height:auto;
    min-height:calc(56px + env(safe-area-inset-top, 0))
  }
  /* Menu-toggle: 6px extra rechts voor visuele scheiding van arrows/titel (superadmin sa-menu-toggle pattern) */
  .main > .content-topbar > .menu-toggle{padding:6px var(--space-2);border-radius:var(--r-2);flex-shrink:0;margin-right:6px}
}
/* admin.vorio.nl/index.php — Superadmin sidebar + onboarding */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font);background:var(--bg);color:var(--text1);min-height:100vh}
a{color:inherit;text-decoration:none}
.shell{display:flex;min-height:100vh}
/* Superadmin .main krijgt margin-left vanaf >=1025px voor de position:fixed sidebar; bij <=1024px wordt de sidebar drawer (zie index.php inline media 1024px) en is de margin 0 -- breakpoints sluiten aan, net als tenant-beheer.
 Op mobiel wordt sidebar drawer (translateX:-100%) → .main margin:0 (default). */
.shell > .main{flex:1;min-width:0;min-height:100vh;transition:margin-left var(--t-base) ease}
@media (min-width: 1025px){
  .shell > .main{margin-left:230px}
  .shell > aside.sidebar[data-sb-collapsed="1"] ~ .main,
  .shell > aside.sidebar[data-sb-rail="1"] ~ .main{margin-left:52px}
}
.topbar{background:var(--bg2);border-bottom:1.5px solid var(--border);padding:0 28px;height:56px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}
.content{padding:28px}
@media(max-width: 700px){.content{padding:var(--space-3)}}
.sb-logo{padding:22px 18px 14px;border-bottom:1px solid rgba(255,255,255,.07)}
.logo{font-size:22px;font-weight:800;letter-spacing:-1.5px;display:inline-flex;align-items:flex-end;gap:1px;line-height:1}

.sb-sec{font-size:10px;font-weight:700;color:rgba(255,255,255,.3);letter-spacing:1.2px;text-transform:uppercase;padding:18px 18px 6px}
.sb-link{display:flex;align-items:center;gap:10px;padding:var(--space-2) var(--space-3);margin:0 10px;border-radius:var(--r-2);font-size:12.5px;font-weight:500;color:rgba(255,255,255,.84);cursor:pointer;border:none;background:none;width:auto;text-align:left;border-left:none;transition:all var(--t-base)}
.sidebar .sb-link:first-of-type{margin-top:10px}
.sidebar .nav-item-first{margin-top:10px}
.sb-link:hover{background:rgba(255,255,255,.05);color:#fff}
.sb-link.actief{background:color-mix(in srgb,var(--p) 10%,transparent);color:#fff;border-left-color:transparent;font-weight:700}
.sb-link svg{flex-shrink:0;opacity:.92;transition:all var(--t-base);box-sizing:content-box;padding:5px;background:rgba(255,255,255,.10);border-radius:var(--r-sm);color:#fff}
.sb-link:hover svg{background:rgba(255,255,255,.16)}
.sb-link.actief svg{opacity:1;background:var(--vorio-brand);color:#fff;box-shadow:0 4px 12px color-mix(in srgb,var(--p) 35%,transparent)}
.sb-bottom{margin-top:auto;padding:14px 18px;border-top:none}

.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;margin-bottom:22px}
.stat{background:var(--bg2);border:var(--bd);border-radius:var(--r-card);padding:18px 20px;box-shadow:var(--shadow)}
.stat-num{font-size:30px;font-weight:800;color:var(--kc);line-height:1;letter-spacing:-1px}
.stat-label{font-size:12px;color:var(--text2);margin-top:var(--space-1);font-weight:500}
.card{background:var(--bg2);border:var(--bd);border-radius:var(--r-card);padding:22px var(--space-5);margin-bottom:18px;box-shadow:var(--shadow)}
.card-title{font-size:14.5px;font-weight:700;margin-bottom:var(--space-4);display:flex;align-items:center;justify-content:space-between}
h1{font-size:20px;font-weight:800;margin-bottom:3px;letter-spacing:-.3px}
.sub{font-size:13px;color:var(--text2);margin-bottom:22px}
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{text-align:left;font-size:11px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.6px;padding:0 var(--space-3) 10px;border-bottom:1.5px solid var(--border)}
.tbl td{padding:10px var(--space-3);border-bottom:1px solid var(--border);vertical-align:middle;color:var(--text1)}
.tbl tr:last-child td{border-bottom:none}
.tbl tbody tr:hover td{background:var(--row-hover)}
/* .badge-*: enkele bron hoger in dit bestand */
.slug{font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,monospace);background:var(--bg3);border:var(--bd);border-radius:var(--r-xs);padding:2px 7px;font-size:12px;color:var(--text2)}

.field{margin-bottom:14px}
.field label{display:block;font-size:12px;font-weight:600;color:var(--text3);margin-bottom:5px;text-transform:uppercase;letter-spacing:.3px}
.field input:not([type=checkbox]):not([type=radio]),.field select,.field textarea{width:100%;padding:6px var(--space-3);border:var(--bd);border-radius:var(--r-2);font-size:13.5px;font-family:inherit;color:var(--text1);outline:none;transition:border var(--t-base);background:var(--bg2);line-height:1.5;box-sizing:border-box;min-height:36px}
.field input:not([type=checkbox]):not([type=radio]),.field select{height:36px;appearance:none;-webkit-appearance:none;-moz-appearance:none}
.field textarea{height:auto;min-height:72px}
.field select{background-image:var(--v-chevron);background-repeat:no-repeat;background-position:right 12px center;padding-right:var(--space-6)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:var(--ring)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}

@media(max-width: 700px){.grid2{grid-template-columns:1fr}}
/* Kantoorgegevens: op mobiel valt .grid2 terug naar 1 kolom; de row-gap stapelde
 dan op de .field-margin (14+14=28) waardoor het veldritme ongelijk werd. */
@media(max-width: 700px){.inst-blok-wrap[data-blok="kantoor"] .grid2{row-gap:0}}
/* Superadmin (.shell): v-mb-0 wordt daar niet gebruikt, dus elke grid die op mobiel
 inklapt dubbelde de gap (14/12) bovenop de .field-marge (14). Zelfde neutralisatie
 als het kantoor-blok; grids met een toggle (.vrio-tgl) uitgesloten zodat de toggle-rij
 niet tegen het veld eronder plakt. */
@media(max-width: 700px){.shell .grid2:not(:has(.vrio-tgl)){row-gap:0}}
@media(max-width: 640px){.shell .tar-brevo-grid{row-gap:0}}
/* Tenant huisstijl "Algemeen & contact" is de enige .grid2 (class) in dat blok en
 telt meerdere rijen; row-gap uit zodat de .field-marge (14) het ritme draagt op
 zowel desktop (2 kol) als mobiel (1 kol). Kleuren-grids gebruiken inline display:grid,
 niet .grid2, dus die blijven ongemoeid. */
.inst-blok-wrap[data-blok="huisstijl"] .grid2{row-gap:0}
.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:9px;margin-bottom:var(--space-4)}
.mod-groep{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text3);margin:0 0 9px}
.module-grid + .mod-groep{margin-top:var(--space-4)}
.module-item{display:flex;align-items:center;gap:10px;padding:var(--space-2) 11px;border:var(--bd);border-radius:var(--r);cursor:pointer;background:var(--bg2);transition:border-color var(--t-base),background var(--t-base);position:relative;min-width:0}
.module-item:hover{border-color:var(--border2);background:var(--bg3)}
.module-item input{position:absolute;opacity:0;width:0;height:0}
.mi-ico{width:28px;height:28px;border-radius:var(--r-2);display:grid;place-items:center;background:var(--bg3);color:var(--text3);flex:0 0 auto;transition:background var(--t-base),color var(--t-base)}
.mi-ico svg{width:16px;height:16px}
.mi-lbl{flex:1;min-width:0;font-size:13px;font-weight:600;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mi-check{width:18px;height:18px;border-radius:var(--r-sm);border:var(--bd-strong);flex:0 0 auto;display:grid;place-items:center;color:transparent;transition:all var(--t-base)}
.mi-check svg{width:11px;height:11px}
.module-item:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 9%,var(--bg2))}
.module-item:has(input:checked) .mi-ico{background:var(--p);color:#fff}
.module-item:has(input:checked) .mi-lbl{color:var(--text1)}
.module-item:has(input:checked) .mi-check{background:var(--accent);border-color:var(--accent);color:#fff}
.module-item:focus-within{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:2px}
.module-item.is-kern{cursor:default;border-color:var(--border);background:var(--bg3)}
.module-item.is-kern .mi-ico{background:color-mix(in srgb,var(--accent) 13%,transparent);color:var(--accent)}
.module-item.is-kern .mi-lbl{color:var(--text2)}
.module-item.is-kern .mi-check{background:transparent;border:0;color:var(--text3)}
.module-item.is-kern .mi-check svg{width:14px;height:14px}
.tabs{display:flex;gap:var(--space-1);margin-bottom:22px;border-bottom:1.5px solid var(--border);overflow-x:auto;overflow-y:hidden}
.tab-btn{padding:9px 13px;font-size:13px;white-space:nowrap;font-weight:600;color:#64748b;border:none;border-radius:0;background:none;cursor:pointer;border-bottom:2.5px solid transparent;margin-bottom:-1.5px;font-family:inherit;transition:all var(--t-base)}
.tab-btn.actief{color:var(--vorio-brand);border-bottom-color:var(--vorio-brand)}
.tab-btn:hover:not(.actief){color:var(--kc);border-bottom-color:color-mix(in srgb,var(--accent) 40%,transparent)}
html[data-theme="dark"] .tab-btn:hover:not(.actief){border-bottom-color:color-mix(in srgb,var(--kc) 70%,transparent)}
.tab-btn:focus{outline:none}
.tab-btn:focus-visible{outline:none}
.danger-zone{border:1.5px solid #fecaca;border-radius:var(--r-card);padding:18px 20px;background:#fff5f5;margin-top:var(--space-4)}
.danger-zone h3{font-size:13px;font-weight:700;color:var(--red);margin-bottom:var(--space-2)}
.log-item{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}
.log-item:last-child{border-bottom:none}

.mon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-bottom:14px}
.mon-stat{background:#f8fafc;border-radius:var(--r-2);padding:var(--space-3) 14px;text-align:center}
.mon-num{font-size:22px;font-weight:800;color:var(--vorio-brand);line-height:1}
.mon-lbl{font-size:11px;color:#64748b;margin-top:3px}
/* DARK MODE — admin.php + admin.vorio.nl */
html[data-theme="dark"]{
  --accent:color-mix(in srgb, var(--p) 82%, #fff); --accent2:var(--p); --accent-light:color-mix(in srgb, var(--p) 18%, transparent);
  --grad:linear-gradient(135deg,rgba(21,88,192,.55),color-mix(in srgb,var(--p) 45%,transparent));
  --bg:#0b1220; --bg2:#111a2c; --bg3:#0f1729; --bg4:#1a2540;
  --border:#2a3550; --border2:#3a4664;
  --text1:#e6ebf4; --text2:#b6c0d3; --text3:#8a96ac;
  --red:#ef6358; --red-light:rgba(239,68,68,.14); --red-border:rgba(239,68,68,.32); --red-text:#ef8276;
  --amber:#f0a070; --amber-light:rgba(217,119,6,.16);
  --green:#3ddc7e; --green-light:rgba(34,197,94,.14);
  --purple:#a78bfa; --purple-light:rgba(124,58,237,.18);
  --goud:#d4b677; --goud2:#a98c52; --goud-light:rgba(200,169,110,.18);
  --shadow:0 1px 2px rgba(0,0,0,.40);
  --font:'DM Sans',system-ui,sans-serif; --mono:'DM Mono',monospace;
  color-scheme:dark;
}
/* Surfaces met hardcoded #fff */
html[data-theme="dark"] .topbar, html[data-theme="dark"] .content-topbar{background:var(--bg2);border-bottom:1px solid rgba(255,255,255,.07)}
html[data-theme="dark"] .login-box{background:var(--bg2);box-shadow:var(--shadow-xl)}
html[data-theme="dark"] .login-field input{background:var(--bg3);border-color:var(--border);color:var(--text1)}
html[data-theme="dark"] .login-field input:focus{border-color:var(--accent)}
/* Autofill-fix: voorkom gele Chrome/Safari autofill achtergrond in dark mode */
html[data-theme="dark"] .login-field input:-webkit-autofill,
html[data-theme="dark"] .login-field input:-webkit-autofill:hover,
html[data-theme="dark"] .login-field input:-webkit-autofill:focus,
html[data-theme="dark"] .login-field input:-webkit-autofill:active{
  -webkit-text-fill-color:var(--text1) !important;
  -webkit-box-shadow:0 0 0 1000px var(--bg3) inset !important;
  caret-color:var(--text1) !important;
  transition:background-color 9999s ease-in-out 0s
}
html[data-theme="dark"] .btn-ghost{background:var(--bg3);color:var(--text2)}
html[data-theme="dark"] .btn-ghost:hover{background:var(--bg4);border-color:var(--border2)}
/* Sidebar blijft donker — geen override nodig */
html[data-theme="dark"] .sectie-hoofd .count{background:var(--bg3);border-color:var(--border);color:var(--text3)}
/* Badges — translucent voor dark */
html[data-theme="dark"] .badge.groen,html[data-theme="dark"] .badge-groen{background:rgba(34,197,94,.14);color:#5fc975}
html[data-theme="dark"] .badge.amber,html[data-theme="dark"] .badge-amber{background:rgba(217,119,6,.14);color:#f0a070}
html[data-theme="dark"] .badge.rood,html[data-theme="dark"] .badge-rood{background:rgba(239,68,68,.14);color:#ef8276}
html[data-theme="dark"] .badge.blauw,html[data-theme="dark"] .badge-blauw{background:color-mix(in srgb,var(--p) 18%,transparent);color:#7ab5ee}
html[data-theme="dark"] .badge.grijs,html[data-theme="dark"] .badge-grijs{background:var(--bg3);color:var(--text3)}
html[data-theme="dark"] .badge.paars{background:rgba(124,58,237,.18);color:#c79aef}
html[data-theme="dark"] .badge.goud{background:rgba(200,169,110,.18);color:#d4b677}
html[data-theme="dark"] .mon-stat{background:var(--bg3);border:var(--bd)}
html[data-theme="dark"] .mon-num{color:var(--kc)}
html[data-theme="dark"] .mon-lbl{color:var(--text3)}

/* Cards/kantoor-tiles */
html[data-theme="dark"] .login-logo{background:var(--bg3);border-color:var(--border)}
/* Selectie-actiebalk (offertes/dossiers/cliënten/debiteuren) */
.adm-selectie-balk{display:none;align-items:center;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--accent-light);border:1.5px solid var(--accent);border-radius:var(--r-2);margin-bottom:10px}
.adm-selectie-balk.zichtbaar{display:flex}
.adm-selectie-tekst{font-size:13px;font-weight:600;color:var(--kc);flex:1 1 auto;min-width:0}
.adm-selectie-balk .btn{flex:0 0 auto;white-space:nowrap}
html[data-theme="dark"] .adm-selectie-balk{background:color-mix(in srgb,var(--p) 18%,transparent);border-color:color-mix(in srgb,var(--p) 50%,transparent)}
html[data-theme="dark"] .adm-selectie-tekst{color:#7ab5ee}
@media(max-width: 640px){
  .adm-selectie-balk{padding:var(--space-2) 10px;gap:6px}
  .adm-selectie-tekst{flex-basis:100%}
  .adm-selectie-balk .btn{font-size:12px;padding:7px 10px}
}
/* Superadmin login: volledig dark-mode (page-bg is altijd donkere gradient) */
/* Cockpit widgets */
.cockpit-welkom{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;flex-wrap:wrap;gap:10px}
.cockpit-welkom .cw-left h1{font-size:20px;font-weight:800;letter-spacing:-.4px;margin:0 0 2px;color:var(--text1);font-family:inherit}
.cockpit-welkom .cw-left h1 span#cockpitNaam{font-size:inherit;font-weight:inherit;color:inherit;font-family:inherit}
.cockpit-welkom .cw-left span{font-size:12px;color:var(--text3)}
.cockpit-welkom .cw-right{display:flex;gap:6px;align-items:center}
/* Hero KPIs (4 grote) */
.hero-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}
.hero-card{background:var(--bg2);border:var(--bd);border-radius:var(--r-card);padding:18px 20px;position:relative;overflow:hidden;box-shadow:var(--shadow,0 1px 3px rgba(0,0,0,.04))}
.hero-card .hc-lbl{font-size:10.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.8px;font-weight:600;margin-bottom:var(--space-2)}
.hero-card .hc-val{font-size:26px;font-weight:800;letter-spacing:-.7px;line-height:1;color:var(--text1)}
.hero-card .hc-sub{font-size:11px;color:var(--text2);margin-top:6px;display:flex;align-items:center;gap:6px;font-weight:500;flex-wrap:wrap}
.hero-card .hc-delta{font-weight:700;font-size:11px;padding:2px 6px;border-radius:var(--r-xs)}
.hero-card .hc-delta.up{background:var(--green-bg);color:var(--green)}
.hero-card .hc-delta.down{background:#fee2e2;color:var(--red)}
.hero-card .hc-delta.neutral{background:var(--bg3);color:var(--text2)}
.hero-card .hc-spark{position:absolute;right:14px;top:14px;width:74px;height:28px;opacity:.6;pointer-events:none}
.hero-card .hc-spark svg{width:100%;height:100%}
html[data-theme="dark"] .hero-card .hc-delta.up{background:rgba(34,197,94,.18);color:#86efac}
html[data-theme="dark"] .hero-card .hc-delta.down{background:rgba(220,38,38,.18);color:#fca5a5}
.kpi-strip{display:grid;grid-template-columns:repeat(8,1fr);gap:var(--space-2);margin-bottom:20px}
.kpi-mini{background:var(--bg2);border:var(--bd);border-radius:var(--r-2);padding:10px var(--space-3);position:relative;box-shadow:var(--shadow,0 1px 3px rgba(0,0,0,.04))}
.kpi-mini .km-v{font-size:15px;font-weight:800;letter-spacing:-.3px;color:var(--text1);line-height:1.2}
.kpi-mini .km-l{font-size:9.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;font-weight:600;margin-top:2px}

.kpi-mini.warn .km-v{color:var(--amber)}
.kpi-mini.bad .km-v{color:var(--red)}
.kpi-mini.good .km-v{color:var(--green)}
@media(max-width: 1100px){.hero-grid{grid-template-columns:repeat(2,1fr)}.kpi-strip{grid-template-columns:repeat(4,1fr)}}
@media(max-width: 600px){.hero-grid,.kpi-strip{grid-template-columns:1fr 1fr}}
/* Widget: Doorlooptijd-donut */
.dt-card{background:var(--bg2);border:var(--bd);border-radius:var(--r-card);padding:20px;box-shadow:var(--shadow,0 1px 3px rgba(0,0,0,.04))}
.dt-ttl{font-size:13px;font-weight:700;color:var(--text1);margin:0 0 14px;display:flex;align-items:center;justify-content:space-between}
.dt-ttl .dt-help{font-size:11px;color:var(--text3);font-weight:500}
.donut-wrap{display:flex;align-items:center;gap:18px}
.donut{width:108px;height:108px;position:relative;flex-shrink:0}
.donut svg{width:100%;height:100%;transform:rotate(-90deg)}
.donut-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.donut-c b{font-size:22px;font-weight:800;color:var(--text1);letter-spacing:-.4px;line-height:1}
.donut-c span{font-size:9.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.8px;font-weight:600;margin-top:2px}
.donut-list{flex:1;display:flex;flex-direction:column;gap:6px}
.donut-row{display:flex;align-items:center;gap:var(--space-2);font-size:11.5px}
.donut-row .dt-bullet{width:8px;height:8px;border-radius:var(--r-xs);flex-shrink:0}
.donut-row .dt-lbl{flex:1;color:var(--text2)}
.donut-row .dt-v{font-weight:700;color:var(--text1);font-variant-numeric:tabular-nums}
.dt-stats{margin-top:14px;padding-top:var(--space-3);border-top:1px solid var(--border);display:flex;gap:14px}
.dt-stats .dt-s{flex:1}
.dt-stats .dt-s b{font-size:17px;font-weight:800;letter-spacing:-.3px;display:block;color:var(--text1)}
.dt-stats .dt-s span{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.6px;font-weight:600}
/* Widget: Top langstlopend */
.tl-row{display:grid;grid-template-columns:24px 1fr auto;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--border);font-size:12.5px}
.tl-row:last-child{border-bottom:none}
.tl-row .tl-rank{font-size:14px;font-weight:800;color:var(--text3);text-align:center;font-variant-numeric:tabular-nums}
.tl-row .tl-info{display:flex;flex-direction:column;gap:1px;min-width:0}
.tl-row .tl-info b{color:var(--text1);font-weight:600;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tl-row .tl-info span{color:var(--text3);font-size:10.5px}
.tl-row .tl-age{font-size:11px;font-weight:700;padding:3px var(--space-2);border-radius:var(--r-xs);background:#fff1f2;color:#be123c;letter-spacing:-.2px;white-space:nowrap;font-variant-numeric:tabular-nums}
.tl-row.urgent .tl-age{background:#fee2e2;color:var(--red-solid)}
.tl-row.medium .tl-age{background:#fef3c7;color:#a16207}
html[data-theme="dark"] .tl-row.urgent .tl-age{background:rgba(220,38,38,.2);color:#fca5a5}
html[data-theme="dark"] .tl-row.medium .tl-age{background:rgba(245,158,11,.2);color:#fcd34d}
/* Widget: Volume bars */
.vb-wrap{display:flex;align-items:flex-end;gap:5px;height:140px;padding:18px 6px 0;margin-bottom:var(--space-2)}
.vb-bar{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--space-1);position:relative;height:100%;justify-content:flex-end}
.vb-h{width:100%;background:linear-gradient(180deg, var(--accent), color-mix(in srgb, var(--accent) 60%, transparent));border-radius:var(--r-xs) var(--r-xs) 0 0;min-height:6px;transition:opacity var(--t-base)}
.vb-h.curr{background:linear-gradient(180deg, var(--accent), color-mix(in srgb, var(--accent) 75%, transparent))}
.vb-h:hover{opacity:.85}
.vb-v{font-size:10px;font-weight:700;color:var(--text1);position:absolute;top:-2px;font-variant-numeric:tabular-nums}
.vb-l{font-size:9.5px;color:var(--text3);font-weight:600;text-transform:uppercase;letter-spacing:.4px}
.vb-meta{display:flex;justify-content:space-between;align-items:center;padding-top:10px;border-top:1px solid var(--border);font-size:11.5px;color:var(--text2)}
.vb-meta b{font-weight:800;font-variant-numeric:tabular-nums}
.vb-meta b.up{color:var(--green)}
.vb-meta b.down{color:var(--red)}
/* Line chart component (lc-*) — herbruikbaar area+line over var(--accent) */
/* Widget: Passeer-agenda (vervangt Bottleneck-fase) */
.pa-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);margin-bottom:14px}
.pa-stat{padding:var(--space-3) 10px;border-radius:var(--r-2);border:var(--bd);cursor:pointer;transition:background var(--t-base);text-align:left}
.pa-stat:hover{background:var(--row-hover)}
.pa-stat b{display:block;font-size:22px;font-weight:700;letter-spacing:-.02em;line-height:1}
.pa-stat span{display:block;font-size:11px;color:var(--text2);margin-top:5px;font-weight:500}
.pa-stat--rood{background:rgba(220,38,38,.06);border-color:rgba(220,38,38,.22)}
.pa-stat--rood b{color:var(--red)}
.pa-stat--oranje{background:rgba(217,119,6,.06);border-color:rgba(217,119,6,.22)}
.pa-stat--oranje b{color:var(--amber)}
.pa-stat--geel{background:rgba(245,158,11,.05);border-color:rgba(245,158,11,.20)}
.pa-stat--geel b{color:#92400e}
html[data-theme="dark"] .pa-stat--geel b{color:#fbbf24}
.pa-lijst{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
/* Kolom-layout: Dossier | WWFT | Passeert-badge */
.pa-head{display:grid;grid-template-columns:minmax(0,1fr) 72px 58px;gap:10px;align-items:center;padding:6px var(--space-1);border-bottom:1px solid var(--border);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text3);font-weight:600}
.pa-head > div:last-child{text-align:right}
.pa-row{display:grid;grid-template-columns:minmax(0,1fr) 72px 58px;gap:10px;align-items:center;padding:9px var(--space-1);border-bottom:1px solid var(--border);font-size:12.5px}
.pa-row:last-child{border-bottom:none}
.pa-row:hover{background:var(--row-hover);border-radius:var(--r-sm)}
.pa-row-l{min-width:0}
.pa-titel{font-weight:600;color:var(--text1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pa-dosnaam{color:var(--text2);font-weight:500}

.pa-sub{font-size:11px;color:var(--text2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pa-nr{font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:10.5px;font-weight:600;color:var(--text3);letter-spacing:.2px}
.pa-afw{display:inline-block;margin-left:var(--space-2);padding:1px 6px;background:rgba(220,38,38,.10);color:var(--red);border-radius:var(--r-xs);font-size:10.5px;font-weight:600}
/* WWFT-kolom: platte tekst, kleur volgt urgentie (rood bij ≤3d, amber anders, muted bij 0 open) */
.pa-wwft{font-size:11.5px;font-weight:500;color:var(--text2);white-space:nowrap;font-variant-numeric:tabular-nums}
.pa-wwft.is-warn{color:var(--amber);font-weight:600}
.pa-wwft.is-urgent{color:var(--red);font-weight:600}
.pa-wwft.is-ok{color:var(--text3);font-weight:400}
/* Passeert-kolom: dagen-badge (2d/3d), rood ≤3d, amber ≤7d, neutraal daarna */
.pa-days{display:inline-flex;align-items:center;justify-content:center;min-width:36px;padding:3px var(--space-2);border-radius:var(--r-sm);font-size:11px;font-weight:600;line-height:1.4;background:var(--bg3);color:var(--text1);justify-self:end;font-variant-numeric:tabular-nums;white-space:nowrap}
.pa-days.is-warn{background:rgba(245,158,11,.12);color:#92400e}
html[data-theme="dark"] .pa-days.is-warn{color:#fbbf24}
.pa-days.is-soon{background:rgba(220,38,38,.12);color:var(--red)}
/* .pa-alle → nu canonieke .v-seclink */
/* Widget: Behandelaar — 3-col (avatar | naam+workload-bar | op-tijd-chip) */
.bh-row{display:grid;grid-template-columns:26px minmax(0,1fr) 62px;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--border);font-size:12px;cursor:pointer;transition:background var(--t-base)}
.bh-row:last-child{border-bottom:none}
.bh-row:hover{background:var(--row-hover)}
.bh-row .bh-av{width:26px;height:26px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;letter-spacing:-.3px;flex-shrink:0}
.bh-row .bh-info{min-width:0;overflow:hidden}
.bh-row .bh-top{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);line-height:1.2}
.bh-row .bh-top b{color:var(--text1);font-weight:600;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bh-row .bh-med{color:var(--text3);font-size:10.5px;font-variant-numeric:tabular-nums;flex-shrink:0;font-weight:500}
/* Workload-bar: uniforme accent-kleur (lengte doet het werk, geen threshold-coloring) */
.bh-row .bh-wl{position:relative;height:12px;background:var(--bg3);border-radius:var(--r-xs);margin-top:5px;overflow:hidden}
.bh-row .bh-wl-bar{position:absolute;top:0;left:0;height:100%;border-radius:var(--r-xs);background:color-mix(in srgb, var(--p) 35%, transparent);transition:width var(--t-slow)}
.bh-row .bh-wl-v{position:absolute;right:6px;top:50%;transform:translateY(-50%);font-size:10px;font-weight:700;color:var(--text1);font-variant-numeric:tabular-nums;line-height:1;letter-spacing:-.2px}
/* Op-tijd-chip — compact %-badge, geen tweede regel; drempels via _pctCls in JS */
.bh-row .bh-pct{display:flex;align-items:center;justify-content:center;padding:6px var(--space-1);border-radius:var(--r-sm);font-weight:700;font-size:12.5px;font-variant-numeric:tabular-nums;line-height:1;letter-spacing:-.3px}
.bh-pct--ok  {background:color-mix(in srgb, var(--green) 10%, transparent);color:var(--green)}
.bh-pct--warn{background:color-mix(in srgb, var(--amber) 10%, transparent);color:var(--amber)}
.bh-pct--bad {background:color-mix(in srgb, var(--red)   10%, transparent);color:var(--red)}
.bh-pct--na  {background:var(--bg3);color:var(--text3)}
/* Superadmin cross-tenant cockpit: bottleneck-fasebalken + tenant-activiteit delta */
/* Fase-balken (saFases): label | track | dagen — kleur via JS-class warn/bad */
.fs-row{display:grid;grid-template-columns:minmax(88px,120px) 1fr auto;gap:10px;align-items:center;padding:6px 0;font-size:12.5px}
.fs-row .fs-lbl{color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fs-row .fs-track{height:6px;background:var(--bg3);border-radius:var(--r-xs);overflow:hidden}
.fs-row .fs-fill{height:100%;border-radius:var(--r-xs);background:var(--accent);transition:width .5s ease}
.fs-row .fs-fill.warn{background:var(--amber)}
.fs-row .fs-fill.bad{background:var(--red)}
.fs-row .fs-v{font-weight:700;font-size:11.5px;color:var(--text1);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.fs-tip{margin-top:var(--space-3);padding-top:10px;border-top:1px solid var(--border);font-size:11.5px;color:var(--text2)}
/* Tenant-activiteit (saTenantTrend): eigen 4-koloms variant — deelt .bh-row met behandelaar-widget, daarom scoped op #saTenantTrend */
#saTenantTrend .bh-row{grid-template-columns:26px minmax(0,1fr) auto auto;cursor:default}
#saTenantTrend .bh-row:hover{background:transparent}
#saTenantTrend .bh-info{display:flex;flex-direction:column;gap:1px}
#saTenantTrend .bh-info b{color:var(--text1);font-weight:600;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#saTenantTrend .bh-info span{color:var(--text3);font-size:10.5px}
#saTenantTrend .bh-open{font-weight:700;font-size:11.5px;color:var(--text2);white-space:nowrap;font-variant-numeric:tabular-nums}
#saTenantTrend .bh-med{font-size:10.5px;font-weight:600;padding:2px var(--space-2);border-radius:var(--r-xs);white-space:nowrap;background:var(--bg3);color:var(--text3)}
#saTenantTrend .bh-med.slow{background:color-mix(in srgb,var(--amber) 14%,transparent);color:var(--amber)}
/* Dossier voortgang segmented bar */
.dv-totaal{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:10px}
.dv-totaal-v{font-size:24px;font-weight:800;letter-spacing:-.5px;color:var(--text1)}
.dv-bar{display:flex;height:14px;background:var(--bg3);border-radius:var(--r-sm);overflow:hidden;margin-bottom:14px}
.dv-seg{height:100%;transition:width var(--t-slow)}
.dv-leg{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:6px 14px}
.dv-leg-row{display:flex;align-items:center;gap:6px;font-size:11.5px}
.dv-leg-dot{width:8px;height:8px;border-radius:var(--r-xs);flex-shrink:0}
.dv-leg-lbl{flex:1;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv-leg-v{font-weight:700;color:var(--text1);font-variant-numeric:tabular-nums;min-width:24px;text-align:right}
.dv-leg-pct{color:var(--text3);font-size:10.5px;font-variant-numeric:tabular-nums;min-width:32px;text-align:right}
.dv-tenants{margin-top:14px;padding-top:var(--space-3);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:var(--space-2)}
.dv-tenant{background:var(--bg3);border-radius:var(--r-sm);padding:var(--space-2) 10px;display:flex;align-items:baseline;gap:6px}
.dv-tenant-v{font-size:15px;font-weight:800;color:var(--text1);font-variant-numeric:tabular-nums}
.dv-tenant-l{font-size:11px;color:var(--text3);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* AI-vragen compacte lijst */
.ai-uav{width:22px;height:22px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:8.5px;font-weight:700;letter-spacing:.2px}

.ai-tijd{color:var(--text3);font-size:10.5px;font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600;letter-spacing:.2px}
.ai-vraag{color:var(--text1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.4}
/* Superadmin Live statistieken */
.sa-hero{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}
.sa-hero-lbl{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.8px;font-weight:600;margin-bottom:6px;white-space:nowrap}
.sa-hero-v{font-size:22px;font-weight:800;letter-spacing:-.5px;line-height:1;color:var(--text1)}
.sa-hero-sub{font-size:10.5px;color:var(--text2);margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sa-mini{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--space-2);margin-bottom:10px}
.sa-mini-card{background:var(--bg2);border:var(--bd);border-radius:var(--r-2);padding:9px 11px;position:relative}
.sa-mini-dot{position:absolute;top:7px;right:7px;width:5px;height:5px;border-radius:50%;background:var(--amber)}
.sa-mini-card.bad .sa-mini-dot{background:var(--red)}
.sa-mini-card.warn .sa-mini-v{color:var(--amber)}
.sa-mini-card.bad  .sa-mini-v{color:var(--red)}
.sa-mini-v{font-size:14px;font-weight:800;letter-spacing:-.3px;color:var(--text1);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sa-mini-l{font-size:9.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;font-weight:600;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width: 1100px){.sa-hero{grid-template-columns:repeat(3,1fr)}.sa-mini{grid-template-columns:repeat(3,1fr)}}
@media(max-width: 680px){.sa-hero,.sa-mini{grid-template-columns:repeat(2,1fr)}}
.sa-warn{background:var(--amber-light);border:1.5px solid #fde68a;border-radius:var(--r-2);padding:10px 14px;display:flex;align-items:center;gap:10px;margin-top:var(--space-2)}
.sa-warn-ico{font-size:18px;color:var(--amber)}
.sa-warn b{font-size:13px;color:var(--amber);font-weight:700;display:block}
.sa-warn span{font-size:11px;color:#a16207}
/* Superadmin dashboard */
/* Activity-feed filter chips + per-type icon */
.sa-act-filters{display:flex;flex-wrap:wrap;gap:var(--space-1);margin:0 0 var(--space-3);padding:var(--space-1);background:var(--bg3);border-radius:var(--r-xs)}
.sa-act-chip{padding:5px 11px;background:transparent;border:none;border-radius:var(--r-xs);font-family:inherit;font-size:11.5px;font-weight:600;color:var(--text3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}
.sa-act-chip:hover{color:var(--text1)}
.sa-act-chip.is-active{background:var(--bg2);color:var(--text1);box-shadow:var(--shadow)}
html[data-theme="dark"] .sa-act-chip.is-active{background:var(--bg);box-shadow:var(--shadow)}
.log-item .log-ic{width:26px;height:26px;border-radius:var(--r-xs);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--bg3);color:var(--text2);margin-right:10px}
.log-item .log-ic svg{width:14px;height:14px}

/* SA-dashboardrijen — cascade-native grid (geen inline grid, geen !important); collapse werkt óók in de partial-iframe */
.sa-dash-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px}
.sa-dash-main{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.sa-dash-main>.adm-card{margin-bottom:0}
@media(min-width:1101px){.sa-dash-main .sa-col-span2{grid-column:span 2}}
@media(max-width:1100px){.sa-dash-stats,.sa-dash-main{grid-template-columns:1fr}}
/* SA-panel: cascade-native vervangers voor inline 2/3-koloms grids die vroeger via het
 head-<style>-!important-blok collapsten (dat blok ontbreekt in de partial-iframe).
 display+kolommen hier, gap/margin blijft inline. Collapse @1100 = zelfde breakpoint. */
.sa-g2{display:grid;grid-template-columns:1fr 1fr}
.sa-g3{display:grid;grid-template-columns:1fr 1fr 1fr}
.sa-g3r{display:grid;grid-template-columns:1.05fr 1.4fr 1fr}
@media(max-width:1100px){.sa-g2,.sa-g3,.sa-g3r{grid-template-columns:1fr}}

@media(max-width: 1100px){.sa-dash-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width: 600px){.sa-dash-grid{grid-template-columns:1fr}}
/* search input theme override */
#saKantZoek::placeholder{color:var(--text3)}
#saKantZoek:focus{border-color:var(--accent);outline:none;box-shadow:var(--ring)}
/* Responsive: smalle schermen (admin + superadmin) —
 Tabs niet wrappen maar horizontaal scrollbaar; tabellen idem. */
@media (max-width: 900px) {
  .tabs {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: thin;
  }
  .tabs::-webkit-scrollbar { height: 4px; }
  .tabs::-webkit-scrollbar-thumb { background: var(--border2, #cbd5e1); border-radius:var(--r-xs); }
  .tab-btn {
    white-space: nowrap;
    flex-shrink: 0;
  }
  .card { padding: 14px var(--space-3); }
  .card-title { flex-wrap: wrap; gap: 6px }
  .grid2{ grid-template-columns: 1fr }
  /* Tabellen: voorkom dat ze de pagina horizontaal laten scrollen op de body —
   elke tabel scrolt binnen z'n eigen card. */
  .card > .tbl,
  .card > table.tbl { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; max-width: 100%; }
  .tbl { min-width: 640px }
}
@media (max-width: 600px) {
  h1 { font-size: 22px }
  .sub { font-size: 12px }
  .filterbar { flex-direction: column; align-items: stretch; gap: 6px }
}

@media(max-width: 760px){
  /* Modal-cards vol breedte met 12px-margin links/rechts (override inline width:NNNpx) */
  .detail-modal{width:calc(100% - 24px);max-width:calc(100% - 24px);max-height:calc(100vh - 60px);padding:18px var(--space-4);border-radius:var(--r-modal)}
  /* Drawer wordt bottom-sheet-achtig: vol-breed + grid 1 kolom */
  .offerte-drawer{width:100%;max-width:100%;border-radius:0}
  .offerte-drawer-foot{padding:var(--space-3) var(--space-4);flex-wrap:wrap}
  .offerte-drawer-foot .btn{flex:1 1 calc(50% - 5px);justify-content:center}
  /* Tabel-overflow (uitbreiding van bestaande .tbl regel) */
  table.tbl,
  table.zebra,
  table.ant-table,
  table.lijst-tbl{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  table.tbl thead,
  table.zebra thead,
  table.ant-table thead,
  table.lijst-tbl thead{white-space:nowrap}
}
@media(max-width: 480px){
  /* Modal nog tighter op kleine telefoon */
  .detail-modal{padding:14px var(--space-3)}
  .detail-modal h3{font-size:14px}
  /* Footer-knoppen volle breedte */
  .offerte-drawer-foot .btn{flex:1 1 100%}
}
/* Font-sharpness — crispness via -webkit-font-smoothing */
body{
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:geometricPrecision;
}
h1{ letter-spacing:-.6px; font-weight:800 }
h2{ letter-spacing:-.4px; font-weight:700 }
/* Sidebar-lean: icon-tile alleen op active (tenant admin) */
.nav-item svg{ background:transparent; padding:3px }
.nav-item:hover svg{ background:rgba(255,255,255,.10) }
.nav-item.active svg{ background:var(--vorio-brand); padding:5px; box-shadow:0 4px 12px color-mix(in srgb,var(--p) 35%,transparent) }
.sb-logo + .nav-item{ margin-top:18px }
/* Sidebar-lean: icon-tile alleen op active (SA) */
.sb-link svg{ background:transparent; padding:3px }
.sb-link:hover svg{ background:rgba(255,255,255,.10) }
.sb-link.actief svg{ background:var(--vorio-brand); padding:5px; box-shadow:0 4px 12px color-mix(in srgb,var(--p) 35%,transparent) }
.sb-logo + .sb-link{ margin-top:18px }
/* Icon-sharpness: geometricPrecision + uniform stroke (SA) */
svg{ shape-rendering:geometricPrecision }
.sb-link svg,.adm-icon-btn svg,.btn svg{ vector-effect:non-scaling-stroke }
/* CTB-ARROWS — back/forward navigatie in content-topbar */
.topbar > .ctb-nav:first-of-type, .content-topbar > .ctb-nav:first-of-type{margin-left:-6px}
.ctb-arrow{
  background:transparent;border:0;cursor:pointer;padding:0;border-radius:var(--r-sm);
  width:32px;height:32px;
  display:inline-flex;align-items:center;justify-content:center;line-height:0;
  color:var(--text1);transition:background var(--t-fast),color var(--t-fast),opacity var(--t-fast);
}
.ctb-arrow:hover:not(:disabled){ background:var(--bg3) }
.ctb-arrow:disabled{ color:var(--text3); cursor:default; opacity:.55 }
.ctb-sep{ width:1px;height:20px;background:rgba(255,255,255,.18);display:inline-block;margin:0 6px }
html:not([data-theme="dark"]) .ctb-sep{ background:rgba(15,39,68,.22) }
html .content-topbar-titel{
  font-family:var(--font,'DM Sans',system-ui,sans-serif);
  font-weight:700;letter-spacing:-.1px;color:var(--text1);font-size:13.5px;
}
html[data-theme="dark"] .ctb-arrow:hover:not(:disabled){ background:rgba(255,255,255,.08); color:#fff }
/* SB-LOGO — portaal-stijl (auto-height, eigen padding voor lucht boven/onder).
 Collapsed/rail rules hierboven met [data-sb-*] hebben hogere specificity en winnen via cascade. */
nav.sidebar > .sb-logo,
aside.sidebar > .sb-logo{box-sizing:border-box;height:56px;padding:0 22px;display:flex;align-items:center;justify-content:flex-start}
/* SB-LOGO TILE — witte kaart rond logo */
.sb-logo-tile{
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.92);
  border-radius:var(--r-sm);
  padding:3px;
  width:25px;height:25px;box-sizing:border-box;
  flex-shrink:0;
  box-shadow:none;
  color:var(--vorio-logo-text,#0f2744);
  overflow:hidden;
}
html[data-theme="dark"] .sb-logo-tile{background:#fff;box-shadow:var(--shadow)}
.sb-logo-tile img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
/* Crop modal (gedeeld met SA-profielfoto) */
.crop-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:var(--adm-z-crop);align-items:center;justify-content:center}
.crop-overlay.open{display:flex}
.crop-preview-wrap:active{cursor:grabbing}
.crop-preview-wrap img{position:absolute;user-select:none;-webkit-user-drag:none}
.crop-zoom{width:100%;margin:0 0 14px;accent-color:var(--p)}
.crop-actions{display:flex;gap:var(--space-2);justify-content:flex-end}
/* Crop modal dark-mode */
html[data-theme="dark"] .crop-preview-wrap{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.14)}
/* Superadmin-specifieke rail-mode extras (desktop-only, alleen op aside.sidebar).
 De generieke rail-CSS voor .sb-link staat al eerder in dit bestand. Hier alleen wat superadmin extra doet:
 topbar padding en profiel-menu positie ivm smallere sidebar. */
@media (min-width: 881px){
  aside.sidebar[data-sb-rail="1"] ~ .main .profiel-menu,
  body:has(aside.sidebar[data-sb-rail="1"]) .profiel-menu{left:60px;top:8px}
}
/* Cmd-K palette */
.sa-cmdk-bd{position:fixed;inset:0;background:var(--overlay-bg,rgba(0,0,0,.45));backdrop-filter:var(--overlay-blur,blur(2px));-webkit-backdrop-filter:var(--overlay-blur,blur(2px));opacity:0;visibility:hidden;transition:opacity var(--t-base),visibility var(--t-base);z-index:var(--adm-z-cmdk-bg)}
.sa-cmdk-bd.open{opacity:1;visibility:visible}
.sa-cmdk-panel{position:fixed;top:18vh;left:50%;transform:translateX(-50%) scale(.96);width:min(560px,calc(100vw - 32px));background:var(--bg2);border:var(--bd);border-radius:var(--r-card);box-shadow:0 24px 80px rgba(0,0,0,.45);opacity:0;visibility:hidden;transition:opacity var(--t-base),transform var(--t-base),visibility var(--t-base);z-index:var(--adm-z-cmdk);overflow:hidden}
.sa-cmdk-panel.open{opacity:1;visibility:visible;transform:translateX(-50%) scale(1)}
.sa-cmdk-head{display:flex;align-items:center;gap:10px;padding:14px var(--space-4);border-bottom:1px solid var(--border)}
.sa-cmdk-head svg{width:16px;height:16px;color:var(--text3);flex-shrink:0}
.sa-cmdk-head input{flex:1;background:transparent;border:none;outline:none;font-family:inherit;font-size:14px;color:var(--text1)}
.sa-cmdk-head input::placeholder{color:var(--text3)}
.sa-cmdk-esc{font-size:10px;font-weight:700;color:var(--text3);background:var(--bg3);border:var(--bd);padding:2px 6px;border-radius:var(--r-xs);letter-spacing:.4px}
.sa-cmdk-list{max-height:50vh;overflow-y:auto;padding:6px 0}
.sa-cmdk-group{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text3);padding:10px var(--space-4) var(--space-1)}
.sa-cmdk-item{display:flex;align-items:center;width:100%;padding:var(--space-2) var(--space-4);background:transparent;border:none;border-radius:0;text-align:left;font-family:inherit;font-size:13px;color:var(--text1);cursor:pointer;transition:background var(--t-fast)}
.sa-cmdk-item:hover,.sa-cmdk-item.is-active{background:var(--bg3)}
.sa-cmdk-item .sa-cmdk-l{flex:1}
.sa-cmdk-empty{padding:var(--space-5) var(--space-4);text-align:center;font-size:12.5px;color:var(--text3)}
/* 24h diff strip — boven welkom-h1 */
/* Cockpit Optie A — KPI-rij, top-5 bar-per-rij, trend-overlay */
.ct-kpi-row { display:flex; align-items:baseline; gap:var(--space-3); margin:6px 0 var(--space-4); flex-wrap:wrap }
.ct-kpi-main { font-size:28px; font-weight:800; color:var(--text1); letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1 }
.ct-kpi-main small { font-size:15px; color:var(--text3); font-weight:600; margin-left:1px }
.ct-kpi-trend { display:inline-flex; align-items:center; gap:3px; font-size:11.5px; font-weight:500; color:var(--text3) }
.ct-kpi-trend .arrow { font-size:11px; font-weight:700 }
.ct-kpi-trend.good .arrow { color:var(--green) }
.ct-kpi-trend.bad .arrow { color:var(--red) }
/* Top 5 langstlopend — kleurbar per rij + fase-placeholder */
.tl-row .tl-bar { height:5px; background:var(--bg3); border-radius:var(--r-xs); margin-top:6px; overflow:hidden }
.tl-row .tl-bar-fill { height:100%; border-radius:var(--r-xs)}
.tl-row .tl-bar-fill.ok { background:var(--accent) }
.tl-row .tl-bar-fill.warn { background:var(--amber) }
.tl-row .tl-bar-fill.crit { background:var(--red) }

/* Nieuwe dossiers — toggle */
.ct-nd-toggle { display:inline-flex; background:var(--bg3); border-radius:var(--r-sm); padding:2px; gap:1px }
.ct-nd-toggle button { padding:var(--space-1) 10px; border:none; background:transparent; font-size:11px; font-weight:600; color:var(--text3); border-radius:var(--r-xs); cursor:pointer; font-family:inherit }
.ct-nd-toggle button.active { background:var(--p); color:#fff; box-shadow:0 1px 2px color-mix(in srgb,var(--p) 30%,transparent) }
/* Trend-overlay op vb-wrap */
.vb-wrap.with-overlay { position:relative }
.vb-wrap .vb-overlay-svg { position:absolute; pointer-events:none; overflow:visible }
/* Legend onder nieuwe dossiers */
.ct-nd-legend { display:flex; gap:var(--space-4); padding-top:var(--space-3); margin-top:var(--space-1); border-top:1px solid var(--border); font-size:11.5px; color:var(--text2) }
.ct-nd-legend .lg-item { display:flex; align-items:center; gap:6px }
.ct-nd-legend .lg-sw { width:12px; height:4px; border-radius:var(--r-xs); background:linear-gradient(180deg, var(--accent), color-mix(in srgb, var(--accent) 60%, transparent)) }
.ct-nd-legend .lg-sw.solid-red { background:var(--red) }
/* Huidige (incomplete) maand — lichtere tint + "nu"-badge */
.vb-bar .vb-h.partial { background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 45%, transparent), color-mix(in srgb, var(--accent) 20%, transparent)); border:1.5px dashed color-mix(in srgb, var(--accent) 55%, transparent) }
.vb-bar .vb-v.partial { color:var(--text3) }
.vb-partial-lbl { display:inline-block; margin-left:var(--space-1); font-size:8.5px; font-style:normal; font-weight:600; text-transform:uppercase; letter-spacing:.4px; padding:1px 5px; border-radius:var(--r-xs); background:var(--bg3); color:var(--text3) }
/* Dark-mode voor tl-age badge (geen urgent/medium classes meer) */
html[data-theme="dark"] .tl-row .tl-age { background:rgba(190,18,60,.2); color:#fca5a5 }
/* ctbGear — voorkeuren-knop op notif-pagina, subtiel geaccentueerd */
#ctbGear{background:color-mix(in srgb,var(--p) 10%,transparent);color:var(--kc)}
#ctbGear:hover{background:color-mix(in srgb,var(--p) 18%,transparent);color:var(--kc)}
#ctbGear.actief{background:color-mix(in srgb,var(--p) 22%,transparent);color:var(--kc);box-shadow:0 0 0 1px color-mix(in srgb,var(--p) 30%,transparent) inset}
/* Superadmin dashboard — kantoor-rij "laatst actief" indicator */
.sa-live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--text4);margin-right:6px;vertical-align:middle;flex-shrink:0}
@keyframes saLivePulse{50%{box-shadow:0 0 0 6px color-mix(in srgb,#16a34a 8%,transparent)}}
/* SuperAdmin hero — Glass banner.
 Fullwidth banner-achtergrond (uit vorio_instellingen.sa_dashboard_banner) met
 glass-widgets voor de dagelijkse metrics (logins/wijzig/billing/errors).
 Fallback: Boreas-gradient wanneer geen banner ingesteld. */
.sa-dashhero{position:relative;border-radius:var(--r-modal);overflow:hidden;padding:28px var(--space-6) var(--space-5);min-height:220px;color:#fff;background:linear-gradient(135deg,#0f2744 0%,#1a3a6e 55%,var(--vorio-brand) 100%);margin-bottom:22px;box-shadow:var(--shadow-md)}
.sa-dashhero.has-banner{background-size:cover;background-position:center;background-repeat:no-repeat}
.sa-dashhero-ov{position:absolute;inset:0;background:linear-gradient(135deg,rgba(15,39,68,.55) 0%,rgba(15,39,68,.30) 45%,rgba(15,39,68,.55) 100%);pointer-events:none;z-index:1}
.sa-dashhero-inner{position:relative;z-index:2;display:flex;flex-direction:column;gap:6px}
.sa-dashhero-kick{font-size:11px;letter-spacing:1.6px;text-transform:uppercase;color:rgba(255,255,255,.85);font-weight:700;display:inline-flex;align-items:center;gap:6px}
.sa-dashhero-kick::before{content:"";width:5px;height:5px;border-radius:50%;background:#7cc4ff}
.sa-dashhero-titel{font-size:26px;font-weight:700;letter-spacing:-.6px;color:#fff;line-height:1.15;margin:2px 0 var(--space-1);text-shadow:0 1px 4px rgba(0,0,0,.20)}
.sa-dashhero-titel .naam{font-weight:400;color:rgba(255,255,255,.75);font-size:.72em;letter-spacing:0;margin-left:6px}
.sa-dashhero-status{display:inline-flex;align-items:center;gap:var(--space-2);background:rgba(255,255,255,.14);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:6px var(--space-3);border-radius:var(--r-pill);border:1px solid rgba(255,255,255,.18);font-size:12.5px;color:rgba(255,255,255,.92);width:max-content;max-width:100%;margin-bottom:18px}
.sa-dashhero-status .puls{width:7px;height:7px;border-radius:50%;background:#4ade80;box-shadow:0 0 0 3px rgba(74,222,128,.28);animation:sa7Pulse 1.8s ease-in-out infinite;flex-shrink:0}
@keyframes sa7Pulse{50%{box-shadow:0 0 0 6px rgba(74,222,128,.08)}}
.sa-dashhero-widgets{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);max-width:760px}
.sa-hw{background:rgba(255,255,255,.14);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.18);border-radius:var(--r-card);padding:var(--space-3) 14px;display:flex;flex-direction:column;gap:3px;text-decoration:none;color:inherit;cursor:pointer;transition:background var(--t-base) ease,border-color var(--t-base) ease,transform var(--t-base) ease}
.sa-hw:hover{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.32);transform:translateY(-1px)}
.sa-hw:focus-visible{outline:2px solid #fff;outline-offset:2px}
.sa-hw-lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;color:rgba(255,255,255,.78);font-weight:700}
.sa-hw-val{font-size:24px;font-weight:700;letter-spacing:-.5px;line-height:1;color:#fff;font-variant-numeric:tabular-nums}
.sa-hw-val.zero{color:rgba(255,255,255,.55)}
.sa-hw-val.err{color:#fca5a5}
.sa-hw-sub{font-size:10.5px;color:rgba(255,255,255,.62);letter-spacing:.2px}
.sa-dashhero-edit{position:absolute;top:14px;right:14px;z-index:3;width:34px;height:34px;border-radius:var(--r-2);background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.22);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:background var(--t-base),transform var(--t-base);padding:0}
.sa-dashhero-edit:hover{background:rgba(0,0,0,.55);transform:scale(1.05)}
.sa-dashhero-edit svg{width:15px;height:15px}
@media(max-width: 820px){
  .sa-dashhero{padding:22px 20px 20px;min-height:auto}
  .sa-dashhero-titel{font-size:22px}
  .sa-dashhero-widgets{grid-template-columns:repeat(2,1fr);gap:10px}
  .sa-hw{padding:10px var(--space-3)}
  .sa-hw-val{font-size:20px}
}
html[data-theme="dark"] .sa-dashhero{box-shadow:var(--shadow-md)}
/* Sidebar notif-dot — corner-badge over bell icon-button */
#navNotifDot{
  position:absolute;top:-6px;right:-8px;
  min-width:14px;height:14px;padding:2px var(--space-1) 0;box-sizing:border-box;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--p,#1a6bdc);color:#fff;
  font-size:8.5px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;
  border-radius:var(--r-pill);border:1.5px solid #0f172a;
  pointer-events:none;
}
.sidebar[data-sb-collapsed="1"] #navNotifDot,
.sidebar[data-sb-rail="1"] #navNotifDot{top:-4px;right:-4px}
/* Cockpit-layout (admin/modules/cockpit.php) — classes i.p.v. inline grids.
 Rijen collapsen stapsgewijs: 3-koloms → 2 → 1, 2-koloms → 1. */
.cw-naam{color:var(--text1);font-weight:700;font-size:inherit;font-family:inherit}
.cw-badge{font-size:9.5px;font-weight:700;padding:2px 7px;border-radius:var(--r-xs);background:var(--amber-light);color:var(--amber);letter-spacing:.4px;vertical-align:middle;margin-left:var(--space-1)}
.ct-row{display:grid;gap:14px;margin-bottom:14px}
.ct-row--2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.ct-row--3{grid-template-columns:minmax(0,1.05fr) minmax(0,1.4fr) minmax(0,1fr)}
.ct-row--wijd{gap:var(--space-4)}
.ct-row--mb20{margin-bottom:20px}
.ct-row--recent{margin-top:var(--space-1);margin-bottom:0}
.ct-nomb{margin-bottom:0}
/* Grid-items hebben min-width:auto en worden dus zo breed als hun min-content;
 zonder deze regel duwt een nowrap-tabel of -tekstregel de hele rij uit de kaart */
.ct-row > *{min-width:0}
.ct-sec-hoofd{margin-bottom:10px}
.ct-sec-hoofd h2{font-size:14px}
/* Canonieke "toon alle →" sectielink (cockpit, monitoring, SA-lijstkoppen).
 Eén bron; hover = onderstreping + pijl schuift 2px (zelfde als portaal .tt-meer). */
.v-seclink{display:inline-flex;align-items:center;gap:var(--space-1);font-size:12px;font-weight:600;color:var(--kc);cursor:pointer;transition:color var(--t-fast)}
.v-seclink svg{width:1em;height:1em;transition:transform var(--t-fast)}
.v-seclink:hover{text-decoration:underline;color:var(--kc)}
.v-seclink:hover svg{transform:translateX(2px)}
.ct-ond-blok{margin-top:var(--space-4)}
.ct-wwft-termijn{margin-top:var(--space-4);background:var(--amber-light);border:1.5px solid var(--amber-border);border-radius:var(--r-card);padding:14px 18px}
.ct-wt-in{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}
.ct-wt-ttl{font-size:14px;font-weight:700;color:var(--amber)}
.ct-wt-sub{font-size:12px;color:#a16207;margin-top:3px}
.ct-wt-btn{background:var(--amber-light);color:var(--amber);border:1px solid var(--amber-border);white-space:nowrap}
html[data-theme="dark"] .ct-wt-sub{color:#fcd34d}
/* Tablet: 3-koloms rij wordt 2-koloms, derde kaart over volle breedte */
@media(max-width: 1180px){
  .ct-row.ct-row--3{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .ct-row.ct-row--3 > :last-child{grid-column:1 / -1}
}
/* Smal: alles onder elkaar — kaarten kregen anders te weinig breedte,
 waardoor de vaste kolommen binnen pa-/bh-rijen over elkaar heen vielen */
@media(max-width: 900px){
  .ct-row.ct-row--2,
  .ct-row.ct-row--3{grid-template-columns:minmax(0,1fr)}
  .ct-row.ct-row--3 > :last-child{grid-column:auto}
}
/* Mobiel: kaart-koppen mogen afbreken i.p.v. de sub-tekst platdrukken */
@media(max-width: 640px){
  .dt-card{padding:var(--space-4) 14px}
  .dt-ttl{flex-wrap:wrap;gap:2px 10px}
  .dt-ttl .dt-help{flex:1 0 100%}
  .pa-head,.pa-row{grid-template-columns:minmax(0,1fr) 64px 52px;gap:var(--space-2)}
  .bh-row{grid-template-columns:26px minmax(0,1fr) 56px;gap:var(--space-2)}
  .ct-wt-in{flex-direction:column;align-items:flex-start}
}
/* Cockpit-tabellen zijn wide-tables (opt-out card-view in vorio-base):
 ze horen horizontaal te scrollen, dus krijgen ze een eigen scroll-container */
.cp-off-tbl,.cp-ond-tbl{min-width:520px}
/* Behandelaar-select in de debiteurenlijst — vult de grid-cel op desktop,
 maar krimpt naar inhoudsbreedte zodra de rij een mobiele kaart wordt */
.deb-beh-sel{width:100%;max-width:100%;padding:3px 20px 3px var(--space-1);line-height:1.4;box-sizing:border-box;border:var(--bd-strong);border-radius:var(--r-xs);font-size:11px;font-family:var(--font);background:var(--bg2) var(--v-chevron) no-repeat right 6px center;color:var(--text1);appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer}
@media(max-width: 640px){
  .deb-beh-sel{width:auto;min-width:140px;height:32px;padding:var(--space-1) 22px var(--space-1) var(--space-2);font-size:12.5px;box-sizing:border-box}
}
/* Wwft-portaal en inzendingen (beheer)
 Opruim-acties zitten achter een 'Geavanceerde acties'-disclosure
 (.adm-danger-collapse), net als bij offertes. Binnen het danger-blok staan
 de knoppen in een eigen flex-groep die op smalle schermen naar een grid
 klapt (v-btn--sm = 32px hoog). */
.wl-opruim-acties{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
/* Tab- en filterrij scrollen horizontaal in plaats van te wrappen.
 width:max-content laat de rij groeien, min-width:100% houdt de onderlijn
 over de volle breedte zolang de tabs passen. */
.wl-tabs-wrap{margin-bottom:var(--space-4)}
.wl-tabs{display:flex;flex-wrap:nowrap;gap:0;width:max-content;min-width:100%;border-bottom:2px solid var(--border)}
.wl-filters-wrap{margin-bottom:var(--space-3)}
.wl-filters{display:flex;flex-wrap:nowrap;gap:var(--space-2);width:max-content;min-width:100%}
.wl-filters .filter-btn{flex:0 0 auto;height:32px;box-sizing:border-box}
/* Mobiel: knoppen gestapeld op volle breedte en 36px hoog. */
@media(max-width: 640px){
  .wl-opruim-acties{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-2)}
  .wl-opruim-acties .v-btn{width:100%;height:36px}
}
/* Cockpit-facelift — ALLES gescoped onder #panel-cockpit; geen invloed op superadmin/publieke site */
#panel-cockpit .cp-sec-lbl{display:flex;align-items:center;gap:10px;font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--text2);margin:26px 2px 11px}
#panel-cockpit .cp-sec-lbl::after{content:'';flex:1;height:1px;background:var(--border)}
#panel-cockpit .cp-sec-lbl:first-of-type{margin-top:6px}
#panel-cockpit .act-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:var(--space-4)}
#panel-cockpit .act-tile{position:relative;text-align:left;display:flex;flex-direction:column;gap:1px;background:var(--bg2);border:var(--bd);border-radius:var(--r-card);padding:14px var(--space-4) 13px;cursor:pointer;font-family:inherit;transition:transform var(--t-fast),box-shadow var(--t-fast),border-color var(--t-fast);overflow:hidden;box-shadow:var(--shadow,0 1px 3px rgba(0,0,0,.04))}
#panel-cockpit .act-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--border2)}
#panel-cockpit .act-tile:focus-visible{outline:2px solid var(--p);outline-offset:2px}
#panel-cockpit .act-tile .at-accent{position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:0 var(--r-xs) var(--r-xs) 0;background:var(--border2)}
#panel-cockpit .act-tile .at-v{font-size:25px;font-weight:800;letter-spacing:-.5px;line-height:1;color:var(--text1)}
#panel-cockpit .act-tile .at-l{font-size:12px;font-weight:700;color:var(--text1);margin-top:7px}
#panel-cockpit .act-tile .at-d{font-size:11px;color:var(--text3);line-height:1.3;margin-top:2px}
#panel-cockpit .act-tile .at-go{position:absolute;right:12px;top:13px;font-size:14px;color:var(--text3);opacity:.45;transition:opacity var(--t-fast),color var(--t-fast)}
#panel-cockpit .act-tile:hover .at-go{opacity:1;color:var(--kc)}
#panel-cockpit .act-tile.at--warn .at-accent{background:var(--amber)} #panel-cockpit .act-tile.at--warn .at-v{color:var(--amber)}
#panel-cockpit .act-tile.at--bad  .at-accent{background:var(--red)}   #panel-cockpit .act-tile.at--bad .at-v{color:var(--red)}
#panel-cockpit .act-tile.at--done .at-accent{background:var(--green)} #panel-cockpit .act-tile.at--done .at-v{color:var(--green)}
#panel-cockpit .act-tile.at--zero .at-v{color:var(--text3)}
#panel-cockpit .kpi-strip--info{grid-template-columns:repeat(4,1fr)}
#panel-cockpit .hero-card{transition:transform var(--t-fast) ease,box-shadow var(--t-fast) ease,border-color var(--t-fast) ease}
#panel-cockpit .hero-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--border2)}
#panel-cockpit .kpi-mini{transition:transform var(--t-fast) ease,box-shadow var(--t-fast) ease,border-color var(--t-fast) ease}
#panel-cockpit .kpi-mini:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--border2)}
#panel-cockpit .hero-card .hc-spark{width:90px;height:34px;top:14px;right:14px;opacity:.85}
@media(max-width: 1100px){#panel-cockpit .act-strip{grid-template-columns:repeat(3,1fr)}}
@media(max-width: 600px){#panel-cockpit .act-strip{grid-template-columns:1fr 1fr}#panel-cockpit .kpi-strip--info{grid-template-columns:1fr 1fr}}

/* OFFERTE-WERKBANK (.oe-*) — twee-paneel editor in admin.php.
 .od-* blijft in gebruik door de sjablonen-drawer (akten). Tokens uit beheer.css → dark loopt mee. */
.oe-wide.offerte-drawer{width:1140px;max-width:97vw}
.offerte-drawer.at-drawer{width:760px;max-width:96vw}
.oe-head{padding:var(--space-4) 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:var(--space-4);flex-shrink:0;background:var(--bg2)}
.oe-head-title{display:flex;flex-direction:column;gap:2px;min-width:0}
.oe-head-sub{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--kc)}
.oe-head-title h3{font-size:19px;font-weight:800;letter-spacing:-.02em;color:var(--text1)}
.oe-head-acts{margin-left:auto;display:flex;align-items:center;gap:9px}
.oe-head .v-num,.oe-build .v-num,.oe-rail .v-num,.oe-modal .v-num{font-variant-numeric:tabular-nums}

.oe-main{flex:1;min-height:0;display:flex;align-items:stretch}
.oe-build{flex:1;min-width:0;overflow-y:auto;overscroll-behavior:contain;padding:20px 22px;display:flex;flex-direction:column;gap:18px;background:var(--bg3)}
.oe-build>*{flex-shrink:0}
.oe-rail{width:360px;flex-shrink:0;overflow-y:auto;overscroll-behavior:contain;padding:20px;border-left:1px solid var(--border);background:var(--bg2);display:flex;flex-direction:column;gap:var(--space-4)}

/* Cards */
.oe-card{background:var(--bg2);border:var(--bd);border-radius:var(--r-card);box-shadow:var(--shadow);overflow:hidden}
.oe-card-h{display:flex;align-items:center;gap:10px;padding:14px var(--space-4);border-bottom:1px solid var(--border)}
.oe-card-h h4{font-size:14.5px;font-weight:700;letter-spacing:-.01em;color:var(--text1)}
.oe-eyebrow{font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text3)}
.oe-card-b{padding:var(--space-4)}
.oe-grid2{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.oe-col-full{grid-column:1/-1}
.oe-railform{display:flex;flex-direction:column;gap:var(--space-3)}

/* Velden */
.oe-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.oe-lbl{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text3)}
.oe-fld{height:var(--ctrl-h);padding:0 var(--space-3);border:var(--bd-ctrl);border-radius:var(--r-2);background:var(--bg2);color:var(--text1);font-size:13.5px;font-family:inherit;width:100%;box-sizing:border-box;transition:border-color var(--t-fast),box-shadow var(--t-fast)}
textarea.oe-fld{height:auto;min-height:60px;padding:9px var(--space-3);line-height:1.5;resize:vertical}
.oe-fld:hover{border-color:var(--text3)}
.oe-fld:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}
select.oe-fld{appearance:none;-webkit-appearance:none;background-image:var(--v-chevron);background-repeat:no-repeat;background-position:right 11px center;padding-right:var(--space-6)}

.v-btn.oe-dashed{border-style:dashed;color:var(--text2)}
.v-btn.oe-dashed:hover{border-color:var(--accent);color:var(--kc);background:var(--accent-light)}
.oe-full{width:100%;justify-content:center;margin-top:var(--space-1)}
.oe-callout{display:flex;gap:11px;padding:11px 13px;border-radius:var(--r-2);background:var(--accent-light);border:1px solid color-mix(in srgb,var(--accent) 22%,transparent);font-size:12.5px;color:var(--text2);line-height:1.5;margin-bottom:14px}
.oe-callout svg{width:17px;height:17px;color:var(--kc);flex:none;margin-top:1px}
.oe-callout b{color:var(--text1)}
.oe-empty{text-align:center;padding:26px;color:var(--text3);border:1px dashed var(--border2);border-radius:var(--r-card);font-size:13px;margin-bottom:var(--space-1)}

/* Dienst-kaart */
.oe-dienst{border:var(--bd);border-radius:var(--r-card);background:var(--bg2);box-shadow:var(--shadow);overflow:hidden;margin-bottom:14px}
.oe-dienst-h{display:flex;align-items:center;gap:11px;padding:11px 14px;background:var(--bg4);border-bottom:1px solid var(--border)}
.oe-dienst-meta{flex:1;min-width:0}
.oe-dienst-naam{border:1px solid transparent;background:none;font-size:15px;font-weight:700;color:var(--text1);width:100%;padding:var(--space-1) 7px;border-radius:var(--r-sm);font-family:inherit;min-width:0}
.oe-dienst-naam:hover{background:var(--bg2);border-color:var(--border)}
.oe-dienst-naam:focus{outline:none;background:var(--bg2);border-color:var(--accent);box-shadow:var(--ring)}
.oe-dienst-tot{text-align:right;flex:none}
.oe-dienst-tot .k{display:block;font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text3)}
.oe-dienst-tot .v{font-size:15px;font-weight:800;color:var(--text1)}
.oe-dienst-b{padding:6px 12px 12px}

/* Regel-tabel — één kolomkop per dienst; blokken zijn lichte groepen eronder */
.oe-rtab{padding:0}
.oe-rrow{display:grid;grid-template-columns:minmax(0,1fr) 60px 104px 72px 66px 100px 28px;gap:7px;align-items:center;padding:5px 10px}
.oe-rhead{padding:6px 10px 4px;border-bottom:1px solid var(--border);margin-bottom:2px}
.oe-rhead span{font-size:9.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text3)}
.oe-rhead .r{text-align:right}.oe-rhead .c{text-align:center}

/* Blok — lichte groep (géén kaart-kader); slanke naam-balk boven de regels */
.oe-blok{border:0;border-radius:0;background:none;overflow:visible;margin:0}
.oe-blok+.oe-blok{margin-top:5px;border-top:1px dashed var(--border);padding-top:3px}
.oe-blok-h{display:flex;align-items:center;gap:var(--space-2);padding:5px 10px 1px;background:none;border:0}
.oe-blok-naam{border:1px solid transparent;background:none;font-size:11.5px;font-weight:700;letter-spacing:.02em;color:var(--kc);flex:1;padding:2px 6px;border-radius:var(--r-xs);font-family:inherit;min-width:0}
.oe-blok-naam:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.oe-blok-naam:focus{outline:none;background:var(--bg2);box-shadow:var(--ring)}
.oe-blok-sub{font-size:12px;font-weight:800;color:var(--text1);white-space:nowrap}
.v-row-iconbtn.oe-mini{width:22px;height:22px;flex:0 0 22px;border-color:transparent;background:transparent}
.oe-addblok{margin-top:8px}
.oe-inp{height:var(--ctrl-h-sm);padding:0 9px;border:var(--bd-ctrl);border-radius:var(--r-ctrl);background:var(--bg2);color:var(--text1);font-size:12.5px;font-family:inherit;width:100%;box-sizing:border-box;transition:border-color var(--t-fast),box-shadow var(--t-fast)}
.oe-inp:hover{border-color:var(--text3)}
.oe-inp:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}
.oe-inp.r{text-align:right}.oe-inp.c{text-align:center}
select.oe-inp{appearance:none;-webkit-appearance:none;background-image:var(--v-chevron);background-repeat:no-repeat;background-position:right 6px center;padding-right:22px;padding-left:var(--space-2);text-align:left}
.oe-rtot{text-align:right;font-size:12.5px;font-weight:700;color:var(--text1);white-space:nowrap}
.oe-rtot.nul{color:var(--text3);font-weight:600}
.oe-rdel{width:var(--row-icon);height:var(--row-icon);border-radius:var(--r-sm);border:none;background:none;color:var(--text3);display:grid;place-items:center;opacity:.55;transition:var(--t-fast);cursor:pointer}
.oe-rrow:hover .oe-rdel,.at-rrow:hover .oe-rdel{opacity:1}
.oe-rdel:hover{background:var(--red-light,rgba(239,68,68,.08));color:var(--red,#dc2626)}
.oe-blok-foot{padding:5px 10px 9px}

/* Rail totalen */
.oe-totcard{background:var(--bg2);border:var(--bd);border-radius:var(--r-card);box-shadow:var(--shadow);overflow:hidden}
.oe-totcard-h{padding:14px var(--space-4) 2px}
.oe-totlines{padding:6px var(--space-4) var(--space-1)}
.oe-tline{display:flex;justify-content:space-between;align-items:baseline;padding:6px 0;font-size:13px;color:var(--text2)}
.oe-tline .v{font-weight:700;color:var(--text1)}
.oe-tline.sub{font-size:12px;color:var(--text3);padding:3px 0}
.oe-tline.sub .v{font-weight:600;color:var(--text2)}
.oe-tdiv{height:1px;background:var(--border);margin:5px 0}
.oe-grand{display:flex;justify-content:space-between;align-items:baseline;padding:13px var(--space-4);background:var(--accent);color:#fff;margin-top:var(--space-1)}
.oe-grand .k{font-size:12.5px;font-weight:600;opacity:.92}
.oe-grand .k small{display:block;font-size:10px;font-weight:500;opacity:.82;letter-spacing:.02em}
.oe-grand .v{font-size:22px;font-weight:800;letter-spacing:-.02em}

/* Modals (kiezer + voorbeeld) */
.oe-modal-bg{position:fixed;inset:0;background:var(--overlay-bg,rgba(0,0,0,.45));backdrop-filter:var(--overlay-blur,blur(2px));-webkit-backdrop-filter:var(--overlay-blur,blur(2px));z-index:var(--adm-z-oe-modal);display:none;align-items:center;justify-content:center;padding:var(--space-5)}
.oe-modal-bg.open{display:flex}
.oe-modal{background:var(--bg2);border:var(--bd);border-radius:var(--r-modal);box-shadow:var(--shadow-xl);width:100%;max-width:var(--modal-lg);max-height:86vh;display:flex;flex-direction:column;overflow:hidden;animation:oePop var(--t-slow) cubic-bezier(.2,.9,.3,1.2)}
.oe-modal--doc{max-width:var(--modal-md)}
@keyframes oePop{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.oe-modal-h{padding:var(--space-4) 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:var(--space-3)}
.oe-modal-h h3{font-size:16px;font-weight:800;color:var(--text1)}
.oe-modal-h .sub{font-size:12px;color:var(--text2);margin-top:2px}
.oe-modal-h .v-modal__close{margin-left:auto}
.oe-modal-search{padding:13px 20px 0}
.oe-search{position:relative}
.oe-search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text3)}
.oe-search input{height:var(--ctrl-h);padding:0 var(--space-3) 0 36px;border:var(--bd-ctrl);border-radius:var(--r-2);background:var(--bg2);color:var(--text1);font-size:13.5px;font-family:inherit;width:100%;box-sizing:border-box}
.oe-search input:focus{outline:none;border-color:var(--accent)}
.oe-modal-body{padding:6px 20px 20px;overflow-y:auto}
.oe-sec-lbl{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text3);padding:15px 2px var(--space-2)}
.oe-tgrid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.oe-tcard{border:var(--bd);border-radius:var(--r-2);padding:var(--space-3) 13px;background:var(--bg2);text-align:left;display:flex;gap:11px;align-items:flex-start;transition:var(--t-fast);cursor:pointer;font-family:inherit}
.oe-tcard:hover{border-color:var(--accent);background:var(--accent-light);transform:translateY(-1px);box-shadow:var(--shadow)}
.oe-tt{min-width:0;flex:1}
.oe-tt .nm{display:block;font-size:13.5px;font-weight:700;color:var(--text1)}
.oe-tt .ds{display:block;font-size:11px;color:var(--text3);margin-top:2px}
.oe-tp{font-size:12.5px;font-weight:700;color:var(--text2);white-space:nowrap}

/* Voorbeeld-document */
.oe-doc{background:#fff;color:#182036;border-radius:var(--r-2);padding:34px 36px;font-size:12.5px}
.oe-doc-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #182036;padding-bottom:13px;margin-bottom:var(--space-4)}
.oe-doc-brand{font-size:17px;font-weight:800;letter-spacing:-.03em;display:flex;align-items:flex-end;color:#182036}
.oe-doc-brand .dot{width:6px;height:6px;border-radius:50%;background:var(--vorio-brand);margin:0 0 var(--space-1) 1px}
.oe-doc-meta{text-align:right;font-size:11px;color:#64748b;line-height:1.6}
.oe-doc-meta b{color:#182036}
.oe-doc-h2{font-size:18px;font-weight:800;letter-spacing:-.02em;color:#182036}
.oe-doc-taav{color:#64748b;font-size:11.5px;margin:5px 0 14px}
.oe-doc-tbl{width:100%;border-collapse:collapse}
.oe-doc-tbl td{padding:5px 0;border-bottom:1px solid #eef2f7;font-size:12px;color:#334155}
.oe-doc-tbl td.r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;color:#182036}
.oe-doc-tbl td.oe-doc-blk{font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--vorio-brand);padding-top:var(--space-3);border-bottom:none}
.oe-doc-tbl td.oe-doc-blk.sub{color:#94a3b8;padding-top:var(--space-2);font-size:10px}
.oe-doc-x{color:#94a3b8}
.oe-doc-sum{margin-top:var(--space-1)}
.oe-doc-sum td{border-bottom:none}
.oe-doc-grand{display:flex;justify-content:space-between;font-weight:800;font-size:15px;border-top:2px solid #182036;margin-top:var(--space-2);padding-top:10px;color:#182036}

/* Responsive: stapel de twee panelen */
@media (max-width: 900px){
  .oe-wide .oe-main{flex-direction:column;overflow-y:auto}
  .oe-wide .oe-build,.oe-wide .oe-rail{overflow-y:visible;width:auto}
  .oe-rail{border-left:none;border-top:1px solid var(--border)}
  .oe-rrow{grid-template-columns:minmax(0,1fr) 52px 92px 62px 60px 88px 24px;gap:5px}
}

/* svg-vangnet tegen ongemaatte iconen (defensief, ongeacht laadvolgorde) */
.oe-wide svg,.oe-modal-bg svg{max-width:26px;max-height:26px}

/* ADMIN DESIGN-CONSOLIDATIE — cockpit-stijl doorgetrokken naar alle panelen.
 Scope: alleen admin.php (kantoor-beheer) + superadmin laden beheer.css; cliëntportaal
 en medewerker-app laden het niet en blijven ongemoeid. Mobiele card-view + kolom-grids intact. */
/* Knoppen: cockpit-"Verversen"-look op élke .v-btn — rondere radius + zachte
 rustschaduw. Hover verdiept alléén de schaduw (geen lift, rustiger op drukke
 toolbars en tabellen). Geldt admin + superadmin; cliëntportaal/medewerker
 laden beheer.css niet en blijven ongemoeid.*/
.v-btn{box-shadow:var(--shadow);transition:background var(--t-fast) ease,border-color var(--t-fast) ease,color var(--t-fast) ease,box-shadow var(--t-fast) ease}
.v-btn:hover{box-shadow:var(--shadow-sm)}
.v-btn:active{box-shadow:var(--shadow)}
.v-btn:disabled,.v-btn[disabled]{box-shadow:none}
/* Knop-maat: canon 36px geldt shell-breed (parity met medewerker-app + tenant). Kleur/radius ongemoeid. */
/* Dropdowns volgen de admin-radius (--adm-r-md=8px), gelijk aan .filter-bar select + login + oude .adm-select, i.p.v. de client-facing 6px uit vorio-base. Class-based, admin+SA only (beheer.css laadt niet client-facing). */
.v-select{border-radius:var(--r-2)}
/* Canon control-maat: toolbar = één band op --ctrl-h; primair=secundair. --sm blijft alleen voor icoon-rij-acties in tabellen. */
.sectie-hoofd .v-btn.v-btn--sm{min-height:var(--ctrl-h);height:var(--ctrl-h);padding:0 var(--space-3);font-size:var(--font-md)}
.sectie-hoofd .v-btn.v-btn--sm svg{width:15px;height:15px}
.sectie-hoofd .vr-select-pill{height:var(--ctrl-h);font-size:var(--font-md);font-weight:400;color:var(--text1)}

/* Canonical rij-actiemenu (kebab) — herbruikbaar op ALLE admin/beheer-lijsten.
 Markup: <span class="v-rowmenu"><button class="v-row-iconbtn v-rowmenu__trig" onclick="vRowMenu(event)"
 aria-haspopup="true" aria-expanded="false" aria-label="Meer acties"><svg…#icon-more-vertical></button>
 <div class="v-rowmenu__pop"><button class="v-rowmenu__item" onclick="…"><svg…/>Label</button>…</div></span>
 Pop is position:fixed (via vRowMenu gepositioneerd) zodat 'ie niet klemt in .v-data-rows{overflow:hidden}.*/
/* .v-rowmenu staat in vorio-base.css (canon-component) */
/* Link-knoppen blijven plat: transparante tekstlink, geen kader/schaduw/radius */
.v-btn--link{border-radius:var(--r-sm);box-shadow:none}
.v-btn--link:hover{box-shadow:none}
/* Ghost = de rustige cockpit-"Verversen"-look (wit met kader i.p.v. grijs vlak) */
.v-btn--ghost{background:var(--bg2);border-color:var(--border);color:var(--text1)}
.v-btn--ghost:hover{background:var(--bg2);border-color:var(--border2);color:var(--text1)}

/* Rustige tabel (.v-data-rows) — cockpit-kaart-look */
/* Kader/radius alleen desktop; de mobiele card-view maakt rijen al tot losse kaarten */
@media(min-width: 641px){
  .v-data-rows{border:var(--bd);border-radius:var(--r-card);box-shadow:var(--shadow);overflow:hidden}
}
.v-dr-head{padding:11px var(--space-4);font-size:10px;letter-spacing:.5px;color:var(--text3);background:var(--bg3);border-bottom:1px solid var(--border)}
.v-dr-row{padding:var(--space-3) var(--space-4);font-size:13px}
.v-dr-row:hover{background:var(--row-hover)}
.v-data-rows .v-dr-num{font-variant-numeric:tabular-nums}
/* Mini dag-badge — kort "Xd" naast een datum in een datarij (retentie/verval),
 zelfde pill-idee als de passeerdatum-badge op de dossierpagina.*/
.v-daybadge{display:inline-block;margin-left:6px;padding:2px 7px;border-radius:var(--r-sm);font-weight:600;
  font-size:10.5px;line-height:1.4;white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:.02em;
  background:rgba(245,158,11,.12);color:#92400e}
html[data-theme="dark"] .v-daybadge{background:rgba(245,158,11,.24);color:#fbbf24}
/* Status-icoon ondertekenlijst — licht kaal gekleurd icoon (geen achtergrond),
 zelfde visuele gewicht als de actie-iconen; tooltip volstaat, geen legenda.*/
.v-sic{display:inline-flex;align-items:center;justify-content:center;line-height:0}
.v-sic svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.v-sic__sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.v-sic--ok{color:var(--green)}
.v-sic--open{color:var(--kc)}
.v-sic--warn{color:var(--amber)}
.v-sic--fout{color:var(--red)}
.v-sic--uit{color:var(--text3)}
.v-dr-st{display:flex;justify-content:center}

/* Onboarding-banner (.v-onboard) — lege-staat-hulp voor nieuwe kantoren
 Gedeeld door Vragenlijsten en Offertes/Sjablonen. Tonen bij 0 items via het
 [hidden]-attribuut; de knop laadt de standaardsjablonen. */
.v-onboard{display:flex;gap:var(--space-4);align-items:center;flex-wrap:wrap;
  background:linear-gradient(120deg,var(--accent-light),transparent 70%);border:var(--bd);
  border-radius:var(--r-lg,14px);padding:var(--space-4) 18px;margin-bottom:20px}
.v-onboard[hidden]{display:none}
.v-onboard__glyph{width:42px;height:42px;border-radius:var(--r-card);background:var(--accent);color:#fff;
  display:grid;place-items:center;flex:none}
.v-onboard__glyph svg{width:22px;height:22px}
.v-onboard h3{font-size:15px;margin:0 0 2px;color:var(--text1)}
.v-onboard p{margin:0;font-size:12.5px;color:var(--text2);max-width:60ch}
.v-onboard__actions{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-left:auto;align-items:center}

/* Row-acties KAAL — geen kader/knopje meer, subtiel oplichtend op hover */
.v-row-iconbtn{background:transparent;border-color:transparent;color:var(--text3)}
.v-row-iconbtn:hover{background:color-mix(in srgb,var(--p) 10%,transparent);border-color:transparent;color:var(--kc)}
.v-row-iconbtn.is-danger{color:var(--text3)}
.v-row-iconbtn.is-danger:hover{background:color-mix(in srgb,var(--red-solid) 10%,transparent);border-color:transparent;color:var(--red-solid)}
html[data-theme="dark"] .v-row-iconbtn{background:transparent;border-color:transparent}
html[data-theme="dark"] .v-row-iconbtn:hover{background:rgba(95,161,240,.16);border-color:transparent;color:var(--kc)}
html[data-theme="dark"] .v-row-iconbtn.is-danger:hover{background:rgba(239,68,68,.16);border-color:transparent;color:#f87171}

/* Cockpit-widget-tabellen lichter: staan al onder een sectie-kop, dus geen
 zwaar kaart-kader (dat is voor full-page lijsten). Airy list-look. */
.v-data-rows.cp-off-tbl,.v-data-rows.cp-ond-tbl,.v-data-rows.cp-ai-tbl{border:none;border-radius:0;box-shadow:none}
.cp-off-tbl .v-dr-head,.cp-ond-tbl .v-dr-head{background:transparent}

/* Betalingen (.v-tbl echte tabel) — rustige stijl, gelijk aan .v-data-rows */
.v-tbl{border:var(--bd);border-radius:var(--r-card)}
.v-tbl thead{background:var(--bg3)}
.v-tbl th{font-size:10px;letter-spacing:.5px;color:var(--text3);padding:11px var(--space-4)}
.v-tbl td{padding:var(--space-3) var(--space-4);font-size:13px}

/* Z-INDEX-LAAGSCHAAL (admin-scope) — één bron voor de stapelvolgorde.
 Lokale stacking (z-index:1/2/3 binnen een component) blijft bewust letterlijk. */
:root{
  --adm-z-content-top: 50;    /* content-topbar */
  --adm-z-chrome:      100;    /* topbar + sidebar (app-chrome) */
  --adm-z-sidebar-ov:  190;    /* mobiele sidebar-overlay */
  --adm-z-popover:     800;    /* deb-status-popup */
  --adm-z-tooltip:    1000;    /* rail-tooltip */
  --adm-z-modal:      7000;    /* detail-modal-bg */
  --adm-z-drawer-bg:  8500;    /* offerte-drawer backdrop */
  --adm-z-drawer:     8501;    /* offerte-drawer paneel */
  --adm-z-oe-modal:   8600;    /* offerte-editor modal */
  --adm-z-cmdk-bg:    9990;    /* command-k backdrop */
  --adm-z-cmdk:       9991;    /* command-k paneel */
  --adm-z-inst-bg:    9995;    /* instellingen-drawer backdrop */
  --adm-z-inst:       9996;    /* instellingen-drawer paneel */
  --adm-z-login:      9999;    /* loginscherm */
  --adm-z-crop:      10001;    /* crop-overlay (bovenop alles) */
  --adm-z-veil:       9200;    /* saModalVeil shell-veil */
  --adm-z-veil-lift:  9300;    /* saFrameWrap.sa-veil-lift */
  --adm-z-prompt:     9000;    /* saPromptBg */
  --adm-z-toast:      9999;    /* notif-ok/fout */
  --adm-z-factuur:   10000;    /* factuurModalBg */
  --adm-z-preview:   99999;    /* health/mail preview-modals */
}

/* PREFERS-REDUCED-MOTION — respecteert de OS-voorkeur "verminder beweging".
 Geen !important; wint via identieke selector + source-order (dit blok staat achteraan).
 Neutraliseert animaties + transform-lifts + groei-balken. */
@media (prefers-reduced-motion: reduce){
  /* oneindige/entree-animaties */
  .sa-dashhero-status .puls{animation:none}
  .oe-modal{animation:none}
  /* hover/active transform-lifts */
  .v-btn:hover{transform:none}
  .v-btn:active{transform:none}
  .login-btn:active{transform:none}
  .deb-status-btn:hover .badge{transform:none}
  .sa-hw:hover{transform:none}
  .sa-dashhero-edit:hover{transform:none}
  #panel-cockpit .act-tile:hover{transform:none}
  #panel-cockpit .hero-card:hover{transform:none}
  #panel-cockpit .kpi-mini:hover{transform:none}
  .oe-tcard:hover{transform:none}
  /* slide-in panelen snappen i.p.v. animeren */
  .sa-cmdk-panel{transition:none}
  .inst-subnav{transition:none}
  /* voortgangsbalken vullen direct */
  .stat-balk-fill{transition:none}
  .bh-row .bh-wl-bar{transition:none}
  .fs-row .fs-fill{transition:none}
  .dv-seg{transition:none}
}

/* RADIUS-SCHAAL (admin-scope) — 5 stappen + pill */
:root{
  --adm-r-xs: var(--r-xs);    /* fold → base */
  --adm-r-sm: var(--r-sm);
  --adm-r-md: var(--r-2);
  --adm-r-lg: var(--r-card);  /* was 12 → 14 canon */
  --adm-r-xl: var(--r-modal); /* was 16 → 14 canon */
}

/* .oe-mono/.oe-hint — gedeeld door de akten-/tarief-modals */
.oe-mono{font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace)}
.oe-hint{font-size:10.5px;color:var(--text3);margin-top:1px;line-height:1.4}
.at-rrow{display:grid;grid-template-columns:minmax(0,1fr) 58px 104px 68px 66px 28px;gap:7px;align-items:center;padding:5px 10px}
@media (max-width: 900px){
  .at-rrow{grid-template-columns:minmax(0,1fr) 48px 84px 56px 56px 24px;gap:5px}
}

/* TRANSITION-DURATIES (admin-scope) */
/* FINANCIEN — gedeelde componenten voor jaarrekening + btw:
 v-stepper (workflow) · v-money (bedrag-invoer) · jr-bcheck (balans-controle) */
/* — Workflow-stepper (generaliseert de oude btw-inline .btw-stepper) — */
.v-stepper{display:flex;align-items:flex-start;gap:0;padding:var(--space-1) 0}
.v-stepper .v-step{display:flex;flex-direction:column;align-items:center;gap:6px;padding:var(--space-1) 6px;border-radius:var(--r-2);user-select:none;min-width:0;flex:0 0 auto}
.v-stepper .v-step .v-step-dot{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;border:2px solid var(--border);background:var(--bg2);color:var(--text3);transition:all var(--t-base,.15s)}
.v-stepper .v-step .v-step-dot svg{width:16px;height:16px}
.v-stepper .v-step .v-step-lbl{font-size:11px;font-weight:600;color:var(--text3);text-align:center;white-space:nowrap}
.v-stepper .is-done .v-step-dot{background:var(--green);border-color:var(--green);color:#fff}
.v-stepper .is-done .v-step-lbl{color:var(--text1)}
.v-stepper .is-current .v-step-dot{background:var(--p);border-color:var(--p);color:#fff;box-shadow:var(--ring)}
.v-stepper .is-current .v-step-lbl{color:var(--kc);font-weight:700}
.v-stepper .is-future .v-step-dot{color:var(--text3);opacity:.55}
.v-stepper .v-step.is-clickable{cursor:pointer}
.v-stepper .v-step.is-clickable:hover .v-step-dot{transform:scale(1.05)}
.v-stepper .v-step-line{flex:1 1 auto;min-width:20px;height:2px;background:var(--border);margin:17px var(--space-1) 0;border-radius:2px}
.v-stepper .v-step-line.is-done{background:var(--green)}
@media (max-width:640px){.v-stepper{flex-wrap:wrap;gap:var(--space-2);justify-content:center}.v-stepper .v-step{flex:1 1 60px}.v-stepper .v-step-line{display:none}}

/* — Bedrag-invoer met €-prefix, geen spinner-pijltjes — */
.v-money{display:flex;align-items:center;height:38px;border:var(--bd);border-radius:var(--r-2);background:var(--bg2);overflow:hidden;transition:var(--t-base,.15s);box-sizing:border-box}
.v-money:focus-within{border-color:var(--p);box-shadow:var(--ring)}
.v-money .v-money-cur{padding:0 10px;color:var(--text3);font-weight:600;font-size:13px;border-right:1px solid var(--border);align-self:stretch;display:flex;align-items:center;background:var(--bg3)}
.v-money input{flex:1;min-width:0;width:100%;border:0;background:transparent;color:var(--text1);font:inherit;font-size:14px;font-weight:600;text-align:right;padding:0 var(--space-3);outline:none;font-variant-numeric:tabular-nums;-moz-appearance:textfield;appearance:textfield}
.v-money input::-webkit-outer-spin-button,.v-money input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.v-money-group{border:var(--bd);border-radius:var(--r-2);padding:13px 15px;background:var(--bg3)}
.v-money-group .v-mg-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text3);margin-bottom:11px;display:flex;align-items:center;gap:7px}
.v-money-group .v-mg-title svg{width:14px;height:14px;color:var(--kc)}
.v-money-group .v-mg-row{display:grid;gap:var(--space-3);grid-template-columns:1fr 1fr}
@media (max-width:640px){.v-money-group .v-mg-row{grid-template-columns:1fr}}
.v-money-field label{display:block;font-size:11px;font-weight:650;color:var(--text3);margin-bottom:5px}

/* — Balans-controle-strip (accentbalk, geen icoon) — */
.jr-bcheck{display:flex;align-items:center;gap:var(--space-3);padding:13px var(--space-4);border-radius:var(--r);font-size:13px;border:var(--bd);background:var(--bg3);color:var(--text2);box-sizing:border-box;margin-top:var(--space-4)}
.jr-bcheck:before{content:"";width:8px;height:8px;border-radius:50%;flex:0 0 auto;background:var(--text3)}
.jr-bcheck .jr-bcheck-grow{flex:1}
.jr-bcheck strong{color:var(--text1)}
.jr-bcheck .jr-bcheck-amt{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}
.jr-bcheck.is-ok:before{background:var(--green)}
.jr-bcheck.is-bad:before{background:var(--amber)}
.jr-bcheck.is-bad .jr-bcheck-amt{color:var(--amber)}
.jr-bcheck.is-ok .jr-bcheck-amt{color:var(--green)}

/* — Referentie mono + kopieer-knop (btw-tabel) — */
.v-ref{font-family:var(--font-mono,ui-monospace,Menlo,Consolas,monospace);font-size:12px;color:var(--text2);display:inline-flex;align-items:center;gap:6px;min-width:0}
.v-ref .v-ref-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v-ref button{border:0;background:transparent;color:var(--text3);cursor:pointer;padding:2px;display:flex;align-items:center;flex:0 0 auto}
.v-ref button:hover{color:var(--kc)}
.v-ref button svg{width:13px;height:13px}
/* einde FINANCIEN */
/* Fase 4: uniforme, doorlopende zoekbalk in alle filterbars (zoals Aktensuite) */
.filterbar input[type="text"],.filterbar input[type="search"]{flex:1 1 auto;min-width:220px}

/* Unified finance hero (.v-fin-*) — btw + jaarrekening */
/* Behandelaar-badge in ondertekenen-tabel: initialen-avatar + naam onder de ontvanger */
.v-dr-beh{display:inline-flex;align-items:center;gap:6px;margin-top:var(--space-1);max-width:100%}
.v-dr-beh__ava{width:18px;height:18px;flex:0 0 18px;border-radius:50%;color:#fff;font-size:9px;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;letter-spacing:.02em}
.v-dr-beh__naam{font-size:11px;color:var(--text3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Behandelaar-badge compact-modus: naam-tekst weg, kleine avatar inline op de ontvangernaam-regel */
.v-dr-beh__ava--inline{display:none;width:15px;height:15px;flex:0 0 15px;font-size:8px;margin-left:6px;vertical-align:middle}
html.density-compact .v-dr-beh{display:none}
html.density-compact .v-dr-beh__ava--inline{display:inline-flex}

/* Wobble-fix: notif-bel in de collapsed/rail-sidebar centreerde via
 inset:0 + flex-center; WebKit (Safari) toont daarbij subpixel-drift, waardoor de
 bel verspringt bij re-layout (bv. notificaties wegklikken). Gewone rail-iconen
 (.sb-link > svg) gebruiken al absolute translate-centrering (engine-onafhankelijk);
 we trekken de bel-wrap daarmee gelijk. */
/* Collapsed centreert de wrap globaal (wrap wordt absolute vanaf regel ~75, ongeacht viewport). */
.sidebar[data-sb-collapsed="1"] .nav-item > .ntf-svg-wrap{
  inset:auto; width:auto; height:auto;
  top:50%; left:50%;
  transform:translate(-50%,-50%);
}
/* Rail-mode maakt de wrap alleen absolute op desktop (>=881px). Onder die breedte is de
 sidebar een volledige drawer met labels en blijft de wrap position:relative — dan zou
 top/left/translate de bel uit zijn flow-plek naast het label duwen. Daarom gescoped. */
@media (min-width:881px){
  .sidebar[data-sb-rail="1"] .nav-item > .ntf-svg-wrap{
    inset:auto; width:auto; height:auto;
    top:50%; left:50%;
    transform:translate(-50%,-50%);
  }
}

/* SA-panel + beheer: eigen (Vorio/admin) branding — geen tenant-kleur-lift.
 --kc terug naar --accent zodat de merkkleur exact blijft (light én dark). */
:root{--kc:var(--accent)}
html[data-theme="dark"]{--kc:var(--accent)}

/* Filter-chip count-pill vaste breedte: voorkomt dat 3-cijferige counts (bv. Alle 154) de pill
 laten groeien wanneer het getal na de fetch verschijnt → geen verschuivende chips-rij. */
/* .v-chip-cnt vaste min-breedte hersteld 2026-09-18: async-fetch counts (—→813) mochten de pill
   niet laten groeien = verschuivende chips-rij op dossiers/debiteuren/offertes.
   Gescoped op filter-chips (.v-chip), niet generieke .chip-cnt. */
.v-chip .v-chip-cnt{min-width:30px;text-align:center}
/* Rechtsgebied-pillen tenant-medewerkertabel (admin/js/medewerkers.js rgBadges)
 Was hardcoded inline hex → onleesbaar/muddy in dark mode.
 Nu class-based met hue-token + dark-brightened override. Licht = ongewijzigd. */
.mw-rg{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:600;
  padding:2px 7px;border-radius:var(--r);margin-right:3px;white-space:nowrap;
  background:color-mix(in srgb,var(--mw-rg-c) 9%,transparent);
  color:var(--mw-rg-c);
  border:1px solid color-mix(in srgb,var(--mw-rg-c) 19%,transparent)}
.mw-rg--og{--mw-rg-c:#0e7490}
.mw-rg--or{--mw-rg-c:var(--purple)}
.mw-rg--fa{--mw-rg-c:#be185d}
.mw-rg--overig{--mw-rg-c:#1a4fa8}
html[data-theme="dark"] .mw-rg{
  background:color-mix(in srgb,var(--mw-rg-c) 22%,transparent);
  color:color-mix(in srgb,var(--mw-rg-c) 55%,#fff);
  border-color:color-mix(in srgb,var(--mw-rg-c) 42%,transparent)}

/* AI-logboek: systeemregel voor automatische titel-/onderwerp-aanroepen (Variant A) */
.log-rij--systeem{opacity:.72}
.log-kop--systeem{cursor:default;user-select:auto}
.log-kop--systeem:hover{background:transparent}
.log-systeem-tekst{color:var(--text3);display:flex;align-items:center;gap:6px}
.log-systeem-tekst svg{width:13px;height:13px;flex:none;opacity:.85}
.log-systeem-waarde{color:var(--text2);flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}

/* VORIO CANONIEK INSTELLINGEN-SYSTEEM — gedeelde primitives (superadmin + kantoorbeheer).
 Alleen additief — bestaande .card/.adm-card blijven werken. */
:root{ --set-card-w:640px; --set-card-w-wide:880px; --set-card-w-narrow:480px; }
.set-w{max-width:var(--set-card-w)}
.set-w--wide{max-width:var(--set-card-w-wide)}
.set-w--narrow{max-width:var(--set-card-w-narrow)}
.set-h2{font-size:20px;font-weight:700;letter-spacing:-.2px;color:var(--text1);margin:0 0 5px}
.set-sub{font-size:13px;color:var(--text2);margin:0 0 18px;max-width:62ch}
.card-eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--text3);margin:0 0 var(--space-3)}
.card-desc{font-size:12.5px;color:var(--text3);line-height:1.6;margin:0 0 14px}
.card-title + .card-desc{margin-top:-10px}

/* canonieke statuspill (dot 8px constant, gewicht 700, halo alleen groen) */
.pill{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;flex:0 0 auto;white-space:nowrap}
.pill::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.pill--sm{font-size:11.5px}
.pill--plain::before{display:none}
.pill.is-gekoppeld{color:var(--green)}
.pill.is-gekoppeld::before{box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 22%,transparent)}
.pill.is-actie{color:var(--amber)}
.pill.is-inactief{color:var(--text3)}
.pill.is-inactief::before{background:var(--border2)}.pill.is-merk{color:var(--p)}.pill.is-merk::before{box-shadow:var(--ring)}

/* canonieke toggle-rij (scheidingslijn i.p.v. omkaderde blokjes) */
.tog{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0}
.tog + .tog{border-top:1px solid var(--border)}.card-title + .tog,.card-eyebrow + .tog,.card > .tog:first-child{padding-top:0}
.tog__txt strong{display:block;font-size:13.5px;font-weight:600;color:var(--text1)}
.tog__txt>span{display:block;font-size:11px;color:var(--text3);margin-top:2px}

/* KOPPELKAART — één component, vendor via --brand-* hook */
.v-koppelkaart{max-width:var(--set-card-w)}
.kk-hdr{display:flex;align-items:center;gap:14px}
.kk-tile{flex:0 0 auto;width:40px;height:40px;border-radius:var(--r-2);display:grid;place-items:center;background:var(--brand-bg,var(--bg3));color:var(--brand-fg,var(--text1));border:1px solid var(--brand-bd,var(--border));box-shadow:var(--brand-sh,none);font-weight:800;font-size:20px}
.kk-tile svg{width:22px;height:22px}
.kk-txt{flex:1;min-width:0}
.kk-naam{font-size:15px;font-weight:700;color:var(--text1);line-height:1.2}
.kk-sub{font-size:12.5px;color:var(--text3);margin-top:2px;overflow:hidden;text-overflow:ellipsis}
.kk-body{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border)}
.inst-cols{display:flex;gap:22px;align-items:flex-start}
.inst-col{flex:1 1 0;min-width:0}
.inst-col > .card{max-width:none}
.inst-col .v-koppelkaart{max-width:none}
@media(max-width:1180px){.inst-cols{flex-direction:column}.inst-col{max-width:var(--set-card-w)}}
.log-del-btn{background:none;border:0;padding:0 14px;cursor:pointer;color:var(--text3);opacity:.6;display:inline-flex;align-items:center;transition:opacity var(--t-base,.15s),color var(--t-base,.15s)}
.log-row:hover .log-del-btn{opacity:.85}
.log-del-btn:hover{opacity:1;color:var(--red)}
.kk-acties{margin-top:var(--space-4);display:flex;flex-wrap:wrap;gap:10px}
.brand-mollie{--brand-bg:linear-gradient(135deg,#FFE15A 0%,#FF82FA 60%,var(--purple) 100%);--brand-fg:#1c1c1c;--brand-bd:transparent;--brand-sh:0 1px 3px rgba(0,0,0,.15)}
.kk-tile.brand-mollie{width:38px;height:38px;border-radius:var(--r-2);border:none;font-family:Inter,system-ui,sans-serif;font-weight:900;font-size:22px;letter-spacing:-.05em}
.brand-brevo{--brand-bg:#0B996E;--brand-fg:#fff;--brand-bd:transparent;--brand-sh:0 3px 10px rgba(11,153,110,.32)}
.brand-ms{--brand-bg:var(--bg3);--brand-fg:var(--text1);--brand-bd:var(--border);--brand-sh:0 2px 8px rgba(0,0,0,.15)}.kk-tile.brand-ms svg{width:24px;height:24px}
/* einde canoniek instellingen-systeem */
/* CANONIEKE SA-INTEGRATIEKAART — clean/compact */
.ic-card{background:var(--bg2);border:var(--bd);border-radius:var(--r-card);padding:20px 22px;box-shadow:var(--shadow)}
.ic-card + .ic-card{margin-top:14px}
.ic-hdr{display:flex;align-items:center;gap:14px}
.ic-tile{flex:0 0 auto;width:44px;height:44px;border-radius:var(--r);display:grid;place-items:center;background:var(--t-bg,var(--bg3));color:var(--t-fg,var(--text1));border:1px solid var(--t-bd,var(--border));box-shadow:var(--t-sh,none)}
.ic-tile svg{width:24px;height:24px}
.ic-txt{flex:1;min-width:0}
.ic-naam{font-size:15px;font-weight:700;color:var(--text1);line-height:1.2}
.ic-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:3px;font-size:12px;color:var(--text3)}
.ic-chip{font-family:var(--mono);font-size:11px;color:var(--text2);background:var(--bg4);border:var(--bd);border-radius:var(--r-sm);padding:1px 6px}
.ic-dot{color:var(--border2)}
.ic-body{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border)}
.ic-key{display:flex;align-items:center;gap:10px;background:var(--bg3);border:var(--bd);border-radius:var(--r-sm);padding:var(--space-2) var(--space-3)}
.ic-cap{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);flex:0 0 auto}
.ic-val{flex:1;min-width:0;font-family:var(--mono);font-size:12.5px;color:var(--text2);letter-spacing:.12em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:none;background:transparent;padding:0;outline:none}
.ic-toon{font-size:11.5px;color:var(--text3);cursor:pointer;flex:0 0 auto;background:none;border:none;font-family:inherit;padding:2px var(--space-1)}
.ic-acties{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3);align-items:center}
.ic-metrics{display:flex;flex-wrap:wrap;margin-top:var(--space-4);border:var(--bd);border-radius:var(--r-2);background:var(--bg3);overflow:hidden}
.ic-metric{flex:1;min-width:130px;padding:11px 14px}
.ic-metric + .ic-metric{border-left:1px solid var(--border)}
.ic-m-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text3)}
.ic-m-val{font-size:17px;font-weight:800;letter-spacing:-.3px;margin-top:2px;color:var(--text1)}
.ic-m-sub{font-size:11px;color:var(--text3);margin-top:1px}
.ic-howto{display:flex;gap:var(--space-2);align-items:flex-start;margin-top:var(--space-3);font-size:11.5px;color:var(--text3);line-height:1.5}
.ic-howto svg{width:14px;height:14px;flex:0 0 auto;margin-top:1px;color:var(--text3)}
.ic-howto code{font-family:var(--mono);font-size:.95em;background:var(--bg4);border-radius:var(--r-xs);padding:0 var(--space-1)}
.ic-m{font-family:Inter,system-ui,sans-serif;font-weight:900;font-size:24px;letter-spacing:-.05em}
.t-mollie{--t-bg:linear-gradient(135deg,#FFE15A,#FF82FA 60%,var(--purple));--t-fg:#1c1c1c;--t-bd:transparent;--t-sh:0 2px 8px rgba(124,58,237,.18)}
.ic-tile.t-mollie{border:none}
.t-brevo{--t-bg:#0B996E;--t-fg:#fff;--t-bd:transparent;--t-sh:0 2px 8px rgba(11,153,110,.2)}
.t-ci{--t-bg:#fff;--t-fg:#0b0b0b;--t-bd:var(--border);--t-sh:0 2px 8px rgba(0,0,0,.12)}
/* einde SA-integratiekaart */
/* IP-whitelist rij-editor (gedeeld: kantoorbeheer + superadmin) — round-trippt naar trusted_ips-formaat */
.ipw-lbl{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text3);margin:0 0 10px}
.ipw-row{display:flex;align-items:center;gap:10px;padding:var(--space-2) 10px var(--space-2) var(--space-3);border:var(--bd);border-radius:var(--r);margin-bottom:var(--space-2);background:var(--bg2)}
.ipw-row:focus-within{border-color:var(--border2)}
.ipw-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--border2)}
.ipw-dot.bad{background:var(--amber);box-shadow:0 0 0 3px color-mix(in srgb,var(--amber) 24%,transparent)}
.ipw-inp{height:36px;padding:6px 11px;font-family:inherit;font-size:13px;background:var(--bg3);color:var(--text1);border:var(--bd);border-radius:var(--r-2);outline:none;min-width:0}
.ipw-inp:focus{border-color:var(--p)}
.ipw-adres{flex:0 0 172px;font-family:ui-monospace,Menlo,Monaco,monospace;letter-spacing:-.01em}
.ipw-naam{flex:1 1 auto}
.ipw-leeg{font-size:12.5px;color:var(--text3);padding:var(--space-4);border:1px dashed var(--border);border-radius:var(--r);text-align:center}
.ipw-acties{display:flex;flex-wrap:wrap;gap:10px;margin-top:var(--space-3)}
.ipw-mijn{color:var(--p);border-color:color-mix(in srgb,var(--p) 32%,var(--border))}
.ipw-mijn:hover{background:color-mix(in srgb,var(--p) 8%,transparent);color:var(--p);border-color:color-mix(in srgb,var(--p) 40%,var(--border))}
.ipw-hint{display:flex;align-items:flex-start;gap:var(--space-2);font-size:11.5px;color:var(--text3);margin-top:var(--space-3);line-height:1.5}
.ipw-hint svg{width:15px;height:15px;flex:0 0 auto;margin-top:1px;color:var(--text3)}
.ipw-hint code{font-family:ui-monospace,Menlo,Monaco,monospace;background:var(--bg4);padding:1px 5px;border-radius:var(--r-xs);font-size:11px}

/* Canonieke full-width dashed "toevoegen"-knop (passkeys e.a.) */
.v-add-dashed{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-2);background:none;border:1px dashed var(--border2);border-radius:var(--r-card);color:var(--text2);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:var(--space-3);transition:border-color var(--t-fast),color var(--t-fast),background var(--t-fast)}
.v-add-dashed:hover{border-color:var(--p);color:var(--p);background:color-mix(in srgb,var(--p) 6%,transparent)}
.v-add-dashed svg{width:16px;height:16px}

/* IP-editor: dashed toevoeg-knoppen naast elkaar (helft-breedte i.p.v. full-width) */
.ipw-acties .v-add-dashed{flex:1 1 0;width:auto;min-width:0}
.v-add-dashed--mijn{color:var(--p);border-color:color-mix(in srgb,var(--p) 34%,var(--border2))}
.v-add-dashed--mijn:hover{background:color-mix(in srgb,var(--p) 8%,transparent)}

/* SA-confirm-backdrop naadloos aan de shell-veil (#saModalVeil): zelfde navy dim + blur.
 Alleen in SA-partials (.sa-partial); tenant houdt z'n eigen .bevestig-overlay-stijl. */
.sa-partial .bevestig-overlay{background:var(--overlay-bg,rgba(0,0,0,.45));backdrop-filter:var(--overlay-blur,blur(2px));-webkit-backdrop-filter:var(--overlay-blur,blur(2px))}

/* Beheer-gebruikte regels uit vorio-admin-app.css; vorio-admin-app.css blijft SA-only. */
html[data-theme="light"] body[data-app="admin"] {
  --radius: 6px;
  --bg: #f1f5f9;
  --border: #cbd5e1;
}
html[data-theme="dark"] body[data-app="admin"] {
  --radius: 6px;
}body[data-app="admin"] .tbl th,body[data-app="admin"] table.tbl thead th{
  color:var(--text1);
  font-weight:600;
  text-transform:none;
  letter-spacing:0;
  font-size:12.5px;
  padding:var(--space-2) var(--space-3);
  background:transparent;
}body[data-app="admin"] table.zebra tbody tr:nth-child(even) td,body[data-app="admin"] table.tbl.zebra tbody tr:nth-child(even) td{
  background:transparent;
}body[data-app="admin"] table.zebra tbody tr:hover td,body[data-app="admin"] table.tbl.zebra tbody tr:hover td{
  background:var(--row-hover);
}
.adm-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  height:28px;
  min-height:28px;
  max-height:28px;
  padding:0 var(--space-3);
  border-radius:var(--r-ctrl);
  font-family:inherit;font-size:12.5px;font-weight:600;
  cursor:pointer;
  border:1px solid transparent;
  transition:background var(--t-base,.15s), border-color var(--t-base,.15s), color var(--t-base,.15s);
  line-height:1;
  box-sizing:border-box;
  white-space:nowrap;
  appearance:none; -webkit-appearance:none; -moz-appearance:none;
  text-decoration:none;
  vertical-align:middle;
  margin:0;
}
.adm-btn svg, .adm-btn-ghost svg, .adm-btn-danger svg {
  width:14px; height:14px; stroke-width:1.8;
}

body[data-app="admin"] .btn,
body[data-app="admin"] .btn-ghost,
body[data-app="admin"] .btn-primary,
body[data-app="admin"] .btn-sec {
  padding:9px var(--space-4);
  border-radius:var(--r-ctrl);
  font-family:inherit; font-size:13px; font-weight:600;
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  box-sizing:border-box; line-height:1.2; white-space:nowrap;
}
body[data-app="admin"] .btn svg,
body[data-app="admin"] .btn-ghost svg,
body[data-app="admin"] .btn-primary svg { width:14px; height:14px; stroke-width:1.8; margin:0 }

body[data-app="admin"] .sectie-hoofd .count,
body[data-app="admin"] .count {
  display:inline-flex; align-items:center;
  height:24px; padding:0 10px; align-self:center;
  border-radius:var(--r-pill);
  background:var(--bg3); color:var(--text3);
  font-size:var(--font-sm); font-weight:600;
  border:0;
  white-space:nowrap;
  box-sizing:border-box;
}

.adm-icon-btn {
  display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;
  background:transparent;color:var(--text3);
  border:var(--bd-strong);
  border-radius:var(--r-sm);
  cursor:pointer;font-family:inherit;padding:0;
  box-shadow:var(--shadow);
  box-sizing:border-box;
  transition:background var(--t-base,.15s), border-color var(--t-base,.15s), color var(--t-base,.15s);
}
.adm-icon-btn svg { width:14px; height:14px; stroke-width:1.8; display:block }
.adm-icon-btn:hover { background:color-mix(in srgb, var(--p,#1a6bdc) 8%, transparent); color:var(--p,#1a6bdc); border-color:color-mix(in srgb, var(--p,#1a6bdc) 35%, var(--border)) }
.adm-icon-btn.danger { color:var(--text3); border-color:var(--border2) }
.adm-icon-btn.danger:hover { background:color-mix(in srgb, var(--red,#dc2626) 10%, transparent); color:var(--red,#dc2626); border-color:var(--red,#dc2626) }
.adm-icon-btn:focus-visible { outline:2px solid var(--p,#1a6bdc); outline-offset:1px }
.adm-btn:focus{ outline:none }
.adm-icon-btn[disabled] { opacity:.4; cursor:not-allowed }

.adm-danger-collapse {
  margin-top:20px;
  padding-top:14px;
  border-top:1px solid var(--border);
}
.adm-danger-collapse > summary {
  cursor:pointer; list-style:none; user-select:none;
  font-size:12.5px; color:var(--text2);
  display:inline-flex; align-items:center; gap:var(--space-2);
  padding:6px 10px; border-radius:var(--r-sm);
}
.adm-danger-collapse > summary::-webkit-details-marker { display:none }
.adm-danger-collapse__chev {
  width:12px; height:12px; flex-shrink:0;
  color:currentColor; stroke:currentColor; fill:none;
  transition:transform var(--t-base,.15s) ease;
}
.adm-danger-collapse[open] > summary .adm-danger-collapse__chev { transform:rotate(90deg) }
.adm-danger-collapse > summary:hover { background:var(--bg3) }

.ai-fam-cel { padding:9px 10px }
.ai-fam-kop { display:flex; align-items:flex-start; gap:var(--space-2) }
.ai-fam-knop {
  flex:0 0 auto; width:18px; height:18px; margin-top:1px; padding:0;
  display:inline-flex; align-items:center; justify-content:center;
  border:0; border-radius:var(--r-xs); background:transparent;
  color:var(--text3); cursor:pointer;
}
.ai-fam-knop:hover { background:var(--bg3); color:var(--text1) }
.ai-fam-knop:focus-visible { outline:2px solid var(--p); outline-offset:1px }
.ai-fam-chev {
  width:12px; height:12px; flex-shrink:0;
  fill:none; stroke:currentColor; stroke-width:2.2;
  transition:transform var(--t-base,.15s) ease;
}
.ai-fam-knop[aria-expanded="true"] .ai-fam-chev { transform:rotate(90deg) }

.ai-fam-leeg { flex:0 0 18px }
.ai-fam-dot { flex:0 0 auto; width:8px; height:8px; border-radius:50%; margin-top:5px }
.ai-fam-tekst { min-width:0 }
.ai-fam-titel { display:block; font-size:13px; font-weight:600; color:var(--text1) }
.ai-fam-omschr { display:block; font-size:11px; color:var(--text3); margin-top:2px }

.ai-fam-sub td { background:var(--bg2) }
.ai-fam-sub .ai-fam-cel { padding:6px 10px 6px 44px; font-size:12px; color:var(--text2) }
.ai-getal { font-size:12.5px; color:var(--text2); text-align:right; padding:9px 10px }
.ai-getal--tot { font-weight:600 }
.ai-getal--eur { font-weight:700; color:var(--text1) }
.ai-getal--pct { font-size:11.5px; color:var(--text3) }
.ai-fam-sub .ai-getal { font-size:12px; padding-top:6px; padding-bottom:6px }

.deb-imp-wrap { position:relative; display:inline-block }
.deb-imp-btn { display:inline-flex; align-items:center; gap:6px }
.deb-imp-chev {
  width:1em; height:1em; flex-shrink:0;
  color:currentColor; stroke:currentColor; fill:none;
  opacity:.85; transition:transform var(--t-base,.15s) ease;
}
.deb-imp-btn[aria-expanded="true"] .deb-imp-chev { transform:rotate(180deg) }
.deb-imp-menu {
  display:none;
  position:absolute; top:calc(100% + 4px); right:0;
  background:var(--bg2); border:var(--bd-strong); border-radius:var(--r-2);
  box-shadow:var(--shadow-md);
  min-width:240px; z-index:500; overflow:hidden;
  padding:6px 0;
}
.deb-imp-menu.open { display:block }
.deb-imp-item {
  display:flex; align-items:center; gap:10px;
  width:100%; padding:9px 14px;
  border:0; background:none; cursor:pointer;
  font-size:13px; color:var(--text1); text-align:left;
  transition:background var(--t-fast,.12s) ease;
}
.deb-imp-item:hover { background:var(--bg3) }
.deb-imp-item__ico { width:16px; height:16px; flex-shrink:0; color:var(--text3); stroke:currentColor; fill:none }
.deb-imp-item__txt { display:flex; flex-direction:column; gap:1px; min-width:0 }
.deb-imp-item__txt strong { font-size:12.5px; font-weight:700; color:var(--text1) }
.deb-imp-item__txt small { font-size:11px; color:var(--text3) }
.deb-imp-hr { margin:var(--space-1) 0; border:0; border-top:1px solid var(--border) }

@media (max-width:640px){
  .deb-imp-menu {
    left:0; right:auto;
    min-width:0; width:max-content;
    max-width:calc(100vw - 24px);
  }
}
.adm-danger-collapse__body {
  margin-top:var(--space-3);
  padding:14px var(--space-4);
  background:var(--red-light);
  border:1px solid var(--red-border);
  border-left:4px solid var(--red-solid);
  border-radius:var(--r);
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
}
.adm-danger-collapse__txt { flex:1; min-width:220px }
.adm-danger-collapse__txt strong {
  display:block; color:var(--red); font-size:13px; font-weight:700;
  letter-spacing:-.01em; margin-bottom:2px;
}
.adm-danger-collapse__txt p {
  margin:0; color:var(--red-text); font-size:12px; line-height:1.5;
}

.adm-md { font-size:12.5px; color:var(--text1); line-height:1.5 }
.adm-md h1 { font-size:14px; font-weight:700; margin:var(--space-3) 0 5px; letter-spacing:-.01em }
.adm-md h2 { font-size:13px; font-weight:700; margin:10px 0 var(--space-1) }
.adm-md h3 { font-size:12.5px; font-weight:600; margin:var(--space-2) 0 3px }
.adm-md h4 { font-size:12px; font-weight:600; margin:7px 0 3px; color:var(--text2) }
.adm-md h5 { font-size:11.5px; font-weight:600; margin:6px 0 2px; color:var(--text2) }
.adm-md h6 { font-size:11px; font-weight:600; margin:5px 0 2px; color:var(--text2);text-transform:uppercase;letter-spacing:.4px }
.adm-md p { margin:0 0 6px }
.adm-md ul, .adm-md ol { margin:0 0 var(--space-2); padding-left:0; list-style-position:inside }
.adm-md li { margin-bottom:2px }
.adm-md ol > li::marker { font-weight:600 }
.adm-md strong { font-weight:700; color:var(--text1) }
.adm-md em { font-style:italic }
.adm-md code { background:var(--bg4); padding:1.5px 5px; border-radius:var(--r-xs); font-family:ui-monospace,SFMono-Regular,monospace; font-size:.88em; color:var(--text1) }
.adm-md pre { background:#0f172a; color:#e2e8f0; padding:9px 11px; border-radius:var(--r-2); overflow-x:auto; margin:6px 0; font-size:11px }
.adm-md pre code { background:none; padding:0; color:inherit }
.adm-md hr { border:0; border-top:1px solid #e2e8f0; margin:var(--space-2) 0 }
.adm-md blockquote { border-left:3px solid #cbd5e1; padding:3px 10px; color:var(--text2); margin:6px 0; font-size:12px }

.adm-md table { width:100%; border-collapse:collapse; margin:var(--space-2) 0; font-size:12px; }
.adm-md thead { background:transparent; }
.adm-md th { text-align:left; font-weight:700; font-size:10.5px; color:var(--text3); text-transform:uppercase; letter-spacing:.3px; padding:6px 10px; border-bottom:2px solid var(--border,#e5e7eb); }
.adm-md td { padding:6px 10px; border-bottom:1px solid var(--border,#e5e7eb); color:var(--text1); vertical-align:top; }
.adm-md tr:last-child td { border-bottom:0; }

body[data-app="admin"] .nav-section,
body[data-app="admin"] .sb-sec {
  cursor:pointer;
  display:flex;
  align-items:center;
  gap:6px;
  user-select:none;
  transition:color var(--t-base,.15s);
}
body[data-app="admin"] .nav-section:hover,
body[data-app="admin"] .sb-sec:hover { color:rgba(255,255,255,.85) }

body[data-app="admin"] .nav-section::before,
body[data-app="admin"] .sb-sec::before {
  content:"";
  width:3px;height:3px;
  border-radius:50%;
  background:currentColor;
  opacity:.8;
  display:inline-block;
  flex-shrink:0;
  transition:opacity .18s;
}
body[data-app="admin"] .nav-section.collapsed::before,
body[data-app="admin"] .sb-sec.collapsed::before { opacity:.35 }

body[data-app="admin"] .nav-item.sec-hidden,
body[data-app="admin"] .sb-link.sec-hidden,
body[data-app="admin"] .nav-sub-groep.sec-hidden { display:none }

html[data-theme="dark"] .adm-btn-ghost{background:var(--bg3);color:var(--text2);border-color:var(--border)}
html[data-theme="dark"] .adm-btn-ghost:hover{background:var(--bg4);border-color:var(--border2)}
html[data-theme="dark"] .adm-icon-btn{color:var(--text3)}
html[data-theme="dark"] .adm-icon-btn:hover{color:var(--text1);border-color:var(--border2)}
html[data-theme="dark"] .adm-icon-btn.danger{color:var(--text3);border-color:var(--border)}
html[data-theme="dark"] .adm-icon-btn.danger:hover{color:var(--red);border-color:rgba(239,68,68,.32)}
html[data-theme="dark"] .adm-danger-collapse{border-top-color:var(--border)}
html[data-theme="dark"] .adm-danger-collapse__body{background:rgba(239,68,68,.10)}
html[data-theme="dark"] .adm-danger-collapse__txt strong{color:#ef8276}

.inst-aanhef-opt{display:flex;align-items:flex-start;gap:7px;cursor:pointer;flex:1;padding:var(--space-2) var(--space-3);border:var(--bd);border-radius:var(--r-2);background:var(--bg2);color:var(--text1);font-size:12.5px;transition:all var(--t-base,.15s)}
.inst-aanhef-opt:hover{border-color:color-mix(in srgb,var(--p) 40%,var(--border))}
.inst-aanhef-opt[data-active="1"]{border-color:var(--p);background:color-mix(in srgb,var(--p) 12%,var(--bg2))}
html[data-theme="dark"] .inst-aanhef-opt{background:var(--bg3,#1e293b) !important;border-color:var(--border,#334155) !important;color:var(--text1,#e2e8f0) !important}
html[data-theme="dark"] .inst-aanhef-opt[data-active="1"]{background:color-mix(in srgb,var(--p) 18%,transparent) !important;border-color:var(--vorio-brand) !important}
html[data-theme="dark"] .inst-aanhef-opt *{color:var(--text1,#e2e8f0)}
html[data-theme="dark"] .inst-aanhef-opt small,
html[data-theme="dark"] .inst-aanhef-opt .hint,
html[data-theme="dark"] .inst-aanhef-opt em{color:var(--text3,#94a3b8)}
html[data-theme="dark"] .inst-aanhef-opt input[type=radio]{accent-color:var(--vorio-brand)}

html[data-theme="dark"] input[type=color]{border-color:var(--border,#334155);background:var(--bg3,#1e293b)}

@media (max-width:780px){
  .vf-row-head{display:none}
  .vf-row{grid-template-columns:1fr 1fr;gap:var(--space-2)}
  .vf-row .vf-omschr{grid-column:1 / -1}
  .vf-row .vf-totaal{grid-column:1 / -1;text-align:right;border-top:1px dashed var(--border);padding-top:6px}
  .vf-row .vf-del{position:absolute;top:6px;right:6px}
  .vf-totaals{align-self:stretch}
}

:root{ --vorio-brand:var(--p);
  --sa-radius:12px; --sa-radius-sm:8px;
  --sa-card-bg:var(--bg2); --sa-card-border:var(--bd);
  --sa-card-shadow:0 1px 4px rgba(0,0,0,.05); --sa-card-pad:22px 24px;
  --sa-gap:var(--space-3);
}

@media (min-width:701px){.v-tbl.sa-vtbl th.v-tcol,.v-tbl.sa-vtbl td.v-tcol{max-width:clamp(120px,20vw,320px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}

@media (max-width:980px){
  .off-form-wrap{grid-template-columns:1fr}
  .off-preview{position:static}
  .off-plans{grid-template-columns:1fr}
  .off-mod-grid{grid-template-columns:1fr}
}
@media(max-width:760px){.fin-split{grid-template-columns:1fr}}

.adm-info-zone { background:#f0f7ff; border:1px solid #cfe1fb; border-radius:var(--r); padding:14px 18px; margin-top:18px }
.adm-info-zone h3 { color:var(--vorio-brand); font-size:14px; font-weight:700; margin:0 0 6px; letter-spacing:-.01em }
.adm-info-zone p { color:var(--text2); font-size:12.5px; margin:0 0 var(--space-3); line-height:1.5 }
html[data-theme="dark"] .adm-info-zone { background:color-mix(in srgb,var(--p) 10%,transparent); border-color:color-mix(in srgb,var(--p) 30%,transparent) }
html[data-theme="dark"] .adm-info-zone h3 { color:#7eb1ff }

/* .adm-card = single source in vorio-admin-app.css */
@media (max-width:760px){
  .jr-page .jr-grid-3,
  .jr-page .jr-grid-2,
  .jr-page .jr-edit-grid,
  .jr-page .jr-modal-row{grid-template-columns:1fr}
}

@media(max-width:520px){

  .ob-linkres__rij{flex-direction:column;align-items:stretch}
  .ob-linkres__kopie{width:100%}
}

@media (max-width:780px){

  .v-data-rows.kantoor-fakt-tbl .v-dr-row.is-subtotal.is-subtotal,
  .v-data-rows.kantoor-fakt-tbl .v-dr-row.is-btw.is-btw,
  .v-data-rows.kantoor-fakt-tbl .v-dr-row.is-grand-total.is-grand-total{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:var(--space-3);
    min-height:0;
    padding:var(--space-1) 14px;
    margin-bottom:0;
    border:0;
    border-radius:0;
    background:none;
  }
  .v-data-rows.kantoor-fakt-tbl .v-dr-row.is-subtotal.is-subtotal{
    margin-top:2px;
    padding-top:var(--space-3);
    border-top:1.5px solid var(--border);
  }
  .v-data-rows.kantoor-fakt-tbl .v-dr-row.is-grand-total.is-grand-total{
    margin-top:6px;
    padding-top:10px;
    padding-bottom:2px;
    border-top:1px solid var(--border);
    font-weight:700;
  }

  .v-data-rows.kantoor-fakt-tbl .v-dr-row.is-subtotal.is-subtotal .kantoor-foot-lbl,
  .v-data-rows.kantoor-fakt-tbl .v-dr-row.is-btw.is-btw .kantoor-foot-lbl,
  .v-data-rows.kantoor-fakt-tbl .v-dr-row.is-grand-total.is-grand-total .kantoor-foot-lbl{
    text-align:left;
  }

  .vf-meta{
    gap:var(--space-3);
  }
  .vf-meta .field{
    flex:1 1 100%;
    min-width:0;
  }
  .vf-meta .vf-field-periode,
  .vf-meta .vf-field-status{
    min-width:0;
  }
  .vf-periode-grp{
    min-width:0;
  }

  .vf-row .vf-soort{
    grid-column:1 / -1;
  }
  .vf-row .vf-row-spacer{
    display:none;
  }
}

@media (max-width:700px){
  .sa-tbl-card{border:0;border-radius:0;box-shadow:none;background:transparent;overflow:visible}
  .v-scroll-x.sa-tbl-card{overflow:visible}
  table.v-tbl.sa-vtbl{display:block;width:100%;background:transparent;border:0;box-shadow:none;border-radius:0}
  table.v-tbl.sa-vtbl thead{display:none}
  table.v-tbl.sa-vtbl tbody{display:block}
  table.v-tbl.sa-vtbl tbody tr{
    display:block;height:auto;position:relative;
    border:var(--bd);border-radius:var(--r);
    margin:0 0 10px;padding:var(--space-3) 14px;background:var(--bg2);
  }
  html.density-compact table.v-tbl.sa-vtbl tbody tr{height:auto}
  table.v-tbl.sa-vtbl tbody tr td{
    display:block;width:auto;padding:3px 0;border:0;height:auto;
    white-space:normal;max-width:none;overflow:visible;text-align:left;
  }
  table.v-tbl.sa-vtbl tbody tr td.num{text-align:left}
  table.v-tbl.sa-vtbl tbody tr td[data-label]:before{
    content:attr(data-label);
    display:block;margin-bottom:1px;
    font-size:9.5px;font-weight:700;letter-spacing:.5px;
    text-transform:uppercase;color:var(--text3);
  }

  table.v-tbl.sa-vtbl tbody tr td:has(> .v-pill):before,
  table.v-tbl.sa-vtbl tbody tr td:has(> .badge):before{margin-bottom:6px}

  table.v-tbl.sa-vtbl tbody tr td.fct-cb,
  table.v-tbl.sa-vtbl tbody tr td.off-cb{
    position:absolute;top:10px;right:12px;width:auto;padding:0;
  }
  table.v-tbl.sa-vtbl tbody tr td.fct-cb:before,
  table.v-tbl.sa-vtbl tbody tr td.off-cb:before{display:none}

  table.v-tbl.sa-vtbl tbody tr td.right,
  table.v-tbl.sa-vtbl tbody tr td.off-acts-c{
    text-align:left;margin-top:var(--space-2);padding-top:10px;border-top:1px solid var(--border);
  }
  table.v-tbl.sa-vtbl tbody tr td.right>*,
  table.v-tbl.sa-vtbl tbody tr td.off-acts-c>*{justify-content:flex-start}
}
.v-tog-rij .v-tog-rij__titel{display:flex;align-items:center;gap:var(--space-2)}

.kb-tagrow{display:inline-flex;gap:var(--space-1);flex-wrap:wrap;margin-top:var(--space-1)}

.off-dt-lbl{display:none}
@media (max-width:640px){
  .off-dt-lbl{display:inline;color:var(--text3);font-weight:500}
  .v-data-rows .v-dr-row .off-dt-dup{display:none}
}
