/* ══════════════════════════════════════════
   PETCURA DASHBOARD — CENTRAL DESIGN SYSTEM
   All pages import this file. No local overrides.
   ══════════════════════════════════════════ */

:root {
  /* Brand palette */
  --forest:       #17433c;
  --forest-l:     rgba(23,67,60,.08);
  --forest-m:     rgba(23,67,60,.55);
  --lime:         #c6fa53;
  --lime-soft:    rgba(198,250,83,.18);
  --cream:        #faeddc;
  --mint:         #f0fdf0;

  /* Surfaces */
  --bg:           #f7f8fa;
  --surface:      #ffffff;
  --surface2:     #f0f2f5;
  --border:       #e8eaed;
  /* Alias van --surface. Een aantal pagina's kwam met var(--card) binnen terwijl
     die nooit gedefinieerd was — dat resolvet naar transparant, dus die kaarten
     stonden op de paginakleur in plaats van op wit. */
  --card:         #ffffff;

  /* Text */
  --text:         #111827;
  --text-m:       #6b7280;
  --text-s:       #9ca3af;

  /* Semantic colors */
  --green:        #00a381;
  --green-l:      rgba(0,163,129,.12);
  --yellow:       #ca8a04;
  --yellow-l:     rgba(202,138,4,.12);
  --blue:         #2563eb;
  --blue-l:       rgba(37,99,235,.1);
  --red:          #dc2626;
  --red-l:        rgba(220,38,38,.1);
  --orange:       #ea580c;

  /* Shape */
  --radius:       12px;
  --radius-sm:    8px;
  --radius-xs:    5px;

  /* Shadows */
  --shadow:       0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);
  --shadow-md:    0 4px 16px rgba(0,0,0,.08);
  --shadow-lg:    0 8px 24px rgba(0,0,0,.12);
}

/* ── RESET ── */
/* Het hidden-attribuut verliest van elke display-regel, waardoor een verborgen
   element alsnog als lege strook blijft staan. Dit zet dat recht voor de hele
   app, zodat het niet per pagina opnieuw fout gaat. */
[hidden] { display: none !important; }

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  background: var(--bg);
  color: var(--text);
  overflow: hidden;
}

/* ── SCROLLBAR ── */
::-webkit-scrollbar { width: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }

/* ══════════════════════════════════════════
   SHARED LAYOUT
   ══════════════════════════════════════════ */

.app { display: flex; height: 100vh; }

/* ── ICON SIDEBAR (hub + crm share this) ── */
.sidebar-icon-rail {
  width: 64px;
  background: var(--forest);
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 16px 0;
  flex-shrink: 0;
  height: 100vh;
  position: sticky;
  top: 0;
  gap: 4px;
  z-index: 10;
}
.sidebar-logo {
  width: 40px; height: 40px;
  background: var(--lime);
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px;
  margin-bottom: 20px;
  cursor: pointer;
  flex-shrink: 0;
}
.sidebar-icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px;
  cursor: pointer;
  transition: background .15s, color .15s;
  color: rgba(255,255,255,.5);
  text-decoration: none;
  position: relative;
}
.sidebar-icon:hover { background: rgba(255,255,255,.1); color: white; }
.sidebar-icon.active { background: var(--lime); color: var(--forest); }
.sidebar-icon .notif-dot {
  position: absolute; top: 4px; right: 4px;
  width: 14px; height: 14px;
  background: var(--red); color: white;
  font-size: 8px; font-weight: 700;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
}
.sidebar-bottom {
  margin-top: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding-bottom: 12px;
  position: relative;
}
.sidebar-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--lime); color: var(--forest);
  font-size: 14px; font-weight: 800;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: opacity .15s;
}
.sidebar-avatar:hover { opacity: .85; }

/* ── AVATAR DROPDOWN ── */
.avatar-menu {
  display: none;
  position: absolute;
  bottom: 58px; left: 8px;
  background: #1e2d3d;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 10px;
  padding: 6px;
  min-width: 180px;
  box-shadow: 0 8px 24px rgba(0,0,0,.4);
  z-index: 999;
}
.avatar-menu.open { display: block; }
.avatar-menu-name {
  padding: 8px 10px 6px;
  font-size: 11px; font-weight: 700;
  color: rgba(255,255,255,.4);
  text-transform: uppercase; letter-spacing: .04em;
  border-bottom: 1px solid rgba(255,255,255,.08);
  margin-bottom: 4px;
}
.avatar-menu-item {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 10px; border-radius: 6px;
  color: rgba(255,255,255,.8); font-size: 13px;
  cursor: pointer; text-decoration: none;
  transition: background .1s;
}
.avatar-menu-item:hover { background: rgba(255,255,255,.08); }
.avatar-menu-item.danger { color: #f87171; }
.avatar-menu-item.danger:hover { background: rgba(239,68,68,.08); }
.avatar-menu-divider { border-top: 1px solid rgba(255,255,255,.08); margin: 4px 0; }

/* ── SECONDARY SIDEBAR (crm page panel) ── */
.panel-sidebar {
  width: 220px;
  min-width: 220px;
  background: var(--surface);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow-y: auto;
  transition: width .2s, min-width .2s;
}
/* .collapsed (breedte 0) is vervangen door de rail hieronder — volledig
   verdwijnen is een doodlopende weg: je kunt 'm dan niet meer terughalen. */
.panel-sidebar-logo {
  display: flex; align-items: center; gap: 10px;
  padding: 16px 16px 14px;
  border-bottom: 1px solid var(--border);
}
.panel-sidebar-logo-mark {
  width: 32px; height: 32px; border-radius: 8px;
  background: var(--lime); display: flex; align-items: center; justify-content: center;
  font-size: 16px; flex-shrink: 0;
}
.panel-sidebar-brand { font-size: 14px; font-weight: 700; color: var(--text); }
.panel-sidebar-sub { font-size: 10px; color: var(--text-s); text-transform: uppercase; letter-spacing: .5px; }

.panel-sidebar-section { padding: 12px 12px 8px; }
.panel-section-label {
  font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: 1px; color: var(--text-s); padding: 0 6px 6px;
}
.panel-nav { display: flex; flex-direction: column; gap: 2px; }
.panel-nav-btn {
  display: flex; align-items: center; gap: 8px;
  width: 100%; padding: 8px 10px;
  border: none; background: transparent;
  color: var(--text-m); border-radius: var(--radius-sm);
  cursor: pointer; font-size: 13px; text-align: left;
  transition: all .15s;
}
.panel-nav-btn:hover { background: var(--surface2); color: var(--text); }
.panel-nav-btn.active { background: rgba(23,67,60,.08); color: var(--forest); font-weight: 600; }
.panel-nav-btn .nav-icon { font-size: 14px; }

/* ── MAIN AREA ── */
.main { flex: 1; display: flex; flex-direction: column; height: 100vh; overflow: hidden; }

/* ── TOP BAR ── */
.topbar {
  display: flex; align-items: center; gap: 12px;
  padding: 0 18px;
  height: 42px;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.topbar-brand { font-size: 13px; font-weight: 800; color: var(--forest); letter-spacing: -.2px; }
.topbar-sep { color: var(--border); font-size: 14px; }
.topbar-page { font-size: 13px; font-weight: 600; color: var(--text); }
.topbar-tabs { display: flex; gap: 2px; margin-left: 20px; }
.topbar-tab {
  padding: 6px 14px; border-radius: 6px;
  font-size: 13px; font-weight: 500; color: var(--text-m);
  cursor: pointer; border: none; background: none;
  text-decoration: none; transition: all .15s;
}
.topbar-tab:hover { background: var(--bg); color: var(--text); }
.topbar-tab.active { background: var(--forest-l); color: var(--forest); font-weight: 700; }
.topbar-right { margin-left: auto; display: flex; align-items: center; gap: 12px; }
.topbar-greeting { font-size: 13px; color: var(--text-m); }
.topbar-date { font-size: 12px; color: var(--text-s); }

/* Stat pills in topbar (CRM page) */
.stats-row { display: flex; gap: 6px; }
.stat-pill {
  display: flex; align-items: center; gap: 5px;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 4px 12px;
  font-size: 13px; font-weight: 700;
}
.stat-pill .stat-lbl { font-size: 11px; color: var(--text-s); font-weight: 400; }
.stat-pill .stat-val--green { color: var(--green); }
.stat-pill .stat-val--yellow { color: var(--yellow); }
.stat-pill .stat-val--red { color: var(--red); }

/* ── CONTENT SCROLL AREA ── */
.content { flex: 1; overflow-y: auto; padding: 28px 28px 40px; }

/* ── SHELL ── nav.js bouwt deze om elke pagina heen (zie mountShell) ── */
body[data-page] { display: flex; }
/* Tot nav.js de shell heeft gebouwd is de pagina onzichtbaar: anders zie je
   de inhoud één frame zonder sidebar staan en dan verspringen. */
body[data-page]:not(.hq-shell-ready) { visibility: hidden; }
/* Volle-breedte werkvlak zonder marge (CRM, studio's): de pagina regelt zelf
   zijn kolommen en scroll. */
.content--bleed { padding: 0; display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
.topbar-tabs .badge { margin-left: 6px; }

/* ── PAGINAKOP ── één kop voor elke pagina: titel links, uitleg eronder,
   optioneel knoppen rechts. Stond eerder per pagina apart (.ac-head, .st-head…). */
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.page-head h1 { font-size: 21px; font-weight: 800; color: var(--text); letter-spacing: -.3px; margin: 0; }
.page-head p { font-size: 13px; color: var(--text-m); margin: 5px 0 0; max-width: 72ch; line-height: 1.6; }

/* ── TOOLBAR (under topbar, CRM/Ads) ── */
.toolbar {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0; background: var(--surface);
}
.search-wrap { position: relative; flex: 1; max-width: 320px; }
.search-icon { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); font-size: 14px; }
.search-input {
  width: 100%; padding: 8px 12px 8px 34px;
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-sm); color: var(--text);
  font-size: 13px; outline: none; transition: border-color .15s;
}
.search-input:focus { border-color: var(--forest); }
.sort-select {
  padding: 8px 12px; background: var(--bg);
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  color: var(--text); font-size: 13px; cursor: pointer; outline: none;
}
.sort-select:focus { border-color: var(--forest); }

/* ══════════════════════════════════════════
   SHARED COMPONENTS
   ══════════════════════════════════════════ */

/* ── BADGE / PILL ── */
.badge {
  margin-left: auto;
  background: var(--surface2); color: var(--text-s);
  font-size: 11px; padding: 2px 7px;
  border-radius: 20px; min-width: 22px; text-align: center;
}
.badge--green { background: rgba(0,163,129,.1);  color: var(--green); }
.badge--yellow { background: rgba(202,138,4,.12); color: var(--yellow); }
.badge--blue { background: rgba(37,99,235,.1);  color: var(--blue); }
.badge--red { background: var(--red-l);         color: var(--red); }

/* ── TAG CHIPS ── */
.tag {
  font-size: 9px; font-weight: 700;
  padding: 1px 6px; border-radius: 3px;
  text-transform: uppercase; letter-spacing: .03em; white-space: nowrap;
}
.tag.red { background: rgba(220,38,38,.1);  color: var(--red); }
.tag.orange { background: rgba(234,88,12,.1);  color: var(--orange); }
.tag.yellow { background: var(--yellow-l);     color: var(--yellow); }
.tag.gray { background: rgba(100,116,139,.1); color: var(--text-s); }

/* ── CARD ── */
.card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow);
}
.card-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px; border-bottom: 1px solid var(--border);
}
.card-title { font-size: 13px; font-weight: 700; color: var(--text); }
.card-sub { font-size: 11px; color: var(--text-s); margin-top: 2px; }
.card-body { padding: 16px 18px; }

/* ── BUTTONS ── */
.btn-primary {
  padding: 10px 18px;
  background: var(--forest); border: none;
  border-radius: var(--radius-sm);
  color: white; font-size: 13px; font-weight: 700;
  cursor: pointer; transition: opacity .15s;
}
.btn-primary:hover { opacity: .85; }
.btn-primary:disabled { opacity: .45; cursor: not-allowed; }

.btn-lime {
  padding: 10px 18px;
  background: var(--lime); border: none;
  border-radius: var(--radius-sm);
  color: var(--forest); font-size: 13px; font-weight: 700;
  cursor: pointer; transition: opacity .15s;
}
.btn-lime:hover { opacity: .85; }

.btn-ghost {
  padding: 8px 14px;
  background: transparent; border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-m); font-size: 13px;
  cursor: pointer; transition: all .15s;
}
.btn-ghost:hover { background: var(--surface2); color: var(--text); }

.btn-danger {
  padding: 10px 18px;
  background: var(--red-l); border: 1px solid rgba(220,38,38,.3);
  border-radius: var(--radius-sm);
  color: var(--red); font-size: 13px; font-weight: 700;
  cursor: pointer; transition: all .15s;
}
.btn-danger:hover { background: var(--red); color: white; }

.btn-success {
  padding: 10px 18px;
  background: var(--green-l); border: 1px solid rgba(0,163,129,.35);
  border-radius: var(--radius-sm);
  color: var(--green); font-size: 13px; font-weight: 700;
  cursor: pointer; transition: all .15s;
}
.btn-success:hover { background: var(--green); color: white; }

/* ── MODAL ── */
.modal-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.35);
  display: flex; align-items: center; justify-content: center;
  z-index: 100; padding: 20px;
}
.modal {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius);
  width: 100%; max-width: 540px;
  max-height: 88vh; overflow-y: auto;
  box-shadow: var(--shadow-lg);
}
.modal-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px; border-bottom: 1px solid var(--border);
}
.modal-header h2 { font-size: 15px; font-weight: 700; }
.modal-close {
  background: none; border: none;
  color: var(--text-s); cursor: pointer;
  font-size: 16px; padding: 2px 6px; border-radius: 4px;
}
.modal-close:hover { background: var(--surface2); color: var(--text); }
.modal-body { padding: 20px; display: flex; flex-direction: column; gap: 14px; }
.modal-desc { font-size: 13px; color: var(--text-m); }

/* ── TOAST ── */
.toast {
  position: fixed; bottom: 24px; right: 24px;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 12px 18px;
  font-size: 13px; color: var(--text);
  z-index: 200; box-shadow: var(--shadow-lg);
  animation: slideIn .2s ease;
}
.toast--success { border: 1px solid rgba(0,163,129,.35); background: rgba(0,163,129,.06); }
.toast--error { border: 1px solid rgba(220,38,38,.3);  background: rgba(220,38,38,.05); }
@keyframes slideIn {
  from { transform: translateY(16px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .toast { animation: none; }
  .module-card, .panel-nav-btn, .btn-primary, .btn-lime, .btn-ghost, .btn-danger, .btn-success, .cs-list-item { transition: none; }
}

/* ── UTIL ── */
.hidden { display: none !important; }
.text-muted { color: var(--text-m); }
.text-small { font-size: 12px; }

/* ══════════════════════════════════════════
   HUB PAGE COMPONENTS
   ══════════════════════════════════════════ */

/* KPI row */
.kpi-row { display: grid; grid-template-columns: repeat(5,1fr); gap: 12px; margin-bottom: 28px; }
.kpi {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 18px 20px; box-shadow: var(--shadow);
}
.kpi.accent { background: var(--forest); border-color: var(--forest); }
.kpi.lime { background: var(--lime);   border-color: var(--lime); }
.kpi-label { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .6px; color: var(--text-s); margin-bottom: 8px; }
.kpi.accent .kpi-label { color: rgba(255,255,255,.55); }
.kpi.lime   .kpi-label { color: rgba(23,67,60,.6); }
.kpi-val { font-size: 26px; font-weight: 800; line-height: 1; color: var(--text); letter-spacing: -.5px; }
.kpi.accent .kpi-val { color: white; }
.kpi.lime   .kpi-val { color: var(--forest); }
.kpi-sub { font-size: 12px; color: var(--text-s); margin-top: 5px; }
.kpi.accent .kpi-sub { color: rgba(255,255,255,.4); }
.kpi.lime   .kpi-sub { color: rgba(23,67,60,.5); }

/* Section header */
.section { margin-bottom: 32px; }
.section-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.section-title { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--text-m); }
.section-count {
  font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 20px;
  background: var(--forest-l); color: var(--forest);
}
.section-link { margin-left: auto; font-size: 12px; font-weight: 600; color: var(--forest); text-decoration: none; opacity: .7; }
.section-link:hover { opacity: 1; }

/* Module grid */
.module-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 12px; }
.module-card {
  background: var(--surface); border: 1.5px solid var(--border);
  border-radius: var(--radius); padding: 20px;
  cursor: pointer; transition: all .15s; text-decoration: none; color: inherit;
  display: flex; gap: 14px; align-items: flex-start;
  box-shadow: var(--shadow); position: relative; overflow: hidden;
}
.module-card::before {
  content: ''; position: absolute; bottom: 0; left: 0; right: 0;
  height: 3px; background: var(--forest);
  transform: scaleX(0); transform-origin: left; transition: transform .2s;
}
.module-card:hover { box-shadow: var(--shadow-lg); border-color: rgba(23,67,60,.3); transform: translateY(-1px); }
.module-card:hover::before { transform: scaleX(1); }
.module-card.live { border-color: rgba(23,67,60,.2); }
.module-card.live::before { transform: scaleX(1); background: var(--lime); }
.module-card.soon { opacity: .55; cursor: default; }
.module-card.soon:hover { transform: none; box-shadow: var(--shadow); border-color: var(--border); }
.module-icon-wrap {
  width: 44px; height: 44px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0;
}
.module-icon-wrap.green { background: var(--mint); }
.module-icon-wrap.lime { background: var(--lime-soft); }
.module-icon-wrap.cream { background: var(--cream); }
.module-icon-wrap.blue { background: var(--blue-l); }
.module-icon-wrap.purple { background: rgba(139,92,246,.08); }
.module-info { flex: 1; min-width: 0; }
.module-name { font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: 3px; }
.module-desc { font-size: 12px; color: var(--text-m); line-height: 1.5; }
.module-stat { font-size: 11px; font-weight: 600; color: var(--forest); margin-top: 8px; }
.module-stat.muted { color: var(--text-s); font-weight: 400; }
.module-pill {
  position: absolute; top: 14px; right: 14px;
  font-size: 9px; font-weight: 700; padding: 2px 7px; border-radius: 20px;
}
.module-pill.live { background: var(--lime); color: var(--forest); }
.module-pill.soon { background: var(--bg); color: var(--text-s); border: 1px solid var(--border); }

/* Urgent tickets */
.two-col { display: grid; grid-template-columns: 1fr 300px; gap: 16px; margin-bottom: 32px; }
.tickets-grid { display: flex; flex-direction: column; }
.ticket-row {
  display: flex; align-items: center; gap: 12px;
  padding: 11px 16px; border-bottom: 1px solid var(--border);
  cursor: pointer; transition: background .12s;
}
.ticket-row:last-child { border-bottom: none; }
.ticket-row:hover { background: var(--bg); }
.ticket-strip { width: 3px; height: 36px; border-radius: 2px; flex-shrink: 0; }
.ticket-strip.urgent { background: var(--red); }
.ticket-strip.high { background: var(--orange); }
.ticket-strip.medium { background: var(--blue); }
.ticket-strip.low { background: var(--border); }
.ticket-sender { font-size: 13px; font-weight: 600; color: var(--text); }
.ticket-subject { font-size: 11px; color: var(--text-m); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 280px; }
.ticket-time { margin-left: auto; font-size: 10px; color: var(--text-s); flex-shrink: 0; }

/* Stat list (side card) */
.stat-item { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--border); }
.stat-item:last-child { border-bottom: none; }
.stat-item-label { font-size: 12px; color: var(--text-m); }
.stat-item-val { font-size: 14px; font-weight: 700; color: var(--forest); }

/* Quick access */
.qa-btn {
  display: flex; align-items: center; gap: 10px;
  padding: 11px 14px; border-radius: var(--radius-sm);
  background: var(--bg); border: 1px solid var(--border);
  font-size: 13px; font-weight: 600; color: var(--text);
  cursor: pointer; text-decoration: none; transition: all .15s; margin-bottom: 8px;
}
.qa-btn:last-child { margin-bottom: 0; }
.qa-btn:hover { background: var(--forest); color: white; border-color: var(--forest); }

