:root{--bg-top:#0F1714;--bg-bottom:#070B0A;--bg-card:rgba(220,240,225,0.05);--bg-card-hover:rgba(220,240,225,0.08);--bg-card-active:rgba(211,165,47,0.08);--bg-input:rgba(0,0,0,0.32);--bg-elevated:rgba(220,240,225,0.08);--text:#E9EAE8;--text-strong:#F4F4F4;--text-muted:#B5ADA0;--text-label:#8A8378;--text-dim:#6E6760;--line:rgba(255,250,240,0.07);--line-soft:rgba(255,250,240,0.04);--line-strong:rgba(255,250,240,0.13);--gold:#D3A52F;--gold-bright:#E9C873;--gold-deep:#B5891F;--gold-tint:rgba(211,165,47,0.10);--gold-tint-strong:rgba(211,165,47,0.16);--gold-glow:rgba(233,200,115,0.28);--danger:#E07A5F;--danger-bright:#ED9079;--danger-tint:rgba(224,122,95,0.10);--danger-border:rgba(224,122,95,0.25);--danger-glow:rgba(224,122,95,0.25);--success:#8FB17A;--success-bright:#A8C896;--success-tint:rgba(143,177,122,0.12);--success-glow:rgba(143,177,122,0.3);--accent-green:#6FCF97;--accent-green-tint:rgba(111,207,151,0.12);--radius-sm:8px;--radius:14px;--shadow-sm:0 1px 2px rgba(0,0,0,0.2);--shadow:0 4px 16px rgba(0,0,0,0.25),0 1px 3px rgba(0,0,0,0.15);--shadow-lg:0 12px 32px rgba(0,0,0,0.35),0 2px 6px rgba(0,0,0,0.2);--shadow-gold:0 0 0 1px var(--gold),0 0 32px var(--gold-glow),0 12px 40px rgba(0,0,0,0.4);--shadow-danger:0 0 0 1px var(--danger),0 0 32px var(--danger-glow),0 12px 40px rgba(0,0,0,0.4);--font-mono:'JetBrains Mono',ui-monospace,monospace;--font-sans:'Manrope',system-ui,sans-serif}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scrollbar-gutter:stable}
body{font-family:var(--font-sans);background:linear-gradient(180deg,var(--bg-top) 0%,var(--bg-bottom) 100%);background-attachment:fixed;color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-0.005em;font-feature-settings:'ss01','cv11','tnum';min-height:100vh}
body::before{content:'';position:fixed;inset:-30%;pointer-events:none;z-index:1;background:radial-gradient(ellipse 75% 55% at 50% 15%,rgba(34,96,64,0.22),rgba(18,58,40,0.08) 44%,transparent 70%);filter:blur(10px);will-change:transform;animation:glowDrift 28s ease-in-out infinite alternate}
body::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:1;opacity:0.35;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' /><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0' /></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");mix-blend-mode:overlay}
.wrap{max-width:1320px;margin:0 auto;padding:0 40px;position:relative;z-index:2}
.mockup-notice{position:fixed;top:16px;left:50%;transform:translateX(-50%);background:rgba(31,38,34,0.95);border:1px solid var(--gold);border-radius:999px;padding:8px 16px;font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:var(--gold);z-index:50;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
header{padding:32px 0 24px;border-bottom:1px solid var(--line);margin-bottom:64px}
.header-inner{display:flex;justify-content:space-between;align-items:center;gap:32px}
.brand{display:flex;align-items:center;gap:16px}
.brand-logo-link{display:inline-flex;align-items:center;cursor:pointer}
.brand-logo{height:38px;width:auto;display:block}
.brand-divider{width:1px;height:28px;background:var(--line-strong)}
.brand-context{display:flex;flex-direction:column;gap:6px}
.context-label{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0.18em;color:var(--text-label);text-transform:uppercase;line-height:1}
.context-value{font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:0.04em;color:var(--text-strong);line-height:1}
.header-meta{display:flex;align-items:center;gap:12px}
.meta-pill{display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.1em;color:var(--text-muted);text-transform:uppercase;line-height:1;padding:10px 16px;background:var(--bg-elevated);border:1px solid var(--line);border-radius:999px}
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--accent-green);animation:pulse 2.4s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(143,177,122,0.5)}50%{box-shadow:0 0 0 6px rgba(143,177,122,0)}}
.refresh-btn{background:var(--bg-elevated);border:1px solid var(--line);padding:10px 16px;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.1em;color:var(--text-muted);text-transform:uppercase;cursor:pointer;transition:all 0.18s ease;line-height:1;display:flex;align-items:center;gap:9px;border-radius:999px}
.refresh-btn:hover{border-color:var(--gold);color:var(--gold);background:var(--gold-tint)}
.refresh-btn svg{width:12px;height:12px}
/* Tool-tabs in de brand (naast "Platform Beheer"): wisselt Retentie <-> 3CX.
   Compacte segmented-control, op gelijke hoogte (~33px) als de .meta-pill rechts. */
