/*
 * Dilot v7 — the whole design system in one file (u221). docs/UI_V7_PLAN.md is the state carrier.
 *
 * Order: fonts · tokens · base · layout · components (handoff) · shell additions · auth · mobile.
 * Rules (STYLEGUIDE §9): only DM Sans 400/500/600 (Lora italic 500 only in the dashboard greeting) · max radius
 * 14px, never 999px · buttons 38/14 and 30/12.5 only · text never below 11.5px · labels never uppercase except
 * sidebar group labels · side-by-side cards are content height · no new hex values outside the tokens.
 *
 * Loaded ONLY by layouts/v7.blade.php and layouts/auth.blade.php. The legacy app.css is never loaded next to
 * it (same class names, e.g. .btn / .panel / .sidebar, would fight).
 */

/* ── Fonts — self-hosted. Google's CDN would send every visitor's IP to a US service. ───────────────────── */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 100 1000;           /* variable: wght + opsz axes (the design uses opsz 9..40) */
  src: url(fonts/dm-sans-latin-opsz-normal.woff2) format('woff2-variations'), url(fonts/dm-sans-latin-opsz-normal.woff2) format('woff2');
}
@font-face {
  font-family: 'Lora';
  font-style: italic;
  font-display: swap;
  font-weight: 500;
  src: url(fonts/lora-latin-500-italic.woff2) format('woff2');
}

/* ── Tokens — copied 1:1 from the v7 handoff css/tokens.css. Source of truth: STYLEGUIDE.md + #p0.
   Every value here is copied from the design; nothing is invented. Light mode only (dark mode is NOT designed). */