/* Agent grid */
.agent-grid { display: grid; grid-template-columns: repeat(7,1fr); gap: 10px; }
.agent-card {
  background: var(--surface); border: 1.5px solid var(--border);
  border-radius: var(--radius); padding: 16px 14px 14px;
  cursor: pointer; transition: all .15s;
  text-decoration: none; color: inherit;
  display: flex; flex-direction: column; gap: 8px;
  position: relative; box-shadow: var(--shadow);
}
.agent-card:hover { box-shadow: var(--shadow-lg); border-color: var(--forest); transform: translateY(-2px); }
.agent-card.active-card { border-color: var(--forest); box-shadow: 0 0 0 3px var(--forest-l); }
.agent-card.soon { opacity: .5; cursor: default; }
.agent-card.soon:hover { transform: none; box-shadow: var(--shadow); border-color: var(--border); }
.agent-emoji {
  font-size: 28px; line-height: 1;
  width: 48px; height: 48px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 12px; background: var(--bg); flex-shrink: 0;
}
.agent-name { font-size: 12px; font-weight: 700; color: var(--text); line-height: 1.3; }
.agent-role { font-size: 10px; color: var(--text-s); line-height: 1.4; }
.agent-status {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px;
  margin-top: auto;
}
.agent-status::before { content: ''; width: 5px; height: 5px; border-radius: 50%; flex-shrink: 0; }
.agent-status.live { color: #16a34a; }
.agent-status.live::before { background: #22c55e; box-shadow: 0 0 4px #22c55e; }
.agent-status.standby { color: var(--text-s); }
.agent-status.standby::before { background: #d1d5db; }
.agent-status.soon { color: var(--text-s); }
.agent-status.soon::before { background: #e5e7eb; border: 1px solid #d1d5db; }
.agent-badge {
  position: absolute; top: 10px; right: 10px;
  font-size: 9px; font-weight: 700; padding: 2px 6px; border-radius: 20px;
}
.agent-badge.live { background: var(--lime); color: var(--forest); }
.agent-badge.new { background: #fef3c7; color: #92400e; }
.agent-badge.soon { background: var(--bg); color: var(--text-s); border: 1px solid var(--border); }

/* ══════════════════════════════════════════
   CRM / AD LIBRARY PAGE COMPONENTS
   ══════════════════════════════════════════ */

/* ── AD GRID ── */
.ads-grid {
  flex: 1; overflow-y: auto;
  padding: 20px 24px;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px; align-content: start;
}
.ad-card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius); overflow: hidden;
  transition: border-color .15s, transform .15s, box-shadow .15s;
  display: flex; flex-direction: column; box-shadow: var(--shadow);
}
.ad-card:hover { border-color: var(--forest); transform: translateY(-2px); box-shadow: var(--shadow-md); }
.ad-thumb {
  width: 100%; height: 160px; background: var(--surface2);
  display: flex; align-items: center; justify-content: center;
  position: relative; overflow: hidden;
}
.ad-thumb img, .ad-thumb video { width: 100%; height: 100%; object-fit: cover; }
.ad-thumb-placeholder { font-size: 36px; opacity: .4; }
.ad-type-badge {
  position: absolute; top: 8px; left: 8px;
  padding: 2px 8px; border-radius: 20px;
  font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: .5px;
  background: rgba(0,0,0,.6); color: white;
}
.ad-body { padding: 12px; flex: 1; display: flex; flex-direction: column; gap: 6px; }
.ad-header { display: flex; align-items: center; justify-content: space-between; }
.ad-brand { font-size: 13px; font-weight: 700; }
.ad-status-badge {
  font-size: 10px; font-weight: 600; padding: 2px 8px;
  border-radius: 20px; text-transform: uppercase;
}
.status--saved { background: var(--blue-l);   color: var(--blue); }
.status--transcribed { background: var(--yellow-l); color: var(--yellow); }
.status--scripted { background: var(--green-l);  color: var(--green); }
.ad-source { font-size: 10px; color: var(--text-s); }
.ad-text {
  font-size: 12px; color: var(--text-m); line-height: 1.5;
  overflow: hidden; display: -webkit-box;
  -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.ad-product { font-size: 11px; color: var(--forest); font-weight: 600; }
.ad-date { font-size: 10px; color: var(--text-s); margin-top: auto; }
.ad-actions {
  display: flex; gap: 6px;
  padding: 10px 12px 12px; border-top: 1px solid var(--border);
}
.btn-action {
  flex: 1; padding: 7px 6px;
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: transparent; color: var(--text-m);
  font-size: 11px; cursor: pointer; transition: all .15s; white-space: nowrap;
}
.btn-action:hover { background: var(--surface2); color: var(--text); }
.btn-transcribe { border-color: rgba(23,67,60,.3); color: var(--forest); }
.btn-transcribe:hover { background: var(--forest-l); }
.btn-view { border-color: var(--blue-l);   color: var(--blue); }
.btn-view:hover { background: var(--blue-l); }
.btn-details { border-color: var(--green-l); color: var(--green); }
.btn-details:hover { background: var(--green-l); }
.btn-delete { border-color: var(--red-l);    color: var(--red); }
.btn-delete:hover { background: var(--red-l); }

/* ── COMPETITOR FILTERS ── */
.competitor-list { display: flex; flex-direction: column; gap: 2px; max-height: 200px; overflow-y: auto; }
.competitor-item {
  display: flex; align-items: center; gap: 6px;
  padding: 5px 8px; border-radius: var(--radius-sm);
  cursor: pointer; font-size: 12px; color: var(--text-m); transition: all .15s;
}
.competitor-item:hover { background: var(--surface2); color: var(--text); }
.competitor-item.active { color: var(--forest); }
.tier-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
.tier-3 { background: var(--yellow); }
.tier-2 { background: var(--blue); }
.tier-1 { background: var(--text-s); }
.loading-text { font-size: 12px; color: var(--text-s); padding: 4px 8px; }

/* Connection status in panel footer */
.panel-sidebar-footer {
  margin-top: auto; padding: 12px;
  border-top: 1px solid var(--border);
  display: flex; flex-direction: column; gap: 8px;
}
.scraper-btn {
  width: 100%; padding: 9px 12px;
  background: var(--lime); border: none;
  color: var(--forest); border-radius: var(--radius-sm);
  cursor: pointer; font-size: 13px; font-weight: 700; transition: opacity .15s;
}
.scraper-btn:hover { opacity: .85; }
.scraper-btn:disabled { opacity: .4; cursor: not-allowed; }
.connection-status { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--text-s); padding: 0 2px; }
.dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.dot--green { background: var(--green); box-shadow: 0 0 6px var(--green); }
.dot--red { background: var(--red); }

/* ── EMPTY STATE ── */
.empty-state {
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  flex: 1; padding: 60px; text-align: center; gap: 12px;
}
.empty-icon { font-size: 52px; opacity: .4; }
.empty-state h2 { font-size: 18px; color: var(--text-m); }
.empty-state p { font-size: 13px; color: var(--text-m); line-height: 1.7; max-width: 380px; }

/* ── CRM LAYOUT ── */
#ads-view, #crm-view, #support-view { display: flex; flex-direction: column; height: 100%; overflow: hidden; }
.cs-layout { flex: 1; display: flex; overflow: hidden; min-height: 0; }

/* Ticket list column: header vast, lijst scrollt */
.cs-list-column {
  width: 300px; min-width: 260px;
  border-right: 1px solid var(--border);
  display: flex; flex-direction: column; flex-shrink: 0; overflow: hidden;
}
.cs-list {
  flex: 1; overflow-y: auto; display: flex; flex-direction: column;
}
.cs-list-item {
  padding: 10px 12px 10px 15px;
  border-bottom: 1px solid var(--border);
  cursor: pointer; transition: background .12s;
  position: relative; border-left: 3px solid transparent;
}
.cs-list-item:hover { background: var(--surface2); }
.cs-list-item.active { background: var(--surface2); border-left-color: var(--forest); }
.cs-list-item.active .cs-li-name { color: var(--forest); }
.cs-list-item.priority--urgent { border-left-color: var(--red); }
.cs-list-item.priority--high { border-left-color: var(--orange); }
.cs-list-item.priority--medium { border-left-color: var(--blue); }
.cs-list-item.priority--low { border-left-color: transparent; }
.cs-li--resolved { opacity: .52; }

/* Card row: avatar + body + draft-dot */
.cs-li-row { display: flex; align-items: flex-start; gap: 10px; }
.cs-li-avatar {
  width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 800; color: #fff; flex-shrink: 0;
  margin-top: 1px; letter-spacing: .03em;
}
.cs-li-body { flex: 1; min-width: 0; }
.cs-li-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 2px; }
.cs-li-name { font-size: 12px; font-weight: 700; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: flex; align-items: center; gap: 4px; }
.cs-li-time { font-size: 10px; color: var(--text-s); flex-shrink: 0; margin-left: 6px; }
.cs-li-subject { font-size: 12px; font-weight: 500; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-bottom: 2px; }
.cs-li-preview { font-size: 11px; color: var(--text-s); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cs-li-tags { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 5px; }

/* Draft-ready indicator dot */
.cs-li-draft-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--green, #22c55e);
  flex-shrink: 0; margin-top: 6px; margin-left: 4px;
  box-shadow: 0 0 5px rgba(34,197,94,.5);
}

.cs-tag {
  font-size: 10px; font-weight: 600; padding: 1px 6px; border-radius: 3px;
  text-transform: uppercase; letter-spacing: .03em; white-space: nowrap;
}
.cs-tag--red { background: rgba(220,38,38,.12); color: var(--red); }
.cs-tag--orange { background: rgba(234,88,12,.12);  color: var(--orange); }
.cs-tag--yellow { background: var(--yellow-l);      color: var(--yellow); }
.cs-tag--gray { background: rgba(100,116,139,.12); color: var(--text-s); }
.cs-tag--green { background: rgba(34,197,94,.12);   color: var(--green); }

/* Kanaal-badge: WhatsApp-tickets in dezelfde inbox als e-mail */
.cs-chan {
  display: inline-flex; align-items: center; flex-shrink: 0;
  font-size: 10px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase;
  padding: 1px 5px; border-radius: 4px; margin-right: 4px; white-space: nowrap;
}
.cs-chan--wa { background: rgba(37,211,102,.16); color: #128c7e; }
.cs-chan--closed { background: rgba(100,116,139,.12); color: var(--text-s); }

/* Topbar search */
.crm-topbar-search {
  display: flex; align-items: center; gap: 8px;
  background: var(--surface2, #f3f3f1); border: 1px solid var(--border);
  border-radius: 8px; padding: 6px 12px;
  width: 260px; flex-shrink: 0; margin: 0 8px;
}
.crm-topbar-search input {
  border: none; background: transparent; outline: none;
  font-size: 13px; color: var(--text); width: 100%;
}
.crm-topbar-search input::placeholder { color: var(--text-s); }

/* Priority dots */
.priority-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.priority-dot--low { background: var(--text-s); }
.priority-dot--medium { background: var(--blue); }
.priority-dot--high { background: var(--orange); }
.priority-dot--urgent { background: var(--red); }

/* Priority badge buttons */
.priority-btn { padding: 6px 12px; border-radius: var(--radius-sm); font-size: 12px; font-weight: 700; cursor: pointer; transition: all .15s; border: 1px solid; white-space: nowrap; }
.priority--low { background: rgba(107,114,128,.1); border-color: rgba(107,114,128,.3); color: var(--text-s); }
.priority--medium { background: var(--blue-l);        border-color: rgba(37,99,235,.3);   color: var(--blue); }
.priority--high { background: rgba(234,88,12,.1);   border-color: rgba(234,88,12,.3);   color: var(--orange); }
.priority--urgent { background: var(--red-l);         border-color: rgba(220,38,38,.35);  color: var(--red); }

/* Center thread */
.cs-detail {
  flex: 1; overflow: hidden; display: flex; flex-direction: column;
  background: var(--bg); min-width: 0;
}
.cs-detail-empty {
  flex: 1; display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  color: var(--text-s); gap: 12px;
}
.cs-detail-empty-icon { font-size: 40px; }
.cs-detail-header {
  padding: 18px 22px 14px; border-bottom: 1px solid var(--border);
  background: var(--surface);
}
.cs-detail-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 10px; }
.cs-detail-name { font-size: 17px; font-weight: 700; }
.cs-detail-email-addr { font-size: 12px; color: var(--text-m); margin-top: 2px; }
.cs-detail-badges { display: flex; gap: 8px; align-items: center; flex-shrink: 0; }
.cs-detail-body { flex: 1; display: flex; flex-direction: column; }
.cs-panel { border-bottom: 1px solid var(--border); padding: 16px 22px; }
.cs-panel:last-child { border-bottom: none; }
.cs-panel-label {
  font-size: 10px; font-weight: 700; color: var(--text-s);
  text-transform: uppercase; letter-spacing: .8px; margin-bottom: 10px;
}
.cs-panel-label.collapsible { margin-bottom: 0; cursor: pointer; user-select: none; display: flex; align-items: center; gap: 6px; }
.cs-panel-label.collapsible:hover { color: var(--text); }
.cs-panel-body { margin-top: 10px; }
.cs-panel-body.collapsed { display: none; }
.panel-chevron { font-size: 10px; flex-shrink: 0; transition: transform .15s; }
.cs-email-text { font-size: 14px; line-height: 1.7; color: var(--text); white-space: pre-wrap; word-break: break-word; }
.cs-draft-text {
  font-size: 13px; line-height: 1.7; color: var(--text);
  white-space: pre-wrap; word-break: break-word;
  background: var(--forest-l); border: 1px solid rgba(23,67,60,.18);
  border-radius: var(--radius-sm); padding: 14px;
}
.crm-draft-textarea {
  width: 100%; min-height: 160px; padding: 14px;
  background: var(--forest-l); border: 1px solid rgba(23,67,60,.18);
  border-radius: var(--radius-sm); color: var(--text);
  font-size: 13px; line-height: 1.7; resize: vertical; outline: none; font-family: inherit;
}
.crm-draft-textarea:focus { border-color: var(--forest); }

/* Draft type / status badges */
.draft-type-badge { font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 20px; text-transform: uppercase; letter-spacing: .5px; }
.draft-type--red { background: var(--red-l);    color: var(--red); }
.draft-type--blue { background: var(--blue-l);   color: var(--blue); }
.draft-type--yellow { background: var(--yellow-l); color: var(--yellow); }
.draft-type--accent { background: var(--forest-l); color: var(--forest); }
.draft-status-badge { font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 20px; }
.draft-status--pending { background: var(--yellow-l); color: var(--yellow); }
.draft-status--sent { background: var(--green-l);  color: var(--green); }
.draft-status--denied { background: var(--red-l);    color: var(--red); }

/* Thread view */
.crm-thread { flex: 1; overflow-y: auto; padding: 16px 20px; display: flex; flex-direction: column; gap: 16px; background: var(--bg); min-height: 0; }
.crm-thread-loading, .crm-thread-empty { font-size: 12px; color: var(--text-s); text-align: center; padding: 40px 0; }
.crm-msg { display: flex; gap: 10px; align-items: flex-start; }
.crm-msg--out { flex-direction: row-reverse; }
.crm-msg-avatar { width: 32px; height: 32px; border-radius: 50%; background: var(--surface2); border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; color: var(--text-s); flex-shrink: 0; }
.crm-msg-avatar--out { background: var(--forest-l); color: var(--forest); border-color: rgba(23,67,60,.25); }
.crm-msg-bubble { max-width: 80%; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 10px 14px; box-shadow: var(--shadow); }
.crm-msg-bubble--html { max-width: 100%; width: 100%; padding: 10px; }
.crm-msg--out .crm-msg-bubble { background: var(--forest-l); border-color: rgba(23,67,60,.18); }
.crm-msg-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.crm-msg-sender { font-size: 12px; font-weight: 700; color: var(--text); }
.crm-msg--out .crm-msg-sender { color: var(--forest); }
.crm-msg-time { font-size: 10px; color: var(--text-s); white-space: nowrap; }
.crm-msg-body { font-size: 13px; line-height: 1.65; color: var(--text); white-space: pre-wrap; word-break: break-word; }
.crm-feedback-banner { padding: 8px 16px; background: rgba(202,138,4,.07); border-bottom: 1px solid rgba(202,138,4,.2); font-size: 12px; color: var(--yellow); line-height: 1.5; }

/* Compose area */
.crm-compose { border-top: 2px solid var(--border); background: var(--surface); flex-shrink: 0; max-height: 55vh; overflow-y: auto; }
.crm-tab-content { padding: 0 16px 12px; }
.crm-tab-content.hidden { display: none; }
.crm-resize-handle { padding: 5px 16px 3px; cursor: ns-resize; display: flex; align-items: center; justify-content: center; user-select: none; }
.crm-resize-handle-bar { width: 40px; height: 4px; border-radius: 2px; background: var(--border); transition: background .15s; }
.crm-resize-handle:hover .crm-resize-handle-bar { background: var(--forest); }
.crm-compose-bar { display: flex; align-items: center; gap: 6px; margin-top: 10px; }
.crm-compose-bar-left { display: flex; align-items: center; gap: 6px; flex: 1; }
.crm-action-ghost { display: inline-flex; align-items: center; gap: 5px; background: none; border: 1px solid var(--border); color: var(--text-s); font-size: 11px; font-weight: 600; padding: 5px 11px; border-radius: 20px; cursor: pointer; transition: all .15s; text-decoration: none; }
.crm-action-ghost:hover { border-color: var(--forest); color: var(--forest); }
.crm-action-ghost:disabled { opacity: .5; cursor: not-allowed; }
.crm-action-feedback { display: inline-flex; align-items: center; gap: 5px; background: rgba(202,138,4,.08); border: 1px solid rgba(202,138,4,.25); color: var(--yellow); font-size: 11px; font-weight: 600; padding: 5px 11px; border-radius: 20px; cursor: pointer; transition: all .15s; }
.crm-action-feedback:hover { background: rgba(202,138,4,.15); }
.crm-action-send { flex: 1; }
.crm-regen-btn { background: none; border: 1px solid var(--border); color: var(--text-s); font-size: 11px; padding: 3px 10px; border-radius: 20px; cursor: pointer; transition: all .15s; }
.crm-regen-btn:hover { border-color: var(--forest); color: var(--forest); }
.crm-regen-btn:disabled { opacity: .5; cursor: not-allowed; }
.crm-note { font-size: 12px; color: var(--text); padding: 8px 12px; background: var(--surface2); border-radius: var(--radius-sm); margin-bottom: 6px; line-height: 1.5; }

/* Action bar */
.cs-action-bar { padding: 14px 22px; border-top: 1px solid var(--border); background: var(--surface); display: flex; gap: 10px; flex-shrink: 0; }
.resolve-btn { padding: 7px 16px; background: var(--green-l); border: 1px solid rgba(0,163,129,.35); border-radius: var(--radius-sm); color: var(--green); font-size: 12px; font-weight: 700; cursor: pointer; transition: all .15s; white-space: nowrap; }
.resolve-btn:hover { background: var(--green); color: white; }
.reopen-btn { padding: 7px 16px; background: rgba(107,114,128,.1); border: 1px solid rgba(107,114,128,.3); border-radius: var(--radius-sm); color: var(--text-s); font-size: 12px; font-weight: 700; cursor: pointer; transition: all .15s; white-space: nowrap; }
.reopen-btn:hover { background: var(--surface2); color: var(--text); }
.voor-mij-btn { padding: 7px 14px; background: rgba(124,58,237,.08); border: 1px solid rgba(124,58,237,.3); border-radius: var(--radius-sm); color: #7c3aed; font-size: 12px; font-weight: 700; cursor: pointer; transition: all .15s; white-space: nowrap; }
.voor-mij-btn:hover { background: #7c3aed; color: white; }
.voor-mij-btn.active { background: #7c3aed; color: white; border-color: #7c3aed; }
.accept-btn { flex: 1; padding: 12px; background: var(--green-l); border: 1px solid rgba(0,163,129,.4); border-radius: var(--radius-sm); color: var(--green); font-size: 14px; font-weight: 700; cursor: pointer; transition: all .15s; }
.accept-btn:hover { background: var(--green); color: white; }
.accept-btn:disabled { opacity: .5; cursor: not-allowed; }
.deny-btn { flex: 1; padding: 12px; background: var(--red-l); border: 1px solid rgba(220,38,38,.3); border-radius: var(--radius-sm); color: var(--red); font-size: 14px; font-weight: 700; cursor: pointer; transition: all .15s; }
.deny-btn:hover { background: var(--red); color: white; }
.deny-btn:disabled { opacity: .5; cursor: not-allowed; }

/* Right info panel */
.cs-info-panel { width: 270px; min-width: 240px; max-width: 270px; border-left: 1px solid var(--border); background: var(--surface); overflow-y: auto; display: flex; flex-direction: column; flex-shrink: 0; }
.cs-info-panel.hidden { display: none; }
.cs-info-section { border-bottom: 1px solid var(--border); padding: 14px 16px; }
.cs-info-section:last-child { border-bottom: none; }
.cs-info-label { font-size: 10px; font-weight: 700; color: var(--text-s); text-transform: uppercase; letter-spacing: .7px; margin-bottom: 10px; display: flex; align-items: center; justify-content: space-between; }
.cs-info-row { display: flex; flex-direction: column; gap: 2px; margin-bottom: 8px; }
.cs-info-row:last-child { margin-bottom: 0; }
.cs-info-key { font-size: 10px; color: var(--text-s); }
.cs-info-val { font-size: 13px; font-weight: 600; color: var(--text); word-break: break-word; }
.cs-info-val.ok { color: var(--green); }
.cs-info-val.warn { color: var(--yellow); }
.cs-info-val.none { color: var(--text-s); font-weight: 400; font-style: italic; }

/* Order cards in right panel */
.cs-order-card { border: 1px solid var(--border); border-radius: var(--radius-sm); margin-bottom: 8px; overflow: hidden; }
.cs-order-card-header { display: flex; align-items: center; gap: 6px; padding: 8px 10px; background: var(--surface2); cursor: pointer; user-select: none; flex-wrap: wrap; }
.cs-order-card-header:hover { background: var(--border); }
.cs-order-link { font-size: 13px; font-weight: 700; color: var(--forest); text-decoration: none; flex-shrink: 0; }
.cs-order-link:hover { text-decoration: underline; }
.cs-order-card-badges { display: flex; gap: 4px; flex-shrink: 0; }
.cs-status-badge { font-size: 10px; font-weight: 600; padding: 2px 7px; border-radius: 20px; background: var(--surface); color: var(--text-s); border: 1px solid var(--border); }
.cs-status-badge.ok { background: var(--green-l); color: var(--green); border-color: rgba(0,163,129,.3); }
.cs-status-badge.warn { background: var(--yellow-l); color: var(--yellow); border-color: rgba(202,138,4,.3); }
.cs-order-date { font-size: 10px; color: var(--text-s); margin-left: auto; }
.cs-order-total { font-size: 12px; font-weight: 700; color: var(--text); flex-shrink: 0; }
.cs-order-chevron { font-size: 10px; color: var(--text-s); transition: transform .15s; flex-shrink: 0; }
.cs-order-card-body { display: none; padding: 10px; border-top: 1px solid var(--border); }
.cs-order-card--open .cs-order-card-body { display: block; }
.cs-order-card--open .cs-order-chevron { transform: rotate(180deg); }
.cs-order-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 10px; }
.cs-order-field { background: var(--surface2); border-radius: var(--radius-sm); padding: 10px 12px; }
.cs-order-field-label { font-size: 10px; color: var(--text-s); text-transform: uppercase; letter-spacing: .5px; margin-bottom: 4px; }
.cs-order-field-value { font-size: 13px; font-weight: 600; color: var(--text); }
.cs-order-field-value.ok { color: var(--green); }
.cs-order-field-value.warn { color: var(--yellow); }
.cs-order-field-value.none { color: var(--text-s); font-weight: 400; font-style: italic; }
.cs-order-items { margin-top: 10px; }
.cs-order-item { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; background: var(--surface2); border-radius: var(--radius-sm); margin-bottom: 6px; font-size: 12px; }
.cs-order-item-name { color: var(--text); }
.cs-order-item-qty { color: var(--text-s); }
.cs-tracking-link { color: var(--forest); text-decoration: none; font-size: 12px; font-weight: 600; word-break: break-all; }
.cs-tracking-link:hover { text-decoration: underline; }

/* Conversation items in right panel */
.cs-conv-item { padding: 8px 10px; border-radius: var(--radius-sm); cursor: pointer; border: 1px solid var(--border); margin-bottom: 6px; transition: background .12s; }
.cs-conv-item:hover { background: var(--surface2); }
.cs-conv-subject { font-size: 12px; font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cs-conv-date { font-size: 10px; color: var(--text-s); margin-top: 2px; }

/* Sent message in conversation tab */
.crm-sent-message { background: var(--green-l); border: 1px solid rgba(0,163,129,.25); border-radius: var(--radius-sm); padding: 12px 14px; }
.crm-sent-label { font-size: 10px; font-weight: 700; color: var(--green); text-transform: uppercase; letter-spacing: .5px; margin-bottom: 8px; }
.crm-sent-body { font-size: 13px; line-height: 1.7; color: var(--text); white-space: pre-wrap; word-break: break-word; }

/* Feedback */
.cs-feedback-text { font-size: 13px; color: var(--yellow); font-style: italic; line-height: 1.6; padding: 10px 14px; background: var(--yellow-l); border: 1px solid rgba(202,138,4,.2); border-radius: var(--radius-sm); }
.feedback-textarea { width: 100%; min-height: 100px; padding: 12px; background: var(--surface2); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); font-size: 13px; line-height: 1.6; resize: vertical; outline: none; font-family: inherit; }
.feedback-textarea:focus { border-color: var(--red); }
.feedback-textarea::placeholder { color: var(--text-s); }

/* Attach button */
.attach-label { display: inline-flex; align-items: center; gap: 4px; padding: 8px 12px; background: var(--surface2); border: 1px solid var(--border); border-radius: var(--radius-sm); font-size: 12px; font-weight: 600; color: var(--text-s); cursor: pointer; transition: all .15s; white-space: nowrap; }
.attach-label:hover { border-color: var(--forest); color: var(--forest); }
.attach-count { font-size: 11px; color: var(--forest); font-weight: 600; }

/* Generate drafts button */
.generate-drafts-btn { padding: 8px 18px; background: var(--forest); border: none; border-radius: var(--radius-sm); color: white; font-size: 13px; font-weight: 600; cursor: pointer; transition: opacity .15s; white-space: nowrap; }
.generate-drafts-btn:hover { opacity: .85; }
.generate-drafts-btn:disabled { opacity: .5; cursor: not-allowed; }

/* Session bar */
.session-bar { display: flex; align-items: center; gap: 14px; padding: 0 20px; height: 38px; background: var(--surface); border-top: 1px solid var(--border); flex-shrink: 0; font-size: 12px; color: var(--text-s); }
.session-bar.active { background: rgba(0,163,129,.04); border-top-color: rgba(0,163,129,.2); }
.session-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--text-s); flex-shrink: 0; }
.session-bar.active .session-dot { background: var(--green); box-shadow: 0 0 6px var(--green); }
.session-timer { font-variant-numeric: tabular-nums; font-weight: 600; color: var(--text); min-width: 56px; }
.session-bar.active .session-timer { color: var(--green); }
.session-resolved { font-size: 12px; color: var(--text-s); }
.session-resolved strong { color: var(--text); font-weight: 600; }
.session-end-btn { margin-left: auto; padding: 4px 14px; background: var(--red); color: white; border: none; border-radius: var(--radius-sm); font-size: 11px; font-weight: 600; cursor: pointer; transition: opacity .15s; }
.session-end-btn:hover { opacity: .85; }
.session-start-btn { margin-left: auto; padding: 4px 14px; background: var(--green-l); color: var(--green); border: 1px solid rgba(0,163,129,.35); border-radius: var(--radius-sm); font-size: 11px; font-weight: 600; cursor: pointer; transition: all .15s; }
.session-start-btn:hover { background: var(--green); color: white; }

/* Modal product grid */
.product-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.product-btn { padding: 10px 12px; background: var(--surface2); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); font-size: 13px; cursor: pointer; transition: all .15s; text-align: left; }
.product-btn:hover { border-color: var(--forest); background: var(--forest-l); }
.product-btn.selected { border-color: var(--forest); background: var(--forest-l); color: var(--forest); }
.custom-input { width: 100%; padding: 10px 12px; background: var(--surface2); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); font-size: 13px; outline: none; }
.custom-input:focus { border-color: var(--forest); }
.custom-input::placeholder { color: var(--text-s); }

/* Result boxes in modals */
.result-section { display: flex; flex-direction: column; gap: 8px; }
.result-label { font-size: 12px; font-weight: 600; color: var(--text-s); text-transform: uppercase; letter-spacing: .5px; }
.result-box { background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 14px; font-size: 13px; line-height: 1.7; white-space: pre-wrap; max-height: 200px; overflow-y: auto; color: var(--text); }
.result-actions { display: flex; gap: 8px; }
.primary-btn { width: 100%; padding: 12px; background: var(--forest); border: none; border-radius: var(--radius-sm); color: white; font-size: 14px; font-weight: 600; cursor: pointer; transition: opacity .15s; }
.primary-btn:hover { opacity: .85; }
.primary-btn:disabled { opacity: .5; cursor: not-allowed; }
.secondary-btn { flex: 1; padding: 10px; background: var(--surface2); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); font-size: 13px; cursor: pointer; }
.secondary-btn:hover { background: var(--border); }
.modal-result { padding: 20px; display: flex; flex-direction: column; gap: 16px; }

/* ══════════════════════════════════════════════════════════════════════════
   HQ NAVIGATIE — gedeelde sidebar (nav.js) + afdelingstabs
   Bouwt voort op .panel-sidebar / .panel-nav-btn hierboven. Zie DESIGN.md §102.
   ═══════════════════════════════════════════════════════════════════════ */

#hq-nav { width: 232px; min-width: 232px; }
#hq-nav .panel-sidebar-logo-mark svg { width: 17px; height: 17px; color: var(--forest); }

