/* ── Onboarding wizard ────────────────────────────────────────────────────── */

.ob-root {
  /* Thema-bewust (Noah + Bas, 2026-07-15): de onboarding volgt nu het app-thema (data-theme op <html>)
     i.p.v. light-only. De lichte waarden hieronder blijven ongewijzigd = de light-mode; het
     [data-theme='dark'] .ob-* blok onderaan mapt élk hardcoded wit vlak/rand/tint naar donker, zodat
     tekst én vlakken samen flippen (geen wit-op-wit meer — het oude WI-11-risico). Kleur = var(--txt)
     zodat elk element ZONDER expliciete kleur in beide thema's leesbaar blijft. */
  color: var(--txt, #181a1f);
  min-height: 100dvh;
  background: var(--bg, #f3f1eb);
  display: flex;
  flex-direction: column;
  align-items: center;
  /* B11 (store): respecteer de notch/home-indicator in standalone-PWA. viewport-fit=cover staat
     in base.njk; env() valt terug op 0 buiten standalone. */
  padding: env(safe-area-inset-top) calc(16px + env(safe-area-inset-right))
    calc(40px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));
  /* Onboarding-scoped tokens voor de resterende inline stijlen in onboarding.njk (muted tekst, secundaire
     donkere knop, succes-groen). Lichte waarde hier = de bestaande look; dark-waarde in het blok onderaan. */
  --ob-muted: #6f6e68;
  --ob-darkbtn: #181a1f;
  --ob-ok: #256029;
  --ob-focus: #8c5a00;
}
[data-theme='dark'] .ob-root {
  --ob-muted: #a8a49c;
  --ob-darkbtn: #363a43;
  --ob-ok: #6bbf7a;
  --ob-focus: #f2a338;
}

/* B5 (store a11y): zichtbare keyboard-focus op alle onboarding-knoppen (segs, lang-pills,
   platform-seg, keuzes). :focus-visible toont alleen bij toetsenbord-navigatie, niet bij muis. */
.ob-root button:focus-visible,
.ob-root a.ob-btn-amber:focus-visible,
.ob-root a.ob-btn-dark:focus-visible,
.ob-root a.ob-btn-ghost:focus-visible,
.ob-root a.ob-linklike:focus-visible {
  outline: 2px solid var(--ob-focus);
  outline-offset: 2px;
}
/* Toggle: het echte <input> is visueel verborgen — toon de ring op de zichtbare track. */
.ob-toggle input:focus-visible + .ob-toggle-track {
  outline: 2px solid var(--ob-focus);
  outline-offset: 2px;
}

/* Top bar */
.ob-topbar {
  width: 100%;
  max-width: 480px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 0 0;
}

.ob-logo {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: 'Space Grotesk', sans-serif;
  font-size: 17px;
  font-weight: 700;
  color: var(--ink, #181a1f);
  text-decoration: none;
}

/* Top-bar logo = het echte BeepSweep live-mark (macros/icons.njk → livemark()) i.p.v. een kaal rondje.
   Kleur hard op donker pinnen: livemark svg erft normaal var(--txt), en die is in dark-mode licht →
   op de (altijd witte) onboarding-kaart zouden de haken dan onzichtbaar zijn. De amber punt zit vast in de SVG. */
.ob-logo .livemark { width: 26px; height: 26px; }
.ob-logo .livemark svg { width: 26px; height: 26px; color: #181a1f; }

/* Voortgang: één doorlopende amber-balk (was 8 nauwelijks-leesbare 3px-streepjes; brand-audit Fase B).
   Leeg op stap 0/9 (welkom/klaar) -> transparant, geen kale track. */
.ob-pips {
  width: 108px;
  height: 6px;
  border-radius: 999px;
  background: #e2ddd2;
  overflow: hidden;
}
.ob-pips:empty { background: transparent; }
.ob-progress-fill {
  display: block;
  height: 100%;
  min-width: 6px;
  background: #f2a338;
  border-radius: 999px;
  transition: width 0.35s ease;
}

/* Content card */
.ob-card {
  width: 100%;
  max-width: 480px;
  background: #fff;
  border: 1.5px solid #d4cfc6;
  border-radius: 16px;
  padding: 28px 24px 24px;
  margin-top: 18px;
}

/* Steps — only the active one is shown */
.ob-step { display: none; }
.ob-step.active { display: block; }

/* Step heading */
.ob-step-eyebrow {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  /* Blok 6 (a11y/WCAG 1.4.3): amber #f2a338 op wit is ~1.9:1 — als tékst een donkerder amber-bruin. */
  color: #8c5a00;
  margin: 0 0 6px;
}

.ob-step h2 {
  font-size: 22px;
  font-weight: 800;
  color: var(--ink, #181a1f);
  margin: 0 0 6px;
  line-height: 1.2;
}

.ob-step .ob-sub {
  font-size: 14px;
  color: #6f6e68;
  margin: 0 0 22px;
  line-height: 1.5;
}

/* Form fields */
.ob-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin-bottom: 14px;
}

.ob-field label {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink, #181a1f);
}

.ob-field input,
.ob-field textarea {
  background: #fff !important;
  border: 1.5px solid #d4cfc6;
  border-radius: 10px;
  padding: 11px 14px;
  font-size: 15px;
  font-family: 'Hanken Grotesk', sans-serif;
  color: var(--ink, #181a1f);
  width: 100%;
  box-sizing: border-box;
  transition: border-color 0.2s;
}

/* Blok 6 (a11y/WCAG 2.4.7): zichtbare focus — amber-rand alléén was te licht als enige indicator. */
.ob-field input:focus,
.ob-field textarea:focus {
  border-color: #c9801a;
  outline: none;
  box-shadow: 0 0 0 3px rgba(201, 128, 26, .30);
}

.ob-field input.ob-invalid,
.ob-field textarea.ob-invalid {
  border-color: #d93025;
  background: #fff8f8 !important;
}
.ob-field input.ob-invalid:focus,
.ob-field textarea.ob-invalid:focus {
  border-color: #d93025;
  box-shadow: 0 0 0 3px rgba(217,48,37,.12);
}

.ob-field textarea {
  resize: vertical;
  min-height: 120px;
}

/* OTP input row */
.ob-otp-row {
  display: flex;
  gap: 8px;
  margin: 16px 0 0;
}

.ob-otp-digit {
  flex: 1;
  text-align: center;
  font-size: 22px;
  font-weight: 700;
  padding: 10px 0;
  background: #fff !important;
  border: 1.5px solid #d4cfc6;
  border-radius: 10px;
  color: var(--ink, #181a1f);
  font-family: 'Space Grotesk', sans-serif;
  caret-color: #f2a338;
}

.ob-otp-digit:focus { border-color: #c9801a; outline: none; box-shadow: 0 0 0 3px rgba(201, 128, 26, .30); }

/* Blok 6 (a11y): programmatic focus-doel bij stapwissel (showStep) — geen ring op een kop. */
.ob-step h1:focus, .ob-step h2:focus { outline: none; }

/* Buttons */
.ob-btn-amber {
  display: block;
  width: 100%;
  padding: 14px;
  background: #f2a338;
  border: 2px solid #c9801a;
  border-radius: 12px;
  font-family: 'Hanken Grotesk', sans-serif;
  font-size: 15px;
  font-weight: 700;
  color: #181a1f;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(180,120,0,.28);
  text-align: center;
  transition: background 0.15s, box-shadow 0.15s;
}
.ob-btn-amber:hover { background: #e8962a; }
.ob-btn-amber:disabled { opacity: .55; cursor: default; box-shadow: none; }
/* Inline-icoon (bv. WhatsApp) in een amber/dark knop — op maat + iets uitgelijnd met de tekst. */
.ob-btn-amber svg, .ob-btn-dark svg, .ob-btn-ghost svg { width: 17px; height: 17px; vertical-align: -3px; margin-right: 7px; }

.ob-btn-dark {
  display: block;
  width: 100%;
  padding: 14px;
  background: #181a1f;
  border: none;
  border-radius: 12px;
  font-family: 'Hanken Grotesk', sans-serif;
  font-size: 15px;
  font-weight: 700;
  color: #f3f1eb;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(0,0,0,.22);
  text-align: center;
  transition: background 0.15s;
}
.ob-btn-dark:hover { background: #2c2f38; }
.ob-btn-dark:disabled { opacity: .55; cursor: default; box-shadow: none; }

.ob-btn-ghost {
  display: block;
  width: 100%;
  padding: 12px;
  background: transparent;
  border: 1.5px solid #d4cfc6;
  border-radius: 12px;
  font-family: 'Hanken Grotesk', sans-serif;
  font-size: 14px;
  font-weight: 600;
  color: #6f6e68;
  cursor: pointer;
  text-align: center;
  transition: border-color 0.15s;
}
.ob-btn-ghost:hover { border-color: #b0a898; color: var(--ink, #181a1f); }
/* Brand-audit Fase B: laat de knop-klassen ook op <a> netjes renderen (gecentreerd, geen onderstreping),
   zodat de tel:-knoppen op stap 8/9 de klasse kunnen gebruiken i.p.v. gedupliceerde inline-stijlen. */
.ob-btn-amber, .ob-btn-dark, .ob-btn-ghost { text-align: center; text-decoration: none; }

/* Segmented control (formality) */
.ob-seg {
  display: flex;
  background: #f3f1eb;
  border: 1.5px solid #d4cfc6;
  border-radius: 10px;
  padding: 3px;
  gap: 3px;
}
.ob-seg button {
  flex: 1;
  padding: 9px;
  border: none;
  border-radius: 8px;
  background: transparent;
  font-family: 'Hanken Grotesk', sans-serif;
  font-size: 14px;
  font-weight: 600;
  color: #6f6e68;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
/* Brand-audit verdere ronde: actieve segment-staat als CSS-klasse i.p.v. inline-JS-stijlen (setSeg/setAcct/setKind). */
.ob-seg button.sel { background: #fff; color: #181a1f; box-shadow: 0 1px 4px rgba(0,0,0,.12); }

/* Language grid */
.ob-lang-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin: 8px 0;
}
.ob-lang-btn {
  padding: 10px 8px;
  border: 1.5px solid #d4cfc6;
  border-radius: 10px;
  background: #fff;
  font-family: 'Space Grotesk', sans-serif;
  font-size: 14px;
  font-weight: 700;
  color: var(--ink, #181a1f);
  cursor: pointer;
  text-align: center;
  transition: border-color 0.15s, background 0.15s;
}
.ob-lang-btn.sel { background: #fff8ee; border-color: #f2a338; color: #f2a338; }

/* Voice rows */
.ob-voice-list { display: flex; flex-direction: column; gap: 6px; margin: 8px 0; }

.ob-voice-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border: 1.5px solid #d4cfc6;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color 0.15s;
}
.ob-voice-row.sel { border-color: #f2a338; background: #fff8ee; }

.ob-voice-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 800;
  color: #fff;
  flex-shrink: 0;
  font-family: 'Space Grotesk', sans-serif;
}

.ob-voice-info { flex: 1; min-width: 0; }
.ob-voice-name { font-size: 14px; font-weight: 700; color: var(--ink, #181a1f); }
.ob-voice-desc { font-size: 12px; color: #6f6e68; margin-top: 1px; }

.ob-voice-play {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #f3f1eb;
  border: 1px solid #d4cfc6;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  color: #4a4944;
  transition: background 0.15s;
}
.ob-voice-play:hover { background: #f2a338; border-color: #c9801a; }
.ob-voice-play svg { width: 18px; height: 18px; display: block; }
/* Play/pause-staat (ONB #15): de rij die afspeelt toont pauze + amber knop. */
.ob-voice-play .vp-i-pause { display: none; }
.ob-voice-row.playing .ob-voice-play .vp-i-play { display: none; }
.ob-voice-row.playing .ob-voice-play .vp-i-pause { display: block; }
.ob-voice-row.playing .ob-voice-play { background: #f2a338; border-color: #c9801a; color: #181a1f; }

/* Policy toggles */
.ob-toggle-list { display: flex; flex-direction: column; gap: 10px; }
.ob-toggle-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 14px;
  border: 1.5px solid #d4cfc6;
  border-radius: 12px;
  background: #fff;
  gap: 12px;
}
/* Brand-audit Fase B: een merk-amber icoon vóór elke meldings-rij (was een kale settings-lijst). */
.ob-row-ic { flex-shrink: 0; display: inline-flex; align-items: center; color: #c9801a; }
.ob-row-ic svg { width: 22px; height: 22px; }
.ob-toggle-label { flex: 1; }
.ob-toggle-label strong { font-size: 14px; font-weight: 700; display: block; color: var(--ink, #181a1f); }
.ob-toggle-label span { font-size: 12px; color: #4a4944; }

/* Toggle switch */
.ob-toggle {
  position: relative;
  width: 44px;
  height: 26px;
  flex-shrink: 0;
}
.ob-toggle input { opacity: 0; width: 0; height: 0; position: absolute; }
.ob-toggle-track {
  position: absolute;
  inset: 0;
  background: #d4cfc6;
  border-radius: 13px;
  cursor: pointer;
  transition: background 0.2s;
}
.ob-toggle-track::after {
  content: '';
  position: absolute;
  top: 3px;
  left: 3px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #fff;
  transition: transform 0.2s;
  box-shadow: 0 1px 4px rgba(0,0,0,.2);
}
.ob-toggle input:checked + .ob-toggle-track { background: #f2a338; }
.ob-toggle input:checked + .ob-toggle-track::after { transform: translateX(18px); }

/* Mode cards */
.ob-mode-list { display: flex; flex-direction: column; gap: 10px; }
.ob-mode-card {
  padding: 14px 16px;
  border: 1.5px solid #d4cfc6;
  border-radius: 14px;
  background: #fff;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
  position: relative;
}
.ob-mode-card.sel { border-color: #f2a338; background: #fff8ee; }
.ob-mode-card input[type=radio] { position: absolute; opacity: 0; pointer-events: none; }
.ob-mode-label { font-size: 14px; font-weight: 700; color: var(--ink, #181a1f); margin-bottom: 4px; display: flex; align-items: center; gap: 8px; }
/* Brand-audit verdere ronde: merk-amber icoon vóór elke modus-kaart-titel (stap 4/5). */
.ob-mode-label svg { width: 18px; height: 18px; flex-shrink: 0; color: #c9801a; }
.ob-mode-desc { font-size: 13px; color: #6f6e68; line-height: 1.5; }
.ob-mode-badge {
  font-size: 11px;
  font-weight: 700;
  background: #f2a338;
  color: #181a1f;
  border-radius: 6px;
  padding: 2px 7px;
}
/* Beta-label (ToV-regel 5): rustig/neutraal, geen verkoop-amber. */
.ob-mode-badge.beta { background: #f3f1eb; border: 1px solid #d4cfc6; color: #4a4944; }

/* Tekst-link-knop (stap 8: "Ander nummer?"). */
.ob-linklike { background: none; border: none; padding: 0; font: inherit; font-size: 13px; font-weight: 600; color: #8c5a00; text-decoration: underline; cursor: pointer; }

/* Forwarding cards */
.ob-fw-card {
  padding: 14px 16px;
  border: 1.5px solid #d4cfc6;
  border-radius: 14px;
  background: #fff;
  margin-bottom: 10px;
}
.ob-fw-card h4 { font-size: 14px; font-weight: 700; margin: 0 0 6px; color: var(--ink, #181a1f); }
.ob-fw-code {
  font-family: 'Space Grotesk', monospace;
  font-size: 15px;
  background: #f3f1eb;
  border-radius: 8px;
  padding: 7px 12px;
  margin: 6px 0;
  display: inline-block;
}
.ob-fw-desc { font-size: 13px; color: #6f6e68; line-height: 1.5; margin: 0 0 10px; }
/* Stap-label boven een doorschakel-kaart (Stap 1 / Stap 2): maakt van de kaarten een duidelijke volgorde. */
.ob-fw-step {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--amber-d, #b06e00);
  margin: 0 0 8px;
}
[data-theme='dark'] .ob-fw-step { color: var(--amber, #f5a623); }
/* Geruststellend "later uitzetten kan via Instellingen"-zinnetje (geen actie in de onboarding). */
.ob-fw-later { font-size: 12px; color: #8a8880; line-height: 1.5; margin: 4px 2px 0; }
[data-theme='dark'] .ob-fw-later { color: #9a978f; }

/* Doorschakel-verificatie (stap 8): live status die op ✓ springt zodra de testoproep binnen is. */
.ob-verify-status { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: #6f6e68; }
.ob-verify-dot { width: 10px; height: 10px; border-radius: 50%; background: #d4cfc6; flex-shrink: 0; }
.ob-verify-status.ok { color: #8c5a00; }
.ob-verify-status.ok .ob-verify-dot { background: #f2a338; }

/* Done screen */
.ob-done-icon {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: #f2a338;
  color: #181a1f;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 16px;
}
.ob-done-icon svg { width: 32px; height: 32px; }
.ob-checklist { list-style: none; padding: 0; margin: 14px 0; }
.ob-checklist li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  padding: 7px 0;
  border-bottom: 1px solid #f0ede7;
  color: var(--ink, #181a1f);
}
.ob-checklist li:last-child { border-bottom: none; }
.ob-check-dot {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #fff1d8;
  color: #8c5a00;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  flex-shrink: 0;
}
.ob-check-dot svg { width: 12px; height: 12px; }

/* Navigation footer */
.ob-nav {
  width: 100%;
  max-width: 480px;
  display: flex;
  gap: 10px;
  margin-top: 14px;
}
.ob-nav .ob-btn-ghost { flex: 1; }
.ob-nav .ob-btn-amber,
.ob-nav .ob-btn-dark { flex: 2; }

/* Inline error */
.ob-error {
  background: #fff0f0;
  border: 1px solid #f5c6c6;
  border-radius: 10px;
  padding: 10px 14px;
  font-size: 13px;
  color: #b92020;
  margin-top: 10px;
  display: none;
}
.ob-error.show { display: block; }

/* Info tip */
.ob-tip {
  background: #f3f1eb;
  border-radius: 10px;
  padding: 10px 14px;
  font-size: 13px;
  color: #6f6e68;
  margin-top: 10px;
  line-height: 1.5;
}

/* URL row */
.ob-url-row {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 14px;
}
.ob-url-row input { flex: 1; }
.ob-url-row button {
  padding: 11px 16px;
  background: #181a1f;
  border: none;
  border-radius: 10px;
  color: #f3f1eb;
  font-family: 'Hanken Grotesk', sans-serif;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background 0.15s;
}
.ob-url-row button:hover { background: #2c2f38; }
.ob-url-row button:disabled { opacity: .55; }

/* Language picker (step 0) */
.ob-lang-pick {
  display: flex;
  gap: 6px;
  justify-content: center;
  margin: 12px 0 4px;
  flex-wrap: wrap;
}
.ob-lp-btn {
  padding: 6px 12px;
  border: 1.5px solid #d4cfc6;
  border-radius: 20px;
  background: #fff;
  font-family: 'Hanken Grotesk', sans-serif;
  font-size: 13px;
  font-weight: 600;
  color: #6f6e68;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
  white-space: nowrap;
}
.ob-lp-btn.sel {
  border-color: #f2a338;
  background: #fff8ee;
  color: #181a1f;
}
.ob-lp-btn:hover:not(.sel) { border-color: #b0a898; color: #181a1f; }

/* Welcome screen */
.ob-welcome-hero {
  text-align: center;
  padding: 28px 0 20px;
}
.ob-welcome-logo-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin-bottom: 18px;
}
/* Welkom-hero logo = hetzelfde echte live-mark, groter. De sonar-ringen + puls zitten al in livemark(). */
.ob-welcome-logo-wrap .livemark { width: 42px; height: 42px; }
.ob-welcome-logo-wrap .livemark svg { width: 42px; height: 42px; color: #181a1f; }

.ob-welcome-wordmark {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 26px;
  font-weight: 700;
  color: var(--ink, #181a1f);
}
.ob-welcome-wordmark em { font-style: normal; color: #f2a338; }

.ob-welcome-hero h1 {
  font-size: 24px;
  font-weight: 800;
  color: var(--ink, #181a1f);
  margin: 0 0 10px;
  line-height: 1.25;
}
.ob-welcome-hero p {
  font-size: 15px;
  color: #6f6e68;
  margin: 0 0 24px;
  line-height: 1.55;
}

.ob-bullets {
  list-style: none;
  padding: 0;
  margin: 0 0 24px;
  text-align: left;
}
.ob-bullets li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 14px;
  color: var(--ink, #181a1f);
  padding: 8px 0;
  border-bottom: 1px solid #f0ede7;
}
.ob-bullets li:last-child { border-bottom: none; }
.ob-bullet-icon { line-height: 1; flex-shrink: 0; margin-top: 1px; color: #c9801a; }
.ob-bullet-icon svg { width: 18px; height: 18px; display: block; }

/* OTP sent state */
.ob-otp-wrap { display: none; margin-top: 20px; }
.ob-otp-wrap.show { display: block; }
.ob-otp-hint {
  font-size: 13px;
  color: #6f6e68;
  margin-bottom: 12px;
  line-height: 1.5;
}

/* Char counter */
.ob-char-counter {
  font-size: 12px;
  color: #6f6e68; /* Blok 6 (a11y): was #9e9a93 (~2.8:1) */
  text-align: right;
  margin-top: 4px;
}
.ob-char-counter.warn { color: #b92020; }

/* Contacts step */
.ob-contacts-preview {
  background: #f3f1eb;
  border-radius: 12px;
  padding: 12px 14px;
  margin: 16px 0;
}
.ob-contact-card {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  border: 1.5px solid #d4cfc6;
  border-radius: 10px;
  padding: 10px 12px;
}
.ob-contact-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #f2a338;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  font-weight: 800;
  color: #fff;
  flex-shrink: 0;
}
.ob-contact-name { font-size: 13px; font-weight: 700; color: var(--ink, #181a1f); }
.ob-contact-tag { font-size: 11px; color: #8c5a00; font-weight: 600; }


/* Blok 3 (store): consent-checkbox op stap 1 - checkbox + doorlopende labeltekst met links. */
.ob-consent { margin-top: 4px; }
.ob-checklabel { display: flex; gap: 10px; align-items: flex-start; font-size: 13px; line-height: 1.5; cursor: pointer; }
.ob-checklabel input { margin-top: 3px; width: 16px; height: 16px; flex-shrink: 0; accent-color: #f2a338; }
.ob-checklabel a { color: inherit; font-weight: 600; }

/* Pulse-animatie voor de test-knop na het activeren (s8ActivateBtn click). */
@keyframes ob-pulse-ring {
  0%   { box-shadow: 0 0 0 0 rgba(242,163,56,.55); }
  70%  { box-shadow: 0 0 0 14px rgba(242,163,56,0); }
  100% { box-shadow: 0 0 0 0 rgba(242,163,56,0); }
}
.ob-pulse { animation: ob-pulse-ring 0.7s ease-out 2; border-radius: 12px; }

/* Beta-badge naast het wordmark (welkomscherm). Amber = merkkleur, werkt in licht én donker. */
.ob-beta-badge {
  display: inline-block;
  font-family: 'Space Grotesk', sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  background: #f2a338;
  color: #181a1f;
  border-radius: 6px;
  padding: 2px 7px;
  vertical-align: middle;
  margin-left: 4px;
}

/* Feedback-tip op het welkomscherm: WhatsApp-icoon in merk-groen, iets nadrukkelijker dan een gewone tip. */
.ob-tip-feedback { display: flex; align-items: flex-start; gap: 8px; }
.ob-tip-feedback svg { width: 16px; height: 16px; flex-shrink: 0; margin-top: 1px; color: #25d366; }

/* ── Dark mode ─────────────────────────────────────────────────────────────
   Volgt het app-thema (data-theme='dark' op <html>, via base.njk). Alle lichte vlakken/randen/
   tinten uit de light-mode hierboven worden hier naar donker gemapt; merk-amber (#f2a338) en de
   amber-knoppen blijven vast. Doel: dezelfde look-and-feel als de app, tekst blijft leesbaar. */
[data-theme='dark'] .ob-logo .livemark svg,
[data-theme='dark'] .ob-welcome-logo-wrap .livemark svg { color: #f3f1eb; }

[data-theme='dark'] .ob-pips { background: rgba(243, 241, 235, 0.12); }

/* Kaarten, invoervelden, keuze-rijen: wit → surface, hairline → --hair */
[data-theme='dark'] .ob-card,
[data-theme='dark'] .ob-lang-btn,
[data-theme='dark'] .ob-voice-row,
[data-theme='dark'] .ob-toggle-row,
[data-theme='dark'] .ob-mode-card,
[data-theme='dark'] .ob-fw-card,
[data-theme='dark'] .ob-contact-card,
[data-theme='dark'] .ob-lp-btn { background: var(--surf); border-color: var(--hair); }

[data-theme='dark'] .ob-field input,
[data-theme='dark'] .ob-field textarea,
[data-theme='dark'] .ob-otp-digit { background: var(--surf) !important; border-color: var(--hair); }

/* Gedempte tekst (grijzen) → lichter grijs voor leesbaar contrast op donker */
[data-theme='dark'] .ob-step .ob-sub,
[data-theme='dark'] .ob-btn-ghost,
[data-theme='dark'] .ob-seg button,
[data-theme='dark'] .ob-voice-desc,
[data-theme='dark'] .ob-mode-desc,
[data-theme='dark'] .ob-fw-desc,
[data-theme='dark'] .ob-verify-status,
[data-theme='dark'] .ob-tip,
[data-theme='dark'] .ob-otp-hint,
[data-theme='dark'] .ob-char-counter,
[data-theme='dark'] .ob-welcome-hero p { color: #a8a49c; }
[data-theme='dark'] .ob-toggle-label span,
[data-theme='dark'] .ob-mode-badge.beta { color: #b8b4ac; }

/* Amber-bruine accent-tekst (op wit gekozen voor contrast) → lichter amber in dark */
[data-theme='dark'] .ob-step-eyebrow,
[data-theme='dark'] .ob-linklike,
[data-theme='dark'] .ob-verify-status.ok,
[data-theme='dark'] .ob-contact-tag,
[data-theme='dark'] .ob-check-dot { color: #e6ad4e; }

/* Actieve/geselecteerde staat: pale amber-tint → doorschijnend amber (werkt op donker) */
[data-theme='dark'] .ob-lang-btn.sel,
[data-theme='dark'] .ob-voice-row.sel,
[data-theme='dark'] .ob-mode-card.sel,
[data-theme='dark'] .ob-lp-btn.sel { background: rgba(242, 163, 56, 0.15); }
[data-theme='dark'] .ob-lp-btn.sel { color: var(--txt); }

/* Ingezonken vlakken (segment/tip/code/preview/play/beta-badge) → subtiel oplichtend op de kaart */
[data-theme='dark'] .ob-seg,
[data-theme='dark'] .ob-tip,
[data-theme='dark'] .ob-fw-code,
[data-theme='dark'] .ob-contacts-preview,
[data-theme='dark'] .ob-voice-play,
[data-theme='dark'] .ob-mode-badge.beta { background: rgba(243, 241, 235, 0.06); }
[data-theme='dark'] .ob-seg,
[data-theme='dark'] .ob-voice-play,
[data-theme='dark'] .ob-mode-badge.beta { border-color: var(--hair); }
[data-theme='dark'] .ob-voice-play { color: #cfcbc3; }

/* Segment actieve knop: wit → oplichtend vlak + volle tekstkleur */
[data-theme='dark'] .ob-seg button.sel { background: #363a43; color: var(--txt); }

/* Donkere knoppen (Importeer / URL-import): bijna-zwart → oplichtend zodat ze op de donkere kaart zichtbaar zijn */
[data-theme='dark'] .ob-btn-dark,
[data-theme='dark'] .ob-url-row button { background: #363a43; }
[data-theme='dark'] .ob-btn-dark:hover,
[data-theme='dark'] .ob-url-row button:hover { background: #434855; }

/* Toggle-track (uit-staat) */
[data-theme='dark'] .ob-toggle-track { background: rgba(243, 241, 235, 0.18); }

/* Scheidingslijnen in lijsten */
[data-theme='dark'] .ob-checklist li,
[data-theme='dark'] .ob-bullets li { border-bottom-color: var(--hair); }

/* Verificatie-stip (nog-niet-staat) */
[data-theme='dark'] .ob-verify-dot { background: rgba(243, 241, 235, 0.25); }

/* Check-dot chip achtergrond (klaar-scherm) */
[data-theme='dark'] .ob-check-dot { background: rgba(242, 163, 56, 0.20); }

/* Foutmeldingen + ongeldig veld: rood-op-wit → doorschijnend rood op donker */
[data-theme='dark'] .ob-error { background: rgba(217, 48, 37, 0.14); border-color: rgba(217, 48, 37, 0.40); color: #ff9b9b; }
[data-theme='dark'] .ob-field input.ob-invalid,
[data-theme='dark'] .ob-field textarea.ob-invalid { background: rgba(217, 48, 37, 0.12) !important; }

/* Laatste onboarding-stap (Noah): visuele "zet op je beginscherm"-gids per toestel. */
.ob-install {
  background: var(--surf, #fbfaf6);
  border: 1.5px solid var(--hair, #e7e3da);
  border-radius: 12px;
  padding: 14px;
  margin: 20px 0;
  text-align: left;
}
.ob-install-label { font-size: 12px; font-weight: 700; color: var(--ob-muted); letter-spacing: 0.04em; margin: 0 0 6px; }
.ob-install-intro { font-size: 14px; line-height: 1.5; margin: 0 0 12px; }
.ob-install-q { font-size: 13px; font-weight: 700; margin: 0 0 8px; }
.ob-install-btn { display: inline-flex; align-items: center; gap: 8px; width: 100%; justify-content: center; margin: 12px 0 2px; }
.ob-steps {
  list-style: none;
  counter-reset: obstep;
  margin: 12px 0 0;
  padding: 0;
}
.ob-steps[hidden] { display: none; }
.ob-steps li {
  counter-increment: obstep;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 2px;
  font-size: 14px;
  line-height: 1.35;
  border-bottom: 1px solid var(--hair, #e7e3da);
}
.ob-steps li:last-child { border-bottom: 0; }
.ob-steps li::before {
  content: counter(obstep);
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #f2a338;
  color: #1a1206;
  font-weight: 800;
  font-size: 12px;
  border-radius: 50%;
}
.ob-step-ic {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--amber-text, #8c5a00);
  background: color-mix(in srgb, #f2a338 13%, transparent);
  border-radius: 8px;
}
.ob-step-ic svg { width: 18px; height: 18px; }
.ob-install-desktop { font-size: 12px; color: var(--ob-muted); line-height: 1.5; margin: 12px 0 0; }
/* De install-prompt-knop respecteert het hidden-attribuut (.ob-btn-amber display:block overschreef het). */
.ob-install-btn[hidden] { display: none; }

/* Terugvalcodes bij doorschakelen (29-07-2026): weggevouwen onder de activatieknop, zodat een netwerk dat
   de standaard-MMI weigert niet meteen een support-vraag wordt. Zelfde toon als .ob-fw-later. */
.ob-fw-alt { margin-top: 12px; }
.ob-fw-alt summary { font-size: 13px; color: #6f6e68; cursor: pointer; }
.ob-fw-alt summary::-webkit-details-marker { color: #8a8880; }
.ob-fw-alt[open] summary { margin-bottom: 4px; }

/* `display: block` in de knop-klassen overrulet het standaard [hidden]-gedrag van de browser, waardoor een
   verborgen knop tóch zichtbaar bleef (gevonden 29-07-2026: op iOS stond de dode bel-knop naast de
   kopieer-knop). [hidden] moet hier altijd winnen. */
.ob-btn-amber[hidden],
.ob-btn-ghost[hidden],
.ob-btn-dark[hidden] { display: none; }