:root {
  /* ---------- Font ---------- */
  --font-family-base: 'DM Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;  /* SELF-HOSTED (never Google's CDN) */
  --font-family-accent: 'Lora', Georgia, serif;               /* italic 500 — ONLY the first name in the dashboard greeting */
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;                               /* no 550/650/700 anywhere */

  /* ---------- Type scale (px) ---------- */
  --font-size-greeting: 41px;      /* letter-spacing -.035em, line-height 1.1 */
  --font-size-number-xl: 45px;     /* main card number, -.04em */
  --font-size-number-lg: 31px;     /* stat tile, -.035em */
  --font-size-page-title: 31px;    /* -.032em, line-height 1.1 (24px/-.02em variant on Gesprekken, Trainen, Doorgestuurd) */
  --font-size-page-title-sm: 25px;
  --font-size-login-title: 27px;   /* -.03em */
  --font-size-empty-title: 25px;   /* -.028em */
  --font-size-number-md: 25px;     /* insights value */
  --font-size-number-sm: 23px;
  --font-size-section-title: 20px; /* assistant heading, design-file section headers, -.02em */
  --font-size-modal-title: 21px;   /* -.025em (18px on transcript modal) */
  --font-size-card-title: 16px;
  --font-size-button: 15px;
  --font-size-body: 15px;   /* Denis u230 (desktop); phones keep 14.5 (see the mobile block) */
  --font-size-label: 14px;
  --font-size-small: 13.5px;       /* meta, small button, text link */
  --font-size-xs: 13px;
  --font-size-min: 12.5px;         /* tags, column headers — never smaller */
  --line-height-body: 1.65;
  --line-height-tight: 1.1;
  --letter-spacing-caps: .1em;     /* uppercase section mini-heading (styleguide only) */
  --letter-spacing-sidebar-caps: .13em;

  /* ---------- Text colors ---------- */
  --color-text-primary: #1F2734;
  --color-text-row: #3E4553;
  --color-text-secondary: #5B6573;
  --color-text-label: #6E7787;
  --color-text-meta: #8A93A1;
  --color-text-faint: #A6ACB8;     /* rank numbers, placeholders */
  --color-text-on-dark: #FFFFFF;

  /* ---------- Brand ---------- */
  --color-primary: #2455D6;
  --color-primary-hover-link: #17399B;
  --color-primary-active-text: #17389B;  /* active sidebar item */
  --color-primary-soft: rgba(36,85,214,.1);     /* icon chip */
  --color-primary-soft-2: rgba(36,85,214,.06);  /* info notice, active start card */
  --color-primary-tag-bg: #EEF2FD;
  --color-primary-glow: rgba(36,85,214,.15);
  --color-deep-blue: #1B2E63;
  --color-sidebar-base: #0D1120;
  --color-icon-on-dark: #9FBBFF;
  --gradient-bar-1: linear-gradient(90deg,#1B3FA8 0%,#2E63E6 100%);
  --gradient-bar-2: linear-gradient(90deg,#2A55C9 0%,#5B84EC 100%);
  --gradient-bar-3: linear-gradient(90deg,#6486DF 0%,#96AEEF 100%);
  --gradient-bar-4: linear-gradient(90deg,#92A9EC 0%,#BACBF5 100%);
  --gradient-bar-5: linear-gradient(90deg,#B4C4EA 0%,#D8E1F5 100%);
  --gradient-bar-vertical-active: linear-gradient(180deg,#2E63E6 0%,#1B3FA8 100%);
  --color-bar-muted: rgba(36,85,214,.2);
  --color-legend-1: #1B3FA8; --color-legend-2: #5B82E3; --color-legend-3: #8FA8EC; --color-legend-4: #C8D3EE;
  --color-bar-text-light: #FFFFFF; --color-bar-text-dark: #13224A;

  /* ---------- Status (text on background) ---------- */
  --color-positive: #127A52;  --color-positive-bg: #E8F4EE;
  --color-warning: #8A6A12;   --color-warning-bg: #FBF3E2;
  --color-danger: #B23A2E;    --color-danger-bg: #FBEDEB;  --color-danger-soft: rgba(178,58,46,.1);
  --color-neutral: #5B6573;   --color-neutral-bg: #F1F3F7;
  --color-concept: #7A5E08;   --color-concept-bg: rgba(245,198,62,.24);
  --color-badge-yellow: #F5C63E; --color-badge-yellow-text: #2A2306;
  --color-accent-green-on-dark: #5FD8A4; --color-live-on-dark: #7FE3C1; --color-live-dot: #3FD39E;

  /* ---------- Knowledge-type tags ---------- */
  --tag-kennis-fg: #2455D6;    --tag-kennis-bg: rgba(36,85,214,.1);
  --tag-website-fg: #3E4553;   --tag-website-bg: rgba(31,48,90,.07);
  --tag-instructie-fg: #127A52;--tag-instructie-bg: rgba(18,122,82,.1);   /* green (Denis, u226 — as on 07/10/12; the handoff token was purple) */
  --tag-video-fg: #127A52;     --tag-video-bg: rgba(18,122,82,.11);

  /* ---------- Channel colors ---------- */
  --channel-email-fg: #2455D6;     --channel-email-bg: rgba(36,85,214,.1);
  --channel-whatsapp-fg: #128C4E;  --channel-whatsapp-bg: rgba(18,140,78,.1);
  --channel-instagram-fg: #C13584; --channel-instagram-bg: rgba(193,53,132,.1);
  --channel-facebook-fg: #1877F2;  --channel-facebook-bg: rgba(24,119,242,.1);

  /* ---------- Borders & lines ---------- */
  --color-border: #DFE3EA;          /* white panel, input (login), buttons on grey band */
  --color-border-button: #CFD6E2;   /* secondary button */
  --color-border-tile: #E3E6EC;
  --color-border-band-inner: #E7EAF1;
  --color-row-line: #F1F3F7;        /* row separator in white panel */
  --color-line-glass: rgba(31,48,90,.1);
  --color-line-light: rgba(31,48,90,.08);
  --color-line-faint: rgba(31,48,90,.06);
  --color-border-input: rgba(31,48,90,.12);
  --color-border-checkbox: #C8CFDB;
  --color-border-glass: rgba(255,255,255,.85);

  /* ---------- Surfaces ---------- */
  --color-page-bg: #EDEFF3;
  --color-artboard-fallback: #E8EEF6;
  --color-surface: #FFFFFF;
  --color-band: #F7F8FB;            /* grey head/foot band of white panels, modal head */
  --color-row-selected: #F7F9FE;
  --color-fill-soft: rgba(31,48,90,.045);
  --color-fill-button-soft: rgba(31,48,90,.06);
  --color-fill-segmented: rgba(31,48,90,.05);
  --color-toggle-off: rgba(31,48,90,.14);
  --color-glass: rgba(255,255,255,.72);
  --color-glass-button: rgba(255,255,255,.78);
  --color-overlay: rgba(20,26,44,.34);
  --gradient-dark-card: linear-gradient(135deg,#131A2C 0%,#1B2E63 100%);
  --gradient-sidebar: linear-gradient(168deg,#0D1120 0%,#111830 46%,#16224A 78%,#1B2E63 100%);
  --gradient-sky: radial-gradient(64% 44% at 10% 0%,#BFD4F4 0%,rgba(191,212,244,0) 60%),radial-gradient(56% 40% at 92% 2%,#DCD0F0 0%,rgba(220,208,240,0) 58%),radial-gradient(86% 52% at 52% 110%,#F0E5D4 0%,rgba(240,229,212,0) 62%),linear-gradient(180deg,#E3ECF8 0%,#EFF0EE 50%,#F2EBE0 100%);
  --noise-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/></filter><rect width='140' height='140' filter='url(%23n)'/></svg>");
  --noise-opacity: .05;
  --glass-blur: blur(26px);
  --glow-glass: radial-gradient(closest-side,rgba(36,85,214,.15),rgba(36,85,214,0));   /* inset:-46% 58% 74% -14% */
  --glow-dark: radial-gradient(closest-side,rgba(90,130,255,.4),rgba(90,130,255,0));

  /* ---------- Radii ---------- */
  --radius-card: 14px;       /* glass card, artboard, modal, sidebar island — maximum radius anywhere */
  --radius-panel: 10px;      /* white panel, tile, input (settings), start card, assistant icon 40/46 */
  --radius-control: 8px;     /* button, chip, dropdown, icon chip, segmented item, login input */
  --radius-nav: 7px;         /* sidebar item */
  --radius-toggle: 6px;      /* toggle track, format-bar button, sidebar sub item */
  --radius-tag: 5px;         /* tag, badge, checkbox */
  --radius-toggle-knob: 4px;
  --radius-bar: 4px;         /* 24–26px horizontal bar, vertical chart bar top */
  --radius-bar-thin: 2px;
  --radius-round: 50%;       /* dots, radio, avatar only */

  /* ---------- Shadows ---------- */
  --shadow-glass: 0 10px 34px rgba(38,52,86,.1);
  --shadow-glass-button: 0 8px 24px rgba(38,52,86,.1);
  --shadow-button-white: 0 1px 2px rgba(31,48,90,.06);
  --shadow-dark-card: 0 14px 38px rgba(20,26,44,.26);
  --shadow-assistant-icon: 0 12px 30px rgba(20,26,44,.26);
  --shadow-segmented-active: 0 2px 8px rgba(38,52,86,.12);
  --shadow-sidebar: 0 16px 40px rgba(10,16,34,.34);
  --shadow-sidebar-active: 0 3px 12px rgba(18,36,92,.24);
  --shadow-modal: 0 40px 90px rgba(13,18,28,.4);
  --shadow-focus: 0 0 0 3px rgba(36,85,214,.14);
  --shadow-artboard: 0 30px 70px rgba(38,52,86,.2);   /* design-file frame only */

  /* ---------- Spacing (values used in the design) ---------- */
  --space-2: 2px; --space-3: 3px; --space-4: 4px; --space-6: 6px; --space-8: 8px; --space-9: 9px;
  --space-10: 10px; --space-12: 12px; --space-13: 13px; --space-14: 14px; --space-16: 16px; --space-18: 18px;
  --space-20: 20px; --space-22: 22px; --space-24: 24px; --space-26: 26px; --space-28: 28px; --space-32: 32px;
  --space-40: 40px; --space-44: 44px;

  /* ---------- Layout ---------- */
  --viewport-desktop: 1440px;          /* designed width; responsive behavior between desktop widths is NOT designed */
  --sidebar-width: 284px;              /* design 258; wider on Denis's request (u223, with the +1.5px type). Includes 16px outer margin */
  --sidebar-outer-padding: 16px;
  --sidebar-inner-padding: 18px 12px 14px;
  --sidebar-item-height: 37px;
  --sidebar-sub-item-height: 30px;
  --content-padding: 26px 44px 40px 26px;
  --page-min-height: 800px;
  --dashboard-column-max: 900px;
  --stats-insights-width: 320px;
  --knowledge-sources-width: 330px;
  --product-side-width: 392px;
  --settings-side-width: 360px;
  --settings-label-width: 190px;
  --stats-row-label-width: 210px;
  --modal-width: 760px; --modal-width-lg: 820px; /* u514: ONE dialog width (--modal-width). -lg is the width of two PAGES (.sheet--page, .detail-stack), not of a dialog */
  --login-card-width: 440px;
  --mobile-width: 390px;               /* phone frames on 14, 23 */

  /* ---------- Components ---------- */
  --button-height: 38px;      --button-font-size: 14.5px;   /* u229 (Denis): 38 high (the design height), type 14.5 */
  --button-height-sm: 32px;   --button-font-size-sm: 13px;
  --input-height: 36px;       --input-height-login: 42px;
  --toggle-width: 40px; --toggle-height: 23px; --toggle-knob: 17px;
  --checkbox-size: 18px; --radio-size: 16px;
  --icon-chip-size: 30px; --icon-chip-size-sm: 26px;
  --assistant-icon-size: 40px; --assistant-icon-size-empty: 46px;
  --tag-height: 21px;
  --format-button-width: 28px; --format-button-height: 26px; --format-bar-min-height: 38px;
  --icon-size-sidebar: 17px; --icon-size-card: 15px; --icon-size-button: 13px; --icon-size-chevron: 12px;
  --icon-stroke-width: 1.9;
}

/* ── Base ─────────────────────────────────────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body.app { font-family: var(--font-family-base); font-size: var(--font-size-body); line-height: 1.5; color: var(--color-text-primary); font-optical-sizing: auto; }
/* :where() keeps these resets at zero specificity, so every component class below still wins. */
:where(.app) a { color: inherit; text-decoration: none; }
:where(.app) :where(button, input, select, textarea) { font-family: inherit; font-size: inherit; color: inherit; }
:where(.app) button { background: none; border: 0; padding: 0; margin: 0; }
:where(.app) :where(h1, h2, h3, p) { margin: 0; }
:where(.app) :focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
[hidden] { display: none !important; }

/* ── Layout — from the v7 handoff css/layout.css; u221 makes the sidebar sticky and scrollable. ───────── */
.app { min-height:100vh; position:relative; background:var(--color-artboard-fallback); font-family:var(--font-family-base); color:var(--color-text-primary); -webkit-font-smoothing:antialiased; }
.app::before { content:""; position:fixed; inset:0; background:var(--gradient-sky); pointer-events:none; }
.app::after  { content:""; position:fixed; inset:0; opacity:var(--noise-opacity); mix-blend-mode:multiply; background-image:var(--noise-image); pointer-events:none; }
.app-shell { position:relative; z-index:1; display:flex; min-height:max(100vh, var(--page-min-height)); box-sizing:border-box; }
.app-shell__sidebar { width:var(--sidebar-width); flex:none; position:sticky; top:0; height:100vh; align-self:flex-start; transition:width .18s ease; }
.app-shell__main { flex:1; min-width:0; display:flex; flex-direction:column; padding:var(--content-padding); box-sizing:border-box; }

/* Page header: title left, utility actions right */
.page-header { flex:none; display:flex; align-items:flex-end; gap:14px; padding:2px 6px 20px; }
.page-header__text { min-width:0; flex:1; }
.page-header__breadcrumb { font-size:var(--font-size-label); color:var(--color-text-meta); margin-bottom:4px; }
.page-header__title { font-size:var(--font-size-page-title); font-weight:600; letter-spacing:-.032em; line-height:var(--line-height-tight); color:var(--color-text-primary); margin:0; }
/* u267 (Denis): ONE page title for every page — the compact variant is gone (the class stays harmless for old markup). */
.page-header__title--compact { font-size:var(--font-size-page-title); letter-spacing:-.032em; }
.page-header__subtitle { font-size:var(--font-size-body); font-weight:500; color:var(--color-text-secondary); margin-top:6px; }
.page-header__actions { display:flex; align-items:center; gap:8px; flex:none; }

/* Body regions */
.page-body { flex:1; min-height:0; display:flex; flex-direction:column; gap:18px; padding:0 6px; }
.page-row { display:flex; gap:18px; align-items:flex-start; }  /* rule: side-by-side cards are content height */
.page-row--stretch { align-items:stretch; }
.page-col { flex:1; min-width:0; display:flex; flex-direction:column; gap:16px; }
.page-col--fixed-330 { width:var(--knowledge-sources-width); flex:none; }
.page-col--fixed-320 { width:var(--stats-insights-width); flex:none; }
.page-col--fixed-360 { width:var(--settings-side-width); flex:none; }
.page-col--fixed-392 { width:var(--product-side-width); flex:none; }

/* Dashboard: centered column */
.page-body--centered { align-items:center; }
.page-body--centered > * { width:100%; max-width:var(--dashboard-column-max); }

/* Login: two cards centered, no sidebar */
.auth { position:relative; z-index:1; min-height:100vh; display:flex; align-items:center; justify-content:center; gap:28px; padding:40px; box-sizing:border-box; }


/* ── Components — from the v7 handoff css/components.css (BEM). Values mirror the inline styles in the design
   source. Local additions are marked "u221:" and exist only to make the design work with real elements. */

/* ===== Sidebar (DilotSidebarV7 / DilotSidebarAdminV7) ===== */
.sidebar { width:var(--sidebar-width); height:100%; padding:var(--sidebar-outer-padding) 0 var(--sidebar-outer-padding) var(--sidebar-outer-padding); box-sizing:border-box; display:flex; }
.sidebar__island { flex:1; min-width:0; position:relative; overflow:hidden; display:flex; flex-direction:column; padding:var(--sidebar-inner-padding); box-sizing:border-box; border-radius:var(--radius-card); background:var(--gradient-sidebar); border:1px solid rgba(255,255,255,.1); box-shadow:var(--shadow-sidebar); }
.sidebar__island::before { content:""; position:absolute; inset:58% -50% -34% -10%; background:radial-gradient(closest-side,rgba(48,96,235,.55),rgba(48,96,235,0)); pointer-events:none; }
.sidebar__island::after  { content:""; position:absolute; left:0; right:0; top:0; height:34%; background:linear-gradient(180deg,rgba(255,255,255,.1) 0%,rgba(255,255,255,.04) 45%,rgba(255,255,255,0) 100%); pointer-events:none; }
/* second glow in source: inset:-30% -30% 66% 20%; radial rgba(120,150,255,.16) */
.sidebar__brand { position:relative; display:flex; align-items:center; gap:10px; height:34px; padding:0 6px; margin-bottom:8px; }
.sidebar__collapse { width:26px; height:26px; border-radius:var(--radius-toggle); display:flex; align-items:center; justify-content:center; cursor:pointer; color:rgba(255,255,255,.7); }
.sidebar__role { position:relative; display:flex; align-items:center; gap:8px; margin:0 2px 4px; padding:8px 11px; border-radius:var(--radius-control); background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.14); } /* superadmin only */
.sidebar__role-dot { width:6px; height:6px; border-radius:50%; background:#7C9BFF; }
.sidebar__role-label { flex:1; font:600 13.5px var(--font-family-base); color:#fff; }
.sidebar__role--brand { display:inline-flex; margin:0; padding:5px 10px; gap:7px; } /* u246: in the brand slot, left of the collapse button */
.sidebar__role--brand .sidebar__role-label { flex:none; font-size:12.5px; }
.sidebar__role-meta { font:500 12.5px var(--font-family-base); color:rgba(255,255,255,.7); }
.sidebar__group { position:relative; display:flex; flex-direction:column; gap:2px; }
.sidebar__group-label { display:flex; align-items:center; gap:10px; padding:16px 11px 8px; font:600 11px var(--font-family-base); letter-spacing:var(--letter-spacing-sidebar-caps); text-transform:uppercase; color:rgba(255,255,255,.72); white-space:nowrap; }
.sidebar__group-label::after { content:""; flex:1; height:1px; background:rgba(255,255,255,.14); }
.sidebar__item { display:flex; align-items:center; gap:11px; height:var(--sidebar-item-height); padding:0 11px; border-radius:var(--radius-nav); cursor:pointer; font:500 14.5px var(--font-family-base); color:#fff; } /* 14.5: Denis u227 */
.sidebar__item-icon { width:var(--icon-size-sidebar); height:var(--icon-size-sidebar); color:rgba(255,255,255,.72); stroke-width:1.8; flex:none; } /* u349: color, not stroke — V7Icon paints currentColor through a mask */
.sidebar__item-label { flex:1; min-width:0; }
.sidebar__item--active { background:#fff; box-shadow:var(--shadow-sidebar-active); font-weight:600; color:var(--color-primary-active-text); }
.sidebar__item--active .sidebar__item-icon { color:var(--color-primary-active-text); }
.sidebar__badge { font:600 12px var(--font-family-base); border-radius:var(--radius-control); padding:2px 8px; background:rgba(255,255,255,.18); color:#fff; }
.sidebar__badge--warn { background:var(--color-badge-yellow); color:var(--color-badge-yellow-text); }
.sidebar__dot { width:6px; height:6px; border-radius:50%; background:var(--color-danger); }
.sidebar__subnav { display:flex; flex-direction:column; gap:2px; margin:2px 0 2px 29px; padding-left:10px; border-left:1px solid rgba(255,255,255,.2); }
.sidebar__subitem { display:flex; align-items:center; justify-content:space-between; gap:8px; height:var(--sidebar-sub-item-height); padding:0 11px; border-radius:var(--radius-toggle); cursor:pointer; font:500 13.5px var(--font-family-base); color:#fff; }
.sidebar__subitem-count { font:600 12px var(--font-family-base); color:rgba(255,255,255,.7); }
.sidebar__subitem--active { background:#fff; box-shadow:var(--shadow-sidebar-active); font-weight:600; color:var(--color-primary-active-text); }
.sidebar__footer { position:relative; margin-top:auto; display:flex; flex-direction:column; gap:2px; }
.sidebar__divider { height:1px; background:rgba(255,255,255,.16); margin:14px 8px 10px; }
.sidebar__user { display:flex; align-items:center; gap:10px; padding:12px 8px 2px; margin-top:10px; border-top:1px solid rgba(255,255,255,.16); }
.sidebar__avatar { width:30px; height:30px; flex:none; border-radius:50%; background:rgba(255,255,255,.16); color:#fff; display:flex; align-items:center; justify-content:center; font:600 12px var(--font-family-base); }
.sidebar__avatar--admin { background:var(--color-primary); }
.sidebar__user-name { font-size:14px; font-weight:600; color:#fff; }
.sidebar__user-role { font-size:12.5px; color:rgba(255,255,255,.75); }

/* ===== Surfaces ===== */
.glass-card { background:var(--color-glass);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--color-border-glass);box-shadow:var(--shadow-glass);border-radius:var(--radius-card);box-sizing:border-box; padding:18px 22px; }
.glass-card--glow { position:relative; overflow:hidden; }
.glass-card--glow::before { content:""; position:absolute; inset:-46% 58% 74% -14%; background:var(--glow-glass); pointer-events:none; }
.panel { background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-panel); overflow:hidden; }
.panel__head { display:flex; align-items:center; gap:10px; padding:13px 22px; background:var(--color-band); border-bottom:1px solid var(--color-line-glass); font:600 14px var(--font-family-base); color:var(--color-text-primary); }
.panel__foot { display:flex; align-items:center; gap:12px; padding:13px 22px; background:var(--color-band); border-top:1px solid var(--color-line-glass); }
.tile { background:var(--color-surface); border:1px solid var(--color-border-tile); border-radius:var(--radius-panel); padding:15px 18px 16px; box-sizing:border-box; }
.dark-card { position:relative; overflow:hidden; background:var(--gradient-dark-card); border-radius:var(--radius-card); padding:18px 20px; box-shadow:var(--shadow-dark-card); color:#fff; }
.dark-card::before { content:""; position:absolute; inset:-60% -20% 45% 40%; background:var(--glow-dark); pointer-events:none; }
.dark-card > * { position:relative; }
/* Allowed dark cards: Staat van je kennis, Website-bron (Kennisbank), Berichten deze maand (SA1), assistant icon. */

/* ===== Buttons (two sizes only: 38/14 and 30/12.5) ===== */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; height:var(--button-height); padding:0 19px; box-sizing:border-box; border-radius:var(--radius-control); font:600 var(--button-font-size) var(--font-family-base); white-space:nowrap; cursor:pointer; border:0; }
.btn__icon { width:var(--icon-size-button); height:var(--icon-size-button); stroke-width:1.9; flex:none; }
.btn--primary { background:var(--color-primary); color:#fff; padding:0 21px; }
.btn--secondary { background:#fff; border:1px solid var(--color-border-button); color:var(--color-text-primary); }
.btn--utility { background:var(--color-glass-button); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); border:1px solid rgba(255,255,255,.9); box-shadow:var(--shadow-glass-button); color:var(--color-text-primary); padding:0 16px; }
.btn--soft { background:var(--color-fill-button-soft); color:var(--color-primary); padding:0 16px; }
.btn--danger { background:var(--color-danger-soft); color:var(--color-danger); }
.btn--positive { background:var(--color-positive); color:#fff; }
.btn--block { width:100%; }
.btn--sm { height:var(--button-height-sm); padding:0 13px; font-size:var(--button-font-size-sm); gap:7px; }
.btn--sm.btn--secondary { box-shadow:var(--shadow-button-white); }  /* "knop op grijze band" */
.btn--icon { width:var(--button-height); padding:0; }
.btn--icon.btn--sm { width:var(--button-height-sm); }
.btn--close { width:36px; height:36px; padding:0; background:var(--color-text-primary); color:#fff; } /* modal close, white X 16px stroke 2.4 */
.text-link { font:600 var(--button-font-size) var(--font-family-base); color:var(--color-primary); cursor:pointer; }
.text-link:hover { color:var(--color-primary-hover-link); }
/* Hover/active/disabled states of buttons are NOT designed — keep existing app behavior. */

/* ===== Segmented control / tabs ===== */
.segmented { display:flex; align-items:center; gap:3px; width:fit-content; padding:3px; border-radius:var(--radius-control); background:var(--color-fill-segmented); }
.segmented__item { display:inline-flex; align-items:center; gap:6px; height:30px; padding:0 14px; box-sizing:border-box; border-radius:var(--radius-control); font:600 13.5px var(--font-family-base); color:var(--color-text-secondary); cursor:pointer; white-space:nowrap; }
.segmented__item--active { background:#fff; box-shadow:var(--shadow-segmented-active); color:var(--color-text-primary); }
.segmented__count { font:600 12.5px var(--font-family-base); color:var(--color-text-meta); }

/* ===== Dropdown, chip, search ===== */
.dropdown { display:inline-flex; align-items:center; gap:6px; height:30px; padding:0 11px; box-sizing:border-box; border-radius:var(--radius-control); background:rgba(255,255,255,.85); border:1px solid var(--color-border-input); font:500 13.5px var(--font-family-base); color:var(--color-text-row); cursor:pointer; white-space:nowrap; }
.dropdown--on-panel { height:32px; padding:0 12px; background:#fff; border-color:var(--color-border); }
.dropdown__chevron { width:12px; height:12px; color:#9AA1AE; stroke-width:2.2; }
.chip { display:inline-flex; align-items:center; height:32px; padding:0 13px; box-sizing:border-box; border-radius:var(--radius-control); background:rgba(255,255,255,.85); border:1px solid rgba(31,48,90,.1); font:500 13.5px var(--font-family-base); color:var(--color-text-row); white-space:nowrap; }
.chip--add { border:1px dashed rgba(31,48,90,.2); background:transparent; color:var(--color-text-secondary); font-weight:600; cursor:pointer; }
.search { display:inline-flex; align-items:center; gap:9px; height:30px; width:220px; padding:0 14px; box-sizing:border-box; border-radius:var(--radius-control); background:rgba(255,255,255,.85); border:1px solid rgba(31,48,90,.1); font-size:13.5px; color:var(--color-text-meta); }

/* ===== Tag / badge ===== */
.tag { display:inline-flex; align-items:center; height:var(--tag-height); padding:0 8px; border-radius:var(--radius-tag); font:600 12.5px var(--font-family-base); white-space:nowrap; }
.tag--blue { background:var(--color-primary-tag-bg); color:var(--color-primary); }
.tag--positive { background:var(--color-positive-bg); color:var(--color-positive); }
.tag--warning { background:var(--color-warning-bg); color:var(--color-warning); }
.tag--danger { background:var(--color-danger-bg); color:var(--color-danger); }
.tag--neutral { background:var(--color-neutral-bg); color:var(--color-neutral); }
.tag--concept { background:var(--color-concept-bg); color:var(--color-concept); }
.tag--kennis { background:var(--tag-kennis-bg); color:var(--tag-kennis-fg); }
.tag--website { background:var(--tag-website-bg); color:var(--tag-website-fg); }
.tag--instructie { background:var(--tag-instructie-bg); color:var(--tag-instructie-fg); }
.tag--video { background:var(--tag-video-bg); color:var(--tag-video-fg); }
.tag--muted { opacity:.75; } /* prullenbak */
.status-dot { display:inline-flex; align-items:center; gap:6px; font:600 13px var(--font-family-base); }
.status-dot::before { content:""; width:6px; height:6px; border-radius:50%; background:currentColor; }

/* ===== Icon chip ===== */
.icon-chip { width:var(--icon-chip-size); height:var(--icon-chip-size); flex:none; border-radius:var(--radius-control); background:var(--color-primary-soft); display:flex; align-items:center; justify-content:center; color:var(--color-primary); }
.icon-chip svg { width:var(--icon-size-card); height:var(--icon-size-card); stroke:currentColor; stroke-width:1.9; }
.icon-chip--sm { width:var(--icon-chip-size-sm); height:var(--icon-chip-size-sm); border-radius:7px; }
.icon-chip--sm svg { width:13px; height:13px; }
.icon-chip--email { background:var(--channel-email-bg); color:var(--channel-email-fg); }
.icon-chip--whatsapp { background:var(--channel-whatsapp-bg); color:var(--channel-whatsapp-fg); }
.icon-chip--instagram { background:var(--channel-instagram-bg); color:var(--channel-instagram-fg); }
.icon-chip--facebook { background:var(--channel-facebook-bg); color:var(--channel-facebook-fg); }

/* ===== Form controls ===== */
.field { display:flex; align-items:center; gap:16px; padding:13px 0; }
.field + .field { border-top:1px solid var(--color-line-faint); }
.field__label { width:var(--settings-label-width); flex:none; font-size:13.5px; font-weight:600; color:var(--color-text-secondary); }
.field__label--stacked { display:block; width:auto; font:600 13.5px var(--font-family-base); color:var(--color-text-row); margin-bottom:7px; }
.field__input { flex:1; min-width:0; display:flex; align-items:center; gap:10px; height:var(--input-height); padding:0 14px; box-sizing:border-box; border-radius:var(--radius-panel); background:#fff; border:1px solid var(--color-border-input); font-size:14.5px; font-weight:500; color:var(--color-text-primary); }
.field__input--login { height:var(--input-height-login); border-radius:var(--radius-control); border-color:var(--color-border); font-size:15px; }
.field__input:focus, .field__input--focus { border-color:var(--color-primary); box-shadow:var(--shadow-focus); outline:0; }
.field__input::placeholder { color:var(--color-text-faint); }
.field__help { font-size:12.5px; color:var(--color-text-meta); line-height:1.5; margin:6px 0 0 206px; }
.toggle { width:var(--toggle-width); height:var(--toggle-height); flex:none; position:relative; box-sizing:border-box; border-radius:var(--radius-toggle); background:var(--color-toggle-off); cursor:pointer; }
.toggle::after { content:""; position:absolute; top:3px; left:3px; width:var(--toggle-knob); height:var(--toggle-knob); border-radius:var(--radius-toggle-knob); background:#fff; }
.toggle--on { background:var(--color-primary); }
.toggle--on::after { left:auto; right:3px; }
.checkbox { width:var(--checkbox-size); height:var(--checkbox-size); flex:none; box-sizing:border-box; border-radius:var(--radius-tag); border:1.5px solid var(--color-border-checkbox); background:#fff; display:inline-flex; align-items:center; justify-content:center; }
.checkbox--checked { border:0; background:var(--color-primary); } /* white check: viewBox 24, 12px, stroke-width 3, polyline "5 12.5 10 17 19 7" */
.radio { width:var(--radio-size); height:var(--radio-size); flex:none; box-sizing:border-box; border-radius:50%; border:1.5px solid rgba(31,48,90,.22); }
.radio--checked { border:5px solid var(--color-primary); }
.option-row { display:flex; align-items:center; gap:9px; font-size:14.5px; font-weight:500; color:var(--color-text-primary); cursor:pointer; }
.setting-row { display:flex; align-items:center; gap:16px; padding:13px 0; }
.setting-row + .setting-row { border-top:1px solid var(--color-line-faint); }
.setting-row__title { font-size:14.5px; font-weight:600; color:var(--color-text-primary); }
.setting-row__desc { font-size:13px; font-weight:500; color:var(--color-text-secondary); margin-top:3px; line-height:1.5; }

/* ===== Rich-text format bar ===== */
.format-editor { background:#fff; border:1px solid var(--color-border-input); border-radius:var(--radius-control); overflow:hidden; }
.format-bar { display:flex; align-items:center; flex-wrap:wrap; gap:2px; min-height:var(--format-bar-min-height); padding:4px 10px; box-sizing:border-box; border-bottom:1px solid var(--color-line-light); background:var(--color-band); }
.format-bar__btn { width:var(--format-button-width); height:var(--format-button-height); border-radius:var(--radius-toggle); display:flex; align-items:center; justify-content:center; cursor:pointer; color:var(--color-text-row); }
.format-bar__btn svg { width:15px; height:15px; stroke:currentColor; stroke-width:1.9; }
.format-bar__btn--glyph { font:600 14px Georgia, serif; }              /* B, I (italic), U (underline), S (line-through) */
.format-bar__btn--size-1 { font:600 12.5px var(--font-family-base); } /* "A" Groot */
.format-bar__btn--size-2 { font:600 14.5px var(--font-family-base); } /* "A" Groter */
.format-bar__btn--size-3 { font:600 17px var(--font-family-base); }   /* "A" Grootst */
.format-bar__swatch { width:14px; height:3px; border-radius:1px; background:var(--color-primary); }
.format-bar__sep { width:1px; height:16px; background:var(--color-border-input); margin:0 5px; }
.format-bar__html { margin-left:auto; display:inline-flex; align-items:center; gap:6px; height:26px; padding:0 9px; border-radius:var(--radius-toggle); font:600 13px var(--font-family-base); color:var(--color-text-row); cursor:pointer; }
.format-editor__body { padding:13px 15px; font-size:14.5px; line-height:1.65; color:var(--color-text-primary); }

/* ===== Tables / list rows ===== */
.table { display:flex; flex-direction:column; }
.table__head { display:grid; column-gap:16px; align-items:center; height:30px; padding:0 22px; font:600 12.5px var(--font-family-base); color:var(--color-text-meta); } /* never uppercase */
.table__row { display:grid; column-gap:16px; align-items:center; min-height:56px; padding:0 22px; border-top:1px solid var(--color-line-faint); cursor:pointer; }
.table__row--selected { background:var(--color-row-selected); }
.table__row--variant { min-height:36px; background:rgba(31,48,90,.022); } /* product variants */
.table__group { display:flex; align-items:center; gap:9px; height:30px; padding:0 22px; background:rgba(31,48,90,.035); border-top:1px solid var(--color-line-faint); font:600 12.5px var(--font-family-base); color:var(--color-text-row); }
.list-row { display:flex; align-items:center; gap:14px; padding:12px 20px; border-bottom:1px solid var(--color-row-line); cursor:pointer; }
.list-row:last-child { border-bottom:0; } /* first item never has a line above */
.list-row__title { font-size:14.5px; font-weight:500; color:var(--color-text-primary); }
.list-row__meta { font-size:13.5px; color:var(--color-text-meta); }
.pagination__btn { width:32px; height:32px; box-sizing:border-box; border-radius:var(--radius-control); background:#fff; border:1px solid var(--color-border); display:flex; align-items:center; justify-content:center; font:500 13.5px var(--font-family-base); cursor:pointer; }
.pagination__btn--active { background:var(--color-primary); border-color:var(--color-primary); color:#fff; font-weight:600; }

/* ===== Notice ===== */
.notice { display:flex; align-items:flex-start; gap:10px; padding:12px 14px; border-radius:var(--radius-panel); font-size:13.5px; line-height:1.55; font-weight:500; color:var(--color-text-row); }
.notice--info { background:var(--color-primary-soft-2); }
.notice--danger { background:var(--color-danger-bg); }

/* ===== Modal ===== */
.modal { position:fixed; inset:0; display:flex; align-items:center; justify-content:center; padding:36px; box-sizing:border-box; }
/* u593 (Denis, 28 Oct: a dark gradient line straight across the screen behind an open modal, gone after a click, back
   for a moment when the mouse moved): the overlay blurred whatever was behind it LIVE (backdrop-filter) and the dialog
   did it again — the browser re-reads the screen behind it on every repaint, and that leaves a seam. Denis wants the
   blur ("not just dimming"), so the page itself is blurred instead: while a modal is open, everything NEXT TO the modal
   (the sidebar, the header, the panels — never the modal or the parts that hold it) gets an ordinary blur. Nothing reads
   the screen behind the overlay any more; the overlay only dims. A modal that is in the page but hidden ([hidden],
   display:none) blurs nothing. */
.modal__overlay { position:absolute; inset:0; background:var(--color-overlay); }
:has(.modal:not([hidden]):not([style*="none"]):not(.is-closing)) > :not(.modal):not(:has(.modal:not([hidden]):not([style*="none"]):not(.is-closing))):not(script):not(style) { filter:blur(3px); }
/* u593b (Denis: "the opening of a modal is not smooth … can we make it all more smooth, add a transition"): the blur
   comes and goes softly; the backdrop fades in, the dialog fades and rises in; closing fades both out (dilot.js keeps a
   closing modal for that moment — .is-closing — and the blur already starts to go). A modal that was already on screen
   (the loading one → its content, or the same modal with other content) is not faded in a second time.
   u604 (Denis: "a TINY bit faster"): 0.16 s backdrop and blur, 0.2 s dialog, 0.14 s closing. */
body > *, .app-shell > *, .app-shell__main > *, [data-live] > * { transition:filter .16s ease; }
.modal__overlay { animation:modal-fade-in .16s ease both; }
.modal__dialog { animation:modal-rise-in .2s cubic-bezier(.2,.8,.2,1) both; }
.modal--continued .modal__overlay, .modal--same .modal__overlay, .modal--same .modal__dialog { animation:none; }
.modal.is-closing { pointer-events:none; }
.modal.is-closing .modal__overlay { animation:modal-fade-out .14s ease both; }
.modal.is-closing .modal__dialog { animation:modal-sink-out .14s ease both; }
@keyframes modal-fade-in { from { opacity:0; } }
@keyframes modal-fade-out { to { opacity:0; } }
@keyframes modal-rise-in { from { opacity:0; transform:translateY(10px) scale(.985); } }
@keyframes modal-sink-out { to { opacity:0; transform:translateY(6px) scale(.99); } }
@media (prefers-reduced-motion: reduce) {
  .modal__overlay, .modal__dialog, .modal.is-closing .modal__overlay, .modal.is-closing .modal__dialog { animation:none; }
  body > *, .app-shell > *, .app-shell__main > *, [data-live] > * { transition:none; }
}
/* u514 (Denis: "width etc of modals should be ONE across entire Dilot"): EVERY dialog has this one size — the same
   width on a desktop, the same width and height on a phone (the block "ONE dialog size on a phone" further down). A new
   dialog gets it by using .modal + .modal__dialog; it never sets a width, max-width or max-height of its own
   (tests/Feature/Ui/OneDialogSizeTest fails when one does). */
.modal__dialog { position:relative; width:var(--modal-width); max-width:100%; max-height:calc(100vh - 72px); display:flex; flex-direction:column; background:#fff; border:1px solid rgba(255,255,255,.9); box-shadow:var(--shadow-modal); border-radius:var(--radius-card); overflow:hidden; }
.modal__dialog--lg { background:#fff; }
.modal__dialog > .modal__head, .modal__dialog > .modal__foot { flex:none; }
.modal__dialog > .modal__body { flex:1 1 auto; min-height:0; overflow-y:auto; }
.modal__head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:20px 24px 18px; background:var(--color-band); border-bottom:1px solid rgba(31,48,90,.07); }
.modal__title { font-size:var(--font-size-modal-title); font-weight:600; letter-spacing:-.025em; }
.modal__body { padding:18px 24px; }
.modal__foot { display:flex; align-items:center; flex-wrap:wrap; gap:10px; padding:14px 24px; border-top:1px solid rgba(31,48,90,.07); }

/* ===== Assistant (training bot + statistics bot) ===== */
.assistant { flex:1; min-width:0; display:flex; flex-direction:column; } /* NO overflow:hidden here (would clip the icon shadow) */
.assistant__head { flex:none; display:flex; align-items:center; gap:13px; padding-bottom:18px; margin-bottom:20px; border-bottom:1px solid var(--color-line-glass); }
.assistant__icon { width:var(--assistant-icon-size); height:var(--assistant-icon-size); flex:none; border-radius:var(--radius-panel); background:var(--gradient-dark-card); box-shadow:var(--shadow-assistant-icon); display:flex; align-items:center; justify-content:center; }
.assistant__icon svg { width:19px; height:19px; color:var(--color-icon-on-dark); stroke-width:1.9; }
.assistant__title { font-size:var(--font-size-section-title); font-weight:600; letter-spacing:-.02em; }
.assistant__subtitle { font-size:14.5px; color:var(--color-text-secondary); margin-top:3px; }
.assistant__messages { flex:1; min-height:0; display:flex; flex-direction:column; gap:18px; overflow:hidden; }
.chat-message--user { align-self:flex-end; max-width:70%; background:var(--color-primary); color:#fff; border-radius:10px 10px 2px 10px; padding:11px 15px; font-size:14.5px; line-height:1.6; font-weight:500; }
.chat-message--bot { display:flex; gap:12px; align-items:flex-start; }
.chat-message__marker { width:14px; height:14px; flex:none; border-radius:4px; background:var(--color-primary); margin-top:4px; }
.chat-message__text { font-size:15px; line-height:1.65; color:var(--color-text-primary); max-width:720px; }
.assistant-empty { display:flex; flex-direction:column; align-items:center; text-align:center; }
.assistant-empty__icon { width:var(--assistant-icon-size-empty); height:var(--assistant-icon-size-empty); border-radius:var(--radius-panel); background:var(--gradient-dark-card); box-shadow:var(--shadow-assistant-icon); }
.assistant-empty__title { font-size:var(--font-size-empty-title); font-weight:600; letter-spacing:-.028em; margin-top:16px; line-height:1.2; }
.assistant-empty__text { font-size:14.5px; line-height:1.65; color:var(--color-text-secondary); margin-top:9px; max-width:520px; }
.start-card { flex:1; min-width:0; background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-panel); padding:13px 16px; text-align:left; cursor:pointer; box-sizing:border-box; }
.start-card--active { background:var(--color-primary-soft-2); border-color:rgba(36,85,214,.42); }
.start-card__title { font:600 15px var(--font-family-base); line-height:1.3; } .start-card__sub { font-size:13.5px; color:var(--color-text-meta); margin-top:3px; }
.assistant-input { background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-panel); box-shadow:var(--shadow-button-white); }
.assistant-input--inline { display:flex; align-items:center; gap:12px; padding:12px 12px 12px 16px; } /* statistics bot */
.assistant-input--stacked { display:flex; flex-direction:column; gap:11px; padding:14px 16px 12px; } /* training bot */
.assistant-input__placeholder { font-size:15px; color:var(--color-text-faint); }

/* Chart inside an answer */
.answer-chart { margin-top:14px; } /* .panel + head with .tag */
.answer-chart__plot { display:flex; align-items:flex-end; gap:10px; height:128px; border-bottom:1px solid rgba(31,48,90,.12); padding:16px 18px 0; }
.answer-chart__col { flex:1; min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:8px; height:100%; }
.answer-chart__value { font:600 14px var(--font-family-base); font-variant-numeric:tabular-nums; }
.answer-chart__value--current { color:var(--color-primary); }
.answer-chart__bar { width:56%; border-radius:4px 4px 0 0; background:var(--color-bar-muted); }
.answer-chart__bar--current { background:var(--gradient-bar-vertical-active); }
.answer-chart__label { flex:1; text-align:center; font-size:13.5px; color:var(--color-text-meta); }
.answer-chart__label--current { font-weight:600; color:var(--color-text-primary); }

/* ===== Statistics ===== */
.insights { width:var(--stats-insights-width); flex:none; background:var(--color-glass);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--color-border-glass);box-shadow:var(--shadow-glass);border-radius:var(--radius-card);box-sizing:border-box; padding:20px 22px 6px; display:flex; flex-direction:column; }
.insights__head { padding-bottom:16px; border-bottom:1px solid var(--color-line-glass); }
.insights__title { font:600 16px var(--font-family-base); } .insights__sub { font-size:13.5px; color:var(--color-text-meta); margin-top:4px; }
.insights__item { display:flex; flex-direction:column; gap:6px; padding:16px 0; cursor:pointer; }
.insights__item + .insights__item { border-top:1px solid var(--color-line-glass); }
.insights__value { font-size:var(--font-size-number-md); font-weight:600; letter-spacing:-.03em; line-height:1; font-variant-numeric:tabular-nums; }
.insights__value--warning { color:var(--color-warning); } .insights__value--positive { color:var(--color-positive); }
.insights__item-title { font:600 15px var(--font-family-base); margin-top:4px; } .insights__item-sub { font-size:13.5px; color:var(--color-text-meta); }
.stats-panel { background:var(--color-glass);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--color-border-glass);box-shadow:var(--shadow-glass);border-radius:var(--radius-card);box-sizing:border-box; padding:0 24px; }
.stats-panel__row { display:flex; align-items:flex-start; gap:28px; padding:22px 0; border-bottom:1px solid var(--color-line-glass); }
.stats-panel__row:last-child { border-bottom:0; }
.stats-panel__label { width:var(--stats-row-label-width); flex:none; display:flex; align-items:flex-start; gap:11px; }
.stats-panel__grid { flex:1; min-width:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.stat-tile { display:flex; flex-direction:column; gap:12px; } /* + .tile */
.stat-tile__label { font:500 14px var(--font-family-base); color:var(--color-text-secondary); white-space:nowrap; }
.stat-tile__value { font-size:var(--font-size-number-lg); font-weight:600; letter-spacing:-.035em; line-height:1; font-variant-numeric:tabular-nums; }
.channel-bar { display:flex; gap:3px; } .channel-bar__seg { height:8px; border-radius:2px; }
.channel-legend { display:flex; gap:22px; margin-top:10px; font-size:13.5px; color:var(--color-text-secondary); }
.topic-bar { display:flex; align-items:center; gap:16px; padding:7px 0; }
.topic-bar__label { width:210px; flex:none; font-size:14.5px; font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.topic-bar__fill { height:26px; border-radius:var(--radius-bar); display:flex; align-items:center; justify-content:flex-end; padding-right:9px; box-sizing:border-box; font:600 13px var(--font-family-base); font-variant-numeric:tabular-nums; }
.topic-bar__fill--1 { background:var(--gradient-bar-1); color:#fff; } .topic-bar__fill--2 { background:var(--gradient-bar-2); color:#fff; }
.topic-bar__fill--3 { background:var(--gradient-bar-3); color:var(--color-bar-text-dark); } .topic-bar__fill--4 { background:var(--gradient-bar-4); color:var(--color-bar-text-dark); } .topic-bar__fill--5 { background:var(--gradient-bar-5); color:var(--color-bar-text-dark); }

/* ===== Knowledge ===== */
.source-block { padding:13px 0; border-top:1px solid rgba(31,48,90,.07); }
.source-block__name { font-size:18.5px; font-weight:600; letter-spacing:-.02em; } .source-block__count { font-size:20px; font-weight:600; }
.video-card { background:var(--color-glass);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--color-border-glass);box-shadow:var(--shadow-glass);border-radius:var(--radius-card);box-sizing:border-box; overflow:hidden; display:flex; flex-direction:column; }
.video-card__thumb { position:relative; height:150px; background:#20252E; } /* placeholder for real thumbnail */
.video-card__duration { position:absolute; right:10px; bottom:10px; background:rgba(0,0,0,.6); color:#fff; font:600 12.5px var(--font-family-base); padding:3px 7px; border-radius:var(--radius-control); }

/* ===== Login ===== */
.login-card { width:var(--login-card-width); flex:none; background:var(--color-glass);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--color-border-glass);box-shadow:var(--shadow-glass);border-radius:var(--radius-card);box-sizing:border-box; padding:34px 36px 30px; }
.login-card__title { font-size:var(--font-size-login-title); font-weight:600; letter-spacing:-.03em; line-height:1.15; }
.login-card__sub { font-size:14.5px; color:var(--color-text-secondary); margin-top:6px; }

/* u221: the sidebar items are real links/buttons */
a.sidebar__item, a.sidebar__subitem { text-decoration:none; }
.sidebar__item:not(.sidebar__item--active):not(.sidebar__item--soon):hover { background:rgba(255,255,255,.08); }
.sidebar__subitem:not(.sidebar__subitem--active):hover { background:rgba(255,255,255,.08); }
.sidebar__item--active .sidebar__item-label { color:var(--color-primary-active-text); }
.sidebar__subitem--active .sidebar__subitem-count { color:var(--color-primary-active-text); }
.btn { text-decoration:none; }
.btn:disabled, .btn[aria-disabled="true"] { opacity:.55; cursor:default; }
.btn--primary:not(:disabled):hover { background:#1E4AC2; }
.btn--secondary:not(:disabled):hover { border-color:#B8C1D1; }
input.field__input, textarea.field__input, select.field__input { font-family:inherit; outline:0; width:100%; }

/* ── Shell additions (u221) — behaviour the static design implies but does not draw ──────────────────────── */
/* The island scrolls its nav on short screens; brand and user row stay put. */
.sidebar__nav { position:relative; flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; display:flex; flex-direction:column; scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.28) transparent; margin-right:-6px; padding-right:6px; }
.sidebar__nav .sidebar__footer { margin-top:auto; }
.sidebar__brand-mark { min-width:0; flex:1; display:flex; align-items:center; }
.sidebar__brand-logo { display:block; max-height:24px; width:auto; max-width:100px; object-fit:contain; } /* u243 (Denis): 24 × 100 max */ /* the CLIENT's uploaded logo, as uploaded */
.sidebar__collapse { background:none; border:0; padding:0; }
.sidebar__collapse:hover { background:rgba(255,255,255,.1); }
.sidebar__collapse svg { width:15px; height:15px; }
/* A page that is not built yet: visible and disabled, never a link to nowhere. */
.sidebar__item--soon { cursor:default; opacity:.5; }
.sidebar__soon { font:600 12px var(--font-family-base); color:rgba(255,255,255,.7); }
/* User row → small menu (sign out) */
.sidebar__user-text { min-width:0; flex:1; }
.sidebar__user-name, .sidebar__user-role { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* u223: the design's chevron is the sign-out button (Denis). */
.sidebar__logout { flex:none; width:30px; height:30px; display:flex; align-items:center; justify-content:center; border-radius:var(--radius-toggle); color:rgba(255,255,255,.7); background:none; border:0; cursor:pointer; transition:background .15s, color .15s; }
.sidebar__logout:hover { background:rgba(255,255,255,.12); color:#fff; }
.sidebar__logout-form { margin:0; display:flex; }
.sidebar__brand-mark:empty { pointer-events:none; }
.sidebar__foot { position:relative; flex:none; }

/* Collapsed sidebar (the design's "Zijbalk inklappen" button): html.v7-collapsed. Icons only; remembered per browser. */
.v7-collapsed .app-shell__sidebar { width:94px; }
.v7-collapsed .sidebar { width:94px; }
.v7-collapsed .sidebar__brand { justify-content:center; padding:0; }
.v7-collapsed .sidebar__brand-mark { display:none; }
.v7-collapsed .sidebar__item { justify-content:center; padding:0; }
.v7-collapsed .sidebar__item-label,
.v7-collapsed .sidebar__badge,
.v7-collapsed .sidebar__soon,
.v7-collapsed .sidebar__subnav,
.v7-collapsed .sidebar__user-text { display:none; }
.v7-collapsed .sidebar__group-label { padding:14px 6px 6px; font-size:0; letter-spacing:0; }
.v7-collapsed .sidebar__item .sidebar__dot { position:absolute; margin:-14px 0 0 16px; }
.v7-collapsed .sidebar__item { position:relative; }
.v7-collapsed .sidebar__user { flex-direction:column; justify-content:center; gap:8px; padding:12px 0 2px; }

/* Notices the shell itself shows (impersonation, flash). Same anatomy as .notice. */
.shell-notice { display:flex; align-items:center; gap:12px; margin:0 6px 16px; }
.shell-notice__text { flex:1; min-width:0; }
.notice--positive { background:var(--color-positive-bg); }

/* Empty region used by pages that have nothing yet. */
.page-empty { padding:22px; font-size:var(--font-size-body); color:var(--color-text-secondary); }

/* ── Shared page parts (u222). Sizes = design + 1.5px (Denis, u222). ─────────────────────────────────────── */
:root {
  /* Values the design uses on 04–06 that were not in the handoff token list. */
  --color-chevron: #C4CAD4;
  --color-bubble-bot: #F4F6FB;
  --color-gap-bg: #FFF8E6;
  --color-gap-border: rgba(224,163,58,.4);
  --color-gap-icon-bg: rgba(224,163,58,.2);
  --color-delta-on-dark-bg: rgba(95,180,141,.22);
  --color-delta-on-dark: #8FE3BC;
  --color-delta-down-on-dark-bg: rgba(236,120,104,.22);
  --color-delta-down-on-dark: #FFB3A7;
}
/* A live region (dilot.js) dims its lists while it fetches — never the region itself (stacking context). */
[data-live].is-loading .panel, [data-live].is-loading .kpi-strip, [data-live].is-loading .stat-cards { opacity:.55; transition:opacity .15s; }

/* KPI strip (04): white panel, dark main number on the left, plain stats, range dropdown right. */
.kpi-strip { display:flex; align-items:stretch; gap:18px; padding:12px 16px; background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-panel); }
.kpi-strip__main { position:relative; overflow:hidden; flex:none; min-width:220px; border-radius:var(--radius-control); padding:13px 16px; background:var(--gradient-dark-card); box-shadow:var(--shadow-dark-card); }
.kpi-strip__main::before { content:""; position:absolute; inset:-110% 10% 44% 52%; background:radial-gradient(closest-side,rgba(90,130,255,.4),rgba(90,130,255,0)); pointer-events:none; }
.kpi-strip__main > * { position:relative; }
.kpi-strip__label { font-size:13.5px; color:rgba(255,255,255,.66); }
.kpi-strip__row { display:flex; align-items:baseline; gap:9px; margin-top:8px; }
.kpi-strip__value { font-size:35px; font-weight:600; letter-spacing:-.04em; color:#fff; line-height:1; font-variant-numeric:tabular-nums; }
.kpi-strip__delta { display:inline-flex; align-items:center; height:var(--tag-height); padding:0 8px; border-radius:var(--radius-tag); background:var(--color-delta-on-dark-bg); color:var(--color-delta-on-dark); font:600 12.5px var(--font-family-base); white-space:nowrap; }
.kpi-strip__delta--down { background:var(--color-delta-down-on-dark-bg); color:var(--color-delta-down-on-dark); }
.kpi-strip__stats { flex:1; min-width:0; display:flex; align-items:center; gap:22px; padding-left:4px; }
.kpi-strip__stats > form { flex:none; margin-left:auto; }
.kpi-strip__stat { display:flex; flex-direction:column; gap:7px; min-width:0; }
.kpi-strip__stat-label { font:500 14px var(--font-family-base); color:var(--color-text-secondary); white-space:nowrap; display:inline-flex; align-items:center; gap:6px; }
.kpi-strip__stat-label svg { color:var(--color-text-faint); }
.kpi-strip__stat--inline { flex-direction:row; align-items:baseline; gap:10px; }
.kpi-strip--plain { padding:14px 22px; }
.kpi-strip--plain .kpi-strip__stats { padding-left:0; }
.kpi-strip__stat-value { font-size:27px; font-weight:600; letter-spacing:-.03em; color:var(--color-text-primary); line-height:1; font-variant-numeric:tabular-nums; }
.kpi-strip__sep { width:1px; height:34px; flex:none; background:var(--color-line-glass); }
.kpi-strip__spacer { flex:1; }

/* Stat cards (06): glass cards side by side, content height. */
.stat-cards { display:flex; gap:18px; align-items:flex-start; }
.stat-card { flex:1; min-width:0; padding:16px 20px; }
.stat-card__label { font:500 14px var(--font-family-base); color:var(--color-text-secondary); }
.stat-card__row { display:flex; align-items:baseline; gap:9px; margin-top:9px; }
.stat-card__value { font-size:29px; font-weight:600; letter-spacing:-.035em; color:var(--color-text-primary); line-height:1; font-variant-numeric:tabular-nums; }
.stat-card__meta { font-size:13.5px; line-height:1.3; color:var(--color-text-meta); }

/* Filter band on a panel head (04, 06). */
.panel__head--filters { padding:13px 20px; flex-wrap:wrap; font-weight:500; }
.panel__title { flex:none; font:600 14px var(--font-family-base); color:var(--color-text-primary); }
.panel__spacer { flex:1; }
.panel__count { font-size:13.5px; color:var(--color-text-meta); white-space:nowrap; }
.panel__foot--split { justify-content:space-between; flex-wrap:wrap; padding:13px 20px; }
.panel__foot-text { font-size:13.5px; color:var(--color-text-meta); }
.panel__foot-text b { color:var(--color-text-primary); font-weight:600; }
.panel__foot-text .text-link { font-size:13.5px; }
.panel .search { background:#fff; border-color:var(--color-border); height:32px; }
.search input { flex:1; min-width:0; border:0; outline:0; background:transparent; font:500 13.5px var(--font-family-base); color:var(--color-text-primary); padding:0; }
.search input::placeholder { color:var(--color-text-faint); font-weight:400; }
.search svg { flex:none; color:var(--color-text-meta); }

/* Segmented tabs on a grey band (06): white active with a tile border. */
.segmented--band .segmented__item { height:28px; padding:0 12px; border-radius:var(--radius-toggle); font-weight:500; text-decoration:none; }
.segmented--band .segmented__item--active { background:#fff; border:1px solid var(--color-border-tile); box-shadow:none; font-weight:600; }

/* Dropdown: the replacement dilot.js builds for <select data-dd> (the OS list cannot be styled). */
.dd { position:relative; display:inline-flex; }
.dd-native { position:absolute; opacity:0; pointer-events:none; width:1px; height:1px; }
.dd-btn { display:inline-flex; align-items:center; gap:6px; height:32px; padding:0 12px; border-radius:var(--radius-control); background:#fff; border:1px solid var(--color-border); font:500 13.5px var(--font-family-base); color:var(--color-text-row); cursor:pointer; white-space:nowrap; }
.dd-caret { width:12px; height:12px; flex:none; background:no-repeat center/12px url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239AA1AE' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>"); }
.dd-menu { display:none; position:absolute; top:calc(100% + 6px); left:0; z-index:30; min-width:100%; max-height:320px; overflow:auto; padding:4px; background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-control); box-shadow:var(--shadow-glass); }
.dd.is-open .dd-menu { display:block; }
.dd-item { display:block; width:100%; text-align:left; padding:8px 10px; border-radius:var(--radius-toggle); font:500 13.5px var(--font-family-base); color:var(--color-text-row); white-space:nowrap; cursor:pointer; background:none; border:0; }
.dd-item:hover { background:var(--color-band); }
.dd-item.on { color:var(--color-primary); font-weight:600; }
.dd--end .dd-menu { left:auto; right:0; }

/* Checkbox with a label (04 "Spam tonen", login "Ingelogd blijven"). */
.check { display:inline-flex; align-items:center; gap:8px; font-size:13.5px; font-weight:500; color:var(--color-text-row); cursor:pointer; white-space:nowrap; }
.check input { appearance:none; -webkit-appearance:none; width:17px; height:17px; margin:0; flex:none; border-radius:var(--radius-tag); border:1.5px solid var(--color-border-checkbox); background:#fff; cursor:pointer; }
.check input:checked { border:0; background:var(--color-primary) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='5 12.5 10 17 19 7'/></svg>") center/11px no-repeat; }
.check__count { color:var(--color-text-meta); }

/* Tables (04, 06). Lines only BETWEEN rows; the head has its own. */
.table__head { height:34px; padding:0 20px; font:600 13px var(--font-family-base); color:var(--color-text-label); border-bottom:1px solid var(--color-row-line); }
.table__row { min-height:62px; padding:0 20px; border-top:0; border-bottom:1px solid var(--color-row-line); text-decoration:none; color:inherit; }
.table__row:hover, .table__row:focus-visible { background:var(--color-row-selected); }
.table__row:last-child { border-bottom:0; }
.table__row--compact { min-height:58px; }
.table__group { padding:0 20px; border-top:0; border-bottom:1px solid var(--color-row-line); font-size:12.5px; }
.table--conversations .table__head, .table--conversations .table__row { grid-template-columns:128px minmax(0,1fr) 196px 40px; }
.table--escalations .table__head, .table--escalations .table__row { grid-template-columns:128px minmax(0,1fr) 110px; }
.cell-when { min-width:0; }
.cell-when__date { display:block; font-size:14.5px; font-weight:500; color:var(--color-text-primary); white-space:nowrap; }
.cell-when__ago { display:block; font-size:13.5px; color:var(--color-text-meta); margin-top:2px; white-space:nowrap; }
.cell-text { min-width:0; }
.cell-text__main { display:block; font-size:14.5px; color:var(--color-text-row); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cell-text__sub { display:block; font-size:13.5px; color:var(--color-text-meta); margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cell-text__flag { color:var(--color-warning); font-weight:600; }
.cell-text__tags { display:flex; gap:6px; margin-top:6px; flex-wrap:wrap; }
.cell-chevron { justify-self:end; color:var(--color-chevron); display:flex; }
.cell-open { justify-self:end; display:inline-flex; align-items:center; gap:6px; font:500 14px var(--font-family-base); color:var(--color-text-meta); white-space:nowrap; }
.tag--topic { height:auto; min-height:22px; padding:3px 9px; font-size:13px; line-height:1.3; max-width:100%; white-space:normal; overflow-wrap:break-word; } /* u546: a long topic wraps instead of being cut off */
.table__empty { padding:28px 20px; display:flex; flex-direction:column; align-items:flex-start; gap:10px; font-size:14.5px; color:var(--color-text-secondary); }
.table__empty-title { font:600 16px var(--font-family-base); color:var(--color-text-primary); }

/* Pagination (04). */
.pagination { display:flex; align-items:center; gap:6px; }
.pagination__btn { min-width:32px; width:auto; padding:0 9px; font:500 13.5px var(--font-family-base); color:var(--color-text-row); text-decoration:none; }
.pagination__btn--active { color:#fff; }
.pagination__btn--disabled { opacity:.45; cursor:default; }
.pagination__gap { font-size:13.5px; color:var(--color-text-meta); padding:0 4px; }

/* Header search that the "Zoeken" button reveals (04, 06). */
.page-search { display:flex; align-items:center; gap:8px; }
.page-search .search { width:260px; height:34px; }

/* ── Conversation sheet (05) — the modal body, also the standalone page ────────────────────────────── */
.modal { z-index:60; }
.modal__overlay { cursor:pointer; }
.modal__dialog--sheet { background:#fff; }
.modal__dialog--sheet > .sheet { flex:1; min-height:0; display:flex; flex-direction:column; }
/* u593: the backdrop at once while the modal's content loads (dilot.js modalShell); u593b: no empty box — only a
   spinner, and only when loading takes a moment */
.modal-pending { position:relative; pointer-events:none; display:flex; align-items:center; justify-content:center; width:56px; height:56px; border-radius:50%; background:rgba(255,255,255,.92); box-shadow:var(--shadow-modal); opacity:0; animation:modal-spinner-show .2s ease .25s forwards; }
@keyframes modal-spinner-show { to { opacity:1; } }
.modal-pending .knowledge-spin { width:24px; height:24px; border-width:3px; }
.sheet__head { flex:none; display:flex; align-items:flex-start; gap:16px; padding:18px 22px; background:var(--color-band); border-bottom:1px solid var(--color-line-glass); }
.sheet__head-text { min-width:0; flex:1; }
.sheet__title { font-size:19px; font-weight:600; letter-spacing:-.02em; color:var(--color-text-primary); }
.sheet__tags { display:flex; align-items:center; gap:8px; margin-top:8px; flex-wrap:wrap; }
.sheet__tags .tag { height:22px; }
.sheet__meta { font-size:13.5px; color:var(--color-text-meta); }
.sheet__actions { display:flex; align-items:center; gap:8px; flex:none; }
.btn--close svg { width:16px; height:16px; }
/* u553: why a translation did not happen — said under the title, never a button that silently resets */
.sheet__notice { margin-top:10px; font-size:13.5px; line-height:1.45; color:var(--color-text-secondary); }
/* u553 (Denis, phone: the title squeezed into a narrow column beside "Vertaal naar Nederlands"): on a phone the title
   gets the full width with only the close button beside it; the translate button goes on its own row below. */
@media (max-width: 640px) {
  .sheet__head { display:grid; grid-template-columns:minmax(0,1fr) auto; column-gap:12px; row-gap:12px; padding:16px; }
  .sheet__actions { display:contents; }
  .sheet__head-text { grid-column:1; grid-row:1; }
  .sheet__actions .btn--close { grid-column:2; grid-row:1; align-self:start; }
  .sheet__actions .cv-translate-btn { grid-column:1 / -1; grid-row:2; justify-self:start; }
}
.sheet__scroll { flex:1; min-height:0; overflow-y:auto; }
.sheet__summary { position:relative; overflow:hidden; background:var(--gradient-dark-card); padding:14px 22px 16px; }
.sheet__summary::before { content:""; position:absolute; inset:-160% 8% 20% 62%; background:radial-gradient(closest-side,rgba(90,130,255,.36),rgba(90,130,255,0)); pointer-events:none; }
.sheet__summary-label { position:relative; font:600 13.5px var(--font-family-base); color:rgba(255,255,255,.66); }
.sheet__summary-text { position:relative; font-size:15.5px; line-height:1.6; color:#fff; margin-top:5px; }
/* u229: a tidy grid of label + value (was a wrapping row with separators that dangled at line ends). */
.sheet__facts { display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:8px 22px; padding:12px 22px; border-bottom:1px solid var(--color-line-glass); }
.sheet__fact { display:flex; align-items:baseline; gap:10px; min-width:0; }
.sheet__fact-label { font-size:14px; color:var(--color-text-secondary); white-space:nowrap; }
.sheet__fact-value { font:600 14px var(--font-family-base); color:var(--color-text-primary); overflow-wrap:anywhere; }
.sheet__fact-sep { width:1px; height:14px; background:var(--color-line-glass); flex:none; }
.sheet__fact--grow { flex:1; }
.sheet__transcript { padding:16px 22px 4px; }
.sheet__gap { margin:14px 22px 0; display:flex; align-items:center; gap:14px; padding:14px 16px; border-radius:var(--radius-panel); background:var(--color-gap-bg); border:1px solid var(--color-gap-border); }
.sheet__gap-icon { width:34px; height:34px; flex:none; border-radius:var(--radius-control); background:var(--color-gap-icon-bg); color:var(--color-warning); display:flex; align-items:center; justify-content:center; }
.sheet__gap-text { min-width:0; flex:1; }
.sheet__gap-title { font:600 14px var(--font-family-base); color:var(--color-warning); }
.sheet__gap-question { font-size:15.5px; font-weight:600; color:var(--color-text-primary); margin-top:4px; }
.sheet__gap-count { font-size:13.5px; color:var(--color-text-secondary); margin-top:3px; }
.sheet__empty { padding:22px; display:flex; flex-direction:column; align-items:flex-start; gap:8px; }
.sheet__empty-title { font:600 16px var(--font-family-base); color:var(--color-text-primary); }
.sheet__empty-text { font-size:14.5px; line-height:1.6; color:var(--color-text-secondary); max-width:560px; }
.sheet__foot { flex:none; display:flex; align-items:center; gap:12px; padding:14px 22px; margin-top:16px; border-top:1px solid var(--color-line-glass); background:var(--color-band); }
.sheet__foot-spacer { flex:1; }
/* u464: on a phone the footer's buttons ran off the right edge (a superadmin has two more) — they wrap now */
@media (max-width: 640px) { .sheet__foot { flex-wrap:wrap; row-gap:10px; } }
.sheet--page { background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-card); overflow:hidden; box-shadow:var(--shadow-glass); max-width:var(--modal-width-lg); }
.sheet--page .sheet__foot { margin-top:16px; }

/* Transcript bubbles (05). */
.transcript { display:flex; flex-direction:column; gap:12px; }
.transcript__row { display:flex; flex-direction:column; gap:4px; align-items:flex-start; }
.transcript__row--visitor { align-items:flex-end; }
.transcript__bubble { max-width:74%; padding:10px 14px; font-size:15px; line-height:1.6; color:var(--color-text-primary); background:var(--color-bubble-bot); border:1px solid var(--color-line-light); border-radius:10px 10px 10px 2px; overflow-wrap:anywhere; }
.transcript__row--visitor .transcript__bubble { background:var(--color-primary); color:#fff; border:0; border-radius:10px 10px 2px 10px; }
.transcript__bubble p { margin:0 0 8px; } .transcript__bubble p:last-child { margin-bottom:0; }
.transcript__bubble a { color:var(--color-primary); text-decoration:underline; }
.transcript__row--visitor .transcript__bubble a { color:#fff; }
.transcript__bubble ul, .transcript__bubble ol { margin:4px 0 8px; padding-left:20px; }
.transcript__bubble .cl-fs2 { font-size:1.15em; font-weight:600; line-height:1.35; }
.transcript__bubble .cl-fs3 { font-size:1.3em; font-weight:600; line-height:1.3; }
.transcript__time { font-size:12.5px; color:var(--color-text-meta); padding:0 2px; }
.transcript__note { align-self:center; display:inline-flex; align-items:center; gap:6px; max-width:90%; padding:4px 10px; border-radius:var(--radius-tag); background:var(--color-neutral-bg); color:var(--color-neutral); font:500 13px var(--font-family-base); text-align:center; overflow-wrap:anywhere; }
.transcript__extra { display:inline-flex; align-items:center; gap:6px; font-size:13px; color:var(--color-text-secondary); }
.transcript__extra a { color:var(--color-primary); font-weight:600; }
.transcript__card { display:flex; align-items:center; gap:10px; margin-top:2px; padding:6px 10px 6px 6px; max-width:320px; background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-panel); color:var(--color-text-primary); text-decoration:none; box-shadow:var(--shadow-button-white); }
.transcript__card img { width:40px; height:40px; object-fit:cover; border-radius:var(--radius-control); background:var(--color-neutral-bg); flex:none; }
.transcript__card span { font:600 14px var(--font-family-base); line-height:1.3; }

/* Escalation detail (standalone page, linked from the hand-over email). */
.detail-stack { display:flex; flex-direction:column; gap:16px; max-width:var(--modal-width-lg); }
.panel__spacer-text { flex:1; }
.sheet__transcript--panel { padding-bottom:18px; }
.detail-message { padding:16px 22px; font-size:15px; line-height:1.65; color:var(--color-text-primary); white-space:pre-wrap; overflow-wrap:anywhere; }
.detail-rows { padding:4px 22px; }
.detail-rows .field__label { width:180px; }
.detail-rows .field__value { font-size:14.5px; font-weight:500; color:var(--color-text-primary); overflow-wrap:anywhere; }

@media (max-width: 900px) {
  .kpi-strip { flex-direction:column; }
  .kpi-strip__main { min-width:0; }
  .kpi-strip__sep { display:none; }
  .kpi-strip__stats { flex-wrap:wrap; gap:14px 22px; padding-left:0; }
  .kpi-strip__stats > form { margin-left:0; }
  .kpi-strip__stat-label { white-space:normal; }
  .page-header__text { flex-basis:100%; }
  .segmented { max-width:100%; overflow-x:auto; scrollbar-width:none; }
  .stat-cards { flex-wrap:wrap; }
  .stat-card { flex:1 1 calc(50% - 9px); }
  .table--conversations .table__head { display:none; }
  /* u556 (Denis, phone: a long topic ran over the time): the time takes what it needs (it never wraps), the topic gets the
     rest and wraps inside it — before, the topic took its full width and pushed the time under itself */
  .table--conversations .table__row { grid-template-columns:auto minmax(0,1fr); grid-template-areas:"when topic" "text text"; column-gap:12px; row-gap:8px; padding:12px 16px; align-items:start; }
  .table--conversations .table__row > :nth-child(1) { grid-area:when; }
  .table--conversations .table__row > :nth-child(2) { grid-area:text; }
  .table--conversations .table__row > :nth-child(3) { grid-area:topic; justify-self:end; min-width:0; max-width:100%; text-align:right; }
  .table--conversations .table__row > :nth-child(3) .tag--topic { text-align:left; }
  .table--conversations .table__row > :nth-child(4) { display:none; }
  .table--escalations .table__head { display:none; }
  .table--escalations .table__row { grid-template-columns:minmax(0,1fr) auto; row-gap:6px; padding:12px 16px; }
  .table--escalations .table__row > :nth-child(2) { grid-column:1 / -1; grid-row:2; }
  .cell-text__main, .cell-text__sub { white-space:normal; }
  .panel__head--filters { padding:12px 14px; }
  .page-search .search { width:100%; }
  .transcript__bubble { max-width:88%; }
  .sheet__fact-sep { display:none; }
  .sheet__facts { grid-template-columns:1fr; gap:6px; }
  body:has(.modal--conversation) .mobile-tabbar { display:none; }
  .page-body > .panel { margin:0 -16px; border-radius:0; border-left:0; border-right:0; }
  /* ONE dialog size on a phone (u514; u234: 86% of the VISIBLE height — dvh — so Safari's bars cannot eat into it). */
  .modal { padding:2vh 0; align-items:center; }
  .modal__dialog { max-width:96%; max-height:86vh; max-height:86dvh; }
  .modal__head { padding:16px 16px 14px; }
  .modal__body { padding:16px; }
  .modal__foot { padding:12px 16px; }
  .sheet__gap { flex-wrap:wrap; }
  .sheet__gap .btn { width:100%; }
}


/* Impersonation bar (superadmin logged in as a client): full width at the very top of the page (u223).
   u507 (Denis: "on mobile the X isn't closing the chat popup" + "can we put modals on top of the superadmin banner?"): ONE
   cause. A dialog lives inside .app-shell (z-index:1 — a stacking level of its own), so its own z-index 60 never competed
   with this bar's 50: the bar lay OVER the top of every dialog, and on a phone (where the bar wraps to two lines) over the
   X. The bar now has the shell's level and comes first in the page, so the shell — and every dialog in it — is on top. */
.impersonation-bar { position:relative; z-index:1; /* u507: was 50 — see the note below */ display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap; padding:9px 18px; background:var(--gradient-dark-card); color:#fff; font:500 14px var(--font-family-base); }
.impersonation-bar b { font-weight:600; }
.impersonation-bar form { margin:0; }
.impersonation-bar .btn { background:#fff; border-color:#fff; }

/* Dropdown fallback: a <select data-dd> looks like the dropdown even before (or without) dilot.js enhancing it. */
select[data-dd] { appearance:none; -webkit-appearance:none; height:32px; padding:0 30px 0 12px; border-radius:var(--radius-control); background:#fff no-repeat right 11px center/12px url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239AA1AE' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>"); border:1px solid var(--color-border); font:500 13.5px var(--font-family-base); color:var(--color-text-row); cursor:pointer; max-width:100%; }

/* Inline video in a transcript (u223): click-to-load. Nothing loads from YouTube/Vimeo until the play button is
   pressed (privacy), then the player replaces the placeholder. youtube-nocookie for YouTube. */
.transcript__video { position:relative; width:360px; max-width:100%; aspect-ratio:16/9; border-radius:var(--radius-panel); overflow:hidden; background:#20252E; margin-top:2px; }
.transcript__video iframe { position:absolute; inset:0; width:100%; height:100%; border:0; }
.transcript__video-play { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; padding:14px; background:none; border:0; cursor:pointer; color:#fff; text-align:center; }
.transcript__video-icon { width:46px; height:46px; border-radius:var(--radius-panel); background:rgba(255,255,255,.14); display:flex; align-items:center; justify-content:center; transition:background .15s; }
.transcript__video-play:hover .transcript__video-icon { background:rgba(255,255,255,.24); }
.transcript__video-title { font:600 14px var(--font-family-base); line-height:1.35; max-width:100%; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.transcript__video-link { position:absolute; right:10px; bottom:8px; font:600 12.5px var(--font-family-base); color:rgba(255,255,255,.75); }

/* ── Trainen (07, u225) — page shell. The chat CONTENT keeps its old rules (v7-training-legacy.css) until u226. ── */
:root {
  --color-toon: #6B43B8; --color-toon-bg: rgba(122,79,201,.1);
  --color-start-active-bg: rgba(36,85,214,.06); --color-start-active-border: rgba(36,85,214,.42);
}
.tag--toon { background:var(--color-toon-bg); color:var(--color-toon); }
.tv-dot { width:6px; height:6px; border-radius:2px; flex:none; display:inline-block; }
.tv-dot--kennis { background:var(--color-primary); } .tv-dot--instructie { background:var(--color-positive); } .tv-dot--toon { background:var(--color-toon); }
.tv-body { display:flex; gap:18px; align-items:stretch; height:calc(100vh - 150px); min-height:560px; }
.tv-chat { flex:1; min-width:0; display:flex; flex-direction:column; }
.tr-page .tc-msgs.tv-msgs { flex:1; min-height:0; max-height:none; overflow-y:auto; display:flex; flex-direction:column; gap:20px; padding:4px 4px 12px; }
/* u237 (Denis): a quiet scrollbar in the conversation instead of the system one — thin, rounded, darker on hover. */
.tr-page .tc-msgs.tv-msgs { scrollbar-width:thin; scrollbar-color:rgba(31,48,90,.18) transparent; }
.tr-page .tc-msgs.tv-msgs:hover { scrollbar-color:rgba(31,48,90,.30) transparent; }
.tr-page .tc-msgs.tv-msgs::-webkit-scrollbar { width:10px; }
.tr-page .tc-msgs.tv-msgs::-webkit-scrollbar-track { background:transparent; }
.tr-page .tc-msgs.tv-msgs::-webkit-scrollbar-thumb { background:rgba(31,48,90,.18); border-radius:10px; border:3px solid transparent; background-clip:padding-box; }
.tr-page .tc-msgs.tv-msgs::-webkit-scrollbar-thumb:hover { background-color:rgba(31,48,90,.32); }
/* Empty state: the hero sits in the middle while it is the only thing in the conversation. */
.tv-hero { margin:auto 0; display:flex; flex-direction:column; align-items:center; text-align:center; padding:12px 0 8px; }
.tv-hero__icon { width:46px; height:46px; border-radius:var(--radius-panel); background:var(--gradient-dark-card); display:flex; align-items:center; justify-content:center; color:#9FBBFF; box-shadow:0 12px 30px rgba(20,26,44,.26); }
.tv-hero__title { font-size:25px; font-weight:600; letter-spacing:-.028em; color:var(--color-text-primary); margin-top:16px; line-height:1.2; }
.tv-hero__title em { font-family:'Lora', Georgia, serif; font-style:italic; font-weight:500; }
.tv-hero__text { font-size:14.5px; color:var(--color-text-secondary); margin-top:9px; max-width:600px; line-height:1.5; }
.tv-starts { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:24px; width:100%; max-width:640px; }
.tv-start { display:flex; flex-direction:column; align-items:flex-start; text-align:left; background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-panel); padding:13px 16px; cursor:pointer; font:inherit; transition:background .15s, border-color .15s; }
.tv-start:hover:not(:disabled), .tv-start:focus-visible, .tv-start.on { background:var(--color-start-active-bg); border-color:var(--color-start-active-border); }
.tv-start:disabled { cursor:default; opacity:.6; }
.tv-start .t { font:600 15px var(--font-family-base); color:var(--color-text-primary); line-height:1.3; }
.tv-start .s { font-size:13.5px; color:var(--color-text-meta); margin-top:3px; }
/* Composer: one white field; the whole block is the drop target. */
.tv-compose { flex:none; margin-top:14px; background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-panel); box-shadow:0 1px 2px rgba(31,48,90,.06); padding:14px 16px 12px; display:flex; flex-direction:column; gap:11px; transition:border-color .15s, box-shadow .15s; }
.tv-compose:focus-within { border-color:var(--color-primary); box-shadow:var(--shadow-focus); }
.tv-compose.is-over { border-color:var(--color-primary); background:var(--color-start-active-bg); }
.tv-compose textarea { width:100%; border:0; outline:0; resize:none; background:transparent; font:400 15.5px/1.5 var(--font-family-base); color:var(--color-text-primary); padding:0; min-height:48px; max-height:220px; }
.tv-compose textarea::placeholder { color:var(--color-text-faint); }
.tv-compose__row { display:flex; align-items:center; gap:9px; }
.tv-compose__spacer { flex:1; }
.tv-compose__clip { width:var(--button-height); height:var(--button-height); border-radius:var(--radius-control); background:rgba(31,48,90,.06); color:var(--color-text-secondary); border:0; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.tv-compose__clip:hover { background:rgba(31,48,90,.1); }
.tv-compose__foot { display:none; }
.tv-foot { flex:none; display:flex; align-items:center; gap:9px; padding:11px 4px 0; flex-wrap:wrap; }
.tv-foot__usage { font-size:14px; color:var(--color-text-primary); }
.tv-foot__tip { display:inline-flex; color:var(--color-text-meta); }
.tv-foot__sep { width:1px; height:12px; background:var(--color-line-glass); }
/* u231 (Denis): warm grey */
:root { --color-note-warm: #88867B; }
.tv-foot__note { font-size:13.5px; color:hsl(0deg 0% 0% / 36%); } /* u267 (Denis) */
.tv-foot__spacer { flex:1; }
.tv-foot__restart { display:inline-flex; align-items:center; gap:6px; font:600 13.5px var(--font-family-base); color:var(--color-text-row); background:none; border:0; cursor:pointer; white-space:nowrap; padding:0; }
/* Right column */
.tv-side { width:320px; flex:none; display:flex; flex-direction:column; gap:14px; min-height:0; }
.tv-added { flex:1; min-height:0; padding:16px 18px 14px; display:flex; flex-direction:column; overflow:hidden; }
.tv-added__title { flex:none; font:600 16px var(--font-family-base); color:var(--color-text-primary); }
.tv-tabs { margin-top:12px; width:fit-content; max-width:100%; }
.tv-tabs .segmented__item { height:26px; padding:0 8px; font-size:12.5px; gap:5px; border:1px solid transparent; }
.tv-tabs .segmented__item.active { background:#fff; border-color:var(--color-border-tile); color:var(--color-text-primary); font-weight:600; }
.tv-added__head { flex:none; display:flex; align-items:baseline; gap:8px; margin-top:14px; padding-bottom:10px; border-bottom:1px solid var(--color-row-line); font:600 14px var(--font-family-base); color:var(--color-text-primary); }
.tv-added__head span { flex:1; }
.tv-added__head .text-link { font-size:13.5px; }
.tv-list { flex:1; min-height:0; overflow-y:auto; margin-top:14px; border-top:1px solid var(--color-list-rule); display:flex; flex-direction:column; }
:root { --color-list-rule: #CDD3DD; } /* clearly visible rule (Denis, u228 → darker u231) */
.tv-item { display:flex; flex-direction:column; gap:5px; padding:9px 0; border-bottom:1px solid var(--color-row-line); text-decoration:none; color:inherit; }
.tv-item:hover .tv-item__title { color:var(--color-primary); }
.tv-item.is-undone { opacity:.55; }
.tv-item__title { font:400 14px var(--font-family-base); color:var(--color-text-primary); line-height:1.35; }
.tv-added .tag { font:500 12px var(--font-family-base); }
.tv-item__meta { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.tv-item__when { font-size:13px; color:var(--color-text-meta); }
.tv-detail { padding:8px 0 10px; border-bottom:1px solid var(--color-row-line); }
.tv-diff { list-style:none; margin:0 0 8px; padding:0; display:flex; flex-direction:column; gap:4px; font-size:13px; }
.tv-diff li { display:flex; gap:6px; flex-wrap:wrap; align-items:baseline; }
.tv-diff .k { font-weight:600; color:var(--color-text-row); } .tv-diff .v-old { color:var(--color-text-meta); text-decoration:line-through; } .tv-diff .arr { color:var(--color-text-meta); } .tv-diff .v-new { color:var(--color-text-primary); font-weight:500; }
.tv-empty { font-size:13.5px; color:var(--color-text-meta); padding:14px 0; line-height:1.5; }
.tv-pager { flex:none; align-items:center; justify-content:space-between; padding-top:10px; margin-top:auto; }
.tv-pager .cp-info { font-size:13.5px; color:var(--color-text-row); font-weight:500; }
.tv-pager .pagination__btn:disabled { opacity:.45; cursor:default; }
.tv-added__foot { flex:none; display:flex; align-items:center; gap:8px; margin:10px -18px -14px; padding:11px 18px; border-top:1px solid var(--color-line-glass); font:500 13.5px var(--font-family-base); color:var(--color-text-row); text-decoration:none; }
.tv-added__foot span { flex:1; }
.tv-added__foot svg:last-child { color:var(--color-chevron); }
.tv-tone { flex:none; padding:14px 18px; display:flex; align-items:center; gap:12px; }
.tv-tone__text { flex:1; min-width:0; }
.tv-tone__title { font:600 14px var(--font-family-base); color:var(--color-text-primary); }
.tv-tone__summary { font-size:13px; color:var(--color-text-meta); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* Tone + log modals */
.tv-tonemodal { background:var(--color-overlay); }
.modal__head-text { flex:1; min-width:0; display:flex; flex-direction:column; gap:6px; align-items:flex-start; }
.modal__meta { font-size:13.5px; color:var(--color-text-meta); line-height:1.45; }
.tv-label { font:600 13px var(--font-family-base); color:var(--color-text-label); margin-bottom:6px; }
.tv-muted { color:var(--color-text-secondary); font-size:14.5px; }
.tv-logdiff { display:flex; gap:8px; align-items:baseline; flex-wrap:wrap; font-size:14.5px; } .tv-logdiff .old { color:var(--color-text-meta); text-decoration:line-through; } .tv-logdiff .arrow { color:var(--color-text-meta); } .tv-logdiff .new { font-weight:600; }
.cc-row { padding:12px 0; border-bottom:1px solid var(--color-row-line); }
.cc-row:last-of-type { border-bottom:0; }
.cc-label { font:600 14px var(--font-family-base); color:var(--color-text-primary); margin-bottom:8px; }
.cc-seg { display:inline-flex; flex-wrap:wrap; gap:2px; background:var(--color-fill-segmented, rgba(31,48,90,.05)); border-radius:var(--radius-control); padding:3px; }
.cc-opt { height:30px; padding:0 12px; border-radius:var(--radius-toggle); border:1px solid transparent; background:none; font:500 13.5px var(--font-family-base); color:var(--color-text-secondary); cursor:pointer; }
.cc-opt.active { background:#fff; border-color:var(--color-border-tile); color:var(--color-text-primary); font-weight:600; }
.cc-desc { font-size:13px; color:var(--color-text-meta); margin-top:6px; line-height:1.45; }
.cc-status { font-size:13.5px; color:var(--color-positive); min-height:1.3em; margin-top:10px; }
@media (max-width: 1100px) { .tv-side { width:280px; } }
@media (max-width: 900px) {
  /* Design 14: no subtitle, the conversation scrolls with the page, the composer is docked above the tab bar,
     the bot writes without its square. The "what was added" list lives in the Kennisbank on a phone; the tone
     card stays at the end of the page (it is the only way to the tone controls). */
  .tr-page { padding-bottom:210px; }
  /* u267: Trainen's subtitle shows on phones too — every page header is the same. */
  .tv-body { display:block; height:auto; min-height:0; }
  .tr-page .tc-msgs.tv-msgs { min-height:0; max-height:none; overflow:visible; padding:0 0 8px; }
  .tv-hero { padding-top:18px; }
  .tv-starts { grid-template-columns:1fr; }
  .tr-page .tc-msgs .tc-bot { padding-left:0; }
  .tr-page .tc-msgs .tc-bot::before, .tr-page .tc-msgs .tc-typing::before { display:none; }
  .tr-page .tc-msgs .tc-typing { padding-left:0; }
  .tr-page .tc-msgs .tc-admin { max-width:88%; }
  .tv-compose { position:fixed; left:0; right:0; bottom:calc(68px + env(safe-area-inset-bottom, 12px)); z-index:30; margin:0; border-radius:0; border-left:0; border-right:0; border-bottom:0; box-shadow:0 -8px 24px rgba(31,48,90,.14); padding:12px 16px 10px; }
  .tv-compose textarea { min-height:40px; font-size:16px; line-height:1.4; }
  .tv-compose #tcSend { padding:0 28px; }
  /* Usage + restart live under the field, inside the docked composer (u229). */
  .tv-compose__foot { display:flex; align-items:center; gap:8px; margin-top:2px; padding-top:9px; border-top:1px solid var(--color-row-line); }
  .tv-compose__foot .tv-foot__usage, .tv-compose__foot .tv-foot__restart { font:500 13.5px var(--font-family-base); color:var(--color-text-row); }
  /* u235 (Denis): the usage line is grey on a phone — the same colour as its info icon. */
  .tv-compose__foot .tv-foot__usage { color:var(--color-text-meta); }
  .tv-foot { display:none; }
  .tr-page .tc-msgs .tc-msg { font-size:16px; } /* u302 (Denis): phone 16px, desktop 15.5px — bot answer, own bubble and composer the same */
  /* The "what was added" list is shown on a phone too (u229), under the conversation. */
  .tv-added { max-height:none; overflow:visible; }
  .tv-list { max-height:none; overflow:visible; }
  /* A clear grey line between the conversation and "Wat er laatst is toegevoegd" (u230). */
  /* u424 (Denis): more room around that line, and the SAME room above and below it (32px each: what sits above the
     line already ends with 16px of its own). */
  .tv-side { width:100%; margin-top:16px; padding-top:32px; border-top:1px solid var(--color-list-rule); }
  .tv-tabs .segmented__item { font-size:14px; }
  .tv-starts { gap:8px; }
  :root { --font-size-body: 14.5px; }
  body.mobile-sheet-open .tv-compose { display:none; }
}

/* ── Trainen chat content (08–12, u226) — what training.js builds inside #tcMsgs. Replaces the temporary
   v7-training-legacy.css. Class names are training.js's own (never rename them here without the JS). ───────── */
/* Once the conversation has started the hero disappears; only a line stays in its place (Denis, u227). */
.tr-page .tv-hero:not(:only-child) { margin:0; padding:0; min-height:0; border-bottom:1px solid var(--color-line-glass); }
.tr-page .tv-hero:not(:only-child) > * { display:none; }
/* u265 (Denis): the line under the hero no longer lives INSIDE the scrolling conversation (u259's sticky version lost
   it). It is its own element above #tcMsgs (.tv-chatline), shown once the chat has started; the hero line itself is
   hidden, so the line never scrolls away. */
.tr-page .tv-hero:not(:only-child) { border-bottom:0; }
.tv-chatline { display:none; flex:none; height:0; border-top:1px solid var(--color-line-glass); }
/* u275 (Denis): no second line under the page's own line — Trainen looks exactly like Statistieken. */
.tr-page .tv-chat:has(.tv-hero:not(:only-child)) .tv-chatline { display:none; }

/* u229 FIX: #tcMsgs is a flex column with a fixed height, so cards with overflow:hidden SHRANK to fit it — a
   conflict card lost its bottom half, the open-question card looked broken. Items never shrink now. */
.tr-page .tc-msgs > * { flex-shrink:0; }

/* Messages: the visitor-side (owner) is a blue bubble on the right; the bot writes plain text next to a small
   blue square (design). */
.tr-page .tc-msg { max-width:640px; font-size:15.5px; line-height:1.5; overflow-wrap:anywhere; }
.tr-page .tc-admin { align-self:flex-end; max-width:540px; background:var(--color-primary); color:#fff; font-weight:400; border-radius:10px 10px 2px 10px; padding:11px 15px; }
.tr-page .tc-bot { align-self:flex-start; position:relative; padding-left:30px; color:var(--color-text-primary); }
.tr-page .tc-bot::before, .tr-page .tc-typing::before { content:""; position:absolute; left:0; top:5px; width:14px; height:14px; border-radius:3px; background:var(--color-primary); }
.tr-page .tc-bot strong { font-weight:600; }
.tr-page .tc-typing { display:flex; flex-wrap:nowrap; gap:4px; align-items:center; padding:6px 0 6px 30px; position:relative; }
/* u466: after 3 s of dots, a quiet line under them (training.js typingBubble) — a div, so the dot rule (span) skips it */
/* u603 (Denis: "make trainingbot the same as the statbot … but make the dots move like on trainingbot"): the text on the
   same line, right after the dots, as in the statistics bot */
.tr-page .tc-typing-hint { flex:1 1 auto; min-width:0; margin:0 0 0 10px; line-height:1.4; color:var(--color-text-meta); opacity:0; transition:opacity .25s ease; }
.tr-page .tc-typing-hint.is-in { opacity:.85; }
@media (prefers-reduced-motion: reduce) { .tr-page .tc-typing-hint { transition:none; } }
.tr-page .tc-typing span { flex:none; width:6px; height:6px; border-radius:50%; background:var(--color-primary); /* u267: same blue as the statistics bot */ animation:tc-wave 1.2s infinite ease-in-out; }
.tr-page .tc-typing span:nth-child(2) { animation-delay:.15s; } .tr-page .tc-typing span:nth-child(3) { animation-delay:.3s; }
@keyframes tc-wave { 0%, 60%, 100% { transform:translateY(0); opacity:.5; } 30% { transform:translateY(-4px); opacity:1; } }

/* Proposal card (10/11): white, light-blue frame; the category reads as a tag in a light band on top. */
.tr-page .tc-prop { align-self:stretch; margin-left:30px; background:#fff; border:1px solid var(--color-prop-border); border-radius:var(--radius-panel); padding:0 16px 14px; box-shadow:0 1px 2px rgba(31,48,90,.06); overflow:hidden; }
.tr-page .tc-prop-meta2 { display:flex; align-items:center; gap:8px; margin:0 -16px 12px; padding:9px 16px; background:var(--color-prop-band); border-bottom:1px solid var(--color-prop-border); font:600 13.5px var(--font-family-base); color:var(--color-prop-band-text); }
.tr-page .tc-prop-dot { display:none; }
.tr-page .tc-prop-cat { display:inline-flex; align-items:center; height:var(--tag-height); padding:0 8px; border-radius:var(--radius-tag); font:600 12.5px var(--font-family-base); background:var(--color-neutral-bg); color:var(--color-neutral); }
.tr-page .tc-prop-dot.k + .tc-prop-cat { background:var(--tag-kennis-bg); color:var(--tag-kennis-fg); }
.tr-page .tc-prop-dot.i + .tc-prop-cat { background:var(--tag-instructie-bg); color:var(--tag-instructie-fg); }
.tr-page .tc-prop-dot.t + .tc-prop-cat, .tr-page .tc-prop-dot.b + .tc-prop-cat { background:var(--color-toon-bg); color:var(--color-toon); }
.tr-page .tc-prop-dot.nav + .tc-prop-cat, .tr-page .tc-prop-dot.q + .tc-prop-cat { background:var(--color-warning-bg); color:var(--color-warning); }
.tr-page .tc-prop-main { font-size:15px; line-height:1.55; color:var(--color-text-primary); white-space:pre-wrap; overflow-wrap:anywhere; }
.tr-page .tc-prop.applied { border-color:var(--color-applied-border); }
.tr-page .tc-prop.applied .tc-prop-meta2 { background:var(--color-positive-bg); border-bottom-color:var(--color-applied-border); color:var(--color-positive); }
.tr-page .tc-prop.rejected, .tr-page .tc-prop.superseded { opacity:.5; }
.tr-page .tc-prop.clarify { border-color:var(--color-gap-border); }
.tr-page .tc-prop.clarify .tc-prop-meta2 { background:var(--color-gap-bg); border-bottom-color:var(--color-gap-border); color:var(--color-warning); }
.tr-page .tc-prop-ref { display:inline-block; font:600 13.5px var(--font-family-base); color:var(--color-primary); margin-top:9px; }
.tr-page .tc-prop-ref::before { content:"↻ "; }
.tr-page .tc-prop-actions { display:flex; gap:8px; margin-top:18px; align-items:center; flex-wrap:wrap; }
.tr-page .tc-prop-actions .btn, .tr-page .tc-prop-clarify .btn, .tr-page .tc-ask .btn { height:var(--button-height); padding:0 17px; font:600 var(--button-font-size) var(--font-family-base); }
.tr-page .btn.btn-sm:not(.btn-ghost) { background:var(--color-primary); color:#fff; border:0; }
.tr-page .btn.btn-sm:not(.btn-ghost):not(:disabled):hover { background:#1E4AC2; }
.tr-page .btn.btn-ghost { background:#fff; border:1px solid var(--color-border-button); color:var(--color-text-primary); }
.tr-page .btn-sm:disabled { opacity:.55; cursor:default; }
.tr-page .tc-prop-link { background:none; border:0; padding:0; font:600 13.5px var(--font-family-base); color:var(--color-text-meta); cursor:pointer; }
.tr-page .tc-prop-link:hover { color:var(--color-primary); }
.tr-page .tc-prop-det-toggle { margin-left:auto; }
.tr-page .tc-prop-det-toggle::after { content:" +"; }
.tr-page .tc-prop-det-toggle.open::after { content:" −"; }
.tr-page .tc-prop-detbox { margin-top:11px; font-size:14px; border-top:1px solid var(--color-row-line); padding-top:9px; }
.tr-page .tc-prop-dk { font:600 12.5px var(--font-family-base); color:var(--color-text-label); margin:9px 0 2px; }
.tr-page .tc-prop-dk:first-child { margin-top:0; }
.tr-page .tc-prop-dv { color:var(--color-text-secondary); line-height:1.5; white-space:pre-wrap; }
.tr-page .tc-prop-hint { margin-top:9px; color:var(--color-text-meta); font-style:italic; }
.tr-page .tc-prop-clarify { display:flex; gap:8px; margin-top:11px; align-items:flex-end; }
.tr-page .tc-prop-clarify textarea, .tr-page .tc-ask-own textarea { flex:1; width:100%; box-sizing:border-box; border:1px solid var(--color-border); border-radius:var(--radius-control); padding:10px 12px; font:400 14.5px/1.45 var(--font-family-base); color:var(--color-text-primary); resize:none; outline:0; max-height:160px; background:#fff; }
.tr-page .tc-prop-clarify textarea:focus, .tr-page .tc-ask-own textarea:focus { border-color:var(--color-primary); box-shadow:var(--shadow-focus); }
.tr-page .tc-prop-status { margin-top:11px; font-size:14px; line-height:1.45; padding:9px 12px; border-radius:var(--radius-control); display:none; }
.tr-page .tc-prop-status.err { background:var(--color-danger-bg); color:var(--color-danger); }
.tr-page .tc-prop-status.ok { background:var(--color-positive-bg); color:var(--color-positive); }
.tr-page .tc-prop-status.warn { background:var(--color-gap-bg); color:var(--color-warning); }
.tr-page .tc-prop-done { font:600 14.5px var(--font-family-base); color:var(--color-positive); }
.tr-page .tc-prop-done.rej { color:var(--color-text-secondary); }
.tr-page .tc-prop-gated { margin-top:10px; font-size:13.5px; color:var(--color-warning); background:var(--color-gap-bg); border-radius:var(--radius-control); padding:8px 11px; }
.tr-page .tc-underbtn-note { margin-top:10px; font-size:13.5px; color:var(--color-text-meta); font-style:italic; line-height:1.45; }
.tr-page .tc-blocked-why { font-size:14px; color:var(--color-text-meta); font-weight:500; }
.tr-page .tc-apply-raw { margin-left:auto; }
.tr-page .tc-prop-dupnote { margin-top:12px; padding:11px 14px; background:var(--color-band); border:1px solid var(--color-border); border-radius:var(--radius-control); }
.tr-page .tc-prop-dupnote-lbl { font:600 13.5px var(--font-family-base); color:var(--color-text-secondary); }
.tr-page .tc-prop-dupnote-text { margin-top:5px; font-size:14.5px; color:var(--color-text-secondary); line-height:1.5; }

/* Conflict (08/09): warning band, "now" box, arrow, blue "Voorstel" box. */
/* u229: amber only in the heading band; the boxes sit on white. */
.tr-page .tc-conflict { margin:0 -16px; padding:0 16px 4px; background:none; }
.tr-page .tc-prop:has(.tc-conflict) { border-color:var(--color-gap-border); }
.tr-page .tc-prop:has(.tc-conflict) .tc-prop-meta2 { display:none; }
.tr-page .tc-conflict-h { display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin:0 -16px 12px; padding:11px 16px 10px; background:var(--color-gap-bg); border-bottom:1px solid var(--color-gap-border); }
.tr-page .tc-conflict-lbl { font:600 14px var(--font-family-base); color:var(--color-warning); display:inline-flex; gap:8px; align-items:baseline; }
.tr-page .tc-conflict-meta { font:600 13px var(--font-family-base); color:var(--color-warning); opacity:.85; text-align:right; }
.tr-page .tc-conflict-link { text-decoration:underline; cursor:pointer; }
.tr-page .tc-conflict + * { margin-top:0; }
.tr-page .tc-kbox { padding:11px 13px; border-radius:var(--radius-control); }
.tr-page .tc-kbox-old { background:var(--color-band); border:1px solid var(--color-border); }
.tr-page .tc-kbox-new { background:var(--color-prop-band); border:1px solid var(--color-prop-border); }
.tr-page .tc-kbox-lbl { display:flex; align-items:center; gap:8px; font:500 13px var(--font-family-base); color:var(--color-text-meta); margin-bottom:5px; }
.tr-page .tc-kbox-new .tc-kbox-lbl { color:var(--color-primary); font-weight:600; }
.tr-page .tc-kbox-tag { display:inline-flex; align-items:center; height:var(--tag-height); padding:0 8px; border-radius:var(--radius-tag); background:var(--tag-kennis-bg); color:var(--tag-kennis-fg); font:600 12.5px var(--font-family-base); }
.tr-page .tc-kbox-text { font-size:15px; color:var(--color-text-row); line-height:1.5; }
.tr-page .tc-kbox-text-b { color:var(--color-text-primary); font-weight:600; }
.tr-page .tc-conflict-arrow { display:flex; justify-content:center; margin:-8px 0; position:relative; z-index:1; }
.tr-page .tc-conflict-arrow-i { display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:50%; background:#fff; border:1px solid var(--color-border); color:var(--color-text-secondary); font-size:13.5px; box-shadow:0 1px 2px rgba(31,48,90,.08); }
.tr-page .tc-conflict-update .tc-conflict-h { background:var(--color-prop-band); border-bottom-color:var(--color-prop-border); }
.tr-page .tc-conflict-update .tc-conflict-lbl, .tr-page .tc-conflict-update .tc-conflict-meta { color:var(--color-prop-band-text); }
/* u237 (Denis): an UPDATE of something you trained is not a warning — the card keeps the normal proposal border and a
   light-blue head like every other proposal (amber stays for a possible website conflict only). More air above the
   buttons: ".tc-conflict + *" had taken their top margin away. */
.tr-page .tc-prop:has(.tc-conflict-update) { border-color:var(--color-prop-border); }
.tr-page .tc-conflict + .tc-prop-actions, .tr-page .tc-conflict + .tc-prop-status + .tc-prop-actions { margin-top:18px; }
.tr-page .tc-kbox-tag--instr { background:var(--tag-instructie-bg); color:var(--tag-instructie-fg); }
.tr-page .tc-diff-added { background:var(--color-positive-bg); border-radius:3px; padding:0 2px; }
.tr-page .tc-diff-removed { background:var(--color-danger-bg); color:var(--color-text-meta); text-decoration:line-through; border-radius:3px; padding:0 2px; }
/* u367: a merge card (the new card largely repeats an older trained item) shows both texts in full with their
   paragraphs; the combined text in normal weight (it is long), the old item scrolls when long. */
.tr-page .tc-kbox-text--pre { white-space:pre-wrap; overflow-wrap:anywhere; }
.tr-page .tc-kbox-new .tc-kbox-text--pre { font-weight:400; }
.tr-page .tc-kbox-old .tc-kbox-text--pre { max-height:220px; overflow:auto; }
.tr-page .tc-merge-info { display:grid; gap:4px; margin-top:10px; font-size:13.5px; line-height:1.45; color:var(--color-text-meta); }
.tr-page .tc-merge-info__k { font-weight:600; color:var(--color-text-secondary); }

/* Follow-up questions inside a card (tc-ask) and the open-questions walker (tr-q). */
.tr-page .tc-ask { margin-top:14px; padding-top:12px; border-top:1px solid var(--color-row-line); }
.tr-page .tc-ask-h { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.tr-page .tc-ask-q { font:600 15px var(--font-family-base); color:var(--color-text-primary); line-height:1.45; }
.tr-page .tc-ask-need { font:600 13px var(--font-family-base); color:var(--color-warning); }
.tr-page .tc-ask-opts { display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }
.tr-page .tc-ask-opt { background:#fff; border:1px solid var(--color-border-button); border-radius:var(--radius-control); padding:0 14px; height:36px; cursor:pointer; font:500 14.5px var(--font-family-base); color:var(--color-text-primary); }
.tr-page .tc-ask-opt:hover { border-color:var(--color-primary); color:var(--color-primary); }
.tr-page .tc-ask-opt.on { background:var(--color-primary); border-color:var(--color-primary); color:#fff; }
.tr-page .tc-ask-opt.is-other { border-style:dashed; color:var(--color-text-secondary); }
.tr-page .tc-ask-opt.is-other:hover, .tr-page .tc-ask-opt.is-other.on { border-style:solid; background:var(--color-primary); border-color:var(--color-primary); color:#fff; }
.tr-page .tc-ask-own { display:none; margin-top:10px; }
.tr-page .tc-ask-own.open { display:block; }
.tr-page .tc-ask-own-foot { display:flex; align-items:center; gap:10px; margin-top:7px; }
.tr-page .tc-ask-hint { flex:1; min-width:0; font-size:13.5px; color:var(--color-text-meta); line-height:1.45; }
.tr-page .tc-ask-count { font-size:13px; color:var(--color-text-meta); white-space:nowrap; }
.tr-page .tc-ask-dunno { display:inline-block; margin-top:10px; background:none; border:0; padding:0; cursor:pointer; font:600 14px var(--font-family-base); color:var(--color-text-meta); }
.tr-page .tc-ask-dunno:hover { color:var(--color-text-row); } .tr-page .tc-ask-dunno.on { color:var(--color-primary); }
.tr-page .tr-q { align-self:stretch; margin-left:30px; border:1px solid var(--color-border); border-radius:var(--radius-panel); padding:14px 16px; background:#fff; }
.tr-page .tr-q-top { display:flex; align-items:center; gap:10px; }
/* u373: document walk-through — the plan card (subjects, merge with previous) and the walk box (same look as .tr-q). */
.tr-page .tc-plan { align-self:stretch; margin-left:30px; border:1px solid var(--color-prop-border); border-radius:var(--radius-panel); padding:14px 16px; background:#fff; }
.tr-page .tc-plan.is-done { opacity:.6; }
.tr-page .tc-plan__head { font-size:15px; line-height:1.5; color:var(--color-text-primary); font-weight:600; }
.tr-page .tc-plan__note { font-size:13px; color:var(--color-text-meta); margin-top:4px; }
.tr-page .tc-plan__list { margin:12px 0; display:flex; flex-direction:column; gap:2px; }
.tr-page .tc-plan__row { display:flex; align-items:flex-start; gap:10px; padding:8px 4px; border-top:1px solid var(--color-border); }
.tr-page .tc-plan__row:first-child { border-top:0; }
.tr-page .tc-plan__row input { margin-top:3px; flex:0 0 auto; }
.tr-page .tc-plan__txt { flex:1 1 auto; min-width:0; cursor:pointer; }
.tr-page .tc-plan__title { font-size:15px; color:var(--color-text-primary); }
.tr-page .tc-plan__sum { font-size:14px; line-height:1.45; color:var(--color-text-meta); margin-top:2px; white-space:normal; overflow:visible; } /* u374: always in full */
.tr-page .tc-plan__merge { flex:0 0 auto; white-space:nowrap; }
.tr-page .tc-walk { border-color:var(--color-prop-border); }
.tr-page .tc-walk__sum { font-size:15px; line-height:1.5; color:var(--color-text-meta); margin-top:4px; } /* u374: bigger */
.tr-page .tc-walk__wait { font-size:15px; line-height:1.5; color:var(--color-text-meta); }
@media (max-width:640px) { .tr-page .tc-plan, .tr-page .tc-walk { margin-left:0; } .tr-page .tc-plan__row { flex-wrap:wrap; } .tr-page .tc-plan__merge { margin-left:24px; } }
.tr-page .tr-q-txt { flex:1; min-width:0; font:600 15px var(--font-family-base); color:var(--color-text-primary); line-height:1.45; }
.tr-page .tr-q-n { font:600 13.5px var(--font-family-base); color:var(--color-text-meta); white-space:nowrap; }
.tr-page .tr-q-bot { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:11px; } /* u516: + Negeren — wraps on a phone */
.tr-page .tr-q-bot .nav { margin-left:auto; display:flex; gap:6px; }
.tr-page .tr-q-bot .nav .pagination__btn:disabled { opacity:.45; cursor:default; }

/* "Kennis toevoegen" (the ready bar) and the preview box. */
.tr-page .tc-preview { margin-top:14px; border:1px solid var(--color-prop-border); background:var(--color-prop-band); border-radius:var(--radius-panel); padding:16px; display:none; }
.tr-page .tc-ready { margin-top:12px; display:none; }
.tr-page .tc-ready .btn { width:100%; background:var(--color-positive); color:#fff; }

/* Videos the bot shows while training. */
.tr-page .tc-video { max-width:500px; margin:8px 0; }
.tr-page .tc-video-facade { position:relative; display:block; width:100%; aspect-ratio:16/9; border:0; border-radius:var(--radius-panel); cursor:pointer; background:#20252E center/cover no-repeat; overflow:hidden; padding:0; }
.tr-page .tc-video-facade.has-poster::after { content:""; position:absolute; inset:0; background:rgba(0,0,0,.28); }
.tr-page .tc-video-play { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:1; width:48px; height:48px; border-radius:var(--radius-panel); background:rgba(255,255,255,.16); color:#fff; display:flex; align-items:center; justify-content:center; font-size:17.5px; }
.tr-page .tc-video-title { position:absolute; left:12px; top:10px; z-index:1; max-width:80%; color:#fff; font:600 13.5px var(--font-family-base); text-align:left; }
.tr-page .tc-video-player { width:100%; aspect-ratio:16/9; border:0; border-radius:var(--radius-panel); display:block; }
.tr-page .tc-video-link { display:inline-block; margin-top:6px; font:600 13.5px var(--font-family-base); color:var(--color-primary); }
.tr-page .tc-vcard { max-width:520px; margin:10px 0 10px 30px; border:1px solid var(--color-applied-border); border-radius:var(--radius-panel); background:#fff; overflow:hidden; }
.tr-page .tc-vcard-head { padding:10px 14px; font:600 14px var(--font-family-base); color:var(--color-positive); background:var(--color-positive-bg); border-bottom:1px solid var(--color-applied-border); }
.tr-page .tc-vcard-meta { padding:10px 14px; font-size:14px; color:var(--color-text-row); display:flex; flex-direction:column; gap:4px; }
.tr-page .tc-vcard-meta .k { color:var(--color-text-meta); font-weight:600; }
.tr-page .tc-vcard-video { padding:0 14px; }
.tr-page .tc-vcard-video .tc-video { max-width:100%; margin:4px 0 12px; }
.tr-page .tc-vcard-link { display:inline-block; margin:0 14px 12px; font:600 14px var(--font-family-base); color:var(--color-primary); }
:root { --color-prop-border: #C9D6F5; --color-prop-band: #F4F7FE; --color-prop-band-text: #1B3E9E; --color-applied-border: #BFE3CE; }
@media (max-width: 900px) { .tr-page .tc-prop, .tr-page .tr-q, .tr-page .tc-vcard { margin-left:0; } }

/* ── Trainen files (13, u228): chips in the composer + the "Gevonden in je bestanden" pick card. Design +1px. ── */
.tv-files { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:8px; }
.tv-file { display:flex; align-items:center; gap:10px; min-width:0; padding:9px 10px 9px 12px; border:1px solid var(--color-border); border-radius:var(--radius-control); background:var(--color-band); }
.tv-file.is-err { border-color:var(--color-danger-bg); background:var(--color-danger-bg); }
.tv-file__icon { width:28px; height:28px; flex:none; border-radius:var(--radius-toggle); background:#fff; border:1px solid var(--color-border); color:var(--color-text-secondary); display:flex; align-items:center; justify-content:center; }
.tv-file__text { flex:1; min-width:0; display:flex; flex-direction:column; }
.tv-file__name { font:600 14px var(--font-family-base); color:var(--color-text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tv-file__meta { font-size:13px; color:var(--color-text-meta); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tv-file.is-err .tv-file__meta { color:var(--color-danger); }
.tv-file__remove { flex:none; width:26px; height:26px; border:0; background:none; border-radius:var(--radius-toggle); color:var(--color-text-meta); cursor:pointer; display:flex; align-items:center; justify-content:center; }
.tv-file__remove:hover { background:rgba(31,48,90,.08); color:var(--color-text-primary); }
.tv-filebar { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.tv-fileadd { display:inline-flex; align-items:center; gap:7px; height:32px; padding:0 12px; border:1px dashed var(--color-border-checkbox); border-radius:var(--radius-control); background:none; font:600 14px var(--font-family-base); color:var(--color-text-row); cursor:pointer; }
.tv-fileadd:hover { border-color:var(--color-primary); color:var(--color-primary); }
.tv-filehint { font-size:13.5px; color:var(--color-text-meta); }
.tr-page .tc-pick { align-self:stretch; margin-left:30px; background:#fff; border:1px solid var(--color-prop-border); border-radius:var(--radius-panel); overflow:hidden; box-shadow:0 1px 2px rgba(31,48,90,.06); }
.tr-page .tc-pick-h { display:flex; align-items:baseline; gap:12px; padding:10px 16px; background:var(--color-prop-band); border-bottom:1px solid var(--color-prop-border); font:600 14px var(--font-family-base); color:var(--color-prop-band-text); }
.tr-page .tc-pick-h > span:first-child { flex:1; }
.tr-page .tc-pick-count { font:600 13.5px var(--font-family-base); color:var(--color-primary); white-space:nowrap; }
.tr-page .tc-pick-list { display:flex; flex-direction:column; padding:0 16px; max-height:360px; overflow-y:auto; }
.tr-page .tc-pick-row { display:flex; align-items:flex-start; gap:14px; padding:11px 0; border-bottom:1px solid var(--color-row-line); cursor:pointer; }
.tr-page .tc-pick-row:last-child { border-bottom:0; }
.tr-page .tc-pick-text { flex:1; min-width:0; font-size:15px; line-height:1.5; color:var(--color-text-primary); display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; white-space:pre-line; }
.tr-page .tc-pick-text strong { font-weight:600; }
.tr-page .tc-pick-row.is-off .tc-pick-text { color:var(--color-text-faint); }
.tr-page .tc-pick-row input { appearance:none; -webkit-appearance:none; width:18px; height:18px; margin:2px 0 0; flex:none; border-radius:var(--radius-tag); border:1.5px solid var(--color-border-checkbox); background:#fff; cursor:pointer; }
.tr-page .tc-pick-row input:checked { border:0; background:var(--color-primary) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='5 12.5 10 17 19 7'/></svg>") center/11px no-repeat; }
.tr-page .tc-pick-row input:disabled { cursor:default; opacity:.7; }
.tr-page .tc-pick-foot { display:flex; align-items:center; gap:14px; padding:12px 16px 14px; border-top:1px solid var(--color-row-line); flex-wrap:wrap; }
.tr-page .tc-pick-note { flex:1; min-width:180px; text-align:right; font-size:13.5px; color:var(--color-text-meta); line-height:1.4; }
.tr-page .tc-pick-note.is-warn { color:var(--color-warning); }
.tr-page .tc-pick.done { opacity:.75; }
@media (max-width: 900px) { .tr-page .tc-pick { margin-left:0; } .tv-files { grid-template-columns:1fr; } .tr-page .tc-pick-note { text-align:left; } }

/* ── Tooltip (u231): an info button with a bubble. Hover on desktop, tap on phones (v7.js toggles .is-open). ── */
.v7-tip { position:relative; display:inline-flex; align-items:center; justify-content:center; padding:2px; margin:-2px; border:0; background:none; color:var(--color-text-meta); cursor:pointer; border-radius:50%; }
.v7-tip:hover, .v7-tip.is-open { color:var(--color-text-row); }
.v7-tip__bubble { display:none; position:absolute; bottom:calc(100% + 8px); left:50%; transform:translateX(-50%); z-index:50; width:max-content; max-width:260px; padding:9px 12px; border-radius:var(--radius-control); background:var(--color-text-primary); color:#fff; font:500 13.5px/1.45 var(--font-family-base); text-align:left; white-space:normal; box-shadow:0 8px 24px rgba(20,26,44,.25); pointer-events:none; }
.v7-tip__bubble::after { content:""; position:absolute; top:100%; left:50%; margin-left:-5px; border:5px solid transparent; border-top-color:var(--color-text-primary); }
.v7-tip__strong { display:block; font-weight:600; margin-bottom:4px; }
.v7-tip--up-end .v7-tip__bubble { left:auto; right:-6px; transform:none; }
.v7-tip--up-end .v7-tip__bubble::after { left:auto; right:10px; margin-left:0; }
@media (hover: hover) { .v7-tip:hover .v7-tip__bubble { display:block; } }
.v7-tip.is-open .v7-tip__bubble, .v7-tip:focus-visible .v7-tip__bubble { display:block; }
/* Speech-to-text button (u231). Pulses red while listening. */
.tv-compose__mic.is-rec { background:var(--color-danger-bg); color:var(--color-danger); animation:tvMic 1.4s ease-in-out infinite; }
@keyframes tvMic { 0%, 100% { box-shadow:0 0 0 0 rgba(178,58,46,.25); } 50% { box-shadow:0 0 0 6px rgba(178,58,46,0); } }
@media (prefers-reduced-motion: reduce) { .tv-compose__mic.is-rec { animation:none; } }

/* ── Auth (38) — one glass card on the sky, centered ────────────────────────────────────────────────────── */
.auth .login-card { max-width:100%; }
.auth-form { margin-top:24px; display:flex; flex-direction:column; gap:16px; }
.auth-label { display:block; font:600 13.5px var(--font-family-base); color:var(--color-text-row); margin-bottom:7px; }
.auth-input { display:flex; align-items:center; gap:10px; height:var(--input-height-login); padding:0 14px; border-radius:var(--radius-control); background:#fff; border:1px solid var(--color-border); }
.auth-input:focus-within { border-color:var(--color-primary); box-shadow:var(--shadow-focus); }
.auth-input input { flex:1; min-width:0; height:100%; border:0; outline:0; background:transparent; font:500 15px var(--font-family-base); color:var(--color-text-primary); padding:0; }
.auth-input input::placeholder { color:var(--color-text-faint); font-weight:400; }
.auth-input input[type="password"] { letter-spacing:.1em; }
.auth-input input[type="password"]::placeholder { letter-spacing:0; }
.auth-toggle { font:600 13.5px var(--font-family-base); color:var(--color-primary); cursor:pointer; background:none; border:0; padding:0; }
.auth-row { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:18px; }
.auth-check { display:inline-flex; align-items:center; gap:8px; font-size:14px; font-weight:500; color:var(--color-text-row); cursor:pointer; white-space:nowrap; }
.auth-check input { appearance:none; -webkit-appearance:none; width:17px; height:17px; margin:0; flex:none; border-radius:var(--radius-tag); border:1.5px solid var(--color-border-checkbox); background:#fff; cursor:pointer; }
.auth-check input:checked { border:0; background:var(--color-primary) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='5 12.5 10 17 19 7'/></svg>") center/11px no-repeat; }
.auth-submit { margin-top:22px; }
.auth-foot { font-size:13.5px; color:var(--color-text-meta); margin-top:16px; text-align:center; }
.auth-back { display:block; text-align:center; margin-top:20px; }
.auth .notice { margin-top:16px; }
.auth .notice svg { flex:none; margin-top:1px; }
.auth .notice--danger svg { color:var(--color-danger); }
.auth .notice--positive svg { color:var(--color-positive); }
.auth-lang { position:fixed; right:22px; bottom:18px; z-index:1; display:flex; gap:3px; }
.auth-row .text-link { font-size:14.5px; }

/* ── Mobile (≤ 900px) — tab bar + "Meer" bottom sheet (designs 14 and 23). Other pages follow their example. ─ */
.mobile-tabbar, .mobile-sheet { display:none; }
@media (max-width: 900px) {
  .app-shell__sidebar { display:none; }
  .app-shell { min-height:100vh; }
  .app-shell__main { padding:18px 16px calc(96px + env(safe-area-inset-bottom, 0px)); }
  .page-header { padding:2px 2px 16px; flex-wrap:wrap; }
  .page-header__title, .page-header__title--compact { font-size:27px; letter-spacing:-.03em; }
  .page-body { padding:0; }
  .page-row { flex-direction:column; }
  .page-row > .page-col, .page-row > [class*="page-col--fixed"] { width:100%; }

  .mobile-tabbar { position:fixed; left:0; right:0; bottom:0; z-index:40; display:flex; align-items:stretch; gap:6px; padding:8px 8px calc(8px + env(safe-area-inset-bottom, 12px)); background:linear-gradient(180deg,#111830 0%,#16224A 100%); border-top:1px solid rgba(255,255,255,.1); }
  .mobile-tabbar__item { flex:1; min-width:0; min-height:52px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; border-radius:var(--radius-control); cursor:pointer; color:rgba(255,255,255,.6); background:none; border:0; text-decoration:none; }
  .mobile-tabbar__label { font:500 11.5px var(--font-family-base); color:rgba(255,255,255,.72); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
  .mobile-tabbar__item { transition:background .2s ease, color .2s ease; }
  .mobile-tabbar__item--active { background:#fff; color:var(--color-primary-active-text); }
  .mobile-tabbar__item--active .mobile-tabbar__label { color:var(--color-primary-active-text); font-weight:600; }
  .mobile-tabbar__item--more { background:rgba(255,255,255,.1); color:#fff; }
  .mobile-tabbar__item--more[aria-expanded="true"] { background:#fff; color:var(--color-primary-active-text); }
  /* While "Meer" is open, only the Meer button is highlighted (design 23). */
  body.mobile-sheet-open .mobile-tabbar__item--active { background:none; color:rgba(255,255,255,.6); }
  body.mobile-sheet-open .mobile-tabbar__item--active .mobile-tabbar__label { color:rgba(255,255,255,.72); font-weight:500; }

  /* Slide in/out (u223): the sheet stays in the layout; visibility flips only after the slide-out finished. */
  .mobile-sheet { position:fixed; inset:0; z-index:39; display:flex; flex-direction:column; justify-content:flex-end; padding-bottom:calc(68px + env(safe-area-inset-bottom, 12px)); visibility:hidden; pointer-events:none; transition:visibility 0s linear .3s; }
  .mobile-sheet--open { visibility:visible; pointer-events:auto; transition-delay:0s; }
  .mobile-sheet__overlay { position:absolute; inset:0; background:var(--color-overlay); backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px); opacity:0; transition:opacity .3s ease; }
  .mobile-sheet--open .mobile-sheet__overlay { opacity:1; }
  .mobile-sheet__panel { transform:translateY(110%); transition:transform .3s cubic-bezier(.2,.8,.2,1); will-change:transform; position:relative; max-height:calc(100% - 40px); display:flex; flex-direction:column; overflow:hidden; background:var(--gradient-sidebar); border:1px solid rgba(255,255,255,.1); border-bottom:0; border-radius:var(--radius-card) var(--radius-card) 0 0; box-shadow:0 -20px 60px rgba(13,18,28,.3); padding:10px 12px 12px; }
  .mobile-sheet--open .mobile-sheet__panel { transform:translateY(0); }
  .mobile-sheet__panel.is-dragging { transition:none; }
  /* The whole top strip is the drag zone (the bar alone was too small to hit). */
  .mobile-sheet__grab { flex:none; align-self:stretch; display:flex; justify-content:center; padding:4px 0 16px; margin:-10px -12px 0; border:0; background:none; cursor:grab; touch-action:none; }
  .mobile-sheet__handle { display:block; width:72px; height:6px; border-radius:3px; background:rgba(255,255,255,.4); margin-top:8px; }
  .mobile-sheet__scroll { flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; display:flex; flex-direction:column; padding:0 4px 6px 0; scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.28) transparent; }
  .mobile-sheet__group { flex:none; display:flex; align-items:center; gap:10px; padding:14px 12px 6px; font:600 11px var(--font-family-base); letter-spacing:.13em; text-transform:uppercase; color:rgba(255,255,255,.5); white-space:nowrap; }
  .mobile-sheet__group::after { content:""; flex:1; height:1px; background:rgba(255,255,255,.14); }
  .mobile-sheet__item { flex:none; display:flex; align-items:center; gap:13px; height:46px; padding:0 12px; border-radius:var(--radius-control); text-decoration:none; color:rgba(255,255,255,.55); }
  .mobile-sheet__item--active { background:rgba(255,255,255,.1); }
  .mobile-sheet__item--soon { opacity:.5; }
  .mobile-sheet__label { flex:1; min-width:0; font-size:16px; font-weight:500; color:#fff; }
  .mobile-sheet__count { font:500 14px var(--font-family-base); color:rgba(255,255,255,.6); flex:none; }
  .mobile-sheet__badge { font:600 13px var(--font-family-base); background:rgba(255,255,255,.14); color:rgba(255,255,255,.8); border-radius:var(--radius-control); padding:2px 8px; }
  .mobile-sheet__badge--warn { background:var(--color-badge-yellow); color:var(--color-badge-yellow-text); }
  .mobile-sheet__dot { width:6px; height:6px; border-radius:50%; background:var(--color-danger); flex:none; }
  .mobile-sheet__subnav { flex:none; display:flex; flex-direction:column; gap:2px; margin:2px 0 2px 30px; padding-left:10px; border-left:1px solid rgba(255,255,255,.2); }
  .mobile-sheet__subitem { flex:none; display:flex; align-items:center; justify-content:space-between; gap:8px; height:40px; padding:0 12px; border-radius:var(--radius-control); text-decoration:none; }
  .mobile-sheet__subitem--active { background:rgba(255,255,255,.1); }
  .mobile-sheet__sublabel { font-size:14px; font-weight:500; color:rgba(255,255,255,.82); }
  .mobile-sheet__divider { flex:none; height:1px; background:rgba(255,255,255,.12); margin:12px 12px 10px; }
  .mobile-sheet__user { flex:none; display:flex; align-items:center; gap:10px; padding:2px 12px 0; }
  .mobile-sheet__user .sidebar__avatar { font-size:13.5px; }
  .mobile-sheet__user-name { display:block; font-size:15.5px; font-weight:600; color:#fff; }
  .mobile-sheet__user-role { display:block; font-size:13px; color:rgba(255,255,255,.6); }
  .mobile-sheet__signout { margin-left:auto; display:inline-flex; align-items:center; gap:7px; height:38px; padding:0 12px; border-radius:var(--radius-control); background:rgba(255,255,255,.1); color:#fff; font:600 15px var(--font-family-base); border:0; cursor:pointer; }
  body.mobile-sheet-open { overflow:hidden; }

  .auth { padding:24px 16px; flex-direction:column; min-height:90vh; }
  body.auth-page { min-height:90vh; }
  .auth-lang { position:static; align-self:center; margin-top:4px; }
  .login-card { padding:28px 22px 24px; }
  .auth-input { height:48px; }
  .auth-submit { height:46px; font-size:16px; }
}
@media (max-width: 900px) {
  /* iOS Safari zooms the whole page into a text field whose font is under 16px (u229). */
  .app input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), .app textarea, .app select { font-size:16px !important; }
}
@media (prefers-reduced-motion: reduce) { .app-shell__sidebar { transition:none; } }

/* ── Kennisbank (24) + item modal (26, 27, review) — u233. Sizes = design +1px (UI_V7_PLAN 2.25). ────────────── */
:root {
  --color-amber: #E0A33A;           /* "Te beoordelen" count, orphan dot (design 24) */
  --color-amber-on-dark: #E8B463;   /* "Doorverwezen naar een mens" on the dark panel */
}
.knowledge .page-row { gap:16px; }
.knowledge .page-col { gap:16px; }
.knowledge .notice svg { flex:none; margin-top:2px; color:var(--color-primary); }
.knowledge .notice--danger svg { color:var(--color-danger); }
.knowledge .notice form { margin:0; flex:none; }
.knowledge-notice__text { flex:1; min-width:0; }
#kb-sync-banner { align-items:center; transition:opacity .5s ease; }
#kb-sync-banner.is-leaving { opacity:0; }
.knowledge-spin { width:14px; height:14px; flex:none; border-radius:50%; border:2px solid rgba(36,85,214,.25); border-top-color:var(--color-primary); animation:knowledge-spin .8s linear infinite; }
@keyframes knowledge-spin { to { transform:rotate(360deg); } }

/* Dark panel: the real answer numbers (2.13), never a score. */
.knowledge-state { position:relative; display:grid; grid-template-columns:minmax(0,210px) minmax(0,1fr); gap:26px; align-items:center; padding:18px 20px; border-radius:var(--radius-panel); background:var(--gradient-dark-card); box-shadow:var(--shadow-dark-card); color:#fff; }
/* u516: the glow has a clipping layer of its own (was overflow:hidden on the panel), so the tooltip of the info button can
   stand outside the panel instead of being cut off */
.knowledge-state > .knowledge-state__glow { position:absolute; inset:0; overflow:hidden; border-radius:inherit; pointer-events:none; }
.knowledge-state__glow::before { content:""; position:absolute; inset:-60% -20% 45% 40%; background:var(--glow-dark); }
.knowledge-state > * { position:relative; min-width:0; }
.knowledge-state__title { display:flex; align-items:center; gap:7px; font-size:15px; font-weight:600; letter-spacing:-.015em; }
.knowledge-state__title .v7-tip { color:rgba(255,255,255,.6); }
.knowledge-state__title .v7-tip:hover, .knowledge-state__title .v7-tip.is-open { color:#fff; }
.knowledge-state__row { display:flex; align-items:baseline; gap:8px; margin-top:9px; }
.knowledge-state__value { font-size:33px; font-weight:600; letter-spacing:-.04em; line-height:1; color:var(--color-accent-green-on-dark); font-variant-numeric:tabular-nums; }
.knowledge-state__unit { font-size:13px; }
.knowledge-state__bar { height:6px; border-radius:3px; background:rgba(255,255,255,.14); margin-top:12px; overflow:hidden; }
.knowledge-state__bar span { display:block; height:100%; background:var(--color-live-dot); }
.knowledge-state__none { font-size:13.5px; line-height:1.5; color:rgba(255,255,255,.75); margin-top:9px; }
.knowledge-state__rows { display:flex; flex-direction:column; }
.knowledge-state__line { display:flex; justify-content:space-between; gap:10px; padding:9px 0; border-top:1px solid rgba(255,255,255,.1); font-size:13.5px; }
.knowledge-state__line:first-child { border-top:0; }
.knowledge-state__line b { font-weight:600; white-space:nowrap; }
.knowledge-state__good { color:var(--color-accent-green-on-dark); }
.knowledge-state__warn { color:var(--color-amber-on-dark); }

/* "Vragen waar de chatbot geen antwoord op had" */
.knowledge-questions { padding:20px 22px 16px; }
.knowledge-questions__head { display:flex; align-items:baseline; gap:10px; }
.knowledge-questions__title { flex:1; min-width:0; font-size:16px; font-weight:600; letter-spacing:-.015em; color:var(--color-text-primary); }
.knowledge-questions__period { font-size:13px; color:var(--color-text-meta); white-space:nowrap; }
/* u485: room between the explanation and the first line (it sat on it), and one text size for the explanation and the rows' meta */
.knowledge-questions__hint { font-size:13.5px; line-height:1.5; font-weight:400; color:var(--color-text-secondary); margin:6px 0 16px; }
.knowledge-questions__row { display:flex; align-items:center; gap:10px; padding:13px 0; border-top:1px solid var(--color-line-faint); }
.knowledge-questions__text { flex:1; min-width:0; font-size:14.5px; line-height:1.45; font-weight:500; color:var(--color-text-primary); overflow-wrap:anywhere; }
.knowledge-questions__count { margin-left:8px; vertical-align:1px; font-weight:500; }
/* u485: "Melden" with its icon and the dark tooltip of the other icon buttons (.v7-tip__bubble), opening to the left */
.report-btn--tip { position:relative; height:var(--button-height-sm); padding:0 10px; }
.knowledge-questions__form { display:inline-flex; margin:0; } /* u487: "Negeren" is a form of its own */
.report-btn--tip .v7-tip__bubble { left:auto; right:0; transform:none; }
.report-btn--tip .v7-tip__bubble::after { left:auto; right:22px; margin-left:0; }
@media (hover: hover) { .report-btn--tip:hover .v7-tip__bubble { display:block; } }
.report-btn--tip:focus-visible .v7-tip__bubble { display:block; }
.knowledge-questions__foot { display:flex; align-items:center; justify-content:space-between; gap:12px; padding-top:12px; border-top:1px solid var(--color-line-faint); font-size:12.5px; color:var(--color-text-meta); }

/* Bronnen */
.knowledge-sources { padding:18px 20px 16px; }
.knowledge-sources__label { font:600 12.5px var(--font-family-base); color:var(--color-text-meta); }
.knowledge-web { position:relative; overflow:hidden; margin-top:12px; padding:15px 17px; border-radius:var(--radius-panel); background:var(--gradient-dark-card); box-shadow:var(--shadow-assistant-icon); color:#fff; }
.knowledge-web::before { content:""; position:absolute; inset:-60% -20% 45% 40%; background:var(--glow-dark); pointer-events:none; }
.knowledge-web > * { position:relative; }
.knowledge-web__head { display:flex; align-items:center; gap:9px; }
.knowledge-web__name { font-size:19px; font-weight:600; letter-spacing:-.025em; }
.knowledge-web__live { margin-left:auto; display:inline-flex; align-items:center; gap:6px; font:600 13px var(--font-family-base); color:rgba(255,255,255,.7); }
.knowledge-web__live::before { content:""; width:6px; height:6px; border-radius:50%; background:currentColor; }
.knowledge-web__live--live { color:var(--color-live-on-dark); }
.knowledge-web__live--live::before { background:var(--color-live-dot); }
.knowledge-web__live--broken { color:var(--color-delta-down-on-dark); }
.knowledge-web__foot { display:flex; align-items:center; gap:10px; margin-top:13px; }
.knowledge-web__foot form { margin:0; flex:none; }
.knowledge-web__sync { flex:1; min-width:0; font-size:13px; }
.knowledge-source { padding:13px 0; border-top:1px solid rgba(31,48,90,.07); }
.knowledge-web + .knowledge-source { margin-top:6px; border-top:0; }
.knowledge-source__top { display:flex; align-items:baseline; gap:9px; }
.knowledge-source__name { flex:1; min-width:0; font-size:18.5px; font-weight:600; letter-spacing:-.02em; color:var(--color-text-primary); }
a.knowledge-source__name:hover { color:var(--color-primary); }
.knowledge-source__count { font-size:20px; font-weight:600; letter-spacing:-.025em; color:var(--color-text-primary); font-variant-numeric:tabular-nums; }
.knowledge-source__unit { font-size:12.5px; color:var(--color-text-meta); }
.knowledge-source__bottom { display:flex; align-items:center; gap:10px; margin-top:7px; }
.knowledge-source__note { flex:1; min-width:0; font-size:12.5px; color:var(--color-text-meta); }
.knowledge-source__note--warn { color:var(--color-warning); font-weight:600; }
.knowledge-source .btn--sm { padding:0 11px; }

/* Alle kennis */
.knowledge-list { padding:0; overflow:hidden; }
.knowledge-list__head { display:flex; align-items:center; flex-wrap:wrap; gap:10px; padding:14px 20px 12px; }
.knowledge-list__head .segmented { flex:none; }
.knowledge-list__head .segmented__item { text-decoration:none; }
.knowledge-list__head .segmented__item svg { color:currentColor; }
.knowledge-list__badge { min-width:19px; height:19px; padding:0 5px; box-sizing:border-box; border-radius:var(--radius-control); background:var(--color-amber); color:#fff; font:600 12.5px var(--font-family-base); display:inline-flex; align-items:center; justify-content:center; }
.knowledge-list__faint { color:var(--color-text-faint); }
.knowledge-list__tools { display:flex; align-items:center; gap:10px; margin:0; }
.knowledge-list__tools .search { height:32px; background:rgba(255,255,255,.85); }
.knowledge-list__note { display:flex; align-items:center; gap:10px; margin:0 20px 12px; padding:12px 14px; border-radius:var(--radius-panel); background:var(--color-primary-soft-2); font-size:13.5px; line-height:1.55; font-weight:500; color:var(--color-text-row); }
.knowledge-list__note svg { flex:none; color:var(--color-primary); }
.knowledge-list__note form { margin:0; flex:none; }
.table--knowledge .table__head, .table--knowledge .table__row { grid-template-columns:minmax(0,1fr) 120px 170px 120px; padding:0 22px; }
.table--knowledge .table__head { height:30px; font-size:12.5px; color:var(--color-text-meta); border-bottom:0; }
.table--knowledge .table__row { min-height:58px; border-bottom:0; border-top:1px solid var(--color-line-faint); }
.table--knowledge .cell-end { text-align:right; }
.knowledge-row__title { display:block; font-size:14.5px; font-weight:600; color:var(--color-text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.knowledge-row__aside { font-weight:500; color:var(--color-text-meta); }
.table--knowledge .cell-text__sub { font-size:13px; margin-top:2px; }
.knowledge-row__orphan { display:inline-flex; align-items:center; gap:6px; margin-top:3px; font:600 12.5px var(--font-family-base); color:var(--color-warning); }
.knowledge-row__orphan::before { content:""; width:6px; height:6px; border-radius:50%; background:var(--color-amber); }
.knowledge-row__kind { display:flex; flex-wrap:wrap; gap:4px; }
.knowledge-row__aud { font-size:13.5px; font-weight:500; color:var(--color-text-row); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.knowledge-row__link { color:var(--color-primary); font-weight:600; }
.knowledge-row__when { text-align:right; font-size:12.5px; color:var(--color-text-meta); white-space:nowrap; }
.knowledge-list__foot { border-top:1px solid var(--color-line-glass); background:transparent; padding:12px 22px; }
.knowledge-list .table__empty { padding:24px 22px 28px; border-top:1px solid var(--color-line-faint); }

/* Item modal (26 / 27 / review) */
.modal--knowledge .modal__head { flex:none; }
.modal--knowledge .modal__title { line-height:1.25; overflow-wrap:anywhere; }
.knowledge-modal__meta { display:flex; align-items:center; gap:9px; flex-wrap:wrap; margin-top:3px; }
.knowledge-modal__meta .modal__meta { font-size:12.5px; overflow-wrap:anywhere; }
.knowledge-modal__body { flex:1; min-height:0; overflow-y:auto; display:flex; flex-direction:column; gap:14px; }
/* Same trap as Trainen u229: in a scrolling flex column the blocks would SHRINK (the sections box collapsed on a phone). */
.knowledge-modal__body > * { flex:none; }
.knowledge-modal__label { font:600 12.5px var(--font-family-base); color:var(--color-text-meta); }
.knowledge-text { background:#fff; border:1px solid var(--color-line-light); border-radius:var(--radius-panel); padding:14px 16px; font-size:14.5px; line-height:1.65; color:var(--color-text-row); white-space:pre-wrap; overflow-wrap:anywhere; max-height:320px; overflow-y:auto; }
.knowledge-modal__warn { background:var(--color-warning-bg); align-items:flex-start; }
.knowledge-modal__warn svg { flex:none; margin-top:2px; color:var(--color-warning); }
.knowledge-modal__warn form { margin:0; flex:none; }
.knowledge-modal__quote { display:block; margin-top:6px; color:var(--color-text-secondary); }
.knowledge-modal__body > .notice svg { flex:none; margin-top:2px; color:var(--color-primary); }
.knowledge-modal__body > .knowledge-modal__warn svg { color:var(--color-warning); }
.knowledge-modal__foot { flex:none; flex-wrap:wrap; }
.knowledge-modal__foot form { margin:0; }
.knowledge-modal__spacer { flex:1; }
.knowledge-modal__link { font:600 13.5px var(--font-family-base); color:var(--color-text-secondary); }
.knowledge-modal__link:hover { color:var(--color-primary); }
.knowledge-modal__foot .btn svg { flex:none; color:var(--color-primary); }
.knowledge-modal__foot .btn--primary svg { color:#fff; }

/* Sections of a website page (27). The first is open, the rest show a one-line preview. */
.knowledge-sections { position:relative; display:flex; flex-direction:column; }
.knowledge-sections.is-scroll { max-height:360px; overflow-y:auto; padding-right:6px; scrollbar-width:thin; scrollbar-color:rgba(31,48,90,.18) transparent; } /* u240: scroll, no button */
.knowledge-sections.is-scroll::-webkit-scrollbar { width:10px; }
.knowledge-sections.is-scroll::-webkit-scrollbar-thumb { background:rgba(31,48,90,.18); border-radius:10px; border:3px solid transparent; background-clip:padding-box; }
.knowledge-section + .knowledge-section { border-top:1px solid var(--color-line-light); }
.knowledge-section__head { display:flex; align-items:center; gap:11px; padding:12px 2px; cursor:pointer; list-style:none; }
.knowledge-section__head::-webkit-details-marker { display:none; }
.knowledge-section__head > svg { flex:none; color:#9AA1AE; transition:transform .15s ease; }
.knowledge-section[open] > .knowledge-section__head > svg { transform:rotate(90deg); color:var(--color-text-secondary); }
.knowledge-section:first-child > .knowledge-section__head { padding-top:2px; }
.knowledge-section__text { flex:1; min-width:0; }
.knowledge-section__title { display:flex; align-items:center; flex-wrap:wrap; gap:6px; font-size:15px; font-weight:600; letter-spacing:-.012em; color:var(--color-text-primary); }
.knowledge-section__preview { display:block; font-size:14px; color:var(--color-text-meta); margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.knowledge-section[open] .knowledge-section__preview { display:none; }
.knowledge-section__body { padding:0 2px 14px 25px; font-size:14px; line-height:1.7; color:var(--color-text-row); overflow-wrap:anywhere; }
.knowledge-section__full { white-space:pre-wrap; }
.knowledge-section__body .knowledge-modal__label { margin:12px 0 6px; }

/* "Gebruikt door": a label + switch in one chip (26, 27). The checkbox is the real control. */
.knowledge-audience { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.knowledge-audience__form { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0; }
.knowledge-audience__tags { display:flex; gap:6px; flex-wrap:wrap; }
.knowledge-audience__profiles { font-size:13px; color:var(--color-text-meta); }
.knowledge-audience__warn { margin:0; font-size:13.5px; line-height:1.5; font-weight:600; color:var(--color-warning); }
/* u482 — a page's TAGS ("Legal"; later maybe more): a tag with a × to take it off, a dashed chip to put it back.
   Deliberately not a switch — the switches are "Gebruikt door". */
.knowledge-tags { display:flex; align-items:center; gap:8px 14px; flex-wrap:wrap; }
.knowledge-tags__form { display:inline-flex; margin:0; }
.knowledge-tags__hint { flex-basis:100%; margin:0; font-size:13px; line-height:1.5; color:var(--color-text-meta); }
.tag-chip { display:inline-flex; align-items:center; gap:3px; height:26px; padding:0 4px 0 10px; box-sizing:border-box; border:1px solid transparent; border-radius:var(--radius-tag); background:var(--color-neutral-bg); color:var(--color-neutral); font:600 13px var(--font-family-base); white-space:nowrap; }
.tag-chip__x { display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; padding:0; border:0; border-radius:50%; background:none; color:inherit; opacity:.65; cursor:pointer; }
.tag-chip__x:hover, .tag-chip__x:focus-visible { opacity:1; background:rgba(15,23,42,.1); outline:none; }
.tag-chip--add { gap:5px; padding:0 10px 0 8px; background:none; border:1px dashed var(--color-border-button); color:var(--color-text-meta); cursor:pointer; }
.tag-chip--add:hover, .tag-chip--add:focus-visible { border-color:var(--color-primary); color:var(--color-primary); outline:none; }
.switch-chip { position:relative; display:inline-flex; align-items:center; gap:9px; height:var(--button-height); padding:0 6px 0 13px; box-sizing:border-box; border-radius:var(--radius-control); background:#fff; border:1px solid var(--color-border-button); cursor:pointer; white-space:nowrap; }
.switch-chip input { position:absolute; opacity:0; width:1px; height:1px; margin:0; pointer-events:none; }
.switch-chip__label { font-size:14px; font-weight:600; color:var(--color-text-primary); }
.switch-chip input:not(:checked) ~ .switch-chip__label { font-weight:400; color:var(--color-text-meta); }
.switch-chip__toggle { position:relative; width:var(--toggle-width); height:var(--toggle-height); flex:none; border-radius:var(--radius-toggle); background:var(--color-toggle-off); transition:background .15s; }
.switch-chip__toggle::after { content:""; position:absolute; top:3px; left:3px; width:var(--toggle-knob); height:var(--toggle-knob); border-radius:var(--radius-toggle-knob); background:#fff; transition:left .15s; }
.switch-chip input:checked ~ .switch-chip__toggle { background:var(--color-primary); }
.switch-chip input:checked ~ .switch-chip__toggle::after { left:calc(100% - var(--toggle-knob) - 3px); }
.switch-chip:has(input:focus-visible) { box-shadow:var(--shadow-focus); border-color:var(--color-primary); }

/* Review evidence + approve */
.knowledge-facts { margin:0; display:flex; flex-direction:column; gap:6px; font-size:14px; }
.knowledge-facts > div { display:flex; gap:12px; }
.knowledge-facts dt { width:170px; flex:none; color:var(--color-text-secondary); }
.knowledge-facts dd { margin:0; min-width:0; font-weight:500; color:var(--color-text-primary); overflow-wrap:anywhere; }
.knowledge-facts code { font-size:12.5px; background:var(--color-neutral-bg); border-radius:var(--radius-tag); padding:1px 5px; }
.knowledge-approve > summary { list-style:none; width:fit-content; }
.knowledge-approve > summary::-webkit-details-marker { display:none; }
.knowledge-approve__hint { font-size:13.5px; line-height:1.55; color:var(--color-text-secondary); margin:10px 0 8px; }
.knowledge-approve form { display:flex; flex-direction:column; align-items:flex-start; gap:10px; margin:0; }
.knowledge-approve__text { height:auto; min-height:140px; padding:10px 14px; line-height:1.55; resize:vertical; }

/* Dashboard (01) + Widgets aanpassen (03) — u243, redone to the design in u244. Sizes design +1px. */
.home { position:relative; }
.home-top { display:flex; justify-content:flex-end; gap:8px; }
.btn--glass { background:rgba(255,255,255,.78); backdrop-filter:blur(26px); -webkit-backdrop-filter:blur(26px); border:1px solid rgba(255,255,255,.9); box-shadow:0 6px 20px rgba(38,52,86,.10); color:var(--color-text-primary); }
.btn--glass svg { flex:none; }
.home-col { width:100%; max-width:900px; margin:0 auto; display:flex; flex-direction:column; gap:22px; }
.home-hello { text-align:center; padding-top:10px; }
.home-hello__date { font-size:14.5px; color:var(--color-text-meta); }
.home-hello__title { margin:10px 0 0; font-size:41px; font-weight:600; letter-spacing:-.035em; line-height:1.1; color:var(--color-text-primary); overflow-wrap:anywhere; }
.home-hello__title em { font-family:'Lora', Georgia, serif; font-style:italic; font-weight:500; }
.home-hello__sub { margin:12px 0 0; font-size:15.5px; color:var(--color-text-secondary); }
.home-notice { margin:0; }
.home-card { position:relative; overflow:hidden; border-radius:14px; background:rgba(255,255,255,.72); backdrop-filter:blur(26px); -webkit-backdrop-filter:blur(26px); border:1px solid rgba(255,255,255,.85); box-shadow:0 10px 34px rgba(38,52,86,.1); padding:18px 22px 20px; }
.home-card__glow { position:absolute; inset:-46% 58% 74% -14%; background:radial-gradient(closest-side,rgba(36,85,214,.15),rgba(36,85,214,0)); pointer-events:none; }
.home-card__head { position:relative; display:flex; align-items:center; gap:10px; }
.home-card__icon { width:30px; height:30px; flex:none; border-radius:8px; background:rgba(36,85,214,.1); color:var(--color-primary); display:flex; align-items:center; justify-content:center; }
.home-card__title { flex:1; min-width:0; font:600 16px var(--font-family-base); color:var(--color-text-primary); }
.home-card__meta { font-size:13.5px; color:var(--color-text-meta); white-space:nowrap; }
.home-period { margin:0; }
.home-empty { position:relative; margin:16px 0 0; font-size:14.5px; color:var(--color-text-meta); }
.home-empty--sm { margin:6px 0; font-size:13.5px; }
.home-link { display:inline-flex; align-items:center; gap:6px; font:600 13.5px var(--font-family-base); color:var(--color-primary); text-decoration:none; white-space:nowrap; }
.home-link svg { flex:none; }
/* Ask */
.home-ask { padding:20px 22px; }
.home-ask__row { display:flex; align-items:center; gap:13px; margin:0; }
.home-ask__icon { color:var(--color-text-secondary); display:flex; }
.home-ask__input { flex:1; min-width:0; border:0; outline:0; background:transparent; font:400 15.5px var(--font-family-base); color:var(--color-text-primary); padding:6px 0; }
.home-ask__input::placeholder { color:#6E7787; }
.home-ask__send { width:36px; height:36px; flex:none; border:0; border-radius:8px; background:var(--color-text-primary); color:#fff; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.home-ask__answer { margin-top:14px; padding:13px 15px; border-radius:10px; background:rgba(36,85,214,.06); font-size:15px; line-height:1.6; color:var(--color-text-primary); }
.home-ask__dots { display:inline-flex; gap:4px; }
.home-ask__dots span { width:6px; height:6px; border-radius:50%; background:var(--color-text-meta); animation:homeDot 1s infinite ease-in-out; }
.home-ask__dots span:nth-child(2) { animation-delay:.15s; } .home-ask__dots span:nth-child(3) { animation-delay:.3s; }
@keyframes homeDot { 0%, 80%, 100% { opacity:.3; } 40% { opacity:1; } }
.home-ask__chips { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; padding-top:15px; border-top:1px solid rgba(31,48,90,.09); }
.home-ask__chip { display:inline-flex; align-items:center; height:33px; padding:0 13px; border-radius:8px; background:rgba(255,255,255,.85); border:1px solid rgba(31,48,90,.1); font:500 13.5px var(--font-family-base); color:var(--color-text-row); cursor:pointer; }
.home-ask__chip:hover { border-color:var(--color-primary); color:var(--color-primary); }
/* Contact Assistent */
.home-ca__body { position:relative; display:flex; flex-direction:column; margin-top:18px; }
.home-ca__label { font:600 16.5px var(--font-family-base); color:var(--color-text-primary); }
.home-ca__num { display:flex; align-items:baseline; gap:9px; margin-top:10px; font-size:14.5px; color:var(--color-text-row); }
.home-ca__num span { font-size:45px; font-weight:600; letter-spacing:-.04em; line-height:1; color:var(--color-text-primary); font-variant-numeric:tabular-nums; }
.home-ca__btn { width:100%; justify-content:center; margin-top:16px; }
.home-ca__btn svg { flex:none; }
.home-ca__drafts { margin-top:20px; padding-top:14px; border-top:1px solid rgba(31,48,90,.1); }
.home-ca__drafts-row { display:flex; align-items:baseline; gap:8px; font-size:13.5px; color:var(--color-text-meta); }
.home-ca__drafts-row strong { font:600 16px var(--font-family-base); color:var(--color-text-primary); font-variant-numeric:tabular-nums; }
.home-ca__sp { flex:1; }
.home-ca__track { height:4px; margin-top:10px; border-radius:2px; background:rgba(31,48,90,.12); overflow:hidden; }
.home-ca__track span { display:block; height:100%; border-radius:2px; background:linear-gradient(90deg,#1B3FA8 0%,#2E63E6 100%); }
/* Chatbot */
.home-bot { padding:0; }
.home-bot__main { position:relative; padding:20px 22px 22px; }
.home-bot__row { display:flex; align-items:flex-end; gap:32px; margin-top:16px; }
.home-gauge { position:relative; flex:none; width:190px; align-self:center; } /* u255: centred beside the trend (Denis) */
.home-gauge svg { display:block; }
.home-gauge__text { position:absolute; left:0; right:0; bottom:-10px; text-align:center; } /* u426 (Denis) */
.home-gauge__num { font-size:41px; font-weight:600; letter-spacing:-.04em; line-height:1; color:var(--color-text-primary); font-variant-numeric:tabular-nums; }
.home-gauge__label { margin-top:3px; font-size:14px; color:var(--color-text-secondary); max-width:120px; margin-left:auto; margin-right:auto; line-height:1.1; } /* u426 (Denis) */
.home-bot__trend { flex:1; min-width:0; padding-bottom:2px; }
.home-bot__total { display:flex; align-items:baseline; gap:10px; }
.home-bot__count { font-size:15px; font-weight:600; color:var(--color-text-primary); }
.home-bot__delta { font-size:14px; font-weight:600; color:var(--color-positive); background:var(--color-positive-bg); padding:1px 7px; border-radius:6px; } /* u255: subtle pill (Denis) */
.home-bot__delta.is-down { color:var(--color-danger); background:var(--color-danger-bg); }
.home-bot__delta.is-flat { color:var(--color-neutral); background:var(--color-neutral-bg); }
.home-bot__per { margin-left:auto; font-size:14px; color:var(--color-text-meta); }
.home-bars { position:relative; display:flex; align-items:flex-end; gap:6px; height:72px; margin-top:14px; }
.home-bars__bar { flex:1; min-width:3px; border-radius:2px 2px 0 0; background:rgba(36,85,214,.2); transition:background .1s; }
.home-bars__bar.is-today { background:#2455D6; }
.home-bars__bar.is-hover { background:rgba(36,85,214,.42); }
.home-bars__bar.is-today.is-hover { background:#1E4AC2; }
/* u255: day tooltip (dark bubble like .v7-tip; arrow follows the hovered bar via --tip-arrow) */
.home-bars__tip { position:absolute; z-index:5; display:flex; flex-direction:column; gap:1px; padding:7px 10px; border-radius:var(--radius-control); background:var(--color-text-primary); color:#fff; font:500 13px/1.35 var(--font-family-base); white-space:nowrap; box-shadow:0 8px 24px rgba(20,26,44,.25); pointer-events:none; }
.home-bars__tip[hidden] { display:none; }
.home-bars__tip strong { font-weight:600; }
.home-bars__tip span { color:rgba(255,255,255,.78); font-variant-numeric:tabular-nums; }
.home-bars__tip::after { content:""; position:absolute; top:100%; left:var(--tip-arrow, 50%); margin-left:-5px; border:5px solid transparent; border-top-color:var(--color-text-primary); }
.home-bars__axis { display:flex; align-items:baseline; justify-content:space-between; gap:8px; padding-top:10px; margin-top:2px; font-size:13.5px; color:var(--color-text-meta); }
.home-bars__axis strong { font-weight:600; color:var(--color-text-primary); }
.home-topics { position:relative; background:#fff; border-top:1px solid rgba(31,48,90,.12); }
.home-topics__head { display:flex; align-items:center; gap:10px; padding:13px 22px; background:#F7F8FB; border-bottom:1px solid rgba(31,48,90,.1); }
.home-topics__title { flex:1; min-width:0; font:600 14px var(--font-family-base); color:var(--color-text-primary); }
.home-topics__list { padding:8px 22px 6px; }
.home-topic { display:flex; align-items:center; gap:16px; padding:11px 0; border-bottom:1px solid #F1F3F7; color:inherit; text-decoration:none; }
.home-topic:last-child { border-bottom:0; }
.home-topic__name { width:276px; flex:none; font-size:14.5px; font-weight:500; color:var(--color-text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.home-topic:hover .home-topic__name { color:var(--color-primary); }
.home-topic__track { flex:1; min-width:0; display:flex; align-items:center; height:26px; }
.home-topic__bar { height:26px; border-radius:4px; display:flex; align-items:center; justify-content:flex-end; padding-right:9px; box-sizing:border-box; font:600 13px var(--font-family-base); color:#fff; font-variant-numeric:tabular-nums; white-space:nowrap; }
.home-topic__bar--1 { background:linear-gradient(90deg,#1B3FA8 0%,#2E63E6 100%); }
.home-topic__bar--2 { background:linear-gradient(90deg,#2A55C9 0%,#5B84EC 100%); }
.home-topic__bar--3 { background:linear-gradient(90deg,#6486DF 0%,#96AEEF 100%); }
.home-topic__bar--4 { background:linear-gradient(90deg,#92A9EC 0%,#BACBF5 100%); color:#1F2734; }
.home-topic__bar--5 { background:linear-gradient(90deg,#B4C4EA 0%,#D8E1F5 100%); color:#1F2734; }
.home-usage { display:flex; align-items:center; gap:10px; padding:12px 22px 14px; border-top:1px solid #F1F3F7; font-size:13.5px; color:var(--color-text-meta); }
.home-usage__n { font-weight:600; color:var(--color-text-primary); font-variant-numeric:tabular-nums; }
.home-usage__bar { flex:1; max-width:220px; height:4px; border-radius:2px; background:rgba(31,48,90,.12); overflow:hidden; }
.home-usage__bar span { display:block; height:100%; background:var(--color-primary); }
/* Vragen van Dilot — the dark card */
.home-q { position:relative; overflow:hidden; border-radius:12px; padding:20px 22px; background:linear-gradient(135deg,#131A2C 0%,#1B2E63 100%); box-shadow:0 14px 38px rgba(20,26,44,.26); display:flex; align-items:center; gap:18px; }
.home-q__glow { position:absolute; inset:-120% 12% 40% 58%; background:radial-gradient(closest-side,rgba(90,130,255,.4),rgba(90,130,255,0)); pointer-events:none; }
.home-q__icon { position:relative; width:40px; height:40px; flex:none; border-radius:9px; background:rgba(255,255,255,.12); color:#fff; display:flex; align-items:center; justify-content:center; }
.home-q__text { position:relative; flex:1; min-width:0; }
.home-q__title { font-size:16.5px; font-weight:600; color:#fff; }
.home-q__sub { margin-top:5px; font-size:14.5px; color:rgba(255,255,255,.66); }
.home-q__btn { position:relative; flex:none; display:inline-flex; align-items:center; gap:8px; height:38px; padding:0 17px; border-radius:8px; background:#fff; font:600 14.5px var(--font-family-base); color:#1F2734; text-decoration:none; white-space:nowrap; }
.home-q__btn svg { flex:none; }
/* Weekcijfers + Laatst toegevoegde kennis */
.home-recent { margin-top:12px; display:flex; flex-direction:column; }
.home-recent__row { display:flex; align-items:center; gap:12px; min-height:42px; border-bottom:1px solid rgba(31,48,90,.06); color:inherit; text-decoration:none; }
.home-recent__row:last-child { border-bottom:0; }
.home-recent__title { flex:1; min-width:0; font-size:14.5px; font-weight:500; color:var(--color-text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.home-recent__row:hover .home-recent__title { color:var(--color-primary); }
.home-recent__when { font-size:13px; color:var(--color-text-meta); white-space:nowrap; }
/* 03 Widgets aanpassen */
.wg-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.wg-row { display:flex; align-items:center; gap:12px; padding:11px 14px 11px 8px; border-radius:10px; background:#fff; border:1px solid rgba(31,48,90,.1); }
.wg-row.is-dragging { box-shadow:0 10px 26px rgba(38,52,86,.18); border-color:var(--color-primary); }
.wg-row.is-unavailable { opacity:.6; }
.wg-row__handle { width:22px; flex:none; display:flex; justify-content:center; color:var(--color-text-faint); cursor:grab; touch-action:none; }
.wg-row.is-dragging .wg-row__handle { cursor:grabbing; }
.wg-row__icon { width:30px; height:30px; flex:none; border-radius:8px; background:rgba(36,85,214,.1); color:var(--color-primary); display:flex; align-items:center; justify-content:center; }
.wg-row__text { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.wg-row__name { font-size:14.5px; font-weight:600; color:var(--color-text-primary); }
.wg-row__sub { font-size:13px; color:var(--color-text-meta); }
.wg-row__move { display:flex; gap:2px; }
.wg-row__arrow { width:26px; height:26px; border:0; border-radius:6px; background:none; color:var(--color-text-meta); display:flex; align-items:center; justify-content:center; cursor:pointer; transform:rotate(90deg); }
.wg-row__arrow:hover { background:rgba(31,48,90,.06); color:var(--color-text-primary); }
.wg-reset { border:0; background:none; cursor:pointer; padding:0; }
@media (max-width: 900px) {
  .home-hello { padding-top:0; }
  .home-hello__title { font-size:32px; }
  .home-bot__row { flex-direction:column; align-items:stretch; gap:20px; }
  .home-topic__name { width:120px; }
  .home-q { flex-wrap:wrap; }
  .home-q__btn { width:100%; justify-content:center; }
  .home-card, .home-bot__main { padding:18px 16px; }
  /* u424 (Denis): on a phone the "Waar het over ging" block runs edge to edge inside its card again — the rule above
     gave the chatbot card padding, which pushed that block inwards. */
  .home-card.home-bot { padding:0; }
  .home-topics__head, .home-topics__list, .home-usage { padding-left:16px; padding-right:16px; }
}

/* Superadmin Home (SA1), u245 — reuses the dashboard column + the Chats KPI strip. */
.sa-col { max-width:1080px; }
.sa-kpis { padding:12px 16px; display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:18px; align-items:stretch; } /* u247: four equal parts, full width */
.sa-kpis .kpi-strip__main { min-width:0; }
.sa-kpis .kpi-strip__stats { display:contents; }
.sa-kpis .kpi-strip__sep { display:none; }
.sa-kpis .sa-kpi { justify-content:center; padding-left:18px; border-left:1px solid var(--color-line-glass); }
.sa-kpi { color:inherit; text-decoration:none; }
.sa-kpi__row { display:flex; align-items:baseline; gap:9px; }
.sa-kpi__sub { font-size:13.5px; color:var(--color-text-meta); white-space:nowrap; }
.sa-kpi.is-bad .kpi-strip__stat-value { color:var(--color-danger); }
.sa-usage__meta { font:500 13.5px var(--font-family-base); color:var(--color-text-meta); }
.table--sa, .sa-table .table__head, .sa-table .table__row { grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 260px 110px; column-gap:18px; }
.sa-table .table__row { min-height:60px; }
.sa-name { display:block; font-size:14.5px; font-weight:600; color:var(--color-text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sa-site { font-size:14px; color:var(--color-text-row); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sa-more { margin-left:4px; font-size:12.5px; color:var(--color-text-meta); }
.sa-use { display:flex; flex-direction:column; gap:6px; }
.sa-use__row { display:flex; justify-content:space-between; gap:10px; font-size:13.5px; color:var(--color-text-row); font-variant-numeric:tabular-nums; }
.sa-use__pct { font-weight:600; color:var(--color-text-secondary); }
.sa-use__bar { height:5px; border-radius:3px; background:rgba(31,48,90,.1); overflow:hidden; }
.sa-use__bar span { display:block; height:100%; border-radius:3px; background:var(--color-primary); }
.sa-use.is-near .sa-use__pct { color:var(--color-warning); } .sa-use.is-near .sa-use__bar span { background:#D8A23A; }
.sa-use.is-over .sa-use__pct { color:var(--color-danger); } .sa-use.is-over .sa-use__bar span { background:var(--color-danger); }
.sa-table .table__head > :last-child { text-align:right; }
.sa-cost { text-align:right; font:600 14px var(--font-family-base); color:var(--color-text-primary); font-variant-numeric:tabular-nums; }
.sa-table--list .table__head, .sa-table--list .table__row { grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 260px 100px 80px; }
.sa-table--list .table__head > :nth-child(4) { text-align:right; }
.sa-nolimit { font-size:13.5px; color:var(--color-text-meta); }
.sa-open { justify-self:end; display:inline-flex; align-items:center; gap:4px; font:600 13.5px var(--font-family-base); color:var(--color-primary); white-space:nowrap; }
@media (max-width: 1100px) { .sa-table--list .table__head, .sa-table--list .table__row { grid-template-columns:minmax(0,1fr) 200px 90px 70px; } }
@media (max-width: 900px) { .sa-table--list .sa-open { display:none; } }
@media (max-width: 1100px) {
  .sa-table .table__head, .sa-table .table__row { grid-template-columns:minmax(0,1fr) 200px 90px; }
  .sa-table .sa-site, .sa-table .table__head > :nth-child(2) { display:none; }
}
@media (max-width: 900px) {
  .sa-kpis { grid-template-columns:1fr 1fr; }
  .sa-kpis .kpi-strip__main { grid-column:1 / -1; }
  .sa-kpis .sa-kpi { padding:6px 0 6px 12px; }
  .sa-table .table__head { display:none; }
  .sa-table .table__row { grid-template-columns:minmax(0,1fr) auto; row-gap:8px; padding:12px 16px; }
  .sa-table .sa-use { grid-column:1 / -1; }
}
/* u508 (Denis: "more compact and better for mobile … in a card … costs in a pill top right"): on a phone the client
   list (Home and Klanten) is a card with short rows — name and the cost pill on one line, the month's use under it. */
@media (max-width: 700px) {
  .page-body > .panel.sa-usage { margin:0; border-radius:var(--radius-card); border:1px solid var(--color-line-glass); overflow:hidden; }
  .sa-usage .panel__head { flex-wrap:wrap; gap:4px 10px; padding:12px 16px; }
  .sa-usage .panel__head .btn { margin-left:auto; }
  .sa-usage .panel__spacer { display:none; }
  .sa-usage__meta { order:3; flex:0 0 100%; font-size:12.5px; }
  .sa-table .table__row, .sa-table--list .table__row { grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"name cost" "use use"; gap:10px 10px; min-height:0; padding:14px 16px 18px; align-items:start; }
  .sa-table .cell-text { grid-area:name; }
  .sa-table .sa-use, .sa-table .sa-nolimit { grid-area:use; }
  .sa-table .sa-use { gap:4px; }
  .sa-table .sa-use__row, .sa-table .sa-nolimit { font-size:13px; }
  .sa-table .sa-name { font-size:14px; }
  .sa-table .cell-text__sub { margin-top:1px; font-size:12.5px; white-space:nowrap; }
  .sa-table .sa-cost { grid-area:cost; padding:3px 9px; border-radius:999px; background:rgba(31,48,90,.07); font-size:12.5px; line-height:1.4; white-space:nowrap; }
  .sa-table .sa-use__bar { height:4px; }
}

/* Superadmin — client edit (u248). The page keeps its own markup and styles; this layer gives it the v7 look and
   defines the old variables its inline <style> uses. Scoped to .sa-edit so nothing else is touched. */
.sa-edit { --accent:var(--color-primary); --line:rgba(31,48,90,.1); --muted:var(--color-text-meta); --radius:10px; --fg:var(--color-text-primary); --sidebar:var(--sidebar-width); max-width:920px; display:flex; flex-direction:column; gap:0; }
.v7-collapsed .sa-edit { --sidebar:94px; }
.sa-edit__head { padding-left:0; padding-right:0; }
.sa-edit .edit { max-width:none; }
.sa-edit .panel { margin:0 0 16px; padding:18px 22px 6px; border-radius:14px; background:rgba(255,255,255,.72); backdrop-filter:blur(26px); -webkit-backdrop-filter:blur(26px); border:1px solid rgba(255,255,255,.85); box-shadow:0 10px 34px rgba(38,52,86,.1); overflow:visible; }
.sa-edit .panel > h2, .sa-edit .edit h2 { margin:-18px -22px 16px; padding:15px 22px 14px; background:rgba(31,48,90,.035); border-bottom:1px solid rgba(31,48,90,.07); border-radius:14px 14px 0 0; font:600 15px var(--font-family-base); letter-spacing:-.01em; color:var(--color-text-primary); }
.sa-edit .field { display:block; padding:0; margin-bottom:16px; gap:0; } /* undo the v7 settings-row .field (label beside input) */
.sa-edit .field + .field { border-top:0; }
.sa-edit .field label { display:block; width:auto; margin-bottom:6px; font:600 13.5px var(--font-family-base); color:var(--color-text-secondary); }
.sa-edit .field input, .sa-edit .field select, .sa-edit .field textarea { background:#fff; border:1px solid rgba(31,48,90,.12); border-radius:10px; font:500 14.5px var(--font-family-base); color:var(--color-text-primary); padding:9px 12px; }
.sa-edit .field input[type=checkbox], .sa-edit .field input[type=radio] { width:auto; padding:0; }
.sa-edit .field select { appearance:none; -webkit-appearance:none; padding-right:34px; background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237B828F' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>") no-repeat right 11px center; cursor:pointer; }
.sa-edit .field input:focus, .sa-edit .field select:focus, .sa-edit .field textarea:focus { border-color:var(--color-primary); box-shadow:var(--shadow-focus); }
.sa-edit .hint { font-size:13px; line-height:1.5; color:var(--color-text-meta); }
.sa-edit .muted { color:var(--color-text-meta); }
.sa-edit .sa-greet .format-bar__btn { width:auto; min-width:var(--format-button-width); padding:0; border:0; background:none; }
.sa-edit .sa-greet .cb-editor { border:0; border-radius:0; padding:11px 14px; }
.sa-edit .sa-reset { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:12px; }
.sa-edit .sa-reset .hint { margin:0; }
.sa-edit .sa-reset__history { margin-top:10px; }
.sa-edit .sa-reset__history summary { cursor:pointer; font:600 13px var(--font-family-base); color:var(--color-primary); }
.sa-edit .sa-reset__row { display:flex; justify-content:space-between; gap:12px; padding:6px 0; border-bottom:1px solid rgba(31,48,90,.06); font-size:13.5px; color:var(--color-text-row); }
.sa-edit .error { margin:0 0 16px; padding:12px 14px; border-radius:var(--radius-panel); background:var(--color-danger-bg); color:var(--color-danger); font:600 14px var(--font-family-base); }
.sa-edit .switch input { opacity:0; width:0; height:0; padding:0; border:0; }
.sa-edit .field label.switch { display:inline-block; width:44px; height:26px; margin:0; flex:0 0 auto; } /* u251: a switch inside a .field must keep its own size */ /* u251: the layer's checkbox rule had made the switch's hidden input visible */
.sa-edit .mod-row { gap:18px; }
@media (max-width: 900px) { .sa-edit .mod-row { gap:12px; } }
.sa-edit .mod-row strong { font:600 14.5px var(--font-family-base); color:var(--color-text-primary); }
.sa-edit .mod-row + .mod-row { border-top:1px solid rgba(31,48,90,.06); }
/* Old buttons: .btn = primary, .btn-ghost = secondary, .btn-sm = small, .btn-danger = red. */
.sa-edit .btn { background:var(--color-primary); color:#fff; border:0; }
.sa-edit .btn:hover { background:#1E4AC2; }
.sa-edit .btn.btn-ghost { background:#fff; color:var(--color-text-primary); border:1px solid var(--color-border-button); }
.sa-edit .btn.btn-ghost:hover { border-color:#B8C1D1; background:#fff; }
.sa-edit .btn.btn-sm { height:32px; padding:0 13px; font-size:13px; }
.sa-edit .btn.btn-danger { background:var(--color-danger-soft); color:var(--color-danger); }
.sa-edit .danger { max-width:none; margin:0 0 16px; padding:16px 22px; border-radius:14px; border:1px solid rgba(178,58,46,.2); background:rgba(251,237,235,.7); }
.sa-edit .danger strong { font:600 15px var(--font-family-base); color:var(--color-danger); }
/* Save bar: fixed at the bottom of the content area (right of the sidebar). */
.sa-edit .save-bar { left:var(--sidebar); background:rgba(255,255,255,.92); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px); border-top:1px solid rgba(31,48,90,.08); }
.sa-edit .save-bar-inner { padding:12px 26px; max-width:none; }
.sa-edit .save-bar .save-btn { height:40px; }
/* Dialogs (WhatsApp + opening hours, Webshop). */
.sa-edit .ws-modal { border-radius:14px; box-shadow:var(--shadow-modal); }
.sa-edit .ws-modal-head h3 { font:600 17px var(--font-family-base); color:var(--color-text-primary); }
.sa-edit .ws-modal-head, .sa-edit .ws-modal-foot { border-color:rgba(31,48,90,.07); }
.sa-edit .cf-card, .sa-edit .cf-preview { border-color:rgba(31,48,90,.1); }
/* u250: the other superadmin pages (analytics, jobs, platform settings, plugin releases, CA admin) on the same layer. */
.sa-edit { --panel:#fff; --text:var(--color-text-primary); --accent-soft:rgba(36,85,214,.1); }
.sa-page { max-width:1180px; }
/* u267: the superadmin's old .page-head matches .page-header exactly (one page title everywhere). */
.sa-edit .page-head { margin:0; padding:2px 6px 20px; }
.sa-edit .page-head h1 { margin:0; font-size:var(--font-size-page-title); font-weight:600; letter-spacing:-.032em; line-height:var(--line-height-tight); color:var(--color-text-primary); }
.sa-edit .page-head .muted { margin-top:6px; font-size:var(--font-size-body); font-weight:500; color:var(--color-text-secondary); }
@media (max-width: 900px) { .sa-edit .page-head { padding:2px 2px 16px; } .sa-edit .page-head h1 { font-size:27px; letter-spacing:-.03em; } }
.sa-edit h1 { font-weight:600; letter-spacing:-.03em; color:var(--color-text-primary); }
.sa-edit tr.link { cursor:pointer; } .sa-edit tr.link:hover td { background:rgba(36,85,214,.04); }
.sa-edit .notice { margin:0 0 16px; padding:12px 14px; border-radius:var(--radius-panel); font:500 14px var(--font-family-base); }
.sa-edit .notice-ok { background:var(--color-positive-bg); color:var(--color-positive); }
.sa-edit .notice-err { background:var(--color-danger-bg); color:var(--color-danger); }
.sa-edit table { border-collapse:collapse; }
.sa-edit .tbl, .sa-edit .usage-tbl, .sa-edit .panel > table { width:100%; }
.sa-edit th { text-align:left; font:600 12.5px var(--font-family-base); color:var(--color-text-meta); padding:8px 10px; border-bottom:1px solid rgba(31,48,90,.08); }
.sa-edit td { padding:9px 10px; border-bottom:1px solid rgba(31,48,90,.05); font-size:14px; color:var(--color-text-row); }
/* u253: "Cost per component" (analytics) — expandable rows with per-model / per-task detail. */
.sa-edit .cp-head, .sa-edit .cp-sum { display:grid; grid-template-columns:minmax(0,1fr) 100px 130px 110px; gap:10px; align-items:center; }
.sa-edit .cp-head { padding:6px 10px 8px 30px; border-bottom:1px solid rgba(31,48,90,.08); font:600 12.5px var(--font-family-base); color:var(--color-text-meta); }
.sa-edit .cp-row { border-bottom:1px solid rgba(31,48,90,.06); }
.sa-edit .cp-sum { position:relative; padding:10px 10px 10px 30px; cursor:pointer; list-style:none; font-size:14px; color:var(--color-text-row); }
.sa-edit .cp-sum::-webkit-details-marker { display:none; }
.sa-edit .cp-sum::before { content:""; position:absolute; left:10px; top:50%; width:7px; height:7px; margin-top:-5px; border-right:2px solid var(--color-text-meta); border-bottom:2px solid var(--color-text-meta); transform:rotate(-45deg); transition:transform .15s; }
.sa-edit .cp-row[open] > .cp-sum::before { transform:rotate(45deg); margin-top:-6px; }
.sa-edit .cp-row[data-empty] > .cp-sum { cursor:default; color:var(--color-text-faint); }
.sa-edit .cp-row[data-empty] > .cp-sum::before { display:none; }
.sa-edit .cp-name { display:flex; flex-direction:column; gap:5px; min-width:0; }
.sa-edit .cp-name .bar { display:block; height:4px; border-radius:2px; background:var(--color-primary); opacity:.75; }
.sa-edit .cp-detail { display:grid; grid-template-columns:1fr 1fr; gap:14px; padding:4px 10px 14px 30px; }
.sa-edit .cp-sub { min-width:0; padding:10px 12px; border-radius:10px; background:#fff; border:1px solid rgba(31,48,90,.08); }
/* u596: cost per feature — one more column (share), and its "what it is for / switch" box over the full width */
.sa-edit .cf-head, .sa-edit .cf-sum { grid-template-columns:minmax(0,1fr) 70px 90px 170px 100px; }
.sa-edit .cf-row .cf-why { grid-column:1 / -1; font-size:13.5px; line-height:1.5; }
.sa-edit .cp-sub__title { margin-bottom:4px; font:600 13px var(--font-family-base); color:var(--color-text-secondary); }
@media (max-width: 1000px) { .sa-edit .cp-detail { grid-template-columns:1fr; } .sa-edit .cp-head, .sa-edit .cp-sum { grid-template-columns:minmax(0,1fr) 70px 90px 80px; } }
@media (max-width: 1000px) { .sa-edit .cf-head, .sa-edit .cf-sum { grid-template-columns:minmax(0,1fr) 56px 64px 130px 80px; } } /* u596 */
/* u508 (Denis: "analytics is all f*cked up on mobile, widths are wrong, stuff overlaps"): on a phone a row of figures
   does not fit beside its name. A row becomes a small block — the name (and its bar) on its own line, the figures
   under it, each with its column name (data-label). Tables opt in with .an-stack. */
@media (max-width: 700px) {
  .sa-edit .an-grid { grid-template-columns:minmax(0,1fr); }
  .sa-edit .an-panel { min-width:0; }
  .sa-edit .kpis { grid-template-columns:repeat(2, minmax(0,1fr)); gap:8px; margin-bottom:16px; }
  .sa-edit .kpi-card { padding:11px 12px; min-width:0; }
  .sa-edit .kpi-card .n { font-size:20px; overflow-wrap:anywhere; }
  .sa-edit .kpi-card .l { font-size:12.5px; line-height:1.35; }
  .sa-edit .an-range { gap:5px; margin-bottom:14px; }
  .sa-edit .an-range a { padding:6px 11px; }
  /* "table.an-stack": one step stronger than the pages' own ".tbl.compact td" (an inline style block, later in the page) */
  .sa-edit table.an-stack, .sa-edit table.an-stack tbody { display:block; }
  .sa-edit table.an-stack thead { display:none; }
  .sa-edit table.an-stack tr { display:flex; flex-wrap:wrap; gap:5px 14px; padding:9px 2px; border-bottom:1px solid rgba(31,48,90,.06); }
  .sa-edit table.an-stack tr:last-child { border-bottom:0; }
  .sa-edit table.an-stack td { display:flex; flex-direction:column; gap:1px; padding:0; border:0; font-size:13.5px; }
  .sa-edit table.an-stack td[data-label] { flex:1 1 0; min-width:0; white-space:nowrap; } /* equal parts: the figures of every row stand under each other */
  .sa-edit table.an-stack td[data-label^="Price"] { flex-grow:1.7; }
  .sa-edit table.an-stack td:first-child { flex:0 0 100%; min-width:0; overflow-wrap:anywhere; }
  .sa-edit table.an-stack td[data-label]::before, .sa-edit .cp-sum > [data-label]::before { content:attr(data-label); font:500 11.5px var(--font-family-base); color:var(--color-text-meta); }
  .sa-edit .cp-head { display:none; }
  .sa-edit .cp-sum { display:flex; flex-wrap:wrap; gap:6px 12px; padding:10px 4px 10px 24px; }
  .sa-edit .cp-sum::before { left:6px; top:18px; margin-top:0; }
  .sa-edit .cp-row[open] > .cp-sum::before { margin-top:-2px; }
  .sa-edit .cp-sum .cp-name { flex:0 0 100%; }
  .sa-edit .cp-sum > [data-label] { display:flex; flex-direction:column; flex:1 1 0; min-width:0; gap:1px; font-size:13.5px; }
  .sa-edit .cp-row[data-empty] > .cp-sum > [data-label] { display:none; } /* nothing spent: the name says it, three dashes add nothing */
  .sa-edit .cp-detail { padding:0 0 12px; gap:8px; }
  .sa-edit .cp-sub { padding:8px 12px 2px; }
}
/* Wizard (new client): big step titles, not the card-band header; labels keep their inline tips. */
.sa-wiz { --accent-soft:rgba(36,85,214,.1); }
.sa-wiz .step.panel { padding:26px 28px 14px; }
.sa-wiz .step.panel > h2 { margin:0 0 6px; padding:0; background:none; border:0; border-radius:0; font:600 23px var(--font-family-base); letter-spacing:-.02em; }
.sa-wiz .field label { display:flex; align-items:center; gap:6px; }
.sa-wiz .wiz { max-width:none; }
.sa-edit .keybox { border-radius:10px; }
.sa-edit .warn { border-radius:10px; }
@media (max-width: 900px) {
  .sa-edit .save-bar { left:0; bottom:calc(68px + env(safe-area-inset-bottom, 12px)); }
  .sa-edit .panel { padding:16px 16px 4px; }
  .sa-edit .panel > h2, .sa-edit .edit h2 { margin:-16px -16px 14px; padding:13px 16px; }
}

/* Superadmin Klant (SA3), u246 — built from the settings cards. */
/* u493: tabs over a long page of cards (v7.js saTabs) — superadmin client page and client edit */
.sa-tabs { position:sticky; top:10px; z-index:20; display:flex; flex-wrap:wrap; gap:6px; padding:8px; margin:0 0 4px; border-radius:14px; background:rgba(255,255,255,.86); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px); border:1px solid rgba(31,48,90,.09); box-shadow:0 6px 18px rgba(16,24,40,.06); }
.sa-tabs__tab { font:inherit; font-size:13.5px; font-weight:600; line-height:1.2; padding:8px 13px; border:1px solid transparent; border-radius:9px; background:transparent; color:var(--color-text-row, #3b4558); cursor:pointer; white-space:nowrap; transition:background .12s ease, color .12s ease; }
.sa-tabs__tab:hover { background:rgba(31,48,90,.06); }
.sa-tabs__tab.is-active { background:var(--color-primary, #2f54eb); color:#fff; }
.sa-tabs__tab:focus-visible { outline:2px solid var(--color-primary, #2f54eb); outline-offset:2px; }
.sa-tabs__tab--all { margin-left:auto; font-weight:500; }
.sa-tabs__hidden { display:none !important; }
.sa-edit .sa-tabs { margin-bottom:16px; }
@media (max-width: 700px) { .sa-tabs { flex-wrap:nowrap; overflow-x:auto; } .sa-tabs__tab--all { margin-left:0; } }
.sa3 { display:flex; flex-direction:column; gap:16px; max-width:920px; }
.sa3 > .notice { margin:0; }
.sa3-title { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.sa3-head { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.sa3-head__meta { font-size:13.5px; color:var(--color-text-meta); }
.sa3-head__actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.sa3-head__actions form { margin:0; }
.sa3-select { height:36px; min-width:220px; padding:0 34px 0 12px; border:1px solid rgba(31,48,90,.12); border-radius:10px; background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237B828F' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>") no-repeat right 11px center; appearance:none; -webkit-appearance:none; font:500 14px var(--font-family-base); color:var(--color-text-primary); cursor:pointer; }
.sa3-select:focus { outline:0; border-color:var(--color-primary); box-shadow:var(--shadow-focus); }
.sa3-limit { padding-top:14px; }
.sa3-limit__row { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.sa3-limit__num { font-size:45px; font-weight:600; letter-spacing:-.04em; line-height:1; color:var(--color-text-primary); font-variant-numeric:tabular-nums; }
.sa3-limit__of { font-size:14.5px; color:var(--color-text-secondary); }
.sa3-limit__bar { height:7px; margin-top:14px; }
.sa3-limit.is-near .sa-use__bar span { background:#D8A23A; }
.sa3-limit.is-over .sa-use__bar span { background:var(--color-danger); }
.sa3-limit.is-over .sa3-limit__num { color:var(--color-danger); }
.sa3-forecast { margin-top:14px; }
.sa3-usage .table__head, .sa3-usage .table__row { grid-template-columns:minmax(0,1fr) 130px 130px 90px; padding:0 22px; }
.sa3-usage .table__row { min-height:44px; cursor:default; font-size:14px; color:var(--color-text-row); font-variant-numeric:tabular-nums; }
.sa3-usage .table__row:hover { background:none; }
.sa3-usage .cell-end { text-align:right; }
/* u451: the packages table on the superadmin client page, with the client's package marked, and this month so far */
.sa3-tiers__scroll { overflow-x:auto; }
.sa3-tiers { min-width:720px; }
.sa3-tiers .table__head, .sa3-tiers .table__row { grid-template-columns:minmax(150px,1.3fr) repeat(6, minmax(84px,1fr)); padding:0 22px; }
.sa3-tiers .table__row { min-height:46px; cursor:default; font-size:14px; color:var(--color-text-row); font-variant-numeric:tabular-nums; }
.sa3-tiers .table__row:hover { background:none; }
.sa3-tiers .table__row.is-chosen, .sa3-tiers .table__row.is-chosen:hover { background:var(--color-row-selected); box-shadow:inset 3px 0 0 var(--color-accent, #3B5BFF); }
.sa3-tiers .cell-end { text-align:right; }
.sa3-tiers__tag { margin-left:10px; }
.sa3-live { display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:18px; margin-bottom:14px; }
.sa3-live__item { display:flex; flex-direction:column; gap:4px; min-width:0; }
.sa3-live__num { font-size:24px; font-weight:600; letter-spacing:-.02em; line-height:1.1; color:var(--color-text-primary); font-variant-numeric:tabular-nums; }
.sa3-live__lbl { font-size:12.5px; line-height:1.4; color:var(--color-text-meta); }
.sa3-tiers__basis { margin-top:6px; }
/* u456: one figure left under the table; a chat count is an estimate with the messages on hover */
.sa3-live--one { grid-template-columns:minmax(0,1fr); }
/* u546: so far and expected side by side — a small label above each figure, a line between them */
.sa3-live.sa3-live--two { grid-template-columns:repeat(2, minmax(0, 360px)); gap:0; }
.sa3-live--two .sa3-live__item + .sa3-live__item { padding-left:22px; margin-left:22px; border-left:1px solid var(--color-border); }
.sa3-live__kicker { font-size:11.5px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--color-text-meta); }
@media (max-width:640px) { .sa3-live.sa3-live--two { grid-template-columns:minmax(0,1fr); row-gap:14px; } .sa3-live--two .sa3-live__item + .sa3-live__item { padding-left:0; margin-left:0; border-left:0; padding-top:14px; border-top:1px solid var(--color-border); } }
.sa3-tiers__approx { cursor:help; border-bottom:1px dotted var(--color-text-meta); }
.sa3-tiers .table__head span[title] { cursor:help; }
@media (max-width:900px) { .sa3-live { grid-template-columns:repeat(2, minmax(0,1fr)); } .sa3-tiers .table__head, .sa3-tiers .table__row { padding:0 16px; } }
.sa3-options:empty { display:none; }
.sa3-tasks { margin-top:8px; border-top:1px solid rgba(31,48,90,.06); padding-top:10px; }
.sa3-tasks summary { display:inline-flex; align-items:center; gap:7px; cursor:pointer; font:600 13.5px var(--font-family-base); color:var(--color-primary); list-style:none; }
.sa3-tasks summary::-webkit-details-marker { display:none; }
.sa3-tasks__list { margin-top:6px; }
.sa3-tasks__list .field__label { display:inline-flex; align-items:center; gap:5px; cursor:help; }
.sa3-pills { display:flex; flex-wrap:wrap; gap:6px; }
.sa3-inline { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.sa3-inline form { margin:0; }
.sa3-link { border:0; background:none; padding:0; cursor:pointer; font:600 13.5px var(--font-family-base); color:var(--color-primary); text-decoration:none; }
.sa3-diag { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:10px; padding-top:14px; }
.sa3-diag__link { display:flex; flex-direction:column; gap:3px; padding:11px 13px; border-radius:10px; background:#fff; border:1px solid rgba(31,48,90,.1); text-decoration:none; color:inherit; }
.sa3-diag__link:hover { border-color:var(--color-primary); }
.sa3-diag__name { display:inline-flex; align-items:center; gap:6px; font-size:14px; font-weight:600; color:var(--color-text-primary); }
.sa3-diag__desc { font-size:12.5px; line-height:1.4; color:var(--color-text-meta); }
.sa3-key { display:flex; align-items:center; gap:10px; padding-top:12px; }
.sa3-key code, .sa3 .settings-value code { flex:1; min-width:0; padding:8px 11px; border-radius:8px; background:rgba(31,48,90,.05); font:500 13px ui-monospace, SFMono-Regular, Menlo, monospace; color:var(--color-text-primary); overflow-wrap:anywhere; }
.sa3 .settings-value code { flex:none; padding:3px 8px; }
.sa3-newkey { border:1px solid var(--color-applied-border); }
.sa3-limits { display:flex; flex-direction:column; gap:14px; margin-top:18px; padding-top:16px; border-top:1px solid rgba(31,48,90,.07); }
.sa3-lim__site { font:600 12.5px var(--font-family-base); color:var(--color-text-meta); }
.sa3-lim__row { display:flex; align-items:baseline; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.sa3-lim__name { font:600 14.5px var(--font-family-base); color:var(--color-text-primary); }
.sa3-lim__note { margin-left:8px; font:500 12.5px var(--font-family-base); color:var(--color-text-meta); }
.sa3-lim__val { font-size:13.5px; color:var(--color-text-row); font-variant-numeric:tabular-nums; }
.sa3-lim__val strong { margin-left:10px; font-weight:600; color:var(--color-text-secondary); }
.sa3-lim .sa-use__bar { margin-top:7px; }
.sa3-lim.is-near .sa-use__bar span { background:#D8A23A; } .sa3-lim.is-near .sa3-lim__val strong { color:var(--color-warning); }
.sa3-lim.is-over .sa-use__bar span { background:var(--color-danger); } .sa3-lim.is-over .sa3-lim__val strong { color:var(--color-danger); }
.sa3-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.sa3-actions form { margin:0; }
.sa3-actions .btn { height:44px; padding:0 20px; font-size:15px; }
.sa3-actions__login { min-width:300px; justify-content:center; }
.sa3-actions .btn svg { flex:none; }
@media (max-width: 900px) {
  .sa3-usage .table__head, .sa3-usage .table__row { grid-template-columns:minmax(0,1fr) 80px 90px 50px; padding:0 16px; }
  .sa3-select { min-width:0; width:100%; }
  .sa3-key { flex-wrap:wrap; }
  .sa3-actions, .sa3-actions form { width:100%; }
  .sa3-actions .btn, .sa3-actions__login { width:100%; min-width:0; justify-content:center; }
}

/* Instellingen (32–36), u240. Cards as in the design: band head (title + sub), label/value rows, a foot with Opslaan. */
.settings { display:flex; flex-direction:column; gap:16px; max-width:920px; }
.settings-tabs { width:fit-content; max-width:100%; overflow-x:auto; scrollbar-width:none; }
.settings-tabs::-webkit-scrollbar { display:none; }
.settings-notice { margin:0; }
.settings-card { margin:0; display:flex; flex-direction:column; overflow:hidden; border-radius:14px; background:rgba(255,255,255,.72); backdrop-filter:blur(26px); -webkit-backdrop-filter:blur(26px); border:1px solid rgba(255,255,255,.85); box-shadow:0 10px 34px rgba(38,52,86,.10); }
.settings-card__head { padding:15px 22px 14px; background:rgba(31,48,90,.035); border-bottom:1px solid rgba(31,48,90,.07); }
.settings-card__title { font-size:14.5px; font-weight:600; letter-spacing:-.01em; color:var(--color-text-primary); }
.settings-card__sub { margin-top:3px; font-size:13px; font-weight:500; line-height:1.5; color:var(--color-text-secondary); }
.settings-card__body { padding:12px 22px 16px; } /* u247 (Denis) */
.settings-card__body .field + .field { border-top:1px solid rgba(31,48,90,.06); }
.settings-card__body .field__label { font-size:13.5px; }
.settings-card__body .field__input { height:36px; border-radius:10px; font-size:14.5px; }
.settings-card__foot { display:flex; justify-content:flex-end; gap:10px; padding:12px 22px; border-top:1px solid rgba(31,48,90,.07); }
.settings-value { flex:1; min-width:0; font-size:14.5px; font-weight:500; color:var(--color-text-primary); overflow-wrap:anywhere; }
.settings-toggle { cursor:pointer; }
.settings-toggle__text { flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
.settings-toggle__label { font-size:14.5px; font-weight:600; color:var(--color-text-primary); }
.settings-toggle__hint { font-size:13px; font-weight:500; line-height:1.5; color:var(--color-text-secondary); }
.settings-sub[hidden] { display:none; }
.settings-sub { border-top:1px solid rgba(31,48,90,.06); }
.settings-help { margin:0 0 4px calc(var(--settings-label-width) + 16px); font-size:13px; line-height:1.5; color:var(--color-text-meta); }
.settings-period .segmented__item { position:relative; cursor:pointer; }
.settings-period .segmented__item input { position:absolute; opacity:0; width:1px; height:1px; margin:0; pointer-events:none; }
.settings-period .segmented__item:has(input:checked) { background:#fff; color:var(--color-text-primary); box-shadow:0 2px 8px rgba(38,52,86,.12); }
.settings-period .segmented__item:has(input:focus-visible) { box-shadow:var(--shadow-focus); }
.settings-export .btn svg { flex:none; }
@media (max-width: 900px) {
  .settings-card__body .field { flex-wrap:wrap; gap:6px 16px; }
  .settings-card__body .field__label { width:100%; }
  .settings-help { margin-left:0; }
  .settings-export { flex-wrap:nowrap !important; }
  .settings-toggle { flex-wrap:nowrap !important; }
  .settings-card__head, .settings-card__body, .settings-card__foot { padding-left:16px; padding-right:16px; }
}

/* Instellingen — chatbot look (33), u241: form left, live preview right (a drawing of the widget, not the widget). */
.settings-card__head--mid { border-top:1px solid rgba(31,48,90,.07); }
.settings-field--stack { flex-direction:column; align-items:stretch; gap:6px; }
.settings-row { display:flex; align-items:center; gap:16px; }
.settings-row--top { align-items:flex-start; }
.settings-row--top .field__label { padding-top:9px; }
.settings-field--stack .settings-help { margin-bottom:0; }
.settings-color { flex:1; min-width:0; display:flex; align-items:center; gap:10px; }
.settings-color__swatch { width:40px; height:36px; flex:none; padding:2px; border:1px solid rgba(31,48,90,.12); border-radius:10px; background:#fff; cursor:pointer; }
.settings-color .field__input.settings-color__hex { flex:0 0 120px; width:120px; min-width:0; font-variant-numeric:tabular-nums; }
.settings-color__note { font-size:13px; color:var(--color-text-meta); }
.settings-editor { flex:1; min-width:0; border:1px solid rgba(31,48,90,.12); border-radius:10px; background:#fff; overflow:hidden; }
.settings-editor:focus-within { border-color:var(--color-primary); box-shadow:var(--shadow-focus); }
.settings-editor__input { display:block; width:100%; box-sizing:border-box; min-height:96px; padding:11px 14px; border:0; outline:0; resize:vertical; font:400 14.5px/1.55 var(--font-family-base); color:var(--color-text-primary); background:transparent; }
}
@media (max-width: 900px) {
  .settings-row { flex-direction:column; align-items:stretch; gap:6px; }
  .settings-row .field__input { flex:none; width:100%; }
  .settings-row--top .field__label { padding-top:0; }
  .settings-color { flex-wrap:wrap; }
}

/* u242: WYSIWYG greeting, logo, hidden pages. */
.cb-editor { min-height:96px; white-space:pre-wrap; overflow-wrap:anywhere; }
.cb-editor.is-empty::before { content:attr(data-placeholder); color:var(--color-text-faint); pointer-events:none; }
.cb-editor a { color:var(--color-primary); text-decoration:underline; }
.cb-fs2 { font-size:1.2em; } .cb-fs3 { font-size:1.45em; }
.cb-size { font-weight:600; }
.cb-size--1 { font-size:12px; } .cb-size--2 { font-size:14.5px; } .cb-size--3 { font-size:17px; }
.settings-textarea { height:auto; min-height:84px; padding:9px 14px; resize:vertical; font:400 14px/1.5 var(--font-family-base); }
.settings-logo { gap:18px; }
.settings-logo__preview { width:190px; height:64px; flex:none; border-radius:10px; background:linear-gradient(160deg,#1C2A4A,#23386B); display:flex; align-items:center; justify-content:center; padding:10px 14px; box-sizing:border-box; color:rgba(255,255,255,.6); font-size:12.5px; }
.settings-logo__preview img { max-height:24px; max-width:100px; width:auto; object-fit:contain; display:block; }
.settings-logo__actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.settings-logo__actions form { margin:0; }
.settings-logo__pick { position:relative; cursor:pointer; }
.settings-logo__pick input { position:absolute; inset:0; opacity:0; cursor:pointer; }
.settings-help--flush { margin-left:0; }
.settings-examples { display:flex; flex-direction:column; gap:3px; }
.settings-examples code { font:600 12.5px ui-monospace, SFMono-Regular, Menlo, monospace; color:var(--color-text-primary); background:rgba(31,48,90,.06); padding:1px 6px; border-radius:5px; margin-right:4px; }

/* Producten (29) + product page (30), u239. Sizes design +1px. */
.products { display:flex; flex-direction:column; gap:14px; }
.products-list .knowledge-list__head { padding:13px 20px; }
.products-list .panel__foot { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.table--products .table__head, .table--products .table__row { grid-template-columns:28px minmax(0,1fr) 150px 100px 170px 20px; column-gap:14px; } /* u240: no Kennis column; Voorraad wider */
.table--products .table__row { min-height:48px; }
.table--products .table__row--variant { min-height:38px; }
.products-thumb { width:26px; height:26px; border-radius:8px; background:rgba(31,48,90,.05); display:flex; align-items:center; justify-content:center; overflow:hidden; color:var(--color-text-faint); }
.products-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.products-row--variant .products-thumb { background:none; }
.products-name { min-width:0; display:flex; align-items:center; gap:9px; }
.products-name__title { min-width:0; font-size:14px; font-weight:600; color:var(--color-text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.products-row--variant .products-name__title { font-weight:500; color:var(--color-text-secondary); }
.products-name__branch { width:14px; height:1px; flex:none; background:rgba(31,48,90,.16); }
.products-name__count { flex:none; padding:1px 7px; border-radius:6px; background:rgba(31,48,90,.05); color:var(--color-text-secondary); font:600 12.5px var(--font-family-base); }
.products-sku { font-size:12.5px; color:var(--color-text-meta); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.products-price { font:600 13.5px var(--font-family-base); color:var(--color-text-primary); font-variant-numeric:tabular-nums; }
.products-stock { font:600 13px var(--font-family-base); color:var(--color-text-secondary); font-variant-numeric:tabular-nums; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.products-stock--out { color:var(--color-danger); }
.products-k--compleet { background:var(--color-positive-bg); color:var(--color-positive); }
.products-k--dun { background:var(--color-warning-bg); color:var(--color-warning); }
.products-k--niets { background:var(--color-danger-bg); color:var(--color-danger); }
@media (max-width: 1100px) {
  .table--products .table__head, .table--products .table__row { grid-template-columns:28px minmax(0,1fr) 100px 150px 20px; }
  .table--products .products-sku, .table--products .table__head > :nth-child(3) { display:none; }
}
@media (max-width: 900px) {
  .products-list { margin:0 -16px; border-radius:0; border-left:0; border-right:0; }
  .products-list .knowledge-list__head { padding:12px 16px; }
  .table--products .table__head { display:none; }
  .table--products .table__row { grid-template-columns:28px minmax(0,1fr) auto; grid-template-areas:"thumb name price" "thumb stock stock"; row-gap:3px; padding:10px 16px; min-height:0; }
  .table--products .table__row--variant { grid-template-areas:"thumb name price" "thumb stock stock"; }
  .table--products .products-thumb { grid-area:thumb; align-self:start; }
  .table--products .products-name { grid-area:name; }
  .table--products .products-price { grid-area:price; justify-self:end; }
  .table--products .products-stock { grid-area:stock; font-size:12.5px; }
  .table--products .cell-chevron { display:none; }
}

.product-head { align-items:flex-start; }
.product-head__row { display:flex; align-items:center; gap:16px; margin-top:6px; }
.product-head__img { width:56px; height:56px; flex:none; border-radius:10px; overflow:hidden; background:rgba(31,48,90,.05); }
.product-head__img img { width:100%; height:100%; object-fit:cover; display:block; }
.product-head__text { min-width:0; }
.product-head__meta { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-top:10px; }
.product-head__sku { font-size:13px; color:var(--color-text-meta); }
.product-head__price { font-size:14px; font-weight:600; color:var(--color-text-primary); }
.product-head__stock { font-size:13.5px; font-weight:600; color:var(--color-text-secondary); }
.product-cols { display:flex; gap:20px; align-items:flex-start; }
.product-main { flex:1; min-width:0; display:flex; flex-direction:column; }
.product-side { width:392px; flex:none; display:flex; flex-direction:column; }
.product-section { display:flex; align-items:baseline; gap:12px; padding:0 6px 12px; }
.product-glass + .product-section { margin-top:22px; }
.product-section__title { font-size:17px; font-weight:600; letter-spacing:-.02em; color:var(--color-text-primary); }
.product-section__sub { font-size:13.5px; color:var(--color-text-meta); }
.product-section__rule { flex:1; height:1px; align-self:center; background:rgba(31,48,90,.09); }
.product-glass { border-radius:14px; background:rgba(255,255,255,.72); backdrop-filter:blur(26px); -webkit-backdrop-filter:blur(26px); border:1px solid rgba(255,255,255,.85); box-shadow:0 10px 34px rgba(38,52,86,.10); }
.product-knowledge { padding:16px 18px; display:flex; flex-direction:column; gap:10px; }
.product-kcard { display:block; background:#fff; border:1px solid rgba(31,48,90,.08); border-radius:10px; padding:15px 17px; text-decoration:none; color:inherit; transition:border-color .15s; }
.product-kcard:hover { border-color:var(--color-primary); }
.product-kcard__head { display:flex; align-items:baseline; gap:10px; }
.product-kcard__title { flex:1; min-width:0; font-size:15.5px; font-weight:600; letter-spacing:-.01em; color:var(--color-text-primary); }
.product-kcard__src { flex:none; font:600 12.5px var(--font-family-base); color:var(--color-text-meta); }
.product-kcard__body { display:block; margin-top:7px; font-size:14px; font-weight:500; line-height:1.65; color:var(--color-text-secondary); }
.product-empty { margin:0; padding:4px 0; font-size:14px; line-height:1.55; color:var(--color-text-meta); }
.product-knowledge .btn svg { flex:none; }
.product-questions { padding:6px 20px 8px; }
.product-q { display:flex; align-items:center; gap:14px; min-height:46px; padding:6px 0; border-bottom:1px solid rgba(31,48,90,.06); }
.product-q:last-child { border-bottom:0; }
.product-q__text { flex:1; min-width:0; font-size:14.5px; font-weight:600; color:var(--color-text-row); }
.product-q__count { font-size:12.5px; color:var(--color-text-meta); }
.product-q__none { display:inline-flex; align-items:center; gap:6px; font:600 12.5px var(--font-family-base); color:var(--color-danger); white-space:nowrap; }
.product-q__dot { width:6px; height:6px; border-radius:50%; background:var(--color-danger); flex:none; }
.product-questions .product-empty { padding:10px 0; }
.product-vars { overflow:hidden; }
.product-vars__head, .product-vars__row { display:grid; grid-template-columns:minmax(0,1fr) 80px 104px; gap:8px; align-items:center; padding:0 18px; } /* u240: room for "Uitverkocht" / "24 op voorraad" */
.product-vars__head { padding-top:9px; padding-bottom:9px; background:rgba(31,48,90,.03); font:600 12.5px var(--font-family-base); color:var(--color-text-meta); }
.product-vars__head > :nth-child(n+2) { text-align:right; }
.product-vars__row { min-height:48px; border-top:1px solid rgba(31,48,90,.06); }
.product-vars__name { min-width:0; display:flex; flex-direction:column; font-size:14px; font-weight:600; color:var(--color-text-primary); }
.product-vars__sku { font-size:12.5px; font-weight:400; color:var(--color-text-faint); margin-top:2px; }
.product-vars__price { font-size:13.5px; font-weight:600; color:var(--color-text-primary); text-align:right; }
.product-vars__stock { display:inline-flex; align-items:center; justify-content:flex-end; gap:5px; font:600 13px var(--font-family-base); color:var(--color-text-row); text-align:right; }
.product-fields { padding:6px 20px 10px; }
.product-field { display:flex; align-items:center; justify-content:space-between; gap:14px; min-height:42px; border-bottom:1px solid rgba(31,48,90,.06); font-size:13.5px; color:var(--color-text-meta); }
.product-field > :last-child { font-weight:600; color:var(--color-text-primary); text-align:right; }
.product-note { margin:10px 0 0; font-size:12.5px; line-height:1.5; color:var(--color-text-meta); }
@media (max-width: 900px) {
  .table--products .products-name__title { white-space:normal; }
  .table--products .products-name { flex-wrap:wrap; row-gap:3px; }
  .product-section { flex-wrap:wrap; row-gap:2px; }
  .product-section__rule { display:none; }
  .product-q { flex-wrap:wrap; row-gap:6px; padding:10px 0; }
  .product-q__text { flex:1 1 100%; }
  .product-q__none { margin-right:auto; }
  .product-knowledge, .product-questions, .product-fields { padding-left:14px; padding-right:14px; }
  .product-kcard { padding:13px 14px; }
  .product-vars__head, .product-vars__row { padding:0 14px; }
}
@media (max-width: 1000px) {
  .product-cols { flex-direction:column; }
  .product-side { width:100%; margin-top:22px; }
  .product-head__row { align-items:flex-start; }
}

/* Video's (28, u236). Cards = the design's glass card; sizes design +1px (UI_V7_PLAN 2.25). */
.vd-crumb-sep { color:var(--color-text-faint); margin:0 2px; }
.videos { display:flex; flex-direction:column; gap:14px; }
.vd-grid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:16px; }
.vd-card { display:flex; flex-direction:column; min-width:0; overflow:hidden; border-radius:14px; background:rgba(255,255,255,.72); backdrop-filter:blur(26px); -webkit-backdrop-filter:blur(26px); border:1px solid rgba(255,255,255,.85); box-shadow:0 10px 34px rgba(38,52,86,.10); }
.vd-thumb { position:relative; display:block; height:150px; flex:none; background:#20252E center/cover no-repeat; }
.vd-thumb__play { position:absolute; left:50%; top:50%; width:42px; height:42px; margin:-21px 0 0 -21px; border-radius:50%; background:rgba(255,255,255,.16); display:flex; align-items:center; justify-content:center; transition:background .15s; }
.vd-thumb:hover .vd-thumb__play { background:rgba(255,255,255,.28); }
.vd-thumb__badge { position:absolute; right:10px; bottom:10px; padding:3px 7px; border-radius:8px; background:rgba(0,0,0,.6); color:#fff; font:600 12.5px var(--font-family-base); }
.vd-card__body { flex:1; display:flex; flex-direction:column; padding:14px 16px 15px; min-width:0; }
.vd-card__title { font-size:15px; font-weight:600; letter-spacing:-.012em; color:var(--color-text-primary); overflow-wrap:anywhere; }
.vd-card__meta { margin-top:3px; font-size:12.5px; color:var(--color-text-meta); }
.vd-label { display:flex; align-items:center; gap:8px; margin:11px 0 6px; font:600 12.5px var(--font-family-base); color:var(--color-text-meta); }
.vd-label__rule { flex:1; height:1px; background:rgba(31,48,90,.07); }
.vd-how { display:inline-flex; align-items:center; gap:5px; font:600 12.5px var(--font-family-base); color:#127A52; }
.vd-how__dot { width:6px; height:6px; border-radius:50%; background:#127A52; }
.vd-how--manual { color:var(--color-text-meta); }
.vd-how--bad { color:var(--color-danger); }
.vd-chips { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.vd-chip { display:inline-flex; align-items:center; gap:6px; height:26px; padding:0 4px 0 10px; border-radius:8px; background:rgba(31,48,90,.06); color:var(--color-text-row); font:600 12.5px var(--font-family-base); max-width:100%; }
.vd-chip form { margin:0; display:flex; }
.vd-chip__x { width:18px; height:18px; padding:0; border:0; border-radius:5px; background:none; color:#A6ACB8; font:600 15px/1 var(--font-family-base); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; }
.vd-chip__x:hover { background:rgba(31,48,90,.08); color:var(--color-text-primary); }
.vd-add { display:inline-flex; align-items:center; height:30px; padding:0 10px; box-sizing:border-box; border-radius:8px; border:1px dashed rgba(31,48,90,.2); color:var(--color-text-secondary); font:600 13.5px var(--font-family-base); text-decoration:none; white-space:nowrap; }
.vd-add:hover { border-color:var(--color-primary); color:var(--color-primary); }
.vd-protected { margin:8px 0 0; padding:8px 10px; border-radius:8px; background:var(--color-surface-muted, rgba(0,0,0,.04)); font-size:13px; line-height:1.45; color:var(--color-text-secondary); } /* u469 */
.vd-protected a { display:inline-block; margin-left:2px; font-weight:600; }
.vd-orphan { margin:0 0 8px; font-size:13px; font-weight:600; line-height:1.45; color:var(--color-warning); }
.vd-guides { margin-top:auto; padding-top:10px; display:flex; flex-direction:column; gap:6px; }
.vd-guides .vd-label { margin:0 0 2px; }
.vd-none { margin:0; font-size:12.5px; line-height:1.45; color:var(--color-text-meta); }
.vd-guide-list { display:flex; flex-direction:column; gap:5px; }
.vd-guide { display:flex; align-items:flex-start; gap:8px; padding:5px 5px 5px 9px; border-radius:10px; background:rgba(36,85,214,.06); }
.vd-guide__text { flex:1; min-width:0; font-size:12.5px; font-weight:500; line-height:1.45; color:var(--color-text-row); }
.vd-guide__text strong { font-weight:600; color:var(--color-text-primary); }
.vd-guide form { margin:0; display:flex; }
.vd-field .field__label--stacked { margin-top:8px; } /* u240 (Denis) */
.vd-rules { display:flex; flex-direction:column; gap:8px; }
.vd-add--button { margin-top:8px; background:none; cursor:pointer; }
.vd-optional { font-weight:500; color:var(--color-text-meta); }
.vd-modal-form { flex:1; min-height:0; display:flex; flex-direction:column; margin:0; }
.vd-help { margin:0; font-size:14px; line-height:1.55; color:var(--color-text-secondary); }
.vd-help--small { font-size:13px; color:var(--color-text-meta); }
.vd-field { flex-direction:column; align-items:stretch; gap:0; padding:0; }
.vd-textarea { height:auto; min-height:68px; padding:10px 14px; resize:vertical; font:400 14.5px/1.5 var(--font-family-base); }
.vd-seccards { display:flex; flex-direction:column; gap:8px; }
.vd-seccard { position:relative; display:flex; align-items:flex-start; gap:11px; padding:12px 14px; border:1px solid var(--color-line-light); border-radius:var(--radius-panel); background:#fff; cursor:pointer; }
.vd-seccard input { position:absolute; opacity:0; width:1px; height:1px; margin:0; pointer-events:none; }
.vd-seccard .knowledge-trash__box { margin-top:2px; flex:none; }
.vd-seccard input:checked + .knowledge-trash__box { background:var(--color-text-primary); border-color:var(--color-text-primary); }
.vd-seccard input:checked + .knowledge-trash__box svg { opacity:1; }
.vd-seccard input:focus-visible + .knowledge-trash__box { box-shadow:var(--shadow-focus); }
.vd-seccard:has(input:checked) { border-color:var(--color-primary); background:var(--color-start-active-bg); }
.vd-seccard__text { min-width:0; display:flex; flex-direction:column; gap:3px; }
.vd-seccard__h { font-size:14.5px; font-weight:600; color:var(--color-text-primary); }
.vd-seccard__p { font-size:13px; line-height:1.5; color:var(--color-text-meta); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
@media (max-width: 1200px) { .vd-grid { grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (max-width: 700px) { .vd-grid { grid-template-columns:1fr; } }

/* Kennisitem page (knowledge-detail, u235): no design screen — built from the modal's parts. */
.kd-crumb { display:inline-flex; align-items:center; gap:4px; color:var(--color-text-meta); text-decoration:none; font-weight:500; }
.kd-crumb:hover { color:var(--color-text-primary); }
.kd-meta { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:8px 0 0; font-size:13.5px; color:var(--color-text-meta); }
.kd { display:flex; flex-direction:column; gap:14px; }
.kd .page-row { align-items:flex-start; }
.kd-panel__body { padding:16px 22px 18px; }
.kd-content { font-size:15px; line-height:1.7; color:var(--color-text-row); white-space:pre-wrap; overflow-wrap:anywhere; }
.kd-count { font:600 12.5px var(--font-family-base); color:var(--color-text-meta); }
.kd-empty { margin:0; padding:16px 22px 18px; font-size:14px; color:var(--color-text-meta); }
.kd-versions { list-style:none; margin:0; padding:0; }
.kd-version { display:flex; flex-direction:column; gap:6px; padding:14px 22px; border-top:1px solid var(--color-row-line); }
.kd-version:first-child { border-top:0; }
.kd-version__head { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.kd-version__reason { font-size:14.5px; font-weight:600; color:var(--color-text-primary); }
.kd-version__when { font-size:13px; color:var(--color-text-meta); }
.kd-version__title { font-size:13px; color:var(--color-text-meta); }
.kd-version__text { font-size:13.5px; line-height:1.6; color:var(--color-text-secondary); white-space:pre-wrap; overflow-wrap:anywhere; max-height:120px; overflow-y:auto; }
.kd-version form { margin-top:4px; }
.kd-version .btn svg, .kd-trash .btn svg { flex:none; }
.kd-scope { display:flex; flex-direction:column; gap:14px; }
.kd-scope__intro { margin:0; font-size:13.5px; line-height:1.55; color:var(--color-text-secondary); }
.kd-scope__form { display:flex; flex-direction:column; gap:12px; }
.kd-switch { display:flex; align-items:center; gap:12px; cursor:pointer; }
.kd-switch__text { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.kd-switch__label { font-size:14.5px; font-weight:600; color:var(--color-text-primary); }
.kd-switch__hint { font-size:13px; line-height:1.45; color:var(--color-text-meta); }
.switch-chip--bare { height:auto; padding:0; border:0; background:none; }
.kd-profiles { display:flex; flex-direction:column; gap:8px; padding:10px 12px; border-radius:var(--radius-panel); background:var(--color-band); }
.kd-profiles[hidden] { display:none; }
.kd-profiles__hint { font-size:13px; color:var(--color-text-meta); }
.kd-check { position:relative; display:flex; align-items:center; gap:9px; font-size:14px; color:var(--color-text-row); cursor:pointer; }
.kd-check input { position:absolute; opacity:0; width:1px; height:1px; margin:0; pointer-events:none; }
.kd-check input:checked + .knowledge-trash__box { background:var(--color-text-primary); border-color:var(--color-text-primary); }
.kd-check input:checked + .knowledge-trash__box svg { opacity:1; }
.kd-check input:focus-visible + .knowledge-trash__box { box-shadow:var(--shadow-focus); }
.kd-widen { margin:0; }
.kd-widen__text { flex:1 1 0; display:flex; flex-direction:column; gap:6px; min-width:0; }
.kd-widen__actions { display:flex; gap:8px; flex-wrap:wrap; margin-top:4px; }
.kd-trash { align-items:center; }
.kd-trash__text { flex:1; min-width:0; }
@media (max-width: 900px) {
  .kd .page-row { flex-direction:column; }
  .kd .page-col--fixed-330 { width:100%; }
  .kd-panel__body, .kd-version, .kd-empty { padding-left:16px; padding-right:16px; }
  .kd-trash { flex-wrap:wrap; }
  .kd-trash__text { flex:1 1 200px; }
}

/* Prullenbak (25, u234): a tick column, then the row's link with its own four columns (design 26px + 1fr 110 170 90).
   The checkbox is a real input inside a label; the box is drawn (checked = dark tile with a white check). */
.table--knowledge.table--trash .table__head, .table--knowledge.table--trash .table__row { grid-template-columns:26px minmax(0,1fr); }
.table--trash .table__row { cursor:default; }
.knowledge-trash__cols { display:grid; grid-template-columns:minmax(0,1fr) 110px 170px 100px; column-gap:16px; align-items:center; min-width:0; min-height:inherit; color:inherit; text-decoration:none; cursor:pointer; }
.table--trash .knowledge-row__title { color:var(--color-text-secondary); }
.table--trash .cell-text__sub { color:var(--color-text-faint); }
.table--trash .knowledge-row__aud { font-size:13.5px; color:var(--color-text-secondary); }
.knowledge-trash__check { position:relative; display:flex; align-items:center; justify-content:center; width:26px; height:40px; cursor:pointer; }
.knowledge-trash__check input { position:absolute; opacity:0; width:1px; height:1px; margin:0; pointer-events:none; }
.knowledge-trash__box { width:17px; height:17px; box-sizing:border-box; border-radius:5px; background:#fff; border:1.5px solid rgba(31,48,90,.22); display:flex; align-items:center; justify-content:center; color:#fff; }
.knowledge-trash__box svg { opacity:0; }
.knowledge-trash__check input:checked + .knowledge-trash__box { background:var(--color-text-primary); border-color:var(--color-text-primary); }
.knowledge-trash__check input:checked + .knowledge-trash__box svg { opacity:1; }
.knowledge-trash__check input:focus-visible + .knowledge-trash__box { box-shadow:var(--shadow-focus); }
.table--trash .table__row:has(input:checked) { background:var(--color-row-selected); }
.knowledge-row__when--soon { color:var(--color-danger); font-weight:600; }
.knowledge-trash { margin:0; }
.knowledge-trash__foot { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.knowledge-trash__foot .btn svg { flex:none; }
.knowledge-trash__foot .btn:disabled { opacity:.5; cursor:default; }
.knowledge-trash__spacer { flex:1; }

@media (max-width: 1100px) {
  .table--knowledge .table__head, .table--knowledge .table__row { grid-template-columns:minmax(0,1fr) 110px 130px 110px; }
  .knowledge-trash__cols { grid-template-columns:minmax(0,1fr) 100px 130px 90px; }
}
@media (max-width: 900px) {
  .knowledge .page-row > .page-col--fixed-330 { width:100%; }
  .knowledge-state { grid-template-columns:1fr; gap:14px; }
  .knowledge-questions__row { flex-wrap:wrap; gap:8px 12px; }
  .knowledge-questions__text { flex-basis:100%; }
  .knowledge-questions__foot { flex-wrap:wrap; }
  /* The list runs edge to edge on a phone, like the other lists (2.21). */
  .knowledge-list { margin:0 -16px; border-radius:0; border-left:0; border-right:0; }
  .knowledge-list__head { padding:12px 16px; }
  /* Three tabs in one row on a 390 phone: tighter items; scrolls sideways if a count makes it wider. */
  .knowledge-list__head .segmented { max-width:100%; }
  .knowledge-list__head .segmented__item { padding:0 9px; gap:5px; }
  .knowledge > .notice { flex-wrap:wrap; }
  .knowledge-notice__text { flex:1 1 220px; }
  .knowledge-list__head > .panel__spacer { display:none; }
  .knowledge-list__tools { flex:1 1 100%; min-width:0; }
  .knowledge-list__tools .search { flex:1; width:auto; min-width:0; }
  .knowledge-list__tools .search input { width:0; }
  .knowledge-list__tools .dd { flex:none; }
  .knowledge-list__head .segmented__item svg { display:none; }
  .knowledge-list__note { margin:0 16px 12px; flex-wrap:wrap; }
  .table--knowledge .table__head { display:none; }
  .table--knowledge .table__row { grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"text text" "kind when" "aud aud"; row-gap:6px; padding:12px 16px; }
  .table--knowledge .table__row > :nth-child(1) { grid-area:text; }
  .table--knowledge .table__row > :nth-child(2) { grid-area:kind; }
  .table--knowledge .table__row > :nth-child(3) { grid-area:aud; }
  .table--knowledge .table__row > :nth-child(4) { grid-area:when; }
  .knowledge-row__title { white-space:normal; }
  .table--knowledge.table--trash .table__row { grid-template-columns:26px minmax(0,1fr); grid-template-areas:none; padding:12px 16px 12px 10px; }
  .table--knowledge.table--trash .table__row > * { grid-area:auto; }
  .knowledge-trash__cols { grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"text text" "kind when" "aud aud"; row-gap:6px; }
  .knowledge-trash__cols > :nth-child(1) { grid-area:text; }
  .knowledge-trash__cols > :nth-child(2) { grid-area:kind; }
  .knowledge-trash__cols > :nth-child(3) { grid-area:aud; }
  .knowledge-trash__cols > :nth-child(4) { grid-area:when; }
  .knowledge-trash__check { align-self:start; margin-top:-8px; }
  .knowledge-trash__foot .pagination { width:100%; justify-content:flex-end; }
  .knowledge-list__foot { padding:12px 16px; }
  body:has(.modal--knowledge) .mobile-tabbar { display:none; }
  .knowledge-facts > div { flex-direction:column; gap:2px; }
  .knowledge-modal__warn { flex-wrap:wrap; }
  .knowledge-modal__warn form { margin-left:25px; }
  .knowledge-facts dt { width:auto; }
  .knowledge-section__body { padding-left:2px; }
}

/* u257 — "Melden" dialog (v7.js window.v7Report) + the small report button next to generated items. */
.report-modal { z-index:70; }
.report-modal__quote { margin:0 0 10px; font-weight:600; color:var(--color-text-primary); font-size:15px; line-height:1.4; }
.report-modal__intro { margin:0 0 14px; color:var(--color-text-secondary); font-size:14px; line-height:1.45; }
.report-modal__reasons { border:0; margin:0 0 14px; padding:0; display:flex; flex-direction:column; gap:8px; }
.report-modal__reasons legend { font:600 13.5px var(--font-family-base); color:var(--color-text-row); margin-bottom:8px; padding:0; }
.report-modal__reason { display:flex; align-items:flex-start; gap:9px; font-size:14px; color:var(--color-text-primary); cursor:pointer; line-height:1.35; }
.report-modal__reason input { margin:2px 0 0; accent-color:var(--color-primary); }
.report-modal__note { width:100%; box-sizing:border-box; font:inherit; font-size:14.5px; padding:9px 12px; border:1px solid var(--color-border-input); border-radius:var(--radius-panel); resize:vertical; min-height:60px; }
.report-modal__note:focus { border-color:var(--color-primary); box-shadow:var(--shadow-focus); outline:0; }
.report-modal__err { margin:10px 0 0; color:var(--color-danger); font-size:13.5px; }
.report-btn { border:0; background:none; padding:4px 6px; border-radius:6px; font:500 13px var(--font-family-base); color:var(--color-text-meta); cursor:pointer; display:inline-flex; align-items:center; gap:5px; }
.report-btn:hover { background:rgba(31,48,90,.06); color:var(--color-text-primary); }
@media (max-width: 900px) { .report-modal__note { font-size:16px; } }
/* u292 — "Melden" for a whole chat: the grey text button in the chat sheet's foot, the orange send button (Denis's
   choice — the only orange in the UI, so a report stands out from normal actions), and the read-only inline sheet on
   the superadmin Meldingen page. */
.sheet__report svg { flex:none; }
.sheet__exclude { margin:0; display:inline-flex; }
/* u384: the statistics toggle — icon button like the others; a diagonal line = this chat is not counted; tooltip on hover/focus */
.sheet__stats { position:relative; color:var(--color-text-primary); }
.sheet__stats.is-excluded { color:var(--color-danger); }
.sheet__stats.is-excluded::after { content:""; position:absolute; left:50%; top:50%; width:24px; height:2px; margin:-1px 0 0 -12px; background:currentColor; border-radius:2px; transform:rotate(-45deg); box-shadow:0 0 0 1.5px #fff; }
/* u407: "Verwijderen" in the chat sheet — superadmin only; the button says so in a tiny second line */
.sheet__delete-form { display:flex; margin:0; }
.sheet__delete { flex-direction:column; gap:0; line-height:1; color:var(--color-danger); }
.sheet__delete-label { font-size:13.5px; line-height:1.15; }
.sheet__delete-note { font-size:8.5px; font-weight:600; line-height:1.1; opacity:.8; }
/* u400: Chats list — "not counted in the statistics" marker next to a row's tags (dark grey icon + line) */
.stats-off { position:relative; display:inline-flex; align-items:center; justify-content:center; width:var(--tag-height); height:var(--tag-height); color:var(--color-text-secondary); }
.stats-off::after { content:""; position:absolute; left:50%; top:50%; width:19px; height:1.75px; margin:0 0 0 -9.5px; background:currentColor; border-radius:2px; transform:rotate(-45deg); }
.sheet__stats .sheet__stats-tip { left:auto; right:-6px; transform:none; }
.sheet__stats .sheet__stats-tip::after { left:auto; right:16px; margin-left:0; }
@media (hover: hover) { .sheet__stats:hover .sheet__stats-tip { display:block; } }
.sheet__stats:focus-visible .sheet__stats-tip { display:block; }
.report-modal__note--chat { min-height:110px; }
.btn--report { background:#E8590C; color:#fff; padding:0 21px; }
.btn--report:not(:disabled):hover { background:#C94A06; }
.btn--report:disabled { opacity:.45; cursor:default; }
.sheet--inline { border:1px solid var(--color-border); border-radius:var(--radius-panel); overflow:hidden; background:#fff; }
.sheet--inline .sheet__scroll { overflow:visible; padding-bottom:14px; }
/* u258: a short confirmation after an action (v7.js window.v7Toast) — first user: "Melden". */
.v7-toast { position:fixed; left:50%; bottom:calc(28px + env(safe-area-inset-bottom, 0px)); transform:translateX(-50%); z-index:80; max-width:calc(100% - 32px); box-sizing:border-box; padding:11px 16px; border-radius:var(--radius-control); background:var(--color-text-primary); color:#fff; font:500 14px/1.4 var(--font-family-base); box-shadow:0 10px 30px rgba(20,26,44,.28); transition:opacity .4s; }
.v7-toast.is-out { opacity:0; }
@media (max-width: 900px) { .v7-toast { bottom:calc(92px + env(safe-area-inset-bottom, 0px)); } }
/* u258 (Denis): the training bot's closing "Bron: …" line (training.js mdInline). */
.tc-cite { opacity:.7; font-style:italic; font-size:14px; }

/* ===== u264/u265 — Statistieken (design 31/31b; sizes = design +1px): the bot is built like Trainen (tv-* hero,
   composer, foot) — no card, no header; "Opgevallen" is the right column; one wide card with rows below. ===== */
.sb-page { display:flex; flex-direction:column; gap:22px; }
.sb-body { height:calc(100vh - 170px); min-height:560px; }
.sb-msgs { flex:1; min-height:0; overflow-y:auto; display:flex; flex-direction:column; gap:18px; padding:4px 4px 12px; scrollbar-width:thin; scrollbar-color:rgba(31,48,90,.18) transparent; }
.sb-msgs .tv-hero[hidden] { display:none; }
.sb-compose { flex-direction:row; align-items:flex-end; gap:12px; padding:12px 12px 12px 16px; }
.sb-compose textarea { min-height:24px; max-height:140px; padding:7px 0; font-size:15.5px; } /* u302: same as the messages */
.sb-msg { font-size:15.5px; line-height:1.6; /* u302: was 15px */ color:var(--color-text-primary); max-width:100%; }
.sb-msg p { margin:0 0 8px; }
.sb-msg--admin { align-self:flex-end; max-width:70%; background:var(--color-primary); color:#fff; border-radius:10px 10px 2px 10px; padding:11px 15px; font-size:15.5px; font-weight:400; } /* u324: 400 like the training bot's own bubble (was 500) */ /* u302: was 14.5px */
.sb-msg--bot { align-self:stretch; max-width:760px; }
.sb-muted { color:var(--color-text-meta); }
.sb-dots { display:inline-flex; gap:4px; vertical-align:middle; margin-right:10px; } /* u267: room before the text */
/* u603: the dots move like the trainingbot's (the same wave), not only blink */
.sb-dots span { width:6px; height:6px; border-radius:50%; background:var(--color-primary); animation:tc-wave 1.2s infinite ease-in-out; }
.sb-dots span:nth-child(2) { animation-delay:.15s; } .sb-dots span:nth-child(3) { animation-delay:.3s; }
@keyframes sbDot { 50% { opacity:1; } }
/* Answer card (design: white, #DFE3EA border, 10px radius). */
.sb-block { background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-panel); margin:12px 0 0; overflow:hidden; max-width:600px; box-shadow:0 1px 2px rgba(31,48,90,.05); } /* u266/u267: compact */
.sb-block__head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:12px 16px 0; }
.sb-block__title { font:600 14px var(--font-family-base); color:var(--color-text-primary); }
.sb-block__period { margin-left:auto; font-size:13.5px; color:var(--color-text-meta); font-variant-numeric:tabular-nums; }
.sb-block__num { font-size:22px; font-weight:600; letter-spacing:-.03em; padding:2px 16px 0; font-variant-numeric:tabular-nums; display:flex; align-items:center; gap:10px; }
.sb-block__body { padding:0 16px 12px; }
.sb-block__note { margin:0; padding:8px 16px; border-top:1px solid var(--color-row-line); font-size:13.5px; color:var(--color-text-meta); }
/* u302: "X chats … zitten niet in deze cijfers" gets an (i) with the why + when (sb-info = CSS tooltip; NOT .sb-tip, that is the chart tooltip, also on tap/focus). */
.sb-info { position:relative; display:inline-flex; vertical-align:-2px; margin-left:5px; width:16px; height:16px; border-radius:50%; border:1px solid currentColor; font:700 10.5px/14px var(--font-family-base); justify-content:center; cursor:help; color:var(--color-text-meta); }
.sb-info__box { display:none; position:absolute; left:50%; bottom:calc(100% + 8px); transform:translateX(-50%); width:300px; max-width:80vw; padding:10px 12px; border-radius:10px; background:var(--color-text-primary); color:#fff; font:400 13.5px/1.45 var(--font-family-base); text-align:left; z-index:30; box-shadow:0 10px 30px rgba(20,26,44,.25); white-space:normal; }
.sb-info:hover .sb-info__box, .sb-info:focus .sb-info__box, .sb-info:focus-within .sb-info__box { display:block; }
/* u426: opens DOWNWARD (for an (i) near the top of a page, e.g. the Chats top bar) and starts at the icon's left edge so it stays on screen */
.sb-info--down { margin-left:0; }
.sb-info--down .sb-info__box { bottom:auto; top:calc(100% + 8px); left:-8px; right:auto; transform:none; }
/* .sb-block clips (overflow:hidden for its rounded corners) — let the tooltip out while it is open. */
.sb-block:has(.sb-info:hover), .sb-block:has(.sb-info:focus), .sb-block:has(.sb-info:focus-within) { overflow:visible; }
@media (max-width: 900px) { .sb-info__box { left:auto; right:-8px; transform:none; } .sb-info--down .sb-info__box { left:-8px; right:auto; max-width:calc(100vw - 48px); } }
/* u440: on a phone the Chats top bar has two (i)'s, the second far from the left edge — a 300px box hanging from that icon ran off the
   screen. There the box hangs from the BAR instead: the full width of the bar, just under the icon that was tapped. */
@media (max-width: 900px) { .kpi-strip { position:relative; } .kpi-strip .sb-info--down { position:static; } .kpi-strip .sb-info--down .sb-info__box { left:12px; right:12px; top:auto; width:auto; max-width:none; margin-top:24px; } }
/* u302 (Denis): on a phone both bots use 16px — answers, the admin's own bubble and the composer alike. */
@media (max-width: 900px) { .sb-msg, .sb-msg--admin, .sb-compose textarea { font-size:16px; } }
/* u505 (Denis): the line next to the three dots while the bot works on an answer — 1px smaller than a message on a phone */
@media (max-width: 900px) { .sb-thinking { font-size:15px; } }
.sb-pill { display:inline-flex; align-items:center; height:22px; padding:0 8px; border-radius:5px; background:var(--color-neutral-bg); color:var(--color-neutral); font:600 12.5px var(--font-family-base); white-space:nowrap; letter-spacing:0; }
.sb-pill--up { background:var(--color-positive-bg); color:var(--color-positive); }
.sb-pill--down { background:var(--color-danger-bg); color:var(--color-danger); }
.sb-pill--warn { background:var(--color-warning-bg); color:var(--color-warning); }
.sb-svg { display:block; width:100%; height:auto; max-height:150px; overflow:visible; }
.sb-svg .sb-base { stroke:rgba(31,48,90,.12); stroke-width:1; }
.sb-svg .sb-val.is-peak { fill:var(--color-primary); }
.sb-svg .sb-ax { font:400 12px var(--font-family-base); fill:var(--color-text-meta); } /* u270: 12px real (charts drawn at real width) */
.sb-svg .sb-val { font:600 12px var(--font-family-base); fill:var(--color-text-secondary); }
.sb-hbars { display:flex; flex-direction:column; }
.sb-hbar { display:grid; grid-template-columns:minmax(0,42%) minmax(0,1fr) auto; gap:12px; align-items:center; padding:7px 0; border-top:1px solid var(--color-row-line); }
.sb-hbar:first-child { border-top:0; }
.sb-hbar__label { font-size:14px; font-weight:500; color:var(--color-text-primary); line-height:1.35; }
.sb-hbar__ex { display:block; font-size:13.5px; font-weight:400; color:var(--color-text-meta); font-style:italic; margin-top:2px; }
.sb-hbar__track { height:8px; background:rgba(31,48,90,.06); border-radius:4px; overflow:hidden; }
.sb-hbar__fill { display:block; height:100%; border-radius:4px; }
.sb-hbar__fill--1 { background:var(--gradient-bar-1); } .sb-hbar__fill--2 { background:var(--gradient-bar-2); } .sb-hbar__fill--3 { background:var(--gradient-bar-3); } .sb-hbar__fill--4 { background:var(--gradient-bar-4); } .sb-hbar__fill--5 { background:var(--gradient-bar-5); }
.sb-hbar__val { font:600 14px var(--font-family-base); font-variant-numeric:tabular-nums; text-align:right; white-space:nowrap; }
.sb-hbar__n { display:block; font-weight:400; font-size:12.5px; color:var(--color-text-meta); }
.sb-donut { display:flex; align-items:center; gap:22px; flex-wrap:wrap; }
.sb-legend { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; font-size:14px; }
.sb-legend li { display:flex; align-items:center; gap:8px; }
.sb-legend strong { margin-left:10px; font-weight:600; font-variant-numeric:tabular-nums; }
.sb-dot { width:10px; height:10px; border-radius:3px; flex:none; }
.sb-table-wrap { overflow-x:auto; }
.sb-table { width:100%; border-collapse:collapse; font-size:14.5px; }
.sb-table td { padding:9px 8px; border-top:1px solid var(--color-row-line); vertical-align:top; }
.sb-table tr:first-child td { border-top:0; }
.sb-num { text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.sb-chips { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
/* u266 (Denis): lighter follow-up chips — almost white, a soft blue edge. */
.sb-chip { border:1px solid rgba(36,85,214,.2); background:#F7F9FE; border-radius:var(--radius-panel); padding:7px 12px; font:500 14px var(--font-family-base); color:var(--color-text-primary); cursor:pointer; text-align:left; }
.sb-chip:hover { background:#EFF3FD; border-color:rgba(36,85,214,.32); }
.sb-action { margin-top:12px; text-decoration:none; }
/* Right column: "Opgevallen" — u268 (Denis): items separated by lines (no tiles — that look exists nowhere else in
   Dilot); the figure keeps its colour (green / amber / blue); the icon is the SAME as the rows below (.sb-row__icon). */
.sb-side { align-self:flex-start; }
.sb-ins-card { flex:none; padding:18px 22px 8px; }
.sb-ins-card__title { font:600 16px var(--font-family-base); color:var(--color-text-primary); }
.sb-ins-card__sub { font-size:13.5px; color:var(--color-text-meta); margin-top:4px; padding-bottom:6px; }
.sb-ins-card__none { font-size:14.5px; color:var(--color-text-meta); margin:12px 0; }
.sb-ins { display:flex; gap:12px; align-items:flex-start; padding:14px 0; border-top:1px solid var(--color-line-glass); text-decoration:none; color:inherit; }
.sb-ins-card__sub + .sb-ins { border-top:0; }
a.sb-ins:hover .sb-ins__title { color:var(--color-primary); }
.sb-ins__icon { width:30px; height:30px; flex:none; border-radius:8px; background:rgba(36,85,214,.1); color:var(--color-primary); display:flex; align-items:center; justify-content:center; }
.sb-ins__txt { display:flex; flex-direction:column; gap:2px; min-width:0; }
.sb-ins__big { font-size:21px; font-weight:600; letter-spacing:-.03em; line-height:1.15; font-variant-numeric:tabular-nums; color:var(--color-text-primary); }
.sb-ins__title { font:600 14.5px var(--font-family-base); color:var(--color-text-primary); }
.sb-ins__sub { font-size:13px; color:var(--color-text-meta); line-height:1.4; }
.sb-ins--up .sb-ins__big { color:var(--color-positive); }
.sb-ins--warn .sb-ins__big { color:var(--color-warning); }
.sb-ins--info .sb-ins__big { color:var(--color-primary); }
/* One wide card with rows (design 31, below the bot). */
/* u507 (Denis: "a clearer border between chatbot, conversions and own stats — it's real chaotic and messy with all these
   numbers, lines, texts floating"): every section is a CARD of its own — a grey head band that names it, its figures
   in the white body — with air between the cards. Was: one glass card with the sections as rows, split by hairlines. */
.sb-rows { padding:0; background:none; border:0; box-shadow:none; border-radius:0; backdrop-filter:none; -webkit-backdrop-filter:none; display:flex; flex-direction:column; gap:18px; }
.sb-row { display:flex; flex-direction:column; background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-card); box-shadow:0 1px 2px rgba(31,48,90,.05); overflow:hidden; }
.sb-row__head { display:flex; align-items:center; gap:11px; padding:12px 22px; background:var(--color-band); border-bottom:1px solid var(--color-border); }
.sb-row__head > span:nth-child(2) { display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 12px; min-width:0; }
.sb-row > :not(.sb-row__head) { padding:20px 22px 22px; }
.sb-row__icon { width:30px; height:30px; flex:none; border-radius:8px; background:rgba(36,85,214,.1); color:var(--color-primary); display:flex; align-items:center; justify-content:center; }
.sb-row__title { display:block; font:600 16px var(--font-family-base); color:var(--color-text-primary); }
.sb-row__sub { display:block; font-size:13.5px; color:var(--color-text-meta); }
.sb-row__body { flex:1; min-width:0; display:flex; flex-direction:column; gap:4px; }
.sb-row__body--soon { flex-direction:row; align-items:center; gap:12px; padding-top:6px; }
.sb-row__text { font-size:14.5px; color:var(--color-text-secondary); }
.sb-row__none { font-size:14.5px; color:var(--color-text-meta); margin:6px 0 0; }
.sb-row__foot { font-size:13.5px; color:var(--color-text-meta); margin:4px 0 0; }
.sb-kpis { flex:1; min-width:0; display:grid; grid-template-columns:repeat(auto-fit, minmax(150px,1fr)); gap:18px; } /* u280: room for a fifth tile */
.sb-kpi { display:flex; flex-direction:column; align-items:flex-start; gap:8px; }
.sb-kpi__l { font:500 14px var(--font-family-base); color:var(--color-text-secondary); white-space:nowrap; }
.sb-kpi__n { font-size:31px; font-weight:600; letter-spacing:-.035em; color:var(--color-text-primary); line-height:1; font-variant-numeric:tabular-nums; }
.sb-kpi__n--warn { color:var(--color-warning); }
.sb-topic .topic-bar__label { width:300px; } /* u546: Denis — long topic names */
.sb-topic__track { flex:1; min-width:0; }
@media (max-width: 1100px) { .sb-kpis { grid-template-columns:1fr 1fr; } }
@media (max-width: 900px) {
  .sb-body { flex-direction:column; height:auto; min-height:0; }
  .sb-body .tv-side { width:auto; margin-top:14px; padding-top:32px; } /* u424: 32px above (18px gap + 14) and below the line */
  .sb-msgs { min-height:320px; max-height:none; overflow:visible; }
  .sb-compose { flex-wrap:wrap; }
  .sb-compose__foot { flex-basis:100%; }
  .sb-compose textarea { font-size:16px; }
  .sb-page { padding-bottom:140px; } /* room above the docked composer */
  .sb-msg--admin { max-width:85%; }
  .sb-hbar { grid-template-columns:minmax(0,1fr) auto; } .sb-hbar__track { grid-column:1 / -1; grid-row:2; }
  .sb-row__head { padding:11px 16px; } .sb-row > :not(.sb-row__head) { padding:16px 16px 18px; }
  .sb-topic .topic-bar__label { width:120px; }
}
/* u265: report text in a statistics answer — '## ' headings and bullet lists (stats.js md). */
.sb-h { font:600 16px var(--font-family-base); color:var(--color-text-primary); margin:18px 0 8px; letter-spacing:-.01em; }
.sb-ul { margin:0 0 10px; padding-left:20px; } .sb-ul li { margin:0 0 6px; }
/* u266: donut a little smaller */
.sb-donut svg { width:112px; height:112px; flex:none; }
.sb-legend__l { flex:1; min-width:0; }
.sb-legend__n { font-size:12.5px; color:var(--color-text-meta); min-width:40px; text-align:right; }
.sb-legend li { justify-content:flex-start; }
/* u266: report — tickable parts + own topics */
.sb-opts { display:flex; flex-wrap:wrap; gap:8px; margin:6px 0 10px; }
.sb-opt { border:1px solid var(--color-border); background:#fff; border-radius:999px; padding:7px 13px 7px 11px; font:500 14px var(--font-family-base); color:var(--color-text-secondary); cursor:pointer; display:inline-flex; align-items:center; gap:7px; }
.sb-opt::before { content:""; width:14px; height:14px; border-radius:4px; border:1.5px solid #B8C1D1; box-sizing:border-box; flex:none; }
.sb-opt.is-on { border-color:rgba(36,85,214,.32); background:#F7F9FE; color:var(--color-text-primary); }
.sb-opt.is-on::before { background:var(--color-primary) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2 5 8.5 9.5 3.8' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/10px no-repeat; border-color:var(--color-primary); }
.sb-opt--own::before { display:none; }
.sb-opt:disabled { cursor:default; opacity:.7; }
.sb-opts__own { display:flex; gap:8px; max-width:520px; margin:0 0 12px; }
.sb-opts__own input { flex:1; min-width:0; height:34px; border:1px solid var(--color-border-input); border-radius:var(--radius-control); padding:0 11px; font:inherit; font-size:14px; background:#fff; }
.sb-opts__own input:focus { border-color:var(--color-primary); box-shadow:var(--shadow-focus); outline:0; }
/* u266: period filter for the numbers below (same choices + look as the superadmin analytics) */
.sb-range { display:flex; gap:6px; flex-wrap:wrap; margin:0 0 -8px; }
.sb-range__item { padding:7px 13px; border:1px solid var(--color-border); border-radius:999px; font:500 13.5px var(--font-family-base); color:var(--color-text-secondary); background:rgba(255,255,255,.7); text-decoration:none; }
.sb-range__item:hover { border-color:#B8C1D1; }
.sb-range__item.on { background:var(--color-primary); border-color:var(--color-primary); color:#fff; font-weight:600; }
.sb-range__custom { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:0 0 -8px; }
.sb-range__custom label { display:flex; align-items:center; gap:6px; font-size:13.5px; color:var(--color-text-secondary); }
.sb-range__custom input { border:1px solid var(--color-border-input); border-radius:var(--radius-control); padding:6px 8px; font:inherit; font-size:14px; background:#fff; }
/* u266: the printable report ("Opslaan als PDF") */
.sb-print { background:#fff; margin:0; font-family:var(--font-family-base); color:var(--color-text-primary); }
.sb-print__bar { position:sticky; top:0; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 24px; background:#F7F9FE; border-bottom:1px solid var(--color-border); font-size:14px; color:var(--color-text-secondary); }
.sb-print__page { max-width:760px; margin:0 auto; padding:32px 24px 48px; }
.sb-print__kicker { font:600 13px var(--font-family-base); color:var(--color-primary); text-transform:uppercase; letter-spacing:.06em; }
.sb-print__title { font-size:28px; font-weight:600; letter-spacing:-.03em; margin:6px 0 4px; }
.sb-print__meta { font-size:13.5px; color:var(--color-text-meta); margin-bottom:20px; }
.sb-print__body .sb-block { max-width:none; break-inside:avoid; page-break-inside:avoid; }
@media print {
  .sb-print__bar { display:none; }
  .sb-print__page { padding:0; max-width:none; }
  @page { margin:16mm 14mm; }
}
/* u267 — the figure's one-line meaning + a meter for a lone percentage */
.sb-block__desc { margin:2px 16px 8px; font-size:13px; line-height:1.45; color:var(--color-text-secondary); }
.sb-meter { height:8px; border-radius:4px; background:rgba(31,48,90,.07); overflow:hidden; margin:2px 0 4px; }
.sb-meter__fill { display:block; height:100%; border-radius:4px; background:linear-gradient(90deg,#1B3FA8 0%,#2E63E6 60%,#6E8FE8 100%); }
.sb-action svg { margin-right:2px; }
/* u267 (Denis): a clear line under the page header before the chat (Statistieken + Trainen), and a clear break between
   the chat and the numbers below. */
.tr-page .tv-body, .sb-body { border-top:1px solid var(--color-line-glass); padding-top:18px; box-sizing:border-box; }
.sb-fixed { margin-top:30px; padding-top:32px; border-top:1px solid var(--color-line-glass); display:flex; flex-direction:column; gap:14px; }
.sb-fixed .sb-range, .sb-fixed .sb-range__custom { margin:0; }
.sb-fixed.is-loading { opacity:.55; transition:opacity .15s; pointer-events:none; }
.sb-page { gap:0; }
/* u268 — Eigen statistieken: pinned widgets (two per row on wide screens), chart picker in the bot */
.sb-widgets { display:grid; grid-template-columns:repeat(auto-fill, minmax(min(340px, 100%), 1fr)); grid-auto-rows:4px; grid-auto-flow:row dense; column-gap:14px; row-gap:0; align-items:start; } /* u270: masonry (spans set by stats.js) */
.sb-widget--wide { grid-column:1 / -1; }
.sb-widgets:empty { display:none; }
.sb-widget { position:relative; margin:0; max-width:none; }
.sb-widget__remove { position:absolute; top:8px; right:8px; width:26px; height:26px; border:0; border-radius:6px; background:none; color:var(--color-text-meta); font-size:18px; line-height:1; cursor:pointer; }
.sb-widget__remove:hover { background:rgba(31,48,90,.06); color:var(--color-text-primary); }
.sb-widget .sb-block__period { margin-right:28px; background:#F2F6FD; padding:2px 9px; border-radius:6px; font-weight:300; } /* u271 (Denis) */
.sb-opts--radio .sb-opt::before { border-radius:50%; }
.sb-widget-preview .sb-block { margin-top:4px; }
/* u269 — widget preview spacing (Denis) */
.sb-widget-preview { margin-bottom:12px; }
/* u269 — chart hover: tooltip in Dilot style, guide line + dot on lines, highlighted bar / row / donut part */
.sb-tip { position:fixed; z-index:1000; pointer-events:none; opacity:0; transform:translateY(4px); transition:opacity .12s, transform .12s;
  background:#16213F; color:#fff; border-radius:10px; padding:8px 11px; box-shadow:0 10px 28px rgba(20,26,44,.28); font-family:var(--font-family-base); max-width:260px; }
.sb-tip.is-on { opacity:1; transform:none; }
.sb-tip__l { font-size:12.5px; color:rgba(255,255,255,.72); line-height:1.35; }
.sb-tip__v { font-size:15px; font-weight:600; letter-spacing:-.01em; margin-top:1px; display:flex; align-items:baseline; gap:6px; }
.sb-tip__n, .sb-tip__c { font-size:12px; font-weight:400; color:rgba(255,255,255,.6); }
.sb-tip__c { margin-top:2px; }
.sb-svg .sb-hit { fill:transparent; cursor:default; }
.sb-svg .sb-bar { transition:filter .12s; }
.sb-svg .sb-bar.is-hover { filter:brightness(.9) saturate(1.2); }
.sb-svg .sb-guide { stroke:#2455D6; stroke-width:1; stroke-dasharray:3 3; opacity:0; }
.sb-svg .sb-hdot { fill:#fff; stroke:#2455D6; stroke-width:2.4; opacity:0; }
.sb-svg.is-hover .sb-guide { opacity:.45; }
.sb-svg.is-hover .sb-hdot { opacity:1; }
.sb-hbar { border-radius:8px; transition:background .12s; }
.sb-hbar.is-hover { background:rgba(36,85,214,.05); }
.sb-arc { transition:stroke-width .12s; cursor:default; }
.sb-arc.is-hover { stroke-width:17; }
.sb-legend li.is-hover .sb-legend__l { color:var(--color-text-primary); font-weight:500; }
/* u269 — suggested widgets under "Eigen statistieken": subtle buttons + a chart picker */
.sb-suggs { position:relative; display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.sb-sugg { display:inline-flex; align-items:center; gap:6px; height:32px; padding:0 12px; border:1px dashed rgba(36,85,214,.35); border-radius:999px;
  background:rgba(36,85,214,.03); color:var(--color-primary); font:500 13.5px var(--font-family-base); cursor:pointer; transition:background .12s, border-color .12s; }
.sb-sugg:hover { background:rgba(36,85,214,.08); border-color:rgba(36,85,214,.55); }
.sb-pop { position:absolute; z-index:20; min-width:180px; background:#fff; border:1px solid var(--color-border); border-radius:12px; box-shadow:var(--shadow-glass); padding:6px; display:flex; flex-direction:column; }
.sb-pop__t { font-size:12px; color:var(--color-text-meta); padding:4px 8px 6px; }
.sb-pop__o { text-align:left; border:0; background:none; padding:8px 10px; border-radius:8px; font:500 14px var(--font-family-base); color:var(--color-text-primary); cursor:pointer; }
.sb-pop__o:hover { background:rgba(36,85,214,.07); color:var(--color-primary); }
/* u269 — the report as a document (chat + print page) */
.sb-rdoc { display:flex; flex-direction:column; gap:18px; }
.sb-msg--report { max-width:100%; }
.sb-rdoc__dear { font-size:15px; margin:0 0 6px; }
.sb-rdoc__h2 { font-size:19px; font-weight:600; letter-spacing:-.02em; margin:0 0 8px; color:var(--color-text-primary); }
.sb-rdoc__h3 { font-size:15px; font-weight:600; margin:16px 0 8px; }
.sb-rdoc__p { font-size:14.5px; line-height:1.6; margin:0 0 10px; color:var(--color-text-secondary); }
.sb-rdoc__note { font-size:12.5px; color:var(--color-text-meta); margin-top:10px; }
.sb-rkpis { display:grid; grid-template-columns:repeat(auto-fit, minmax(140px, 1fr)); gap:10px; margin:12px 0 4px; }
.sb-rkpi { border:1px solid var(--color-border); border-radius:12px; padding:12px 14px; background:#FAFBFE; }
.sb-rkpi__v { font-size:24px; font-weight:600; letter-spacing:-.03em; color:var(--color-primary); }
.sb-rkpi__c { font-size:12.5px; line-height:1.4; color:var(--color-text-secondary); margin-top:2px; }
.sb-rfind, .sb-rrecs { margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:8px; font-size:14.5px; line-height:1.55; color:var(--color-text-secondary); }
.sb-rfind strong, .sb-rrecs strong { display:block; color:var(--color-text-primary); }
.sb-rconc { margin-top:14px; border-left:3px solid var(--color-primary); background:rgba(36,85,214,.05); border-radius:0 10px 10px 0; padding:12px 14px; font-size:14.5px; line-height:1.55; }
.sb-rconc__l { display:block; font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--color-primary); margin-bottom:3px; }
.sb-rdoc__chapter { padding-top:16px; border-top:1px solid var(--color-line-glass); }
.sb-rfig { margin:10px 0 16px; break-inside:avoid; page-break-inside:avoid; }
.sb-rfig .sb-block { max-width:none; margin:0; }
.sb-rfig__cap { font-size:12.5px; line-height:1.45; color:var(--color-text-meta); margin-top:6px; }
/* print: cover page, chapters on their own rhythm, definitions table */
.sb-cover { min-height:calc(100vh - 140px); display:flex; flex-direction:column; justify-content:space-between; padding:24px 0 32px; margin-bottom:28px; border-bottom:1px solid var(--color-line-glass); }
.sb-cover__brand { font-weight:700; font-size:18px; letter-spacing:-.02em; color:var(--color-primary); }
.sb-cover__kicker { font:600 13px var(--font-family-base); text-transform:uppercase; letter-spacing:.08em; color:var(--color-primary); }
.sb-cover__title { font-size:44px; font-weight:600; letter-spacing:-.04em; margin:10px 0 6px; line-height:1.05; }
.sb-cover__site { font-size:18px; color:var(--color-text-secondary); }
.sb-cover__period { display:inline-block; margin-top:18px; padding:6px 12px; border-radius:999px; background:rgba(36,85,214,.07); color:var(--color-primary); font-size:14px; font-weight:500; }
.sb-cover__foot { font-size:14px; color:var(--color-text-secondary); display:flex; flex-direction:column; gap:3px; }
.sb-rdoc--print .sb-rdoc__h2 { font-size:22px; }
.sb-deftable { width:100%; border-collapse:collapse; font-size:13.5px; }
.sb-deftable th, .sb-deftable td { text-align:left; vertical-align:top; padding:8px 10px; border-bottom:1px solid var(--color-border); }
.sb-deftable th { font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--color-text-meta); }
.sb-deftable td:first-child { font-weight:600; width:32%; }
.sb-appendix { margin-top:22px; }
@media print {
  .sb-cover { min-height:250mm; border:0; margin:0; break-after:page; page-break-after:always; }
  .sb-rdoc__summary { break-after:page; page-break-after:always; }
  .sb-rdoc__chapter { border-top:0; }
  .sb-rdoc__h2 { break-after:avoid; page-break-after:avoid; }
  .sb-appendix { break-before:page; page-break-before:always; }
  .sb-rkpi, .sb-rconc { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
}
/* u269 — new users: statistics open after the first 15 chats; a popup that covers the page until then */
.sb-wait { z-index:80; }
.sb-wait__overlay { cursor:default; }
.sb-wait__body { display:flex; flex-direction:column; align-items:center; text-align:center; gap:10px; padding:28px 28px 22px; }
.sb-wait__icon { display:inline-flex; align-items:center; justify-content:center; width:48px; height:48px; border-radius:14px; background:rgba(36,85,214,.1); color:var(--color-primary); margin-bottom:4px; }
.sb-wait__text { font-size:14.5px; line-height:1.55; color:var(--color-text-secondary); margin:0 0 6px; }
.sb-wait__prog { width:100%; text-align:left; }
.sb-wait__label { font-size:13px; font-weight:500; color:var(--color-text-primary); margin-bottom:6px; }
.sb-wait__foot { justify-content:center; }
/* u271 — compact number: the meaning right next to it ("42  chats in deze periode") */
.sb-block__lbl { font-size:13.5px; font-weight:400; letter-spacing:0; color:var(--color-text-meta); margin-left:2px; }
.sb-block__num { flex-wrap:wrap; column-gap:8px; row-gap:2px; }
/* u271 — donut: a real legend table (column heads, a line per row, aligned share and count) */
.sb-donut { align-items:center; gap:20px 24px; padding-top:4px; }
.sb-dlegend { flex:1 1 240px; min-width:0; border-collapse:collapse; font-size:14px; }
.sb-dlegend th { font-size:12px; font-weight:500; color:var(--color-text-meta); text-align:left; padding:0 6px 6px; }
.sb-dlegend td { padding:7px 6px; border-top:1px solid var(--color-row-line); vertical-align:middle; }
.sb-dlegend .sb-num { text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.sb-dlegend th.sb-num { text-align:right; }
.sb-dlegend__l { display:flex; align-items:center; gap:9px; }
.sb-dlegend tr.is-zero { opacity:.45; }
.sb-dlegend tbody tr { transition:background .12s; }
.sb-dlegend tbody tr.is-hover { background:rgba(36,85,214,.05); }
/* u271 — pin a chat answer's chart to "Eigen statistieken" */
.sb-pin { display:inline-flex; align-items:center; gap:5px; height:26px; padding:0 10px; border:1px solid rgba(36,85,214,.25); border-radius:7px; background:#fff;
  color:var(--color-primary); font:500 12.5px var(--font-family-base); cursor:pointer; }
.sb-pin:hover { background:rgba(36,85,214,.06); }
.sb-pin.is-done { border-color:transparent; background:rgba(36,85,214,.06); cursor:default; }
.sb-block__head .sb-pin { order:3; }
/* u271 — "Meer detail" on a big topic (the deep-dive) */
.sb-topic__more { flex:none; width:118px; display:inline-flex; align-items:center; justify-content:flex-end; gap:5px; border:0; background:none;
  padding:4px 0; color:var(--color-primary); font:500 13.5px var(--font-family-base); cursor:pointer; white-space:nowrap; }
.sb-topic__more:hover { text-decoration:underline; }
.sb-topic__more--none { cursor:default; }
@media (max-width: 640px) { .sb-topic__more { width:auto; } .sb-topic__more--none { display:none; } }
.sb-donut { justify-content:center; }
.sb-block__period:empty { display:none; }
/* u272 (Denis) */
.sb-block__num { padding:2px 16px 4px; }
.sb-pin svg { flex:none; }
/* u274 — how a number was made */
.sb-basis { display:inline-flex; align-items:center; height:22px; padding:0 8px; border-radius:6px; font-size:12px; font-weight:500; white-space:nowrap; }
.sb-basis--est { background:rgba(139,92,246,.1); color:#6D3FD9; }
.sb-basis--part { background:rgba(214,138,36,.12); color:#9A5B0C; }
/* u275 (Denis) — the statistics bot's answers get the same blue square as Trainen's bot (desktop only) */
.sb-msg--bot { position:relative; padding-left:30px; box-sizing:border-box; }
.sb-msg--bot::before { content:""; position:absolute; left:0; top:5px; width:14px; height:14px; border-radius:3px; background:var(--color-primary); }
/* u275 (Denis) — "Opgevallen" never runs into the line below: at most the height of the chat area, scrolls inside */
.sb-side { max-height:100%; min-height:0; }
.sb-ins-card { padding-bottom:14px; }
/* u275c (Denis): the scroll lives INSIDE the card, with a slim Dilot scrollbar instead of the browser default */
.sb-side .sb-ins-card { flex:0 1 auto; min-height:0; max-height:100%; overflow-y:auto; overscroll-behavior:contain;
  scrollbar-width:thin; scrollbar-color:rgba(36,85,214,.22) transparent; }
.sb-side .sb-ins-card::-webkit-scrollbar { width:6px; }
.sb-side .sb-ins-card::-webkit-scrollbar-track { background:transparent; margin:14px 0; }
.sb-side .sb-ins-card::-webkit-scrollbar-thumb { background:rgba(36,85,214,.18); border-radius:999px; }
.sb-side .sb-ins-card:hover::-webkit-scrollbar-thumb { background:rgba(36,85,214,.34); }
@media (max-width: 900px) {
  .sb-msg--bot { padding-left:0; }
  .sb-msg--bot::before { display:none; }
  .sb-side, .sb-side .sb-ins-card { max-height:none; overflow:visible; }
}
/* u275e — a time/money total also per chat and per day, right under the number */
.sb-block__per { padding:0 16px 8px; margin-top:-2px; font-size:13.5px; color:var(--color-text-secondary); font-variant-numeric:tabular-nums; }
/* u275i (Denis) — statistics on phones: the send button stays on the right of the field (with the mic), one-line
   placeholder, the usage tooltip in the docked composer, and a topic list that is readable. */
.sb-compose .sb-mic { flex:none; align-self:flex-end; }
@media (max-width: 900px) {
  .sb-compose { flex-wrap:wrap; align-items:flex-end; }
  /* u276 (Denis): exactly like Trainen — the field the full width, then mic + the full "Vragen" button on the next line */
  .sb-compose textarea { flex:1 1 100%; min-width:0; width:100%; min-height:40px; }
  .sb-compose .sb-mic, .sb-compose #sbSend { order:2; flex:none; }
  .sb-compose .sb-mic { margin-left:auto; }
  .sb-compose #sbSend { padding:0 28px; }
  .sb-compose__foot { order:3; flex-basis:100%; }
  /* topics: label above its bar, the bar the full width, the number never hidden inside a tiny bar */
  .sb-topic { flex-wrap:wrap; row-gap:4px; padding:4px 0; } /* u276: a little more compact */
  .sb-topic .topic-bar__fill { height:22px; }
  .sb-topic .topic-bar__label { width:100%; white-space:normal; overflow:visible; text-overflow:clip; }
  .sb-topic__track { flex:1 1 auto; }
  .sb-topic .topic-bar__fill { min-width:44px; }
  .sb-topic__more { width:auto; }
}
/* u276 (Denis) — phones: the date of a card on its own line, fully left (it floated oddly on the right) */
@media (max-width: 900px) {
  .sb-block__head::after { content:""; flex-basis:100%; height:0; order:8; }
  .sb-block__head .sb-block__period, .sb-widget .sb-block__head .sb-block__period { order:9; margin-left:0; margin-right:0; }
  .sb-block__head { row-gap:6px; }
}

.kp { max-width:1100px; }
/* u304 — Koppelingen (design 37), sizes = design +1px. */
.kp-summary { margin:0 0 12px; font:500 15px var(--font-family-base); color:var(--color-text-row); }
.kp-alert { margin:0 0 16px; padding:11px 16px; border-radius:10px; background:#fdf1ef; border:1px solid #f1cfc9; color:#9d2f24; font:600 14px var(--font-family-base); }
.kp-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:16px; }
.kp-card { background:rgba(255,255,255,.72); backdrop-filter:blur(26px); -webkit-backdrop-filter:blur(26px); border:1px solid rgba(255,255,255,.85); box-shadow:0 10px 34px rgba(38,52,86,.10); border-radius:14px; display:flex; flex-direction:column; overflow:hidden; }
.kp-card__head { display:flex; align-items:center; gap:10px; padding:14px 20px; border-bottom:1px solid rgba(31,48,90,.07); }
.kp-card__title { flex:1; min-width:0; font:600 15px var(--font-family-base); color:var(--color-text-primary); letter-spacing:-.01em; }
.kp-state { display:inline-flex; align-items:center; gap:6px; font:600 12.5px var(--font-family-base); white-space:nowrap; }
.kp-state__dot { width:6px; height:6px; border-radius:50%; background:currentColor; }
.kp-state--ok { color:#127A52; } .kp-state--attention { color:#B4470A; } .kp-state--off { color:var(--color-text-meta); }
.kp-card__rows { flex:1; padding:4px 20px 12px; }
.kp-row { display:flex; align-items:baseline; justify-content:space-between; gap:14px; padding:10px 0; font-size:13.5px; color:var(--color-text-meta); }
.kp-row__l { flex:none; white-space:nowrap; }
.kp-row + .kp-row { border-top:1px solid rgba(31,48,90,.06); }
.kp-row__v { color:var(--color-text-primary); font-weight:600; text-align:right; overflow-wrap:anywhere; }
.kp-card__foot { display:flex; flex-wrap:wrap; align-items:flex-start; gap:8px; padding:12px 20px; border-top:1px solid rgba(31,48,90,.07); background:rgba(31,48,90,.02); }
.kp-rights { flex-basis:100%; } .kp-rights summary { list-style:none; display:inline-flex; cursor:pointer; } .kp-rights summary::-webkit-details-marker { display:none; }
.kp-rights p { margin:10px 0 0; font-size:13.5px; line-height:1.5; color:var(--color-text-row); }
/* u488: the code for the chat in a page, inside the fold-out */
.kp-code { display:block; width:100%; margin:10px 0; padding:10px 12px; border:1px solid rgba(31,48,90,.14); border-radius:8px; background:#fff; color:var(--color-text-row); font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; resize:none; word-break:break-all; }
.kp-soon { margin:16px 2px 22px; font-size:14px; color:var(--color-text-meta); }
.kp-events { background:rgba(255,255,255,.72); border:1px solid rgba(255,255,255,.85); box-shadow:0 10px 34px rgba(38,52,86,.10); border-radius:14px; overflow:hidden; }
.kp-events__head { display:flex; align-items:baseline; gap:10px; padding:14px 20px; border-bottom:1px solid rgba(31,48,90,.07); }
.kp-events__sub { font-size:13.5px; color:var(--color-text-meta); }
.kp-event { display:flex; align-items:baseline; gap:10px; padding:11px 20px; font-size:14px; color:var(--color-text-row); }
.kp-event + .kp-event { border-top:1px solid rgba(31,48,90,.06); }
.kp-event__dot { flex:none; width:7px; height:7px; border-radius:50%; background:#127A52; transform:translateY(-1px); } .kp-event__dot.is-bad { background:#C0362C; }
.kp-event__t { flex:1; min-width:0; } .kp-event__w { flex:none; font-size:13px; color:var(--color-text-meta); }
.kp-event--none { color:var(--color-text-meta); }
.kp-empty { font-size:15px; color:var(--color-text-row); }
@media (max-width: 900px) { .kp-grid { grid-template-columns:1fr; } .kp-card__head, .kp-card__rows, .kp-card__foot { padding-left:16px; padding-right:16px; } }

/* u305…u313 — training bot: optional suggestions under a ready card — COMPACT chips (side by side when there is room);
   each picked chip opens its own answer field below; one send button for all. */
.tr-page .tc-sugg { align-self:flex-start; max-width:760px; margin:-21px 0 0 46px; padding:8px 10px; border-radius:0 0 12px 12px; background:rgba(36,85,214,.04); border:1px dashed rgba(36,85,214,.25); border-top-width:0; display:flex; flex-direction:column; gap:7px; } /* u374: tucked under its card, indented */
@media (max-width:640px) { .tr-page .tc-sugg { margin-left:16px; } }
.tr-page .tc-sugg__title { font:600 13px var(--font-family-base); color:var(--color-primary); } /* u375: 13px */
.tr-page .tc-sugg__hint { font-size:13px; color:var(--color-text-meta); margin-top:2px; } /* u372; u375: 13px */
.tr-page .tc-sugg__chips { display:flex; flex-wrap:wrap; gap:6px; }
.tr-page .tc-sugg__chip { flex:0 1 auto; max-width:100%; text-align:left; border:1px solid rgba(36,85,214,.25); background:#fff; border-radius:999px; padding:6px 12px 6px 28px; font:500 13.5px/1.35 var(--font-family-base); color:var(--color-text-primary); cursor:pointer; position:relative; }
.tr-page .tc-sugg__chip::before { content:"+"; position:absolute; left:11px; top:5px; font:700 14px/1.3 var(--font-family-base); color:var(--color-primary); }
.tr-page .tc-sugg__chip.is-on::before { content:"−"; }
.tr-page .tc-sugg__chip.is-answered::before { content:"✓"; color:#127A52; }
.tr-page .tc-sugg__chip:hover, .tr-page .tc-sugg__chip.is-on { border-color:var(--color-primary); box-shadow:0 0 0 3px rgba(36,85,214,.12); }
.tr-page .tc-sugg__fields { display:flex; flex-direction:column; gap:8px; }
.tr-page .tc-sugg__fields:empty { display:none; }
.tr-page .tc-sugg__row { display:flex; flex-direction:column; gap:5px; }
.tr-page .tc-sugg__label { font:600 13.5px var(--font-family-base); color:var(--color-text-row); }
.tr-page .tc-sugg__row textarea { width:100%; border:1px solid var(--color-border-button); border-radius:10px; padding:8px 11px; font:400 15px/1.45 var(--font-family-base); resize:vertical; background:#fff; }
.tr-page .tc-sugg__row textarea:focus { outline:none; border-color:var(--color-primary); box-shadow:0 0 0 3px rgba(36,85,214,.12); }
.tr-page .tc-sugg__foot { display:flex; justify-content:flex-end; }
.tr-page .tc-sugg.is-done { opacity:.55; pointer-events:none; }
@media (max-width: 900px) { .tr-page .tc-sugg__chip { font-size:14.5px; } .tr-page .tc-sugg__row textarea { font-size:16px; } }

/* u308 — "staat al in de kennisbank": the existing item as a read-only card; links in bot replies underlined. */
.tr-page .tc-known { padding:0; overflow:hidden; }
.tr-page .tc-known__head { display:flex; align-items:center; gap:10px; padding:10px 16px; border-bottom:1px solid rgba(31,48,90,.07); background:rgba(18,122,82,.05); }
.tr-page .tc-known__tag { font:600 12.5px var(--font-family-base); color:#127A52; padding:3px 9px; border-radius:999px; background:rgba(18,122,82,.10); white-space:nowrap; }
.tr-page .tc-known__link { flex:1; min-width:0; text-align:right; font:600 13.5px var(--font-family-base); color:var(--color-primary); text-decoration:underline; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tr-page .tc-known__text { padding:12px 16px 14px; font-size:15px; line-height:1.55; color:var(--color-text-primary); }
.tr-page .tc-bot a, .tr-page .tc-msg a { text-decoration:underline; }
/* u315: an admin message keeps its line breaks (two suggestion answers = two paragraphs). */
.tr-page .tc-admin { white-space:pre-line; }

/* u324 — the facts block in the chat modal: label above value in an even grid (was a ragged inline row); the
   e-mail-not-delivered alert; the orange sidebar dot for a forwarded chat whose e-mail never arrived. */
/* u506: a conversion that followed the chat — a marker IN the conversation, at the moment it happened (a line with a
   green pill in the middle). Not a bar at the top and not a row among the chat's facts. */
.transcript__event { display:flex; align-items:center; gap:14px; margin:6px 0; }
.transcript__event::before, .transcript__event::after { content:""; flex:1; height:1px; background:rgba(18,122,82,.2); }
.transcript__event-pill { display:inline-flex; align-items:center; gap:8px; max-width:100%; padding:4px 14px 4px 5px; border-radius:999px; background:var(--color-positive-bg); color:var(--color-positive); font-size:13.5px; line-height:1.4; }
.transcript__event-dot { flex:none; width:20px; height:20px; border-radius:50%; background:var(--color-positive); color:#fff; display:inline-flex; align-items:center; justify-content:center; }
.transcript__event-pill b { font-weight:600; color:var(--color-text-primary); overflow-wrap:anywhere; }
.transcript__event-pill i { font-style:normal; white-space:nowrap; }
.sheet__facts { display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:14px 26px; padding:14px 22px 16px; border-bottom:1px solid var(--color-line-glass); }
.sheet__fact { display:flex; flex-direction:column; align-items:flex-start; gap:3px; min-width:0; }
.sheet__fact-label { font-size:12.5px; color:var(--color-text-meta); white-space:nowrap; }
.sheet__fact-value { font:600 14.5px/1.35 var(--font-family-base); color:var(--color-text-primary); overflow-wrap:anywhere; max-width:100%; }
.sheet__alert { margin:12px 22px 0; padding:11px 14px; border-radius:10px; background:#fdf1ef; border:1px solid #f1cfc9; color:#8f2a20; font-size:14px; line-height:1.5; }
.sheet__alert strong { display:block; margin-bottom:2px; }
.sidebar__dot--warn { background:#E8590C; }
.esc-mail-tag { margin-left:6px; vertical-align:1px; }

/* u326 (Denis) — layout tweaks: the training chat centred and capped; the statistics bot body capped on desktop; the
   sidebar a little shorter than the viewport on desktop; the retention note under Chats / Doorgestuurde chats. */
.tv-chat { max-width:1280px; margin-left:auto; margin-right:auto; }
@media (min-width: 901px) {
  .sb-body { max-height:800px; }
  .app-shell__sidebar { height:99vh; max-height:1300px; }
}
.retention-note { margin:22px 0 6px; font-size:13.5px; color:var(--color-text-meta); opacity:.7; text-align:center; }

/* u327 — the report dialog: intro 15.5px (both dialogs); "Melden" in the training composer, desktop only. */
.report-modal__intro { font-size:15.5px; }
.tv-compose__report { margin-right:4px; }
@media (max-width: 900px) { .tv-compose__report { display:none; } }

/* u329 — superadmin home: a low bar when there are new client reports (so they are not missed in the sidebar). */
.sa-reportbar { display:flex; align-items:center; gap:12px; margin:0 0 18px; padding:9px 12px 9px 16px; border-radius:12px; background:#fff6ec; border:1px solid #f3d6b3; }
.sa-reportbar__dot { flex:none; width:8px; height:8px; border-radius:50%; background:#E8590C; }
.sa-reportbar__text { flex:1; min-width:0; font:600 14.5px var(--font-family-base); color:#8a4a12; }
/* u388: note under the Kennisbank list — language versions are not listed separately */
.kb-translations-note { margin:12px 4px 0; font-size:13.5px; line-height:1.5; color:var(--color-text-meta); }
/* u424 (Denis): "Widgets aanpassen" only on a desktop or a tablet — not on a phone. */
@media (max-width: 700px) { .home-top { display:none; } }

/* u500 — Instellingen → Conversies: the short list of what is counted after a chat, and the one dialog that adds or
   changes one (what it is → how Dilot sees it). The page itself: dashboard/partials/settings-conversions.blade.php. */
.cv__head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.cv__head .btn { flex:none; }
.cv__head .tag { margin-left:6px; vertical-align:1px; }
.notice--warning { background:var(--color-warning-bg); color:var(--color-warning); }
.cv__warn { margin:4px 0 14px; }
.cv__warn svg { flex:none; margin-top:3px; }
.cv__none { margin:6px 0 4px; font-size:14px; color:var(--color-text-secondary); }
.cv__list { list-style:none; margin:0; padding:0; }
.cv__item { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:14px 0; }
.cv__item + .cv__item { border-top:1px solid rgba(31,48,90,.07); }
.cv__item--off .cv__name, .cv__item--off .cv__ways { opacity:.55; }
.cv__main { min-width:0; flex:1; }
.cv__name { display:flex; flex-wrap:wrap; align-items:center; gap:6px; font-size:14.5px; font-weight:600; color:var(--color-text-primary); }
.cv__ways { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.cv__way { display:inline-flex; align-items:center; gap:6px; max-width:100%; padding:3px 9px; border-radius:8px; background:rgba(31,48,90,.05); font-size:13px; color:var(--color-text-secondary); }
/* u507: the (i) on a way's chip — the chip clips long addresses, the tooltip must be let out; and it opens downward */
.cv__way:has(.cv__info) { overflow:visible; }
.settings-card.cv:has(.cv__info:hover), .settings-card.cv:has(.cv__info:focus) { overflow:visible; position:relative; z-index:6; } /* the card clips; let the tooltip out while it is open — and above the next card (u598) */
/* u598 (Denis: the tooltip was cut off): it opens UPWARD, where the card has room, instead of into the card below */
.cv__info { margin-left:0; } .cv__info .sb-info__box { bottom:calc(100% + 8px); top:auto; left:-10px; transform:none; z-index:5; white-space:normal; text-align:left; }
/* u598: the code a website uses to report a conversion itself */
.cv-code-help { margin:10px 2px 0; padding:12px 14px; border-radius:10px; background:#F5F8FE; border:1px solid rgba(36,85,214,.14); }
.cv-code-help__title { font-size:14px; font-weight:600; color:var(--color-text-primary); margin-bottom:6px; }
.cv-code-help__text { margin:8px 0 6px; font-size:13px; line-height:1.5; color:var(--color-text-secondary); }
.cv-code-help__snip { display:flex; align-items:center; gap:8px; }
.cv-code-help__snip code { flex:1; min-width:0; padding:8px 10px; border-radius:8px; background:#fff; border:1px solid var(--color-border); font:500 12.5px/1.45 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color:var(--color-text-primary); overflow-wrap:anywhere; }
.cv-code-help__copy { flex:none; }
.cv-code-help__notes { margin-top:12px; }
.cv-code-help__new { color:var(--color-warning); }
.cv-ga__seen { margin:12px 0 4px; }
/* u600: GA4 straight from Dilot */
.cv-ga4__steps { margin:4px 0 12px; padding-left:20px; display:flex; flex-direction:column; gap:6px; }
.cv-ga4__form { display:grid; grid-template-columns:1fr 1fr; gap:12px; align-items:end; margin:6px 0 10px; }
.cv-ga4__buttons { grid-column:1 / -1; display:flex; gap:8px; }
.settings-card.cv-ga4:has(.sb-info:hover), .settings-card.cv-ga4:has(.sb-info:focus) { overflow:visible; position:relative; z-index:6; } /* u601: let the tooltip out */
.cv-ga4__info .sb-info__box { left:-10px; transform:none; text-align:left; font-weight:400; } /* opens upward, from the icon */
.cv-ga4__gtm { margin-top:12px; padding-top:12px; border-top:1px solid rgba(31,48,90,.07); }
.cv-ga4__gtm > summary { cursor:pointer; font-weight:600; font-size:14px; color:var(--color-text-primary); margin-bottom:8px; }
@media (max-width: 700px) { .cv-ga4__form { grid-template-columns:1fr; } }
.cv__way code, .cv-way__code code { font:500 12.5px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color:var(--color-text-primary); overflow-wrap:anywhere; }
.cv__meta { margin-top:7px; font-size:13px; color:var(--color-text-meta); }
.cv__actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; flex:none; }
.cv__actions form { margin:0; }
.cv__delete:hover { color:var(--color-danger); border-color:var(--color-danger); }
.cv-modal[hidden] { display:none; }
.cv-modal__dialog { background:#fff; }
.cv-modal__body { flex:1; min-height:0; overflow:auto; }
.cv-step { margin:4px 0 12px; font-size:17px; font-weight:600; letter-spacing:-.01em; color:var(--color-text-primary); } /* u598: bigger (Denis) */
.cv-step ~ .cv-step { margin-top:22px; padding-top:18px; border-top:1px solid rgba(31,48,90,.07); }
.cv-hint { margin:6px 0 12px; font-size:13px; line-height:1.5; color:var(--color-text-secondary); }
.cv-kinds { display:grid; grid-template-columns:repeat(auto-fill, minmax(210px, 1fr)); gap:8px; margin-bottom:16px; }
.cv-kind { position:relative; display:block; cursor:pointer; }
.cv-kind input { position:absolute; opacity:0; inset:0; margin:0; cursor:pointer; }
.cv-kind span { display:flex; align-items:center; min-height:40px; padding:6px 12px; box-sizing:border-box; border:1px solid var(--color-border-button); border-radius:10px; font-size:13.5px; font-weight:500; line-height:1.3; color:var(--color-text-row); background:#fff; }
.cv-kind input:checked + span { border-color:var(--color-primary); background:var(--color-primary-soft-2); color:var(--color-primary); font-weight:600; }
.cv-kind input:focus-visible + span { box-shadow:var(--shadow-focus); }
.cv-two { display:grid; grid-template-columns:1.6fr 1fr; gap:12px; }
.cv-field { display:block; min-width:0; }
.cv-field .field__input, .cv-way .field__input { width:100%; height:38px; border-radius:10px; font-size:14.5px; box-sizing:border-box; }
.cv-ways { display:flex; flex-direction:column; gap:10px; margin-bottom:12px; }
.cv-way { padding:12px; border:1px solid rgba(31,48,90,.1); border-radius:12px; background:rgba(31,48,90,.02); }
.cv-way__row { display:grid; grid-template-columns:minmax(0, 1.25fr) minmax(0, 1fr) auto; gap:8px; align-items:center; }
.cv-way__row--bare { grid-template-columns:minmax(0, 1fr) auto; }
.cv-way select.field__input { padding-right:28px; cursor:pointer; }
.cv-way__x { width:34px; height:34px; padding:0; border:0; border-radius:9px; background:none; font-size:20px; line-height:1; color:var(--color-text-meta); cursor:pointer; }
.cv-way__x:hover, .cv-way__x:focus-visible { background:rgba(15,23,42,.07); color:var(--color-danger); outline:none; }
.cv-way__hint { margin:8px 2px 0; font-size:13px; line-height:1.5; color:var(--color-text-secondary); }
.cv-way__weak { display:block; margin-top:5px; color:var(--color-warning); }
@media (max-width: 700px) {
  .cv__head, .cv__item { flex-direction:column; }
  .cv__actions { justify-content:flex-start; }
  /* u505 → u514: the conversion dialog has the size of every dialog (the base .modal__dialog rule), nothing of its own. */
  .cv-two { grid-template-columns:1fr; }
  .cv-way__row { grid-template-columns:minmax(0, 1fr) auto; } .cv-way__row > input { grid-column:1 / -1; grid-row:2; }
  .cv-way .field__input, .cv-field .field__input { font-size:16px; }
}

/* u503 — Statistieken: the block "Conversies" (a row of the figures card, right under the chatbot's figures). It took the
   place of the tile "± Bestellingen na een chat" (u281) and of the quiet link of u502. */
/* u508 (Denis picked this from three placements: "A, but the button in the header"): on a wide screen the two totals
   and the grey list stand in ONE row — the list takes the room that is left and drops under the totals by itself
   when there is not enough of it. The note runs under all of it. */
.sb-cv__body { flex-direction:row; flex-wrap:wrap; align-items:flex-start; gap:14px 28px; }
.sb-cv__detail { flex:1 1 320px; min-width:0; max-width:620px; } /* never the long grey bar across a wide screen */
.sb-cv__note, .sb-cv__empty, .sb-cv__foot { flex:0 0 100%; }
.sb-cv__set { flex:none; margin-left:auto; }
.sb-cv__kpis { flex:none; grid-template-columns:repeat(2, minmax(150px, 240px)); }
/* the breakdown per conversion: a quieter block UNDER the totals (grey inset, no caption, no lines between its rows), so
   the two totals stay the figures of the card and this reads as what they are made of */
.sb-cv__detail { padding:9px 16px; border-radius:var(--radius-panel); background:var(--color-band); }
.sb-cv__list { list-style:none; margin:0; padding:0; }
.sb-cv__line { display:grid; grid-template-columns:minmax(0, auto) minmax(16px, 1fr) auto minmax(72px, auto); align-items:center; gap:12px; padding:5px 0; font-size:14px; }
.sb-cv__name { min-width:0; color:var(--color-text-primary); overflow-wrap:anywhere; }
.sb-cv__rule { height:1px; background:rgba(31,48,90,.14); } /* u508: the line from a name to its number */
.sb-cv__n { font-weight:600; color:var(--color-text-primary); text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.sb-cv__v { color:var(--color-text-secondary); text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.sb-cv__line--off .sb-cv__name { color:var(--color-text-meta); }
.sb-cv__note { margin:0; max-width:78ch; font-size:13px; line-height:1.55; color:var(--color-text-meta); }
.sb-cv__empty { max-width:70ch; line-height:1.55; }
.sb-cv__foot { display:flex; }
/* a chat row of the statistics bot ("welke chats leidden tot een bestelling?"): what followed the chat, and the way to it */
.sb-row-detail { display:block; margin-top:2px; font-size:13px; color:var(--color-text-meta); }
.sb-row-link { color:inherit; text-decoration:underline; text-decoration-color:rgba(31,48,90,.25); text-underline-offset:3px; }
.sb-row-link:hover, .sb-row-link:focus-visible { color:var(--color-primary); text-decoration-color:currentColor; outline:none; }
@media (max-width: 900px) {
  /* the row stands in a column here, and a column lets a child be as wide as its content: keep it as wide as the row */
  .sb-cv__body { align-self:stretch; width:100%; flex-direction:column; flex-wrap:nowrap; align-items:stretch; }
  .sb-cv__detail, .sb-cv__note, .sb-cv__empty, .sb-cv__foot { flex:none; }
  .sb-cv__detail { max-width:none; }
  .sb-cv__kpis { grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .sb-cv__kpis .sb-kpi__l { white-space:normal; }
  .sb-cv__kpis .sb-pill { height:auto; min-height:22px; max-width:100%; padding-top:2px; padding-bottom:2px; white-space:normal; }
}
/* u521: Instellingen → Conversies — the three events passed to the website's own analytics */
.cv-ga__events { margin:12px 0 8px; padding-left:18px; }
.cv-ga__events li { margin:4px 0; }
.cv-ga__events code { font-size:12.5px; }
/* u525: the public legal pages (layouts/legal) — one wide readable card on the sky */
.legal { position:relative; z-index:1; max-width:860px; margin:0 auto; padding:32px 20px 48px; box-sizing:border-box; }
.legal__nav { display:flex; flex-wrap:wrap; align-items:center; gap:6px 18px; margin-bottom:18px; font-size:14px; }
.legal__nav a { color:var(--color-text-secondary); text-decoration:none; }
.legal__nav a:hover, .legal__nav a.is-current { color:var(--color-text-primary); font-weight:600; }
.legal__brand { font-weight:600; font-size:17px; color:var(--color-text-primary); margin-right:auto; }
.legal__lang { display:flex; gap:10px; }
.legal__card { background:#fff; border-radius:var(--radius-panel); box-shadow:0 8px 30px rgba(20,26,44,.08); padding:32px 36px; color:var(--color-text-row); font-size:15px; line-height:1.65; }
.legal__card h1 { font-size:26px; font-weight:600; letter-spacing:-.02em; color:var(--color-text-primary); margin:0 0 4px; }
.legal__card h2 { font-size:17px; font-weight:600; color:var(--color-text-primary); margin:26px 0 6px; }
.legal__card p, .legal__card ul, .legal__card ol { margin:0 0 10px; }
.legal__card ul, .legal__card ol { padding-left:22px; }
.legal__card li { margin:4px 0; }
.legal__card a { color:var(--color-primary); }
.legal__meta { font-size:13.5px; color:var(--color-text-meta); margin-bottom:20px !important; }
.legal__who { margin-top:30px; padding-top:16px; border-top:1px solid var(--color-line-faint); font-size:13.5px; color:var(--color-text-meta); }
@media (max-width: 600px) { .legal { padding:20px 16px 32px; } .legal__card { padding:22px 18px; } .legal__card h1 { font-size:22px; } }
.auth-legal { position:fixed; left:22px; bottom:22px; z-index:1; display:flex; gap:14px; font-size:13px; }
.auth-legal a { color:var(--color-text-meta); text-decoration:none; }
.auth-legal a:hover { color:var(--color-text-primary); }
@media (max-width: 700px) { .auth-legal { position:static; justify-content:center; margin-top:14px; } }
/* u507 (Denis, on a phone: "place the conversion figures under each other, not side by side — it's a messy look; the chatbot
   stats div is also a little messy"): on a phone every figure of Statistieken is a ROW — its name (and its small tag) on
   the left, the number on the right, a hairline between the rows. Was two columns of label / number / tag blocks of
   uneven height. Last in the file on purpose: it settles the column rules above. */
/* u578 (Denis) — a chart card: the title + period as its own header with a full-width line under it; the big number in
   a soft pill with its meaning on the same bottom line; a ranking row gets room around its hover colour */
.sb-block__head { padding:12px 16px 10px; border-bottom:1px solid var(--color-row-line); }
.sb-block__num { align-items:baseline; padding:12px 16px 6px; }
.sb-block__big { display:inline-block; padding:1px 10px; border-radius:8px; background:rgba(36,85,214,.07); line-height:1.35; }
/* u595 (Denis: the padding under the number was not the same as above it): whatever ends a card — the number, the
   per-period line, the description — keeps the same 12px from the bottom edge as the number has from the header */
.sb-block > .sb-block__num:last-child, .sb-block > .sb-block__per:last-child { padding-bottom:12px; }
.sb-block > .sb-block__desc:last-child { margin-bottom:12px; }
.sb-hbar { padding:7px 10px; margin:0 -10px; }
.sb-opts__h { font-size:12.5px; font-weight:600; color:var(--color-text-meta); margin:12px 0 6px; } /* u586: "Over welke periode?" / "Wat moet erin?" */
/* u586 (Denis: "not a letter"; "a little more organised") — the report as a structured document */
.sb-rdoc__lead { font-size:15.5px; line-height:1.65; color:var(--color-text-primary); margin:0 0 6px; }
.sb-rfind li, .sb-rrecs li { display:flex; gap:12px; align-items:flex-start; padding:12px 14px; border:1px solid var(--color-border); border-radius:12px; background:#fff; break-inside:avoid; page-break-inside:avoid; }
.sb-rnum { flex:none; display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:8px; background:rgba(36,85,214,.08); color:var(--color-primary); font-weight:600; font-size:13px; font-variant-numeric:tabular-nums; }
.sb-rrecs li { background:#FAFBFE; }
.sb-rtoc { margin-top:18px; padding:14px 16px; border-radius:12px; background:#F7F9FE; border:1px solid var(--color-border); }
.sb-rtoc__h { font-size:12px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--color-text-meta); margin-bottom:8px; }
.sb-rtoc ol { margin:0; padding:0; list-style:none; columns:2; column-gap:24px; font-size:14px; }
.sb-rtoc li { display:flex; gap:8px; padding:3px 0; break-inside:avoid; color:var(--color-text-primary); }
.sb-rtoc__n { flex:none; width:18px; color:var(--color-primary); font-weight:600; font-variant-numeric:tabular-nums; }
.sb-rch__head { display:flex; align-items:center; gap:12px; margin:0 0 10px; padding-bottom:10px; border-bottom:2px solid rgba(36,85,214,.12); break-after:avoid; page-break-after:avoid; }
.sb-rch__head .sb-rdoc__h2 { margin:0; }
.sb-rch__n { flex:none; display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; border-radius:10px; background:var(--color-primary); color:#fff; font-weight:600; font-size:15px; }
.sb-rch__lead { font-size:14.5px; line-height:1.65; color:var(--color-text-secondary); margin:0 0 14px; padding:12px 14px; border-left:3px solid rgba(36,85,214,.25); background:#FAFBFE; border-radius:0 10px 10px 0; }
.sb-rvalue { font-size:15px; line-height:1.65; padding:16px 18px; border-radius:12px; background:linear-gradient(135deg, rgba(36,85,214,.07), rgba(36,85,214,.02)); border:1px solid rgba(36,85,214,.15); color:var(--color-text-primary); }
.sb-rdoc__chapter { padding-top:22px; border-top:0; }
.sb-cover { justify-content:space-between; }
.sb-cover__band { height:6px; width:72px; border-radius:6px; background:var(--color-primary); }
.sb-cover__sub { font-size:17px; line-height:1.5; color:var(--color-text-secondary); margin-top:10px; max-width:520px; }
.sb-cover__foot { flex-direction:row; justify-content:space-between; flex-wrap:wrap; gap:6px 18px; padding-top:14px; border-top:1px solid var(--color-border); }
@media (max-width: 640px) { .sb-rtoc ol { columns:1; } }
@media print {
  .sb-rfind li, .sb-rrecs li, .sb-rtoc, .sb-rch__lead, .sb-rvalue, .sb-rnum, .sb-rch__n, .sb-cover__band { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .sb-rdoc__chapter { break-before:page; page-break-before:always; padding-top:0; }
}
/* ===== u602 — MOTION (Denis, 28 Oct: "make some of the actions smoother with a transition … modals, popups, clicking
   buttons, hovering, clicking filters, slide ins, reveals, tooltip revealing — softly, just so it's there … no long-ass
   animations of every little thing"). One small set, short (0.12–0.2 s), ease-out; nothing moves far. Elements that
   already had their own transition (the switches, the superadmin tabs, the sidebar width) keep it. Reduced motion: off. */
:root { --motion-fast:.12s; --motion:.18s; --motion-ease:cubic-bezier(.2,.8,.2,1); }
.btn, .dd-btn, .dd-item, .segmented__item, .sidebar__item, .table__row, .text-link, .cv-kind, .tag, .field__input, .sb-info,
.notice, .settings-card, .home-card, .panel a, .knowledge-source__name {
  transition:background-color var(--motion-fast) ease, border-color var(--motion-fast) ease, color var(--motion-fast) ease,
    box-shadow var(--motion) ease, transform var(--motion-fast) ease, opacity var(--motion-fast) ease;
}
/* u604 (Denis: "still no transition on most of buttons, I just went to dashboard: none here"): the list above only
   named some components — every button, link, field and the like now eases its colours by default. Zero specificity
   (:where), so a component that sets its own transition keeps it. Plus the parts INSIDE a row or card that change
   colour when the row is hovered. */
:where(button, a, summary, label, input, select, textarea, [role="button"]) {
  transition:background-color var(--motion-fast) ease, border-color var(--motion-fast) ease, color var(--motion-fast) ease,
    box-shadow var(--motion) ease, opacity var(--motion-fast) ease;
}
:where(button, [role="button"]) {
  transition:background-color var(--motion-fast) ease, border-color var(--motion-fast) ease, color var(--motion-fast) ease,
    box-shadow var(--motion) ease, opacity var(--motion-fast) ease, transform var(--motion-fast) ease;
}
:where(button:not(:disabled):active, [role="button"]:active) { transform:translateY(1px) scale(.985); }
.home-recent__title, .home-topic__name, .tv-item__title, .sb-ins__title, .vd-thumb__play, .transcript__video-icon, .product-kcard {
  transition:color var(--motion-fast) ease, background-color var(--motion-fast) ease, border-color var(--motion-fast) ease,
    box-shadow var(--motion) ease, opacity var(--motion-fast) ease;
}
/* the dark (i) tooltips fade in each time they appear */
.v7-tip__bubble, .sheet__stats-tip { animation:motion-fade var(--motion-fast) ease both; }
/* a button gives a little under the finger */
.btn:active:not(:disabled), .dd-btn:active, .segmented__item:active { transform:translateY(1px) scale(.985); }
/* the list behind a filter: dims softly while it loads and comes back softly (the modal blur keeps its own transition) */
[data-live] .panel, [data-live] .kpi-strip, [data-live] .stat-cards { transition:filter .2s ease, opacity .15s ease; }
/* dropdown filters fold open; the caret turns */
.dd.is-open .dd-menu { animation:motion-drop var(--motion) var(--motion-ease) both; transform-origin:top left; }
.dd-caret { transition:transform var(--motion) var(--motion-ease); }
.dd.is-open .dd-caret { transform:rotate(180deg); }
/* tooltips fade in */
.sb-info:hover .sb-info__box, .sb-info:focus .sb-info__box, .sb-info:focus-within .sb-info__box { animation:motion-fade var(--motion-fast) ease both; }
/* opened rows and sections reveal their content */
details[open] > :not(summary) { animation:motion-reveal var(--motion) var(--motion-ease) both; }
/* a message after saving slides in */
.shell-notice { animation:motion-reveal .22s var(--motion-ease) both; }
@keyframes motion-fade { from { opacity:0; } }
@keyframes motion-drop { from { opacity:0; transform:translateY(-4px) scale(.98); } }
@keyframes motion-reveal { from { opacity:0; transform:translateY(-3px); } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}

/* ===== u607 — KENNISCONTROLE (resources/views/dashboard/knowledge-check.blade.php; the entry on the Kennisbank).
   Approved mockups 12 + 13 (Denis, 28 Oct): dark summary like "Staat van je kennis", tabs, per conflict the two sources
   side by side — the whole box is the choice; the proposal opens under it. */
.kc { display:flex; flex-direction:column; gap:16px; }
.kc-back { display:inline-flex; align-items:center; gap:5px; margin-bottom:6px; color:var(--color-text-meta); text-decoration:none; font:500 13.5px var(--font-family-base); }
.kc-back:hover { color:var(--color-text-primary); }
.kc-card { background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-panel); padding:22px 24px; }
.kc-meta { font-size:13px; color:var(--color-text-meta); margin:0; }
.kc-note { display:flex; gap:10px; align-items:flex-start; padding:12px 14px; border-radius:12px; background:var(--color-warning-bg); border:0; font-size:13.5px; line-height:1.55; color:var(--color-text-row); }
.kc-note > svg { flex:none; margin-top:2px; color:var(--color-warning); }
.kc-intro { display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:28px; align-items:start; }
.kc-intro h2 { margin:0 0 8px; font:600 18px var(--font-family-base); color:var(--color-text-primary); }
.kc-intro p { margin:0 0 12px; font-size:14px; line-height:1.6; color:var(--color-text-row); }
.kc-start { display:flex; align-items:center; gap:14px; margin-top:16px; flex-wrap:wrap; }
.kc-ex { display:flex; flex-direction:column; gap:8px; padding:14px 16px; border-radius:12px; background:var(--color-primary-soft-2); font-size:13.5px; line-height:1.5; color:var(--color-text-row); }
.kc-ex b { color:var(--color-text-primary); }
.kc-ex__h { font:600 12.5px var(--font-family-base); color:var(--color-text-label); }
.kc-ex__sep { border-top:1px solid rgba(31,48,90,.08); padding-top:8px; }
.kc-ex__bad { color:var(--color-danger); font-weight:600; } .kc-ex__ok { color:var(--color-positive); font-weight:600; }
.kc-prog { display:flex; flex-direction:column; gap:14px; }
.kc-prog__row { display:flex; align-items:center; gap:12px; font:600 15px var(--font-family-base); color:var(--color-text-primary); }
.kc-spin { width:18px; height:18px; flex:none; }
.kc-prog__bar { width:100%; height:8px; border-radius:6px; background:var(--color-primary-soft); overflow:hidden; }
.kc-prog__bar span { display:block; height:100%; background:var(--color-primary); border-radius:6px; transition:width .4s ease; }
/* u613 (Denis: "fix the tooltip, make it overflow out of the div"): the card no longer clips — the glow clips itself */
.kc-top { position:relative; z-index:2; display:flex; align-items:center; gap:26px; flex-wrap:wrap; padding:20px 24px; border-radius:var(--radius-panel); background:var(--gradient-dark-card); box-shadow:var(--shadow-dark-card); color:#fff; }
.kc-top > .kc-top__glow { position:absolute; inset:0; overflow:hidden; border-radius:inherit; pointer-events:none; }
.kc-top__glow::before { content:""; position:absolute; inset:-60% -20% 45% 40%; background:var(--glow-dark); }
.kc-top > :not(.kc-top__glow) { position:relative; }
.kc-top .v7-tip__bubble { z-index:60; }
/* it opens DOWNWARDS here — upwards a long note ran off the top of the screen */
.kc-top .v7-tip__bubble { bottom:auto; top:calc(100% + 8px); }
.kc-top .v7-tip__bubble::after { top:auto; bottom:100%; border-top-color:transparent; border-bottom-color:var(--color-text-primary); }
.kc-top__n { font:600 34px/1 var(--font-family-base); letter-spacing:-.03em; }
.kc-top__l { font-size:14px; color:rgba(255,255,255,.85); max-width:280px; }
.kc-top__facts { display:flex; align-items:center; gap:26px; margin-left:auto; font-size:13px; color:rgba(255,255,255,.6); }
.kc-top__facts b { display:block; margin-top:3px; color:#fff; font-weight:600; font-size:13.5px; }
.kc-top .v7-tip { color:rgba(255,255,255,.65); }
.kc-top .v7-tip:hover, .kc-top .v7-tip.is-open { color:#fff; }
.kc-top .v7-tip__bubble { width:340px; max-width:80vw; }
.kc-clean { display:flex; gap:16px; align-items:flex-start; }
.kc-clean__ic { width:44px; height:44px; flex:none; border-radius:50%; background:var(--color-positive-bg); color:var(--color-positive); display:flex; align-items:center; justify-content:center; }
.kc-clean__ic svg { width:20px; height:20px; }
.kc-clean h2 { margin:2px 0 6px; font:600 17px var(--font-family-base); color:var(--color-text-primary); }
.kc-clean p { margin:0; font-size:14px; line-height:1.6; color:var(--color-text-row); }
.kc-item { background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-panel); scroll-margin-top:80px; }
.kc-item__head { display:flex; align-items:center; gap:12px; padding:18px 22px 4px; flex-wrap:wrap; }
.kc-item__title { font:600 15.5px var(--font-family-base); color:var(--color-text-primary); }
.kc-item__when { font-size:12.5px; color:var(--color-text-meta); }
.kc-item__ign { margin-left:auto; }
.kc-item__ign button, .kc-link { background:none; border:0; padding:0; cursor:pointer; font:500 13px var(--font-family-base); color:var(--color-text-meta); }
.kc-item__ign button:hover, .kc-link:hover { color:var(--color-text-primary); }
.kc-item__btn { margin-left:auto; }
.kc-item__ask { padding:0 22px 12px; font-size:13.5px; color:var(--color-text-secondary); }
.kc-vs { display:grid; grid-template-columns:1fr 1fr; gap:12px; padding:0 22px 14px; }
.kc-side { position:relative; display:flex; flex-direction:column; gap:8px; margin:0; padding:13px 46px 13px 15px; border:1.5px solid var(--color-border); border-radius:12px; background:var(--color-surface);
  transition:border-color var(--motion-fast) ease, background-color var(--motion-fast) ease, box-shadow var(--motion) ease, opacity var(--motion) ease; }
.kc-side:has(.kc-side__pick):hover, .kc-side:has(.kc-side__pick:focus-visible) { border-color:var(--color-primary); background:#fff; box-shadow:0 4px 14px rgba(36,85,214,.10); }
.kc-side__pick { position:absolute; inset:0; z-index:1; width:100%; margin:0; padding:0; border:0; border-radius:inherit; background:none; cursor:pointer; }
.kc-side__radio { position:absolute; top:13px; right:14px; width:20px; height:20px; box-sizing:border-box; border-radius:50%; border:1.5px solid var(--color-border-button); background:#fff; display:flex; align-items:center; justify-content:center; }
.kc-side:hover .kc-side__pick .kc-side__radio { border-color:var(--color-primary); }
.kc-side.is-right { border-color:var(--color-positive); background:var(--color-positive-bg); }
.kc-side.is-right .kc-side__radio { border:0; background:var(--color-positive); color:#fff; }
.kc-side.is-wrong { opacity:.62; padding-right:15px; }
.kc-side__flag { position:absolute; top:14px; right:14px; font:600 12px var(--font-family-base); color:var(--color-text-meta); }
.kc-side.is-right .kc-side__flag { right:42px; color:var(--color-positive); }
.kc-side__src { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:13px; color:var(--color-text-label); padding-right:90px; }
.kc-side:not(.is-wrong):not(.is-right) .kc-side__src { padding-right:0; }
.kc-side__gone { color:var(--color-warning); }
.kc-side q { quotes:none; font-size:14px; line-height:1.55; color:var(--color-text-row); }
.kc-side q mark { background:var(--color-danger-bg); color:var(--color-danger); font-weight:600; padding:0 3px; border-radius:4px; }
.kc-side.is-right q mark { background:var(--color-positive-bg); color:var(--color-positive); }
/* u610: one side can hold several sources (a group) — under each other, one choice for all */
.kc-side__one { display:flex; flex-direction:column; gap:8px; }
.kc-side--many .kc-side__one + .kc-side__one { padding-top:10px; border-top:1px solid var(--color-border); }
.kc-side--many { gap:10px; }
.kc-side__open { position:relative; z-index:2; align-self:flex-start; font-size:13px; color:var(--color-primary); text-decoration:none; font-weight:500; }
.kc-foot { display:flex; align-items:center; gap:14px; flex-wrap:wrap; padding:0 22px 16px; font-size:13px; color:var(--color-text-secondary); }
.kc-foot b { color:var(--color-text-primary); font-weight:600; }
.kc-fix { display:flex; flex-direction:column; gap:10px; margin:0 22px 18px; padding:14px 16px; border-radius:12px; background:var(--color-primary-soft-2); border:1px solid rgba(36,85,214,.14); animation:motion-reveal var(--motion) var(--motion-ease) both; }
.kc-fix__h { font:600 13.5px var(--font-family-base); color:var(--color-text-primary); }
.kc-fix__line { padding:10px 12px; border:1px solid var(--color-border); border-radius:10px; background:#fff; font-size:14px; line-height:1.6; color:var(--color-text-row); }
.kc-fix__line del, .kc-rem del { padding:0 3px; border-radius:4px; background:var(--color-danger-bg); color:var(--color-danger); text-decoration:line-through; }
.kc-fix__line ins, .kc-rem ins { padding:0 3px; border-radius:4px; background:var(--color-positive-bg); color:var(--color-positive); text-decoration:none; font-weight:600; }
.kc-fix__where { color:var(--color-text-meta); }
.kc-fix__line--mark mark { padding:0 3px; border-radius:4px; background:var(--color-danger-bg); color:var(--color-danger); font-weight:600; }
.kc-fix__note { font-size:13px; line-height:1.5; color:var(--color-text-secondary); }
.kc-fix__note b { color:var(--color-text-primary); }
.kc-fix__own summary { cursor:pointer; font:500 13.5px var(--font-family-base); color:var(--color-text-meta); list-style:none; }
.kc-fix__own summary::-webkit-details-marker { display:none; }
.kc-fix__own[open] summary { margin-bottom:8px; color:var(--color-text-primary); }
.kc-fix textarea { width:100%; box-sizing:border-box; min-height:90px; resize:vertical; }
.kc-fix__act { display:flex; align-items:center; gap:16px; }
.kc-rem { display:flex; flex-direction:column; gap:6px; padding:6px 22px 16px; font-size:13.5px; line-height:1.55; color:var(--color-text-row); }
.kc-rem__row { display:flex; gap:8px; }
.kc-rem__row > span:first-child { min-width:150px; color:var(--color-text-meta); }
.kc-rem b { font-weight:600; color:var(--color-text-primary); }
.kc-rem__auto { margin-top:4px; padding:9px 12px; border-radius:10px; background:var(--color-primary-soft-2); font-size:13px; color:var(--color-text-secondary); }
.kc-badge { font:600 12px var(--font-family-base); padding:2px 8px; border-radius:6px; background:var(--color-positive-bg); color:var(--color-positive); }
.kc-badge--grey { background:var(--color-neutral-bg); color:var(--color-neutral); }
/* the entry on the Kennisbank (placement follows Denis's layout choice — B1/B2/B3) */
.kc-entry { display:flex; align-items:center; gap:16px; margin-top:16px; padding:16px 22px; background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-panel); }
.kc-entry__ic { width:40px; height:40px; flex:none; border-radius:12px; display:flex; align-items:center; justify-content:center; background:var(--color-primary-tag-bg); color:var(--color-primary); }
.kc-entry > div:not(.kc-entry__acts) { flex:1; min-width:0; } /* u608: the text stays next to the icon on a phone */
.kc-entry__t { font:600 15px var(--font-family-base); color:var(--color-text-primary); }
.kc-entry__s { margin-top:2px; font-size:13.5px; line-height:1.45; color:var(--color-text-secondary); }
.kc-entry__meta { margin-top:6px; font-size:12.5px; color:var(--color-text-meta); }
.kc-entry__acts { margin-left:auto; display:flex; align-items:center; gap:16px; flex:none; }
.kc-entry__acts a.kc-prev { font-size:13px; color:var(--color-primary); text-decoration:none; font-weight:500; }
@media (max-width: 700px) {
  .kc-intro { grid-template-columns:1fr; }
  .kc-card { padding:18px; }
  .kc-top { gap:10px 14px; padding:16px 18px; } .kc-top__n { font-size:30px; } .kc-top__l { flex:1; min-width:0; }
  .kc-top__facts { margin-left:0; width:100%; flex-wrap:wrap; gap:12px 20px; }
  .kc-vs { grid-template-columns:1fr; padding:0 14px 12px; }
  .kc-item__head { padding:16px 14px 4px; }
  .kc-item__ask, .kc-foot { padding-left:14px; padding-right:14px; }
  .kc-fix { margin:0 14px 14px; }
  .kc-rem { padding:6px 14px 14px; }
  .kc-rem__row { flex-direction:column; gap:0; }
  .kc-side.is-wrong .kc-side__flag { position:static; order:-1; }
  .kc-side__src { padding-right:0; }
  .kc-side.is-right .kc-side__src { padding-right:70px; }
  .kc-entry { flex-wrap:wrap; padding:16px; }
  .kc-entry__acts { margin-left:56px; flex-basis:calc(100% - 56px); }
}

/* ===== u608 — KENNISBANK TOP, layout 1 (Denis, 28 Oct: "layout 1 … make that 'chats' div a little wider, that green line
   is suuuper long … don't forget the conditional div of unanswered questions"). Top to bottom: the state as a LOW dark
   strip, Dilot's questions (only when there are any), the sources in one card with equal columns, the Kenniscontrole
   row, then the list. The old two-column row (page-row + knowledge-sources aside) is gone from this page. */
.kb-top { display:flex; flex-direction:column; gap:16px; }
.kb-top .knowledge-state { display:grid; grid-template-columns:auto minmax(140px,1fr) minmax(280px,.85fr); gap:28px; align-items:center; padding:18px 24px; }
.kb-top .knowledge-state__row { margin-top:7px; }
.kb-top .knowledge-state__value { font-size:34px; }
.kb-top .knowledge-state__bar { margin-top:0; }
.kb-top .knowledge-state__cap { margin-top:8px; font-size:12.5px; color:rgba(255,255,255,.62); }
.kb-top .knowledge-state__none { margin-top:0; }
.kb-top .knowledge-state__kpis { display:flex; justify-content:space-around; gap:24px; padding-left:24px; border-left:1px solid rgba(255,255,255,.1); }
.kb-top .knowledge-state__kpi { display:flex; flex-direction:column; gap:4px; font-size:12.5px; color:rgba(255,255,255,.62); }
.kb-top .knowledge-state__kpi b { font-size:19px; font-weight:600; color:#fff; font-variant-numeric:tabular-nums; }
.kb-top .knowledge-state__kpi b.knowledge-state__warn { color:var(--color-amber-on-dark); }
.kb-top .knowledge-questions { margin:0; }
.kb-src-label { margin:4px 0 -8px 2px; font-size:13px; font-weight:600; color:var(--color-text-label); }
.kb-src { display:grid; grid-template-columns:repeat(var(--kb-cols, 3), minmax(0,1fr)); background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-panel); }
.kb-src__col { display:grid; grid-template-rows:auto auto 1fr auto; gap:6px; min-width:0; padding:18px 22px; }
.kb-src__col + .kb-src__col { border-left:1px solid var(--color-border); }
.kb-src__head { display:flex; align-items:center; gap:9px; font-size:14.5px; font-weight:600; color:var(--color-text-primary); }
.kb-src__ic { width:30px; height:30px; flex:none; border-radius:9px; display:flex; align-items:center; justify-content:center; background:var(--color-primary-tag-bg); color:var(--color-primary); }
.kb-src__live { margin-left:auto; font-size:12.5px; font-weight:600; white-space:nowrap; }
.kb-src__live::before { content:""; display:inline-block; width:7px; height:7px; margin-right:6px; border-radius:50%; background:currentColor; vertical-align:1px; }
.kb-src__live--live { color:var(--color-positive); }
.kb-src__live--broken { color:var(--color-danger); }
.kb-src__live--not_connected { color:var(--color-text-meta); }
.kb-src__n { margin-top:6px; font-size:28px; font-weight:600; line-height:1; letter-spacing:-.02em; color:var(--color-text-primary); font-variant-numeric:tabular-nums; }
.kb-src__n small { margin-left:5px; font-size:13px; font-weight:500; letter-spacing:0; color:var(--color-text-meta); }
.kb-src__pair { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:6px; }
.kb-src__pair a { display:flex; flex-direction:column; gap:4px; text-decoration:none; }
.kb-src__pair .kb-src__n { margin-top:0; font-size:24px; }
.kb-src__pair a:hover .kb-src__lbl { color:var(--color-primary); }
.kb-src__lbl { font-size:12.5px; color:var(--color-text-label); }
.kb-src__sub { font-size:13px; line-height:1.45; color:var(--color-text-secondary); }
.kb-src__warn { color:var(--color-warning); font-weight:600; }
.kb-src__act { display:flex; align-items:center; gap:12px; padding-top:8px; }
.kb-src__act form { margin:0; }
.kb-src__sync { gap:7px; }
.kb-top .kc-entry { margin-top:0; }
@media (max-width: 900px) {
  .kb-top .knowledge-state { grid-template-columns:1fr; gap:14px; padding:16px 18px; }
  .kb-top .knowledge-state__kpis { justify-content:flex-start; gap:28px; padding-left:0; border-left:0; }
  .kb-src { grid-template-columns:1fr; }
  .kb-src__col { padding:14px 16px; grid-template-rows:auto; }
  .kb-src__col + .kb-src__col { border-left:0; border-top:1px solid var(--color-border); }
  .kb-src__n { font-size:24px; }
}

@media (max-width: 700px) {
  .sb-kpis, .sb-cv__kpis { grid-template-columns:1fr; gap:0; }
  /* u508 (Denis: "on mobile the button not in the header but back where it was"): the ONE button is the head's, and on
     a phone it is laid at the bottom right of the card, under the note — the body keeps room for it */
  .sb-cv { position:relative; }
  .sb-cv__set { position:absolute; right:16px; bottom:18px; margin:0; }
  .sb-cv:has(.sb-cv__set) > .sb-cv__body { padding-bottom:66px; }
  .sb-cv__line { grid-template-columns:minmax(0, auto) minmax(12px, 1fr) auto auto; gap:4px 10px; }
  .sb-kpi { display:grid; grid-template-columns:minmax(0, 1fr) auto; grid-template-areas:"l n" "p n"; align-items:center; gap:4px 14px; padding:12px 0; border-top:1px solid rgba(31,48,90,.07); }
  .sb-kpi:first-child { border-top:0; padding-top:0; } .sb-kpi:last-child { padding-bottom:0; }
  .sb-kpi__l { grid-area:l; white-space:normal; }
  .sb-kpi__n { grid-area:n; font-size:26px; text-align:right; }
  .sb-kpi .sb-pill { grid-area:p; justify-self:start; }
  .sb-cv__detail { padding:7px 12px; }
}