.header-tabs{display:inline-flex;gap:4px;background:var(--bg-elevated);border:1px solid var(--line);border-radius:999px;padding:2px}
.header-tab{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--text-muted);font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:all 0.18s ease;line-height:1;white-space:nowrap}
.header-tab svg{width:12px;height:12px}
.header-tab:hover:not(.is-active){color:var(--text-strong);background:rgba(212,175,85,0.06)}
.header-tab.is-active{background:var(--gold);color:#1a1a1a;border-color:var(--gold-deep)}
.page-header{display:grid;grid-template-columns:1fr auto;gap:80px;align-items:end;margin-bottom:56px}
.page-header>div{align-self:start}
.page-eyebrow{font-family:var(--font-mono);font-size:11.5px;font-weight:600;letter-spacing:0.22em;color:var(--gold);text-transform:uppercase;margin-bottom:18px;line-height:1;display:flex;align-items:center;gap:12px}
.page-eyebrow::before{content:'';width:28px;height:1.5px;background:var(--gold)}
.page-title{font-family:var(--font-sans);font-weight:300;font-size:52px;line-height:1.05;letter-spacing:-0.025em;color:var(--text-strong)}
.page-title strong{font-weight:600}
.page-description{color:var(--text-muted);font-size:14.5px;max-width:320px;line-height:1.6;font-weight:400}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:64px}
.stat{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);padding:24px 26px;box-shadow:var(--shadow-sm);position:relative;transition:all 0.2s ease}
.stat:hover{background:var(--bg-card-hover);border-color:var(--line-strong)}
.stat.primary{background:linear-gradient(180deg,var(--gold-tint-strong) 0%,var(--gold-tint) 100%);border-color:rgba(212,175,85,0.28)}
.stat-label{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:0.18em;color:var(--text-label);text-transform:uppercase;margin-bottom:16px;line-height:1}
.stat.primary .stat-label{color:var(--gold)}
.stat-value{font-family:var(--font-mono);font-weight:500;font-size:42px;line-height:1;letter-spacing:-0.03em;color:var(--text-strong);font-variant-numeric:tabular-nums;margin-bottom:12px;transition:transform 0.4s cubic-bezier(0.4,0,0.2,1)}
.stat-value.bumped{animation:bump 0.5s ease}
@keyframes bump{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
.stat-detail{font-family:var(--font-mono);font-size:11.5px;font-weight:500;letter-spacing:0.04em;color:var(--text-muted);line-height:1.4}
.filter-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;gap:24px;flex-wrap:wrap}
.section-title{font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:0.18em;color:var(--text-muted);text-transform:uppercase;line-height:1;display:flex;align-items:center;gap:14px}
.section-title::before{content:'';width:20px;height:1.5px;background:var(--text-label)}
.filter-options{display:flex;gap:4px;background:var(--bg-elevated);border:1px solid var(--line);border-radius:999px;padding:4px}
.filter-btn{background:transparent;border:none;padding:10px 18px;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.1em;color:var(--text-muted);text-transform:uppercase;cursor:pointer;transition:all 0.18s ease;line-height:1;border-radius:999px;display:flex;align-items:center;gap:8px}
.filter-btn.active{background:var(--text-strong);color:var(--bg-bottom)}
.filter-btn:hover:not(.active){color:var(--text-strong);background:rgba(255,250,240,0.06)}
.filter-btn .count{font-size:10.5px;opacity:0.6;font-weight:700}
.filter-btn.active .count{opacity:0.7}
.queue{display:flex;flex-direction:column;gap:14px;margin-bottom:80px;min-height:200px}
.card{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);transition:all 0.3s cubic-bezier(0.4,0,0.2,1);position:relative;box-shadow:var(--shadow);overflow:hidden;opacity:0;transform:translateY(8px);animation:cardEnter 0.5s ease forwards}
@keyframes cardEnter{to{opacity:1;transform:translateY(0)}}
.card.removing{animation:cardRemove 0.55s cubic-bezier(0.4,0,0.2,1) forwards}
@keyframes cardRemove{0%{opacity:1;transform:translateX(0) scale(1);max-height:800px;margin-bottom:14px}50%{opacity:0;transform:translateX(60px) scale(0.96)}100%{opacity:0;transform:translateX(60px) scale(0.96);max-height:0;margin-bottom:0;padding:0;border-width:0}}
.card.hidden-by-filter{display:none !important}
.card:hover:not(.confirming-toewijzen):not(.confirming-afwijzen):not(.removing){background:var(--bg-card-hover);border-color:var(--line-strong);box-shadow:var(--shadow-lg);transform:translateY(-1px)}
.card.confirming-toewijzen{background:var(--bg-card-active);box-shadow:var(--shadow-gold);border-color:transparent}
.card.confirming-afwijzen{background:rgba(224,122,95,0.05);box-shadow:var(--shadow-danger);border-color:transparent}
.card-grid{display:grid;grid-template-columns:minmax(280px,1.1fr) minmax(280px,1fr) 300px;gap:44px;padding:28px 32px;align-items:start}
.col-identity{display:flex;flex-direction:column}
.reden-tag-row{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.reden-tag{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:var(--gold-bright);padding:7px 13px;background:var(--gold-tint);border:1px solid rgba(212,175,85,0.28);align-self:flex-start;line-height:1;border-radius:999px}
.reden-tag.dedup{color:var(--danger-bright);background:var(--danger-tint);border-color:var(--danger-border)}
.reden-tag.geen-pers{color:#A89BD9;background:rgba(160,148,217,0.10);border-color:rgba(160,148,217,0.28)}
.reden-tag.onbekend{color:#9DC97A;background:rgba(157,201,122,0.10);border-color:rgba(157,201,122,0.28)}
.reden-tag::before{content:'';width:6px;height:6px;background:currentColor;border-radius:50%}
.time-indicator{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:0.1em;color:var(--text-dim);text-transform:uppercase;line-height:1}
.time-indicator.urgent{color:var(--danger-bright)}
.company-name{font-family:var(--font-sans);font-weight:600;font-size:19.5px;line-height:1.3;letter-spacing:-0.014em;color:var(--text-strong);margin-bottom:10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-word}
.contact-line{font-family:var(--font-mono);font-size:12.5px;font-weight:500;color:var(--text-muted);line-height:1.5}
.contact-line .sep{color:var(--text-dim);margin:0 10px}
.col-meta{display:grid;grid-template-columns:1fr 1fr;gap:22px 36px}
.meta-block{display:flex;flex-direction:column;gap:8px}
.meta-block-label{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-label);line-height:1}
.meta-block-value{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--text-strong);line-height:1;font-variant-numeric:tabular-nums}
.meta-block-value.muted{color:var(--text-muted);font-weight:500}
.col-actions{display:flex;flex-direction:column;gap:10px;transition:opacity 0.25s ease}
.agent-select-wrap{position:relative}
.agent-select{width:100%;background:var(--bg-input);border:1px solid var(--line-strong);padding:14px 40px 14px 16px;font-family:var(--font-sans);font-size:13.5px;font-weight:600;color:var(--text-strong);cursor:pointer;appearance:none;line-height:1;transition:all 0.18s ease;border-radius:var(--radius-sm)}
.agent-select:hover,.agent-select:focus{border-color:var(--gold);outline:none;background:rgba(212,175,85,0.05)}
.agent-select option{background:var(--bg-bottom);color:var(--text)}
.agent-select.has-value{border-color:var(--gold);background:rgba(212,175,85,0.05)}
.select-arrow{position:absolute;right:16px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--text-muted);width:13px;height:13px}
.actions-row{display:grid;grid-template-columns:1.6fr 1fr;gap:8px}
.btn{font-family:var(--font-sans);font-size:13px;font-weight:700;letter-spacing:0.01em;cursor:pointer;transition:all 0.18s ease;text-align:center;padding:14px 16px;line-height:1;border:1px solid;border-radius:var(--radius-sm)}
.btn-primary{background:linear-gradient(180deg,var(--gold-bright) 0%,var(--gold) 100%);color:var(--bg-bottom);border-color:var(--gold-deep);box-shadow:0 1px 0 rgba(255,255,255,0.18) inset}
.btn-primary:hover:not(:disabled){background:linear-gradient(180deg,#F0CE7E 0%,var(--gold-bright) 100%);box-shadow:0 0 24px var(--gold-glow),0 1px 0 rgba(255,255,255,0.25) inset;transform:translateY(-1px)}
.btn-primary:disabled{background:linear-gradient(180deg,rgba(212,175,85,0.3) 0%,rgba(168,132,47,0.3) 100%);color:rgba(0,0,0,0.4);border-color:rgba(168,132,47,0.3);cursor:not-allowed;transform:none;box-shadow:none}
.btn-secondary{background:var(--bg-input);color:var(--text-muted);border-color:var(--line-strong)}
.btn-secondary:hover{color:var(--danger-bright);border-color:var(--danger);background:var(--danger-tint)}
.btn-danger{background:var(--danger-tint);color:var(--danger-bright);border-color:var(--danger)}
.btn-danger:hover:not(:disabled){background:rgba(224,122,95,0.18);color:#fff;box-shadow:0 0 24px var(--danger-glow);transform:translateY(-1px)}
.btn-danger:disabled{background:var(--bg-input);color:var(--text-dim);border-color:var(--line-strong);cursor:not-allowed;transform:none;box-shadow:none}
.btn-ghost{background:transparent;color:var(--text-muted);border-color:var(--line-strong)}
.btn-ghost:hover{color:var(--text-strong);background:rgba(255,250,240,0.04)}
.detail-panel{border-top:1px solid var(--line-soft);padding:20px 32px 24px;background:rgba(224,122,95,0.05);display:flex;align-items:flex-start;gap:14px}
.detail-panel-onbekend{background:rgba(157,201,122,0.05)}
.detail-panel-onbekend .detail-icon{color:#9DC97A}
.detail-panel-geen-pers{background:rgba(160,148,217,0.05)}
.detail-panel-geen-pers .detail-icon{color:#A89BD9}
.detail-icon{flex-shrink:0;width:16px;height:16px;color:var(--danger-bright);margin-top:2px}
.detail-text{font-family:var(--font-sans);font-size:14px;font-weight:500;color:var(--text);line-height:1.65}
.detail-text strong{color:var(--text-strong);font-weight:700}
.detail-text .mono{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--text-strong);background:var(--bg-input);padding:3px 8px;border-radius:5px;border:1px solid var(--line)}
.detail-text .judge{display:block;margin-top:14px;padding-top:14px;border-top:1px dashed rgba(224,122,95,0.2);color:var(--text-muted);font-size:13.5px}
.detail-text .judge strong{color:var(--gold-bright)}
.confirmation-panel{display:none;padding:28px 32px;border-top:1px solid var(--line-soft);background:rgba(212,175,85,0.04);animation:slideDown 0.35s cubic-bezier(0.4,0,0.2,1)}
.card.confirming-toewijzen .col-actions,.card.confirming-afwijzen .col-actions{opacity:0.35;pointer-events:none}
.card.confirming-toewijzen .confirmation-panel.toewijzen,.card.confirming-afwijzen .confirmation-panel.afwijzen{display:block}
.card.confirming-afwijzen .confirmation-panel.afwijzen{background:rgba(224,122,95,0.05)}
@keyframes slideDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}
.confirm-header{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.confirm-icon{width:32px;height:32px;border-radius:999px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.confirm-icon.gold{background:var(--gold-tint-strong);color:var(--gold-bright)}
.confirm-icon.danger{background:var(--danger-tint);color:var(--danger-bright)}
.confirm-icon svg{width:16px;height:16px}
.confirm-question{font-family:var(--font-sans);font-size:16px;font-weight:600;color:var(--text-strong);line-height:1.4}
.confirm-question .highlight{color:var(--gold-bright)}
.confirm-question.danger .highlight{color:var(--danger-bright)}
.confirm-detail{font-family:var(--font-sans);font-size:13.5px;color:var(--text-muted);line-height:1.55;margin-bottom:20px;margin-left:44px}
.confirm-textarea-wrap{margin-left:44px;margin-bottom:18px}
.confirm-textarea-label{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-label);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.confirm-textarea-label .required{color:var(--danger-bright)}
.confirm-textarea{width:100%;background:var(--bg-input);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:12px 14px;font-family:var(--font-sans);font-size:13.5px;color:var(--text-strong);resize:vertical;min-height:78px;line-height:1.5;transition:border-color 0.18s ease}
.confirm-textarea:focus{outline:none;border-color:var(--danger);background:rgba(224,122,95,0.04)}
.confirm-textarea::placeholder{color:var(--text-dim)}
.confirm-char-count{font-family:var(--font-mono);font-size:10.5px;font-weight:500;color:var(--text-dim);text-align:right;margin-top:6px;letter-spacing:0.04em}
.confirm-char-count.valid{color:var(--success-bright)}
.confirm-actions{display:flex;gap:10px;margin-left:44px}
.confirm-actions .btn{flex:0 0 auto;min-width:140px}
.confirm-actions .btn-cancel{margin-right:auto}
.empty-state{display:none;margin-top:24px;padding:80px 40px;background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);text-align:center;box-shadow:var(--shadow-sm);animation:fadeIn 0.5s ease}
.empty-state.visible{display:block}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.empty-icon{width:64px;height:64px;margin:0 auto 24px;border-radius:999px;background:var(--gold-tint);border:1px solid rgba(212,175,85,0.22);display:flex;align-items:center;justify-content:center;color:var(--gold-bright)}
.empty-icon svg{width:26px;height:26px}
.empty-title{font-family:var(--font-sans);font-weight:300;font-size:28px;line-height:1.2;letter-spacing:-0.02em;color:var(--text-strong);margin-bottom:10px}
.empty-title strong{font-weight:600}
.empty-description{font-family:var(--font-sans);font-size:14.5px;color:var(--text-muted);line-height:1.6;max-width:380px;margin:0 auto}
.toast-container{position:fixed;bottom:32px;right:32px;z-index:100;display:flex;flex-direction:column;gap:12px;max-width:400px;pointer-events:none}
.toast{background:linear-gradient(180deg,rgba(31,38,34,0.98) 0%,rgba(19,24,26,0.98) 100%);border:1px solid var(--success);border-radius:var(--radius);padding:16px 20px;box-shadow:0 0 0 1px var(--success-glow),0 12px 40px rgba(0,0,0,0.5);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);display:flex;align-items:flex-start;gap:14px;min-width:320px;animation:toastSlideIn 0.4s cubic-bezier(0.4,0,0.2,1);pointer-events:auto}
.toast.danger{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger-glow),0 12px 40px rgba(0,0,0,0.5)}
.toast.removing{animation:toastSlideOut 0.4s cubic-bezier(0.4,0,0.2,1) forwards}
@keyframes toastSlideIn{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}
@keyframes toastSlideOut{to{opacity:0;transform:translateX(40px);max-height:0;padding-top:0;padding-bottom:0;margin-top:0}}
.toast-icon{width:24px;height:24px;border-radius:999px;background:var(--success-tint);color:var(--success-bright);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.toast.danger .toast-icon{background:var(--danger-tint);color:var(--danger-bright)}
.toast-icon svg{width:14px;height:14px}
.toast-content{flex:1;min-width:0}
.toast-title{font-family:var(--font-sans);font-size:13.5px;font-weight:700;color:var(--text-strong);line-height:1.3;margin-bottom:4px}
.toast-message{font-family:var(--font-sans);font-size:12.5px;color:var(--text-muted);line-height:1.5}
.toast-close{background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:color 0.15s ease}
.toast-close:hover{color:var(--text-strong)}
.toast-close svg{width:14px;height:14px}
.footer{border-top:1px solid var(--line);padding:32px 0 40px;display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.13em;color:var(--text-label);text-transform:uppercase}
.footer span{line-height:1}
@media(max-width:1100px){.card-grid{grid-template-columns:1fr;gap:28px}.col-actions{border-top:1px solid var(--line-soft);padding-top:22px}.stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.wrap{padding:0 20px}.page-header{grid-template-columns:1fr;gap:24px}.page-title{font-size:38px}.col-meta{grid-template-columns:1fr;gap:18px}.header-inner{flex-wrap:wrap;row-gap:14px}.header-meta{gap:10px;flex-wrap:wrap;justify-content:flex-start}.nav-switch{flex-wrap:wrap}.confirm-detail,.confirm-actions,.confirm-textarea-wrap{margin-left:0}.toast-container{left:16px;right:16px}.toast{min-width:0}}
/* Smal scherm (telefoon): topbalk + brand mogen niet van het scherm lopen. De
   brand-rij (logo/context/tool-tabs) mag wrappen, de datum-pill klapt weg en
   'Vernieuwen' wordt icoon-only; het user-menu blijft altijd bereikbaar. Raakt
   alleen <=480px, desktop blijft ongewijzigd. */
@media(max-width:480px){.brand{flex-wrap:wrap;row-gap:12px}.header-meta{width:100%;gap:8px}.header-meta>.meta-pill:not(.user-pill){display:none}.refresh-btn .refresh-label{display:none}.refresh-btn{padding:10px 12px}.refresh-btn svg{width:13px;height:13px}.user-menu{margin-left:auto}}
/* === MODAL === */
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.65);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:200;display:none;align-items:flex-start;justify-content:center;padding:48px 24px;overflow-y:auto;animation:fadeIn 0.25s ease}
.modal-backdrop.visible{display:flex}
.modal{background:linear-gradient(180deg,rgba(31,38,34,0.98) 0%,rgba(19,24,26,0.98) 100%);border:1px solid var(--line-strong);border-radius:var(--radius);width:100%;max-width:880px;box-shadow:0 24px 64px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.04);position:relative;overflow:hidden;animation:modalIn 0.3s cubic-bezier(0.4,0,0.2,1)}
@keyframes modalIn{from{opacity:0;transform:translateY(20px) scale(0.97)}to{opacity:1;transform:translateY(0) scale(1)}}
.modal-header{padding:28px 32px 20px;border-bottom:1px solid var(--line);position:relative}
.modal-eyebrow{font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.22em;color:var(--gold);text-transform:uppercase;margin-bottom:14px;line-height:1;display:flex;align-items:center;gap:12px}
.modal-eyebrow::before{content:'';width:24px;height:1.5px;background:var(--gold)}
.modal-title{font-family:var(--font-sans);font-weight:300;font-size:30px;line-height:1.1;letter-spacing:-0.02em;color:var(--text-strong)}
.modal-title strong{font-weight:600}
.modal-close{position:absolute;top:24px;right:24px;width:36px;height:36px;border-radius:999px;background:var(--bg-elevated);border:1px solid var(--line);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 0.18s ease}
.modal-close:hover{color:var(--text-strong);border-color:var(--line-strong);background:rgba(255,250,240,0.08)}
.modal-close svg{width:14px;height:14px}
.modal-tabs{display:flex;gap:0;padding:0 32px;border-bottom:1px solid var(--line);background:rgba(0,0,0,0.15)}
.modal-tab{background:transparent;border:none;padding:16px 20px;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.13em;color:var(--text-muted);text-transform:uppercase;cursor:pointer;transition:all 0.18s ease;line-height:1;display:flex;align-items:center;gap:10px;border-bottom:2px solid transparent;margin-bottom:-1px}
.modal-tab.active{color:var(--gold);border-bottom-color:var(--gold)}
.modal-tab:hover:not(.active){color:var(--text-strong)}
.modal-tab .count{font-size:10.5px;opacity:0.6;font-weight:700;font-variant-numeric:tabular-nums}
.modal-tab.active .count{opacity:1}
.modal-toolbar{padding:18px 32px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:16px;flex-wrap:wrap}
.modal-toolbar-label{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:0.18em;color:var(--text-label);text-transform:uppercase}
.date-filter{display:flex;gap:4px;background:var(--bg-elevated);border:1px solid var(--line);border-radius:999px;padding:3px}
.date-filter-btn{background:transparent;border:none;padding:8px 14px;font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:0.1em;color:var(--text-muted);text-transform:uppercase;cursor:pointer;transition:all 0.18s ease;line-height:1;border-radius:999px}
.date-filter-btn.active{background:var(--text-strong);color:var(--bg-bottom)}
.date-filter-btn:hover:not(.active){color:var(--text-strong)}
.modal-body{padding:8px 0;max-height:calc(100vh - 280px);overflow-y:auto}
.modal-body::-webkit-scrollbar{width:8px}
.modal-body::-webkit-scrollbar-track{background:transparent}
.modal-body::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:4px}
.modal-body::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}
.history-item{padding:18px 32px;border-bottom:1px solid var(--line-soft);display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:start;transition:background 0.15s ease}
.history-item:hover{background:rgba(255,250,240,0.03)}
.history-item:last-child{border-bottom:none}
.history-icon{width:32px;height:32px;border-radius:999px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px}
.history-icon.success{background:var(--success-tint);color:var(--success-bright)}
.history-icon.danger{background:var(--danger-tint);color:var(--danger-bright)}
.history-icon svg{width:14px;height:14px}
.history-content{min-width:0}
.history-bedrijf{font-family:var(--font-sans);font-size:15px;font-weight:600;color:var(--text-strong);margin-bottom:4px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.history-meta{font-family:var(--font-mono);font-size:11.5px;font-weight:500;color:var(--text-muted);line-height:1.5}
.history-meta .sep{color:var(--text-dim);margin:0 8px}
.history-meta .agent-name{color:var(--gold-bright);font-weight:600}
.history-meta .door-name{color:var(--text);font-weight:600;font-style:italic}
.history-reason{margin-top:8px;padding:10px 12px;background:var(--bg-input);border-radius:var(--radius-sm);border:1px solid var(--line);font-family:var(--font-sans);font-size:13px;color:var(--text);line-height:1.5;font-weight:500}
.history-reason::before{content:'Reden: ';font-family:var(--font-mono);font-size:9.5px;font-weight:600;letter-spacing:0.15em;color:var(--danger-bright);text-transform:uppercase;display:block;margin-bottom:6px}
.history-time{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--text-dim);text-align:right;flex-shrink:0;line-height:1;letter-spacing:0.04em;padding-top:10px}
.history-empty{padding:64px 32px;text-align:center}
.history-empty-text{font-family:var(--font-sans);font-size:14px;color:var(--text-muted);line-height:1.5}
.stat.clickable{cursor:pointer}
.stat.clickable:hover{background:var(--bg-card-hover);border-color:var(--line-strong);transform:translateY(-1px)}
.stat.primary.clickable:hover{background:linear-gradient(180deg,rgba(212,175,85,0.22) 0%,rgba(212,175,85,0.14) 100%)}
.stat.clickable .stat-label::after{content:' →';opacity:0;transition:opacity 0.18s ease;font-family:var(--font-sans);margin-left:4px;font-weight:700}
.stat.clickable:hover .stat-label::after{opacity:0.6}
@media(max-width:720px){.modal-backdrop{padding:24px 12px}.modal-tabs{padding:0 16px;overflow-x:auto}.modal-tab{padding:14px 14px;flex-shrink:0}.modal-toolbar{padding:14px 16px}.history-item{padding:16px;grid-template-columns:auto 1fr;gap:12px}.history-time{grid-column:1 / -1;text-align:left;padding-top:0;padding-left:44px}}
.dev-banner{background:linear-gradient(180deg,rgba(212,175,85,0.12) 0%,rgba(212,175,85,0.06) 100%);border:1px solid rgba(212,175,85,0.3);border-radius:var(--radius);padding:14px 20px;margin-bottom:32px;display:flex;align-items:center;gap:14px;font-family:var(--font-sans);font-size:13.5px;color:var(--text-strong);line-height:1.5}
.dev-banner-icon{width:28px;height:28px;border-radius:999px;background:var(--gold-tint-strong);color:var(--gold-bright);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dev-banner-icon svg{width:14px;height:14px}
.dev-banner strong{color:var(--gold-bright);font-weight:700}
/* Bewaking-banner: waarschuwt als de opt-in-scan of -telling stilligt. Rood-
   accent (i.p.v. het goud van dev-banner) zodat het als een echte alert leest. */
.oi-bewaking-banner{background:linear-gradient(180deg,rgba(212,80,60,0.13) 0%,rgba(212,80,60,0.05) 100%);border:1px solid rgba(212,80,60,0.38);border-radius:var(--radius);padding:12px 18px;margin-bottom:16px;display:flex;align-items:center;gap:12px;font-family:var(--font-sans);font-size:13.5px;color:var(--text-strong);line-height:1.5}
.oi-bewaking-icon{font-size:18px;line-height:1;color:#d4503c;flex-shrink:0}
.oi-bewaking-banner strong{color:#d4503c;font-weight:700}
/* === CUSTOM DROPDOWN === */
.dd-wrap{position:relative;width:100%}
.dd-trigger{width:100%;background:var(--bg-input);border:1px solid var(--line-strong);padding:14px 40px 14px 16px;font-family:var(--font-sans);font-size:13.5px;font-weight:600;color:var(--text-strong);cursor:pointer;line-height:1;transition:all 0.18s ease;border-radius:var(--radius-sm);text-align:left;display:flex;align-items:center;gap:8px;position:relative}
.dd-trigger:hover,.dd-trigger:focus,.dd-wrap.open .dd-trigger{border-color:var(--gold);outline:none;background:rgba(212,175,85,0.05)}
.dd-wrap.has-value .dd-trigger{border-color:var(--gold);background:rgba(212,175,85,0.05)}
.dd-trigger-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dd-trigger-placeholder{color:var(--text-muted);font-weight:500}
.dd-trigger-arrow{position:absolute;right:16px;top:50%;transform:translateY(-50%);color:var(--text-muted);width:13px;height:13px;transition:transform 0.2s ease}
.dd-wrap.open .dd-trigger-arrow{transform:translateY(-50%) rotate(180deg);color:var(--gold)}
.dd-menu-portal{position:fixed;z-index:9999;background:linear-gradient(180deg,rgba(31,38,34,0.98) 0%,rgba(19,24,26,0.98) 100%);border:1px solid var(--line-strong);border-radius:var(--radius-sm);box-shadow:0 12px 40px rgba(0,0,0,0.5),0 0 0 1px rgba(212,175,85,0.15);max-height:280px;overflow-y:auto;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:6px}
.dd-menu-portal.open-down{animation:ddSlideDown 0.18s cubic-bezier(0.4,0,0.2,1)}
.dd-menu-portal.open-up{animation:ddSlideUp 0.18s cubic-bezier(0.4,0,0.2,1)}
.dd-menu-portal::-webkit-scrollbar{width:6px}
.dd-menu-portal::-webkit-scrollbar-track{background:transparent}
.dd-menu-portal::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:3px}
.dd-menu-portal::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}
@keyframes ddSlideDown{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
@keyframes ddSlideUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.dd-wrap.open .dd-menu{display:block}
.dd-option{padding:11px 14px;font-family:var(--font-sans);font-size:13.5px;font-weight:500;color:var(--text);cursor:pointer;border-radius:6px;transition:all 0.12s ease;line-height:1.3;display:flex;align-items:center;gap:8px}
.dd-option:hover{background:var(--gold-tint);color:var(--gold-bright)}
.dd-option.selected{background:var(--gold-tint-strong);color:var(--gold-bright);font-weight:600}
.dd-option.selected::before{content:'';width:5px;height:5px;background:var(--gold-bright);border-radius:50%;flex-shrink:0}
.dd-option.placeholder-opt{color:var(--text-muted);font-style:italic;font-weight:500}
.dd-option.placeholder-opt::before{display:none}
.botlog-btn{display:inline-flex;align-items:center;gap:8px;background:transparent;border:1px solid var(--line-strong);color:var(--text-strong);font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.13em;text-transform:uppercase;padding:9px 16px;border-radius:999px;cursor:pointer;text-decoration:none;transition:all 0.18s ease;line-height:1}
.botlog-btn:hover{border-color:var(--gold);color:var(--gold-bright);background:rgba(212,175,85,0.06)}
.botlog-btn svg{width:13px;height:13px}
.user-menu{position:relative;display:inline-block}
.user-pill{cursor:pointer;border:1px solid var(--line);background:var(--bg-elevated);font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.1em;color:var(--text-strong);text-transform:uppercase;padding:10px 16px;border-radius:999px;display:flex;align-items:center;gap:10px;line-height:1;transition:all 0.18s ease}
.user-pill:hover{border-color:var(--gold);color:var(--gold-bright)}
.user-pill .live-dot{width:7px;height:7px;border-radius:50%;background:var(--success-bright);box-shadow:0 0 8px var(--success-bright)}
.user-pill-arrow{width:11px;height:11px;margin-left:2px;transition:transform 0.18s ease}
.user-menu.open .user-pill-arrow{transform:rotate(180deg)}
.user-menu.open .user-pill{cursor:pointer;border:1px solid var(--line);background:var(--bg-elevated);font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.1em;color:var(--text-strong);text-transform:uppercase;padding:10px 16px;border-radius:999px;display:flex;align-items:center;gap:10px;line-height:1;transition:all 0.18s ease}
.user-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:240px;background:linear-gradient(var(--bg-elevated),var(--bg-elevated)),var(--bg-top);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:0 24px 48px -12px rgba(0,0,0,0.7);overflow:hidden;opacity:0;visibility:hidden;transform:translateY(-4px);transition:all 0.18s ease;z-index:1000}
.user-menu.open .user-dropdown{opacity:1;visibility:visible;transform:translateY(0)}
.user-dropdown-info{padding:16px 20px;border-bottom:1px solid var(--line-soft)}
.user-dropdown-name{font-family:var(--font-sans);font-size:15px;font-weight:600;color:var(--text-strong);line-height:1.2;margin-bottom:4px}
.user-dropdown-username{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);letter-spacing:0.08em}
.user-dropdown-action{display:flex;align-items:center;gap:10px;padding:14px 20px;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.16em;color:var(--text-strong);text-transform:uppercase;text-decoration:none;transition:all 0.15s ease;cursor:pointer;background:transparent;border:none;width:100%;text-align:left}
.user-dropdown-action:hover{background:rgba(212,175,85,0.08);color:var(--gold-bright)}
.user-dropdown-action svg{width:14px;height:14px}
/* Geblokkeerde agent - oranje styling */
.tag.geblokkeerd{background:rgba(255,140,40,0.12);color:#ff8c28;border-color:rgba(255,140,40,0.4)}
.detail-panel-geblokkeerd{background:rgba(255,140,40,0.08);border-color:rgba(255,140,40,0.35)}
.detail-panel-geblokkeerd .detail-icon{color:#ff8c28}
.detail-panel-geblokkeerd strong{color:#ff8c28}
.filter-btn[data-filter="geblokkeerde_agent"].active{border-color:rgba(255,140,40,0.5);color:#ff8c28}
.filter-btn[data-filter="geblokkeerde_agent"].active .count{background:rgba(255,140,40,0.18);color:#ff8c28}
.nav-group{display:inline-flex;align-items:stretch;background:var(--bg-elevated);border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px}
.nav-group .botlog-btn{border:1px solid transparent;background:transparent;padding:7px 14px}
.nav-group .botlog-btn:hover{border-color:transparent;background:rgba(212,175,85,0.08);color:var(--gold-bright)}
.nav-group .botlog-btn.is-active{background:var(--gold);color:#1a1a1a;border-color:var(--gold)}
.nav-group .botlog-btn.is-active:hover{background:var(--gold-bright);color:#1a1a1a;border-color:var(--gold-bright)}

/* === Gedeelde content-container: uniforme breedte (via .wrap) + verticaal ritme === */
.page-main{padding:32px 0 64px}
/* Zichtbare variant van de gedeelde empty-state (bv. stub-pagina's); de
   dashboard-empty-state blijft display:none tot JS 'm toont. */
.empty-state.is-visible{display:block;margin-top:0}

/* === Twee-niveau navigatie: versie-schakelaar + submenu (Doel B) === */
.nav-shell{display:flex;flex-direction:column;gap:14px;margin-bottom:8px}
.nav-switch{display:inline-flex;gap:4px;background:var(--bg-elevated);border:1px solid var(--line);border-radius:999px;padding:4px;align-self:flex-start}
.nav-switch-btn{display:inline-flex;align-items:center;gap:9px;padding:9px 18px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--text-muted);font-family:var(--font-mono);font-size:11.5px;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:all 0.18s ease;line-height:1}
.nav-switch-btn svg{width:15px;height:15px}
.nav-switch-btn:hover:not(.is-active){color:var(--text-strong);background:rgba(212,175,85,0.06)}
.nav-switch-btn.is-active{background:var(--gold);color:#1a1a1a;border-color:var(--gold-deep)}
.nav-sub{display:inline-flex;align-self:flex-start}
.nav-row{position:relative}
.nav-rechts{position:absolute;top:0;right:0}
@media(max-width:900px){.nav-rechts{position:static;margin-top:18px}}

/* === Select Partner: driftende groene glow === */
@keyframes glowDrift{0%{transform:translate3d(-20%,-3%,0) scale(1.05)}100%{transform:translate3d(20%,3%,0) scale(1.18)}}
@media (prefers-reduced-motion: reduce){body::before{animation:none;transform:translate3d(0,0,0) scale(1.08);opacity:0.85}}

/* === Campagnevuller import-detail: KPI-tegels + 'geplaatst per dag'-tabel ===
   Gebruikt door lijstenbeheer.html via de macro's in _plaatsing_detail.html. */
.ph-tiles{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.ph-tile{flex:1 1 120px;background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px}
.ph-tile-label{font-family:var(--font-mono);font-size:9.5px;font-weight:600;letter-spacing:0.16em;color:var(--text-label);text-transform:uppercase;line-height:1;margin-bottom:10px}
.ph-tile-value{font-family:var(--font-mono);font-weight:500;font-size:26px;line-height:1;letter-spacing:-0.02em;color:var(--text-strong);font-variant-numeric:tabular-nums}
.ph-tile.is-geplaatst .ph-tile-value{color:var(--gold-bright)}
.ph-tile.is-mislukt .ph-tile-value{color:#E0796B}
.ph-table-wrap{margin-top:22px;overflow-x:auto}
table.ph-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
table.ph-table th{font-family:var(--font-mono);font-size:9.5px;font-weight:600;letter-spacing:0.14em;color:var(--text-label);text-transform:uppercase;text-align:right;padding:0 0 12px;border-bottom:1px solid var(--line)}
table.ph-table th:first-child{text-align:left}
table.ph-table td{font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--text-muted);text-align:right;padding:11px 0;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
table.ph-table td:first-child{text-align:left;color:var(--text-strong);font-weight:600;letter-spacing:0.02em}
table.ph-table tr:last-child td{border-bottom:none}
table.ph-table td.is-geplaatst{color:var(--gold-bright)}
table.ph-table td.is-mislukt{color:#E0796B}
table.ph-table td.is-zero{color:var(--text-dim)}
.ph-empty-rows{font-family:var(--font-mono);font-size:12px;color:var(--text-dim);padding:14px 0;letter-spacing:0.04em}

/* === Lijstenbeheer (Blok 2): read-only overzicht van campagnevuller-lijsten ===
   Donker/goud, consistent met de rest van de app. Read-only: nog geen actieknoppen. */
.lb-section-label{font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:0.18em;color:var(--text-muted);text-transform:uppercase;line-height:1;display:flex;align-items:center;gap:14px;margin:38px 0 18px}
.lb-section-label::before{content:'';width:20px;height:1.5px;background:var(--text-label)}

details.lb-row{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:16px;overflow:hidden}
details.lb-row.is-actief{border-color:rgba(212,175,85,0.30);background:linear-gradient(180deg,var(--gold-tint) 0%,var(--bg-card) 70%)}
details.lb-row>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:18px;padding:26px 28px;flex-wrap:wrap;transition:background 0.16s ease}
details.lb-row>summary::-webkit-details-marker{display:none}
details.lb-row>summary:hover{background:var(--bg-card-hover)}
.lb-chevron{width:14px;height:14px;color:var(--text-dim);flex-shrink:0;transition:transform 0.18s ease}
details.lb-row[open]>summary .lb-chevron{transform:rotate(90deg)}
.lb-headtext{flex:1 1 200px;min-width:0}
.lb-file{font-family:var(--font-sans);font-weight:600;font-size:19px;color:var(--text-strong);letter-spacing:-0.012em;line-height:1.3;word-break:break-word}
.lb-date{font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--text-muted);margin-top:6px;letter-spacing:0.04em}

.lb-progress{flex:0 0 220px;display:flex;flex-direction:column;gap:8px}
.lb-progress-label{font-family:var(--font-mono);font-size:11.5px;font-weight:500;color:var(--text-muted);letter-spacing:0.03em;text-align:right;white-space:nowrap}
.lb-progress-label .lb-geplaatst{color:var(--gold-bright);font-weight:600}
.lb-progress-label .lb-mislukt{color:#E0796B}
.lb-bar{display:flex;height:6px;border-radius:999px;background:var(--bg-elevated);border:1px solid var(--line);overflow:hidden}
.lb-bar-geplaatst{background:var(--gold-bright);height:100%}
.lb-bar-mislukt{background:#E0796B;height:100%}
@media(max-width:720px){.lb-progress{flex-basis:100%}.lb-progress-label{text-align:left}}

.lb-badge{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;padding:6px 12px;border-radius:999px;line-height:1;white-space:nowrap;flex-shrink:0}
.lb-badge.is-actief{color:var(--gold-bright);background:var(--gold-tint);border:1px solid rgba(212,175,85,0.28)}
.lb-badge.is-actief .live-dot{width:7px;height:7px;border-radius:50%;background:var(--gold-bright);box-shadow:0 0 0 3px rgba(212,175,85,0.18)}
.lb-badge.is-voltooid{color:#7FB98A;background:rgba(127,185,138,0.10);border:1px solid rgba(127,185,138,0.30)}
.lb-badge.is-gepauzeerd{color:#8FA8C0;background:rgba(143,168,192,0.10);border:1px solid rgba(143,168,192,0.30)}
.lb-badge.is-gearchiveerd{color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--line)}

/* Actie-zone in de rij-summary (Pauzeren/Hervatten; meer knoppen later). */
.lb-actions{flex:0 0 auto;display:flex;gap:8px;align-items:center}

.lb-body{padding:4px 28px 26px;border-top:1px solid var(--line)}

.lb-totaal{display:flex;flex-direction:column;align-items:flex-end}
.lb-totaal-kop{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0.16em;color:var(--text-label);text-transform:uppercase;margin-bottom:10px}
.lb-totaal-tiles{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.lb-totaal-tiles .ph-tile{flex:0 0 auto;min-width:108px;padding:18px 22px;text-align:left}
.lb-totaal-tiles .ph-tile-value{font-size:32px}
.lb-totaal-meta{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:0.04em;color:var(--text-muted);margin-top:10px}
@media(max-width:900px){.lb-totaal{align-items:flex-start}.lb-totaal-tiles{justify-content:flex-start}}

/* === Opt-in-conversie + uitzonderingslijsten (oi--prefix) ===================
   Verhuisd uit planning.html (block head) zodat zowel de planning per-maand-modal
   als de Opt-in-tab (optin.html) ze delen. Strikt binnen de bestaande huisstijl:
   hergebruikt .stats/.stat, table.ph-table, .lb-section-label/.lb-badge,
   .pl-empty, .pl-legenda en .pl-override-terug. Alleen wat NIEUW is staat hier. */
.oi-blok{margin-top:56px}
.oi-kop{font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:var(--text-label);margin-bottom:18px;display:flex;align-items:center;gap:14px}
.oi-kop::before{content:'';width:20px;height:1.5px;background:var(--text-label)}
.oi-kop-sub{font-weight:500;letter-spacing:0.04em;text-transform:none;color:var(--text-muted)}
.oi-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}

/* Status-pill: glyph + DONKER chip-vlak (kleurenblind-veilig — niet kleur-
   alleen). Gedeeld door de conversietabel-koppen, de legenda en de modal. */
.oi-pill{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;padding:4px 9px;border-radius:999px;line-height:1;background:rgba(7,11,10,0.55);border:1px solid var(--line);white-space:nowrap}
.oi-pill .oi-glyph{font-size:10px;line-height:1;font-weight:800}
.oi-pill.is-acc{color:var(--success-bright);border-color:rgba(143,177,122,0.35)}
.oi-pill.is-wacht{color:var(--gold-bright);border-color:rgba(212,175,85,0.30)}
.oi-pill.is-open{color:var(--text-muted)}

/* Conversie-percentage in de ph-table + mini-balk. */
.oi-conv-pct{color:var(--gold-bright);font-weight:700}
.oi-conv-bar{display:inline-block;width:52px;height:6px;border-radius:999px;background:var(--bg-elevated);border:1px solid var(--line);overflow:hidden;vertical-align:middle;margin-left:8px}
.oi-conv-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--gold) 0%,var(--gold-bright) 100%)}
table.ph-table th .oi-glyph{margin-right:3px}
/* Verlenging-conversie: compacte sub-regel onder de hoofd-conversie. */
.oi-verlenging-detail{margin-top:7px;padding-top:7px;border-top:1px solid var(--line-soft)}
.oi-verlenging-detail strong{color:var(--gold-bright);font-weight:700}

/* Niet-rechtsgeldig-lijst (rij met actie). Container = kaart-stijl. */
.oi-card{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:4px 24px}
.oi-rij{display:flex;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--line-soft);flex-wrap:wrap}
.oi-rij:last-child{border-bottom:none}
.oi-rij-id{font-family:var(--font-mono);font-size:12.5px;font-weight:600;color:var(--text-strong);min-width:92px}
.oi-rij-agent{font-family:var(--font-sans);font-size:13.5px;font-weight:600;color:var(--gold-bright);min-width:140px}
.oi-rij-reden{font-family:var(--font-sans);font-size:13px;color:var(--text-muted);flex:1;line-height:1.4;min-width:180px}
.oi-rij-actie{flex-shrink:0;display:flex;align-items:center;gap:8px}
.oi-stub-tag{font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;color:var(--text-dim);border:1px dashed var(--line-strong);border-radius:999px;padding:3px 8px}
.oi-teruggestuurd{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--success-bright)}
/* Handmatig owner-besluit op een niet-rechtsgeldige sale: on-hold (goud, geparkeerd)
   / toch geaccepteerd (groen, eindtoestand). Zelfde badge-typografie als hierboven. */
.oi-besluit{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase}
.oi-besluit.is-onhold{color:var(--gold-bright)}
.oi-besluit.is-toch{color:var(--success-bright)}
/* Compacte actie-knoppen voor de niet-rechtsgeldig-lijst. Huisstijl-tokens:
   mono-pill met subtiele rand + hover. Primair = goud-accent (Toch accepteren),
   secundair = gedempt (On-hold). Vervangt de ongestylde .pl-override-terug hier. */
.oi-actie-btn{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;cursor:pointer;line-height:1;padding:7px 12px;border-radius:999px;border:1px solid var(--line-strong);background:var(--bg-input);color:var(--text-muted);transition:all 0.18s ease;white-space:nowrap}
.oi-actie-btn:hover{color:var(--text-strong);border-color:var(--text-label);background:rgba(255,250,240,0.06)}
.oi-actie-btn.is-primary{color:var(--gold-bright);border-color:rgba(212,175,85,0.45)}
.oi-actie-btn.is-primary:hover{color:var(--bg-bottom);background:linear-gradient(180deg,var(--gold-bright) 0%,var(--gold) 100%);border-color:var(--gold-deep);box-shadow:0 0 18px var(--gold-glow)}
.oi-actie-btn.is-secondary{color:var(--text-muted)}
/* Subtiele notitie boven de lijst (vervangt de per-rij 'webapp-administratie'-tag). */
.oi-admin-note{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:0.04em;color:var(--text-dim);margin:-6px 0 14px}
/* Hangende-opt-in-pill: "X dagen wachtend" (signalering). Wachtend = goud;
   >7 dagen extra opvallend met een vollere achtergrond + danger-tint. */
.oi-wacht-pill{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;color:var(--gold-bright);background:rgba(7,11,10,0.55);border:1px solid rgba(212,175,85,0.30);border-radius:999px;padding:4px 10px;line-height:1;white-space:nowrap}
.oi-wacht-pill.is-lang{color:var(--danger-bright);border-color:rgba(237,144,121,0.45);background:rgba(237,144,121,0.10)}
/* Hangende opt-ins (per bedrijf): eigen grid (NIET de gedeelde .oi-rij) met vaste
   kolommen zodat naam/verzender/meta/dagen-pill over de rijen uitlijnen. Lange
   bedrijfsnaam rekt de kolom niet op -> ellipsis + title (volledige naam bij hover). */
.oi-hang-row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1.3fr) auto;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--line-soft)}
.oi-hang-row:last-child{border-bottom:none}
.oi-hang-id{min-width:0;display:flex;flex-direction:column;gap:1px}
.oi-hang-naam{font-family:var(--font-sans);font-size:13.5px;font-weight:700;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oi-hang-kvk{font-family:var(--font-mono);font-size:11px;color:var(--text-dim)}
.oi-hang-verz{min-width:0;font-family:var(--font-sans);font-size:13px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oi-hang-meta{min-width:0;font-family:var(--font-sans);font-size:12.5px;color:var(--text-muted)}
.oi-hang-actie{justify-self:end;flex-shrink:0}
.oi-lijst-spacer{margin-top:28px}
@media(max-width:720px){.oi-stats{grid-template-columns:repeat(2,1fr)}}

/* === Opt-in-tab v1 (funnel x kanaal) — alleen nieuwe klassen ================
   De funnel-tabel hergebruikt table.ph-table + de stat-tegels; hieronder enkel
   de kanaal-specifieke accenten. */
.oi-funnel td.oi-kanaal{text-align:left;font-weight:600;color:var(--text-strong)}
.oi-funnel td.oi-kanaal small{display:block;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:0.04em;color:var(--text-muted);text-transform:none;margin-top:3px}
.oi-funnel .oi-nodig{color:var(--text-strong);font-weight:700}
.oi-funnel tr.is-leeg td{color:var(--text-dim)}
/* "volgt"/placeholder-cel: gedempt, niet als echt getal leesbaar. */
.oi-volgt{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:var(--text-dim);border:1px dashed var(--line-strong);border-radius:999px;padding:3px 9px;white-space:nowrap}
/* .oi-schatting ("~"-markering) staat geconsolideerd in het Opt-in-tab-v2-blok
   hieronder (schaalt mee in de 42px-stat-tegel). */
.oi-annotatie{font-family:var(--font-sans);font-size:12.5px;color:var(--text-muted);line-height:1.5;margin-top:10px}
.oi-annotatie strong{color:var(--text-strong)}

/* === Opt-in-tab v2 (visuele opwaardering) ==================================
   Nieuwe, opt-in-scoped klassen. Bewuste milde duplicatie van de pl-table-chrome
   (Optie 2): planning.html blijft ongemoeid, geen gedeelde regel gewijzigd. */

/* Tweede sectiekop binnen hetzelfde blok (Externe naast Eigen in de hero). */
.oi-kop-tweede{margin-top:44px}
/* Hero-tegels: hergebruikt .stats/.stat; alleen krappere ondermarge zodat de
   twee kanaal-groepen + de tabel een rustig ritme houden. */
.stats.oi-hero-stats{margin-bottom:20px}

/* "~"-markering bij een verlenging-getal: beste schatting (zie voetnoot).
   Schaalt mee in zowel de 13px-tabelcel als de 42px-stat-tegel. */
.oi-schatting{margin-left:2px;color:var(--text-dim);font-weight:600;font-size:0.6em;vertical-align:0.34em;cursor:help}

/* Caption boven de funnel-tabel ("lees van links naar rechts"). */
.oi-funnel-caption{font-family:var(--font-sans);font-size:12.5px;color:var(--text-muted);line-height:1.55;margin:0 0 16px;max-width:760px}
.oi-funnel-caption strong{color:var(--text-strong);font-weight:600}

/* Funnel/per-agent-tabel: kaart + koprand + sticky kolom + tabular-nums, in de
   geest van de Planning-heatmap maar als eigen klassen. */
.oi-tablecard{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-card);box-shadow:var(--shadow-sm);margin-top:18px}
table.oi-table{border-collapse:separate;border-spacing:0;width:100%;font-variant-numeric:tabular-nums}
.oi-table th,.oi-table td{padding:13px 15px;text-align:center;white-space:nowrap;border-bottom:1px solid var(--line-soft);font-variant-numeric:tabular-nums}
.oi-table thead th{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-label);background:var(--bg-elevated);line-height:1.3}
.oi-table th .oi-glyph{margin-right:4px;font-weight:800}
.oi-table thead th small{display:block;font-family:var(--font-mono);font-size:9px;font-weight:500;letter-spacing:0.02em;color:var(--text-muted);text-transform:none;white-space:normal;margin-top:3px}
.oi-table tbody td{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--text-strong)}
.oi-table tbody tr:last-child td{border-bottom:none}
.oi-table td.is-zero{color:var(--text-dim);font-weight:500}
/* Sticky, dekkende eerste kolom (kanaal/agent) zodat bij horizontaal scrollen
   geen cellen door het label schijnen. */
.oi-table th:first-child,.oi-table td:first-child{text-align:left}
.oi-table .oi-rowhead{position:sticky;left:0;z-index:2;min-width:230px;background:#19221E;box-shadow:1px 0 0 var(--line-strong)}
.oi-table thead .oi-rowhead{z-index:3;background:#1F2824}
/* Kanaal-cel: naam (sans) + mono subregel + de proportiebalk eronder. */
.oi-table td.oi-kanaal{font-family:var(--font-sans);font-size:13.5px;font-weight:600;color:var(--text-strong);line-height:1.3}
.oi-table td.oi-kanaal small{display:block;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:0.02em;color:var(--text-muted);text-transform:none;margin-top:4px;white-space:normal}
.oi-table td.oi-nodig{color:var(--text-strong);font-weight:700}
/* Externe rij zonder data: rustige, muted spanning-cel i.p.v. losse streepjes. */
.oi-table td.oi-kanaal-leeg{text-align:left;font-style:italic;font-weight:500;color:var(--text-dim)}

/* Proportiebalk onder de kanaalnaam: 100%-stacked open|wachtend|geaccepteerd.
   Kleurenblind-veilig: vaste volgorde + per-segment tooltip + harde scheidlijn;
   de getallen in de cellen blijven de bron van waarheid. */
.oi-prop{display:flex;width:100%;max-width:210px;height:7px;margin-top:9px;border-radius:999px;overflow:hidden;border:1px solid var(--line-strong);background:var(--bg-elevated)}
.oi-prop-seg{height:100%}
.oi-prop-seg + .oi-prop-seg{border-left:1px solid rgba(7,11,10,0.5)}
/* Segmentkleuren = exact de oi-pill-statuskleuren uit de legenda
   (.oi-pill.is-open/.is-wacht/.is-acc), zodat balk en legenda gelijklopen. */
.oi-prop-seg.is-open{background:var(--text-muted)}
.oi-prop-seg.is-wacht{background:var(--gold-bright)}
.oi-prop-seg.is-acc{background:var(--success-bright)}

/* Echte voetnoot onder de tabel (i.p.v. een losse paragraaf). */
.oi-voetnoot{font-family:var(--font-sans);font-size:11.5px;color:var(--text-dim);line-height:1.55;margin-top:16px;padding-top:12px;border-top:1px solid var(--line-soft)}
.oi-voetnoot strong{color:var(--text-muted);font-weight:600}
.oi-voetnoot .oi-schatting{font-size:1em;vertical-align:0;cursor:default;color:var(--text-muted)}

/* Slanke lege-staat-regel: vervangt de grote pl-empty-box voor (vrijwel altijd
   lege) signalerings-lijsten, zodat ze niet stapelen tot vier grote boxen. */
.oi-leeg-regel{font-family:var(--font-sans);font-size:12.5px;color:var(--text-muted);background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 16px;margin-top:10px;line-height:1.5}
.oi-leeg-regel + .oi-leeg-regel{margin-top:8px}
.oi-leeg-regel code{font-family:var(--font-mono);font-size:11px;color:var(--text-strong)}

/* ===== Opt-in-tab · offertes-werklijst (variant a) ===== hergebruikt
   oi-tablecard/oi-table + oi-pill; alleen werklijst-specifieke toevoegingen. */
.oi-wl-filters{margin-top:18px;margin-bottom:2px}
.oi-wl-table td.oi-l{text-align:left}
.oi-stroom{display:inline-flex;align-items:center;justify-content:center;min-width:15px;margin-left:7px;font-family:var(--font-mono);font-size:10px;font-weight:700;line-height:1.45;letter-spacing:0.03em;color:var(--text-strong);background:var(--bg-elevated);border:1px solid var(--line-strong);border-radius:999px;padding:1px 6px;vertical-align:middle;cursor:help}
.oi-stroom[data-stroom="A"]{color:var(--gold-bright);background:var(--gold-tint-strong);border-color:var(--gold-deep)}
.oi-ja{color:var(--success-bright);font-weight:700}
.oi-nee{color:var(--danger-bright);font-weight:700}
.oi-na{color:var(--text-dim)}
.oi-wl-laden,.oi-wl-leeg{font-family:var(--font-mono);font-size:12.5px;color:var(--text-muted);padding:18px 0;text-align:center}
.oi-wl-paginatie{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;flex-wrap:wrap}
.oi-wl-meta{font-family:var(--font-mono);font-size:11.5px;letter-spacing:0.04em;color:var(--text-muted)}
.oi-wl-knoppen{display:flex;gap:8px}
.oi-wl-knoppen .filter-btn{border:1px solid var(--line-strong)}
.oi-wl-knoppen .filter-btn[disabled]{opacity:0.4;cursor:not-allowed}

/* Weggevouwen placeholders (twijfel/ongekoppeld). */
.oi-details>summary{font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-label);cursor:pointer;padding:11px 0;list-style:none}
.oi-details>summary::-webkit-details-marker{display:none}
.oi-details>summary::before{content:'\25B8';margin-right:9px;color:var(--text-dim);display:inline-block}
.oi-details[open]>summary::before{content:'\25BE'}
.oi-details>summary:hover{color:var(--text-muted)}

/* Externe-uitbetaling: inline gemaskeerd wachtwoordveld + actie-rij + onbekend/
   totaal-markering. Minimaal; leunt verder op de bestaande oi-table-stijl. */
.oi-uitbetaal-actie{display:flex;align-items:center;gap:12px;margin-top:18px;flex-wrap:wrap}
.oi-pw{background:var(--bg-input);border:1px solid var(--line-strong);padding:13px 16px;font-family:var(--font-sans);font-size:13.5px;font-weight:600;color:var(--text-strong);border-radius:var(--radius-sm);min-width:220px;transition:all 0.18s ease}
.oi-pw:focus{border-color:var(--gold);outline:none;background:rgba(212,175,85,0.05)}
.oi-uitbetaal-knop{padding-left:22px;padding-right:22px}
.oi-table tr.oi-onbekend td{color:var(--text-dim);font-weight:500;font-style:italic}
.oi-table tr.oi-totaalrij td{border-top:1px solid var(--line-strong);font-weight:700;color:var(--text-strong)}

/* === Filterbalk (gedeeld door Planning + Opt-in-tab) =======================
   Verhuisd uit planning.html (block head); twee segmented-button-groepen. */
.pl-filters{display:flex;gap:28px;flex-wrap:wrap;align-items:center;margin-bottom:22px}
.pl-filtergroep{display:flex;align-items:center;gap:12px}
.pl-filterlabel{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:var(--text-label)}
.pl-filters a.filter-btn{text-decoration:none}
@media(max-width:720px){.pl-filters{gap:14px}.pl-filtergroep{flex-wrap:wrap;gap:7px 10px}.pl-filters .filter-options{flex-wrap:wrap}}