/* nav-knop: icoon links, tekst, optionele badge rechts */
.panel-nav-btn { text-decoration: none; }
.panel-nav-btn .nav-icon { display: flex; align-items: center; flex-shrink: 0; }
.panel-nav-btn .nav-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.panel-nav-badge {
  flex-shrink: 0; min-width: 18px; height: 18px; padding: 0 5px;
  border-radius: 9px; background: var(--red, #dc2626); color: #fff;
  font-size: 10px; font-weight: 700; line-height: 18px; text-align: center;
}

/* items die nog niet bestaan — zichtbaar maar niet klikbaar, geen valse belofte */
.panel-nav-btn.is-soon { color: var(--text-s); cursor: default; opacity: .55; }
.panel-nav-btn.is-soon:hover { background: transparent; color: var(--text-s); }

/* gebruikersblok onderin de sidebar */
.panel-user {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 10px; border-radius: var(--radius-sm);
  cursor: pointer; transition: background .15s;
}
.panel-user:hover { background: var(--surface2); }
.panel-user-avatar {
  width: 26px; height: 26px; border-radius: 50%; flex-shrink: 0;
  background: var(--forest); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700;
}
.panel-user-name {
  font-size: 12px; font-weight: 600; color: var(--text-m);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.panel-user-menu {
  display: none; flex-direction: column; gap: 2px;
  padding: 6px 0 0; margin-top: 4px; border-top: 1px solid var(--border);
}
.panel-user-menu.open { display: flex; }
.panel-user-item {
  padding: 7px 10px; border: none; background: none; text-align: left;
  border-radius: var(--radius-sm); font-size: 12px; color: var(--text-m);
  text-decoration: none; cursor: pointer; transition: background .15s;
}
.panel-user-item:hover { background: var(--surface2); color: var(--text); }
.panel-user-item.danger { color: var(--red, #dc2626); }

/* ── AFDELINGSTABS ── gepromoveerd uit crm.html (.hq-tab), nu herbruikbaar ── */
.dept-tabs {
  display: flex; gap: 0; align-items: center;
  border-bottom: 1px solid var(--border);
  padding: 0 24px; background: var(--surface); flex-shrink: 0;
  overflow-x: auto;
}
.dept-tab {
  padding: 11px 16px; border: none; border-bottom: 2px solid transparent;
  background: transparent; font-size: 13px; font-weight: 600;
  color: var(--text-m); cursor: pointer; white-space: nowrap;
  text-decoration: none; transition: color .12s, border-color .12s;
}
.dept-tab:hover { color: var(--forest); }
.dept-tab.active { color: var(--forest); border-bottom-color: var(--forest); font-weight: 700; }
.dept-tab.is-soon { color: var(--text-s); opacity: .5; cursor: default; }
.dept-tab.is-soon:hover { color: var(--text-s); }

/* ── AFDELINGSKAARTEN op de HQ-homepage ── */
.dept-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; }
.dept-card {
  display: flex; flex-direction: column; gap: 10px;
  padding: 18px; border: 1px solid var(--border); border-radius: var(--radius-md);
  background: var(--surface); text-decoration: none;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.dept-card:hover {
  border-color: var(--forest); transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(23,67,60,.09);
}
.dept-card-top { display: flex; align-items: center; gap: 10px; }
.dept-card-icon {
  width: 34px; height: 34px; border-radius: 9px; flex-shrink: 0;
  background: var(--forest); color: var(--lime);
  display: flex; align-items: center; justify-content: center;
}
.dept-card-icon svg { width: 18px; height: 18px; }
.dept-card-name { font-size: 15px; font-weight: 700; color: var(--text); }
.dept-card-blurb { font-size: 12.5px; color: var(--text-m); line-height: 1.55; margin: 0; }
.dept-card-meta {
  margin-top: auto; padding-top: 4px;
  font-size: 11px; color: var(--text-s); display: flex; gap: 6px; flex-wrap: wrap;
}
.dept-card-chip {
  padding: 2px 8px; border-radius: 20px;
  background: var(--surface2); color: var(--text-m); font-weight: 600;
}

/* ── degradeert naar beneden (desktop-first, max-width) ── */
@media (max-width: 1100px) {
  #hq-nav { width: 200px; min-width: 200px; }
}
@media (max-width: 860px) {
  #hq-nav { width: 60px; min-width: 60px; }
  #hq-nav .panel-nav-btn .nav-text, #hq-nav .panel-section-label, #hq-nav .panel-sidebar-brand, #hq-nav .panel-sidebar-sub, #hq-nav .panel-user-name { display: none; }
  #hq-nav .panel-nav-btn { justify-content: center; }
  #hq-nav .panel-sidebar-logo { justify-content: center; padding: 14px 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .dept-card, .panel-nav-btn, .panel-user { transition: none; }
  .dept-card:hover { transform: none; }
}

/* ============================================================================
   TOPBAR-ACTIES — cijfers verbergen · meldingen · profiel
   Rechtsboven op elke HQ-pagina, gerenderd door nav.js. Het profiel stond
   eerder onderin de sidebar; het staat nu hier, en maar op één plek.
   ========================================================================= */
.hq-actions { display: flex; align-items: center; gap: 6px; margin-left: 12px; }
.hq-action-wrap { position: relative; }

.hq-action {
  width: 34px; height: 34px; display: grid; place-items: center;
  border: 1px solid var(--border); border-radius: 9px; background: var(--card);
  color: var(--text-m); cursor: pointer; position: relative;
  transition: background .15s, color .15s, border-color .15s;
}
.hq-action:hover { background: var(--bg); color: var(--text); }
.hq-action svg { width: 17px; height: 17px; }

/* Aan = duidelijk aan. Je moet in één oogopslag zien dat je cijfers verborgen zijn. */
.hq-action.is-on { background: var(--forest); border-color: var(--forest); color: #fff; }
.hq-action.is-on:hover { background: var(--forest); color: #fff; }

.hq-dot {
  position: absolute; top: 6px; right: 6px; width: 7px; height: 7px;
  border-radius: 50%; background: var(--danger, #dc2626); border: 2px solid var(--card);
}

.hq-avatar {
  width: 34px; height: 34px; border-radius: 50%; border: none; cursor: pointer;
  background: var(--forest); color: #fff; font-size: 13px; font-weight: 700;
  display: grid; place-items: center; transition: opacity .15s;
}
.hq-avatar:hover { opacity: .85; }

/* ── Uitklappers ── */
.hq-pop {
  position: absolute; top: calc(100% + 8px); right: 0; min-width: 260px;
  background: var(--card); border: 1px solid var(--border); border-radius: 12px;
  box-shadow: 0 12px 32px rgba(0,0,0,.13); padding: 6px; z-index: 200;
  display: none;
}
.hq-pop.open { display: block; }
.hq-pop--sm { min-width: 200px; }
.hq-pop-head {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: var(--text-s); padding: 8px 10px 6px;
}
.hq-pop-empty { padding: 12px 10px; font-size: 13px; color: var(--text-s); }
.hq-pop-item {
  display: flex; align-items: center; gap: 9px; width: 100%;
  padding: 9px 10px; border: none; background: none; border-radius: 8px;
  font: inherit; font-size: 13px; color: var(--text); text-align: left;
  text-decoration: none; cursor: pointer;
}
.hq-pop-item:hover { background: var(--bg); }
.hq-pop-item.danger { color: var(--danger, #dc2626); }
.hq-pop-user { padding: 9px 10px 10px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
.hq-pop-user-name { font-size: 13.5px; font-weight: 700; color: var(--text); }
.hq-pop-user-role { font-size: 11.5px; color: var(--text-s); text-transform: capitalize; }
.hq-notif-n {
  min-width: 22px; height: 22px; padding: 0 6px; border-radius: 6px;
  background: var(--forest-l); color: var(--forest);
  font-size: 12px; font-weight: 700; display: grid; place-items: center; flex: none;
}

/* ============================================================================
   CIJFERS VERBERGEN — één knop, voor schermdelen en screenshots
   Alles met .hq-num of [data-num] gaat op slot, plus de waarde-klassen die er
   al waren. Nieuwe cijfers? Geef ze .hq-num, dan vallen ze hier vanzelf onder.
   ========================================================================= */
body.hq-private .hq-num, body.hq-private [data-num], body.hq-private .stat-pill, body.hq-private .kstat, body.hq-private .cred-value, body.hq-private .nav-badge, body.hq-private .badge, body.hq-private .cbadge, body.hq-private .stat-val, body.hq-private .cred-value-wrap {
  filter: blur(7px);
  user-select: none;
  pointer-events: none;
}
/* De knop zelf en zijn eigen teller nooit vervagen — anders zie je niet meer
   hoe je het weer uitzet. */
body.hq-private .hq-actions .hq-num { filter: none; user-select: auto; pointer-events: auto; }
@media print { body.hq-private .hq-num, body.hq-private [data-num] { filter: blur(9px); } }

/* ============================================================================
   SUBNAV — Instellingen met onderliggende items
   ========================================================================= */
.panel-nav-group .panel-nav-btn { position: relative; }
.nav-caret {
  margin-left: auto; width: 22px; height: 22px; flex: none;
  display: grid; place-items: center; border: none; background: none;
  color: var(--text-s); cursor: pointer; border-radius: 5px;
  transition: transform .18s, background .15s;
}
.nav-caret:hover { background: var(--border); }
.nav-caret svg { width: 13px; height: 13px; }
.panel-nav-group.open .nav-caret { transform: rotate(180deg); }

.panel-subnav {
  display: none;
  margin: 2px 0 4px 0; padding-left: 13px;
  border-left: 1px solid var(--border); margin-left: 15px;
}
.panel-nav-group.open .panel-subnav { display: block; }
.panel-subnav .panel-nav-btn { padding: 6px 8px; font-size: 12.5px; }
.panel-subnav .nav-icon svg { width: 14px; height: 14px; }

/* ============================================================================
   SIDEBAR IN- EN UITKLAPPEN

   Het uitgangspunt: het icoon mag niet bewegen. Daarvoor is de icoon-kolom in
   beide standen even breed (--rail-icon), zodat het icoon-midden precies op het
   midden van de ingeklapte balk valt. Klapt de balk dicht, dan schuift er niets
   opzij — er valt alleen tekst weg. Dat is wat het rustig maakt.

   De tekst verdwijnt niet met display:none (dat knipt hard weg terwijl de
   breedte nog animeert) maar vervaagt en schuift een paar pixels mee, iets
   sneller dan de balk zelf. Zo is de tekst al weg voordat de rand hem raakt.

   body.hq-rail is de schakelaar, zodat ook sidebars die nav.js niet zelf tekent
   (de CRM) meebewegen.
   ========================================================================= */
:root {
  /* Deze drie horen bij elkaar. Het icoon-midden ligt op
       12 (sectie) + 6 (nav) + 28/2 = 32px
     en de rail is 64px, dus precies 2x32. Daardoor staat het icoon ingeklapt
     exact waar het uitgeklapt ook stond. Verander je er één, herbereken dan de
     andere — anders gaan de iconen weer schuiven bij het inklappen. */
  --rail-w: 64px;        /* breedte ingeklapt = 2x het icoon-midden */
  --rail-icon: 28px;     /* icoon-kolom, gelijk in beide standen */
  --rail-pad: 6px;       /* zijmarge van de nav; telt mee in de centrering */
  --rail-ease: cubic-bezier(.4, 0, .2, 1);
  --rail-dur: 200ms;
}

.panel-sidebar {
  overflow-x: hidden;
  transition: width var(--rail-dur) var(--rail-ease),
              min-width var(--rail-dur) var(--rail-ease);
}

/* ── De vaste icoon-kolom ── */
.panel-nav { padding-left: var(--rail-pad); padding-right: var(--rail-pad); }
.panel-nav-btn { padding-left: 0; padding-right: 8px; gap: 0; }
.panel-nav-btn .nav-icon {
  width: var(--rail-icon); flex: none;
  display: grid; place-items: center;
}
.panel-nav-btn .nav-text {
  flex: 1; min-width: 0; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
  transition: opacity 120ms var(--rail-ease), transform 160ms var(--rail-ease);
}

/* ── Ingeklapt ── */
/* #hq-nav zet zelf een breedte met een ID-selector (regel ~998), dus die moet
   hier ook genoemd worden — anders wint die van de rail en gebeurt er niets. */
body.hq-rail .panel-sidebar, body.hq-rail #hq-nav { width: var(--rail-w); min-width: var(--rail-w); }

/* Tekst vervaagt en schuift mee, in plaats van hard weg te knippen. */
body.hq-rail .panel-nav-btn .nav-text, body.hq-rail .nav-caret, body.hq-rail .nav-rm {
  opacity: 0; transform: translateX(-6px); pointer-events: none;
}

/* Labels en koppen nemen geen ruimte meer in, maar krimpen wel netjes weg. */
/* Kopteksten en sectielabels gaan helemaal weg. height:0 was niet genoeg: die
   elementen houden hun breedte, en dan knijpen ze het logo en de iconen ernaast
   plat. Alleen de nav-tekst vervaagt nog — dat is het enige waar de overgang
   zichtbaar is. */
body.hq-rail .panel-section-label, body.hq-rail .panel-sidebar-brand, body.hq-rail .panel-sidebar-sub { display: none !important; }

/* Het merkblok blijft, gecentreerd op de rail. */
body.hq-rail .panel-sidebar-logo-mark { margin: 0 auto; }
body.hq-rail .panel-subnav { display: none; }

body.hq-rail .panel-sidebar-logo { justify-content: center; padding-left: 0; padding-right: 0; }

/* Badges worden een stip: het getal past niet, maar "er is iets" wel. */
body.hq-rail .panel-nav-btn { position: relative; }
body.hq-rail .nav-badge:not([hidden]) {
  position: absolute; top: 6px; left: 34px;
  min-width: 7px; width: 7px; height: 7px; padding: 0;
  font-size: 0; border-radius: 50%;
  transition: none;
}



/* Hier moet de tekst écht weg, niet alleen onzichtbaar. Deze knoppen centreren
   hun inhoud, en een onzichtbare span telt gewoon mee — dan duwt hij het icoon
   naar links. In de hoofdbalk mag hij wel vervagen, want daar staat het icoon in
   een vaste kolom en beweegt er niets. */




/* ── De knop ── */
.hq-rail-toggle {
  position: sticky; top: 0; z-index: 5;
  width: 30px; height: 30px; margin: 8px 8px 0 auto;
  display: grid; place-items: center; flex: none;
  border: 1px solid var(--border); border-radius: 8px; background: var(--surface);
  color: var(--text-s); cursor: pointer;
  transition: background .15s, color .15s, margin var(--rail-dur) var(--rail-ease);
}
.hq-rail-toggle:hover { background: var(--bg); color: var(--text); }
.hq-rail-toggle:focus-visible { outline: 2px solid var(--forest); outline-offset: 2px; }
.hq-rail-toggle svg { width: 15px; height: 15px; transition: transform var(--rail-dur) var(--rail-ease); }
body.hq-rail .hq-rail-toggle { margin: 8px auto 4px; }
body.hq-rail .hq-rail-toggle svg { transform: rotate(180deg); }
body.hq-rail .panel-sidebar > .hq-rail-toggle, body.hq-rail .panel-sidebar > .hq-nav-tools > .hq-rail-toggle { color: var(--forest); border-color: var(--forest-l); background: var(--forest-l); }

/* ── Tooltips, alleen ingeklapt ──────────────────────────────────────────────
   Zonder label is een icoon een raadspelletje. Het `title`-attribuut wacht een
   seconde en ziet er overal anders uit, dus doen we het zelf: direct zichtbaar,
   buiten de balk getekend zodat overflow hem niet afknipt. */
body.hq-rail .panel-nav-btn::after {
  content: attr(title);
  position: fixed; left: calc(var(--rail-w) + 8px);
  transform: translateY(-7px);
  background: var(--forest); color: #fff;
  font-size: 12px; font-weight: 600; white-space: nowrap;
  padding: 5px 9px; border-radius: 7px;
  box-shadow: 0 6px 18px rgba(0,0,0,.18);
  opacity: 0; pointer-events: none; z-index: 400;
  transition: opacity 110ms var(--rail-ease);
}
body.hq-rail .panel-nav-btn:hover::after, body.hq-rail .panel-nav-btn:focus-visible::after { opacity: 1; }
body.hq-rail .panel-sidebar { overflow: visible; }
body.hq-rail .panel-sidebar { overflow-y: auto; }

/* ── Voorkeur voor minder beweging respecteren ── */
@media (prefers-reduced-motion: reduce) {
  .panel-sidebar, .panel-nav-btn .nav-text, .hq-rail-toggle, .hq-rail-toggle svg, body.hq-rail .panel-nav-btn::after { transition: none !important; }
}

/* Smal scherm wordt NIET hier geregeld. Een media-query die alleen de breedte
   krimpt laat de labels staan en kapt ze af; en de rail-stijl nog eens overdoen
   voor een tweede conditie is dezelfde regels twee keer onderhouden. nav.js zet
   daarom de klasse hq-rail bij een smal venster — zelfde stijl, één bron. */

/* ============================================================================
   ROADMAP-KOPPELING IN DE NAV
   Een "nog te bouwen"-item toont het roadmap-id waar het aan hangt. Staat er
   geen id, dan is het een wens en hoort het niet in de nav.
   ========================================================================= */
.nav-rm {
  font-size: 9.5px; font-weight: 700; letter-spacing: .03em;
  padding: 1px 4px; border-radius: 4px; margin-left: 4px;
  background: var(--border); color: var(--text-s); vertical-align: middle;
}
body.hq-rail .nav-rm { display: none; }

/* ── Afdelingskaart: eigenaar + nog niet gebouwd ── */
.dept-card-head {
  margin-left: auto; font-size: 10px; font-weight: 700; letter-spacing: .04em;
  padding: 2px 6px; border-radius: 5px;
  background: var(--forest-l); color: var(--forest);
}
.dept-card.is-soon {
  opacity: .55; cursor: default; pointer-events: none;
}
.dept-card.is-soon .dept-card-head { background: var(--border); color: var(--text-s); }

/* Profielfoto in de topbar-avatar. Zonder foto blijft het de initiaal. */
.hq-avatar { overflow: hidden; padding: 0; }
.hq-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ============================================================================
   SKELETONS — wat je ziet terwijl de data onderweg is

   Een spinner zegt "wacht" en niets meer; een leeg scherm laat je twijfelen of
   er iets kapot is. Een skeleton laat de vorm van het antwoord alvast zien, dus
   je ogen staan al op de goede plek als de cijfers landen. Daarom hebben de
   blokken hieronder dezelfde maten als de echte kaarten en rijen.

   De glans loopt van links naar rechts in 1,4 s — traag genoeg om rustig te
   blijven, snel genoeg om te laten zien dat er iets gebeurt. Staat de gebruiker
   op "minder beweging", dan wordt het een egaal vlak.
   ========================================================================= */
@keyframes hq-sheen { to { background-position-x: -200%; } }

.sk {
  background: linear-gradient(90deg,
              var(--border) 0%, var(--bg) 40%, var(--border) 80%);
  background-size: 200% 100%;
  animation: hq-sheen 1.4s linear infinite;
  border-radius: 6px;
  display: block;
}
.sk--text { height: 11px; }
.sk--title { height: 15px; border-radius: 5px; }
.sk--big { height: 26px; border-radius: 7px; }
.sk--pill { height: 20px; border-radius: 10px; }
.sk--circle { border-radius: 50%; }

/* Niet alle regels even lang — een blok met identieke balken leest als een
   laadbalk, ongelijke lengtes lezen als tekst. */
.sk-lines > .sk + .sk { margin-top: 7px; }
.sk-lines > .sk:nth-child(2) { width: 82%; }
.sk-lines > .sk:nth-child(3) { width: 64%; }

.sk-card {
  background: var(--card); border: 1px solid var(--border);
  border-radius: 12px; padding: 14px 16px;
}
.sk-row {
  display: flex; align-items: center; gap: 13px;
  padding: 13px 17px; border-bottom: 1px solid var(--border);
}
.sk-row:last-child { border-bottom: none; }

/* Binnenkomen zonder schok: de echte inhoud vervangt het skelet met een korte
   fade, zodat het niet aanvoelt als een sprong. */
.hq-in { animation: hq-fade 220ms cubic-bezier(.4,0,.2,1) both; }
@keyframes hq-fade { from { opacity: 0; transform: translateY(3px); } to { opacity: 1; transform: none; } }

@media (prefers-reduced-motion: reduce) {
  .sk { animation: none; background: var(--border); }
  .hq-in { animation: none; }
}

/* ============================================================================
   SIDEBAR HELEMAAL INKLAPPEN (ClickUp-stijl)

   Naast de icoon-rail hierboven is er een tweede, hardere stand: de balk gaat
   naar breedte 0 en de inhoud ernaast krijgt de hele breedte. Dat is waar je
   naar grijpt als je even alleen met de tabel of de brief bezig bent.

   Twee regels waar het op staat of valt:

   1. De sidebar is een flex-kind naast .main. Alleen width:0 is niet genoeg —
      een flex-kind houdt zijn min-content-breedte. Vandaar ook min-width:0 en
      padding op nul, zodat er echt niets overblijft.
   2. De knop om hem terug te halen zit NIET in de sidebar maar in de topbar.
      Een knop die met de balk mee verdwijnt laat je vastzitten.
   ========================================================================= */
body.hq-nav-collapsed .panel-sidebar, body.hq-nav-collapsed #hq-nav, body.hq-nav-collapsed .hq-collapsible {
  width: 0; min-width: 0; max-width: 0;
  padding-left: 0; padding-right: 0;
  border-right-width: 0;
  overflow: hidden;
  /* Onbereikbaar voor tab en screenreader zolang hij weg is. `visibility` erft
     door naar alle kinderen en haalt ze in één keer uit de tab-volgorde, zonder
     dat de breedte-animatie eronder lijdt. */
  visibility: hidden;
}

/* De breedte animeert; visibility springt pas aan het eind om, zodat de inhoud
   niet halverwege de beweging verdwijnt. */
.panel-sidebar, #hq-nav, .hq-collapsible {
  transition: width var(--rail-dur) var(--rail-ease),
              min-width var(--rail-dur) var(--rail-ease),
              max-width var(--rail-dur) var(--rail-ease),
              visibility 0s linear 0s;
}
body.hq-nav-collapsed .panel-sidebar, body.hq-nav-collapsed #hq-nav, body.hq-nav-collapsed .hq-collapsible {
  transition: width var(--rail-dur) var(--rail-ease),
              min-width var(--rail-dur) var(--rail-ease),
              max-width var(--rail-dur) var(--rail-ease),
              visibility 0s linear var(--rail-dur);
}

/* ── De kop van de balk: beide knoppen op één rij ──
   Links helemaal inklappen, rechts naar de smalle rail. Als los sticky element
   dreven ze uit elkaar en viel de bovenste buiten de sidebar; in een rij staan
   ze vast aan de balk, in beide standen. */
.hq-nav-tools {
  position: sticky; top: 0; z-index: 5;
  display: flex; align-items: center; gap: 6px;
  padding: 8px 8px 0; flex: none;
  background: var(--surface);
}
.hq-nav-tools .hq-rail-toggle { position: static; margin: 0 0 0 auto; }
body.hq-rail .hq-nav-tools { justify-content: center; padding-left: 0; padding-right: 0; }
/* In de rail is er geen plek voor twee knoppen naast elkaar. Daar blijft alleen
   de rail-knop staan: uitklappen kan daarmee, en helemaal weg is dan een stap
   die je vanuit de volle balk zet. */
body.hq-rail .hq-nav-tools .hq-rail-toggle { margin: 0 auto; }
body.hq-rail .hq-nav-collapse { display: none; }

.hq-nav-collapse {
  width: 30px; height: 30px; flex: none;
  display: grid; place-items: center;
  border: 1px solid var(--border); border-radius: 8px; background: var(--surface);
  color: var(--text-s); cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.hq-nav-collapse:hover { background: var(--bg); color: var(--forest); border-color: var(--forest); }
.hq-nav-collapse:focus-visible { outline: 2px solid var(--forest); outline-offset: 2px; }
.hq-nav-collapse svg { width: 15px; height: 15px; }

/* ── De terughaal-knop ──
   Altijd zichtbaar zodra de balk weg is. In de topbar staat hij op de lijn van
   de rest van de chrome; heeft een pagina geen topbar, dan plakt hij linksboven
   tegen de rand. Nooit allebei tegelijk: nav.js zet `hidden`. */
.hq-nav-reopen {
  width: 30px; height: 30px; flex: none;
  display: grid; place-items: center;
  border: 1px solid var(--border); border-radius: 8px; background: var(--surface);
  color: var(--text-s); cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.hq-nav-reopen:hover { background: var(--bg); color: var(--forest); border-color: var(--forest); }
.hq-nav-reopen:focus-visible { outline: 2px solid var(--forest); outline-offset: 2px; }
.hq-nav-reopen svg { width: 15px; height: 15px; }
.hq-nav-reopen[hidden] { display: none; }
/* In de topbar: als eerste element, links van de merknaam. */
.hq-nav-reopen.is-inbar { margin-right: 4px; }
/* Zonder topbar: los linksboven, boven de inhoud. */
.hq-nav-reopen:not(.is-inbar) {
  position: fixed; top: 12px; left: 12px; z-index: 60;
  box-shadow: var(--shadow-sm, 0 1px 3px rgba(0,0,0,.06));
}

@media (prefers-reduced-motion: reduce) {
  .panel-sidebar, #hq-nav, .hq-collapsible, .hq-nav-collapse, .hq-nav-reopen, .hq-rail-toggle, .hq-rail-toggle svg, .panel-nav-btn .nav-text { transition: none !important; }
  body.hq-nav-collapsed .panel-sidebar, body.hq-nav-collapsed #hq-nav, body.hq-nav-collapsed .hq-collapsible { transition: none !important; }
}

/* ── Toasts + in-page bevestiging (HQNav.toast / HQNav.vraag) ─────────────
   Native alert()/confirm() zijn verboden; dit is de huisstijl-vervanger. */
#hq-toasts {
  position: fixed; top: 56px; right: 20px; z-index: 720;
  display: flex; flex-direction: column; gap: 8px; pointer-events: none;
}
.hq-toast {
  pointer-events: auto; cursor: pointer;
  max-width: 380px; padding: 11px 16px; border-radius: 10px;
  font-size: 13px; line-height: 1.5; font-weight: 500; white-space: pre-line;
  color: #fff; background: var(--forest, #17433c);
  box-shadow: 0 8px 24px rgba(17, 24, 39, .18);
  opacity: 0; transform: translateY(-6px);
  transition: opacity .2s ease-out, transform .2s ease-out;
}
.hq-toast.in { opacity: 1; transform: none; }
.hq-toast.err { background: #7f1d1d; }
.hq-toast.warn { background: #92400e; }
@media (prefers-reduced-motion: reduce) {
  .hq-toast { transition: opacity .15s linear; transform: none; }
}

.hq-vraag-scrim {
  position: fixed; inset: 0; z-index: 700;
  background: rgba(17, 24, 39, .35);
  display: flex; align-items: center; justify-content: center;
}
.hq-vraag {
  background: var(--surface, #fff); border-radius: 12px;
  padding: 20px 22px; width: min(400px, calc(100vw - 48px));
  box-shadow: 0 16px 48px rgba(17, 24, 39, .22);
}
.hq-vraag p { margin: 0 0 16px; font-size: 13.5px; line-height: 1.55; color: var(--text, #111827); white-space: pre-line; }
.hq-vraag-k { display: flex; justify-content: flex-end; gap: 8px; }
.hq-vraag-k button {
  border: 0; border-radius: 8px; padding: 8px 15px;
  font-size: 13px; font-weight: 600; cursor: pointer;
}
.hq-vraag-nee { background: var(--surface2, #f0f2f5); color: var(--text, #111827); }
.hq-vraag-ja { background: var(--forest, #17433c); color: #fff; }
.hq-vraag-ja.gevaar { background: #b91c1c; }

/* ============================================================================
   PAGINA-SECTIES
   Vanaf hier staat per pagina de stijl die alleen die pagina gebruikt.
   Regel: een pagina heeft geen eigen <style>-blok — alles staat hier,
   onder de kop van die pagina. Gedeelde componenten staan hierboven.
   ========================================================================= */

/* ─── PAGINA: Ad Lab (ad-lab.html) ─────────────────────────────── */

.al-sec-h { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.06em;
            color:var(--text-s); margin:0 0 10px; }
.al-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(272px,1fr)); gap:13px; margin-bottom:26px; }

.al-card {
  display:flex; flex-direction:column; background:var(--card); border:1px solid var(--border);
  border-radius:13px; padding:16px; text-decoration:none; color:inherit;
  transition:border-color .15s, box-shadow .15s, transform .12s;
}
a.al-card:hover { border-color:var(--forest); box-shadow:0 6px 18px rgba(0,0,0,.07); transform:translateY(-1px); }
.al-card-top { display:flex; align-items:center; gap:10px; margin-bottom:9px; }
.al-icon {
  width:34px; height:34px; border-radius:9px; display:grid; place-items:center; flex:none;
  background:var(--forest); color:var(--lime,#c4f000);
}
.al-icon svg { width:17px; height:17px; }
.al-name { font-size:14.5px; font-weight:800; color:var(--text); }
.al-tag {
  margin-left:auto; font-size:9.5px; font-weight:700; letter-spacing:.04em;
  padding:2px 6px; border-radius:5px; background:var(--forest-l); color:var(--forest);
}
.al-blurb { font-size:12.5px; color:var(--text-m); line-height:1.55; margin:0 0 11px; flex:1; }
.al-meta { font-size:11px; color:var(--text-s); display:flex; gap:6px; flex-wrap:wrap; }
.al-chip { padding:2px 7px; border-radius:5px; background:var(--bg); border:1px solid var(--border); }

/* Nog niet geautomatiseerd: zichtbaar, maar niet klikbaar. */
.al-card.is-soon { opacity:.6; cursor:default; }
.al-card.is-soon .al-icon { background:var(--border); color:var(--text-s); }
.al-card.is-soon .al-tag { background:var(--border); color:var(--text-s); }

.al-note { background:var(--card); border:1px dashed var(--border); border-radius:12px;
           padding:14px 16px; font-size:12.5px; color:var(--text-m); line-height:1.6; }
.al-note b { color:var(--text); }

/* ─── PAGINA: Briefs (briefs.html) ─────────────────────────────── */
/* ── BRIEFS (br-) ────────────────────────────────────────────────── */
.br-wrap { display:flex; flex-direction:column; height:100%; min-height:0; }

/* Niet-verbonden melding */
.br-notice { display:flex; align-items:center; gap:10px; padding:6px 16px; font-size:11.5px;
  background:var(--yellow-l); border-bottom:1px solid var(--border);
  font-size:12px; color:#7a5300; flex:none; }
.br-notice b { font-weight:700; }
.br-notice a { color:#7a5300; text-decoration:underline; text-underline-offset:2px; }

/* KPI-rij */
/* Kengetallen op een rij in plaats van in blokken. Label en waarde naast
   elkaar leest even snel en kost een derde van de hoogte. */
.br-kpis { display:flex; align-items:center; gap:22px; padding:0 20px; height:38px;
  background:var(--surface); border-bottom:1px solid var(--border); flex:none;
  overflow-x:auto; }
.br-kpi { display:flex; align-items:baseline; gap:7px; white-space:nowrap; }
.br-kpi-l { font-size:10px; font-weight:700; letter-spacing:.7px; text-transform:uppercase;
  color:var(--text-s); }
.br-kpi-v { font-size:14px; font-weight:800; letter-spacing:-.2px; line-height:1;
  display:flex; align-items:baseline; gap:3px; }
.br-kpi-v small { font-size:10px; font-weight:600; color:var(--text-m); }
.br-kpi-v.muted { color:var(--text-s); font-weight:700; font-size:13px; }
.br-kpi-sub { display:none; }        /* toelichting hangt nu in de tooltip */

/* Toolbar */
.br-bar { display:flex; align-items:center; gap:8px; padding:7px 16px;
  border-bottom:1px solid var(--border); background:var(--surface); flex:none; }
.br-chip { border:1px solid var(--border); background:var(--surface); color:var(--text-m);
  font:inherit; font-size:12px; font-weight:600; padding:5px 11px; border-radius:999px;
  cursor:pointer; transition:background .15s ease, color .15s ease, border-color .15s ease;
  display:inline-flex; align-items:center; gap:6px; }
.br-chip:hover { background:var(--surface2); color:var(--text); }
.br-chip:focus-visible { outline:2px solid var(--forest); outline-offset:2px; }
.br-chip.on { background:var(--forest); border-color:var(--forest); color:#fff; }
.br-chip .n { font-size:11px; opacity:.7; font-variant-numeric:tabular-nums; }
.br-chip.alert:not(.on) { border-color:rgba(220,38,38,.35); color:var(--red); }
.br-sep { width:1px; height:20px; background:var(--border); margin:0 3px; }
.br-search { flex:1; min-width:160px; max-width:280px; }
.br-search input { width:100%; background:var(--surface2); border:1px solid var(--border);
  border-radius:8px; padding:6px 10px; font:inherit; font-size:12px; color:var(--text); }
.br-search input::placeholder { color:var(--text-s); }
.br-search input:focus { outline:none; border-color:var(--forest);
  box-shadow:0 0 0 3px var(--forest-l); }
.br-toggle { display:flex; border:1px solid var(--border); border-radius:8px; overflow:hidden; }
.br-toggle button { border:0; background:var(--surface); color:var(--text-m); font:inherit;
  font-size:12px; font-weight:600; padding:5px 12px; cursor:pointer; transition:background .15s ease; }
.br-toggle button + button { border-left:1px solid var(--border); }
.br-toggle button:hover { background:var(--surface2); }
.br-toggle button.on { background:var(--forest); color:#fff; }
.br-new { border:0; background:var(--forest); color:#fff; font:inherit; font-size:12px;
  font-weight:600; padding:7px 14px; border-radius:8px; cursor:pointer; margin-left:auto;
  transition:background .15s ease; }
.br-new:hover { background:#0f3630; }
.br-new:focus-visible { outline:2px solid var(--forest); outline-offset:2px; }

/* Scrollvlak */
.br-body { flex:1; min-height:0; overflow:auto; }

/* Tabel */
.br-table { width:100%; border-collapse:collapse; font-size:13px; }
.br-table thead th { position:sticky; top:0; z-index:2; background:var(--surface2);
  border-bottom:1px solid var(--border); text-align:left; font-size:10px; font-weight:700;
  letter-spacing:.8px; text-transform:uppercase; color:var(--text-m); padding:8px 12px;
  white-space:nowrap; user-select:none; }
.br-table thead th.sortable { cursor:pointer; }
.br-table thead th.sortable:hover { color:var(--text); }
.br-table thead th .ar { opacity:.45; font-size:9px; margin-left:3px; }
.br-table tbody tr { border-bottom:1px solid var(--border); cursor:pointer;
  transition:background .12s ease; }
.br-table tbody tr:hover { background:var(--surface2); }
.br-table tbody tr.sel { background:var(--forest-l); }
.br-table td { padding:9px 12px; vertical-align:middle; }
/* Alleen de eerste kolom rekt mee; de rest krimpt naar zijn inhoud. */
.br-table th:not(:first-child), .br-table td:not(:first-child) { width:1%; white-space:nowrap; }
/* max-width:0 op een auto-layout cel = "neem exact de restruimte en kap af". */
.br-table th:first-child, .br-table td:first-child { width:auto; max-width:0; overflow:hidden; }
.br-title { font-weight:600; color:var(--text); display:block;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.br-sub { font-size:11px; color:var(--text-s); margin-top:2px; }
.br-num { font-variant-numeric:tabular-nums; text-align:right; white-space:nowrap; }
.br-dash { color:var(--text-s); }

/* Badges */
.br-b { display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:700;
  padding:3px 8px; border-radius:999px; white-space:nowrap; letter-spacing:.1px; }
.br-dot { width:6px; height:6px; border-radius:50%; flex:none; }
/* Per status een felle kleur voor stip en tekst, en dezelfde kleur sterk
   verdund als achtergrond. Zo leest de status als een label, niet als ruis. */
.br-b { background:var(--st-bg); color:var(--st-fg); }
.br-b .br-dot { background:var(--st-fg); }

[data-st="briefing"] { --st-fg:#2563eb; --st-bg:rgba(37,99,235,.11); }
[data-st="ready_for_editing"] { --st-fg:#7c3aed; --st-bg:rgba(124,58,237,.11); }
[data-st="editing"] { --st-fg:#d97706; --st-bg:rgba(217,119,6,.13); }
[data-st="review"] { --st-fg:#ea580c; --st-bg:rgba(234,88,12,.12); }
[data-st="revision"] { --st-fg:#dc2626; --st-bg:rgba(220,38,38,.11); }
[data-st="launch_prep"] { --st-fg:#0891b2; --st-bg:rgba(8,145,178,.12); }
[data-st="ready_for_launch"] { --st-fg:#0f766e; --st-bg:rgba(15,118,110,.13); }
[data-st="live"] { --st-fg:#16a34a; --st-bg:rgba(22,163,74,.13); }
[data-st="winner"] { --st-fg:#059669; --st-bg:rgba(5,150,105,.14); }
[data-st="loser"] { --st-fg:#6b7280; --st-bg:rgba(107,114,128,.12); }

.br-tag { display:inline-block; font-size:11px; font-weight:600; padding:2px 7px;
  border-radius:5px; background:var(--surface2); color:var(--text-m); white-space:nowrap; }
.br-tag.blk { background:var(--red-l); color:#b02020; }
.br-tag.old { background:var(--yellow-l); color:#8a5a00; }
.br-tag.dup { background:rgba(37,99,235,.1); color:#1d4ed8; font-weight:700; }
.br-tag.copies { background:var(--lime-l, rgba(132,204,22,.16)); color:#3f6212; font-weight:700; }

/* Kanban */
.br-kan { display:flex; gap:12px; padding:14px 16px; align-items:flex-start;
  min-height:100%; width:max-content; }
.br-col { width:272px; flex:none; background:var(--st-bg, var(--surface2));
  border-radius:12px; display:flex; flex-direction:column;
  max-height:calc(100vh - 230px); transition:background .15s ease; }
.br-col-h { display:flex; align-items:center; gap:8px; padding:11px 12px 10px;
  position:sticky; top:0; color:var(--st-fg); }
.br-col-h .nm { font-size:11px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; }
.br-col-h .ct { margin-left:auto; font-size:11px; font-weight:700; color:var(--st-fg);
  opacity:.7; font-variant-numeric:tabular-nums; }
.br-col-b { padding:0 8px 8px; overflow-y:auto; display:flex; flex-direction:column; gap:6px; }
.br-card { background:var(--surface); border:1px solid var(--border); border-radius:8px;
  padding:9px 10px; cursor:pointer; transition:border-color .15s ease, box-shadow .15s ease; }
.br-card:hover { border-color:#d3d7dd; box-shadow:var(--shadow); }
.br-card-t { font-size:12px; font-weight:600; line-height:1.35; overflow:hidden;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.br-card-m { display:flex; align-items:center; gap:5px; margin-top:7px; flex-wrap:wrap; }
.br-empty-col { font-size:11px; color:var(--text-s); padding:6px 4px 10px; }

/* Slepen. De kaart die je vasthebt vervaagt, de kolom eronder licht op,
   en een lijn laat zien waar hij terechtkomt. */
.br-card { cursor:grab; }
.br-card:active { cursor:grabbing; }
.br-card.dragging { opacity:.4; cursor:grabbing; }
.br-col.over { outline:2px solid var(--st-fg); outline-offset:-2px; }
.br-launch { border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.br-launch-r { display:flex; align-items:center; gap:10px; padding:8px 12px; }
.br-launch-r + .br-launch-r { border-top:1px solid var(--border); }
.br-launch-r .l { font-size:10.5px; font-weight:700; letter-spacing:.4px;
  text-transform:uppercase; color:var(--text-s); width:52px; flex:none; }
.br-launch-r code { flex:1; font-size:12px; color:var(--text); overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap; }
.br-launch-r .cp { flex:none; }
.br-launch-hint { font-size:12px; color:var(--text-s); padding:8px 0; }
.br-gate { width: min(540px, calc(100vw - 48px)); }
.br-gate h3 { margin: 0 0 8px; font-size: 15px; font-weight: 800; color: var(--text); }
.br-gate textarea { width: 100%; margin: 10px 0 14px; padding: 10px 12px;
  border: 1px solid var(--border); border-radius: 8px; font-size: 12.5px;
  line-height: 1.5; font-family: inherit; resize: vertical; background: var(--surface2); }
.br-gate-hub { display: inline-block; font-size: 13px; font-weight: 700;
  color: var(--forest); text-decoration: underline; }
.br-gate-skip { display: block; margin: 12px 0 0 auto; border: 0; background: none;
  padding: 0; font-size: 11.5px; color: var(--muted); text-decoration: underline;
  cursor: pointer; }
.br-gate-skip:hover { color: var(--red); }
.br-drop { height:2px; background:var(--st-fg, var(--forest)); border-radius:2px;
  margin:1px 0; flex:none; }
.br-col-b { min-height:44px; }

/* Lege staat */
.br-empty { display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:8px; padding:70px 20px; text-align:center; }
.br-empty h3 { font-size:14px; font-weight:700; }
.br-empty p { font-size:12px; color:var(--text-m); max-width:44ch; line-height:1.6; }

/* Wachtrij-balk: verschijnt zodra een wijziging niet opgeslagen kon worden en
   blijft staan tot hij echt weg is. Bewust niet weg te klikken — onopgemerkt
   verlies is precies wat dit moet voorkomen. */
.br-wachtrij { position:fixed; left:50%; bottom:20px; transform:translateX(-50%);
  z-index:60; display:flex; align-items:center; gap:12px;
  padding:10px 14px; border-radius:var(--radius); background:var(--red);
  color:#fff; font-size:12.5px; font-weight:600;
  box-shadow:0 8px 24px rgba(0,0,0,.22); max-width:min(92vw,560px); }
.br-wachtrij b { font-weight:800; }
.br-wachtrij button { border:0; cursor:pointer; padding:5px 11px; border-radius:var(--radius-sm);
  background:rgba(255,255,255,.18); color:#fff; font-size:12px; font-weight:700;
  font-family:inherit; }
.br-wachtrij button:hover { background:rgba(255,255,255,.3); }

/* Skeleton */
.br-sk { height:11px; border-radius:4px; background:linear-gradient(90deg,
  var(--surface2) 25%, #e9ecf0 37%, var(--surface2) 63%); background-size:400% 100%;
  animation:brsk 1.3s ease infinite; }
@keyframes brsk { 0%{background-position:100% 50%} 100%{background-position:0 50%} }

/* Drawer */
.br-scrim { position:fixed; inset:0; background:rgba(17,24,39,.28); opacity:0;
  pointer-events:none; transition:opacity .18s ease; z-index:60; }
.br-scrim.on { opacity:1; pointer-events:auto; }
.br-drawer { position:fixed; top:0; right:0; height:100%; width:660px; max-width:94vw;
  background:var(--surface); border-left:1px solid var(--border); box-shadow:var(--shadow-lg);
  transform:translateX(100%); transition:transform .22s cubic-bezier(.22,1,.36,1);
  z-index:61; display:flex; flex-direction:column; }
.br-drawer.on { transform:translateX(0); }
.br-d-h { padding:16px 20px 13px; border-bottom:1px solid var(--border); flex:none;
  background:var(--surface); }
.br-d-meta { display:flex; align-items:center; gap:7px; margin-top:7px; flex-wrap:wrap;
  font-size:11px; color:var(--text-s); }
.br-d-meta .sep { opacity:.5; }
.br-d-top { display:flex; align-items:flex-start; gap:12px; }
/* De titel is bewerkbaar en moet er ook zo uitzien: zelfde behandeling als
   een invoerveld (rand, lichte fill, focus-ring), niet een kale kop. */
.br-d-title { font-size:15px; font-weight:700; line-height:1.35; flex:1;
  border:1px solid var(--border); background:var(--surface2); border-radius:8px;
  padding:6px 10px; }
.br-d-title:focus { outline:none; border-color:var(--forest); background:var(--surface);
  box-shadow:0 0 0 3px var(--forest-l); }
.br-x { border:1px solid var(--border); background:var(--surface); border-radius:8px;
  width:28px; height:28px; cursor:pointer; color:var(--text-m); font-size:15px; line-height:1;
  flex:none; transition:background .15s ease; }
.br-x:hover { background:var(--surface2); color:var(--text); }
/* Eén doorlopende balk leest als een pijplijn; losse pillen lezen als tags. */
.br-pipe { display:flex; margin-top:13px; border:1px solid var(--border);
  border-radius:8px; overflow:hidden; }
.br-pipe button { flex:1; min-width:0; border:0; background:var(--surface); font:inherit;
  font-size:10.5px; font-weight:700; letter-spacing:.2px; color:var(--text-s);
  padding:7px 4px; cursor:pointer; white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis; transition:background .15s ease, color .15s ease; }
.br-pipe button + button { border-left:1px solid var(--border); }
.br-pipe button:hover { background:var(--surface2); color:var(--text); }
.br-pipe button:focus-visible { outline:2px solid var(--forest); outline-offset:-2px; }
.br-pipe button.done { color:var(--text-m); background:var(--surface2); }
.br-pipe button.on { background:var(--forest); color:#fff; }
.br-d-b { flex:1; overflow-y:auto; padding:20px 20px 48px; }
.br-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px 14px; margin-bottom:22px; }
.br-f label { display:block; font-size:10px; font-weight:700; letter-spacing:.8px;
  text-transform:uppercase; color:var(--text-m); margin-bottom:5px; }
.br-f select, .br-f input, .br-f textarea { display:block; width:100%; background:var(--surface2);
  border:1px solid var(--border); border-radius:8px; padding:6px 9px; font:inherit;
  font-size:12px; line-height:1.55; color:var(--text); }
.br-f textarea { resize:vertical; }
.br-f select:focus, .br-f input:focus, .br-f textarea:focus { outline:none;
  border-color:var(--forest); box-shadow:0 0 0 3px var(--forest-l); }
.br-f input::placeholder, .br-f textarea::placeholder { color:var(--text-s); }
.br-slughint { margin-top:4px; font-size:10.5px; line-height:1.5; color:var(--text-m); }
.br-blocks { display:flex; flex-direction:column; gap:14px; }
.br-blk-h { display:flex; align-items:center; gap:7px; margin-bottom:6px; }
.br-blk-h span { font-size:10px; font-weight:700; letter-spacing:.8px; text-transform:uppercase;
  color:var(--text-m); }
.br-blk-h .cp { margin-left:auto; border:1px solid var(--border); background:var(--surface);
  border-radius:6px; font:inherit; font-size:10px; font-weight:700; letter-spacing:.4px;
  text-transform:uppercase; color:var(--text-m); padding:2px 7px; cursor:pointer;
  transition:background .15s ease, color .15s ease; }
.br-blk-h .cp:hover { background:var(--forest); border-color:var(--forest); color:#fff; }
.br-blk textarea { width:100%; background:var(--surface2); border:1px solid var(--border);
  border-radius:8px; padding:9px 11px; font:inherit; font-size:12.5px; line-height:1.6;
  color:var(--text); resize:vertical; min-height:60px; }
.br-blk textarea:focus { outline:none; border-color:var(--forest);
  box-shadow:0 0 0 3px var(--forest-l); background:var(--surface); }
.br-blk textarea::placeholder { color:var(--text-s); }
/* Copy-varianten: alleen in beeld als er naast de hoofdcopy nog een tweede of
   derde tekst getest wordt. Bewust ingesprongen met een lime rand, zodat het
   leest als een aftakking van de copy erboven en niet als een nieuw veld. */
.br-vars { margin-top:18px; }
.br-vars .br-sec-h { margin-bottom:10px; }
.br-var-empty { margin:0; font-size:11.5px; line-height:1.6; color:var(--text-m); }
.br-var { border:1px solid var(--border); border-left:3px solid var(--lime);
  border-radius:10px; padding:10px 12px 12px; margin-bottom:12px; background:var(--surface2); }
.br-var-h { display:flex; align-items:center; gap:7px; margin-bottom:8px; }
.br-var-h .lbl { flex:1; min-width:0; background:transparent; border:0; padding:0; font:inherit;
  font-size:11px; font-weight:800; letter-spacing:.7px; text-transform:uppercase; color:var(--text); }
.br-var-h .lbl:focus { outline:none; box-shadow:0 1px 0 0 var(--forest); }
.br-var-h .cp { border:1px solid var(--border); background:var(--surface); border-radius:6px;
  font:inherit; font-size:10px; font-weight:700; letter-spacing:.4px; text-transform:uppercase;
  color:var(--text-m); padding:2px 7px; cursor:pointer;
  transition:background .15s ease, color .15s ease; }
.br-var-h .cp:hover { background:var(--forest); border-color:var(--forest); color:#fff; }
.br-var-h .rm { border:0; background:none; color:var(--text-s); font:inherit; font-size:15px;
  line-height:1; padding:0 2px; cursor:pointer; transition:color .15s ease; }
.br-var-h .rm:hover { color:var(--red); }
.br-var label { display:block; font-size:10px; font-weight:700; letter-spacing:.8px;
  text-transform:uppercase; color:var(--text-m); margin:8px 0 5px; }
.br-var textarea { width:100%; background:var(--surface); border:1px solid var(--border);
  border-radius:8px; padding:9px 11px; font:inherit; font-size:12.5px; line-height:1.6;
  color:var(--text); resize:vertical; min-height:60px; }
.br-var textarea:focus { outline:none; border-color:var(--forest);
  box-shadow:0 0 0 3px var(--forest-l); }
.br-hr { height:1px; background:var(--border); margin:22px 0; }
.br-perf { display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--border);
  border:1px solid var(--border); border-radius:8px; overflow:hidden; }
.br-perf div { background:var(--surface); padding:10px 12px; }
.br-perf .l { font-size:10px; font-weight:700; letter-spacing:.8px; text-transform:uppercase;
  color:var(--text-m); margin-bottom:5px; }
.br-perf .v { font-size:15px; font-weight:800; letter-spacing:-.3px; color:var(--text-s); }

.br-saving { font-size:11px; color:var(--text-m); display:flex; align-items:center; gap:8px; }
.br-undo { border:1px solid var(--border); background:var(--surface); font:inherit;
  font-size:11px; font-weight:700; color:var(--forest); padding:2px 9px; border-radius:6px;
  cursor:pointer; transition:background .15s ease, color .15s ease; }
.br-undo:hover { background:var(--forest); border-color:var(--forest); color:#fff; }
.br-undo:focus-visible { outline:2px solid var(--forest); outline-offset:2px; }

.br-menu { position:fixed; z-index:70; min-width:186px; background:var(--surface);
  border:1px solid var(--border); border-radius:8px; box-shadow:var(--shadow-lg);
  padding:4px; display:flex; flex-direction:column; }
.br-menu button { border:0; background:none; font:inherit; font-size:12.5px;
  color:var(--text); text-align:left; padding:7px 10px; border-radius:6px;
  cursor:pointer; }
.br-menu button:hover { background:var(--surface2); }
.br-menu button:focus-visible { outline:2px solid var(--forest); outline-offset:-2px; }
.br-menu button.danger { color:var(--red); }
.br-menu button.danger:hover { background:var(--red-l); }
.br-menu .sep { height:1px; background:var(--border); margin:4px 2px; }

/* Media in de brief */
.br-sec { margin-bottom:26px; }
.br-sec-h { display:flex; align-items:center; gap:10px; margin-bottom:11px;
  padding-bottom:7px; border-bottom:1px solid var(--border); }
.br-sec-h h3 { font-size:11px; font-weight:700; letter-spacing:.8px; text-transform:uppercase;
  color:var(--text); }
/* Vijf vaste groepen in de drawer: Werk, Hypothese, Ad & bestemming,
   Logistiek, Resultaat. De groepskop is dezelfde .br-sec-h, één maat groter,
   zodat de subkoppen binnen Werk eronder blijven hangen. */
.br-grp { margin-bottom:30px; }
.br-grp > :last-child { margin-bottom:0; }
.br-grp-h { margin-bottom:14px; }
.br-grp-h h3 { font-size:12px; font-weight:800; letter-spacing:1px; }
/* Meegroeiende tekstvakken (zelfde gedrag als het script). */
textarea.br-auto { overflow:hidden; resize:none; }
.br-add { margin-left:auto; border:1px solid var(--border); background:var(--surface);
  border-radius:6px; font:inherit; font-size:11px; font-weight:600; color:var(--text-m);
  padding:3px 9px; cursor:pointer; transition:background .15s ease, color .15s ease; }
.br-add:hover { background:var(--forest); border-color:var(--forest); color:#fff; }
/* Primaire variant (Add hook): forest met witte tekst, zoals .br-new. */
.br-add--forest { background:var(--forest); border-color:var(--forest); color:#fff; }
.br-add--forest:hover { background:#0f3630; border-color:#0f3630; }
.br-memo { border:1px solid var(--border); border-radius:8px; overflow:hidden; }
.br-memo-row { display:grid; grid-template-columns:64px 1fr; align-items:start; }
.br-memo-row + .br-memo-row { border-top:1px solid var(--border); }
.br-memo-row label { font-size:10px; font-weight:700; letter-spacing:.8px;
  text-transform:uppercase; color:var(--text-m); padding:12px 0 0 11px; }
.br-memo-row textarea { display:block; width:100%; border:0; background:var(--surface);
  padding:9px 11px; font:inherit; font-size:12.5px; line-height:1.6; color:var(--text);
  resize:vertical; }
.br-memo-row textarea::placeholder { color:var(--text-s); }
.br-memo-row textarea:focus { outline:none; box-shadow:inset 0 0 0 2px var(--forest-l); }

.br-hook { border:1px solid var(--border); border-top:3px solid var(--hk, var(--border));
  border-radius:10px; overflow:hidden; margin-bottom:10px; background:var(--surface);
  box-shadow:0 1px 3px rgba(17,24,39,.05); }
.br-hook-h { display:flex; align-items:center; gap:8px; padding:7px 10px; background:var(--surface2);
  border-bottom:1px solid var(--border); }
.br-hook-h .nm { font-size:12px; font-weight:800; letter-spacing:.3px; }
.br-hook-h .src { font-size:10.5px; font-weight:700; letter-spacing:.4px;
  text-transform:uppercase; color:var(--hk, var(--text-s)); }
.br-hook-h .rm { margin-left:auto; border:0; background:none; color:var(--text-s); font:inherit;
  font-size:15px; line-height:1; cursor:pointer; padding:0 2px; }
.br-hook-h .rm:hover { color:var(--red); }
.br-hook textarea { display:block; width:calc(100% - 20px); margin:10px;
  border:1px solid var(--border); border-radius:8px; background:var(--bg, #f7f8fa);
  padding:9px 11px; font:inherit; font-size:12.5px; line-height:1.6; color:var(--text);
  resize:vertical; }
/* Een lang script hoort te lezen als een document. Vaste hoogte perste alles
   in een klein scrollvak, waardoor de witregels tussen alinea's wegvielen. */
.br-script textarea { font-size:13.5px; line-height:1.75; padding:14px 16px;
  min-height:180px; overflow:hidden; resize:none; }
.br-hook textarea::placeholder { color:var(--text-s); }
.br-hook textarea:focus { outline:none; box-shadow:inset 0 0 0 2px var(--forest-l); }
.br-media { display:flex; align-items:center; gap:8px; padding:8px 10px;
  border-top:1px solid var(--border); background:var(--surface); }
.br-media audio { height:30px; flex:1; min-width:0; }
.br-media video { width:100%; border-radius:6px; display:block; background:#000; }
.br-mline { display:flex; align-items:center; gap:6px; width:100%; }
.br-murl { flex:1; min-width:0; background:var(--surface2); border:1px solid var(--border);
  border-radius:6px; padding:5px 8px; font:inherit; font-size:11.5px; color:var(--text); }
.br-murl:focus { outline:none; border-color:var(--forest); box-shadow:0 0 0 3px var(--forest-l); }
.br-murl::placeholder { color:var(--text-s); }
/* Uploadvak: breed en klikbaar, want een bestand aanleveren is de normale
   handeling. Een smal linkveld nodigde uit tot plakken, en dat gebeurt niet. */
.br-zone { display:flex; align-items:center; justify-content:center; gap:9px;
  width:100%; min-height:46px; padding:12px; border:1px dashed var(--border);
  border-radius:8px; background:var(--surface); color:var(--text-m);
  font-size:12.5px; font-weight:600; cursor:pointer;
  transition:border-color .15s ease, color .15s ease, background .15s ease; }
.br-zone:hover { border-color:var(--forest); color:var(--forest);
  background:var(--forest-l); }
.br-zone:focus-within { outline:2px solid var(--forest); outline-offset:2px; }
.br-zone.off { opacity:.55; cursor:not-allowed; }
.br-zone.off:hover { border-color:var(--border); color:var(--text-m); background:var(--surface); }
.br-zone-i { font-size:15px; font-weight:700; }
.br-ref-v .br-zone { height:100%; flex-direction:column; border:0; }

.br-media-x { flex:none; width:26px; height:26px; border:1px solid var(--border);
  border-radius:6px; background:var(--surface); color:var(--text-m); font-size:14px;
  line-height:1; cursor:pointer; }
.br-media-x:hover { background:var(--red-l); border-color:var(--red); color:var(--red); }

/* Formaten als knoppen: je kiest er meestal twee, en dan is aanvinken
   sneller dan een dropdown openklappen. */
.br-f--wide { grid-column:1 / -1; }
.br-sizes { display:flex; gap:6px; flex-wrap:wrap; }
.br-size { border:1px solid var(--border); background:var(--surface2); font:inherit;
  font-size:11.5px; font-weight:600; color:var(--text-m); padding:6px 11px;
  border-radius:7px; cursor:pointer; transition:background .15s ease, color .15s ease; }
.br-size:hover { background:var(--surface); color:var(--text); }
.br-size.on { background:var(--forest); border-color:var(--forest); color:#fff; }
.br-size:focus-visible { outline:2px solid var(--forest); outline-offset:2px; }

.br-grid--2 { grid-template-columns:1fr 1fr; }

.br-up { flex:none; display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; border:1px solid var(--border); border-radius:6px;
  background:var(--surface); color:var(--text-m); font-size:13px; font-weight:700;
  cursor:pointer; transition:background .15s ease, color .15s ease; }
.br-up:hover { background:var(--forest); border-color:var(--forest); color:#fff; }
.br-up:focus-within { outline:2px solid var(--forest); outline-offset:2px; }
.br-up.off { opacity:.45; cursor:not-allowed; }
.br-up.off:hover { background:var(--surface); border-color:var(--border); color:var(--text-m); }
.br-ref { display:grid; grid-template-columns:200px 1fr; gap:12px; align-items:start; }
.br-ref-v { border:1px solid var(--border); border-radius:8px; overflow:hidden;
  background:var(--surface2); aspect-ratio:9/16; display:flex; align-items:center;
  justify-content:center; font-size:11px; color:var(--text-s); text-align:center; padding:10px; }
.br-ref-v video { width:100%; height:100%; object-fit:cover; }
.br-assets { display:grid; grid-template-columns:repeat(auto-fill,minmax(96px,1fr)); gap:8px; }
.br-asset { position:relative; aspect-ratio:1; border:1px solid var(--border); border-radius:8px;
  overflow:hidden; background:var(--surface2); }
.br-asset img { width:100%; height:100%; object-fit:cover; display:block; }
.br-asset .rm { position:absolute; top:3px; right:3px; width:20px; height:20px; border:0;
  border-radius:5px; background:rgba(17,24,39,.72); color:#fff; font-size:13px; line-height:1;
  cursor:pointer; opacity:0; transition:opacity .15s ease; }
.br-asset:hover .rm { opacity:1; }
.br-asset-add { aspect-ratio:1; border:1px dashed var(--border); border-radius:8px;
  background:var(--surface); color:var(--text-s); font:inherit; font-size:11px; cursor:pointer;
  transition:border-color .15s ease, color .15s ease; }
.br-asset-add:hover { border-color:var(--forest); color:var(--forest); }

@media (max-width:1180px) { .br-kpis { grid-template-columns:repeat(3,1fr); } }
@media (max-width:900px)  { .br-grid { grid-template-columns:repeat(2,1fr); } }
@media (prefers-reduced-motion:reduce) {
  .br-drawer, .br-scrim, .br-chip, .br-card, .br-table tbody tr { transition:none !important; }
  .br-sk { animation:none; }
}

/* ─── PAGINA: Editing hub (editing-hub.html) ─────────────────────────────── */

/* ── Tabs ─────────────────────────────────────────────────────────── */
.eh-tabs { display:flex; gap:2px; border-bottom:1px solid var(--border); margin-bottom:22px; }
.eh-tab {
  appearance:none; background:none; border:none; cursor:pointer;
  padding:9px 15px; font-size:13px; font-weight:700; color:var(--text-m);
  border-bottom:2px solid transparent; margin-bottom:-1px; font-family:inherit;
  display:flex; align-items:center; gap:7px; transition:color .15s, border-color .15s;
}
.eh-tab:hover { color:var(--text); }
.eh-tab[aria-selected="true"] { color:var(--forest); border-bottom-color:var(--forest); }
.eh-tab svg { width:15px; height:15px; }
.eh-panel-tab[hidden] { display:none; }

/* ── Gedeeld ──────────────────────────────────────────────────────── */
.eh-sec-h {
  font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.06em;
  color:var(--text-s); margin:0 0 10px; display:flex; align-items:center; gap:10px;
}
.eh-sec-h .eh-sec-act { margin-left:auto; text-transform:none; letter-spacing:0; }
.eh-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(258px,1fr)); gap:13px; margin-bottom:26px; }

.eh-card { display:flex; flex-direction:column; background:var(--surface); border:1px solid var(--border);
           border-radius:var(--radius); padding:15px 16px; text-decoration:none; color:inherit;
           transition:border-color .15s, box-shadow .15s; }
a.eh-card:hover { border-color:var(--forest); box-shadow:var(--shadow-md); }
.eh-card-top { display:flex; align-items:center; gap:9px; margin-bottom:7px; }
.eh-ic { width:30px; height:30px; border-radius:var(--radius-sm); flex:none; display:grid; place-items:center;
         background:var(--forest-l); color:var(--forest); }
.eh-ic svg { width:15px; height:15px; }
.eh-name { font-size:13.5px; font-weight:800; color:var(--text); }
.eh-tag { margin-left:auto; font-size:9.5px; font-weight:700; padding:2px 6px; border-radius:var(--radius-xs);
          background:var(--border); color:var(--text-s); }
.eh-blurb { font-size:12.5px; color:var(--text-m); line-height:1.55; margin:0; }
.eh-card.is-soon { opacity:.6; cursor:default; }
.eh-card.is-soon .eh-ic { background:var(--border); color:var(--text-s); }

.eh-panel { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
            padding:6px 18px; margin-bottom:26px; }

.eh-leeg { padding:26px 18px; text-align:center; color:var(--text-s); font-size:12.5px; }

/* ── De poort ─────────────────────────────────────────────────────── */
.eh-gate {
  display:flex; gap:13px; align-items:flex-start;
  background:var(--forest); color:#fff; border-radius:var(--radius); padding:16px 18px; margin-bottom:24px;
}
.eh-gate-ic { width:34px; height:34px; border-radius:9px; flex:none; display:grid; place-items:center;
              background:rgba(255,255,255,.14); color:var(--lime); }
.eh-gate-ic svg { width:17px; height:17px; }
.eh-gate h2 { font-size:14.5px; font-weight:800; margin:0 0 4px; }
.eh-gate p { font-size:12.5px; line-height:1.6; margin:0; color:rgba(255,255,255,.82); }
.eh-gate code { background:rgba(255,255,255,.16); padding:1px 5px; border-radius:4px; font-size:12px; }

.eh-steps { counter-reset:st; }
.eh-step { display:flex; gap:12px; padding:11px 0; border-bottom:1px solid var(--border); }
.eh-step:last-child { border-bottom:none; }
.eh-step-n { width:22px; height:22px; border-radius:50%; flex:none; display:grid; place-items:center;
             background:var(--forest); color:#fff; font-size:11px; font-weight:800; }
.eh-step-t { font-size:13px; font-weight:700; color:var(--text); margin:0 0 2px; }
.eh-step-b { font-size:12.5px; color:var(--text-m); line-height:1.55; margin:0; }

/* ── Jouw werk ───────────────────────────────────────────────────────
   De brief stond eerder als "optioneel" in een dropdown met ieders briefs,
   dus je scrolde langs andermans werk om je eigen cut te vinden. Terwijl
   koppelen juist het hele punt is: zonder brief moet je het rapport daarna
   handmatig overzetten. Vandaar je eigen briefs vooraan, als keuze. */
.yw { margin-bottom:22px; }
.yw-kop { display:flex; align-items:baseline; gap:9px; margin-bottom:9px; }
.yw-kop h2 { font-size:12.5px; font-weight:800; text-transform:uppercase; letter-spacing:.06em;
             color:var(--text-s); margin:0; }
.yw-kop span { font-size:12px; color:var(--text-s); }
.yw-rij { display:flex; gap:9px; overflow-x:auto; padding-bottom:4px; }
.yw-kaart {
  flex:none; min-width:190px; max-width:230px; text-align:left; cursor:pointer;
  background:var(--card); border:1.5px solid var(--border); border-radius:11px;
  padding:11px 13px; font-family:inherit; transition:border-color .13s, box-shadow .13s;
}
.yw-kaart:hover { border-color:var(--forest); }
.yw-kaart.aan { border-color:var(--forest); box-shadow:0 0 0 3px var(--forest-l); }
.yw-kaart-t { font-size:12.5px; font-weight:700; color:var(--text); line-height:1.35;
              display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.yw-kaart-m { display:flex; align-items:center; gap:6px; margin-top:6px; font-size:11px; color:var(--text-s); }
.yw-st { font-size:9.5px; font-weight:800; letter-spacing:.04em; text-transform:uppercase;
         padding:2px 6px; border-radius:4px; background:var(--bg); border:1px solid var(--border); }
.yw-st.editing { background:#fef3c7; color:#92400e; border-color:transparent; }
.yw-st.klaar { background:var(--forest-l); color:var(--forest); border-color:transparent; }
.yw-geen { font-size:12.5px; color:var(--text-s); padding:11px 13px; background:var(--card);
           border:1px dashed var(--border); border-radius:11px; }

/* Waar de check nu voor draait, boven de dropzone. Zodat je nooit een cut
   tegen de verkeerde brief aanhoudt. */
.yw-actief { display:flex; align-items:center; gap:9px; margin-bottom:9px;
             font-size:12.5px; color:var(--text-m); }
.yw-actief b { color:var(--text); }
.yw-wissel { border:none; background:none; font-family:inherit; font-size:12px;
             font-weight:700; color:var(--forest); cursor:pointer; padding:0; }

/* ── Volgende stap na de check ───────────────────────────────────────── */
.eh-volgende { display:flex; align-items:center; gap:11px; flex-wrap:wrap;
               background:var(--card); border:1px solid var(--border);
               border-radius:12px; padding:14px 16px; margin-top:16px; }
.eh-volgende-t { flex:1; min-width:180px; font-size:12.5px; color:var(--text-m); line-height:1.5; }
.eh-volgende-t b { color:var(--text); }
.eh-verstuur { background:var(--forest); color:#fff; border:none; padding:10px 16px;
               border-radius:8px; font-size:13px; font-weight:700; cursor:pointer; font-family:inherit; }
.eh-verstuur:hover { opacity:.88; }
.eh-verstuur:disabled { opacity:.45; cursor:not-allowed; }

/* Slepen mag overal op de pagina, niet alleen op dat ene vakje. */
.eh-sleep-over { position:fixed; inset:0; z-index:500; display:none;
                 background:rgba(23,67,60,.86); place-items:center; color:#fff; }
body.eh-sleept .eh-sleep-over { display:grid; }
.eh-sleep-over p { font-size:18px; font-weight:800; }

/* ── Lijstrij (b-roll) ─────────────────────────────────────────────── */
.eh-rij {
  display:flex; align-items:center; gap:13px; padding:12px 0;
  border-bottom:1px solid var(--border);
}
.eh-rij:last-child { border-bottom:none; }
.eh-rij-tekst { min-width:0; flex:1; }
.eh-rij-t { font-size:13px; font-weight:700; color:var(--text); margin:0 0 2px;
            display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.eh-rij-b { font-size:12.5px; color:var(--text-m); line-height:1.5; margin:0; }
.eh-rij-acts { display:flex; gap:6px; flex:none; }

.eh-pil { font-size:9.5px; font-weight:800; padding:2px 7px; border-radius:99px;
          text-transform:uppercase; letter-spacing:.04em; }
.eh-pil--verplicht { background:var(--lime-soft); color:var(--forest); }
.eh-pil--cat { background:var(--surface2); color:var(--text-m); }

/* ── Review-check ─────────────────────────────────────────────────── */
.eh-check-grid { display:grid; grid-template-columns:minmax(0,380px) minmax(0,1fr);
                 gap:24px; align-items:start; max-width:1180px; }
@media (max-width:1100px) { .eh-check-grid { grid-template-columns:1fr; } }

.eh-drop {
  border:2px dashed var(--border); border-radius:var(--radius); background:var(--surface);
  padding:30px 20px; text-align:center; cursor:pointer;
  transition:border-color .15s, background .15s;
}
.eh-drop:hover, .eh-drop.is-over { border-color:var(--forest); background:var(--forest-l); }
.eh-drop.is-uit { opacity:.5; pointer-events:none; }
.eh-drop-ic { width:42px; height:42px; margin:0 auto 11px; border-radius:11px; display:grid; place-items:center;
              background:var(--forest-l); color:var(--forest); }
.eh-drop-ic svg { width:20px; height:20px; }
.eh-drop-t { font-size:13.5px; font-weight:800; color:var(--text); margin:0 0 4px; }
.eh-drop-b { font-size:12px; color:var(--text-m); margin:0; line-height:1.5; }

.eh-veld { margin-top:14px; }
.eh-veld label { display:block; font-size:11px; font-weight:800; text-transform:uppercase;
                 letter-spacing:.05em; color:var(--text-s); margin-bottom:6px; }
.eh-veld select, .eh-veld textarea, .eh-veld input[type=text], .eh-veld input[type=url] {
  width:100%; box-sizing:border-box; font-family:inherit; font-size:13px; color:var(--text);
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-sm);
  padding:8px 10px;
}
.eh-veld textarea { min-height:74px; resize:vertical; line-height:1.5; }
.eh-veld select:focus, .eh-veld textarea:focus, .eh-veld input:focus {
  outline:none; border-color:var(--forest); box-shadow:0 0 0 3px var(--forest-l);
}
.eh-hint { font-size:11.5px; color:var(--text-s); margin:6px 0 0; line-height:1.5; }

.eh-budget { display:flex; align-items:center; gap:8px; font-size:11.5px; color:var(--text-s); margin-top:12px; }
.eh-budget-bar { flex:1; height:4px; border-radius:99px; background:var(--surface2); overflow:hidden; }
.eh-budget-bar i { display:block; height:100%; background:var(--green); border-radius:99px; }
.eh-budget-bar i.is-vol { background:var(--red); }

/* voortgang */
.eh-fase { display:flex; align-items:center; gap:10px; padding:9px 0; font-size:12.5px; color:var(--text-m); }
.eh-fase-dot { width:16px; height:16px; border-radius:50%; flex:none; display:grid; place-items:center;
               background:var(--surface2); color:var(--text-s); font-size:9px; font-weight:800; }
.eh-fase.is-nu { color:var(--text); font-weight:700; }
.eh-fase.is-nu   .eh-fase-dot { background:var(--forest); color:#fff; }
.eh-fase.is-klaar .eh-fase-dot { background:var(--green-l); color:var(--green); }
.eh-spin { width:13px; height:13px; border:2px solid var(--forest-l); border-top-color:var(--forest);
           border-radius:50%; animation:ehspin .7s linear infinite; }
@keyframes ehspin { to { transform:rotate(360deg); } }

/* verdict */
.eh-verdict { display:flex; align-items:center; gap:12px; padding:15px 17px; border-radius:var(--radius);
              margin-bottom:16px; }
.eh-verdict--pass { background:var(--green-l); border:1px solid rgba(0,163,129,.3); }
.eh-verdict--fix { background:var(--yellow-l); border:1px solid rgba(202,138,4,.3); }
.eh-verdict--fout { background:var(--red-l); border:1px solid rgba(220,38,38,.3); }
.eh-verdict-t { font-size:14.5px; font-weight:800; color:var(--text); margin:0 0 3px; }
.eh-verdict-b { font-size:12.5px; color:var(--text-m); margin:0; line-height:1.55; }

.eh-fix { display:flex; gap:11px; padding:13px 0; border-bottom:1px solid var(--border); }
.eh-fix:last-child { border-bottom:none; }
.eh-fix input[type=checkbox] { margin-top:3px; width:15px; height:15px; flex:none; accent-color:var(--forest); cursor:pointer; }
.eh-fix.is-af .eh-fix-body { opacity:.45; text-decoration:line-through; }
.eh-fix-body { min-width:0; flex:1; }
.eh-fix-top { display:flex; align-items:center; gap:8px; margin-bottom:5px; flex-wrap:wrap; }
.eh-fix-t { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:12px; font-weight:700;
            color:var(--forest); background:var(--forest-l); padding:1px 6px; border-radius:var(--radius-xs); }
.eh-fix-titel { font-size:13px; font-weight:700; color:var(--text); }
.eh-fix-r { font-size:12.5px; color:var(--text-m); line-height:1.6; margin:2px 0 0; }
.eh-fix-r b { color:var(--text); font-weight:700; }
.eh-fix-r code { background:var(--surface2); padding:1px 5px; border-radius:4px;
                 font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:11.5px; color:var(--text); }

.eh-sev { font-size:9.5px; font-weight:800; padding:2px 7px; border-radius:99px; letter-spacing:.03em; }
.eh-sev--must { background:var(--red-l);    color:var(--red); }
.eh-sev--should { background:var(--yellow-l); color:var(--yellow); }
.eh-sev--maza { background:var(--blue-l);   color:var(--blue); }

.eh-meta-rij { display:flex; gap:18px; flex-wrap:wrap; font-size:11.5px; color:var(--text-s);
               padding:12px 0 0; border-top:1px solid var(--border); margin-top:6px; }

.eh-waarschuw { display:flex; gap:9px; padding:11px 13px; border-radius:var(--radius-sm);
                background:var(--yellow-l); border:1px solid rgba(202,138,4,.28);
                font-size:12px; color:var(--text); line-height:1.55; margin-bottom:14px; }
.eh-waarschuw svg { width:15px; height:15px; flex:none; color:var(--yellow); margin-top:1px; }

.eh-mini { font-size:11.5px; color:var(--text-s); }

/* modal-form */
.eh-form { display:flex; flex-direction:column; gap:13px; }
.eh-form-rij { display:grid; grid-template-columns:1fr 1fr; gap:12px; }

/* ─── PAGINA: Editor KPI (editor-kpi.html) ─────────────────────────────── */

.ek-periode { display:flex; gap:2px; flex:none; }
.ek-periode button { padding:7px 12px; border:1px solid var(--border); background:var(--surface);
  font:inherit; font-size:12.5px; font-weight:600; color:var(--text-m); cursor:pointer; }
.ek-periode button:first-child { border-radius:8px 0 0 8px; }
.ek-periode button:last-child { border-radius:0 8px 8px 0; }
.ek-periode button.on { background:var(--forest); border-color:var(--forest); color:#fff; }
.ek-periode button:focus-visible { outline:2px solid var(--forest); outline-offset:2px; }

.ek-sec { margin-bottom:26px; }
.ek-sec-h { display:flex; align-items:baseline; gap:10px; margin-bottom:11px;
  padding-bottom:7px; border-bottom:1px solid var(--border); }
.ek-sec-h h2 { font-size:11px; font-weight:700; letter-spacing:.8px; text-transform:uppercase;
  color:var(--text); margin:0; }
.ek-sec-h span { font-size:11.5px; color:var(--text-s); }

/* Eén kolom per persoon, zodat je ze naast elkaar leest in plaats van
   door een tabel te scannen. */
.ek-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:12px; }
.ek-card { background:var(--surface); border:1px solid var(--border); border-radius:12px;
  padding:16px; }
.ek-naam { display:flex; align-items:center; gap:9px; margin-bottom:14px; }
.ek-av { width:30px; height:30px; border-radius:50%; background:var(--forest); color:#fff;
  display:grid; place-items:center; font-size:12px; font-weight:800; flex:none; }
.ek-naam b { font-size:14px; font-weight:700; }

/* De hit rate als balk, niet als taartdiagram: bij kleine aantallen suggereert
   een taart een precisie die er niet is. */
.ek-hit { margin-bottom:14px; }
.ek-hit-top { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:6px; }
.ek-hit-val { font-size:24px; font-weight:800; letter-spacing:-.5px; line-height:1; }
.ek-hit-sub { font-size:11px; color:var(--text-s); }
.ek-bar { height:7px; border-radius:4px; background:var(--surface2); overflow:hidden; display:flex; }
.ek-bar i { display:block; height:100%; }
.ek-bar .w { background:var(--green); }
.ek-bar .l { background:var(--red); opacity:.55; }

.ek-rij { display:flex; align-items:baseline; justify-content:space-between; gap:10px;
  padding:7px 0; border-top:1px solid var(--border); font-size:12.5px; }
.ek-rij span { color:var(--text-m); }
.ek-rij b { font-weight:700; font-variant-numeric:tabular-nums; }
.ek-rij b.warn { color:var(--red); }
.ek-rij b.dim { color:var(--text-s); font-weight:600; }

.ek-leeg { padding:26px; text-align:center; font-size:13px; color:var(--text-s);
  background:var(--surface); border:1px solid var(--border); border-radius:12px; }
.ek-let { background:var(--yellow-l); border:1px solid rgba(202,138,4,.25); border-radius:10px;
  padding:12px 14px; font-size:12.5px; color:#7a5300; line-height:1.55; margin-bottom:20px; }
.ek-let b { font-weight:700; }

.ek-sk { height:150px; border-radius:12px; background:linear-gradient(90deg,
  var(--surface2) 25%, #e9ecf0 37%, var(--surface2) 63%);
  background-size:400% 100%; animation:eksk 1.3s ease infinite; }
@keyframes eksk { 0%{background-position:100% 50%} 100%{background-position:0 50%} }
@media (prefers-reduced-motion:reduce) { .ek-sk { animation:none; } }

/* Weekblok: vier tegels + trend-tabel van de laatste 8 weken. */
.ek-week { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:12px; }
@media (max-width:1100px) { .ek-week { grid-template-columns:repeat(2,1fr); } }
.ek-wtile { background:var(--surface); border:1px solid var(--border); border-radius:12px;
  padding:14px 16px; display:flex; flex-direction:column; gap:6px; }
.ek-wtile-l { font-size:11px; font-weight:700; letter-spacing:.6px; text-transform:uppercase;
  color:var(--text-s); }
.ek-wtile-v { font-size:26px; font-weight:800; letter-spacing:-.5px; line-height:1;
  font-variant-numeric:tabular-nums; }
.ek-wtile-v small { font-size:13px; font-weight:600; }
.ek-wtile-v .dim { color:var(--text-s); }
.ek-wtile-v.ok { color:var(--green); }
.ek-wtile-v.laag { color:var(--red); }
.ek-wtile-sub { font-size:11px; color:var(--text-s); margin-top:auto; }
.ek-hit-val.ok { color:var(--green); }
.ek-hit-val.laag { color:var(--red); }

.ek-whits { display:flex; flex-direction:column; }
.ek-whit { display:flex; align-items:baseline; justify-content:space-between; gap:10px;
  padding:3px 0; font-size:12.5px; }
.ek-whit span { color:var(--text-m); }
.ek-whit b { font-weight:700; font-variant-numeric:tabular-nums; }
.ek-whit b.ok { color:var(--green); }
.ek-whit b.laag { color:var(--red); }
.ek-whit .dim, .ek-whit b.dim { color:var(--text-s); font-weight:600; }

.ek-trend { width:100%; border-collapse:separate; border-spacing:0; background:var(--surface);
  border:1px solid var(--border); border-radius:12px; overflow:hidden; font-size:12.5px; }
.ek-trend th { text-align:left; padding:8px 14px; font-size:11px; font-weight:700;
  letter-spacing:.6px; text-transform:uppercase; color:var(--text-s);
  border-bottom:1px solid var(--border); background:var(--surface2); }
.ek-trend td { padding:7px 14px; border-bottom:1px solid var(--border);
  font-variant-numeric:tabular-nums; }
.ek-trend tr:last-child td { border-bottom:none; }
.ek-trend tr.nu td { font-weight:700; }
.ek-trend td.ok { color:var(--green); }
.ek-trend td.laag { color:var(--red); }
.ek-trend td.dim { color:var(--text-s); }

/* ─── PAGINA: AI Knowledge Base (knowledge-base.html) ─────────────────────────────── */
.save-btn {
  padding: 8px 20px; border-radius: var(--radius-sm);
  background: var(--forest); color: white;
  font-size: 13px; font-weight: 700; border: none; cursor: pointer;
  transition: opacity .15s; display: flex; align-items: center; gap: 6px;
}
.save-btn:hover { opacity: .85; }
.save-btn:disabled { opacity: .5; cursor: default; }
.save-status { font-size: 12px; color: var(--text-s); }

.intro {
  background: var(--forest); color: white;
  border-radius: var(--radius); padding: 20px 24px; margin-bottom: 28px;
  display: flex; align-items: center; gap: 16px;
}
.intro-icon { font-size: 32px; flex-shrink: 0; }
.intro-title { font-size: 16px; font-weight: 800; margin-bottom: 4px; }
.intro-desc { font-size: 13px; color: rgba(255,255,255,.7); line-height: 1.5; }
.intro-badge {
  margin-left: auto; background: var(--lime); color: var(--forest);
  font-size: 10px; font-weight: 800; padding: 4px 10px; border-radius: 20px;
  white-space: nowrap; flex-shrink: 0;
}

.kb-sections { display: flex; flex-direction: column; gap: 16px; }
.kb-card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden;
}
.kb-card-head {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 18px; border-bottom: 1px solid var(--border); background: var(--bg);
}
.kb-card-icon {
  width: 36px; height: 36px; border-radius: 8px;
  display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0;
}
.kb-card-icon.green { background: #dcfce7; }
.kb-card-icon.blue { background: #dbeafe; }
.kb-card-icon.orange { background: #ffedd5; }
.kb-card-icon.purple { background: #ede9fe; }
.kb-card-icon.yellow { background: #fef9c3; }
.kb-card-title { font-size: 14px; font-weight: 700; color: var(--text); }
.kb-card-desc { font-size: 12px; color: var(--text-m); margin-top: 1px; }
.kb-updated { margin-left: auto; font-size: 11px; color: var(--text-s); }
.kb-card-body { padding: 16px 18px; }

textarea {
  width: 100%; min-height: 120px;
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  padding: 12px 14px; font-size: 13px; line-height: 1.6;
  font-family: inherit; color: var(--text); background: var(--surface);
  resize: vertical; transition: border-color .15s; outline: none;
}
textarea:focus { border-color: var(--forest); box-shadow: 0 0 0 3px var(--forest-l); }
textarea::placeholder { color: var(--text-s); }
.char-count { font-size: 11px; color: var(--text-s); text-align: right; margin-top: 4px; }

.settings-toast {
  position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(20px);
  background: var(--forest); color: white;
  padding: 10px 20px; border-radius: 8px; font-size: 13px; font-weight: 600;
  opacity: 0; transition: all .25s; pointer-events: none; z-index: 999;
}
.settings-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
.settings-toast.error { background: var(--red); }

/* ─── PAGINA: Recaps (recaps.html) ─────────────────────────────── */
/* ── Kop ─────────────────────────────────────────────────────────── */
.rc-head h1 { font-size:27px; font-weight:800; color:var(--text); letter-spacing:-.4px; margin:0; }
.rc-head p { font-size:13.5px; color:var(--text-m); margin:6px 0 0; line-height:1.55; }

/* Periode-tabs. Daily/Weekly/Monthly zijn drie verschillende vragen, geen
   filter op dezelfde lijst — vandaar tabs en geen dropdown. */
.rc-tabs { display:flex; gap:4px; margin:26px 0 22px; }
.rc-tab {
  padding:8px 17px; border:none; border-radius:9px; background:transparent;
  font-size:13.5px; font-weight:600; color:var(--text-m); cursor:pointer;
  font-family:inherit; transition:.12s;
}
.rc-tab:hover { background:var(--bg); color:var(--text); }
.rc-tab.aan { background:var(--lime-l, #fff1e9); color:var(--accent, #e8590c); font-weight:700; }

/* ── Lijst ───────────────────────────────────────────────────────── */
.rc-rij {
  display:block; background:var(--card); border:1px solid var(--border);
  border-radius:12px; margin-bottom:11px; text-decoration:none; color:inherit;
  transition:.12s; overflow:hidden;
}
.rc-rij:hover { border-color:var(--forest); transform:translateY(-1px); }
.rc-rij-top { display:flex; align-items:center; justify-content:space-between;
              gap:14px; padding:13px 17px; }
.rc-rij-titel { font-size:14px; font-weight:700; color:var(--text); }
.rc-rij-bod { display:flex; align-items:center; justify-content:space-between;
              gap:14px; padding:11px 17px; border-top:1px solid var(--border);
              background:var(--bg); }
.rc-rij-sub { font-size:12.5px; color:var(--text-m); overflow:hidden;
              text-overflow:ellipsis; white-space:nowrap; }
.rc-rij-key { font-size:12px; color:var(--text-s); font-weight:700; flex:none; }
.rc-rij:hover .rc-rij-key { color:var(--forest); }
.rc-vlag {
  font-size:10.5px; font-weight:700; padding:3px 8px; border-radius:20px;
  letter-spacing:.02em; white-space:nowrap;
}
.rc-vlag.klaar { background:var(--forest-l); color:var(--forest); }
.rc-vlag.cijfer { background:var(--bg); color:var(--text-s); border:1px solid var(--border); }

/* ── Detail ──────────────────────────────────────────────────────── */
.rc-terug {
  display:inline-flex; align-items:center; gap:6px; font-size:13px; font-weight:600;
  color:var(--text-m); text-decoration:none; margin-bottom:14px;
}
.rc-terug:hover { color:var(--forest); }
.rc-d-top { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.rc-d-titel { font-size:31px; font-weight:800; color:var(--text); letter-spacing:-.5px; margin:0; line-height:1.1; }
.rc-d-sub { font-size:13px; color:var(--text-m); margin:7px 0 0; }
.rc-deel { display:flex; align-items:center; gap:11px; }
.rc-deel-st { font-size:12.5px; color:var(--text-s); }
.rc-knop {
  padding:7px 15px; border:1px solid var(--border); border-radius:8px; background:var(--card);
  font-size:12.5px; font-weight:600; color:var(--text); cursor:pointer; font-family:inherit;
}
.rc-knop:hover { border-color:var(--forest); color:var(--forest); }

/* Het verhaal. Staat bovenaan omdat je dat leest voordat je naar cijfers kijkt. */
.rc-proza {
  background:var(--card); border:1px solid var(--border); border-radius:13px;
  padding:19px 22px; margin:22px 0 20px;
}
.rc-proza h2 { font-size:16px; font-weight:800; color:var(--text); margin:0 0 9px; letter-spacing:-.2px; }
.rc-proza p { font-size:13.5px; color:var(--text-m); line-height:1.65; margin:0 0 11px; }
.rc-proza p:last-child { margin-bottom:0; }
.rc-proza .rc-leeg { font-style:italic; color:var(--text-s); }
.rc-blok-t {
  font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.06em;
  color:var(--text-s); margin:16px 0 6px;
}
.rc-lijst { margin:0; padding-left:19px; }
.rc-lijst li { font-size:13.5px; color:var(--text-m); line-height:1.6; margin-bottom:5px; }

/* Datakwaliteitsvlaggen. Bewust bovenaan: als een blok geen data heeft moet
   je dat weten vóór je de cijfers eronder leest, niet erna. */
.rc-flags { display:flex; flex-direction:column; gap:7px; margin-bottom:18px; }
.rc-flag {
  display:flex; gap:9px; align-items:flex-start; padding:10px 14px; border-radius:10px;
  border:1px solid #e8d9a8; background:#fdfaf1; font-size:12.5px; line-height:1.55; color:var(--text);
}
.rc-flag b { font-weight:700; text-transform:capitalize; }

/* ── KPI-kaarten ─────────────────────────────────────────────────── */
.rc-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(168px,1fr)); gap:12px; margin-bottom:22px; }
.rc-kpi { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:14px 16px; }
.rc-kpi-h { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.rc-kpi-l { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text-s); }
.rc-kpi-v { font-size:24px; font-weight:800; color:var(--text); letter-spacing:-.6px; margin-top:7px; line-height:1.05;
            font-variant-numeric:tabular-nums; }
.rc-kpi-b { font-size:11.5px; color:var(--text-s); margin-top:4px; }
.rc-kpi-doel { font-size:11px; color:var(--text-s); margin-top:5px; }
/* Groen = beter dan de basislijn, rood = slechter. Voor kosten en tickets
   draait dat om: minder is dan juist goed. Dat zit in `invert`. */
.rc-d { display:inline-flex; align-items:center; gap:3px; font-size:11px; font-weight:800;
        padding:2px 6px; border-radius:5px; font-variant-numeric:tabular-nums; }
.rc-d.op { background:var(--forest-l); color:var(--forest); }
.rc-d.neer { background:#fdf1ef; color:#c0392b; }
.rc-d.vlak { background:var(--bg); color:var(--text-s); }
.rc-kpi.geen .rc-kpi-v { color:var(--text-s); font-size:15px; font-weight:700; letter-spacing:0; }

/* Chips onder het verhaal: venster, basislijn, hoeveel bronnen meededen. */
.rc-chips { display:flex; gap:7px; flex-wrap:wrap; margin-top:15px; }
.rc-chip {
  display:inline-flex; align-items:center; gap:6px; font-size:11.5px; color:var(--text-m);
  background:var(--bg); border:1px solid var(--border); border-radius:20px; padding:4px 11px;
}
.rc-chip b { font-weight:800; color:var(--text-s); text-transform:uppercase;
             letter-spacing:.05em; font-size:10px; }

/* Onderregel van een KPI-kaart: basislijn links, sparkline rechts. */
.rc-kpi-onder { display:flex; align-items:flex-end; justify-content:space-between; gap:8px; margin-top:5px; }
.rc-spark { width:56px; height:20px; flex:none; display:block; }
.rc-spark svg { width:100%; height:100%; display:block; }

/* ── Kaart met een grafiek/tabel ─────────────────────────────────── */
.rc-kaart { background:var(--card); border:1px solid var(--border); border-radius:13px;
            padding:18px 20px; margin-bottom:18px; }
.rc-kaart-h { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; margin-bottom:3px; }
.rc-kaart-h h3 { font-size:14.5px; font-weight:700; color:var(--text); margin:0; letter-spacing:-.1px; }
.rc-kaart-h p { font-size:12.5px; color:var(--text-m); margin:3px 0 0; line-height:1.5; }
.rc-legenda { display:flex; align-items:center; gap:13px; flex:none; }
.rc-leg { display:inline-flex; align-items:center; gap:5px; font-size:11.5px; color:var(--text-m); font-weight:600; }
.rc-leg i { width:9px; height:9px; border-radius:2.5px; display:block; }
.rc-kaart-r { display:flex; align-items:center; gap:12px; flex:none; }
.rc-tbl-knop {
  display:inline-flex; align-items:center; gap:6px; padding:6px 11px; border-radius:8px;
  border:1px solid var(--border); background:var(--card); font-size:12px; font-weight:600;
  color:var(--text-m); cursor:pointer; font-family:inherit; white-space:nowrap;
}
.rc-tbl-knop svg { width:13px; height:13px; }
.rc-tbl-knop:hover { border-color:var(--forest); color:var(--forest); }
.rc-tbl-knop.aan { background:var(--forest); border-color:var(--forest); color:#fff; }

/* Brede tabellen scrollen in hun eigen kader, nooit de hele pagina. */
.rc-tbl-wrap { overflow-x:auto; }
table.rc-tbl { width:100%; border-collapse:collapse; }
table.rc-tbl th, table.rc-tbl td {
  padding:8px 12px; text-align:left; font-size:12.5px; border-bottom:1px solid var(--border);
  white-space:nowrap;
}
table.rc-tbl th { font-size:10.5px; font-weight:800; text-transform:uppercase;
                  letter-spacing:.05em; color:var(--text-s); }
table.rc-tbl td { color:var(--text-m); }
table.rc-tbl td:first-child { color:var(--text); font-weight:600; }
table.rc-tbl tr:last-child td { border-bottom:none; }
table.rc-tbl .num { text-align:right; font-variant-numeric:tabular-nums; }

/* ── Waar de spend heen ging ─────────────────────────────────────── */
.rc-mv { display:flex; flex-direction:column; gap:2px; }
.rc-mv-rij { padding:9px 0; border-bottom:1px solid var(--border); }
.rc-mv-rij:last-child { border-bottom:none; }
.rc-mv-top { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.rc-mv-naam { font-size:12.5px; font-weight:600; color:var(--text);
              overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rc-mv-bedrag { font-size:11.5px; font-weight:800; padding:2px 7px; border-radius:5px;
                flex:none; font-variant-numeric:tabular-nums; }
.rc-mv-bedrag.op { background:var(--forest-l); color:var(--forest); }
.rc-mv-bedrag.neer { background:#fdf1ef; color:#c0392b; }
/* Balk vanuit het midden: naar rechts is meer spend, naar links minder.
   Zo zie je richting én omvang in één blik. */
.rc-mv-baan { position:relative; height:5px; margin:7px 0 5px; }
.rc-mv-baan::before { content:''; position:absolute; left:50%; top:-2px; bottom:-2px;
                      width:1px; background:var(--border); }
.rc-mv-balk { position:absolute; height:5px; border-radius:3px; top:0; }
.rc-mv-balk.op { background:#2f9e6e; }
.rc-mv-balk.neer { background:#e8817a; }
.rc-mv-sub { font-size:11.5px; color:var(--text-s); font-variant-numeric:tabular-nums; }
.rc-mv-rest { font-size:11.5px; color:var(--text-s); margin-top:9px; padding-top:9px;
              border-top:1px dashed var(--border); }
.rc-mv-note { font-size:11.5px; color:var(--text-s); margin:11px 0 0; line-height:1.5; font-style:italic; }

/* ── Anomaly board ───────────────────────────────────────────────── */
.rc-an { display:flex; flex-direction:column; gap:11px; }
.rc-an-k { border:1px solid var(--border); border-radius:11px; padding:13px 16px; background:var(--card); }
.rc-an-h { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.rc-an-code { display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:800;
              color:#c0392b; background:#fdf1ef; padding:3px 9px; border-radius:20px; letter-spacing:.02em; }
.rc-an-set { font-size:11.5px; color:var(--text-s); overflow:hidden; text-overflow:ellipsis;
             white-space:nowrap; max-width:46%; text-align:right; }
.rc-an-bewijs { font-size:12.5px; color:var(--text-m); margin:8px 0 0; line-height:1.55; }
.rc-an-actie { font-size:12.5px; color:var(--text); margin:5px 0 0; line-height:1.55; font-weight:600; }
.rc-an-link { display:inline-flex; align-items:center; gap:5px; font-size:12.5px; font-weight:600;
              color:var(--accent, #e8590c); text-decoration:none; margin-top:9px; }
.rc-an-link:hover { text-decoration:underline; }

/* Bron die er niet is: geen getal, wel de reden. */
.rc-geen { border:1px dashed var(--border); border-radius:12px; padding:15px 17px; background:var(--card); }
.rc-geen h4 { margin:0 0 4px; font-size:12.5px; font-weight:800; color:var(--text); }
.rc-geen p { margin:0; font-size:12.5px; color:var(--text-m); line-height:1.55; }
.rc-leegst { padding:34px; text-align:center; font-size:13px; color:var(--text-s);
             background:var(--card); border:1px solid var(--border); border-radius:13px; }
.rc-leegst p { margin:0 0 4px; line-height:1.6; }
.rc-leegst-t { font-size:14px; font-weight:700; color:var(--text); }
.rc-leegst-k { margin-top:14px; }
.rc-leegst-fout { margin-top:11px; color:#c0392b; font-size:12.5px; }
.rc-tab-n { margin-left:7px; font-size:11px; font-weight:800; opacity:.6;
            font-variant-numeric:tabular-nums; }
.rc-toast { margin:14px 0 0; padding:11px 15px; border-radius:10px; font-size:12.5px; line-height:1.55; }
.rc-toast.ok { background:var(--forest-l); color:var(--forest); border:1px solid var(--forest); }
.rc-toast.err { background:#fdf1ef; color:#c0392b; border:1px solid #e7bcb5; }

/* ─── PAGINA: Roadmap (roadmap.html) ─────────────────────────────── */
/* Desktop-first. Twee tabs: Doelen (volgorde links, per doel een afvinklijst rechts)
   en Deze week (rollend 7 dagen, gegroepeerd op klusje / taak / project). */

.rm-wrap { max-width:1260px; }

/* Topbar-filters */
.rm-select { background:var(--surface2); border:1px solid var(--border); border-radius:var(--radius-sm); font-size:12px; padding:5px 8px; color:var(--text); font-family:inherit; }
.rm-select:focus { outline:none; border-color:var(--forest); box-shadow:0 0 0 3px var(--forest-l); }
.rm-toggle { font-size:12px; color:var(--text-m); display:inline-flex; align-items:center; gap:6px; cursor:pointer; user-select:none; white-space:nowrap; }
.rm-toggle input { accent-color:var(--forest); }
[data-topbar-right] .rm-toggle { margin-left:10px; }

/* Statusregel */
.rm-strip { display:flex; gap:22px; flex-wrap:wrap; font-size:12.5px; color:var(--text-m); padding:0 0 14px; margin-bottom:18px; border-bottom:1px solid var(--border); }
.rm-strip b { color:var(--text); font-weight:800; }
.rm-strip .alert, .rm-strip .alert b { color:var(--red); }

/* Doelen-board: rail links, doelen rechts */
.rm-board { display:grid; grid-template-columns:270px minmax(0,1fr); gap:28px; align-items:start; }
.rm-rail { position:sticky; top:0; display:flex; flex-direction:column; gap:2px; }
.rm-rail-i { display:grid; grid-template-columns:24px 1fr; gap:10px; align-items:center; padding:7px 9px; border-radius:var(--radius-sm); text-decoration:none; color:var(--text); position:relative; }
.rm-rail-i:hover { background:var(--surface2); }
.rm-rail-nr { width:24px; height:24px; border-radius:50%; background:var(--forest); color:var(--lime); font-size:11px; font-weight:800; display:inline-flex; align-items:center; justify-content:center; }
.rm-rail-i.af .rm-rail-nr { background:var(--green-l); color:var(--green); }
.rm-rail-i.laat .rm-rail-nr { background:var(--red); color:#fff; }
.rm-rail-t { font-size:12.5px; font-weight:600; line-height:1.3; min-width:0; }
.rm-rail-t small { display:block; font-size:10.5px; font-weight:500; color:var(--text-s); margin-top:1px; }
.rm-rail-i.af .rm-rail-t { color:var(--text-s); text-decoration:line-through; }
.rm-rail-bar { grid-column:2; height:3px; background:var(--surface2); border-radius:2px; overflow:hidden; }
.rm-rail-bar i { display:block; height:100%; background:var(--forest); }
.rm-rail-i:not(:last-child):before { content:''; position:absolute; left:20px; top:34px; bottom:-6px; width:2px; background:var(--border); }

.rm-doel { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:18px 20px 12px; margin-bottom:18px; scroll-margin-top:12px; }
.rm-doel.af { opacity:.7; }
.rm-doel-h { display:grid; grid-template-columns:34px 1fr auto; gap:14px; align-items:start; }
.rm-doel-nr { width:34px; height:34px; border-radius:50%; background:var(--forest); color:var(--lime); font-size:15px; font-weight:800; display:inline-flex; align-items:center; justify-content:center; }
.rm-doel.af .rm-doel-nr { background:var(--green-l); color:var(--green); }
.rm-doel-tt h2 { font-size:16px; font-weight:800; margin:5px 0 4px; line-height:1.3; }
.rm-doel-tt p { font-size:12.5px; color:var(--text-m); line-height:1.5; margin:0; max-width:70ch; }
.rm-doel-meta { text-align:right; font-size:12px; color:var(--text-s); white-space:nowrap; padding-top:6px; }
.rm-doel-meta b { display:block; font-size:13px; color:var(--text); font-weight:800; }
.rm-doel-meta b.alert { color:var(--red); }
.rm-doel-bar { height:5px; background:var(--surface2); border-radius:3px; overflow:hidden; margin:12px 0 10px; }
.rm-doel-bar i { display:block; height:100%; background:var(--forest); }
.rm-doel-soorten { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:10px; }
.rm-klaar-n { font-size:12px; color:var(--text-s); padding:8px 6px 2px; }

/* Soort-tag */
.rm-soort { display:inline-block; font-size:10px; font-weight:800; padding:2px 8px; border-radius:20px; text-transform:uppercase; letter-spacing:.04em; white-space:nowrap; }
.rm-soort.klusje  { background:var(--lime-soft); color:var(--forest); }
.rm-soort.taak    { background:var(--forest-l); color:var(--forest); }
.rm-soort.project { background:var(--forest); color:var(--lime); }

/* Koppen (deze week) */
.rm-h { display:flex; align-items:baseline; gap:9px; margin:26px 0 8px; font-size:14px; font-weight:800; color:var(--text); }
.rm-h:first-child { margin-top:0; }
.rm-h .n { font-size:11px; font-weight:700; color:var(--text-m); background:var(--surface2); padding:1px 8px; border-radius:9px; }
.rm-h em { font-style:normal; font-weight:500; font-size:12px; color:var(--text-s); }
.rm-wk { font-size:11px; font-weight:700; color:var(--text-s); margin:14px 0 5px; display:flex; align-items:center; gap:8px; }

/* Rij: checkbox · nr · titel · soort · wie · deadline · status */
.rm-row { display:grid; grid-template-columns:20px 22px minmax(0,1fr) 78px 140px 70px 70px; gap:12px; align-items:center;
          border-top:1px solid var(--border); padding:9px 6px; cursor:pointer; transition:background .12s; }
.rm-doel .rm-row:first-of-type { border-top:none; }
.rm-row:hover { background:var(--surface2); border-radius:var(--radius-xs); }
.rm-row.eerst { background:var(--lime-soft); border-radius:var(--radius-xs); }
.rm-row.over .rm-row-t { color:var(--red); }
.rm-row.done .rm-row-t { text-decoration:line-through; color:var(--text-s); }
.rm-row.done .rm-who, .rm-row.done .rm-date, .rm-row.done .rm-soort { opacity:.5; }
.rm-check { display:flex; align-items:center; justify-content:center; }
.rm-check input { width:15px; height:15px; accent-color:var(--forest); cursor:pointer; }
.rm-nr { font-size:11px; font-weight:800; color:var(--text-s); text-align:right; font-variant-numeric:tabular-nums; }
.rm-main { min-width:0; }
.rm-row-t { font-size:13.5px; line-height:1.4; color:var(--text); }
.rm-p1 { display:inline-flex; width:14px; height:14px; border-radius:50%; background:var(--red); color:#fff; font-size:10px; font-weight:800; align-items:center; justify-content:center; margin-right:6px; vertical-align:1px; }
.rm-id { font-size:10.5px; font-weight:700; color:var(--text-s); margin-left:4px; }
.rm-row-sub { font-size:12px; color:var(--text-m); margin-top:2px; line-height:1.4; }
.rm-row-sub.wait { color:var(--red); font-weight:600; }
.rm-who { font-size:12px; color:var(--text-m); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rm-date { font-size:12px; color:var(--text-m); font-variant-numeric:tabular-nums; white-space:nowrap; }
.rm-date.over { color:var(--red); font-weight:700; }
.rm-state { display:flex; align-items:center; justify-content:flex-end; gap:6px; }
.rm-pill { font-size:10px; font-weight:800; padding:2px 8px; border-radius:20px; text-transform:uppercase; letter-spacing:.03em; white-space:nowrap; }
.s-doing   { background:var(--blue-l);  color:var(--blue); }
.s-blocked { background:var(--red-l);   color:var(--red); }
.rm-steps { font-size:10.5px; font-weight:700; color:var(--text-s); font-variant-numeric:tabular-nums; }
.rm-empty-s { font-size:12.5px; color:var(--text-s); padding:10px 4px; }
.rm-empty { text-align:center; padding:44px 20px; color:var(--text-s); font-size:14px; }
.rm-err { background:var(--red-l); color:var(--red); padding:13px 16px; border-radius:var(--radius-sm); font-size:13px; margin-bottom:16px; }

/* Drawer */
.rm-bg { position:fixed; inset:0; background:rgba(0,0,0,.45); display:none; align-items:flex-start; justify-content:center; z-index:60; overflow-y:auto; padding:44px 16px; }
.rm-bg.open { display:flex; }
.rm-modal { background:var(--surface); border-radius:14px; width:100%; max-width:700px; padding:24px 28px; box-shadow:var(--shadow-lg); }
.rm-m-id { font-size:11px; font-weight:700; color:var(--text-s); }
.rm-m-id b { font-weight:800; color:var(--text-m); }
.rm-m-id .alert { color:var(--red); }
.rm-m-id .p1 { color:var(--red); }
.rm-m-t { font-size:19px; font-weight:800; line-height:1.3; margin:5px 0 10px; }
.rm-m-line { display:flex; gap:16px; flex-wrap:wrap; font-size:12.5px; color:var(--text-m); align-items:center; }
.rm-m-line b { color:var(--text); }
.rm-m-status { display:flex; gap:6px; flex-wrap:wrap; margin:14px 0 4px; align-items:center; }
.rm-sbtn { padding:6px 13px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); font-size:12px; font-weight:700; cursor:pointer; color:var(--text-m); font-family:inherit; }
.rm-sbtn:hover { border-color:var(--forest); color:var(--forest); }
.rm-sbtn.on { background:var(--forest); border-color:var(--forest); color:#fff; }
.rm-sbtn.del { margin-left:auto; color:var(--red); border-color:transparent; }
.rm-sbtn.del:hover { background:var(--red-l); border-color:var(--red-l); color:var(--red); }
.rm-m-sec { margin-top:16px; padding-top:14px; border-top:1px solid var(--border); }
.rm-m-sec h4 { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:var(--text-m); margin:0 0 6px; display:flex; align-items:center; gap:8px; }
.rm-m-sec p { font-size:13.5px; line-height:1.6; color:var(--text); margin:0; }
.rm-m-foot { font-size:11.5px; color:var(--text-s); line-height:1.6; }
.rm-m-more { margin-top:14px; }
.rm-m-more summary { font-size:12px; font-weight:700; color:var(--text-m); cursor:pointer; }
.rm-stappen { display:flex; flex-direction:column; gap:2px; }
.rm-stap { display:grid; grid-template-columns:18px 1fr; gap:10px; align-items:start; font-size:13px; line-height:1.5; padding:6px 8px; border-radius:var(--radius-xs); cursor:pointer; }
.rm-stap:hover { background:var(--surface2); }
.rm-stap input { margin-top:4px; accent-color:var(--forest); }
.rm-stap.ok span { color:var(--text-s); text-decoration:line-through; }
.rm-stap.next { background:var(--lime-soft); }
.rm-close { background:transparent; border:none; font-size:22px; cursor:pointer; color:var(--text-s); float:right; line-height:1; padding:0; }
.rm-dep { display:inline-block; font-size:11.5px; font-weight:600; padding:3px 8px; border-radius:var(--radius-xs); background:var(--surface2); color:var(--text-m); margin:2px 6px 4px 0; cursor:pointer; }
.rm-dep:hover { outline:1px solid var(--forest); }

@media (max-width:1180px) {
  .rm-board { grid-template-columns:1fr; }
  .rm-rail { position:static; flex-direction:row; flex-wrap:wrap; }
  .rm-rail-i:before { display:none; }
  .rm-row { grid-template-columns:20px 22px minmax(0,1fr) 78px 110px 70px 64px; }
}
@media (max-width:820px) {
  .rm-row { grid-template-columns:20px minmax(0,1fr) 70px; }
  .rm-row .rm-nr, .rm-row .rm-soort, .rm-row .rm-who, .rm-row .rm-state { display:none; }
}

/* ─── PAGINA: Settings (settings.html) ─────────────────────────────── */
.se-wrap { max-width:760px; }

.se-sec { background:var(--card); border:1px solid var(--border); border-radius:13px; margin-bottom:16px; }
.se-sec-h { display:flex; align-items:center; gap:10px; padding:15px 18px; border-bottom:1px solid var(--border); }
.se-sec-ic { width:30px; height:30px; border-radius:8px; flex:none; display:grid; place-items:center;
             background:var(--forest-l); color:var(--forest); }
.se-sec-ic svg { width:15px; height:15px; }
.se-sec-t { font-size:14px; font-weight:800; color:var(--text); }
.se-sec-d { font-size:12px; color:var(--text-s); margin-top:1px; }
.se-sec-b { padding:17px 18px; }

.se-row { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.se-f label { display:block; font-size:11.5px; font-weight:700; color:var(--text-m); margin-bottom:5px; }
.se-f input { width:100%; padding:10px 12px; border:1px solid var(--border); border-radius:8px;
              font-size:13.5px; font-family:inherit; box-sizing:border-box; background:var(--card); color:var(--text); }
.se-f input:focus { outline:none; border-color:var(--forest); }
.se-f input:disabled { background:var(--bg); color:var(--text-s); }
.se-hint { font-size:11.5px; color:var(--text-s); margin-top:5px; line-height:1.5; }

.se-btn { background:var(--forest); color:#fff; border:none; padding:10px 17px; border-radius:8px;
          font-size:13px; font-weight:700; cursor:pointer; font-family:inherit; }
.se-btn:hover { opacity:.88; }
.se-btn:disabled { opacity:.45; cursor:not-allowed; }
.se-btn--ghost { background:transparent; color:var(--text-m); border:1px solid var(--border); }
.se-btn--ghost:hover { background:var(--bg); color:var(--text); opacity:1; }
.se-actions { display:flex; align-items:center; gap:10px; margin-top:16px; }
.se-status { font-size:12px; color:var(--text-s); }
.se-status.ok { color:var(--forest); font-weight:600; }
.se-status.err { color:var(--danger,#dc2626); font-weight:600; }

/* ── foto ── */
.se-avatar { display:flex; align-items:center; gap:16px; margin-bottom:18px; }
.se-av-img { width:72px; height:72px; border-radius:50%; flex:none; object-fit:cover;
             border:1px solid var(--border); background:var(--forest); color:#fff;
             display:grid; place-items:center; font-size:26px; font-weight:800; overflow:hidden; }
.se-av-img img { width:100%; height:100%; object-fit:cover; }

/* ── schakelaars ── */
.se-tog { display:flex; align-items:flex-start; gap:13px; padding:13px 0; border-bottom:1px solid var(--border); }
.se-tog:last-child { border-bottom:none; }
.se-tog-t { font-size:13.5px; font-weight:700; color:var(--text); }
.se-tog-d { font-size:12px; color:var(--text-m); margin-top:2px; line-height:1.5; }
.se-tog-d code { background:var(--bg); padding:1px 5px; border-radius:4px; font-size:11.5px; }
.se-sw { position:relative; width:40px; height:23px; flex:none; margin-left:auto; }
.se-sw input { opacity:0; width:0; height:0; }
.se-sw span { position:absolute; inset:0; background:var(--border); border-radius:23px; cursor:pointer; transition:.18s; }
.se-sw span::before { content:""; position:absolute; width:17px; height:17px; left:3px; top:3px;
                      background:#fff; border-radius:50%; transition:.18s; }
.se-sw input:checked + span { background:var(--forest); }
.se-sw input:checked + span::before { transform:translateX(17px); }
.se-tog.is-soon { opacity:.55; }

/* ─── SHARED: stat-kaarten + alert-rijen (gebruikt door supply.html) ───────── */
/* Ooit de Stats-pagina; die is op 9 sep 2026 verwijderd. Deze classes blijven
   omdat supply.html ze gebruikt voor de KPI-kaarten en de actielijst. */

.st-sec { margin-bottom:26px; }
.st-sec-h { display:flex; align-items:center; gap:9px; margin-bottom:10px; }
.st-sec-h h2 { font-size:13px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text-s); margin:0; }

.st-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:12px; }
.st-card { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:14px 16px; }
.st-card-lbl { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--text-s); }
.st-card-val { font-size:25px; font-weight:800; color:var(--text); letter-spacing:-.5px; margin-top:5px; line-height:1.1; }
.st-card-sub { font-size:11.5px; color:var(--text-s); margin-top:3px; }

.co-alerts { display:flex; flex-direction:column; gap:7px; margin-bottom:12px; }
.co-alert {
  display:flex; gap:10px; align-items:flex-start; padding:11px 14px;
  border-radius:10px; border:1px solid var(--border); background:var(--card);
  font-size:12.5px; line-height:1.5; color:var(--text);
}
.co-alert .co-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; margin-top:5px; }
.co-alert.kritiek { border-color:#e7bcb5; background:#fdf6f5; }
.co-alert.kritiek .co-dot { background:#c0392b; }
.co-alert.waarschuwing { border-color:#e8d9a8; background:#fdfaf1; }
.co-alert.waarschuwing .co-dot { background:#b8912a; }
.co-alert b { font-weight:700; }
/* Bron die er niet is: geen getal, wel de reden. */
.co-geenbron {
  border:1px dashed var(--border); border-radius:12px; padding:13px 15px; background:var(--card);
}
.co-geenbron h4 { margin:0 0 3px; font-size:12px; font-weight:800; color:var(--text); }
.co-geenbron p { margin:0; font-size:11.5px; color:var(--text-m); line-height:1.5; }
.co-vers { font-size:11px; color:var(--text-s); font-weight:600; }
.co-vers.oud { color:#c0392b; }

/* ─── PAGINA: Login (login.html) ─────────────────────────────── */
/* ══════════════════════════════════════════════════════════════════════
   AUTH — login + invite signup
   Split panel: forest brand panel left, form on the workspace right.
   Desktop is the canonical viewport; narrow widths degrade down by
   dropping the brand panel, never by rebuilding the page mobile-up.
   ══════════════════════════════════════════════════════════════════════ */

body { overflow: auto; }

.auth {
  display: grid;
  grid-template-columns: minmax(380px, 460px) 1fr;
  min-height: 100vh;
}

/* ── LEFT: brand panel ─────────────────────────────────────────────── */

.brand-panel {
  background: var(--forest);
  color: #fff;
  padding: 44px 44px 40px;
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
}

/* Eén zachte lichtbron rechtsboven, zodat het vlak diepte heeft zonder
   dat er een decoratief patroon overheen ligt. */
.brand-panel::before {
  content: '';
  position: absolute;
  top: 38%; right: -220px;
  width: 520px; height: 520px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(198,250,83,.13), transparent 66%);
  pointer-events: none;
}

.brand-panel > * { position: relative; }

.brand-lockup { display: flex; align-items: center; gap: 12px; }
.brand-mark {
  width: 42px; height: 42px;
  background: var(--lime);
  border-radius: var(--radius-sm);
  display: grid; place-items: center;
  flex-shrink: 0;
}
.brand-mark svg { width: 22px; height: 22px; }
.brand-name { font-size: 15px; font-weight: 700; letter-spacing: -.1px; }
.brand-sub { font-size: 12px; color: rgba(255,255,255,.6); margin-top: 1px; }

/* De inhoud staat in het optische midden, met meer lucht onder dan boven,
   zodat het paneel niet leegloopt bovenin. */
.brand-body { margin: auto 0; padding: 40px 0; }

.invite-line {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(198,250,83,.14);
  border: 1px solid rgba(198,250,83,.28);
  color: var(--lime);
  border-radius: 999px;
  padding: 5px 13px 5px 10px;
  font-size: 12px;
  font-weight: 600;
  margin-bottom: 18px;
}
.invite-line .dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--lime);
  flex-shrink: 0;
}

.brand-headline {
  font-size: 26px;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -.5px;
  text-wrap: balance;
  max-width: 20ch;
}
.brand-lede {
  font-size: 13px;
  line-height: 1.6;
  color: rgba(255,255,255,.62);
  margin-top: 12px;
  max-width: 34ch;
}

.access-title {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .8px;
  text-transform: uppercase;
  color: rgba(255,255,255,.6);
  margin: 34px 0 14px;
}

.access-list { list-style: none; display: flex; flex-direction: column; gap: 3px; }
.access-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 9px 10px;
  border-radius: var(--radius-sm);
  transition: background .15s ease;
}
.access-item:hover { background: rgba(255,255,255,.05); }
.access-icon {
  width: 28px; height: 28px;
  border-radius: var(--radius-xs);
  background: rgba(255,255,255,.09);
  display: grid; place-items: center;
  flex-shrink: 0;
  margin-top: 1px;
}
.access-icon svg { width: 15px; height: 15px; stroke: rgba(255,255,255,.85); }
.access-text { min-width: 0; }
.access-name { display: block; font-size: 13px; font-weight: 600; color: rgba(255,255,255,.92); }
.access-desc { display: block; font-size: 12px; color: rgba(255,255,255,.62); margin-top: 3px; line-height: 1.45; }

/* Bij inloggen staat er geen toegangslijst. In plaats van een leeg vlak
   één regel die zegt waar je terechtkomt: nuttig voor wie een gedeelde
   link opent en niet weet welke pagina straks laadt. */
.destination {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 26px;
  padding: 12px 14px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.09);
  border-radius: var(--radius-sm);
  font-size: 12px;
  color: rgba(255,255,255,.72);
  max-width: 30ch;
}
.destination[hidden] { display: none; }
.destination svg {
  width: 15px; height: 15px;
  stroke: var(--lime);
  flex-shrink: 0;
}
.destination b { color: #fff; font-weight: 600; }

.brand-foot {
  padding-top: 20px;
  border-top: 1px solid rgba(255,255,255,.1);
  font-size: 12px;
  color: rgba(255,255,255,.6);
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
}
.lang-switch { display: flex; gap: 2px; }
.lang-switch button {
  font: inherit;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .4px;
  background: none;
  border: none;
  color: rgba(255,255,255,.6);
  padding: 4px 8px;
  border-radius: var(--radius-xs);
  cursor: pointer;
  transition: color .15s ease, background .15s ease;
}
.lang-switch button:hover { color: #fff; background: rgba(255,255,255,.1); }
.lang-switch button[aria-pressed="true"] { color: var(--forest); background: var(--lime); }

/* ── RIGHT: form column ────────────────────────────────────────────── */

.form-panel {
  display: grid;
  place-items: center;
  padding: 48px 40px;
  background: var(--bg);
}
.form-inner { width: 100%; max-width: 396px; }

.form-head { margin-bottom: 26px; }
.form-head h1 {
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -.4px;
  color: var(--text);
  text-wrap: balance;
}
.form-head p {
  font-size: 13px;
  line-height: 1.6;
  color: var(--text-m);
  margin-top: 6px;
}

.field { margin-bottom: 16px; }
.field > label {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 6px;
}
/* Alle invulvelden zijn verplicht, dus de markering staat overal. Hem maar
   op één veld zetten leest als "de rest mag je overslaan". */
.req {
  margin-left: auto;
  font-weight: 500;
  font-size: 11px;
  color: #5b6270;
}

.control { position: relative; display: flex; }
input[type="text"], input[type="email"], input[type="password"] {
  width: 100%;
  font: inherit;
  font-size: 13px;
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 11px 13px;
  outline: none;
  transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
/* --text-s zou hier op 2,5:1 uitkomen; placeholders moeten net zo goed
   leesbaar zijn als gewone tekst, dus --text-m. */
input::placeholder { color: var(--text-m); }
input:hover:not(:disabled):not([readonly]) { border-color: #d6dae0; }
input:focus-visible {
  border-color: var(--forest);
  box-shadow: 0 0 0 3px var(--forest-l);
}
input[readonly] {
  background: var(--surface2);
  color: var(--text-m);
  cursor: default;
}
input[aria-invalid="true"] {
  border-color: var(--red);
  box-shadow: 0 0 0 3px var(--red-l);
}
.has-toggle input { padding-right: 44px; }

.peek {
  position: absolute;
  right: 4px; top: 50%;
  transform: translateY(-50%);
  width: 34px; height: 34px;
  display: grid; place-items: center;
  background: none;
  border: none;
  border-radius: var(--radius-xs);
  cursor: pointer;
  color: var(--text-s);
  transition: color .15s ease, background .15s ease;
}
.peek:hover { color: var(--text-m); background: var(--surface2); }
.peek:focus-visible { outline: 2px solid var(--forest); outline-offset: -2px; }
.peek svg { width: 16px; height: 16px; }

.auth-hint {
  font-size: 12px;
  color: #5b6270;
  margin-top: 6px;
  line-height: 1.45;
}
.auth-hint.error { color: var(--red); font-weight: 500; }
.auth-hint.ok { color: var(--green); font-weight: 500; }
/* --yellow (#ca8a04) haalt maar 2,8:1 op de workspace-achtergrond. Een
   waarschuwing die je moet kunnen lezen krijgt een donkerdere tint. */
.auth-hint.warn { color: #a16207; font-weight: 600; }
.auth-hint[hidden] { display: none; }

/* Strength meter — four segments, only as loud as it needs to be. */
/* De meter hangt onder het veld, dus hij krijgt zijn eigen onderruimte;
   anders plakt "Herhaal wachtwoord" tegen de balkjes aan. */
.strength { margin-top: 10px; margin-bottom: 4px; }
.strength[hidden] { display: none; }
.strength-bars { display: flex; gap: 4px; }
.strength-bars i {
  flex: 1;
  height: 3px;
  border-radius: 2px;
  background: var(--surface2);
  transition: background .2s ease;
}
.strength-meta {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-top: 6px;
  font-size: 11px;
  color: var(--text-m);
}
.strength-word { font-weight: 700; }
.strength[data-level="1"] .strength-bars i:nth-child(-n+1), .strength[data-level="2"] .strength-bars i:nth-child(-n+2), .strength[data-level="3"] .strength-bars i:nth-child(-n+3), .strength[data-level="4"] .strength-bars i { background: currentColor; }
.strength[data-level="1"] { color: var(--red); }
.strength[data-level="2"] { color: var(--orange); }
.strength[data-level="3"] { color: var(--yellow); }
.strength[data-level="4"] { color: var(--green); }
/* De kleur van het niveau kleurt alleen het woord en de gevulde balkjes;
   de omschrijving ernaast blijft neutraal leesbaar. */
.strength-meta > span:first-child { color: var(--text-m); }

.btn-submit {
  width: 100%;
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  color: #fff;
  background: var(--forest);
  border: none;
  border-radius: var(--radius-sm);
  padding: 12px 18px;
  margin-top: 20px;
  cursor: pointer;
  transition: background .15s ease, opacity .15s ease;
}
.btn-submit:hover:not(:disabled) { background: #1d564d; }
.btn-submit:focus-visible { outline: 2px solid var(--forest); outline-offset: 3px; }
.btn-submit:disabled { opacity: .5; cursor: not-allowed; }
.btn-submit.ghost {
  background: var(--surface);
  color: var(--text);
  border: 1px solid var(--border);
}
.btn-submit.ghost:hover:not(:disabled) { background: var(--surface2); }
.btn-submit[data-busy="true"] { cursor: progress; }

.form-foot {
  margin-top: 20px;
  font-size: 13px;
  color: var(--text-m);
  text-align: center;
}
.form-foot a, .linkish {
  font: inherit;
  color: var(--forest);
  font-weight: 600;
  text-decoration: none;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  border-radius: 3px;
}
.form-foot a:hover, .linkish:hover { text-decoration: underline; }
.linkish:focus-visible { outline: 2px solid var(--forest); outline-offset: 3px; }

/* Form-level error banner. */
.auth-alert {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  background: var(--red-l);
  border: 1px solid rgba(220,38,38,.24);
  border-radius: var(--radius-sm);
  padding: 11px 13px;
  margin-bottom: 20px;
  font-size: 13px;
  line-height: 1.5;
  color: #b91c1c;
}
.auth-alert[hidden] { display: none; }
.auth-alert svg { width: 16px; height: 16px; flex-shrink: 0; margin-top: 1px; }
.auth-alert strong { display: block; font-weight: 700; }
.auth-alert span { display: block; color: #c2410c; margin-top: 2px; }
.auth-alert span:empty { display: none; }

/* Session check + dead invite are full states, not a spinner over a form. */
.state { text-align: center; padding: 8px 0; }
.state-icon {
  width: 46px; height: 46px;
  border-radius: var(--radius-md);
  display: grid; place-items: center;
  margin: 0 auto 16px;
  background: var(--red-l);
  color: var(--red);
}
.state-icon svg { width: 22px; height: 22px; }
.state h1 { font-size: 18px; font-weight: 700; color: var(--text); }
.state p {
  font-size: 13px;
  line-height: 1.6;
  color: var(--text-m);
  margin: 8px auto 0;
  max-width: 40ch;
}
.state .btn-submit { margin-top: 22px; }

.spinner {
  width: 22px; height: 22px;
  border: 2px solid var(--border);
  border-top-color: var(--forest);
  border-radius: 50%;
  margin: 0 auto 14px;
  animation: spin .7s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

[hidden] { display: none !important; }

/* ── Degrade down ──────────────────────────────────────────────────── */

@media (max-width: 1180px) {
  .auth { grid-template-columns: minmax(340px, 400px) 1fr; }
  .brand-panel { padding: 36px 30px 32px; }
  .brand-headline { font-size: 23px; }
  .access-list { gap: 0; }
  .access-item { padding: 8px 8px; }
}

@media (max-width: 940px) {
  .auth { grid-template-columns: 1fr; }
  .brand-panel { padding: 28px 28px 30px; }
  .brand-body { padding-top: 26px; }
  .brand-headline { font-size: 22px; }
  .access-title, .access-list, .brand-foot { display: none; }
  .form-panel { padding: 36px 24px 56px; align-items: start; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* ============================================================================
   SETTINGS-PANEEL — overlay, categorieën, team- en integratiemodules
   (stond in settings-panel.css / settings-team.css / settings-integrations.css)
   ========================================================================= */

/* ─── settings-panel.css ─── */
/* ============================================================================
   PetCura HQ — Settings-paneel
   ----------------------------------------------------------------------------
   Instellingen, Team en Integraties stonden als drie losse regels in de
   sidebar. Dat is drie keer navigeren en drie keer je plek kwijtraken voor
   werk dat je zelden doet. Ze zitten nu achter één knop onderin de balk, in
   een overlay dat over de pagina heen valt: je verlaat je werk niet.

   Layout volgt het patroon dat je uit Whop, Linear en Slack kent: smalle
   categoriekolom links, inhoud rechts, sluitknop rechtsboven.

   Deze CSS staat bewust NIET in theme.css — het paneel is een op zichzelf
   staand onderdeel, en zo kan het mee met nav.js zonder de rest te raken.
   nav.js hangt de <link> zelf in, dus geen enkele pagina hoeft aangepast.

   De inhoud van elke categorie wordt door een eigen render-module in het
   paneel getekend (settings-team.js, settings-integrations.js). Er zit geen
   iframe meer in: die bracht een tweede document mee met eigen scroll en
   eigen focus, en modals eruit konden nooit over het paneel heen vallen.
   ========================================================================= */

/* ── De knop onderin de sidebar ─────────────────────────────────────────── */
/* Hangt in .panel-sidebar-footer, dus hij zakt vanzelf naar de onderkant en
   krijgt de scheidingslijn van de footer mee. */
.hq-settings-btn {
  display: flex; align-items: center; gap: 0;
  width: 100%;
  padding: 8px 8px 8px 0;
  border: none; background: none;
  border-radius: var(--radius-sm, 8px);
  color: var(--text-m, #6b7280);
  font-family: inherit; font-size: 13px; font-weight: 500;
  text-align: left; cursor: pointer;
  transition: background 150ms ease, color 150ms ease;
}
.hq-settings-btn:hover { background: var(--surface2, #f0f2f5); color: var(--text, #111827); }
.hq-settings-btn:focus-visible {
  outline: 2px solid var(--forest, #17433c);
  outline-offset: 2px;
}
.hq-settings-btn[aria-expanded="true"] {
  background: var(--forest-l, rgba(23,67,60,.08));
  color: var(--forest, #17433c);
}
/* Zelfde iconkolom als .panel-nav-btn, zodat de knop op één lijn staat met de
   nav erboven — ook in de smalle rail. */
.hq-settings-btn .nav-icon {
  width: var(--rail-icon, 40px); flex: none;
  display: grid; place-items: center;
}
.hq-settings-btn .nav-text {
  flex: 1; min-width: 0; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
  transition: opacity 120ms ease, transform 160ms ease;
}
/* Het tandwiel draait een kwartslag bij hover. Eén detail, verder niets. */
.hq-settings-btn .nav-icon svg { transition: transform 250ms ease; }
.hq-settings-btn:hover .nav-icon svg { transform: rotate(30deg); }

body.hq-rail .hq-settings-btn .nav-text {
  opacity: 0; transform: translateX(-6px); pointer-events: none;
}

/* ── Het overlay ────────────────────────────────────────────────────────── */
.hq-settings-overlay {
  position: fixed; inset: 0; z-index: 900;
  display: flex; align-items: center; justify-content: center;
  padding: 40px;
  background: rgba(17, 24, 39, .45);
  opacity: 0;
  transition: opacity 200ms ease;
}
.hq-settings-overlay[hidden] { display: none; }
.hq-settings-overlay.is-open { opacity: 1; }

/* ── Het paneel zelf ────────────────────────────────────────────────────── */
.hq-settings-panel {
  display: flex;
  width: 100%; max-width: 1120px;
  height: 100%; max-height: 760px;
  background: var(--surface, #fff);
  border: 1px solid var(--border, #e8eaed);
  border-radius: var(--radius, 12px);
  box-shadow: var(--shadow-lg, 0 8px 24px rgba(0,0,0,.12));
  overflow: hidden;
  transform: translateY(8px) scale(.99);
  transition: transform 200ms ease;
}
.hq-settings-overlay.is-open .hq-settings-panel { transform: none; }
.hq-settings-panel:focus { outline: none; }

/* ── Categoriekolom ─────────────────────────────────────────────────────── */
.hq-settings-side {
  width: 220px; min-width: 220px;
  display: flex; flex-direction: column;
  padding: 20px 12px;
  background: var(--bg, #f7f8fa);
  border-right: 1px solid var(--border, #e8eaed);
  overflow-y: auto;
}
.hq-settings-title {
  font-size: 15px; font-weight: 700; color: var(--text, #111827);
  letter-spacing: -.2px;
  padding: 0 10px 14px;
}
.hq-settings-cats { display: flex; flex-direction: column; gap: 2px; }
.hq-settings-cat {
  display: flex; align-items: center; gap: 10px;
  width: 100%; padding: 8px 10px;
  border: none; background: none;
  border-radius: var(--radius-sm, 8px);
  color: var(--text-m, #6b7280);
  font-family: inherit; font-size: 13px; font-weight: 500;
  text-align: left; cursor: pointer;
  transition: background 150ms ease, color 150ms ease;
}
.hq-settings-cat:hover { background: var(--surface2, #f0f2f5); color: var(--text, #111827); }
.hq-settings-cat:focus-visible {
  outline: 2px solid var(--forest, #17433c); outline-offset: -2px;
}
/* Lime alleen hier: de actieve categorie is de enige plek in dit paneel waar
   de accentkleur iets betekent. */
.hq-settings-cat[aria-selected="true"] {
  background: var(--forest, #17433c);
  color: #fff;
  font-weight: 600;
}
.hq-settings-cat[aria-selected="true"] svg { color: var(--lime, #c6fa53); }
.hq-settings-cat svg { width: 16px; height: 16px; flex: none; }

/* ── Inhoudskolom ───────────────────────────────────────────────────────── */
.hq-settings-main {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column;
  position: relative;
}
.hq-settings-head {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 16px 16px 16px 24px;
  border-bottom: 1px solid var(--border, #e8eaed);
  flex: none;
}
.hq-settings-head-name {
  font-size: 14px; font-weight: 700; color: var(--text, #111827);
}

.hq-settings-close {
  width: 30px; height: 30px; flex: none;
  display: grid; place-items: center;
  border: 1px solid var(--border, #e8eaed);
  border-radius: var(--radius-sm, 8px);
  background: var(--surface, #fff);
  color: var(--text-m, #6b7280);
  cursor: pointer;
  transition: background 150ms ease, color 150ms ease;
}
.hq-settings-close:hover { background: var(--surface2, #f0f2f5); color: var(--text, #111827); }
.hq-settings-close:focus-visible {
  outline: 2px solid var(--forest, #17433c); outline-offset: 2px;
}

/* ── De inhoud zelf ─────────────────────────────────────────────────────── */
/* Elke categorie krijgt een eigen pane die blijft staan zodra hij gerenderd
   is; wisselen is alleen [hidden] omzetten. De scroll zit hier en niet op de
   body van het paneel, zodat elke categorie zijn eigen scrollpositie houdt. */
.hq-settings-body { flex: 1; min-height: 0; position: relative; display: flex; }
.hq-settings-pane {
  flex: 1; min-width: 0;
  overflow-y: auto;
  padding: 24px 24px 32px;
  background: var(--surface, #fff);
}
.hq-settings-pane[hidden] { display: none; }

/* Laadt een module niet, dan een uitweg in plaats van een leeg vlak. */
.hq-settings-fout {
  display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 12px;
  padding: 60px 40px; text-align: center;
}
.hq-settings-fout p { font-size: 13px; color: var(--text-m, #6b7280); max-width: 42ch; line-height: 1.6; margin: 0; }
.hq-settings-opnieuw {
  padding: 9px 16px;
  background: var(--forest, #17433c); color: #fff;
  border: none; border-radius: var(--radius-sm, 8px);
  font-family: inherit; font-size: 13px; font-weight: 700; cursor: pointer;
}
.hq-settings-opnieuw:hover { opacity: .88; }
.hq-settings-opnieuw:focus-visible { outline: 2px solid var(--forest, #17433c); outline-offset: 2px; }

/* ── Smaller scherm ─────────────────────────────────────────────────────── */
/* Desktop-first: dit degradeert alleen naar beneden. */
@media (max-width: 900px) {
  .hq-settings-overlay { padding: 0; }
  .hq-settings-panel { max-height: none; border-radius: 0; border: none; }
  .hq-settings-side { width: 168px; min-width: 168px; }
  .hq-settings-pane { padding: 18px 16px 28px; }
}

@media (prefers-reduced-motion: reduce) {
  .hq-settings-overlay, .hq-settings-panel, .hq-settings-btn .nav-icon svg { transition: none; }
}

/* ─── settings-team.css ─── */
/* ============================================================================
   PetCura HQ — Team (stijl)
   ----------------------------------------------------------------------------
   Stond in de <style> van team.html. Nu apart, want dezelfde markup wordt op
   twee plekken gemonteerd: in het Settings-paneel en op /team.html. Eén
   stylesheet betekent dat het er op beide plekken hetzelfde uitziet.
   settings-team.js hangt de <link> zelf in.

   Forest voor de primaire actie, lime nergens hier — de accentkleur hoort bij
   de actieve categorie in de paneelkolom, niet in een lijst met teamleden.
   ========================================================================= */

.tm-wrap { max-width: 900px; }

.tm-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.tm-head h1 { font-size: 21px; font-weight: 800; color: var(--text); letter-spacing: -.3px; margin: 0; }
.tm-head p { font-size: 13px; color: var(--text-m); margin: 5px 0 0; max-width: 66ch; line-height: 1.6; }

.tm-btn {
  background: var(--forest, #17433c); color: #fff; border: none;
  padding: 10px 17px; border-radius: var(--radius-sm, 8px);
  font-size: 13px; font-weight: 700; cursor: pointer;
  font-family: inherit; white-space: nowrap;
  transition: opacity 150ms ease, background 150ms ease, color 150ms ease;
}
.tm-btn:hover { opacity: .88; }
.tm-btn:focus-visible { outline: 2px solid var(--forest, #17433c); outline-offset: 2px; }
.tm-btn--ghost { background: transparent; color: var(--text-m); border: 1px solid var(--border); }
.tm-btn--ghost:hover { background: var(--bg); color: var(--text); opacity: 1; }
.tm-btn--sm { padding: 5px 10px; font-size: 11.5px; }
.tm-btn--danger { color: var(--danger, #dc2626); border-color: var(--border); }
.tm-btn--danger:hover { background: #fef2f2; border-color: #fecaca; }

.tm-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin: 20px 0 22px; }
.tm-card { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius, 12px); padding: 13px 15px; }
.tm-card-l { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-s); }
.tm-card-v { font-size: 23px; font-weight: 800; color: var(--text); margin-top: 4px; line-height: 1.1; }

.tm-list { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius, 12px); overflow: hidden; }
.tm-row { display: flex; align-items: center; gap: 13px; padding: 13px 17px; border-bottom: 1px solid var(--border); }
.tm-row:last-child { border-bottom: none; }
.tm-av {
  width: 38px; height: 38px; border-radius: 50%; flex: none; overflow: hidden;
  background: var(--forest, #17433c); color: #fff;
  display: grid; place-items: center; font-size: 15px; font-weight: 800;
}
.tm-av img { width: 100%; height: 100%; object-fit: cover; }
.tm-naam { font-size: 13.5px; font-weight: 700; color: var(--text); }
.tm-mail { font-size: 12px; color: var(--text-s); margin-top: 1px; }
.tm-mid { flex: 1; min-width: 0; }
.tm-rol {
  font-size: 10px; font-weight: 700; letter-spacing: .04em;
  padding: 3px 8px; border-radius: 5px;
  background: var(--bg); color: var(--text-m); border: 1px solid var(--border);
}
.tm-rol.is-admin { background: var(--forest-l); color: var(--forest); border-color: transparent; }
.tm-sinds { font-size: 11.5px; color: var(--text-s); white-space: nowrap; }
.tm-status { font-size: 11.5px; color: var(--text-s); }
.tm-acts { display: flex; gap: 6px; align-items: center; }
.tm-sel {
  padding: 5px 8px; border: 1px solid var(--border); border-radius: 7px;
  font-size: 11.5px; font-family: inherit;
  background: var(--card); color: var(--text); cursor: pointer;
}
.tm-sel:focus-visible { outline: 2px solid var(--forest, #17433c); outline-offset: 1px; }

/* Editor-vinkje: wie toewijsbaar is aan een video. Leest als een schakelaar
   naast de rol, niet als nog een los formulierveld. */
.tm-ed {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 9px 4px 7px; border: 1px solid var(--border); border-radius: 7px;
  background: var(--card); cursor: pointer; user-select: none;
  font-size: 11.5px; color: var(--text-m); white-space: nowrap;
}
.tm-ed:hover { border-color: var(--forest); color: var(--text); }
.tm-ed input { accent-color: var(--forest, #17433c); margin: 0; cursor: pointer; }
.tm-ed:has(input:checked) {
  background: var(--forest-l); border-color: transparent;
  color: var(--forest); font-weight: 700;
}
.tm-ed:has(input:focus-visible) { outline: 2px solid var(--forest, #17433c); outline-offset: 1px; }
.tm-ed:has(input:disabled) { opacity: .55; cursor: default; }

.tm-note {
  background: var(--card); border: 1px dashed var(--border);
  border-radius: var(--radius, 12px); padding: 14px 16px; margin-top: 18px;
  font-size: 12.5px; color: var(--text-m); line-height: 1.6;
}
.tm-note b { color: var(--text); }
.tm-leeg { padding: 26px; text-align: center; font-size: 13px; color: var(--text-s); }

/* ── Rollen ──────────────────────────────────────────────────────────────
   Een rol is een set pagina's. Zo stel je drie editors in één keer in en
   geldt een wijziging meteen voor iedereen met die rol. */
.rl-kop { display: flex; align-items: center; gap: 12px; margin: 30px 0 10px; }
.rl-kop h2 { font-size: 15px; font-weight: 800; color: var(--text); margin: 0; flex: 1; }
.rl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: 12px; }
.rl-kaart { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius, 12px); padding: 14px 15px; }
.rl-naam { font-size: 13.5px; font-weight: 800; color: var(--text); display: flex; align-items: center; gap: 7px; }
.rl-leden {
  font-size: 11px; font-weight: 700; color: var(--text-s);
  background: var(--bg); border: 1px solid var(--border);
  padding: 1px 7px; border-radius: 20px;
}
.rl-paginas { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 9px; }
.rl-pil { font-size: 10.5px; font-weight: 600; padding: 2px 7px; border-radius: 5px; background: var(--forest-l); color: var(--forest); }
.rl-pil.beheer { background: #fef3c7; color: #92400e; }
.rl-leeg-pil { font-size: 11px; color: var(--text-s); font-style: italic; }
.rl-acts { display: flex; gap: 6px; margin-top: 11px; }

/* Pagina-kiezer: per groep een rij, met een knop om de hele groep te doen. */
.pk-groep { border: 1px solid var(--border); border-radius: 9px; margin-bottom: 9px; overflow: hidden; }
.pk-groep-h {
  display: flex; align-items: center; gap: 9px; padding: 8px 11px; background: var(--bg);
  font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--text-s);
}
.pk-alles {
  margin-left: auto; border: none; background: none; font-family: inherit;
  font-size: 11px; font-weight: 700; color: var(--forest); cursor: pointer;
}
.pk-rij {
  display: flex; align-items: center; gap: 9px; padding: 7px 11px;
  border-top: 1px solid var(--border); font-size: 12.5px; color: var(--text); cursor: pointer;
}
.pk-rij input { accent-color: var(--forest); width: 15px; height: 15px; }
.pk-rij.vast { opacity: .55; cursor: default; }

/* ── Modals ─────────────────────────────────────────────────────────────
   z-index boven het Settings-paneel (900), want ze horen erbovenop te
   staan wanneer Team in het paneel draait. */
.tm-ov {
  position: fixed; inset: 0; background: rgba(17, 24, 39, .45);
  display: none; place-items: center; z-index: 950; padding: 20px;
}
.tm-ov.open { display: grid; }
.tm-modal {
  background: var(--card); border: 1px solid var(--border);
  border-radius: var(--radius, 12px); width: 100%; max-width: 420px;
  /* De hele modal scrollde, dus bij een lange lijst zakten de knoppen onderin
     buiten beeld. Nu scrollt alleen het middendeel en staan kop en knoppen vast. */
  max-height: min(86vh, 640px);
  display: flex; flex-direction: column; overflow: hidden;
  padding: 20px 20px 0;
}
.tm-modal > h2, .tm-modal > p { flex: 0 0 auto; }
.tm-modal-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto;
  margin: 0 -20px; padding: 0 20px; }
.tm-modal--wide { max-width: 520px; }
.tm-modal h2 { font-size: 16px; font-weight: 800; color: var(--text); margin: 0 0 4px; }
.tm-modal p { font-size: 12.5px; color: var(--text-m); margin: 0 0 16px; line-height: 1.55; }
.tm-modal-acts { display: flex; gap: 9px; align-items: center; flex: 0 0 auto;
  margin: 0 -20px; padding: 14px 20px; border-top: 1px solid var(--border);
  background: var(--card); }
.tm-f { margin-bottom: 12px; }
.tm-f label { display: block; font-size: 11.5px; font-weight: 700; color: var(--text-m); margin-bottom: 5px; }
.tm-f input, .tm-f select {
  width: 100%; padding: 10px 12px; border: 1px solid var(--border);
  border-radius: var(--radius-sm, 8px); font-size: 13.5px; font-family: inherit;
  box-sizing: border-box; background: var(--card); color: var(--text);
}
.tm-f input:focus-visible, .tm-f select:focus-visible { outline: 2px solid var(--forest, #17433c); outline-offset: 1px; }
.tm-link { display: flex; gap: 8px; margin-top: 14px; }
.tm-link input {
  flex: 1; font-size: 12px; padding: 9px 11px;
  border: 1px solid var(--border); border-radius: var(--radius-sm, 8px);
  background: var(--bg); color: var(--text);
}

@media (prefers-reduced-motion: reduce) {
  .tm-btn { transition: none; }
}

/* ─── settings-integrations.css ─── */
/* ============================================================================
   PetCura HQ — Integraties (stijl)
   ----------------------------------------------------------------------------
   Stond in de <style> van integrations.html. Nu apart, zodat het Settings-
   paneel en /integrations.html precies hetzelfde tonen.
   settings-integrations.js hangt de <link> zelf in.
   ========================================================================= */

.in-wrap { max-width: 720px; }
.in-head h1 { font-size: 21px; font-weight: 800; color: var(--text); letter-spacing: -.3px; margin: 0; }
.in-head p { font-size: 12.5px; color: var(--text-m); margin: 5px 0 18px; line-height: 1.55; }

.in-groep {
  font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em;
  color: var(--text-s); margin: 20px 0 7px;
}
.in-groep:first-of-type { margin-top: 0; }

.in-lijst { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius, 12px); overflow: hidden; }

/* Eén regel per koppeling: logo, naam, bewijs, status. Compact genoeg om
   alles in één blik te zien, hoog genoeg om aanklikbaar te blijven. */
.in-rij {
  display: flex; align-items: center; gap: 12px; width: 100%;
  padding: 11px 14px; border: none; background: none; text-align: left;
  border-bottom: 1px solid var(--border); cursor: pointer; font-family: inherit;
  transition: background 150ms ease;
}
.in-rij:last-child { border-bottom: none; }
.in-rij:hover { background: var(--bg); }
.in-rij:focus-visible { outline: 2px solid var(--forest, #17433c); outline-offset: -2px; }

.in-logo {
  width: 32px; height: 32px; border-radius: var(--radius-sm, 8px); flex: none;
  display: grid; place-items: center; background: var(--bg); border: 1px solid var(--border);
}
.in-logo svg { width: 17px; height: 17px; }

.in-mid { flex: 1; min-width: 0; }
.in-naam { font-size: 13.5px; font-weight: 700; color: var(--text); line-height: 1.3; }
.in-bewijs { display: flex; align-items: center; gap: 7px; font-size: 11.5px; color: var(--text-s); margin-top: 3px; }
.in-tekst { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.in-let-kort { color: #b45309; flex: none; }

/* ── Status ─────────────────────────────────────────────────────────────
   Vier toestanden met elk een eigen kleur én een woord erbij. Alleen kleur
   is te weinig: op een klein stipje zie je het verschil niet, en wie kleuren
   slecht onderscheidt ziet het helemaal niet. Alleen "live" pulseert, zodat
   beweging iets betekent in plaats van overal te staan. */
.in-badge {
  display: inline-flex; align-items: center; gap: 6px; flex: none;
  padding: 3px 9px 3px 7px; border-radius: 20px;
  font-size: 10.5px; font-weight: 700; letter-spacing: .02em; white-space: nowrap;
}
.in-stip { width: 7px; height: 7px; border-radius: 50%; flex: none; position: relative; }

.in-badge.live { background: rgba(22, 163, 74, .12); color: #15803d; }
.in-badge.live .in-stip { background: #16a34a; }
/* De ring is de puls: hij groeit vanuit de stip en vervaagt. */
.in-badge.live .in-stip::after {
  content: ""; position: absolute; inset: 0; border-radius: 50%;
  background: #16a34a; animation: in-puls 2s ease-out infinite;
}
@keyframes in-puls {
  0%   { transform: scale(1);   opacity: .7; }
  70%  { transform: scale(2.8); opacity: 0; }
  100% { transform: scale(2.8); opacity: 0; }
}

.in-badge.stil { background: rgba(217, 119, 6, .13); color: #b45309; }
.in-badge.stil .in-stip { background: #d97706; }

.in-badge.gekoppeld { background: rgba(23, 67, 60, .09); color: var(--forest); }
.in-badge.gekoppeld .in-stip { background: var(--forest); opacity: .75; }

.in-badge.uit { background: var(--bg); color: var(--text-s); border: 1px solid var(--border); }
.in-badge.uit .in-stip { background: transparent; border: 1.5px solid var(--text-s); opacity: .5; }

@media (prefers-reduced-motion: reduce) {
  .in-badge.live .in-stip::after { animation: none; opacity: 0; }
  .in-rij, .in-chev { transition: none; }
}

.in-chev { color: var(--text-s); flex: none; transition: transform 150ms ease; }
.in-rij[aria-expanded="true"] .in-chev { transform: rotate(90deg); }
.in-chev svg { width: 15px; height: 15px; display: block; }

/* Uitklap: pas als je het wil weten. Houdt de lijst kort. */
.in-detail { display: none; padding: 0 14px 13px 58px; border-bottom: 1px solid var(--border); }
.in-detail.open { display: block; }
.in-detail p { font-size: 12.5px; color: var(--text-m); line-height: 1.55; margin: 0 0 9px; }
.in-detail code {
  background: var(--bg); border: 1px solid var(--border);
  padding: 1px 5px; border-radius: 4px; font-size: 11px;
}
.in-let {
  display: flex; gap: 8px; align-items: flex-start;
  background: #fffbeb; border: 1px solid #fde68a; border-radius: var(--radius-sm, 8px);
  padding: 9px 11px; font-size: 12px; color: #854d0e; line-height: 1.5;
}
.in-let b { color: #713f12; }
.in-actie {
  display: inline-block; margin-top: 9px;
  background: var(--forest, #17433c); color: #fff; text-decoration: none;
  padding: 7px 13px; border-radius: 7px; font-size: 12.5px; font-weight: 700;
}
.in-actie:hover { opacity: .88; }

.in-winkelblok { padding: 11px 14px; }
.in-winkels { margin-top: 8px; font-size: 12px; color: var(--text-m); }
.in-winkel { display: flex; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--border); }
.in-winkel:last-child { border-bottom: none; }
.in-winkel b { flex: 1; color: var(--text); }
.in-winkel .is-verbonden { color: var(--forest); }
.in-winkel .is-los { color: var(--text-s); }
.in-winkel-uitleg { font-size: 11.5px; color: var(--text-s); margin: 9px 0 0; line-height: 1.5; }

.in-legenda { display: flex; flex-wrap: wrap; gap: 7px 18px; margin-top: 16px; }
.in-leg-item { display: flex; align-items: center; gap: 7px; font-size: 11.5px; color: var(--text-s); }
.in-slot { margin-top: 16px; font-size: 12px; color: var(--text-s); line-height: 1.6; }
.in-slot-waarschuwing { color: #b45309; }
.in-slot-ok { color: var(--text); }
.in-leeg { padding: 22px; text-align: center; font-size: 13px; color: var(--text-s); }

/* ─── PAGINA: Inbox / CRM (crm.html) ─────────────────────────────── */
/* Escalation badges */
.esc-badge { display:inline-flex; align-items:center; gap:4px; font-size:11px; font-weight:700; padding:5px 10px; border-radius:20px; white-space:nowrap; cursor:default; }
.esc-badge--ai { background:#fff4e0; color:#a85d00; border:1px solid #ffd591; }
.esc-badge--owner { background:#f3eaff; color:#6d28d9; border:1px solid #d6bcfa; }
.esc-btn { font-size:11px; font-weight:700; padding:6px 12px; border-radius:20px; cursor:pointer; transition:opacity .15s; }
.esc-btn:hover { opacity:.82; }
.esc-btn--escalate { background:#6d28d9; color:#fff; border:none; }
.esc-btn--undo { background:transparent; color:var(--text-s); border:1px solid var(--border); padding:6px 9px; }
.esc-mark { margin-right:5px; font-size:12px; }
/* Escalation rows — background tint instead of border stripe */
.cs-list-item.esc-row--owner { background: rgba(109,40,217,.04); }
.cs-list-item.esc-row--ai { background: rgba(240,163,48,.04); }
.cs-list-item.esc-row--urgent { background: rgba(185,28,28,.06); border-left: 3px solid #b91c1c; }

/* Standalone CRM sidebar — forest bg, no icon rail */
/* Agent card — linksonder, Gorgias-stijl */
/* Session chip dark-sidebar override */
/* Ticket list column header */
.cs-list-header { background:#fff; border-bottom:1px solid var(--border,#e8e8e8); padding:10px 10px 0; flex-shrink:0; }
.crm-list-search { display:flex; align-items:center; gap:7px; background:var(--bg,#f7f7f5); border:1px solid var(--border,#e8e8e8); border-radius:7px; padding:6px 10px; margin-bottom:8px; }
.crm-list-search input { border:none; background:transparent; font-size:13px; color:var(--ink,#111); outline:none; flex:1; min-width:0; }
.crm-list-search input::placeholder { color:var(--text-s,#aaa); }
/* Override panel-nav-btn defaults for dark sidebar context */
/* Alleen de donkere CRM-kolom. Ongescoped lekten deze !important-regels in
   de gedeelde HQ-nav (#hq-nav) en werd die wit-op-wit. */
/* Afdelingslinks (nav.js) staan in deze donkere kolom: label en scheiding
   moeten leesbaar zijn op forest, niet het grijze theme.css-label. */

/* Category section */

/* Filter tabs — vervangt select dropdown */
.filter-tabs { display:flex; gap:2px; align-items:center; }
.filter-tab { padding:5px 11px; border-radius:6px; border:none; background:transparent; font-size:12px; font-weight:500; color:var(--text-s,#888); cursor:pointer; transition:background .12s, color .12s; white-space:nowrap; }
.filter-tab:hover { background:rgba(0,0,0,.05); color:var(--ink,#111); }
.filter-tab.active { background:var(--forest); color:#fff; font-weight:600; }

/* Auto-send monitoring view */
.as-header { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:20px; flex-wrap:wrap; gap:12px; }
.as-card { background:#fff; border:1px solid var(--border,#e8e8e8); border-radius:10px; padding:14px 16px; margin-bottom:8px; cursor:pointer; display:flex; align-items:flex-start; gap:12px; transition:box-shadow .15s; }
.as-card:hover { box-shadow:0 2px 8px rgba(0,0,0,.07); }
.as-cat-badge { font-size:10px; font-weight:700; padding:2px 7px; border-radius:12px; text-transform:uppercase; letter-spacing:.04em; }
.as-cat--kortingscode, .as-cat--orderstatus, .as-cat--dosering, .as-cat--verzending { background:rgba(198,250,83,.35); color:#3a5200; }
.as-cat--huisnummer { background:#fff4e0; color:#8a5200; }
.as-cat--buitenland, .as-cat--mislukt { background:rgba(99,102,241,.1); color:#3730a3; }
.as-reply-preview { font-size:12px; color:var(--text-s,#888); margin-top:4px; line-height:1.45; }
.as-status-pill { font-size:10px; font-weight:600; padding:2px 7px; border-radius:12px; }
.as-status--resolved { background:rgba(0,163,129,.12); color:#006b54; }
.as-status--open { background:#fff4e0; color:#8a5200; }

@media (prefers-reduced-motion: reduce) {
  .as-card { transition: none; }
  .filter-tab { transition: none; }
}

/* HQ view — tabbar */
.hq-tab-bar { display:flex; gap:0; margin-top:14px; border-bottom:none; }
.hq-day-table { width:100%; border-collapse:collapse; font-size:12px; }
.hq-day-table th { padding:7px 16px; text-align:left; font-weight:600; color:var(--text-s); border-top:1px solid var(--border); background:var(--bg,#f7f7f5); }
.hq-day-table td { padding:8px 16px; border-top:1px solid var(--border); }
.hq-day-table tr.today td { background:rgba(198,250,83,.07); font-weight:600; }
.hq-tab { padding:9px 18px; border:none; border-bottom:2px solid transparent; background:transparent; font-size:13px; font-weight:600; color:var(--text-m,#666); cursor:pointer; transition:color .12s, border-color .12s; white-space:nowrap; }
.hq-tab:hover { color:var(--forest); }
.hq-tab.active { color:var(--forest); border-bottom-color:var(--forest); font-weight:700; }
.hq-pane { display:block; }
.hq-stat-card { background:#fff; border:1px solid var(--border,#e9e9e6); border-radius:12px; padding:18px 20px; }
.hq-stat-val { font-size:32px; font-weight:800; color:var(--forest); line-height:1; font-variant-numeric:tabular-nums; }
.hq-stat-lbl { font-size:12px; font-weight:600; color:var(--text-m,#555); margin-top:7px; }
.hq-stat-sub { font-size:11px; color:var(--text-s,#999); margin-top:3px; }

/* Sessie-chip — rechts in de topbar */
  

.cd-tab { padding:7px 14px;border:none;background:none;cursor:pointer;font-size:12.5px;font-weight:600;color:#888;border-bottom:2px solid transparent;transition:color .12s,border-color .12s }
.cd-tab.active { color:#1a2e1a;border-bottom-color:#1a2e1a }
.cd-tab-panel { display:none }
.cd-tab-panel.active { display:block }
.cd-label { font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#888;display:block;margin-bottom:4px }
.cd-input { width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid #e0e0e0;border-radius:7px;font-size:13px;outline:none;transition:border-color .12s }
.cd-input:focus { border-color:#1a2e1a }
.cd-product-row { display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #eee;border-radius:7px;font-size:13px }
.cd-product-row + .cd-product-row { margin-top:6px }
.cd-remove-btn { margin-left:auto;padding:3px 9px;border:1px solid #e44;border-radius:5px;background:#fff;color:#e44;cursor:pointer;font-size:11px;font-weight:600 }
.cd-remove-btn:hover { background:#e44;color:#fff }
.cd-add-select { width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid #e0e0e0;border-radius:7px;font-size:13px;background:#fff }

/* Kanaal-tabs in de topbar (Tickets · Trustpilot · Daglog · Beheer · AI) */
.topbar-tabs .topbar-tab { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; white-space: nowrap; }
.crm-topbar-btn { white-space: nowrap; }
/* De chips staan in de inhoud, niet in de sidebar: de rail-stand (labels
   vervagen) mag ze niet raken. */
body.hq-rail #crm-category-nav .panel-nav-btn .nav-text { opacity: 1; transform: none; pointer-events: auto; }
.topbar-tabs .topbar-tab svg { width: 14px; height: 14px; flex: none; }
.topbar-tabs .topbar-tab .badge { margin-left: 2px; }
/* Categorie-chips boven de ticketlijst — app.js tekent .panel-nav-btn, hier
   worden dat compacte chips i.p.v. sidebar-knoppen. */
#crm-category-nav { display: flex; flex-wrap: wrap; gap: 4px; padding: 4px 0 8px; }
#crm-category-nav .panel-nav-btn {
  width: auto; display: inline-flex; gap: 5px; padding: 3px 9px;
  font-size: 11.5px; border-radius: 20px; background: var(--surface2); color: var(--text-m);
}
#crm-category-nav .panel-nav-btn .nav-icon { width: auto; font-size: 12px; }
#crm-category-nav .panel-nav-btn:hover { background: var(--border); color: var(--text); }
#crm-category-nav .panel-nav-btn.active { background: var(--forest); color: #fff; font-weight: 600; }
#crm-category-nav .badge { margin-left: 2px; min-width: 18px; font-size: 10px; padding: 0 5px; }
/* De CRM vult het hele werkvlak; elke view is een kolom die zelf scrollt. */
.crm-body > section { flex: 1 1 auto; min-height: 0; }
.crm-topbar-btn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; font-size: 12.5px; }
.crm-topbar-btn svg { width: 13px; height: 13px; }

/* ─── PAGINA: Scroll Ad Studio (scroll-studio.html) ─────────────── */
.ss {
  /* Eigen donkere palette, bewust alleen binnen de studio: het canvas en de
     bediening horen op zwart, de rest van het dashboard niet. */
  --bg:#0e0f13; --panel:#171922; --panel2:#1f2230; --line:#2a2e3e;
  --txt:#e7e9f0; --muted:#9aa0b4; --accent:#4ade80; --accent2:#22c55e;
  --warn:#f59e0b; --danger:#ef4444;
  flex-direction: row; height: 100%;
  background: var(--bg); color: var(--txt);
  font: 14px/1.5 -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
}
.ss * { box-sizing: border-box; }
/* ---- left controls ---- */
.ss #controls {
  width:380px; min-width:380px; height:100%; overflow-y:auto;
  background:var(--panel); border-right:1px solid var(--line); padding:18px 18px 60px;
}
.ss #controls h1 {font-size:16px; margin:0 0 2px; letter-spacing:.3px}
.ss #controls .sub {color:var(--muted); font-size:12px; margin:0 0 16px}
.ss .back-link {display:inline-flex; align-items:center; gap:6px; color:var(--muted); text-decoration:none; font-size:12px; font-weight:600; margin-bottom:14px; padding:6px 10px; border:1px solid var(--line); border-radius:7px; transition:.15s}
.ss .back-link:hover {border-color:var(--accent); color:var(--accent)}
.ss .group {margin-bottom:18px; padding-bottom:16px; border-bottom:1px solid var(--line)}
.ss .group:last-child {border-bottom:none}
.ss .group > label.title {display:block; font-size:11px; text-transform:uppercase; letter-spacing:.8px; color:var(--muted); margin-bottom:8px; font-weight:600}
.ss textarea {
  width:100%; min-height:140px; resize:vertical; background:var(--panel2); color:var(--txt);
  border:1px solid var(--line); border-radius:8px; padding:10px; font:13px/1.45 inherit;
}
.ss .row {display:flex; gap:10px; align-items:center; margin:8px 0}
.ss .row label {flex:1; color:var(--muted); font-size:12px}
.ss .row .val {width:48px; text-align:right; color:var(--txt); font-variant-numeric:tabular-nums; font-size:12px}
.ss input[type=range] {flex:1.4; accent-color:var(--accent)}
.ss input[type=number] {width:70px; background:var(--panel2); color:var(--txt); border:1px solid var(--line); border-radius:6px; padding:5px 7px}
.ss select {width:100%; background:var(--panel2); color:var(--txt); border:1px solid var(--line); border-radius:6px; padding:7px}
.ss input[type=color] {width:38px; height:30px; padding:0; border:1px solid var(--line); border-radius:6px; background:var(--panel2)}
.ss .file-btn {
  display:block; width:100%; text-align:center; padding:9px; border-radius:8px; cursor:pointer;
  background:var(--panel2); border:1px dashed var(--line); color:var(--muted); font-size:12px; transition:.15s;
}
.ss .file-btn:hover {border-color:var(--accent); color:var(--txt)}
.ss .file-btn.loaded {border-style:solid; border-color:var(--accent2); color:var(--accent)}
.ss input[type=file] {display:none}
.ss .seg {display:flex; border:1px solid var(--line); border-radius:8px; overflow:hidden}
.ss .seg button {flex:1; background:var(--panel2); color:var(--muted); border:none; padding:8px; cursor:pointer; font-size:12px}
.ss .seg button.active {background:var(--accent2); color:#04150b; font-weight:600}
.ss .hint {color:var(--muted); font-size:11px; margin-top:6px}
.ss .pill {display:inline-block; background:var(--panel2); border:1px solid var(--line); border-radius:20px; padding:3px 10px; font-size:11px; color:var(--muted); margin-right:6px}
.ss .pill b {color:var(--accent)}
/* ---- right stage ---- */
.ss #stage {flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:20px; min-width:0; background:radial-gradient(circle at 50% 30%, #15171f, #0b0c10)}
.ss #canvasWrap {position:relative; flex:0 1 auto; display:flex; align-items:center; justify-content:center; min-height:0}
.ss canvas#stageCanvas {background:#000; border-radius:10px; box-shadow:0 20px 60px rgba(0,0,0,.5); max-height:calc(100vh - 42px - 160px); max-width:100%; height:auto}
.ss #transport {display:flex; gap:12px; align-items:center; margin-top:16px; width:min(640px,100%)}
.ss #transport button {background:var(--panel2); border:1px solid var(--line); color:var(--txt); border-radius:8px; padding:9px 16px; cursor:pointer; font-size:13px}
.ss #transport button:hover {border-color:var(--accent)}
.ss #scrub {flex:1; accent-color:var(--accent)}
.ss #time {font-variant-numeric:tabular-nums; color:var(--muted); font-size:12px; width:90px; text-align:center}
.ss #exportBtn {background:linear-gradient(135deg,var(--accent),var(--accent2)); color:#04150b; font-weight:700; border:none; padding:11px 20px; font-size:14px; border-radius:9px; cursor:pointer}
.ss #exportBtn:disabled {opacity:.5; cursor:not-allowed}
.ss #status {margin-top:10px; font-size:12px; color:var(--muted); min-height:18px; text-align:center}
.ss #status.rec {color:var(--danger); font-weight:600}
.ss #status.done {color:var(--accent)}
.ss .twocol {display:flex; gap:10px}
.ss .twocol > * {flex:1}

/* Editor KPI — per-concept doorlooptijd onder het gemiddelde */
.ek-concepten { margin-top:6px; padding-top:6px; border-top:1px solid var(--border); }
.ek-concepten-h { font-size:10px; font-weight:700; letter-spacing:.8px; text-transform:uppercase;
  color:var(--text-m); margin-bottom:4px; }
.ek-concept { display:flex; justify-content:space-between; gap:10px; padding:3px 0; font-size:11.5px; }
.ek-concept span { color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.ek-concept b { font-weight:700; font-variant-numeric:tabular-nums; flex:none; }
.ek-concept.dim span { color:var(--text-s); }

/* ─── PAGINA: Financials (financials.html) ─────────────────────────────── */
/* Overgezet uit de losse P&L-app. Alle tabellen delen één klasse (.fin-table),
   alle kengetallen twee (hero-tegels + .fin-tile), en de kleur zit in de
   waarde, niet in een gekleurde rand. */
.fin-page { font-variant-numeric: tabular-nums; }
.fin-page .pos { color: var(--green); }
.fin-page .neg { color: var(--red); }
.fin-page .warn { color: var(--yellow); }
.fin-page .dim { color: var(--text-m); }
.fin-page .fin-small { font-size: 11px; }
.fin-page .fin-nowrap { white-space: nowrap; }
.fin-page .fin-clip { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fin-empty { padding: 40px; text-align: center; font-size: 13px; color: var(--text-m); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); }

/* topbar: periode + vergelijking + sync */
/* Werkbalk in de pagina: tabs links, instellingen rechts, één lijn. Zonder tabs
   (één view) blijft de rechterkant gewoon rechts staan. */
.fin-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px;
  margin-bottom: 18px; padding-bottom: 10px; border-bottom: 1px solid var(--border); min-height: 40px; }
.fin-toolbar .fin-views { margin: 0; border-bottom: 0; padding-bottom: 0; }
.fin-toolbar-r { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-wrap: wrap; justify-content: flex-end; }
.fin-ctl { position: relative; }
.fin-ctl-btn {
  display: inline-flex; align-items: center; gap: 7px; height: 30px; padding: 0 11px;
  border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface);
  color: var(--text); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; white-space: nowrap;
  transition: border-color .15s, background .15s;
}
.fin-ctl-btn:hover { background: var(--surface2); }
.fin-ctl-btn:focus-visible { outline: 2px solid var(--forest); outline-offset: 2px; }
.fin-ctl-btn svg { width: 14px; height: 14px; color: var(--text-m); }
.fin-ctl-caret { color: var(--text-m); font-size: 10px; }
.fin-ctl-menu {
  position: absolute; top: calc(100% + 6px); left: 0; min-width: 220px; z-index: 150;
  background: var(--surface); border: 1px solid var(--border); border-radius: 10px;
  box-shadow: var(--shadow-lg); padding: 6px;
}
.fin-ctl-opt {
  display: block; width: 100%; text-align: left; padding: 8px 12px; border: none; background: none;
  border-radius: 6px; font: inherit; font-size: 13px; color: var(--text); cursor: pointer;
}
.fin-ctl-opt:hover { background: var(--surface2); }
.fin-ctl-custom { display: flex; align-items: center; gap: 8px; padding: 10px 6px 4px; margin-top: 6px; border-top: 1px solid var(--border); }
.fin-arrow { color: var(--text-m); }
.fin-sync-note { font-size: 11.5px; color: var(--text-m); white-space: nowrap; }
.fin-btn-sm { padding: 6px 12px; font-size: 12.5px; font-weight: 600; white-space: nowrap; }
.btn-ghost.fin-btn-sm { background: var(--surface); }
.btn-ghost.fin-btn-sm:disabled, .btn-primary.fin-btn-sm:disabled { opacity: .55; cursor: wait; }

/* viewtabs onder de topbar */
.fin-views { display: flex; gap: 2px; margin: -6px 0 18px; border-bottom: 1px solid var(--border); overflow-x: auto; }
.fin-view-tab {
  padding: 9px 13px; border: none; border-bottom: 2px solid transparent; margin-bottom: -1px;
  background: none; font: inherit; font-size: 13px; font-weight: 600; color: var(--text-m);
  cursor: pointer; white-space: nowrap; transition: color .12s, border-color .12s;
}
.fin-view-tab:hover { color: var(--text); }
.fin-view-tab.on { color: var(--forest); border-bottom-color: var(--forest); font-weight: 700; }
.fin-view-tab:focus-visible { outline: 2px solid var(--forest); outline-offset: -2px; border-radius: 4px; }
.fin-head { margin-bottom: 18px; }
.fin-head-actions, .fin-actions { display: flex; align-items: center; gap: 8px; }
.fin-note { font-size: 11.5px; color: var(--text-m); line-height: 1.5; }

/* meldingen: volle rand + tint, geen zijstreep */
.fin-banner {
  display: flex; align-items: center; flex-wrap: wrap; gap: 6px 12px; padding: 11px 16px; margin-bottom: 16px;
  border: 1px solid var(--border); border-radius: 10px; font-size: 13px; line-height: 1.5; color: var(--text);
  background: var(--surface);
}
.fin-banner.warn { background: #fdfaf1; border-color: #e8d9a8; }
.fin-banner.info { background: var(--blue-l); border-color: rgba(37,99,235,.25); }
.fin-banner.ok { background: var(--green-l); border-color: rgba(0,163,129,.3); }
.fin-banner.danger { background: var(--red-l); border-color: rgba(220,38,38,.3); color: #991b1b; font-weight: 600; }
.fin-banner-btn {
  margin-left: auto; padding: 5px 12px; border: none; border-radius: var(--radius-sm);
  background: var(--forest); color: #fff; font: inherit; font-size: 12px; font-weight: 700; cursor: pointer;
}
.fin-banner-btn:hover { opacity: .85; }

/* hero-tegels (overview): label, groot getal, delta, toelichting, sparkline */
.fin-hero { display: grid; grid-template-columns: repeat(6, 1fr); gap: 12px; margin-bottom: 12px; }
/* OPEX: vier kengetallen in plaats van zes */
#opex-kpis { grid-template-columns: repeat(4, 1fr); }

/* OPEX — waar het geld heen gaat, als balken per categorie */
.opex-cats { display: flex; flex-direction: column; gap: 9px; padding: 4px 2px; }
.opex-cat { display: grid; grid-template-columns: 130px 1fr 90px 44px; align-items: center; gap: 12px; }
.opex-cat-n { font-size: 12.5px; font-weight: 600; color: var(--text-m); text-transform: uppercase;
  letter-spacing: .3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.opex-cat-bar { height: 9px; border-radius: 5px; background: var(--surface2); overflow: hidden; }
.opex-cat-bar i { display: block; height: 100%; border-radius: 5px; background: var(--forest); }
.opex-cat-v { font-size: 13px; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }
.opex-cat-p { font-size: 11.5px; color: var(--text-m); text-align: right; }

/* OPEX — tabs per categorie */
.opex-tabs { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 2px 14px; }
.opex-tab { display: inline-flex; align-items: center; gap: 8px; height: 30px; padding: 0 12px;
  border: 1px solid var(--border); border-radius: 999px; background: var(--surface);
  color: var(--text-m); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
  transition: border-color .15s, background .15s, color .15s; }
.opex-tab:hover { background: var(--surface2); color: var(--text); }
.opex-tab.is-on { background: var(--forest); border-color: var(--forest); color: #fff; }
.opex-tab-v { font-size: 11.5px; font-weight: 700; opacity: .72; font-variant-numeric: tabular-nums; }

/* OPEX — leverancier openklappen naar de losse betalingen */
.opex-row { cursor: pointer; }
.opex-row:hover { background: var(--surface2); }
.opex-row.is-open { background: var(--surface2); }
.opex-caret { display: inline-block; width: 14px; color: var(--text-m); font-size: 10px; }
.opex-sub > td { background: var(--surface2); font-size: 12.5px; padding-top: 6px; padding-bottom: 6px; }
.opex-sub > td:first-child { padding-left: 30px; }
.opex-scheiding > td { padding: 14px 12px 8px; font-size: 12px; color: var(--text-m);
  border-top: 1px solid var(--border); background: transparent; }
.fin-kpi { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 18px 12px; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.fin-kpi-l, .fin-cell-l, .fin-tile-l { font-size: 12px; font-weight: 600; color: var(--text-m); }
.fin-kpi-row { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.fin-kpi-v { font-size: 26px; font-weight: 800; letter-spacing: -.7px; line-height: 1.05; color: var(--text); }
.fin-kpi-v .sk { width: 70%; height: 24px; margin: 2px 0; }
.fin-kpi-s { font-size: 11.5px; color: var(--text-m); min-height: 16px; }
.fin-spark { width: 100%; height: 44px; margin-top: 6px; display: block; }
.fin-delta { display: inline-flex; align-items: center; font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 20px; }
.fin-delta.up { background: var(--green-l); color: var(--green); }
.fin-delta.down { background: var(--red-l); color: var(--red); }
.fin-delta.flat { background: var(--surface2); color: var(--text-m); }

/* operator-strip: één rand, cellen gescheiden door hairlines */
.fin-strip { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1px; background: var(--border); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; margin-bottom: 20px; }
.fin-cell { background: var(--surface); padding: 13px 16px; min-width: 0; }
.fin-cell-v { font-size: 19px; font-weight: 800; letter-spacing: -.4px; line-height: 1.1; margin-top: 4px; color: var(--text); }
.fin-cell-s { font-size: 11px; color: var(--text-m); margin-top: 4px; }
.fin-pill { display: inline-block; padding: 2px 9px; border-radius: 20px; font-size: inherit; font-weight: 700; }
.fin-pill.good { background: var(--green-l); color: var(--green); }
.fin-pill.warn { background: var(--yellow-l); color: var(--yellow); }
.fin-pill.bad { background: var(--red-l); color: var(--red); }
.fin-pill.out { background: var(--red); color: #fff; }
.fin-pill.neutral { background: var(--surface2); color: var(--text-m); font-weight: 600; }
.fin-table .fin-pill { font-size: 11px; }

/* kleine tegels (overige views) */
.fin-tiles { display: grid; gap: 12px; margin-bottom: 18px; }
.fin-tiles--3 { grid-template-columns: repeat(3, 1fr); }
.fin-tiles--4 { grid-template-columns: repeat(4, 1fr); }
.fin-tiles--6 { grid-template-columns: repeat(6, 1fr); }
.fin-tile { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; min-width: 0; }
.fin-tile-v { font-size: 22px; font-weight: 800; letter-spacing: -.5px; line-height: 1.1; margin-top: 5px; color: var(--text); }
.fin-tile-v--sm { font-size: 16px; }
.fin-tile-s { font-size: 11px; color: var(--text-m); margin-top: 4px; }

/* Mark: het donkere digest-paneel, lime alleen op het merkteken */
.fin-mark { background: var(--forest); color: #fff; border-radius: var(--radius); padding: 18px 20px; box-shadow: var(--shadow-md); }
.fin-mark-head { display: flex; align-items: center; gap: 11px; margin-bottom: 12px; }
.fin-mark-av { width: 32px; height: 32px; border-radius: 50%; background: var(--lime); color: var(--forest); display: grid; place-items: center; font-size: 15px; font-weight: 800; flex-shrink: 0; }
.fin-mark-t { font-size: 14px; font-weight: 800; }
.fin-mark-s { font-size: 11.5px; color: rgba(255,255,255,.6); }
.fin-mark-btn { margin-left: auto; background: rgba(255,255,255,.1); color: #fff; border: 1px solid rgba(255,255,255,.2); border-radius: 20px; padding: 5px 12px; font: inherit; font-size: 11.5px; font-weight: 600; cursor: pointer; }
.fin-mark-btn:hover { background: rgba(255,255,255,.18); }
.fin-mark-obs { list-style: none; display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 0; }
.fin-mark-obs li { display: flex; gap: 9px; font-size: 13px; line-height: 1.5; color: rgba(255,255,255,.92); max-width: 75ch; }
.fin-mark-obs li::before { content: '▸'; color: var(--lime); font-weight: 800; flex-shrink: 0; }
.fin-mark-obs li.muted { color: rgba(255,255,255,.6); font-style: italic; }
.fin-mark-obs li.muted::before { content: none; }
.fin-mark-chat { margin-top: 14px; border-top: 1px solid rgba(255,255,255,.14); padding-top: 12px; }
.fin-mark-log { display: flex; flex-direction: column; gap: 8px; max-height: 260px; overflow-y: auto; margin-bottom: 10px; }
.fin-mark-log:empty { display: none; }
.fin-mark-msg { font-size: 12.5px; line-height: 1.5; padding: 8px 12px; border-radius: 10px; max-width: 85%; white-space: pre-wrap; }
.fin-mark-msg.user { background: rgba(255,255,255,.92); color: var(--forest); align-self: flex-end; font-weight: 600; }
.fin-mark-msg.bot { background: rgba(255,255,255,.1); color: rgba(255,255,255,.95); align-self: flex-start; }
.fin-mark-row { display: flex; gap: 8px; }
.fin-mark-row input { flex: 1; border: 1px solid rgba(255,255,255,.25); background: rgba(255,255,255,.08); color: #fff; border-radius: 20px; padding: 8px 14px; font: inherit; font-size: 13px; outline: none; }
.fin-mark-row input::placeholder { color: rgba(255,255,255,.55); }
.fin-mark-row input:focus-visible { border-color: rgba(255,255,255,.7); box-shadow: 0 0 0 3px rgba(255,255,255,.15); }
.fin-mark-row button { background: #fff; color: var(--forest); border: none; border-radius: 20px; padding: 0 16px; font: inherit; font-weight: 800; font-size: 12.5px; cursor: pointer; }
.fin-mark-row button:hover { opacity: .9; }

/* kaarten + grafieken */
.fin-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); margin-bottom: 18px; overflow: hidden; }
.fin-card--narrow { max-width: 720px; }
.fin-card-h { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 13px 18px; border-bottom: 1px solid var(--border); }
.fin-card-h h2 { font-size: 13px; font-weight: 700; margin: 0; white-space: nowrap; }
.fin-card-h .fin-note { text-align: right; max-width: 60ch; }
.fin-scroll { overflow-x: auto; }
.fin-pad { padding: 12px 16px; }
.fin-two { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.fin-two--narrow { max-width: 320px; }
.fin-two--tight { gap: 8px; }
.fin-three { display: grid; grid-template-columns: 1fr 130px 150px; gap: 10px; }
.fin-two > .fin-card { margin-bottom: 18px; }
.fin-chart { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 18px; margin-bottom: 18px; overflow-x: auto; }
.fin-chart-t { font-size: 12px; font-weight: 700; color: var(--text-m); margin-bottom: 12px; }
.fin-chart svg { display: block; }
.fin-legend { display: flex; gap: 16px; font-size: 11px; font-weight: 600; color: var(--text-m); margin-top: 10px; }
.fin-legend > span { display: inline-flex; align-items: center; gap: 5px; }
.fin-legend-dot { display: inline-block; width: 10px; height: 10px; border-radius: 2px; }
.fin-legend-dot[data-c="green"] { background: var(--green); }
.fin-legend-dot[data-c="red"] { background: var(--red); }
.fin-legend-dot[data-c="forest"] { background: var(--forest); }
.fin-legend-dot[data-c="blue"] { background: var(--blue); }
.fin-legend-dot[data-c="orange"] { background: var(--orange); }
.fin-bar-row { display: flex; align-items: center; gap: 12px; margin-bottom: 9px; font-size: 12.5px; }
.fin-bar-l { width: 150px; font-weight: 600; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fin-bar { flex: 1; height: 18px; background: var(--surface2); border-radius: 4px; overflow: hidden; }
.fin-bar i { display: block; height: 100%; background: var(--forest); border-radius: 4px; }
.fin-bar-row b { width: 96px; text-align: right; flex-shrink: 0; }
.fin-bar-row .dim { width: 44px; text-align: right; font-size: 11.5px; flex-shrink: 0; }

/* één tabelklasse voor alle lijsten */
.fin-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.fin-table th { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--text-m); padding: 9px 14px; text-align: left; border-bottom: 1px solid var(--border); background: var(--surface2); white-space: nowrap; }
.fin-table td { padding: 9px 14px; border-bottom: 1px solid var(--border); vertical-align: middle; color: var(--text); }
.fin-table tbody tr:last-child td { border-bottom: none; }
.fin-table tbody tr:hover td { background: var(--bg); }
.fin-table th.num, .fin-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.fin-table td.act { text-align: right; width: 44px; }
.fin-table th.sortable { cursor: pointer; user-select: none; }
.fin-table th.sortable:hover { color: var(--text); }
.fin-table th.sortable.on { color: var(--forest); }
.fin-table th.sortable.on::after { content: ' ▾'; font-size: 9px; }
.fin-table th.sortable.on[data-dir="asc"]::after { content: ' ▴'; }
.fin-empty-cell { text-align: center; padding: 26px 16px !important; color: var(--text-m); font-size: 12.5px; line-height: 1.6; }
.fin-group-row td { padding-top: 14px; padding-bottom: 6px; font-weight: 700; background: var(--surface) !important; }
.fin-indent { padding-left: 28px !important; }
.fin-row-bad td { background: rgba(220,38,38,.045); }
.fin-row-good td { background: rgba(0,163,129,.05); }
.fin-po-start td { border-top: 2px solid var(--border); }
.fin-thumb { display: inline-block; width: 32px; height: 32px; border-radius: 6px; object-fit: cover; background: var(--surface2); border: 1px solid var(--border); vertical-align: middle; }
.fin-icon-btn { background: none; border: none; cursor: pointer; color: var(--text-m); padding: 4px 7px; border-radius: 5px; font-size: 12px; line-height: 1; transition: background .15s, color .15s; }
.fin-icon-btn:hover { background: var(--red-l); color: var(--red); }
.fin-icon-btn:focus-visible { outline: 2px solid var(--forest); outline-offset: 1px; }
body.hq-private .fin-table td.num, body.hq-private .fin-cell-input.num { filter: blur(7px); user-select: none; }

/* maand-P&L (waterfall) */
.fin-pl td:first-child { font-weight: 600; }
.fin-pl th.num { min-width: 96px; }
.fin-pl .fin-pl-sub { color: var(--text-m); font-weight: 500; font-size: 12px; padding-left: 14px; }
.fin-pl .fin-pl-hint { font-size: 10px; color: var(--text-m); font-weight: 400; margin-left: 5px; }
.fin-pl .fin-pl-pct { font-size: 10px; color: var(--text-m); margin-left: 6px; font-weight: 500; }
.fin-pl tr.fin-pl-total td { border-top: 1px solid var(--border); }
.fin-pl tr.net td { background: rgba(0,163,129,.05); }
.fin-pl tr.contrib td { background: var(--blue-l); }
.fin-pl tr.profit td { background: rgba(0,163,129,.08); }
.fin-pl tr.loss td { background: var(--red-l); }
.fin-pl tbody tr:hover td { background: inherit; }

/* invulvelden: één klasse, twee maten */
.fin-input, .fin-page select.fin-input, .fin-page textarea.fin-input, .modal .fin-input {
  width: 100%; padding: 8px 11px; font: inherit; font-size: 13px; color: var(--text);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-sm); outline: none;
  transition: border-color .15s, box-shadow .15s;
}
.fin-input:focus-visible { border-color: var(--forest); box-shadow: 0 0 0 3px var(--forest-l); }
.fin-input--sm { padding: 5px 9px; font-size: 12px; width: auto; }
.fin-input.num { text-align: right; }
.fin-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; resize: vertical; }
.fin-w-100 { width: 100px; } .fin-w-110 { width: 110px; } .fin-w-120 { width: 120px; } .fin-w-150 { width: 150px; }
.fin-w-160 { width: 160px; } .fin-w-190 { width: 190px; } .fin-w-220 { width: 220px; }
.fin-form { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 10px 12px; padding: 14px 18px; background: var(--surface2); border-bottom: 1px solid var(--border); }
.fin-form > label { display: flex; flex-direction: column; gap: 4px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--text-m); }
.fin-form > label > .fin-input { background: var(--surface); }
.fin-form .btn-primary, .fin-form .btn-ghost { height: 34px; }
.fin-affix { display: flex; align-items: center; gap: 6px; }
.fin-affix b { font-size: 14px; color: var(--text-m); }
.fin-stack { display: flex; flex-direction: column; gap: 14px; padding: 18px; }
.fin-field { display: flex; flex-direction: column; gap: 6px; }
.fin-field > span { font-size: 12px; font-weight: 600; color: var(--text); }
.fin-field.fin-inline { flex-direction: row; align-items: center; gap: 10px; }
.fin-field.fin-inline > span { color: var(--text-m); font-weight: 500; }
.fin-checks { display: flex; flex-direction: column; gap: 8px; font-size: 13px; }
.fin-checks label, .fin-switch-row { display: flex; align-items: center; gap: 9px; font-size: 13px; cursor: pointer; }
.fin-checks input, .fin-switch-row input, .fin-radio input { accent-color: var(--forest); width: 15px; height: 15px; }
.fin-form-foot { display: flex; align-items: center; justify-content: flex-end; gap: 10px; }
.fin-form-foot--left { justify-content: flex-start; }
.fin-msg { font-size: 12.5px; color: var(--text-m); white-space: pre-line; min-height: 0; }
.fin-msg:empty { display: none; }
.fin-msg.ok { color: var(--green); }
.fin-msg.err { color: var(--red); }
.fin-msg.warn { color: var(--yellow); }
.fin-steps { background: var(--surface2); border-radius: var(--radius-sm); padding: 13px 15px; font-size: 12.5px; color: var(--text-m); line-height: 1.7; margin: 18px 18px 0; }
.modal .fin-steps { margin: 0; }
.fin-steps b { color: var(--text); }
.fin-steps code { background: var(--surface); border: 1px solid var(--border); padding: 1px 6px; border-radius: 4px; font-size: 11.5px; color: var(--text); }
.fin-details { margin: 0 18px 18px; }
.fin-details summary { font-size: 12.5px; color: var(--text-m); cursor: pointer; }
.fin-details .fin-stack { padding: 12px 0 0; }
.fin-radios { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 6px; }
.fin-radio { display: flex; align-items: flex-start; gap: 9px; padding: 11px 13px; border: 1px solid var(--border); border-radius: 9px; cursor: pointer; background: var(--surface); transition: border-color .12s, background .12s; }
.fin-radio:hover { border-color: var(--forest-m); }
.fin-radio.selected { border-color: var(--forest); background: var(--forest-l); }
.fin-radio input { margin-top: 2px; }
.fin-radio span { display: flex; flex-direction: column; gap: 2px; }
.fin-radio b { font-size: 13px; font-weight: 600; }
.fin-radio small { font-size: 11.5px; color: var(--text-m); line-height: 1.4; }
.fin-modal-foot { padding: 14px 20px; border-top: 1px solid var(--border); display: flex; gap: 10px; justify-content: flex-end; }
.modal .fin-two, .modal .fin-three { gap: 10px; }
.fin-cell-input { width: 100%; min-width: 60px; border: 1px solid transparent; border-radius: 5px; padding: 4px 7px; font: inherit; font-size: 12.5px; background: transparent; color: var(--text); outline: none; transition: border-color .12s, background .12s; }
.fin-cell-input.num { text-align: right; -moz-appearance: textfield; }
.fin-cell-input:hover { background: var(--surface2); }
.fin-cell-input:focus { border-color: var(--forest); background: var(--surface); }
.fin-ink { min-width: 1180px; }
.fin-ink td { padding: 5px 8px; }
.fin-pl input.ad-input { width: 82px; }
.fin-pl input.ad-input.saved { border-color: var(--green); }

/* koppelingen */
.fin-conn-list { display: flex; flex-direction: column; }
.fin-conn { display: flex; align-items: center; gap: 12px; padding: 13px 18px; border-bottom: 1px solid var(--border); font-size: 13px; }
.fin-conn:last-child { border-bottom: none; }
.fin-conn-txt { display: flex; align-items: baseline; gap: 8px; flex: 1; min-width: 0; flex-wrap: wrap; }
.fin-conn-txt b { font-weight: 600; }
.fin-conn-txt span { font-size: 11.5px; color: var(--text-m); }
.fin-conn-act { display: flex; gap: 8px; }
.fin-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--text-s); flex-shrink: 0; }
.fin-dot.on { background: var(--green); box-shadow: 0 0 6px var(--green); }
.fin-dot.now { background: var(--red); box-shadow: 0 0 6px var(--red); }
.fin-dot.soon { background: var(--yellow); }

/* reorder planner */
.fin-plan { display: flex; align-items: center; gap: 14px; padding: 12px 18px; border-bottom: 1px solid var(--border); font-size: 13px; }
.fin-plan:last-child { border-bottom: none; }
.fin-plan-n { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.fin-plan-n span { font-size: 11px; }
.fin-plan-c { text-align: right; min-width: 100px; display: flex; flex-direction: column; }
.fin-plan-c span { font-size: 11px; color: var(--text-m); }

/* CLV cohorten */
.fin-clv { width: 100%; border-collapse: separate; border-spacing: 4px; font-size: 12.5px; }
.fin-clv th { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--text-m); padding: 6px 10px; text-align: center; }
.fin-clv th:first-child { text-align: left; }
.fin-clv-label { text-align: left; padding: 8px 12px; white-space: nowrap; }
.fin-clv-label span { display: block; font-size: 10.5px; color: var(--text-m); }
.fin-clv-cell { text-align: center; padding: 10px; border-radius: 8px; font-weight: 700; color: var(--text); background: rgba(0,163,129,var(--a, .1)); min-width: 78px; }
.fin-clv-cell.edge { box-shadow: inset 0 0 0 2px var(--forest); background: var(--surface); color: var(--forest); }
.fin-clv-cell.empty { background: transparent; color: var(--text-s); font-weight: 400; }

/* tooltip: uitleg + formule */
.fin-has-tip { cursor: help; text-decoration: underline dotted var(--text-s); text-underline-offset: 3px; }
.fin-tip { position: fixed; z-index: 730; max-width: 330px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow-lg); padding: 12px 14px; font-size: 12.5px; line-height: 1.55; color: var(--text); pointer-events: none; opacity: 0; transform: translateY(3px); transition: opacity .12s, transform .12s; }
.fin-tip.show { opacity: 1; transform: none; }
.fin-tip-d { color: var(--text-m); }
.fin-tip-f { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); font-size: 12px; font-variant-numeric: tabular-nums; }

/* degradeert naar beneden, desktop-first */
@media (max-width: 1500px) { .fin-hero, .fin-strip, .fin-tiles--6 { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 1180px) {
  .fin-hero, .fin-strip, .fin-tiles--6, .fin-tiles--4 { grid-template-columns: repeat(2, 1fr); }
  .fin-two { grid-template-columns: 1fr; }
  .fin-card-h { flex-direction: column; align-items: flex-start; gap: 4px; }
  .fin-card-h .fin-note { text-align: left; }
}
@media (max-width: 900px) { .fin-tiles--3 { grid-template-columns: 1fr; } .fin-sync-note { display: none; } }
@media (prefers-reduced-motion: reduce) { .fin-tip, .fin-view-tab, .fin-ctl-btn, .fin-cell-input, .fin-radio { transition: none; } }

/* Financials — CSV-import van ad spend */
.fin-imp-row { display:flex; align-items:flex-end; gap:12px; padding:14px 16px; flex-wrap:wrap; }
.fin-imp-row .fin-f { display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700;
  letter-spacing:.6px; text-transform:uppercase; color:var(--text-m); }
.fin-imp-row .fin-f--grow { flex:1; min-width:260px; }
.fin-imp-result { padding:0 16px 16px; }
.fin-imp-sum { font-size:13px; color:var(--text); margin-bottom:10px; line-height:1.6; }
.fin-table--sm { max-width:360px; }

.fin-total td { border-top: 2px solid var(--text); background: var(--surface2); }

/* ─── PAGINA: CS Training Hub (cs-training.html) ─────────────────────────── */
.training-layout { display:grid; grid-template-columns:1fr 380px; gap:24px; align-items:start; }
.tab-row { display:flex; gap:4px; margin-bottom:20px; border-bottom:1px solid var(--border); padding-bottom:0; }
.tab-btn { padding:8px 16px; border:none; background:none; color:var(--text-s); font-size:.85rem; font-weight:500; cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-1px; transition:color .15s, border-color .15s; }
.tab-btn.active { color:var(--text); border-bottom-color:var(--accent); }
.tab-panel { display:none; }
.tab-panel.active { display:block; }
.fb-card { background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:18px 20px; margin-bottom:14px; }
.fb-card-meta { display:flex; align-items:center; gap:8px; margin-bottom:10px; font-size:.75rem; color:var(--text-s); }
.fb-from { font-weight:600; color:var(--text); font-size:.8rem; }
.fb-subject { font-size:.8rem; color:var(--text-s); }
.fb-label { font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 7px; border-radius:4px; }
.fb-label-pending { background:oklch(0.95 0.04 85); color:oklch(0.45 0.12 75); }
.fb-label-approved { background:oklch(0.94 0.04 145); color:oklch(0.4 0.12 145); }
.fb-label-dismissed { background:var(--surface-2); color:var(--text-s); }
.fb-section { margin-top:10px; }
.fb-section-label { font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--text-s); margin-bottom:4px; }
.fb-draft-text { font-size:.8rem; color:var(--text-s); background:var(--surface-2); border-radius:6px; padding:8px 12px; line-height:1.55; max-height:80px; overflow:hidden; position:relative; }
.fb-draft-text::after { content:''; position:absolute; bottom:0; left:0; right:0; height:28px; background:linear-gradient(transparent, var(--surface-2)); }
.fb-feedback-text { font-size:.85rem; color:var(--text); font-style:italic; line-height:1.5; }
.fb-lesson-row { margin-top:12px; display:flex; flex-direction:column; gap:6px; }
.fb-lesson-input { width:100%; font-size:.85rem; padding:8px 12px; border:1px solid var(--border); border-radius:6px; background:var(--surface-2); color:var(--text); resize:vertical; min-height:52px; font-family:inherit; box-sizing:border-box; }
.fb-lesson-input:focus { outline:none; border-color:var(--accent); }
.fb-lesson-row-btns { display:flex; gap:6px; flex-wrap:wrap; }
.cat-select { font-size:.8rem; padding:5px 10px; border:1px solid var(--border); border-radius:6px; background:var(--surface-2); color:var(--text); cursor:pointer; }
.fb-actions { display:flex; gap:8px; margin-top:14px; flex-wrap:wrap; }
.sop-list { display:flex; flex-direction:column; gap:10px; }
.sop-item { background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:14px 16px; }
.sop-item.inactive { opacity:.55; }
.sop-item-top { display:flex; align-items:flex-start; gap:10px; }
.sop-item-text { flex:1; font-size:.88rem; color:var(--text); line-height:1.5; }
.sop-item-text-edit { width:100%; font-size:.85rem; padding:7px 10px; border:1px solid var(--accent); border-radius:6px; background:var(--surface-2); color:var(--text); resize:vertical; min-height:52px; font-family:inherit; box-sizing:border-box; }
.sop-item-meta { display:flex; align-items:center; gap:8px; margin-top:6px; font-size:.73rem; color:var(--text-s); }
.sop-item-actions { display:flex; gap:6px; margin-top:10px; }
.cat-badge { font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 7px; border-radius:4px; background:var(--surface-2); color:var(--text-s); }
.suggestions-panel { background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:18px 20px; }
.suggestions-panel-title { font-size:.9rem; font-weight:700; margin-bottom:4px; color:var(--text); display:flex; align-items:center; gap:8px; }
.suggestions-panel-desc { font-size:.8rem; color:var(--text-s); margin-bottom:14px; }
.suggestion-item { background:var(--surface-2); border-radius:8px; padding:12px 14px; margin-bottom:10px; }
.suggestion-text { font-size:.85rem; color:var(--text); line-height:1.5; margin-bottom:6px; }
.suggestion-rationale { font-size:.75rem; color:var(--text-s); font-style:italic; }
.suggestion-actions { display:flex; gap:6px; margin-top:8px; }
.stats-row { display:flex; gap:14px; margin-bottom:20px; flex-wrap:wrap; }
.stat-chip { background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:10px 16px; min-width:110px; }
.stat-chip-num { font-size:1.4rem; font-weight:700; color:var(--text); line-height:1; }
.stat-chip-label { font-size:.72rem; color:var(--text-s); margin-top:3px; }
.add-lesson-panel { background:var(--surface); border:1px dashed var(--border); border-radius:10px; padding:16px 18px; margin-bottom:14px; }
.add-lesson-panel textarea { width:100%; margin-top:8px; font-size:.85rem; padding:8px 12px; border:1px solid var(--border); border-radius:6px; background:var(--surface-2); color:var(--text); resize:vertical; min-height:60px; font-family:inherit; box-sizing:border-box; }
.add-lesson-panel textarea:focus { outline:none; border-color:var(--accent); }
@media (max-width:1100px) { .training-layout { grid-template-columns:1fr; } }


/* ── Editing hub: SRT-precheck ─────────────────────────────────────────
   Ondertitels als tekst checken vóór het inbranden. */
.eh-srt { margin-bottom: 18px; }
.eh-srt textarea {
  width: 100%; box-sizing: border-box; font-family: ui-monospace, Menlo, monospace;
  font-size: 12px; padding: 9px 11px; border: 1px dashed var(--border); border-radius: 9px;
  background: var(--card); color: var(--text); resize: vertical;
}
.eh-srt textarea.is-over { border-color: var(--forest); background: var(--forest-l); }
.eh-srt-rij { display: flex; align-items: center; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.eh-srt-stand { font-size: 12px; color: var(--text-m); }
.eh-srt-tw { font-size: 12px; color: var(--text-s); margin: 8px 0 0; font-style: italic; }
.eh-btn {
  padding: 7px 13px; border-radius: 8px; border: 1px solid var(--forest); background: var(--forest);
  color: #fff; font-size: 12.5px; font-weight: 700; cursor: pointer; font-family: inherit;
}
.eh-btn-ghost {
  padding: 7px 13px; border-radius: 8px; border: 1px solid var(--border); background: var(--card);
  color: var(--text-m); font-size: 12.5px; font-weight: 600; cursor: pointer; font-family: inherit;
}

/* ── SUPPLY CHAIN (supply.html) ──────────────────────────────────────── */
.sc-acties { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.sc-sync { font-size:11.5px; color:var(--text-s); }
.sc-tabs { display:flex; gap:2px; border-bottom:1px solid var(--border); margin:4px 0 20px; }
.sc-tabs a { padding:9px 14px; font-size:12.5px; font-weight:700; color:var(--text-m); text-decoration:none; border-bottom:2px solid transparent; margin-bottom:-1px; }
.sc-tabs a.on { color:var(--forest); border-bottom-color:var(--forest); }
.sc-tab-n { display:inline-block; min-width:16px; padding:0 5px; margin-left:4px; border-radius:10px; background:var(--forest); color:#fff; font-size:10px; line-height:16px; text-align:center; }
.sc-tab-n:empty { display:none; }
.sc-kpis { margin-bottom:22px; }
.st-card.sc-warn { border-color:#e8d9a8; background:#fdfaf1; }
.sc-cols { display:grid; grid-template-columns:1.5fr 1fr; gap:22px; align-items:start; }
@media (max-width:1100px) { .sc-cols { grid-template-columns:1fr; } }
.sc-tabelwrap { overflow-x:auto; background:var(--card); border:1px solid var(--border); border-radius:12px; }
.sc-tabel { width:100%; border-collapse:collapse; font-size:12.5px; }
.sc-tabel th { text-align:left; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--text-s); padding:10px 12px; border-bottom:1px solid var(--border); white-space:nowrap; }
.sc-tabel th small { display:block; text-transform:none; letter-spacing:0; font-weight:500; }
.sc-tabel td { padding:10px 12px; border-bottom:1px solid var(--border); vertical-align:top; }
.sc-tabel tr:last-child td { border-bottom:none; }
.sc-tabel td.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.sc-tabel small { color:var(--text-s); font-size:11px; }
.sc-tabel.sc-click tbody tr { cursor:pointer; } .sc-tabel.sc-click tbody tr:hover td { background:var(--surface2,#f7f7f5); }
.sc-tabel tr.sc-stockout td:first-child, .sc-tabel tr.sc-order_now td:first-child, .sc-tabel tr.sc-gap td:first-child { box-shadow:inset 3px 0 0 #c0392b; }
.sc-tabel tr.sc-order_soon td:first-child { box-shadow:inset 3px 0 0 #b8912a; }
.sc-tabel td.sc-rowacts { white-space:nowrap; }
.sc-tabel input { font:inherit; font-size:12px; padding:4px 6px; border:1px solid var(--border); border-radius:6px; width:84px; text-align:right; }
.sc-up { color:#2e7d4f; font-weight:700; } .sc-down { color:#c0392b; font-weight:700; }
.sc-badge { display:inline-block; padding:2px 8px; border-radius:20px; font-size:11px; font-weight:700; white-space:nowrap; }
.sc-badge.stockout, .sc-badge.order_now, .sc-badge.gap { background:#fdf6f5; color:#c0392b; border:1px solid #e7bcb5; }
.sc-badge.order_soon { background:#fdfaf1; color:#8a6a14; border:1px solid #e8d9a8; }
.sc-badge.ok { background:#f0f7f2; color:#2e7d4f; border:1px solid #bfe0cb; }
.sc-badge.sellout { background:#eef4fb; color:#2f5f8f; border:1px solid #c5d8ee; }
.sc-badge.inactive, .sc-badge.over { background:var(--surface2,#f4f4f3); color:var(--text-m); border:1px solid var(--border); }
.sc-badge.po-draft { background:var(--surface2,#f4f4f3); color:var(--text-m); border:1px solid var(--border); }
.sc-badge.po-sent, .sc-badge.po-confirmed { background:#fdfaf1; color:#8a6a14; border:1px solid #e8d9a8; }
.sc-badge.po-production, .sc-badge.po-shipped { background:#eef4fb; color:#2f5f8f; border:1px solid #c5d8ee; }
.sc-badge.po-received { background:#f0f7f2; color:#2e7d4f; border:1px solid #bfe0cb; }
.sc-badge.po-cancelled { background:#fdf6f5; color:#c0392b; border:1px solid #e7bcb5; }
.sc-noot { font-size:11.5px; color:var(--text-s); margin:8px 2px 0; }
.sc-mini { font:inherit; font-size:11px; font-weight:700; padding:4px 9px; border-radius:7px; border:1px solid var(--forest); background:var(--forest); color:#fff; cursor:pointer; margin-left:6px; }
.sc-mini.ghost { background:var(--card); color:var(--text-m); border-color:var(--border); }
.co-alert .sc-mini { margin-left:auto; }
.sc-glance { background:var(--card); border:1px solid var(--border); border-radius:12px; }
.sc-glance-row { display:grid; grid-template-columns:1.2fr 220px 1fr; gap:14px; align-items:center; padding:10px 14px; border-bottom:1px solid var(--border); }
.sc-glance-row:last-child { border-bottom:none; }
.sc-glance-l b, .sc-glance-r { font-size:12.5px; } .sc-glance-l small, .sc-glance-r small { display:block; font-size:11px; color:var(--text-s); }
.sc-glance-r { text-align:right; }
.sc-spark { width:100%; height:44px; display:block; }
.sc-po-card { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:12px 14px; margin-bottom:10px; cursor:pointer; }
.sc-po-card:hover { box-shadow:0 2px 8px rgba(0,0,0,.06); }
.sc-po-top { display:flex; justify-content:space-between; align-items:center; font-size:13px; margin-bottom:4px; }
.sc-po-lines { font-size:12px; color:var(--text-m); } .sc-po-meta { font-size:11.5px; color:var(--text-s); margin-top:6px; }
.sc-flow { display:flex; gap:4px; margin:8px 0 2px; }
.sc-flow span { flex:1; height:4px; border-radius:2px; background:var(--border); } .sc-flow span.done { background:var(--forest); }
.sc-flow.big { gap:6px; margin:14px 0 18px; } .sc-flow.big > div { flex:1; text-align:center; } .sc-flow.big > div span { display:block; height:5px; border-radius:3px; background:var(--border); margin-bottom:4px; } .sc-flow.big > div.done span { background:var(--forest); } .sc-flow.big small { font-size:10.5px; color:var(--text-s); }
.sc-how { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:12px 16px; font-size:12.5px; color:var(--text-m); } .sc-how p { margin:6px 0; }
.sc-fc { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:12px 16px; margin-bottom:12px; }
.sc-fc-h { display:flex; align-items:baseline; gap:8px; font-size:13px; } .sc-fc-h span { margin-left:auto; font-size:11.5px; color:var(--text-s); } .sc-fc-h small { color:var(--text-s); }
.sc-fc-chart .sc-spark { height:90px; margin:8px 0; }
.sc-fc-meta { display:flex; flex-wrap:wrap; gap:14px; font-size:11.5px; color:var(--text-s); align-items:center; } .sc-fc-meta label { margin-left:auto; display:flex; gap:6px; align-items:center; } .sc-fc-meta input { font:inherit; font-size:12px; padding:4px 6px; border:1px solid var(--border); border-radius:6px; }
.sc-form, .sc-ask { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:12px; }
.sc-form input, .sc-form select, .sc-ask input { font:inherit; font-size:12.5px; padding:7px 9px; border:1px solid var(--border); border-radius:8px; background:#fff; min-width:110px; }
.sc-ask input { flex:1; }
.sc-chat { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:12px; min-height:260px; max-height:520px; overflow-y:auto; display:flex; flex-direction:column; gap:8px; }
.sc-msg { max-width:88%; padding:9px 12px; border-radius:12px; font-size:13px; line-height:1.5; } .sc-msg.user { align-self:flex-end; background:var(--forest); color:#fff; } .sc-msg.assistant { align-self:flex-start; background:var(--surface2,#f4f4f3); color:var(--text); } .sc-typing { opacity:.6; }
.sc-chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; } .sc-chip { font:inherit; font-size:11.5px; padding:5px 10px; border-radius:20px; border:1px solid var(--border); background:var(--card); color:var(--text-m); cursor:pointer; } .sc-chip:hover { border-color:var(--forest); color:var(--forest); }
.sc-drawer { position:fixed; inset:0; z-index:60; } .sc-drawer-bg { position:absolute; inset:0; background:rgba(20,30,24,.35); }
.sc-drawer-panel { position:absolute; top:0; right:0; bottom:0; width:min(680px, 96vw); background:var(--bg,#f7f7f5); border-left:1px solid var(--border); padding:22px 26px; overflow-y:auto; box-shadow:-8px 0 30px rgba(0,0,0,.12); }
.sc-drawer-h { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:10px; } .sc-drawer-h h2 { margin:0 0 4px; font-size:18px; color:var(--forest); }
.sc-x { font:inherit; font-size:22px; line-height:1; border:none; background:transparent; cursor:pointer; color:var(--text-s); }
.sc-drawer-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:14px; font-size:12.5px; } .sc-drawer-grid small { display:block; font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--text-s); }
.sc-lines { background:var(--card); border:1px solid var(--border); border-radius:12px; overflow:hidden; }
.sc-drawer-tot { text-align:right; font-size:12.5px; font-weight:700; margin:8px 0 12px; }
.sc-lbl { display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:var(--text-s); text-transform:uppercase; letter-spacing:.04em; margin-top:10px; } .sc-lbl input, .sc-lbl textarea { font:inherit; font-size:12.5px; text-transform:none; letter-spacing:0; padding:7px 9px; border:1px solid var(--border); border-radius:8px; background:#fff; } .sc-lbl.sc-check { flex-direction:row; align-items:center; text-transform:none; letter-spacing:0; font-size:12.5px; font-weight:600; }
.sc-drawer-row { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.sc-drawer-acts { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; align-items:center; } .sc-drawer-acts a { text-decoration:none; }
.sc-danger { color:#c0392b; margin-left:auto; }
