/* Hanken Grotesk — direct in de hoofd-CSS (geen @import-keten: de browser
   ontdekte de fonts vroeger pas ná het parsen van style.css). Alleen de
   latin + latin-ext subsets; cyrillic/vietnamese zijn voor een NL-site
   overbodig. Eén woff2 per subset dekt alle gewichten (400–700). De
   Phosphor-iconen worden per pagina via een <link> geladen — parallel, en
   alleen waar iconen staan. */
@font-face {
  font-family: 'Hanken Grotesk'; font-style: normal; font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/hanken-ieVn2YZDLWuGJpnzaiwFXS9tYtpd59A.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Hanken Grotesk'; font-style: normal; font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/hanken-ieVn2YZDLWuGJpnzaiwFXS9tYtpT59CjCQ.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Phosphor-Bold hoort óók in de hoofd-CSS: deze stylesheet zet zelf glyphs uit
   dat font via ::before/::after (faq-plus, vinkjes in prijs- en vinklijsten).
   De losse fonts/phosphor-bold.css (met alle .ph-bold-iconklassen) is alleen
   nodig op pagina's met <i class="ph-bold …"> in de markup. Zonder deze regel
   toonden de faq/vink-iconen een leeg blokje op elke pagina zonder die link
   (blog, prijzen, veelgestelde vragen). Het bestand wordt pas gedownload
   zodra een glyph het nodig heeft. */
@font-face {
  font-family: "Phosphor-Bold";
  src: url(/fonts/Phosphor-Bold.woff2) format('woff2');
  font-weight: normal; font-style: normal; font-display: swap;
}

/* ======================================================================
   Design-systeem — uitvaartpresentatie-maken.nl
   Warme, ingetogen editorial-stijl. Eén font (Hanken Grotesk),
   Phosphor-iconen, zachte kaarten en een donkere primaire knop.
   ====================================================================== */

:root {
  /* nieuwe designtokens */
  --bg: #f3f2f0;
  --panel: #fbfaf9;
  --card: #ffffff;
  --ink: #282725;
  --muted: #63605c;
  --faint: #a09b95;
  --line: #e7e4e1;
  --tint: #eeebe8;
  --primary: #333230;
  --on-primary: #f5f4f2;
  --accent: #3e627c;
  --accent-soft: #e6eaee;
  --banner-bg: #eceae6;
  --banner-ink: #4c4945;

  --ok: #3d7a4a;
  --waarschuwing: #9a6b1f;
  --fout: #9a2f2f;

  /* zachte, warme accenten voor account-historie en gevarenzone */
  --danger: #9b4a3f;
  --danger-soft: #f3e7e4;
  --pos: #4a7a5a;
  --pos-soft: #e4eee7;

  --schaduw-kaart: 0 1px 2px rgba(40, 39, 37, .04), 0 1px 3px rgba(40, 39, 37, .03);
  --schaduw-zwevend: 0 2px 4px rgba(40, 39, 37, .04), 0 24px 48px rgba(40, 39, 37, .09);
  --rail: 1180px;

  /* aliassen op de oude tokennamen zodat bestaande regels blijven werken */
  --achtergrond: var(--bg);
  --kaart: var(--card);
  --rand: var(--line);
  --tekst: var(--ink);
  --tekst-licht: var(--muted);
  --accent-donker: #2f4c62;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: "Hanken Grotesk", "Segoe UI", system-ui, sans-serif;
  background: var(--bg);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

a { color: var(--accent); }
.verborgen { display: none !important; }

h1, h2, h3, h4 { letter-spacing: -.01em; }

/* ---------- knoppen ---------- */
.knop {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 1px solid var(--line);
  background: var(--card);
  color: var(--ink);
  border-radius: 10px;
  padding: 10px 16px;
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.1;
  cursor: pointer;
  white-space: nowrap;
  text-decoration: none;
  transition: background .15s, border-color .15s, color .15s, filter .15s;
}
.knop i { font-size: 1.15em; }
.knop:hover { background: var(--tint); border-color: var(--line); color: var(--ink); }
.knop.primair {
  background: var(--primary);
  border-color: var(--primary);
  color: var(--on-primary);
}
.knop.primair:hover { background: var(--primary); filter: brightness(1.14); }
.knop.stil { border-color: transparent; background: none; color: var(--muted); }
.knop.stil:hover { background: var(--tint); color: var(--ink); }
.knop.groot { padding: 14px 24px; font-size: 15.5px; border-radius: 12px; }
.knop.klein { padding: 4px 8px; font-size: 13px; border-radius: 8px; }
.knop.breed { width: 100%; }
.knop.gevaar { border-color: var(--fout); color: var(--fout); background: var(--card); }
.knop.gevaar:hover { background: var(--fout); border-color: var(--fout); color: #fff; filter: none; }
.knop:disabled { opacity: .55; cursor: default; }

/* ---------- gedeelde onderdelen ---------- */
/* merk-lockup (logo) */
.merk { display: inline-flex; align-items: center; text-decoration: none; color: var(--ink); }
.merk-logo { height: 48px; width: auto; display: block; flex-shrink: 0; }
.merk.klein .merk-logo { height: 42px; }

/* ======================================================================
   Site-header (publieke nav) — gedeeld component
   ====================================================================== */
.site-header {
  border-bottom: 1px solid var(--line);
  background: rgba(251, 250, 249, .85);
  backdrop-filter: blur(8px);
  position: sticky;
  top: 0;
  z-index: 20;
}
.site-header-inner {
  max-width: var(--rail);
  margin: 0 auto;
  padding: 16px 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}
.site-nav {
  display: flex;
  align-items: center;
  gap: 26px;
  white-space: nowrap;
}
.site-nav a {
  font-size: 14.5px;
  color: var(--muted);
  text-decoration: none;
  font-weight: 500;
}
.site-nav a:hover { color: var(--ink); }
.site-nav a.actief { color: var(--ink); font-weight: 600; }
.site-nav .nav-midden { display: contents; }
.site-nav .scheiding { width: 1px; height: 20px; background: var(--line); }
.site-nav a.inlog { color: var(--ink); font-weight: 600; }
.site-nav a.inlog:hover { color: var(--accent); }
.site-nav a.knop-nav {
  color: var(--on-primary); background: var(--primary);
  font-weight: 600; padding: 10px 18px; border-radius: 10px;
}
.site-nav a.knop-nav:hover { filter: brightness(1.14); color: var(--on-primary); }

/* Informatie-dropdown — puur CSS (hover + focus-within); op mobiel is de hele
   .nav-midden verborgen, dus dit hoeft alleen op desktop te werken. De trigger
   is zelf een link (naar /artikelen); de gewone .site-nav a-regels stylen hem. */
.site-nav .nav-dropdown { position: relative; display: inline-flex; }
.site-nav .nav-dropdown > a { display: inline-flex; align-items: center; gap: 4px; }
.site-nav .nav-dropdown > a i {
  font-size: 1.05em; position: relative; top: 2px; transition: transform .15s;
}
.site-nav .nav-dropdown:hover > a,
.site-nav .nav-dropdown:focus-within > a { color: var(--ink); }
.site-nav .nav-dropdown:hover > a i,
.site-nav .nav-dropdown:focus-within > a i { transform: rotate(180deg); }
.site-nav .nav-sub {
  position: absolute; top: 100%; left: 50%; transform: translateX(-50%);
  display: none; flex-direction: column; min-width: 232px;
  margin-top: 10px; padding: 8px;
  background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  box-shadow: var(--schaduw-zwevend);
}
/* onzichtbare brug over de 10px marge, anders klapt het paneel dicht terwijl
   de muis van de knop naar het paneel beweegt */
.site-nav .nav-sub::before {
  content: ""; position: absolute; left: 0; right: 0; top: -12px; height: 12px;
}
.site-nav .nav-dropdown:hover .nav-sub,
.site-nav .nav-dropdown:focus-within .nav-sub { display: flex; }
.site-nav .nav-sub a { padding: 9px 12px; border-radius: 8px; white-space: nowrap; }
.site-nav .nav-sub a:hover { background: var(--tint); color: var(--ink); }

/* mobiele nav: verberg linkgroep + aanmeldknop; alleen merk + één inlogknop */
@media (max-width: 760px) {
  .site-header-inner { padding: 14px 20px; }
  .site-nav { gap: 14px; }
  .site-nav .nav-midden { display: none; }
  .site-nav a.knop-nav { display: none; }
  .site-nav a.inlog {
    color: var(--on-primary); background: var(--primary);
    padding: 10px 18px; border-radius: 10px;
  }
  .site-nav a.inlog:hover { color: var(--on-primary); filter: brightness(1.14); }
  /* het v2-logo is breder; iets lager zodat logo + inlogknop op 360px passen */
  .site-header .merk-logo { height: 38px; }
}

/* ======================================================================
   Site-footer — gedeeld component (kolommenlayout)
   ====================================================================== */
.site-footer { border-top: 1px solid var(--line); background: var(--panel); }
.site-footer-grid {
  max-width: var(--rail);
  margin: 0 auto;
  padding: 56px 40px 44px;
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr 1fr;
  gap: 48px;
}
.footer-merk { max-width: 300px; }
.footer-merk .merk { margin-bottom: 16px; }
.footer-merk p { font-size: 14px; line-height: 1.6; color: var(--muted); margin: 0 0 20px; }
.footer-contact { display: flex; flex-direction: column; gap: 9px; font-size: 13.5px; }
.footer-contact a {
  display: inline-flex; align-items: center; gap: 9px;
  color: var(--muted); text-decoration: none;
}
.footer-contact a:hover { color: var(--ink); }
.footer-contact i { font-size: 16px; color: var(--accent); }
.footer-kolom { display: flex; flex-direction: column; gap: 12px; font-size: 14px; font-weight: 500; }
.footer-kop {
  font-size: 11.5px; letter-spacing: .13em; text-transform: uppercase;
  color: var(--faint); font-weight: 700; margin-bottom: 6px;
}
.footer-kolom a, .footer-kolom .link-knop { color: var(--muted); text-decoration: none; text-align: left; }
.footer-kolom a:hover, .footer-kolom .link-knop:hover { color: var(--ink); text-decoration: none; }
.site-footer-onderbalk { border-top: 1px solid var(--line); }
.site-footer-onderbalk-inner {
  max-width: var(--rail);
  margin: 0 auto;
  padding: 20px 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px 16px;
  flex-wrap: wrap;
  font-size: 12.5px;
  color: var(--faint);
}
@media (max-width: 940px) {
  .site-footer-grid { grid-template-columns: 1fr 1fr; gap: 40px; }
}
@media (max-width: 560px) {
  .site-footer-grid { grid-template-columns: 1fr; gap: 34px; padding: 44px 20px 36px; }
  .site-footer-onderbalk-inner { padding: 16px 20px; }
}

/* ======================================================================
   Landingspagina
   ====================================================================== */
#landing { display: block; }
.landing-balk { /* legacy hook, ongebruikt op de nieuwe landing */ }

.rail { max-width: var(--rail); margin: 0 auto; padding-left: 40px; padding-right: 40px; }

/* banden: afwisselende sectie-achtergronden over de volle breedte */
.band { border-bottom: 1px solid var(--line); }
.band.getint { background: var(--panel); }

/* kicker (klein kopje boven een titel) */
.kicker {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 12.5px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--accent); font-weight: 700;
}
.kicker.streep::before { content: ""; width: 22px; height: 1.5px; background: var(--accent); }
.sectie-kop .kicker { margin-bottom: 14px; }
.sectie-tekst .kicker { margin-bottom: 10px; }

/* hero */
.hero {
  max-width: var(--rail);
  margin: 0 auto;
  padding: 80px 40px 74px;
  display: grid;
  grid-template-columns: 1.02fr 1fr;
  gap: 64px;
  align-items: center;
}
.hero h1 {
  font-size: 53px;
  line-height: 1.07;
  font-weight: 700;
  letter-spacing: -.025em;
  margin: 0 0 22px;
  color: var(--ink);
}
.hero h1 span { color: var(--faint); }
.hero-sub {
  font-size: 17.5px;
  line-height: 1.62;
  color: var(--muted);
  margin: 0 0 32px;
  max-width: 480px;
}
.hero-sub strong { color: var(--accent); font-weight: 700; }
.hero-cta { display: flex; align-items: center; gap: 14px; margin-bottom: 22px; flex-wrap: wrap; }
.hero-mini {
  display: flex; align-items: center; gap: 18px; flex-wrap: wrap;
  font-size: 13.5px; color: var(--faint); font-weight: 500;
}
.hero-mini span { display: inline-flex; align-items: center; gap: 7px; }
.hero-mini i { font-size: 16px; color: var(--accent); }

/* sfeerbeeld in de hero, met overlappende product-preview */
.hero-beeld { position: relative; }
.hero-beeld .foto {
  border-radius: 18px; overflow: hidden; aspect-ratio: 4 / 5;
  box-shadow: 0 2px 4px rgba(40, 39, 37, .05), 0 30px 60px rgba(40, 39, 37, .12);
}
.hero-beeld .foto img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero-beeld .preview { position: absolute; left: -34px; bottom: 24px; width: 280px; }

/* product-preview kaart in de hero */
.preview {
  background: var(--card); border: 1px solid var(--line); border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 2px 4px rgba(40, 39, 37, .06), 0 24px 44px rgba(40, 39, 37, .16);
}
.preview-balk {
  display: flex; align-items: center; gap: 9px;
  padding: 11px 14px; border-bottom: 1px solid var(--line);
}
.preview-balk .mini-badge {
  width: 20px; height: 20px; border-radius: 6px; background: var(--primary);
  color: var(--on-primary); font-weight: 700; font-size: 11px;
  display: inline-flex; align-items: center; justify-content: center;
}
.preview-balk .naam { font-size: 12px; font-weight: 600; white-space: nowrap; }
.preview-balk .chip {
  margin-left: auto; display: inline-flex; align-items: center; gap: 4px;
  font-size: 10px; font-weight: 600; color: var(--accent);
  background: var(--accent-soft); padding: 3px 8px; border-radius: 999px;
}
.preview-balk .chip i { font-size: 12px; }
.preview-body { padding: 12px; background: var(--bg); display: flex; flex-direction: column; gap: 8px; }
.preview-blok {
  background: var(--card); border: 1px solid var(--line);
  border-radius: 9px; padding: 9px 10px;
}
.preview-blok .rij { display: flex; align-items: center; gap: 7px; }
.preview-pill {
  display: inline-flex; align-items: center; gap: 5px; flex: none;
  padding: 3px 7px; border-radius: 999px;
  background: var(--tint); border: 1px solid var(--line);
  font-size: 8px; letter-spacing: .05em; text-transform: uppercase;
  color: var(--muted); font-weight: 700;
}
.preview-pill i { font-size: 11px; color: var(--accent); }
.preview-blok .titel { font-size: 11.5px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.preview-grid {
  display: grid; grid-template-columns: repeat(6, 1fr); gap: 4px;
  margin-top: 8px;
}
.preview-grid span {
  aspect-ratio: 1; border-radius: 4px; border: 1px solid var(--line);
  background-image: repeating-linear-gradient(135deg, var(--tint), var(--tint) 4px, var(--panel) 4px, var(--panel) 8px);
}

/* trust-strip (donkere band) */
.trust { background: var(--ink); }
.trust-inner {
  max-width: var(--rail); margin: 0 auto;
  padding: 26px 40px;
  display: flex; align-items: center; justify-content: center;
  gap: 40px; flex-wrap: wrap;
  font-size: 14.5px; color: var(--on-primary); font-weight: 500;
}
.trust-inner span.item { display: inline-flex; align-items: center; gap: 10px; }
.trust-inner i { font-size: 20px; color: #9db4c4; }
.trust-inner .stip { width: 4px; height: 4px; border-radius: 50%; background: rgba(245, 244, 242, .35); }

/* sectiekop (gecentreerd) */
.sectie {
  max-width: var(--rail);
  margin: 0 auto;
  padding: 84px 40px 88px;
}
.sectie-kop { text-align: center; max-width: 580px; margin: 0 auto 50px; }
.sectie-kop h2 { font-size: 38px; font-weight: 700; letter-spacing: -.02em; margin: 0 0 14px; }
.sectie-kop p { font-size: 16.5px; color: var(--muted); margin: 0; line-height: 1.6; }

/* stappen (hoe het werkt) */
.stappen { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.stap {
  background: var(--card); border: 1px solid var(--line);
  border-radius: 16px; padding: 30px 28px;
}
.stap-nr {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 12px;
  background: var(--tint); color: var(--ink);
  font-weight: 700; font-size: 17px; margin-bottom: 20px;
}
.stap h3 { font-size: 19px; font-weight: 600; margin: 0 0 10px; letter-spacing: -.01em; }
.stap p { font-size: 14.5px; line-height: 1.6; color: var(--muted); margin: 0; }

/* stap-kaarten op de landing: mini-mockup boven de tekst */
#landing .stap { padding: 0; overflow: hidden; }
.stap-visual {
  aspect-ratio: 16 / 10; border-bottom: 1px solid var(--line);
  position: relative; background: var(--card); padding: 16px; overflow: hidden;
}
.stap-badge {
  position: absolute; top: 12px; right: 12px; z-index: 2;
  display: flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: 10px;
  background: var(--ink); color: var(--on-primary);
  font-weight: 700; font-size: 15px;
  box-shadow: 0 6px 16px rgba(40, 39, 37, .28);
}
.stap-body { padding: 24px 26px 28px; }

/* mini-mockups in de stap-visuals */
.illus { display: flex; flex-direction: column; gap: 7px; }
.illus-blok {
  background: var(--card); border: 1px solid var(--line); border-radius: 8px;
  padding: 7px 9px; display: flex; align-items: center; gap: 7px;
  box-shadow: 0 1px 2px rgba(20, 18, 15, .03);
}
.illus-blok .greep { font-size: 13px; color: var(--faint); flex: none; }
.illus-blok.actief { box-shadow: 0 6px 14px rgba(20, 18, 15, .10); transform: translateX(6px); }
.illus-blok.actief .greep { color: var(--accent); }
.mini-pill {
  display: inline-flex; align-items: center; gap: 4px; flex: none;
  padding: 2px 6px; border-radius: 999px;
  background: var(--tint); border: 1px solid var(--line);
  font-size: 7.5px; letter-spacing: .05em; text-transform: uppercase;
  color: var(--muted); font-weight: 700;
}
.mini-pill i { font-size: 10px; color: var(--accent); }
.illus-titel { font-size: 11px; font-weight: 500; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.illus-stippel {
  border: 1.5px dashed var(--line); border-radius: 8px; padding: 6px 9px;
  display: flex; align-items: center; gap: 6px; color: var(--faint);
  font-size: 10px; font-weight: 600;
}
.illus-stippel i { font-size: 12px; }
.illus-kaart {
  background: var(--card); border: 1px solid var(--line); border-radius: 10px;
  padding: 12px; box-shadow: 0 1px 2px rgba(20, 18, 15, .03);
}
.illus-kaart-kop { display: flex; align-items: center; gap: 6px; margin-bottom: 11px; }
.illus-media { display: flex; gap: 10px; }
.illus-links { flex: none; width: 96px; display: flex; flex-direction: column; gap: 8px; }
.mini-bestand {
  display: flex; gap: 7px; align-items: center;
  border: 1px solid var(--line); border-radius: 8px; padding: 7px 8px; background: var(--panel);
}
.mini-bestand > i { font-size: 15px; color: var(--muted); flex: none; }
.mini-info { display: flex; flex-direction: column; min-width: 0; }
.mini-info b { font-size: 9px; font-weight: 600; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mini-info small { font-size: 8px; color: var(--faint); }
.mini-telling { display: flex; align-items: center; gap: 5px; font-size: 8.5px; color: var(--muted); }
.mini-telling i { font-size: 12px; color: var(--accent); }
.mini-tegels { flex: 1; display: grid; grid-template-columns: repeat(6, 1fr); gap: 4px; align-content: start; }
.mini-tegels span {
  aspect-ratio: 1; border-radius: 4px; border: 1px solid var(--line);
  background-image: repeating-linear-gradient(135deg, var(--tint), var(--tint) 4px, var(--panel) 4px, var(--panel) 8px);
}
.mini-tegels .tegel-meer {
  display: flex; align-items: center; justify-content: center;
  background: var(--tint); background-image: none;
  font-size: 8px; color: var(--muted); font-weight: 700;
}
.illus-banner {
  display: flex; align-items: center; gap: 6px; padding: 7px 10px; border-radius: 8px;
  background: var(--accent-soft); color: var(--accent); font-size: 10px; font-weight: 600;
}
.illus-banner i { font-size: 14px; }
.illus-bestand {
  background: var(--card); border: 1px solid var(--line); border-radius: 9px;
  padding: 9px 10px; display: flex; align-items: center; gap: 9px;
  box-shadow: 0 1px 2px rgba(20, 18, 15, .03);
}
.illus-bestand .icoon {
  width: 30px; height: 30px; border-radius: 7px; background: var(--tint);
  display: inline-flex; align-items: center; justify-content: center; flex: none;
}
.illus-bestand .icoon i { font-size: 17px; color: var(--accent); }
.illus-bestand .mini-info b { font-size: 11px; }
.illus-bestand .mini-info small { font-size: 9px; }
.illus-download {
  display: flex; align-items: center; justify-content: center; gap: 7px;
  padding: 9px; border-radius: 8px; background: var(--primary); color: var(--on-primary);
  font-size: 11px; font-weight: 600;
}
.illus-download i { font-size: 15px; }

/* kenmerken (4 kolommen) */
.kenmerken {
  max-width: var(--rail); margin: 0 auto; padding: 64px 40px;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px;
}
.kenmerk { padding: 4px; }
.kenmerk > i { font-size: 28px; color: var(--accent); }
.kenmerk h4 { font-size: 16px; font-weight: 600; margin: 18px 0 8px; }
.kenmerk p { font-size: 14px; line-height: 1.55; color: var(--muted); margin: 0; }

/* voor-wie kaarten: foto boven, icoon + tekst eronder */
.wie-kaart { background: var(--card); border: 1px solid var(--line); border-radius: 16px; overflow: hidden; }
.wie-kaart img {
  display: block; width: 100%; height: auto; aspect-ratio: 3 / 2;
  object-fit: cover; border-bottom: 1px solid var(--line);
}
.wie-body { padding: 26px 26px 28px; }
.wie-icoon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 11px; background: var(--tint);
  margin-bottom: 16px;
}
.wie-icoon i { font-size: 20px; color: var(--accent); }
.wie-body h3 { font-size: 19px; font-weight: 600; margin: 0 0 10px; letter-spacing: -.01em; }
.wie-body p { font-size: 14.5px; line-height: 1.6; color: var(--muted); margin: 0; }

/* prijzen op de landing */
#landing .prijs-kaarten { max-width: 920px; margin: 30px auto 0; grid-template-columns: repeat(3, 1fr); }
#landing .prijs-kaart { padding: 30px 26px; }
#landing .prijs-kaart.uitgelicht {
  border-color: var(--accent);
  box-shadow: 0 0 0 .5px var(--accent), 0 16px 34px rgba(62, 98, 124, .14);
}

/* faq op de landing: losse kaartjes */
.faq-los { display: flex; flex-direction: column; gap: 12px; }
.faq-los .faq-item {
  background: var(--card); border: 1px solid var(--line);
  border-radius: 12px; padding: 0 22px;
}
.faq-los .faq-item:last-child { border-bottom: 1px solid var(--line); }
.faq-los .faq-item summary { padding: 18px 0; font-size: 15.5px; }

/* tekstsectie (uitleg op de landing) */
.sectie-tekst { max-width: 720px; margin: 0 auto; }
.sectie-tekst h2 { font-size: 28px; font-weight: 700; letter-spacing: -.02em; margin: 0 0 16px; }
.sectie-tekst h3 { font-size: 19px; font-weight: 600; margin: 30px 0 10px; }
.sectie-tekst p { font-size: 15.5px; line-height: 1.7; color: var(--muted); margin: 0 0 16px; }
.sectie-tekst a { color: var(--accent); font-weight: 600; text-decoration: none; }
.sectie-tekst a:hover { text-decoration: underline; }

/* doorlink onder de faq op de landing */
.faq-meer { text-align: center; margin-top: 24px; }
.faq-meer a { color: var(--accent); font-weight: 600; text-decoration: none; }
.faq-meer a:hover { text-decoration: underline; }

/* afsluitende CTA met sfeerfoto — gedeeld over alle publiekspagina's:
   volle-breedte band met rozenfoto + overlay, daarop een witte kaart */
.cta-foto { position: relative; overflow: hidden; background: var(--tint); }
.cta-foto-beeld {
  position: absolute; inset: 0;
  background-image: url('/cta-rozen.jpg');
  background-size: cover; background-position: center 30%;
  transform: scaleX(-1);
}
.cta-foto-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(20, 19, 18, .42) 0%, rgba(20, 19, 18, .14) 58%, rgba(20, 19, 18, .3) 100%);
}
.cta-foto-wrap { position: relative; max-width: var(--rail); margin: 0 auto; padding: 80px 40px; }
.cta-foto-paneel {
  background: var(--card); border-radius: 18px; padding: 42px 44px;
  box-shadow: 0 24px 60px rgba(20, 19, 18, .28);
  display: flex; align-items: center; justify-content: space-between;
  gap: 40px; flex-wrap: wrap;
}
.cta-foto-paneel .tekst { max-width: 600px; }
.cta-foto-paneel h2 {
  font-size: 31px; line-height: 1.13; font-weight: 700; letter-spacing: -.025em;
  margin: 0 0 12px; color: var(--ink); text-wrap: balance;
}
.cta-foto-paneel p { font-size: 16px; line-height: 1.6; color: var(--muted); margin: 0; }
.cta-foto-paneel .knop { flex-shrink: 0; }
@media (max-width: 940px) {
  .cta-foto-wrap { padding: 56px 28px; }
  .cta-foto-paneel { padding: 36px 32px; }
}
@media (max-width: 640px) {
  .cta-foto-wrap { padding: 40px 18px; }
  .cta-foto-paneel { flex-direction: column; align-items: stretch; padding: 30px 24px; gap: 18px; }
  .cta-foto-paneel h2 { font-size: 24px; }
  .cta-foto-paneel .knop { width: 100%; justify-content: center; }
}
.knop.op-donker { background: var(--on-primary); border-color: var(--on-primary); color: var(--primary); }
.knop.op-donker:hover { filter: brightness(1.04); }

/* hero op landingspagina's: gecentreerd, zonder sfeerfoto */
.land-hero { background: var(--panel); border-bottom: 1px solid var(--line); }
.land-hero-inner { max-width: 820px; margin: 0 auto; padding: 76px 40px 64px; text-align: center; }
.land-hero h1 {
  font-size: 46px; line-height: 1.1; font-weight: 700;
  letter-spacing: -.025em; margin: 0 0 18px; color: var(--ink);
}
.land-hero .land-sub {
  font-size: 17px; line-height: 1.62; color: var(--muted);
  margin: 0 auto 32px; max-width: 640px;
}
.land-hero .hero-cta { justify-content: center; margin-bottom: 24px; }
.land-hero .hero-mini { justify-content: center; }

/* variant: hero met sfeerfoto rechts, tekst links uitgelijnd */
.land-hero.met-beeld .land-hero-inner {
  max-width: 1140px; text-align: left;
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
  gap: 56px; align-items: center;
}
.land-hero.met-beeld .land-sub { margin: 0 0 32px; }
.land-hero.met-beeld .hero-cta,
.land-hero.met-beeld .hero-mini { justify-content: flex-start; }
.land-hero-beeld { margin: 0; }
.land-hero-beeld img {
  display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover;
  border-radius: 18px;
  box-shadow: 0 2px 4px rgba(40, 39, 37, .05), 0 30px 60px rgba(40, 39, 37, .12);
}

/* tablet: zelfde layout als desktop, compacter */
@media (max-width: 1024px) {
  .land-hero-inner { padding: 52px 28px 46px; }
  .land-hero h1 { font-size: 36px; }
  .land-hero .land-sub { font-size: 15px; }
  .land-hero.met-beeld .land-hero-inner { gap: 36px; }
  .hero { gap: 36px; padding: 48px 28px 44px; }
  .hero h1 { font-size: 38px; }
  .hero-sub { font-size: 15px; }
  .hero-beeld .preview { left: -20px; bottom: 16px; width: 230px; }
  .sectie { padding: 48px 28px 52px; }
  .sectie-kop { margin-bottom: 32px; }
  .sectie-kop h2 { font-size: 30px; }
  .sectie-kop p { font-size: 14.5px; }
  .stappen { gap: 16px; }
  .stap-body { padding: 18px 20px 22px; }
  .stap h3 { font-size: 17px; }
  .stap p { font-size: 13px; }
  .wie-body { padding: 18px 20px 22px; }
  .wie-body h3 { font-size: 16px; }
  .wie-body p { font-size: 12.5px; }
  .kenmerken { padding: 38px 28px; gap: 18px; }
  .kenmerk h4 { font-size: 14.5px; }
  .kenmerk p { font-size: 12.5px; }
  .trust-inner { padding: 20px 28px; gap: 28px; font-size: 13px; }
  #landing .prijs-kaart { padding: 24px 18px; }
  #landing .prijs-bedrag { font-size: 30px; }
}

/* mobiel: alles gestapeld */
@media (max-width: 640px) {
  .land-hero-inner { padding: 34px 20px 38px; }
  .land-hero h1 { font-size: 29px; }
  .land-hero .land-sub { font-size: 14.5px; }
  /* mobiel: foto boven de tekst */
  .land-hero.met-beeld .land-hero-inner { grid-template-columns: 1fr; gap: 24px; }
  .land-hero-beeld { order: -1; }
  .land-hero-beeld img { aspect-ratio: 3 / 2; border-radius: 14px; }
  .hero { grid-template-columns: 1fr; gap: 28px; padding: 28px 20px 34px; }
  .hero h1 { font-size: 31px; }
  .hero-sub { font-size: 14.5px; }
  .hero-cta { flex-direction: column; align-items: stretch; }
  .hero-cta .knop { justify-content: center; }
  /* mobiel: alleen tekst en knoppen in de hero; sfeerfoto + preview verbergen */
  .hero-beeld { display: none; }
  .wie-icoon { display: none; }
  .trust-inner { flex-direction: column; align-items: flex-start; gap: 12px; padding: 20px; font-size: 13.5px; }
  .trust-inner .stip { display: none; }
  .sectie { padding: 36px 20px 40px; }
  .sectie-kop { margin-bottom: 26px; }
  .sectie-kop h2 { font-size: 26px; }
  .stappen { grid-template-columns: 1fr; }
  .stap-visual { aspect-ratio: auto; min-height: 120px; }
  .kenmerken { grid-template-columns: 1fr 1fr; gap: 20px 16px; padding: 30px 20px; }
  .wie-kaart img { aspect-ratio: 16 / 9; }
  #landing .prijs-kaarten { grid-template-columns: 1fr; gap: 12px; }
  #landing .prijs-kaart {
    display: grid; grid-template-columns: 1fr auto; column-gap: 14px;
    grid-template-areas: "label bedrag" "per bedrag";
    align-items: center; text-align: left; padding: 18px 20px;
  }
  #landing .prijs-kaart h3 { grid-area: label; margin: 0 0 3px; }
  #landing .prijs-bedrag { grid-area: bedrag; font-size: 26px; }
  #landing .prijs-per { grid-area: per; margin: 0; }
  #landing .prijs-label { display: none; }
}

/* ======================================================================
   Inloggen / registreren — two-panel split
   ====================================================================== */
#auth { display: grid; grid-template-columns: 1.05fr 1fr; min-height: 100vh; }
.auth-merk-paneel {
  position: relative; overflow: hidden;
  background: var(--primary); color: var(--on-primary);
  padding: 44px 56px;
  display: flex; flex-direction: column; justify-content: space-between;
}
/* fotoachtergrond + overlay, zelfde recept als de deellink-pagina */
.auth-merk-paneel .foto {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
}
.auth-merk-paneel .overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(28, 25, 23, .72) 0%, rgba(28, 25, 23, .28) 34%,
    rgba(28, 25, 23, .55) 72%, rgba(28, 25, 23, .86) 100%);
}
/* inhoud boven de foto; als kolom horizontaal gecentreerd in het paneel */
.auth-merk-paneel .merk, .auth-pitch, .auth-veilig {
  position: relative; z-index: 1;
  width: 100%; max-width: 400px; margin-left: auto; margin-right: auto;
}
.auth-pitch h2 { font-size: 32px; font-weight: 700; letter-spacing: -.02em; line-height: 1.18; margin: 0 0 28px; }
.auth-pluspunten { display: flex; flex-direction: column; gap: 16px; }
.auth-pluspunten li {
  display: flex; align-items: center; gap: 12px;
  font-size: 15px; color: rgba(245, 244, 242, .85); list-style: none;
}
.auth-pluspunten i { font-size: 20px; color: #c8b7ab; }
.auth-veilig { display: flex; align-items: center; gap: 10px; font-size: 13px; color: rgba(245, 244, 242, .55); }
.auth-veilig i { font-size: 16px; }

.auth-form-paneel {
  display: flex; align-items: center; justify-content: center;
  padding: 44px 40px; background: var(--bg);
}
.auth-kaart { width: 100%; max-width: 384px; }
.auth-kaart h1 { font-size: 28px; font-weight: 700; letter-spacing: -.02em; margin: 0 0 8px; }
.auth-kaart .intro { font-size: 15px; color: var(--muted); margin: 0 0 28px; }
.auth-tabs {
  display: inline-flex; gap: 4px; margin-bottom: 22px;
  background: var(--tint); border-radius: 10px; padding: 4px;
}
.auth-tabs .knop {
  border: none; background: none; color: var(--muted);
  padding: 8px 16px; border-radius: 7px; font-size: 14px;
}
.auth-tabs .knop:hover { background: rgba(255, 255, 255, .5); color: var(--ink); }
.auth-tabs .knop.actief { background: var(--card); color: var(--ink); box-shadow: var(--schaduw-kaart); }
#auth-form { display: flex; flex-direction: column; gap: 14px; }
.veld-label { display: block; font-size: 13px; font-weight: 600; color: var(--muted); margin-bottom: 8px; }
#auth-form input,
#vergeten-form input {
  width: 100%;
  padding: 13px 14px;
  border: 1px solid var(--line);
  border-radius: 11px;
  font-size: 15px;
  background: var(--panel);
  color: var(--ink);
  font-family: inherit;
}
#auth-form input:focus,
#vergeten-form input:focus { outline: none; border-color: var(--accent); background: var(--card); }
#auth-form .knop.primair { padding: 14px 22px; border-radius: 11px; font-size: 15px; margin-top: 4px; }
#auth-fout { color: var(--fout); font-size: 13px; margin-top: 10px; min-height: 18px; }
.of-scheiding { display: flex; align-items: center; gap: 14px; color: var(--faint); font-size: 12.5px; margin: 22px 0; }
.of-scheiding::before, .of-scheiding::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.google-knop { width: 100%; padding: 13px 14px; font-size: 15px; text-decoration: none; border-radius: 11px; }
.auth-voetnoot { color: var(--muted); font-size: 13.5px; margin-top: 20px; text-align: center; }
.auth-voetnoot a { color: var(--accent); text-decoration: none; font-weight: 600; }
.auth-voetnoot a:hover { text-decoration: underline; }
.melding { color: var(--ok); font-size: 13px; margin-top: 10px; min-height: 18px; }
#vergeten-form { display: flex; flex-direction: column; gap: 12px; margin-top: 8px; }

@media (max-width: 820px) {
  #auth { grid-template-columns: 1fr; }
  .auth-merk-paneel { display: none; }
}

/* wachtwoord-reset (standalone) */
#reset-form { display: flex; flex-direction: column; gap: 12px; margin-top: 8px; }
#reset-form input {
  width: 100%; padding: 13px 14px; border: 1px solid var(--line);
  border-radius: 11px; font-size: 15px; background: var(--panel);
  color: var(--ink); font-family: inherit;
}
#reset-form input:focus { outline: none; border-color: var(--accent); background: var(--card); }
#reset-form .knop.primair { padding: 14px 22px; border-radius: 11px; margin-top: 4px; }
.auth-kaart .merk { color: var(--ink); text-decoration: none; }

/* ======================================================================
   Topbalk (app: diensten-overzicht) + startscherm
   ====================================================================== */
.topbalk {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 22px;
  position: sticky;
  top: 0;
  z-index: 30;
}
/* balkchroom, gedeeld met de editor-header: licht doorschijnend met blur */
.topbalk, #editor header {
  background: rgba(251, 250, 249, .9);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
}
.topbalk .ruimte { flex: 1; }
.topbalk-titel { font-weight: 600; }
.topbalk a.knop { text-decoration: none; }
.kop-scheiding { width: 1px; height: 26px; background: var(--line); }

/* navigatie-items in het globale menu: rustige pills, actief = getint */
.globaal-menu .knop.stil { padding: 8px 13px; border-radius: 9px; font-weight: 500; }
.globaal-menu .knop.stil.actief { background: var(--tint); color: var(--ink); font-weight: 600; }

/* saldo + kopen als één pil (openen samen het credits-scherm) */
.balk-scheiding { width: 1px; height: 26px; background: var(--line); flex: none; }
.credits-pil {
  display: inline-flex; align-items: center; gap: 8px;
  font: inherit; font-size: 13px; font-weight: 600; line-height: 1.1; color: var(--ink);
  background: var(--card); border: 1px solid var(--line); border-radius: 999px;
  padding: 5px 5px 5px 13px; cursor: pointer; white-space: nowrap;
  transition: background .15s, border-color .15s;
}
.credits-pil:hover { background: var(--tint); border-color: #d9d5d1; }
.credits-pil > i { font-size: 15px; color: var(--accent); }
.credits-pil .kopen {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 12.5px; font-weight: 600; color: var(--on-primary);
  background: var(--primary); padding: 5px 11px; border-radius: 999px;
}
.credits-pil .kopen i { font-size: 11px; }

#start { display: block; padding: 0; }
.intro { color: var(--muted); margin: 0 0 26px; line-height: 1.6; }

/* ======================================================================
   Diensten-overzicht (werkruimte)
   ====================================================================== */
.diensten-pagina { max-width: var(--rail); margin: 0 auto; padding: 52px 40px 90px; }
.diensten-hero { margin-bottom: 30px; }
.diensten-hero h1 { font-weight: 700; font-size: 40px; line-height: 1.05; letter-spacing: -.025em; margin: 0 0 12px; }
.diensten-hero .intro { max-width: 600px; margin: 0; font-size: 15px; }
.diensten-hero .intro strong { color: var(--ink); font-weight: 600; }

/* nieuwe dienst */
.nieuwe-dienst-kaart {
  background: var(--card); border: 1px solid var(--line); border-radius: 16px;
  padding: 22px 24px; margin-bottom: 34px; box-shadow: var(--schaduw-kaart);
}
#nieuw-form { display: flex; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin: 0; }
.nieuw-naam-veld { flex: 1; min-width: 260px; }
.nieuw-datum-veld { width: 190px; }
#nieuw-form .veld { margin: 0; }
.veld-opt { color: var(--faint); font-weight: 500; }
#nieuw-form input {
  width: 100%; margin-top: 8px; padding: 12px 15px;
  border: 1px solid var(--line); border-radius: 10px; font-size: 14.5px;
  background: var(--panel); color: var(--ink); font-family: inherit;
}
#nieuw-form input:focus { outline: none; border-color: var(--accent); }
#nieuw-form .knop.primair { padding: 13px 22px; }

/* toolbar */
.diensten-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 16px; flex-wrap: wrap; }
.toolbar-titel { display: flex; align-items: center; gap: 12px; }
.toolbar-titel h2 { font-size: 17px; font-weight: 700; letter-spacing: -.015em; margin: 0; }
.telpil { font-size: 13px; font-weight: 600; color: var(--muted); background: var(--tint); padding: 3px 10px; border-radius: 999px; }
.diensten-zoek { position: relative; }
.diensten-zoek > i { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); font-size: 15px; color: var(--faint); pointer-events: none; }
.diensten-zoek input {
  width: 200px; padding: 9px 14px 9px 34px; font-size: 13.5px;
  border: 1px solid var(--line); border-radius: 10px; background: var(--card);
  color: var(--ink); font-family: inherit;
}
.diensten-zoek input:focus { outline: none; border-color: var(--accent); }

/* lijst + rijen */
.dienst-lijst { display: flex; flex-direction: column; gap: 12px; }
.dienst-row {
  display: flex; align-items: center; gap: 20px;
  background: var(--card); border: 1px solid var(--line); border-radius: 14px;
  padding: 14px 18px 14px 14px; cursor: pointer;
  transition: border-color .16s, box-shadow .16s;
}
.dienst-row:hover { border-color: var(--faint); box-shadow: var(--schaduw-kaart); }
.dienst-row:hover .dienst-thumb-pijl { opacity: 1; transform: translate(-50%, -50%); }

.dienst-thumb {
  position: relative; width: 104px; height: 66px; border-radius: 9px;
  overflow: hidden; flex-shrink: 0; background: var(--tint); border: 1px solid var(--line);
}
.dienst-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.dienst-thumb.leeg { background-image: repeating-linear-gradient(135deg, rgba(40,39,37,.05) 0 8px, transparent 8px 16px); }
.dienst-thumb-lijn { position: absolute; left: 9px; bottom: 14px; width: 64%; height: 5px; border-radius: 3px; background: rgba(40,39,37,.20); }
.dienst-thumb-lijn.kort { bottom: 8px; width: 42%; height: 4px; background: rgba(40,39,37,.13); }
.dienst-thumb-pijl {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) translateX(-4px);
  width: 30px; height: 30px; border-radius: 50%; font-size: 17px; color: #fff;
  background: rgba(40,39,37,.55); display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity .16s, transform .16s;
}

.dienst-info { flex: 1; min-width: 0; }
.dienst-naam { font-size: 16.5px; font-weight: 700; letter-spacing: -.01em; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 5px; }
.dienst-meta { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--faint); font-weight: 500; flex-wrap: wrap; }
.dienst-meta-item { display: inline-flex; align-items: center; gap: 5px; }
.dienst-meta-item i { font-size: 14px; }
.dienst-punt { width: 3px; height: 3px; border-radius: 50%; background: var(--faint); flex-shrink: 0; }
.dienst-status { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; }
.dienst-status .stip { width: 6px; height: 6px; border-radius: 50%; }
.dienst-status.concept { color: var(--waarschuwing); }
.dienst-status.concept .stip { background: var(--waarschuwing); }
.dienst-status.definitief { color: var(--pos); }
.dienst-status.definitief .stip { background: var(--pos); }
.dienst-status.vergrendeld { color: var(--muted); }
.dienst-status.vergrendeld .stip { background: var(--muted); }
.dienst-gedeeld { display: inline-flex; align-items: center; gap: 5px; color: var(--accent); font-weight: 600; }
.dienst-gedeeld i { font-size: 14px; }

.dienst-acties { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.dienst-download { text-decoration: none; }
.dienst-openen { display: inline-flex; align-items: center; gap: 7px; font-size: 13.5px; color: var(--ink); font-weight: 600; padding: 9px 14px; border-radius: 9px; }
.dienst-openen i { font-size: 15px; }
.dienst-row:hover .dienst-openen { color: var(--accent); }

.dienst-menu-wrap { position: relative; }
.dienst-menu-knop { width: 38px; height: 38px; border-radius: 9px; background: none; border: 1px solid transparent; color: var(--faint); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.dienst-menu-knop:hover { background: var(--tint); color: var(--ink); }
.dienst-menu-knop i { font-size: 18px; }
.dienst-menu {
  position: absolute; top: calc(100% + 4px); right: 0; z-index: 20; min-width: 168px;
  background: var(--card); border: 1px solid var(--line); border-radius: 10px;
  box-shadow: var(--schaduw-zwevend); padding: 6px;
}
.dienst-menu-item { display: flex; align-items: center; gap: 9px; width: 100%; padding: 9px 11px; border: none; background: none; border-radius: 7px; font: inherit; font-size: 13.5px; font-weight: 600; color: var(--ink); cursor: pointer; text-align: left; }
.dienst-menu-item:hover { background: var(--tint); }
.dienst-menu-item i { font-size: 16px; }
.dienst-menu-item.gevaar { color: var(--fout); }
.dienst-menu-item.gevaar:hover { background: var(--danger-soft); }

.diensten-voet { display: flex; align-items: center; gap: 9px; margin-top: 22px; font-size: 13px; color: var(--faint); line-height: 1.5; }
.diensten-voet i { font-size: 16px; flex-shrink: 0; }
.diensten-leeg { color: var(--muted); padding: 20px 2px; font-size: 14px; }

/* tablet */
@media (max-width: 820px) {
  .diensten-pagina { padding: 40px 22px 70px; }
  .dienst-thumb { width: 96px; height: 60px; }
}
/* mobiel */
@media (max-width: 620px) {
  .diensten-pagina { padding: 28px 16px 60px; }
  .diensten-hero h1 { font-size: 30px; }
  #nieuw-form { flex-direction: column; align-items: stretch; }
  #nieuw-form .nieuw-naam-veld { min-width: 0; }
  #nieuw-form .nieuw-datum-veld { display: none; }
  #nieuw-form .knop.primair { width: 100%; }
  .diensten-zoek, .diensten-zoek input { width: 100%; }
  /* mobiel: thumb + tekst op regel 1, acties eronder op een volle regel */
  .dienst-row { flex-wrap: wrap; align-items: flex-start; gap: 4px 13px; padding: 12px; }
  .dienst-thumb { width: 72px; height: 52px; }
  .dienst-naam { font-size: 15px; }
  .dienst-acties { flex-basis: 100%; margin-top: 10px; justify-content: flex-start; }
  .dienst-openen { border: 1px solid var(--line); border-radius: 9px; }
  .dienst-menu-wrap { margin-left: auto; }
}

/* ======================================================================
   Editor
   ====================================================================== */
#editor { display: flex; flex-direction: column; min-height: 100vh; }
#editor header {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 11px 22px;   /* achtergrond/rand: zie het gedeelde balkchroom bij .topbalk */
  position: sticky;
  top: 0;
  z-index: 10;
}
#editor header .ruimte { flex: 1; }
#terug { padding: 8px 10px; }

/* dienst-context: grote titel + meta links, logboek + samenwerken rechts */
.dienstkop {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 28px;
  border-bottom: 1px solid var(--line);
  background: var(--card);
}
#dienst-titel {
  display: block;
  flex: 1;
  max-width: 640px;
  font-size: 24px;
  font-weight: 600;
  letter-spacing: -.01em;
  border: 1px solid transparent;
  background: none;
  color: var(--ink);
  padding: 4px 8px;
  margin-left: -8px;
  border-radius: 8px;
  font-family: inherit;
  min-width: 0;
}
#dienst-titel:hover { border-color: var(--line); }
#dienst-titel:focus { outline: none; border-color: var(--accent); background: var(--panel); }
#dienst-titel:disabled { color: var(--ink); opacity: 1; }
#save-status { color: var(--faint); font-size: 13px; white-space: nowrap; }
.dienstkop-acties { position: relative; display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

.editor-body {
  display: grid;
  grid-template-columns: 320px 1fr;
  flex: 1;
  min-height: 0;
}
#editor aside {
  background: var(--panel);
  border-right: 1px solid var(--line);
  padding: 24px 24px 26px;
  display: flex;
  flex-direction: column;
  gap: 22px;
}
#editor aside h2 {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .16em;
  color: var(--faint);
  font-weight: 700;
  margin: 0;
}
main { padding: 24px 28px 40px; min-width: 0; }
.main-kop { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }
.main-kop h2 { font-size: 24px; font-weight: 600; letter-spacing: -.01em; margin: 0; }
.main-kop .meta { font-size: 13px; color: var(--faint); }

/* globaal menu (verhuist mee naar het actieve scherm) */
.menu-anker { display: inline-flex; align-items: center; }
.globaal-menu { position: relative; display: inline-flex; align-items: center; gap: 9px; flex-wrap: wrap; justify-content: flex-end; }
/* desktop: de items staan gewoon inline in de balk */
.globaal-menu-items { display: contents; }

.veld { display: block; font-size: 13px; color: var(--muted); font-weight: 600; }
.veld select, .veld input[type=text], .veld input[type=date], .veld textarea {
  display: block;
  width: 100%;
  margin-top: 8px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card);
  font-size: 14px;
  color: var(--ink);
  font-family: inherit;
  font-weight: 500;
}
.veld select:focus, .veld input:focus, .veld textarea:focus { outline: none; border-color: var(--accent); }
.veld textarea { resize: vertical; line-height: 1.4; }
.veld-uitleg { display: block; font-size: 12px; color: var(--faint); margin-top: 6px; line-height: 1.5; font-weight: 400; }

/* datum-ankers: het datum-veld verhuist hiertussen (bovenaan / geavanceerd) */
.datum-anker-top, .datum-anker-adv { display: contents; }

/* sidebar-groep met eigen eyebrow (bijv. 'Beeld') */
.sidebar-groep { display: flex; flex-direction: column; gap: 14px; }

/* beeld-velden: compacte rij (thumb + naam + weghalen) of dropzone als leeg */
.beeld-rij { display: flex; align-items: center; gap: 12px; }
.beeld-thumb {
  flex: none; width: 52px; height: 52px; padding: 0;
  border: 1px solid var(--line); border-radius: 10px; overflow: hidden;
  background: var(--tint); cursor: pointer;
}
.beeld-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.beeld-thumb:hover { border-color: var(--accent); }
.beeld-info { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.beeld-titel { font-size: 13.5px; font-weight: 600; color: var(--ink); }
.beeld-bestand {
  font-size: 12px; color: var(--faint);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 190px;
}
.beeld-weg {
  align-self: flex-start; margin-top: 3px; padding: 0;
  background: none; border: none; cursor: pointer; font-family: inherit;
  font-size: 12px; font-weight: 600; color: var(--muted); text-decoration: underline;
}
.beeld-weg:hover { color: var(--accent); }

/* subtiel kaartje onderaan de sidebar: 'bewerkbaar tot …' */
.venster-notitie {
  display: flex; align-items: flex-start; gap: 9px;
  margin-top: auto; padding: 12px 14px;
  background: var(--panel); border: 1px solid var(--line); border-radius: 12px;
  font-size: 12.5px; line-height: 1.5; color: var(--muted);
}
.venster-notitie i { color: var(--accent); font-size: 16px; margin-top: 1px; flex: none; }

/* geavanceerde instellingen: subtiele toggle onderaan de sidebar */
.geavanceerd { border-top: 1px solid var(--line); padding-top: 20px; }
.geavanceerd-toggle {
  display: flex; align-items: center; gap: 9px; width: 100%;
  background: none; border: none; padding: 0; cursor: pointer;
  font-family: inherit; font-size: 13px; font-weight: 600; color: var(--muted);
}
.geavanceerd-toggle:hover { color: var(--ink); }
.geavanceerd-toggle > i:first-child { font-size: 16px; color: var(--faint); }
.geavanceerd-caret { margin-left: auto; font-size: 15px; color: var(--faint); transition: transform .15s ease; }
.geavanceerd-toggle.open .geavanceerd-caret { transform: rotate(180deg); }
.geavanceerd-inhoud { display: flex; flex-direction: column; gap: 22px; margin-top: 20px; }

/* muziek: pen-icoon om de nummernaam te wijzigen */
.dropzone.met-pen { position: relative; }
.muziek-pen {
  position: absolute; top: 6px; right: 6px;
  width: 28px; height: 28px; padding: 0;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--line); border-radius: 8px;
  background: var(--card); color: var(--muted);
  cursor: pointer; font-size: 14px; line-height: 1;
}
.muziek-pen:hover { color: var(--ink); border-color: var(--faint); }
.muziek-naam-inp {
  display: block; width: calc(100% - 8px);
  margin: 8px 4px 2px; padding: 7px 10px;
  border: 1px solid var(--line); border-radius: 8px;
  background: var(--card); color: var(--ink); font-size: 13px;
}

/* profiel: logo */
.logo-zone { margin: 8px 0 4px; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.logo-preview {
  max-width: 200px; max-height: 90px;
  border: 1px solid var(--line); border-radius: 10px;
  padding: 6px; background: #fff;
}

/* ---------- blokken ---------- */
/* rij = cijfer-cirkel (tijdlijn-spine) + blokkaart */
.blok-rij { position: relative; display: flex; align-items: flex-start; gap: 14px; }
.blok-rij:not(:last-child) { margin-bottom: 14px; }
.blok-nummer {
  flex: none; width: 28px; height: 28px; margin-top: 15px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 999px; background: var(--card); border: 1px solid var(--line);
  color: var(--muted); font-size: 13px; font-weight: 600;
  position: relative; z-index: 1;
}
.blok-rij.open .blok-nummer { background: var(--accent); border-color: var(--accent); color: #fff; }
/* doorlopende spine: onder de cirkel tot in de gap + boven de cirkel vanaf rij-top */
.blok-rij:not(:last-child)::before {
  content: ""; position: absolute; left: 14px; top: 29px; bottom: -14px;
  width: 2px; background: var(--line); transform: translateX(-50%); z-index: 0;
}
.blok-rij:not(:first-child)::after {
  content: ""; position: absolute; left: 14px; top: 0; height: 29px;
  width: 2px; background: var(--line); transform: translateX(-50%); z-index: 0;
}

.blok {
  flex: 1; min-width: 0;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 16px 18px;
  box-shadow: var(--schaduw-kaart);
}
.blok.sleep-over { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.blok-kop { display: flex; align-items: center; gap: 12px; cursor: pointer; }
/* prominente maximaliseer/minimaliseer-knop, rechts (accordion-plek) */
.blok-toggle {
  flex: none; width: 34px; height: 34px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--line); border-radius: 9px;
  background: var(--card); color: var(--muted); cursor: pointer; font-size: 17px;
}
.blok-toggle:hover { border-color: var(--accent); color: var(--accent); }
.blok-toggle i { display: inline-flex; transition: transform .18s ease; }
.blok.ingeklapt .blok-toggle i { transform: rotate(-90deg); }
.blok.ingeklapt { padding-bottom: 16px; }
.blok.ingeklapt .blok-inhoud { display: none; }
/* ingeklapt: rustige rij — verplaats/dupliceer/verwijder verbergen (slepen kan nog) */
.blok.ingeklapt .blok-acties { display: none; }
/* meta-label rechts (alleen ingeklapt); duwt zichzelf + toggle naar rechts */
.blok-meta { margin-left: auto; font-size: 12.5px; color: var(--faint); white-space: nowrap; }
.blok:not(.ingeklapt) .blok-meta { display: none; }
.greep { cursor: grab; color: var(--faint); font-size: 19px; user-select: none; display: inline-flex; }
.blok-type-slot { flex: none; display: inline-flex; }
.blok-type {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: .07em;
  background: var(--tint);
  border: 1px solid var(--line);
  color: var(--muted);
  border-radius: 999px;
  padding: 5px 11px 5px 9px;
  white-space: nowrap;
  font-weight: 700;
}
.blok-type i { font-size: 15px; color: var(--accent); }
.blok-kop input {
  flex: 0 1 auto;
  max-width: 100%;
  border: 1px solid transparent;
  background: none;
  font-size: 15px;
  font-weight: 500;
  color: var(--ink);
  padding: 6px 10px;
  border-radius: 8px;
  min-width: 0;
  font-family: inherit;
  cursor: text;
}
.blok-kop input:hover { border-color: var(--line); }
.blok-kop input:focus { outline: none; border-color: var(--accent); background: var(--card); }
.blok-kop input::placeholder { color: var(--faint); font-weight: 400; }
.blok-acties { display: flex; align-items: center; gap: 2px; margin-left: auto; }
.blok-acties .knop {
  width: 30px; height: 30px; padding: 0;
  border: none; background: none; color: var(--faint);
  border-radius: 8px; font-size: 16px;
}
.blok-acties .knop:hover { background: var(--tint); color: var(--ink); }
/* divider tussen kop en content zodra een blok open is */
.blok-inhoud {
  display: flex; flex-wrap: wrap; gap: 18px; align-items: flex-start;
  padding-left: 31px;
  margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line);
}
.blok-opties { display: flex; flex-direction: column; gap: 10px; font-size: 13.5px; color: var(--ink); min-width: 180px; }
.blok-opties select {
  padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px;
  background: var(--card); font-family: inherit; font-size: 13.5px;
}
.blok-opties label.checkbox { display: flex; align-items: center; gap: 9px; cursor: pointer; }
.blok-opties label.checkbox input { accent-color: var(--accent); width: 17px; height: 17px; }

.dropzone {
  border: 1.5px dashed var(--line);
  border-radius: 12px;
  padding: 12px 14px;
  min-width: 150px;
  min-height: 78px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  color: var(--faint);
  font-size: 13px;
  cursor: pointer;
  text-align: center;
  background: var(--panel);
  transition: border-color .15s, color .15s, background .15s;
}
.dropzone:hover, .dropzone.sleep-over { border-color: var(--accent); color: var(--accent); background: var(--card); }
.dropzone img { max-width: 120px; max-height: 78px; border-radius: 8px; }
.dropzone .bestand { font-size: 12.5px; color: var(--ink); font-weight: 600; max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dropzone .duur { font-size: 12px; color: var(--faint); }

.blok-inhoud .waarschuwing { flex: 1; font-size: 13px; color: var(--waarschuwing); align-self: center; }

.foto-strip {
  display: grid;
  grid-template-columns: repeat(auto-fill, 112px);
  gap: 8px;
  align-content: start; /* rijen strak op elkaar, ook als de strip meerekt (mobiele sheet) */
  flex: 1;
}
.foto-thumb { position: relative; cursor: grab; }
.foto-thumb img {
  width: 112px; height: 80px; object-fit: cover;
  border-radius: 8px; border: 1px solid var(--line); display: block;
}
.foto-thumb .weg {
  position: absolute;
  top: 4px;
  right: 4px;
  background: rgba(30, 30, 30, .6);
  color: #fff;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  font-size: 11px;
  line-height: 1;
  padding: 4px 6px;
  display: none;
}
.foto-thumb:hover .weg { display: block; }
/* touch: geen hover, dus het ✕-knopje altijd tonen */
@media (pointer: coarse) {
  .foto-thumb .weg { display: block; }
}
/* slepen (desktop): het doel licht op; tik-om-te-verplaatsen (mobiel): de gekozen foto */
.foto-thumb.sleep-doel img { outline: 2px solid var(--accent); outline-offset: -2px; }
.foto-thumb.verplaats-actief img {
  outline: 3px solid var(--accent); outline-offset: -3px; opacity: .7;
}
.verplaats-hint {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; background: var(--tint); border: 1px solid var(--line);
  border-radius: 10px; font-size: 13px; color: var(--muted);
}
.verplaats-hint .knop { margin-left: auto; flex: none; }
/* '+N'-tegel: toont de rest van de foto's */
.foto-meer {
  width: 112px; height: 80px; border-radius: 8px;
  border: 1px solid var(--line); background: var(--tint);
  color: var(--muted); font-weight: 600; font-size: 14px; cursor: pointer;
}
.foto-meer:hover { border-color: var(--accent); color: var(--accent); }
.foto-strip .dropzone {
  min-height: 80px; margin: 0; padding: 6px; font-size: 12px; text-align: center;
  display: flex; align-items: center; justify-content: center;
}

/* 'Alles in-/uitklappen' in de draaiboek-kop */
.alles-toggle {
  display: inline-flex; align-items: center; gap: 7px;
  background: none; border: none; cursor: pointer; font-family: inherit;
  font-size: 13px; font-weight: 600; color: var(--muted); padding: 4px;
}
.alles-toggle:hover { color: var(--ink); }
.alles-toggle i { font-size: 16px; color: var(--faint); }

.muziek-kolom { display: flex; flex-direction: column; gap: 8px; }
/* live-muziekblok: losse minuten- en secondenvelden i.p.v. één mm:ss-veld */
.duur-velden { display: flex; gap: 14px; margin-top: 8px; }
.duur-veld { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 600; color: var(--muted); }
.duur-velden .duur-veld input[type=text] { width: 64px; margin-top: 0; text-align: right; }
.calc { font-size: 12.5px; color: var(--muted); line-height: 1.45; max-width: 190px; }
.calc:empty { display: none; }
.calc.te-kort { color: var(--waarschuwing); font-weight: 600; }

.blok-toevoegen {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-top: 20px;
  padding: 18px 20px;
  border: 1.5px dashed var(--line);
  border-radius: 14px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}
.blok-toevoegen > span { color: var(--muted); }
.blok-toevoegen .knop { font-weight: 500; }
/* (?)-link naar de publieke uitlegpagina, rechts in de balk */
.blok-hulp {
  margin-left: auto; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: 50%;
  color: var(--muted); text-decoration: none; border: 1px solid var(--line);
  transition: color .15s, border-color .15s, background .15s;
}
.blok-hulp:hover { color: var(--accent); border-color: var(--accent); background: var(--panel); }
.blok-hulp i { font-size: 18px; }
.blok-toevoegen.compact .blok-hulp { width: 26px; height: 26px; }
/* compacte kopie boven het draaiboek, zichtbaar vanaf 4 blokken (zie renderBlokken);
   met #editor-prefix zodat hij wint van de voetlijn-marge op de onderste balk */
#editor .blok-toevoegen.compact { margin: 0 0 18px; padding: 10px 14px; gap: 8px 10px; }
.blok-toevoegen.compact > span { font-size: 12px; }
.blok-toevoegen.compact .knop { padding: 6px 10px; font-size: 13px; border-radius: 8px; }

/* actie-banner: één zone bovenaan de hoofdkolom die met de fase meebeweegt */
.actie-banner {
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  flex-wrap: wrap;
  margin-bottom: 22px;
  padding: 16px 20px;
  background: var(--card);
  border: 1px solid var(--line);
  border-left: 4px solid var(--accent);
  border-radius: 14px;
  box-shadow: var(--schaduw-kaart);
}
.actie-info { display: flex; align-items: center; gap: 14px; min-width: 0; }
.actie-icoon {
  flex: none; width: 40px; height: 40px; border-radius: 11px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--accent-soft); color: var(--accent); font-size: 20px;
}
.actie-titel { font-size: 15.5px; font-weight: 600; color: var(--ink); }
.actie-meta { font-size: 13px; color: var(--faint); margin-top: 2px; }
.actie-knoppen { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.actie-knoppen a.knop { text-decoration: none; }
.actie-banner.concept { border-left-color: var(--faint); }
.actie-banner.concept .actie-icoon { background: var(--tint); color: var(--muted); }
.actie-banner.fout { border-left-color: var(--fout); }
.actie-banner.fout .actie-icoon { background: #f7e9e6; color: var(--fout); }
.spinner.klein { width: 20px; height: 20px; border-width: 2px; }

/* mobiel-specifieke elementen: standaard verborgen op desktop */
.mobiel-only { display: none; }
.duimbalk { display: none; }
.sidebar-backdrop { display: none; }
.inst-sluit { display: none; }

.leeg-melding {
  text-align: center;
  color: var(--muted);
  padding: 46px 20px;
  border: 1.5px dashed var(--line);
  border-radius: 14px;
  background: var(--card);
}

@media (max-width: 860px) {
  .mobiel-only { display: inline-flex; }

  /* kop compacter: merk weg, dienstkop gestapeld */
  #editor header { padding: 12px 14px; }
  #editor header .merk { display: none; }
  .dienstkop { flex-direction: column; align-items: stretch; gap: 10px; padding: 14px 16px 12px; }
  #dienst-titel { font-size: 21px; max-width: none; }
  .dienstkop-acties { justify-content: flex-start; }

  /* in het uitklapmenu: scheiding als horizontale lijn, credits-pil als nette menuregel */
  .globaal-menu-items .balk-scheiding { width: auto; height: 1px; margin: 4px 6px; }
  .globaal-menu-items .credits-pil {
    width: 100%; border: none; background: none; border-radius: 8px;
    padding: 7px 8px 7px 12px; font-size: 13.5px;
  }
  .globaal-menu-items .credits-pil:hover { background: var(--tint); }
  .globaal-menu-items .credits-pil > i { font-size: 16px; color: var(--muted); }
  .globaal-menu-items .credits-pil .kopen { margin-left: auto; }

  /* globaal menu wordt een nette dropdown achter het kebab-icoon */
  .globaal-menu-items {
    display: none; position: absolute; top: calc(100% + 8px); right: 0;
    flex-direction: column; align-items: stretch; gap: 2px; min-width: 210px;
    padding: 6px; background: var(--card); border: 1px solid var(--line);
    border-radius: 12px; box-shadow: var(--schaduw-zwevend); z-index: 40;
  }
  .globaal-menu.open .globaal-menu-items { display: flex; }
  .globaal-menu-items .knop {
    justify-content: flex-start; width: 100%; border: none; background: none;
    padding: 11px 12px; font-weight: 500; border-radius: 8px;
  }
  .globaal-menu-items .knop:hover { background: var(--tint); }
  .globaal-menu-items .knop i { font-size: 18px; color: var(--muted); }

  /* sidebar als slide-in sheet achter het tandwiel */
  .editor-body { display: block; }
  #editor aside {
    position: fixed; top: 0; left: 0; bottom: 0; width: min(340px, 86vw);
    z-index: 60; transform: translateX(-100%); transition: transform .22s ease;
    border-right: 1px solid var(--line); border-bottom: none;
    overflow-y: auto; box-shadow: var(--schaduw-zwevend);
  }
  #editor.sidebar-open aside { transform: translateX(0); }
  .inst-sluit {
    display: inline-flex; position: absolute; top: 16px; right: 16px;
    background: none; border: none; cursor: pointer; font-size: 20px;
    color: var(--muted); padding: 4px;
  }
  .sidebar-backdrop {
    display: block; position: fixed; inset: 0; z-index: 55;
    background: rgba(20, 18, 16, .4); opacity: 0; pointer-events: none;
    transition: opacity .2s ease;
  }
  #editor.sidebar-open .sidebar-backdrop { opacity: 1; pointer-events: auto; }

  /* geavanceerde instellingen altijd open in de sheet (geen extra toggle) */
  #geavanceerd-toggle { display: none; }
  #geavanceerd-inhoud.verborgen { display: flex !important; }
  .geavanceerd { border-top: none; padding-top: 0; }

  main { padding: 16px 16px 92px; }   /* ruimte onder de duimbalk */
  .blok-inhoud { padding-left: 0; }

  /* actie-banner: primaire acties verhuizen naar de duimbalk */
  .actie-banner { padding: 14px 16px; margin-bottom: 16px; }
  .actie-knoppen .duim { display: none; }
  .actie-knoppen:empty { display: none; }

  /* duimbereikbare balk onderaan */
  .duimbalk {
    display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
    gap: 10px; padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
    background: var(--card); border-top: 1px solid var(--line);
    box-shadow: 0 -4px 16px rgba(0, 0, 0, .06);
  }
  .duimbalk.verborgen { display: none; }
  .duimbalk .knop { flex: 1; justify-content: center; }

  /* blokken: titel op een eigen regel onder de badge, geen sleepgreep */
  .blok-kop { flex-wrap: wrap; gap: 10px; }
  .blok-kop .greep { display: none; }
  .blok-nummer { cursor: pointer; }
  .blok-kop .blok-titel { order: 9; flex-basis: 100%; margin-left: -2px; pointer-events: none; }
}

/* ---- telefoon: compacte topbalk zodat hij nooit horizontaal scrollt ---- */
@media (max-width: 560px) {
  .topbalk { padding: 10px 14px; gap: 8px; }
  .merk.klein .merk-logo { height: 34px; }
  /* directe terug-knoppen in de topbalk tonen alleen hun pijl (navigatie zit in het menu) */
  .topbalk > .knop .knop-label { display: none; }
  .topbalk > .knop { padding: 9px 10px; }
}

/* mobiele fullscreen blok-editor (alleen zichtbaar wanneer .open) */
.blok-sheet {
  position: fixed; inset: 0; z-index: 70; background: var(--bg);
  display: none; flex-direction: column;
}
.blok-sheet.open { display: flex; }
.blok-sheet-kop {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px 10px 8px; background: var(--card);
  border-bottom: 1px solid var(--line);
}
.blok-sheet-titels { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.blok-sheet-titel { font-size: 15px; font-weight: 600; color: var(--ink); }
.blok-sheet-type { font-size: 12px; color: var(--faint); }
.blok-sheet-body {
  flex: 1; overflow-y: auto; padding: 18px 16px 24px;
  display: flex; flex-direction: column; gap: 20px;
}
.blok-sheet-body .blok-inhoud {
  flex-direction: column; align-items: stretch; padding-left: 0; gap: 18px;
  margin-top: 0; padding-top: 0; border-top: none;
}
.blok-sheet .foto-strip { grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); }
.blok-sheet .foto-thumb img,
.blok-sheet .foto-meer,
.blok-sheet .foto-strip .dropzone { width: 100%; height: auto; aspect-ratio: 7 / 5; }
.blok-sheet .foto-meer { display: flex; align-items: center; justify-content: center; }
.sheet-titel-veld { display: block; }
.blok-sheet .blok-titel {
  width: 100%; text-align: left; background: var(--card);
  border: 1px solid var(--line); border-radius: 10px;
  padding: 10px 12px; font-size: 15px; margin-top: 8px; pointer-events: auto;
}
.blok-sheet .blok-titel:focus { border-color: var(--accent); }
.sheet-acties { display: flex; gap: 10px; padding-top: 4px; }
.sheet-acties .knop { flex: 1; justify-content: center; }
.blok-sheet-voet {
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  background: var(--card); border-top: 1px solid var(--line);
}
.blok-sheet-voet .knop { width: 100%; justify-content: center; }

/* mobiel: beeld-groep (vaste foto + achtergrond) bovenaan als kaartje */
.beeld-anker { margin-bottom: 18px; }
.beeld-anker:empty { display: none; margin: 0; }
.beeld-anker .sidebar-groep {
  background: var(--card); border: 1px solid var(--line); border-radius: 14px;
  padding: 16px 18px; box-shadow: var(--schaduw-kaart);
}
/* mobiel: compact — geen 'Beeld'-kop of uitleg, alleen de twee velden */
.beeld-anker .sidebar-groep > h2,
.beeld-anker .sidebar-groep > .veld-uitleg { display: none; }

/* volgorde wijzigen */
.volgorde-uitleg { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; color: var(--muted); line-height: 1.5; }
.volgorde-uitleg i { color: var(--accent); font-size: 16px; margin-top: 1px; flex: none; }
.volgorde-lijst { display: flex; flex-direction: column; gap: 10px; }
.volgorde-rij {
  display: flex; align-items: center; gap: 12px;
  background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  padding: 10px 12px;
}
.volgorde-rij.actief { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.volgorde-rij .blok-nummer { flex: none; margin: 0; }
.blok-nummer.actief-nr { background: var(--accent); border-color: var(--accent); color: #fff; }
.volgorde-type { display: inline-flex; color: var(--accent); font-size: 17px; flex: none; }
.volgorde-titel { flex: 1; min-width: 0; font-weight: 500; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.volgorde-acties { display: flex; gap: 6px; flex: none; }
.volgorde-acties .knop {
  width: 40px; height: 40px; padding: 0; border: 1px solid var(--line);
  background: var(--tint); border-radius: 9px; color: var(--muted); font-size: 17px;
}
.volgorde-acties .knop:disabled { opacity: .35; cursor: default; }

/* compacte icoon-knop in de header (logboek) */
.knop.ico-knop { padding: 9px 10px; }
.knop.ico-knop i { font-size: 18px; }

/* logboek-popover (vanuit de editor-header) */
.popover {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  width: 360px;
  max-width: calc(100vw - 40px);
  max-height: 62vh;
  overflow: auto;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: var(--schaduw-zwevend);
  z-index: 30;
}
.popover-kop {
  position: sticky; top: 0;
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px; border-bottom: 1px solid var(--line);
  background: var(--card);
}
.popover-kop > span { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px; }
.popover-kop i { color: var(--accent); font-size: 16px; }
.popover-kop .ico-knop { padding: 4px 6px; }
#logboek-inhoud { padding: 10px 16px 14px; }
#logboek-inhoud .log-rij:last-child { border-bottom: none; }

/* aparte account- en samenwerken-pagina's */
.account-pagina { max-width: 760px; margin: 0 auto; padding: 44px 40px 80px; }
.account-pagina .pub-hero { margin-bottom: 26px; }
.account-pagina .pub-hero h1 { margin-bottom: 0; }
.account-pagina .account-sectie:first-of-type { border-top: none; margin-top: 26px; }

/* account-pagina kop met uitlog-knop rechts */
.account-kop { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; margin-bottom: 26px; }
.account-kop .pub-hero { margin-bottom: 0; }

/* eenmalige kennisgeving in het generatie-resultaat */
.gen-notitie {
  display: flex; gap: 11px; align-items: flex-start;
  background: var(--panel); border: 1px solid var(--line); border-radius: 12px;
  padding: 14px 16px; margin-top: 14px;
  font-size: 13.5px; line-height: 1.55; color: var(--muted);
}
.gen-notitie i { font-size: 19px; color: var(--accent); flex: none; margin-top: 1px; }

@media (max-width: 860px) {
  .account-pagina { padding: 32px 20px 60px; }
}

/* ======================================================================
   Credits kopen (in-app pagina)
   ====================================================================== */
.credits-pagina { max-width: 1180px; width: 100%; margin: 0 auto; padding: 44px 40px 80px; }

/* kop: intro links, saldo-kaart rechts */
.cr-kop {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 32px; flex-wrap: wrap; margin-bottom: 36px;
}
.cr-kop-tekst { max-width: 600px; }
.cr-kop-tekst .kicker { margin-bottom: 14px; }
.cr-kop-tekst h1 { font-size: 42px; line-height: 1.06; font-weight: 700; letter-spacing: -.025em; margin: 0; }
.cr-kop-tekst p { font-size: 16px; color: var(--muted); line-height: 1.6; margin: 14px 0 0; }
.cr-saldo {
  background: var(--card); border: 1px solid var(--line); border-radius: 14px;
  padding: 18px 22px; display: flex; align-items: center; gap: 16px; flex-shrink: 0;
}
.cr-saldo-icoon {
  width: 44px; height: 44px; border-radius: 11px; background: var(--accent-soft);
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.cr-saldo-icoon i { font-size: 23px; color: var(--accent); }
.cr-saldo-label {
  display: block; font-size: 12px; letter-spacing: .1em; text-transform: uppercase;
  color: var(--faint); font-weight: 700; margin-bottom: 3px;
}
.cr-saldo-waarde { display: block; font-size: 20px; font-weight: 700; letter-spacing: -.02em; }

/* foutmelding boven de kaarten (leeg = geen ruimte innemen) */
#credits-fout { color: var(--fout); font-size: 13.5px; margin: 0 0 22px; }
#credits-fout:empty { display: none; }

/* prijskaarten */
.cr-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 22px; align-items: stretch; margin-bottom: 52px;
}
.cr-kaart {
  background: var(--card); border: 1px solid var(--line); border-radius: 18px;
  padding: 32px 28px 28px; display: flex; flex-direction: column; position: relative;
}
.cr-kaart.populair { border: 1.5px solid var(--accent); box-shadow: 0 18px 40px rgba(62, 98, 124, .16); }
.cr-populair {
  position: absolute; top: -13px; left: 50%; transform: translateX(-50%);
  background: var(--accent); color: #fff; font-size: 11px; font-weight: 700;
  letter-spacing: .04em; text-transform: uppercase; padding: 6px 16px; border-radius: 999px;
  display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
}
.cr-populair i { font-size: 12px; }
.cr-kaart-kop { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 20px; }
.cr-kaart-naam { display: flex; align-items: center; gap: 11px; }
.cr-kaart-icoon {
  width: 40px; height: 40px; border-radius: 11px; background: var(--tint);
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.cr-kaart.populair .cr-kaart-icoon { background: var(--accent-soft); }
.cr-kaart-icoon i { font-size: 21px; color: var(--accent); }
.cr-kaart-naam strong { display: block; font-size: 17px; font-weight: 700; letter-spacing: -.01em; }
/* alleen de ondertitel — een kale span-selector zou ook het icoon-vakje raken */
.cr-kaart-naam div span { display: block; font-size: 12.5px; color: var(--faint); font-weight: 500; }
.cr-besparing {
  font-size: 11.5px; font-weight: 700; color: var(--pos); background: var(--pos-soft);
  padding: 5px 10px; border-radius: 999px; white-space: nowrap;
}
.cr-prijs { display: flex; align-items: baseline; gap: 8px; margin-bottom: 4px; }
.cr-bedrag { font-size: 38px; font-weight: 700; letter-spacing: -.03em; line-height: 1; }
.cr-bedrag-noot { font-size: 14px; color: var(--faint); font-weight: 500; }
.cr-per {
  font-size: 13.5px; color: var(--muted); font-weight: 600;
  padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid var(--line);
}
.cr-kenmerken {
  list-style: none; margin: 0 0 26px; padding: 0;
  display: flex; flex-direction: column; gap: 11px; flex: 1;
}
.cr-kenmerken li {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: 13.5px; color: var(--muted); line-height: 1.45;
}
.cr-kenmerken li i { font-size: 14px; color: var(--accent); margin-top: 2px; flex-shrink: 0; }
.knop.cr-koop {
  width: 100%; justify-content: center;
  font-size: 14.5px; font-weight: 700; padding: 13px 20px; border-radius: 11px;
}
.knop.cr-koop.accent { background: var(--accent); border-color: var(--accent); color: #fff; }
.knop.cr-koop.accent:hover { background: var(--accent); border-color: var(--accent); color: #fff; filter: brightness(1.1); }

/* sectiekopje met accent-streepje */
.cr-kopje {
  font-size: 15px; font-weight: 700; letter-spacing: -.01em; margin: 0 0 20px;
  display: flex; align-items: center; gap: 9px;
}
.cr-kopje::before { content: ""; width: 22px; height: 1.5px; background: var(--accent); }

/* wat je met één credit krijgt */
.cr-benefits { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-bottom: 36px; }
.cr-benefit { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 22px 20px; }
.cr-benefit-icoon {
  width: 38px; height: 38px; border-radius: 10px; background: var(--tint);
  display: inline-flex; align-items: center; justify-content: center; margin-bottom: 14px;
}
.cr-benefit-icoon i { font-size: 20px; color: var(--accent); }
.cr-benefit h3 { font-size: 14.5px; font-weight: 700; margin: 0 0 6px; letter-spacing: -.01em; }
.cr-benefit p { font-size: 13px; color: var(--muted); margin: 0; line-height: 1.55; }

/* betalen + faq naast elkaar */
.cr-twee { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; align-items: start; margin-bottom: 40px; }
.cr-paneel { background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 28px 28px 26px; }
.cr-paneel h2 { font-size: 16px; font-weight: 700; margin: 0 0 6px; letter-spacing: -.01em; }
.cr-paneel-intro { font-size: 13.5px; color: var(--muted); margin: 0 0 22px; line-height: 1.55; }
.cr-trust { display: flex; flex-direction: column; gap: 16px; }
.cr-trust-rij { display: flex; align-items: flex-start; gap: 13px; }
.cr-trust-icoon {
  width: 36px; height: 36px; border-radius: 9px; background: var(--accent-soft);
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.cr-trust-icoon i { font-size: 19px; color: var(--accent); }
.cr-trust-rij strong { display: block; font-size: 14px; font-weight: 600; margin-bottom: 2px; }
/* alleen de uitlegtekst — een kale span-selector zou ook het icoon-vakje raken */
.cr-trust-rij div span { display: block; font-size: 13px; color: var(--muted); line-height: 1.5; }
.cr-badges {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--line);
}
.cr-badge {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 12px; font-weight: 700; color: var(--muted);
  background: var(--tint); padding: 8px 13px; border-radius: 8px;
}
.cr-badge i { font-size: 14px; color: var(--pos); }
.cr-faq { padding-bottom: 12px; }
.cr-faq .cr-paneel-intro { margin-bottom: 8px; }
.cr-vraag { border-top: 1px solid var(--line); padding: 16px 0; }
.cr-vraag h3 {
  font-size: 14px; font-weight: 600; margin: 0 0 6px;
  display: flex; align-items: flex-start; gap: 9px;
}
.cr-vraag h3 i { font-size: 15px; color: var(--accent); margin-top: 2px; flex-shrink: 0; }
.cr-vraag p { font-size: 13px; color: var(--muted); margin: 0 0 0 24px; line-height: 1.55; }

.cr-voetnoot { text-align: center; font-size: 13px; color: var(--faint); margin: 0; line-height: 1.6; }
.cr-voetnoot a { color: inherit; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
.cr-voetnoot a:hover { color: var(--accent); }

/* tablet */
@media (max-width: 1024px) {
  .cr-benefits { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 960px) {
  .credits-pagina { padding: 36px 24px 70px; }
  .cr-grid { grid-template-columns: 1fr; gap: 26px; max-width: 520px; margin: 0 auto 48px; }
  .cr-kaart { padding: 28px 24px 24px; }
  .cr-twee { grid-template-columns: 1fr; }
}
/* mobiel */
@media (max-width: 640px) {
  .credits-pagina { padding: 28px 18px 56px; }
  .cr-kop { gap: 20px; margin-bottom: 28px; }
  .cr-kop-tekst h1 { font-size: 32px; }
  .cr-kop-tekst p { font-size: 15px; }
  .cr-saldo { width: 100%; padding: 15px 18px; }
  .cr-bedrag { font-size: 32px; }
  .cr-benefits { grid-template-columns: 1fr; gap: 14px; }
  .cr-paneel { padding: 22px 18px 20px; }
  .cr-faq { padding-bottom: 8px; }
}

/* ======================================================================
   Publieke pagina's (prijzen / faq / blog / juridisch / contact)
   ====================================================================== */
.pub-body { min-height: 100vh; display: flex; flex-direction: column; }
.pub-body .site-footer { margin-top: auto; }
.pub-inhoud { max-width: 820px; margin: 0 auto; padding: 60px 40px 40px; width: 100%; }
.pub-inhoud.breed { max-width: var(--rail); }
.pub-hero { text-align: center; max-width: 640px; margin: 0 auto; }
.pub-hero.links { text-align: left; margin: 0; }
.pub-hero h1 { font-size: 44px; font-weight: 700; letter-spacing: -.025em; margin: 0 0 16px; }
.pub-hero p { font-size: 17px; line-height: 1.6; color: var(--muted); margin: 0 auto; max-width: 560px; }
.pub-hero.links p { margin: 0; }
.pub-inhoud h1 { font-weight: 700; font-size: clamp(27px, 6.4vw, 40px); letter-spacing: -.02em; margin: 8px 0 14px; }
.pub-inhoud > h2 { font-weight: 600; font-size: 22px; margin: 40px 0 12px; }
.pub-inhoud p, .pub-inhoud li { line-height: 1.65; }
.pub-inhoud a { color: var(--accent); }
.kruimel { font-size: 13px; margin: 0 0 8px; }
.kruimel a { color: var(--muted); text-decoration: none; }
.kruimel a:hover { color: var(--accent); }

/* ---------- blog ---------- */
.blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.blog-kaart {
  display: flex; flex-direction: column;
  background: var(--card); border: 1px solid var(--line);
  border-radius: 16px; overflow: hidden;
  text-decoration: none; color: inherit;
  transition: border-color .15s, box-shadow .15s;
}
.blog-kaart:hover { border-color: var(--faint); box-shadow: var(--schaduw-kaart); }
.blog-kaart .beeld {
  aspect-ratio: 16 / 10;
  background-image: repeating-linear-gradient(135deg, var(--tint), var(--tint) 8px, var(--panel) 8px, var(--panel) 16px);
}
.blog-kaart .beeld img { width: 100%; height: 100%; object-fit: cover; display: block; }
.blog-kaart .body { padding: 22px 22px 24px; display: flex; flex-direction: column; flex: 1; }
.blog-kaart .categorie { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--accent); font-weight: 700; margin-bottom: 11px; }
.blog-kaart h2, .blog-kaart h3 { font-size: 18px; font-weight: 600; margin: 0 0 10px; line-height: 1.25; }
.blog-kaart p { font-size: 14px; line-height: 1.55; color: var(--muted); margin: 0 0 18px; }
.blog-datum, .blog-meta { margin-top: auto; display: flex; align-items: center; gap: 12px; font-size: 12.5px; color: var(--faint); }
.blog-meta .stip { width: 3px; height: 3px; border-radius: 50%; background: var(--faint); }

/* uitgelicht artikel */
.blog-uitgelicht {
  display: grid; grid-template-columns: 1.15fr 1fr; gap: 0;
  background: var(--card); border: 1px solid var(--line);
  border-radius: 18px; overflow: hidden; text-decoration: none; color: inherit;
  margin-bottom: 28px;
}
.blog-uitgelicht:hover { border-color: var(--faint); }
.blog-uitgelicht .beeld {
  aspect-ratio: 16 / 10;
  background-image: repeating-linear-gradient(135deg, var(--tint), var(--tint) 10px, var(--panel) 10px, var(--panel) 20px);
}
.blog-uitgelicht .body { padding: 44px; display: flex; flex-direction: column; justify-content: center; }
.blog-uitgelicht .badge {
  align-self: flex-start; display: inline-flex; align-items: center; gap: 6px;
  font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--accent); background: var(--accent-soft); padding: 5px 11px;
  border-radius: 999px; font-weight: 700; margin-bottom: 18px;
}
.blog-uitgelicht h2 { font-size: 27px; font-weight: 700; letter-spacing: -.02em; margin: 0 0 14px; line-height: 1.2; }
.blog-uitgelicht p { font-size: 15.5px; line-height: 1.6; color: var(--muted); margin: 0 0 22px; }

/* blog-artikel (detail) */
.blog-artikel { max-width: 720px; }
.blog-artikel h1 { margin-top: 6px; }
/* uitgelichte afbeelding boven de titel */
.blog-hero { margin: 18px 0 26px; }
.blog-hero img { display: block; width: 100%; max-height: 400px; object-fit: cover; border-radius: 16px; }
.blog-artikel .blog-datum { display: block; margin: 0 0 24px; }
/* "In het kort"-blok (TLDR) bovenaan het artikel */
.blog-tldr {
  background: var(--panel); border: 1px solid var(--line); border-left: 3px solid var(--accent);
  border-radius: 12px; padding: 18px 22px; margin: 0 0 30px;
}
.blog-artikel .blog-tldr h2 {
  font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  color: var(--accent); margin: 0 0 10px;
}
.blog-tldr p { margin: 0 0 10px; }
.blog-tldr ul, .blog-tldr ol { margin: 0; padding-left: 20px; }
.blog-tldr li { margin: 4px 0; line-height: 1.55; }
.blog-tldr > :last-child { margin-bottom: 0; }
.blog-artikel h2 { margin-top: 34px; }
.blog-artikel h3 { font-weight: 600; font-size: 18px; margin: 26px 0 8px; }
.blog-artikel h4 { font-weight: 600; font-size: 15.5px; margin: 20px 0 6px; }
.blog-artikel img { max-width: 100%; height: auto; border-radius: 12px; }
.blog-figuur { margin: 28px 0; }
.blog-figuur img { display: block; }
.blog-figuur figcaption { font-size: 13px; color: var(--faint); margin-top: 8px; line-height: 1.5; }
.blog-artikel blockquote {
  margin: 24px 0; padding: 4px 20px; border-left: 3px solid var(--accent);
  color: var(--muted); font-style: italic;
}
.blog-artikel blockquote p { margin: 8px 0; }
.blog-artikel hr { border: 0; border-top: 1px solid var(--line); margin: 34px 0; }

/* ============================================================
   Uitlegpagina "Onderdelen van een uitvaartpresentatie" (nieuw design)
   Gescopet onder .ond. Server-rendered in blog.py.
   ============================================================ */
/* padding: 0 — de generieke app-regel `main { padding: … }` geldt anders ook
   hier en houdt de volle-breedte banden (o.a. .cta-foto) van de footer af */
.ond { --ond-rail: 1180px; padding: 0; }
.ond-kicker { display: inline-flex; align-items: center; gap: 9px; font-size: 12.5px;
  letter-spacing: .13em; text-transform: uppercase; color: var(--accent); font-weight: 700; margin-bottom: 18px; }
.ond-kicker .streep { width: 22px; height: 1.5px; background: var(--accent); }

/* hero */
.ond-hero { border-bottom: 1px solid var(--line); background: linear-gradient(180deg, var(--panel), var(--bg)); }
.ond-hero-grid { max-width: var(--ond-rail); margin: 0 auto; padding: 48px 40px 66px;
  display: grid; grid-template-columns: 1.08fr .92fr; gap: 64px; align-items: stretch; }
.ond-hero-tekst { display: flex; flex-direction: column; justify-content: center; min-width: 0; }
.ond-hero-beeld { width: 100%; height: 200px; object-fit: cover; border-radius: 16px;
  border: 1px solid var(--line); margin-bottom: 26px; display: block; }
.ond-hero-tekst h1 { font-size: 44px; line-height: 1.07; font-weight: 700; letter-spacing: -.03em; margin: 0 0 20px; text-wrap: balance; }
.ond-lead { font-size: 17.5px; line-height: 1.62; color: var(--muted); margin: 0; max-width: 520px; }
.ond-lead strong { color: var(--ink); font-weight: 700; }

/* nav-kaart rechts */
.ond-nav-kaart { background: var(--card); border: 1px solid var(--line); border-radius: 20px;
  padding: 22px 24px; box-shadow: var(--schaduw-zwevend); align-self: center; }
.ond-nav-kop { font-size: 12.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--faint);
  font-weight: 700; margin-bottom: 14px; padding: 0 4px; }
.ond-toc-item { display: flex; align-items: center; gap: 14px; padding: 10px 12px; border-radius: 11px;
  text-decoration: none; color: var(--ink); }
.ond-toc-item:hover { background: var(--tint); }
.ond-toc-ico { width: 34px; height: 34px; border-radius: 10px; background: var(--accent-soft); color: var(--accent);
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 18px; }
.ond-toc-titel { flex: 1; font-size: 14.5px; font-weight: 600; }
.ond-toc-pijl { font-size: 14px; color: var(--faint); }

/* inhoud */
.ond-inhoud { max-width: 920px; margin: 0 auto; padding: 60px 40px 20px; }
.ond-intro { scroll-margin-top: 90px; margin-bottom: 44px; }
.ond-intro-kop { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; }
.ond-intro-kop h2 { font-size: 26px; font-weight: 700; letter-spacing: -.02em; margin: 0; }
.ond-kaart-ico { width: 46px; height: 46px; border-radius: 13px; background: var(--accent-soft); color: var(--accent);
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 24px; }
.ond-kaart-tekst { font-size: 15.5px; line-height: 1.65; color: var(--muted); margin: 0 0 14px; }
.ond-intro .ond-kaart-tekst { font-size: 16px; line-height: 1.68; margin-bottom: 16px; }
.ond-intro .ond-kaart-tekst:last-of-type { margin-bottom: 22px; }
.ond-eind-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.ond-eind-kaart { background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 22px 24px; }
.ond-eind-kaart .ond-kaart-ico { width: 40px; height: 40px; border-radius: 11px; font-size: 21px; margin-bottom: 14px; }
.ond-eind-titel { font-size: 16px; font-weight: 700; margin-bottom: 6px; letter-spacing: -.01em; color: var(--ink); }
.ond-eind-kaart p { font-size: 14px; line-height: 1.55; color: var(--muted); margin: 0; }
.ond-scheiding { height: 1px; background: var(--line); margin-bottom: 44px; }

/* blok-kaarten */
.ond-kaarten { display: flex; flex-direction: column; gap: 20px; }
.ond-kaart { scroll-margin-top: 90px; background: var(--card); border: 1px solid var(--line);
  border-radius: 18px; padding: 30px 32px; }
.ond-kaart-kop { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; }
.ond-kaart-kop h2 { font-size: 23px; font-weight: 700; letter-spacing: -.02em; margin: 0; }
.ond-wanneer { display: flex; align-items: flex-start; gap: 11px; background: var(--tint); border-radius: 12px;
  padding: 13px 16px; margin: 4px 0 18px; }
.ond-wanneer > i { font-size: 17px; color: var(--accent); margin-top: 1px; flex-shrink: 0; }
.ond-wanneer div { font-size: 14.5px; line-height: 1.5; color: var(--ink); }
.ond-wanneer span { color: var(--muted); }
.ond-bullets { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.ond-bullets li { display: flex; align-items: flex-start; gap: 12px; font-size: 15px; line-height: 1.55; color: var(--muted); }
.ond-bullets li > i { font-size: 14px; color: var(--accent); margin-top: 4px; flex-shrink: 0; }
.ond-bullets strong { color: var(--ink); }
.ond-tip { display: flex; align-items: flex-start; gap: 11px; border: 1px solid var(--accent-soft);
  background: var(--panel); border-radius: 12px; padding: 13px 16px; margin-top: 18px; }
.ond-tip > i { font-size: 17px; color: var(--accent); margin-top: 1px; flex-shrink: 0; }
.ond-tip div { font-size: 14.5px; line-height: 1.55; color: var(--muted); }
.ond-tip strong { color: var(--ink); }

/* tot slot (donker paneel) */
.ond-slot-donker { background: var(--primary); border-radius: 18px; padding: 34px 36px; margin-top: 30px; }
.ond-slot-donker h2 { font-size: 22px; font-weight: 700; letter-spacing: -.02em; margin: 0 0 12px; color: var(--on-primary); }
.ond-slot-donker > p { font-size: 15.5px; line-height: 1.6; color: rgba(245, 244, 242, .72); margin: 0 0 20px; }
.ond-slot-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ond-slot-kaart { background: rgba(245, 244, 242, .07); border: 1px solid rgba(245, 244, 242, .12);
  border-radius: 13px; padding: 18px 20px; }
.ond-slot-titel { display: flex; align-items: center; gap: 9px; font-size: 15px; font-weight: 700; color: var(--on-primary); margin-bottom: 6px; }
.ond-slot-kaart p { font-size: 13.5px; line-height: 1.5; color: rgba(245, 244, 242, .66); margin: 0; }
.ond-slot-kaart a { color: #e7edf2; text-decoration: none; }
.ond-slot-kaart a:hover { text-decoration: underline; }

@media (max-width: 940px) {
  .ond-hero-grid { grid-template-columns: 1fr; gap: 34px; padding: 40px 28px 44px; }
  .ond-nav-kaart { align-self: stretch; }
  .ond-inhoud { padding: 44px 28px 20px; }
  .ond-eind-grid { grid-template-columns: 1fr; }
  .ond-slot-grid { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .ond-hero-grid { padding: 22px 18px 32px; }
  .ond-hero-beeld { height: 170px; }
  .ond-hero-tekst h1 { font-size: 30px; letter-spacing: -.025em; }
  .ond-lead { font-size: 15.5px; }
  .ond-inhoud { padding: 34px 18px 20px; }
  .ond-intro, .ond-kaart { scroll-margin-top: 80px; }
  .ond-intro-kop h2 { font-size: 22px; }
  .ond-kaart-ico { width: 42px; height: 42px; font-size: 22px; }
  .ond-kaart { padding: 24px 22px; }
  .ond-kaart-kop h2 { font-size: 20px; }
  .ond-slot-donker { padding: 26px 22px; }
}

@media (max-width: 860px) {
  .blog-grid { grid-template-columns: 1fr; }
  .blog-uitgelicht { grid-template-columns: 1fr; }
  .blog-uitgelicht .body { padding: 30px 26px; }
  .pub-inhoud { padding: 44px 24px 40px; }
}

/* ---------- prijskaarten ---------- */
.prijs-kaarten {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 20px; margin: 30px 0 18px;
}
.prijs-kaart {
  position: relative; background: var(--card); border: 1px solid var(--line);
  border-radius: 16px; padding: 26px; text-align: center;
}
.prijs-kaart.uitgelicht { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.prijs-label {
  position: absolute; top: -11px; left: 50%; transform: translateX(-50%);
  background: var(--accent); color: #fff; font-size: 11px; font-weight: 700;
  border-radius: 999px; padding: 4px 13px; white-space: nowrap;
}
.prijs-kaart h2, .prijs-kaart h3 { margin: 0 0 12px; font-size: 15px; font-weight: 600; color: var(--muted); }
.prijs-bedrag { font-size: 34px; font-weight: 700; color: var(--ink); letter-spacing: -.02em; }
.prijs-per { color: var(--faint); font-size: 12.5px; margin-top: 4px; }
.prijs-kaart .knop { margin-top: 20px; width: 100%; justify-content: center; }
.prijs-kaart ul { list-style: none; padding: 0; margin: 18px 0 0; text-align: left; }
.prijs-kaart li { padding: 6px 0 6px 26px; position: relative; font-size: 13.5px; color: var(--ink); }
.prijs-kaart li::before { content: "\e182"; font-family: "Phosphor-Bold"; position: absolute; left: 0; top: 6px; color: var(--accent); font-size: 15px; }
.vink-lijst { list-style: none; padding: 0; }
.vink-lijst li { padding: 8px 0 8px 30px; position: relative; line-height: 1.55; }
.vink-lijst li::before { content: "\e182"; font-family: "Phosphor-Bold"; position: absolute; left: 0; top: 8px; color: var(--accent); font-size: 17px; }

/* ---------- faq accordion ---------- */
.faq-lijst { margin-top: 20px; }
.faq-lijst.smal { max-width: 640px; margin: 0 auto; }
/* rubriekkop tussen de faq-kaarten (veelgestelde-vragen.html) */
.faq-rubriek { text-align: center; font-size: 21px; font-weight: 600; letter-spacing: -.01em; margin: 40px 0 14px; }
.faq-lijst > .faq-rubriek:first-child { margin-top: 28px; }
.faq-kaart {
  background: var(--card); border: 1px solid var(--line);
  border-radius: 16px; padding: 6px 26px;
}
/* FAQ onderaan een blogartikel */
.blog-faq { margin-top: 46px; padding-top: 34px; border-top: 1px solid var(--line); }
.blog-faq > h2 { font-size: 22px; font-weight: 600; letter-spacing: -.01em; margin: 0 0 16px; }
.faq-item { border-bottom: 1px solid var(--line); }
.faq-item:last-child { border-bottom: none; }
.faq-item summary {
  cursor: pointer;
  font-weight: 600;
  font-size: 17px;
  padding: 22px 0;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: "\e3d4"; /* ph-plus (bold) */
  font-family: "Phosphor-Bold";
  color: var(--accent);
  font-size: 18px;
  transition: transform .28s ease;
  flex: none;
}
.faq-item[open] summary::after { transform: rotate(45deg); }
.faq-item summary:hover { color: var(--accent); }
.faq-item p { margin: 0 0 24px; color: var(--muted); line-height: 1.65; max-width: 640px; }
.faq-item a { color: var(--accent); }
/* meeralinea-antwoord (blog-FAQ): kleinere marge tussen alinea's/lijsten */
.faq-antwoord { margin: 0 0 24px; max-width: 640px; }
.faq-antwoord p { margin: 0 0 12px; }
.faq-antwoord ul, .faq-antwoord ol { margin: 0 0 12px; padding-left: 22px; color: var(--muted); line-height: 1.65; }
.faq-antwoord > :last-child { margin-bottom: 0; }

/* blogformulier (admin) */
.blog-form {
  background: var(--card); border: 1px solid var(--line); border-radius: 14px;
  padding: 20px 22px; margin-top: 14px; max-width: 760px;
}
.blog-form .veld { margin-bottom: 14px; }
.blog-form .veld input, .blog-form .veld textarea {
  display: block; width: 100%; margin-top: 6px; padding: 10px 12px;
  border: 1px solid var(--line); border-radius: 10px; font-size: 14px;
  background: #fff; color: var(--ink); font-family: inherit;
}
.blog-form textarea { line-height: 1.5; }

/* ---------- onboarding (lege dienstenlijst) ---------- */
.onboarding { background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 28px; margin-top: 10px; box-shadow: var(--schaduw-kaart); }
.onboarding h2 { margin: 0 0 20px; font-weight: 600; font-size: 22px; }
.onboarding-stappen { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 18px; }
.onboarding .stap { border: none; background: none; padding: 0; box-shadow: none; }
.onboarding-hint { margin: 24px 0 0; color: var(--muted); font-size: 14px; line-height: 1.5; }
.onboarding-hint a { color: var(--accent); text-decoration: none; }
.onboarding-hint a:hover { text-decoration: underline; }

/* ---------- juridische pagina's ---------- */
.juridisch { max-width: 760px; margin: 0 auto; padding: 60px 40px 80px; line-height: 1.65; }
.juridisch .terug { color: var(--muted); text-decoration: none; font-size: 14px; }
.juridisch .terug:hover { color: var(--accent); }
.juridisch h1 { font-weight: 700; font-size: 36px; letter-spacing: -.02em; margin: 22px 0 6px; }
.juridisch h2 { font-weight: 600; font-size: 19px; margin: 32px 0 8px; }
.juridisch p, .juridisch li { color: var(--ink); }
.juridisch .laatst { color: var(--faint); font-size: 13px; margin-top: 0; }
.juridisch a { color: var(--accent); }
.juridisch table { border-collapse: collapse; width: 100%; margin: 8px 0; }
.juridisch td { border: 1px solid var(--line); padding: 8px 10px; vertical-align: top; }
.concept-banner {
  background: #fbf3e4; border: 1px solid #e6d4ad; color: var(--waarschuwing);
  border-radius: 12px; padding: 14px 18px; font-size: 14px; margin-bottom: 8px;
}
.concept-banner strong { color: var(--waarschuwing); }

/* ---------- contactpagina (publiek) ---------- */
/* Splitlayout: links donker fotopaneel met redenen + kanalen, rechts het
   formulier. Op mobiel wordt alleen de hero donker (positioneringstruc:
   de absolute foto hangt dan aan .contact-hero-vlak i.p.v. .contact-links)
   en worden de redenen lichte kaarten. */
.contact-split { display: grid; grid-template-columns: 1fr 1fr; }
.contact-links {
  position: relative; overflow: hidden; background: var(--primary); color: var(--on-primary);
  display: flex; flex-direction: column; justify-content: center; gap: 30px;
  padding: 52px 56px; min-height: 640px;
}
.contact-links .foto {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: center 30%;
}
.contact-links .overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(28, 25, 23, .82) 0%, rgba(28, 25, 23, .62) 30%,
    rgba(28, 25, 23, .72) 62%, rgba(28, 25, 23, .9) 100%);
}
.contact-hero-vlak { position: static; }
/* de drie inhoudsblokken vormen samen één kolom die horizontaal in het
   paneel gecentreerd staat (zelfde max-breedte, dus linkerranden gelijk) */
.contact-hero-tekst, .contact-redenen, .contact-kanalen {
  position: relative; z-index: 1;
  width: 100%; max-width: 460px; margin-left: auto; margin-right: auto;
}
.paneel-kicker {
  display: inline-block; font-size: 12px; letter-spacing: .14em; text-transform: uppercase;
  font-weight: 600; color: rgba(245, 244, 242, .6); margin-bottom: 16px;
}
.contact-hero-tekst h1 {
  font-size: 34px; font-weight: 700; letter-spacing: -.025em; line-height: 1.12; margin: 0 0 14px;
}
.contact-lead { font-size: 15.5px; line-height: 1.6; color: rgba(245, 244, 242, .78); margin: 0; }
.contact-redenen { display: flex; flex-direction: column; gap: 20px; }
.contact-reden { display: flex; gap: 15px; align-items: flex-start; }
.contact-reden-icoon {
  width: 42px; height: 42px; border-radius: 11px; flex: none;
  background: rgba(245, 244, 242, .09); border: 1px solid rgba(245, 244, 242, .14);
  display: inline-flex; align-items: center; justify-content: center;
}
.contact-reden-icoon i { font-size: 21px; color: #c8b7ab; }
.contact-reden h3 { font-size: 15.5px; font-weight: 700; margin: 0 0 3px; }
.contact-reden p { margin: 0; font-size: 14px; line-height: 1.5; color: rgba(245, 244, 242, .72); }
.contact-kanalen { display: flex; flex-wrap: wrap; gap: 20px 40px; }
.contact-kanaal { display: flex; align-items: center; gap: 11px; text-decoration: none; color: var(--on-primary); }
.contact-kanaal > i { font-size: 19px; color: #c8b7ab; flex: none; }
.contact-kanaal-icoon { display: none; }
.contact-kanaal .bovenlijn { display: block; font-size: 12px; color: rgba(245, 244, 242, .55); font-weight: 500; }
.contact-kanaal .onderlijn { font-size: 14px; font-weight: 600; }
.contact-form-vlak { display: flex; align-items: center; justify-content: center; padding: 56px 40px; }
.contact-form-kolom { width: 100%; max-width: 452px; }
.contact-form-kolom h2 { font-size: 26px; font-weight: 700; letter-spacing: -.02em; margin: 0 0 8px; }
.contact-form-sub { font-size: 15px; color: var(--muted); margin: 0 0 28px; }
.contact-faq-tip {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  margin-top: 16px; font-size: 12.5px; color: var(--faint);
}
.contact-faq-tip i { font-size: 15px; flex: none; }
.contact-faq-tip a { color: var(--accent); font-weight: 600; text-decoration: none; }
.contact-privacy { text-align: center; font-size: 12.5px; color: var(--faint); margin: 14px 0 0; }

@media (max-width: 860px) {
  .contact-split { grid-template-columns: 1fr; }
  .contact-links { display: block; background: var(--bg); color: var(--ink); padding: 0; min-height: 0; }
  .contact-links .foto, .contact-links .overlay { position: absolute; }
  .contact-hero-vlak {
    position: relative; overflow: hidden; background: var(--primary); color: var(--on-primary);
    padding: 26px 24px 30px;
  }
  .contact-hero-tekst { margin: 0; }
  .contact-hero-tekst h1 { font-size: 27px; }
  .contact-lead { font-size: 14.5px; }
  .contact-redenen { padding: 24px 24px 0; gap: 12px; max-width: none; }
  .contact-reden { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 16px 18px; }
  .contact-reden-icoon { background: var(--tint); border: none; }
  .contact-reden-icoon i { color: var(--accent); font-size: 20px; }
  .contact-reden h3 { font-size: 15px; }
  .contact-reden p { color: var(--muted); font-size: 13.5px; }
  .contact-kanalen { flex-direction: column; gap: 14px; padding: 18px 24px 4px; max-width: none; }
  .contact-kanaal { color: var(--ink); }
  .contact-kanaal > i { display: none; }
  .contact-kanaal-icoon {
    width: 40px; height: 40px; border-radius: 11px; flex: none;
    background: var(--panel); border: 1px solid var(--line);
    display: inline-flex; align-items: center; justify-content: center;
  }
  .contact-kanaal-icoon i { font-size: 19px; color: var(--accent); }
  .contact-kanaal .bovenlijn { color: var(--faint); }
  .contact-form-vlak { padding: 22px 24px 44px; }
  .juridisch, .pub-inhoud { padding-left: 24px; padding-right: 24px; }
}

/* ---------- gedeeld: formulier + kaart (contactpagina en supportscherm) ---------- */
.contact-tip {
  margin-top: 34px; padding: 20px 22px; background: var(--panel);
  border: 1px solid var(--line); border-radius: 14px;
  display: flex; gap: 13px; align-items: flex-start;
}
.contact-tip i { font-size: 20px; color: var(--accent); flex: none; margin-top: 1px; }
.contact-tip p { margin: 0; font-size: 14px; line-height: 1.55; color: var(--muted); }
.contact-tip a { color: var(--accent); font-weight: 600; text-decoration: none; }
.contact-kaart {
  background: var(--card); border: 1px solid var(--line);
  border-radius: 18px; padding: 34px;
  box-shadow: var(--schaduw-zwevend);
}
.contact-form { margin: 0; }
.contact-form .veld { display: block; margin-bottom: 18px; font-size: 13px; font-weight: 600; color: var(--muted); }
.contact-form .veld input, .contact-form .veld textarea, .contact-form .veld select {
  display: block; width: 100%; margin-top: 8px; padding: 12px 13px;
  border: 1px solid var(--line); border-radius: 10px;
  background: var(--panel); font-size: 14.5px; color: var(--ink); font-family: inherit;
  font-weight: 500;
}
.contact-form .veld input:focus, .contact-form .veld textarea:focus, .contact-form .veld select:focus { outline: none; border-color: var(--accent); background: var(--card); }
.contact-form .veld-rij { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.contact-form .knop.primair { width: 100%; padding: 14px 22px; border-radius: 11px; margin-top: 4px; }
@media (max-width: 700px) {
  .contact-form .veld-rij { grid-template-columns: 1fr; }
}

/* Het supportscherm in de app (#support) hergebruikt de contact-splitlayout
   hierboven; het e-mailadres mag daar niet buiten de kolom lopen. */
.contact-kanaal .onderlijn { overflow-wrap: anywhere; }

/* ======================================================================
   Status-badges + banners
   ====================================================================== */
.status-badge {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .06em;
  border-radius: 999px;
  padding: 4px 11px;
  white-space: nowrap;
  border: 1px solid var(--line);
  color: var(--muted);
  font-weight: 700;
  background: var(--tint);
}
.status-badge.definitief { border-color: var(--ok); color: var(--ok); background: transparent; }
.status-badge.vergrendeld { border-color: var(--waarschuwing); color: var(--waarschuwing); background: transparent; }

.banner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 11px 20px;
  font-size: 13px;
  font-weight: 500;
}
.banner i { font-size: 16px; }
.banner.ok { background: var(--banner-bg); color: var(--banner-ink); }
.banner.slot { background: #f7efe2; color: var(--waarschuwing); }

/* vergrendeld */
/* vergrendeld: alleen downloaden — bewerk-gedeelte dimmen + uitschakelen,
   maar de actie-banner (downloads) op vol contrast en klikbaar houden */
#editor.readonly #blokken,
#editor.readonly .blok-toevoegen,
#editor.readonly #beeld-anker,
#editor.readonly aside { opacity: .6; }
#editor.readonly .editor-body main,
#editor.readonly aside .veld,
#editor.readonly aside .beeld-veld { pointer-events: none; }
#editor.readonly #actie-banner,
#editor.readonly #venster-notitie { pointer-events: auto; }
#editor.readonly #duimbalk { pointer-events: auto; }
#editor.readonly .app-voet { pointer-events: auto; }  /* voetlinks blijven klikbaar */

/* ======================================================================
   Modals
   ====================================================================== */
.modal-achtergrond {
  position: fixed;
  inset: 0;
  background: rgba(30, 28, 25, .45);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 50;
  padding: 20px;
}
.modal {
  background: var(--card);
  border-radius: 18px;
  padding: 24px 28px;
  width: 540px;
  max-width: 100%;
  max-height: 85vh;
  overflow: auto;
  box-shadow: var(--schaduw-zwevend);
}
.modal-kop { display: flex; align-items: center; justify-content: space-between; }
.modal h2 { margin: 0; font-size: 21px; font-weight: 700; letter-spacing: -.01em; }
.modal h3 { font-size: 14px; margin: 20px 0 8px; }
.modal .fout { color: var(--fout); font-size: 13px; min-height: 18px; margin-top: 8px; }
.modal-sluit { font-size: 16px; }

/* ---- bevestigingsdialoog (in-app vervanger van confirm/alert) ---- */
.dialoog-achtergrond {
  position: fixed;
  inset: 0;
  background: rgba(30, 28, 25, .45);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 90;            /* boven gewone modals: een dialoog kan daaruit geopend worden */
  padding: 20px;
}
.modal.dialoog { width: 440px; }
#dialoog-tekst { margin: 10px 0 0; font-size: 14.5px; line-height: 1.55; color: var(--muted); }
#dialoog-inhoud:empty { display: none; }
#dialoog-inhoud { margin-top: 14px; }
#dialoog-fout { margin: 10px 0 0; }
.dialoog-knoppen { display: flex; justify-content: flex-end; gap: 10px; margin-top: 22px; }

.dialoog-veld { display: flex; flex-direction: column; gap: 6px; }
.dialoog-veld label { font-size: 13px; font-weight: 600; }
.dialoog-veld input {
  padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--panel); font: inherit; color: var(--ink);
}
.dialoog-gevolg { margin: 12px 0 0; font-size: 13px; line-height: 1.55; color: var(--muted); }

/* ---- toasts (meldingen die geen antwoord vragen) ---- */
#toast-houder {
  position: fixed;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  z-index: 120;
  width: min(480px, calc(100vw - 32px));
  pointer-events: none;
}
.toast {
  pointer-events: auto;
  background: var(--card);
  border: 1px solid var(--line);
  border-left: 3px solid var(--faint);
  border-radius: 12px;
  padding: 12px 16px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--ink);
  box-shadow: var(--schaduw-zwevend);
  max-width: 100%;
  cursor: pointer;             /* klik = wegklikken */
  animation: toast-in .22s ease-out;
}
.toast.succes { border-left-color: var(--ok); }
.toast.fout { border-left-color: var(--fout); }
@keyframes toast-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}

/* ---- achtergrond-modal (afbeelding / kleur + transparantie) ---- */
.ag-modal { width: 720px; }
.ag-mini {
  flex: none; width: 52px; height: 52px; border-radius: 10px;
  border: 1px solid var(--line); background-size: cover; background-position: center;
}
.ag-mini.leeg { background: repeating-linear-gradient(45deg,var(--tint),var(--tint) 6px,var(--card) 6px,var(--card) 12px); }
.ag-wijzig { flex: none; align-self: center; }

.ag-tabs {
  display: inline-flex; gap: 4px; margin: 18px 0 4px;
  background: var(--tint); border-radius: 10px; padding: 4px;
}
.ag-tabs .knop { border: none; background: none; color: var(--muted); padding: 8px 16px; border-radius: 7px; font-size: 14px; }
.ag-tabs .knop:hover { color: var(--ink); }
.ag-tabs .knop.actief { background: var(--card); color: var(--ink); box-shadow: var(--schaduw-kaart); }
.ag-tabs .knop i { font-size: 1.05em; }

.ag-inhoud { display: grid; grid-template-columns: 1fr 220px; gap: 22px; margin-top: 14px; }
.ag-kopje { font-size: 13px; color: var(--muted); font-weight: 600; margin: 18px 0 10px; }
.ag-tab.verborgen { display: none; }

.ag-preset-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.ag-preset {
  position: relative; padding: 0; border: 2px solid transparent; border-radius: 10px;
  overflow: hidden; cursor: pointer; background: var(--tint); aspect-ratio: 16 / 10;
}
.ag-preset img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ag-preset:hover { border-color: var(--line); }
.ag-preset.actief { border-color: var(--accent); }
.ag-preset-naam {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 3px 6px;
  font-size: 11px; color: #fff; text-align: left;
  background: linear-gradient(transparent, rgba(0,0,0,.6));
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ag-presets.bezig { opacity: .5; pointer-events: none; }
.ag-laden { font-size: 13px; color: var(--muted); }

.ag-palet { display: grid; grid-template-columns: repeat(7, 1fr); gap: 10px; }
.ag-swatch {
  aspect-ratio: 1; border-radius: 999px; cursor: pointer; padding: 0;
  background: var(--kleur); border: 1px solid rgba(0,0,0,.15);
  box-shadow: inset 0 0 0 2px var(--card), 0 0 0 1px transparent;
}
.ag-swatch:hover { box-shadow: inset 0 0 0 2px var(--card), 0 0 0 2px var(--line); }
.ag-swatch.actief { box-shadow: inset 0 0 0 2px var(--card), 0 0 0 2px var(--accent); }

.ag-slider-rij { display: flex; align-items: center; gap: 12px; margin-top: 20px; }
.ag-slider-rij label { font-size: 13px; font-weight: 600; color: var(--muted); flex: none; }
.ag-slider-rij input[type=range] { flex: 1; accent-color: var(--accent); }
.ag-slider-rij output { font-size: 13px; font-weight: 600; color: var(--ink); min-width: 34px; text-align: right; }

.ag-zij { display: flex; flex-direction: column; gap: 8px; }
.ag-preview-label { font-size: 13px; font-weight: 600; color: var(--muted); }
.ag-preview {
  aspect-ratio: 16 / 9; border-radius: 10px; overflow: hidden;
  border: 1px solid var(--line); background: #fff; position: relative;
}
.ag-preview-vlak { position: absolute; inset: 0; }
.ag-preview-uitleg { font-size: 12px; color: var(--faint); line-height: 1.4; }
.ag-acties { display: flex; justify-content: flex-end; margin-top: 22px; }

@media (max-width: 700px) {
  .ag-inhoud { grid-template-columns: 1fr; }
  .ag-preset-grid { grid-template-columns: repeat(2, 1fr); }
  .ag-palet { grid-template-columns: repeat(6, 1fr); }
  .ag-zij { order: -1; }
}

#ww-form { display: flex; gap: 8px; flex-wrap: wrap; align-items: flex-start; }
#ww-form input { flex: 1; min-width: 160px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; font-family: inherit; }
#ww-melding { font-size: 13px; color: var(--muted); margin-top: 8px; }

/* wachtwoordveld (zien/verbergen + sterkte) */
.ww-wrap { position: relative; display: flex; align-items: center; }
.ww-wrap input { flex: 1; width: 100%; padding-right: 42px !important; }
.ww-oog {
  position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
  border: none; background: none; cursor: pointer; font-size: 16px;
  padding: 4px 6px; opacity: .45; line-height: 1; color: var(--muted);
}
.ww-oog:hover, .ww-oog.aan { opacity: .9; }
.ww-meter { height: 5px; border-radius: 3px; background: var(--line); overflow: hidden; margin-top: 6px; }
.ww-meter-balk { height: 100%; width: 0; transition: width .2s, background .2s; }
.ww-meter-balk.n0 { width: 12%; background: var(--fout); }
.ww-meter-balk.n1 { width: 35%; background: var(--fout); }
.ww-meter-balk.n2 { width: 60%; background: var(--waarschuwing); }
.ww-meter-balk.n3 { width: 82%; background: var(--ok); }
.ww-meter-balk.n4 { width: 100%; background: var(--ok); }
.ww-meter-label { font-size: 12px; color: var(--muted); margin-top: 4px; min-height: 16px; }
#ww-form .ww-wrap, #account-verwijder-form .ww-wrap { flex: 1 1 auto; min-width: 160px; }
#ww-form .ww-meter, #ww-form .ww-meter-label { flex-basis: 100%; }

/* genereer-modal */
.gen-bezig { text-align: center; padding: 26px 0 12px; }
.gen-bezig p { margin: 14px 0 4px; font-size: 15px; }
.spinner {
  width: 34px; height: 34px; margin: 0 auto;
  border: 3px solid var(--line);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: draai .9s linear infinite;
}
@keyframes draai { to { transform: rotate(360deg); } }
.bestand-kaart {
  display: flex; align-items: center; gap: 14px;
  border: 1px solid var(--line); border-radius: 12px;
  padding: 14px 16px; margin-top: 14px;
}
.bestand-icoon {
  width: 44px; height: 44px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--accent); color: #fff; border-radius: 11px;
  font-size: 15px; font-weight: 700;
}
.bestand-icoon.pdf { background: #8a4a4a; font-size: 12px; }
.bestand-info { flex: 1; min-width: 0; }
.bestand-naam { font-weight: 600; font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bestand-meta { color: var(--muted); font-size: 12.5px; margin-top: 2px; }
.bestand-kaart a.knop { text-decoration: none; flex-shrink: 0; }
#genereer-modal .waarschuwing { color: var(--waarschuwing); font-size: 13px; margin-top: 12px; line-height: 1.5; }
.deel-sectie { border-top: 1px solid var(--line); margin-top: 20px; padding-top: 4px; }
.deel-uitleg { color: var(--muted); font-size: 12.5px; line-height: 1.5; margin: 10px 0 8px; }
.deel-rij { display: flex; gap: 8px; align-items: center; }
.deel-link-inp {
  flex: 1; min-width: 0; padding: 9px 12px;
  border: 1px solid var(--line); border-radius: 10px;
  font-size: 13px; color: var(--ink); background: var(--panel); font-family: inherit;
}

/* samenwerken */
.account-sectie.eerste { border-top: none; margin-top: 6px; }
.uitnodig-email {
  display: block; width: 100%; padding: 10px 12px; margin-bottom: 10px;
  border: 1px solid var(--line); border-radius: 10px; font-size: 14px;
  background: var(--card); color: var(--ink); font-family: inherit;
}
.knoppen-rij { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.lid-rij {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 14px;
}
.lid-rij:last-child { border-bottom: none; }
.lid-naam { font-weight: 600; }
.lid-detail { color: var(--muted); font-size: 12.5px; flex: 1; }
.lid-rij .status-badge { margin-left: auto; }
.lid-rij .lid-detail + .status-badge { margin-left: 0; }
.open-uitnodiging { opacity: .75; }
.log-rij {
  display: flex; gap: 10px; padding: 6px 0; font-size: 13px;
  border-bottom: 1px solid var(--bg);
}
.log-tijd { color: var(--muted); white-space: nowrap; min-width: 110px; }

/* samenwerken-secties (gedeeld) */
.account-sectie { border-top: 1px solid var(--line); margin-top: 22px; padding-top: 4px; }
.account-sectie h3 { font-size: 14px; margin: 16px 0 10px; }

/* ======================================================================
   Mijn account — twee kolommen (hoofd + rechterrail)
   ====================================================================== */
.account-body { max-width: var(--rail); margin: 0 auto; padding: 52px 40px 90px; }
.account-body .account-kop { margin-bottom: 34px; align-items: flex-end; }
.account-ingelogd { font-size: 15px; color: var(--muted); margin: 12px 0 0; }
.account-ingelogd span { color: var(--ink); font-weight: 600; }

.account-grid { display: grid; grid-template-columns: 1fr 340px; gap: 28px; align-items: start; }
.account-kolom { display: flex; flex-direction: column; gap: 24px; }
/* reset op het kale aside {} (achtergrond/border/padding van de editor-sidebar) */
.account-rail { background: none; border: none; padding: 0; display: flex; flex-direction: column; gap: 24px; }

/* generieke kaart */
.account-kaart { background: var(--card); border: 1px solid var(--line); border-radius: 16px; overflow: hidden; }
.account-kaart-kop {
  display: flex; align-items: center; gap: 12px;
  padding: 22px 28px; border-bottom: 1px solid var(--line);
}
.account-kaart-kop.compact { justify-content: space-between; padding: 18px 22px; }
.account-kaart-kop.compact h2 { font-size: 15px; }
.account-kaart-kop.compact > i { font-size: 17px; color: var(--faint); }
.account-kaart-icoon {
  width: 38px; height: 38px; flex: none; border-radius: 10px; background: var(--tint);
  display: inline-flex; align-items: center; justify-content: center;
}
.account-kaart-icoon i { font-size: 20px; color: var(--accent); }
.account-kaart-kop h2 { font-size: 17px; font-weight: 600; margin: 0; letter-spacing: -.01em; }
.account-kaart-kop p { font-size: 13px; color: var(--faint); margin: 2px 0 0; }
.account-kaart-body { padding: 26px 28px; }
.account-kaart-voet { display: flex; justify-content: flex-end; margin-top: 22px; }
.account-kaart-body .melding { margin-top: 12px; }

/* velden in kaarten */
.veld-rij { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.account-kaart .veld, .veld-label {
  display: block; font-size: 13px; font-weight: 600; color: var(--muted); margin-bottom: 8px;
}
.account-kaart .veld input, .account-kaart .veld textarea {
  display: block; width: 100%; margin-top: 8px; padding: 11px 14px;
  border: 1px solid var(--line); border-radius: 10px; font-size: 14.5px;
  background: var(--panel); font-family: inherit; color: var(--ink);
}
.account-kaart .veld textarea { min-height: 118px; resize: vertical; line-height: 1.55; }
.account-kaart input:disabled { color: var(--muted); background: var(--tint); cursor: not-allowed; }

/* instructiedocument: logo naast voettekst */
.intro.klein { font-size: 14px; margin: 0 0 22px; max-width: 560px; }
.instructie-rij { display: grid; grid-template-columns: 170px 1fr; gap: 24px; align-items: start; }
.voettekst-veld { display: flex; flex-direction: column; }
.logo-zone { display: flex; flex-direction: column; gap: 12px; }
.logo-vak {
  border: 1px solid var(--line); border-radius: 12px; background: var(--panel);
  padding: 16px; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 10px; text-align: center; min-height: 150px;
}
.logo-vak.leeg { color: var(--faint); }
.logo-vak.leeg i { font-size: 30px; }
.logo-vak.leeg span { font-size: 12px; font-weight: 600; letter-spacing: .04em; }
.logo-preview { max-width: 100%; max-height: 116px; border-radius: 6px; }
.logo-acties { display: flex; align-items: center; justify-content: center; gap: 14px; flex-wrap: wrap; }

/* saldo-kaart (donker) */
.account-saldo-kaart { background: var(--primary); border-radius: 16px; padding: 26px 24px; color: var(--on-primary); }
.saldo-eyebrow {
  display: flex; align-items: center; gap: 8px; margin-bottom: 16px;
  font-size: 12px; letter-spacing: .12em; text-transform: uppercase; font-weight: 700;
  color: rgba(245, 244, 242, .6);
}
.saldo-eyebrow i { font-size: 15px; }
.saldo-getal-rij { display: flex; align-items: baseline; gap: 9px; margin-bottom: 20px; }
.saldo-getal { font-size: 46px; font-weight: 700; line-height: 1; letter-spacing: -.03em; }
.saldo-eenheid { font-size: 15px; color: rgba(245, 244, 242, .65); }
.account-saldo-kaart .knop.op-donker { font-weight: 700; }
.saldo-uitleg { font-size: 12.5px; color: rgba(245, 244, 242, .55); margin: 14px 0 0; line-height: 1.5; text-align: center; }

/* credit-historie */
.account-historie .hist-rij {
  display: flex; align-items: center; gap: 12px;
  padding: 15px 22px; border-bottom: 1px solid var(--line);
}
.account-historie .hist-rij:last-child { border-bottom: none; }
.account-historie .intro { padding: 18px 22px; margin: 0; font-size: 13.5px; }
.hist-icoon {
  width: 32px; height: 32px; flex: none; border-radius: 8px;
  display: inline-flex; align-items: center; justify-content: center;
}
.hist-icoon i { font-size: 16px; }
.hist-icoon.plus { background: var(--pos-soft); color: var(--pos); }
.hist-icoon.min  { background: var(--danger-soft); color: var(--danger); }
.hist-icoon.euro { background: var(--accent-soft); color: var(--accent); }
.hist-tekst { flex: 1; min-width: 0; }
.hist-desc { font-size: 13.5px; font-weight: 600; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hist-datum { font-size: 12px; color: var(--faint); margin-top: 1px; }
.hist-bedrag { font-size: 14px; font-weight: 700; flex: none; }
.hist-bedrag.plus { color: var(--pos); }
.hist-bedrag.min { color: var(--danger); }
.hist-bedrag.euro { color: var(--muted); }
.hist-actie {
  flex: none; width: 30px; height: 30px; border-radius: 8px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--muted); border: 1px solid var(--line); text-decoration: none;
  transition: background .15s, color .15s;
}
.hist-actie:hover { background: var(--tint); color: var(--accent); }
.hist-actie i { font-size: 16px; }

/* gevarenzone */
.account-gevaar-kaart { background: var(--danger-soft); border: 1px solid #e4ccc6; border-radius: 16px; padding: 22px; }
.gevaar-kop { display: flex; align-items: center; gap: 9px; margin-bottom: 10px; }
.gevaar-kop i { font-size: 18px; color: var(--danger); }
.gevaar-kop h2 { font-size: 15px; font-weight: 600; margin: 0; color: var(--danger); letter-spacing: -.01em; }
.account-gevaar-kaart p { font-size: 13px; line-height: 1.55; color: #7a5049; margin: 0 0 16px; }
.account-gevaar-kaart .knop.gevaar { border-color: #d9b8b1; color: var(--danger); }
.account-gevaar-kaart .knop.gevaar:hover { background: var(--danger); border-color: var(--danger); color: #fff; }
#account-verwijder-form { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
#account-verwijder-form input {
  padding: 11px 14px; border: 1px solid #d9b8b1; border-radius: 10px;
  font-family: inherit; font-size: 14px; background: var(--card); color: var(--ink);
}

@media (max-width: 960px) {
  .account-body { padding: 40px 22px 70px; }
  .account-grid { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .account-body { padding: 28px 16px 56px; }
  /* kop stapelt: titelblok boven, Uitloggen eronder */
  .account-body .account-kop { flex-direction: column; align-items: flex-start; gap: 14px; margin-bottom: 24px; }
  .account-body .account-kop h1 { font-size: 30px; }
  .account-ingelogd { font-size: 14px; }
  /* compactere kaarten */
  .account-kaart-kop { padding: 18px; gap: 11px; }
  .account-kaart-body { padding: 20px 18px; }
  .account-kaart-voet { margin-top: 18px; }
  .veld-rij { grid-template-columns: 1fr; gap: 16px; }
  .instructie-rij { grid-template-columns: 1fr; gap: 18px; }
  .logo-veld { max-width: 200px; }
  .account-gevaar-kaart { padding: 18px; }
}

/* shop */
.pakket {
  display: flex;
  align-items: center;
  gap: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px 16px;
  margin-bottom: 10px;
}
.pakket-naam { font-weight: 600; width: 90px; }
.pakket-prijs { font-size: 17px; width: 90px; font-weight: 600; }
.pakket-per { flex: 1; color: var(--muted); font-size: 13px; }

/* tabellen (account/admin) */
.mini-tabel { border-collapse: collapse; width: 100%; font-size: 13px; }
.mini-tabel th {
  text-align: left;
  color: var(--muted);
  font-weight: 600;
  border-bottom: 1px solid var(--line);
  padding: 8px 8px 8px 0;
}
.mini-tabel td { border-bottom: 1px solid var(--line); padding: 8px 8px 8px 0; }
.mini-tabel .plus { color: var(--ok); font-weight: 600; }
.mini-tabel .min { color: var(--fout); font-weight: 600; }

/* ---------- admin ---------- */
.admin-body { max-width: 1100px; margin: 0 auto; padding: 26px 20px; }
.stat-rij { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 28px; }
.stat {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 16px 18px;
  min-width: 130px;
  box-shadow: var(--schaduw-kaart);
}
.stat .waarde { font-size: 24px; font-weight: 700; }
.stat .label { font-size: 12px; color: var(--muted); }
.admin-body h2 { font-size: 16px; margin: 26px 0 10px; }
.admin-body .mini-tabel { background: var(--card); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.admin-body .mini-tabel th, .admin-body .mini-tabel td { padding: 10px 14px; }
.admin-acties { display: flex; gap: 4px; flex-wrap: wrap; }

/* ---- tabbalk met panelen (bovenaan; de content houdt de volle breedte) ---- */
.admin-layout { display: flex; flex-direction: column; gap: 22px; }
.admin-sidebar {
  display: flex; flex-direction: row; gap: 4px;
  overflow-x: auto; padding-bottom: 2px;
  border-bottom: 1px solid var(--line);
}
.admin-tab {
  display: flex; align-items: center; gap: 8px; flex-shrink: 0;
  padding: 10px 16px 12px; border: none; border-bottom: 2px solid transparent;
  margin-bottom: -1px; border-radius: 10px 10px 0 0;
  background: none; font: inherit; font-size: 14px; color: var(--muted);
  cursor: pointer;
}
.admin-tab i { font-size: 18px; }
.admin-tab:hover { background: var(--card); color: var(--ink); }
.admin-tab.actief {
  color: var(--ink); font-weight: 600;
  border-bottom-color: var(--accent);
}
.admin-hoofd { min-width: 0; }
.admin-paneel > h2:first-child { margin-top: 0; }

/* ---- afbeeldingenbibliotheek (modal) ---- */
.media-modal { width: 760px; }
.media-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 12px; margin-top: 14px;
}
.media-kaart {
  border: 1px solid var(--line); border-radius: 10px; background: #fff;
  overflow: hidden; display: flex; flex-direction: column;
}
.media-kaart img { width: 100%; height: 92px; object-fit: cover; display: block; }
.media-kaart .naam {
  font-size: 12px; color: var(--muted); padding: 6px 8px 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.media-kaart .media-acties { display: flex; gap: 4px; flex-wrap: wrap; padding: 6px 8px 8px; }

/* invoerveld met knop ernaast (bv. uitgelichte afbeelding + Kies…) */
.veld-met-knop { display: flex; gap: 8px; align-items: stretch; margin-top: 6px; }
.veld-met-knop input { flex: 1; min-width: 0; margin-top: 0 !important; }
.veld-met-knop .knop { flex-shrink: 0; }

/* ---------- cookiebanner (consent.js) ---------- */
.cookie-banner {
  position: fixed;
  left: 16px;
  right: 16px;
  bottom: 16px;
  margin: 0 auto;
  max-width: 640px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: var(--schaduw-zwevend);
  padding: 18px 20px;
  z-index: 100;
}
.cookie-banner-tekst {
  margin: 0 0 14px;
  font-size: 14px;
  line-height: 1.55;
  color: var(--ink);
}
.cookie-banner-knoppen { display: flex; gap: 10px; }
.cookie-banner-knoppen .knop { flex: 1 1 140px; }

/* button die eruitziet als een tekstlink (o.a. "Cookievoorkeuren" in de footer) */
.link-knop {
  border: none;
  background: none;
  padding: 0;
  font: inherit;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
}
.link-knop:hover { text-decoration: underline; }

/* ---- foto uitsnijden (crop-modal) ---- */
#crop-modal { z-index: 80; } /* boven de mobiele blok-sheet (70) */
.crop-modal {
  width: min(960px, 96vw);
  max-height: 94vh;
  display: flex; flex-direction: column;
}
.crop-beeld {
  display: flex; align-items: center; justify-content: center;
  margin-top: 14px; padding: 14px;
  background: #211f1c; border-radius: 12px;
  min-height: 220px;
}
.crop-vlak { position: relative; display: inline-block; overflow: hidden; }
.crop-vlak img {
  display: block; max-width: 100%; max-height: min(58vh, 620px);
  user-select: none; -webkit-user-drag: none;
}
.crop-kader {
  position: absolute; touch-action: none; cursor: move;
  border: 2px solid #fff;
  /* dimt alles buiten het kader; .crop-vlak (overflow: hidden) klemt het op de foto */
  box-shadow: 0 0 0 9999px rgba(20, 18, 16, .55);
}
.crop-greep {
  position: absolute; width: 26px; height: 26px; touch-action: none;
}
.crop-greep::after {
  content: ""; position: absolute; inset: 6px;
  background: #fff; border: 1px solid rgba(0, 0, 0, .35); border-radius: 3px;
}
.crop-greep[data-greep="lb"] { top: -8px; left: -8px; cursor: nwse-resize; }
.crop-greep[data-greep="rb"] { top: -8px; right: -8px; cursor: nesw-resize; }
.crop-greep[data-greep="lo"] { bottom: -8px; left: -8px; cursor: nesw-resize; }
.crop-greep[data-greep="ro"] { bottom: -8px; right: -8px; cursor: nwse-resize; }
.crop-voet {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin-top: 14px;
}
.crop-presets { display: flex; gap: 8px; flex-wrap: wrap; }
.crop-presets .knop.actief { border-color: var(--accent); color: var(--accent); }
.crop-nav { display: flex; align-items: center; gap: 8px; margin: 0 auto; }
#crop-nav-teller { font-size: 13px; color: var(--muted); min-width: 52px; text-align: center; }
.crop-acties { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.crop-status { font-size: 13px; font-weight: 600; color: var(--ok); white-space: nowrap; }

/* mobiel: volledige hoogte, knoppen goed raakbaar */
@media (max-width: 640px) {
  #crop-modal { padding: 0; }
  .crop-modal { width: 100%; height: 100dvh; max-height: none; border-radius: 0; }
  .crop-beeld { flex: 1; min-height: 0; }
  .crop-vlak img { max-height: 48vh; }
  .crop-voet { gap: 10px; }
  .crop-nav { order: -1; width: 100%; justify-content: center; margin: 0; }
  .crop-presets { width: 100%; justify-content: center; }
  .crop-acties { width: 100%; margin-left: 0; }
  .crop-acties .knop { flex: 1; justify-content: center; }
}

/* crop-knopje op een foto-thumb (naast ✕) en op de dropzone van een blokfoto */
.foto-thumb .snij {
  position: absolute;
  top: 4px; left: 4px;
  background: rgba(30, 30, 30, .6);
  color: #fff;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  font-size: 12px;
  line-height: 1;
  padding: 4px 6px;
  display: none;
}
.foto-thumb:hover .snij { display: block; }
@media (pointer: coarse) {
  .foto-thumb .snij { display: block; }
}
.zone-snij {
  position: absolute; top: 6px; right: 6px;
  width: 28px; height: 28px; padding: 0;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--line); border-radius: 8px;
  background: var(--card); color: var(--muted);
  cursor: pointer; font-size: 14px; line-height: 1;
}
.zone-snij:hover { color: var(--ink); border-color: var(--faint); }
.beeld-acties { display: flex; gap: 12px; }

/* ---- subtiele voetbalk van de app (app.html) ---- */
/* body als kolom zodat de voet ook bij weinig inhoud onderaan het scherm blijft */
.app-body { min-height: 100vh; display: flex; flex-direction: column; }
.app-body > section.scherm { flex: 1 0 auto; }
.app-voet {
  display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
  gap: 6px 20px;
  padding: 14px 24px;
  border-top: 1px solid var(--line);
  font-size: 12.5px;
  color: var(--faint);
}
.app-voet a, .app-voet .link-knop { color: var(--faint); font-size: 12.5px; text-decoration: none; }
.app-voet a:hover, .app-voet .link-knop:hover { color: var(--ink); text-decoration: none; }
@media (max-width: 640px) {
  .app-voet { gap: 4px 14px; padding: 12px 16px; }
}

/* in de editor verhuist de voet naar de hoofdkolom, naast de sidebar (zie toonScherm):
   main wordt een flexkolom zodat de voet onderaan blijft plakken, en de negatieve
   marges strekken hem tot de randen van de kolom (onder mains eigen padding door). */
#editor main { display: flex; flex-direction: column; }
#editor main > .app-voet { margin: auto -28px -40px; }
#editor .blok-toevoegen { margin-bottom: 26px; }  /* ademruimte boven de voetlijn */
@media (max-width: 860px) {
  /* mains onderpadding (92px) blijft onder de voet staan als vrije zone boven de duimbalk */
  #editor main > .app-voet { margin: auto -16px 0; }
}

/* ============================================================
   Prijzenpagina (nieuw design: free-first hero + tiers)
   Gescopet onder .pj zodat het los staat van de rest.
   ============================================================ */
/* padding: 0 — zie .ond: generieke main-padding uitschakelen voor volle breedte */
.pj { --pj-rail: 1180px; padding: 0; }
.pj-kicker { font-size: 12.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); font-weight: 700; margin-bottom: 14px; }

/* hero */
.pj-hero { max-width: var(--pj-rail); margin: 0 auto; padding: 72px 40px 60px;
  display: grid; grid-template-columns: 1.05fr .95fr; gap: 60px; align-items: center; }
.pj-hero h1 { font-size: 46px; line-height: 1.05; font-weight: 700; letter-spacing: -.03em;
  margin: 0 0 20px; color: var(--ink); text-wrap: balance; }
.pj-hero-sub { font-size: 17.5px; line-height: 1.62; color: var(--muted); margin: 0 0 30px; max-width: 520px; }
.pj-hero-sub strong { color: var(--ink); font-weight: 700; }
.pj-hero-cta { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 22px; }
.pj-hero-cta .knop i { font-size: 17px; }
.pj-checks { display: flex; flex-wrap: wrap; column-gap: 22px; row-gap: 10px;
  font-size: 13.5px; color: var(--muted); font-weight: 500; }
.pj-checks span { display: inline-flex; align-items: center; gap: 7px; }
.pj-checks i { font-size: 16px; color: var(--accent); }

/* flow-kaart rechts in de hero */
.pj-flow { background: var(--card); border: 1px solid var(--line); border-radius: 20px;
  padding: 30px 30px 26px; box-shadow: var(--schaduw-zwevend); }
.pj-flow-kop { font-size: 12.5px; letter-spacing: .13em; text-transform: uppercase;
  color: var(--faint); font-weight: 700; margin-bottom: 12px; }
.pj-stap { display: flex; gap: 15px; align-items: flex-start; padding: 14px 0; }
.pj-stap > .ico { width: 34px; height: 34px; border-radius: 10px; background: var(--accent-soft);
  color: var(--accent); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 19px; }
.pj-stap .tekst { flex: 1; }
.pj-stap .tekst b { display: block; font-size: 15px; font-weight: 600; color: var(--ink); margin-bottom: 2px; }
.pj-stap .tekst span { font-size: 13px; color: var(--muted); line-height: 1.5; }
.pj-pill-gratis { font-size: 12px; font-weight: 700; color: var(--accent); background: var(--accent-soft);
  padding: 4px 10px; border-radius: 999px; flex-shrink: 0; margin-top: 2px; }
.pj-flow-scheiding { display: flex; align-items: center; gap: 10px; margin: 6px 0 16px; color: var(--faint); }
.pj-flow-scheiding .lijn { flex: 1; height: 1px; background: var(--line); }
.pj-flow-scheiding .tekst { font-size: 12px; font-weight: 600; letter-spacing: .02em; }
.pj-flow-slot { display: flex; gap: 15px; align-items: center; background: var(--tint); border-radius: 14px; padding: 16px 18px; }
.pj-flow-slot > .ico { width: 34px; height: 34px; border-radius: 10px; background: var(--primary);
  color: var(--on-primary); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 18px; }
.pj-flow-slot .tekst { flex: 1; }
.pj-flow-slot .tekst b { display: block; font-size: 15px; font-weight: 700; color: var(--ink); }
.pj-flow-slot .tekst span { font-size: 13px; color: var(--muted); line-height: 1.5; }
.pj-flow-slot .prijs { font-size: 13.5px; font-weight: 700; color: var(--ink); white-space: nowrap; }

/* prijzen-band met de drie tiers */
.pj-prijzen { background: var(--panel); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.pj-prijzen-inner { max-width: var(--pj-rail); margin: 0 auto; padding: 80px 40px; }
.pj-kop { text-align: center; max-width: 640px; margin: 0 auto 46px; }
.pj-kop h2 { font-size: 36px; font-weight: 700; letter-spacing: -.025em; margin: 0 0 14px; }
.pj-kop p { font-size: 16.5px; color: var(--muted); margin: 0; line-height: 1.6; }
.pj-tiers { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; align-items: stretch; }
.pj-tier { background: var(--card); border: 1px solid var(--line); border-radius: 20px; padding: 34px 30px 30px;
  display: flex; flex-direction: column; position: relative; }
.pj-tier.top { border: 1.5px solid var(--accent); box-shadow: 0 20px 46px rgba(62, 98, 124, .16); }
.pj-tier-badge { position: absolute; top: -13px; left: 50%; transform: translateX(-50%);
  background: var(--accent); color: #fff; font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
  padding: 6px 16px; border-radius: 999px; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.pj-tier-pro { display: inline-flex; align-self: flex-start; align-items: center; gap: 6px;
  font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--accent);
  background: var(--accent-soft); padding: 5px 11px; border-radius: 999px; margin-bottom: 14px; }
.pj-tier-rij { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.pj-tier-naam { display: flex; align-items: center; gap: 11px; }
.pj-tier-naam .ico { width: 42px; height: 42px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; font-size: 22px; color: var(--accent); }
.pj-tier-naam h3 { font-size: 17px; font-weight: 700; letter-spacing: -.01em; color: var(--ink); margin: 0; }
.pj-tier-saving { font-size: 11.5px; font-weight: 700; color: var(--accent); background: var(--accent-soft); padding: 5px 11px; border-radius: 999px; white-space: nowrap; }
.pj-tier-prijs { display: flex; align-items: baseline; gap: 4px; margin-bottom: 4px; }
.pj-tier-prijs .bedrag { font-size: 44px; font-weight: 700; letter-spacing: -.03em; line-height: 1; color: var(--ink); }
.pj-tier-prijs .per { font-size: 15px; color: var(--faint); font-weight: 600; }
.pj-tier-sub { font-size: 13.5px; color: var(--muted); font-weight: 500; margin-bottom: 24px; min-height: 19px; }
.pj-tier hr { border: none; height: 1px; background: var(--line); margin: 0 0 22px; width: 100%; }
.pj-tier-features { list-style: none; margin: 0 0 28px; padding: 0; display: flex; flex-direction: column; gap: 13px; flex: 1; }
.pj-tier-features li { display: flex; align-items: flex-start; gap: 11px; font-size: 14px; color: var(--muted); line-height: 1.45; }
.pj-tier-features i { font-size: 14px; color: var(--accent); margin-top: 3px; flex-shrink: 0; }
.pj-tier-cta { display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 14.5px;
  text-decoration: none; font-weight: 700; padding: 14px 20px; border-radius: 12px;
  color: var(--ink); background: var(--card); border: 1px solid var(--line); }
.pj-tier-cta:hover { background: var(--tint); }
.pj-tier.top .pj-tier-cta { color: var(--on-primary); background: var(--accent); border-color: var(--accent); }
.pj-tier.top .pj-tier-cta:hover { filter: brightness(1.1); background: var(--accent); }
.pj-meta { text-align: center; font-size: 13.5px; color: var(--faint); margin: 30px 0 0;
  display: flex; align-items: center; justify-content: center; gap: 18px; flex-wrap: wrap; }
.pj-meta span:not(.stip) { display: inline-flex; align-items: center; gap: 7px; }
.pj-meta i { font-size: 15px; color: var(--accent); }
.pj-meta .stip { width: 4px; height: 4px; border-radius: 50%; background: var(--faint); }

/* wat krijgt u bij een definitieve versie */
.pj-krijg { background: var(--bg); }
.pj-krijg-grid { max-width: var(--pj-rail); margin: 0 auto; padding: 80px 40px 74px;
  display: grid; grid-template-columns: .85fr 1.15fr; gap: 60px; align-items: start; }
.pj-krijg-intro { position: sticky; top: 96px; }
.pj-krijg-intro h2 { font-size: 32px; font-weight: 700; letter-spacing: -.025em; margin: 0 0 16px; line-height: 1.1; }
.pj-krijg-intro p { font-size: 16px; color: var(--muted); line-height: 1.62; margin: 0 0 24px; }
.pj-krijg-lijst { display: flex; flex-direction: column; gap: 14px; }
.pj-krijg-item { background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 22px 24px; display: flex; gap: 17px; align-items: flex-start; }
.pj-krijg-item > .ico { width: 44px; height: 44px; border-radius: 12px; background: var(--accent-soft);
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 23px; color: var(--accent); }
.pj-krijg-item b { display: block; font-size: 16px; font-weight: 700; color: var(--ink); margin-bottom: 5px; letter-spacing: -.01em; }
.pj-krijg-item p { font-size: 14px; color: var(--muted); margin: 0; line-height: 1.55; }

/* mini-faq */
.pj-faq { background: var(--panel); border-top: 1px solid var(--line); }
.pj-faq-inner { max-width: 900px; margin: 0 auto; padding: 72px 40px; }
.pj-faq-kop { text-align: center; margin-bottom: 36px; }
.pj-faq-kop h2 { font-size: 30px; font-weight: 700; letter-spacing: -.02em; margin: 0; }
.pj-faq-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.pj-faq-item { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 22px 24px; }
.pj-faq-item .vraag { font-size: 15px; font-weight: 700; color: var(--ink); margin-bottom: 8px; display: flex; align-items: flex-start; gap: 10px; }
.pj-faq-item .vraag i { font-size: 16px; color: var(--accent); margin-top: 2px; flex-shrink: 0; }
.pj-faq-item p { font-size: 14px; color: var(--muted); margin: 0 0 0 26px; line-height: 1.55; }

@media (max-width: 940px) {
  .pj-hero { grid-template-columns: 1fr; gap: 40px; padding: 52px 28px 44px; }
  .pj-krijg-grid { grid-template-columns: 1fr; gap: 36px; padding: 60px 28px 56px; }
  .pj-krijg-intro { position: static; }
  .pj-tiers { grid-template-columns: 1fr; gap: 26px; max-width: 460px; margin: 0 auto; }
  .pj-faq-grid { grid-template-columns: 1fr; }
  .pj-prijzen-inner { padding: 60px 28px; }
  .pj-faq-inner { padding: 60px 28px; }
}
@media (max-width: 640px) {
  /* telefoon: hero smaller, CTA's gestapeld en full-width, checks verticaal */
  .pj-hero { padding: 34px 18px 30px; gap: 30px; }
  .pj-hero h1 { font-size: 30px; }
  .pj-hero-sub { font-size: 15.5px; }
  .pj-hero-cta { flex-direction: column; align-items: stretch; }
  .pj-hero-cta .knop { width: 100%; justify-content: center; }
  .pj-checks { flex-direction: column; gap: 9px; }
  .pj-flow { padding: 24px 22px; }

  .pj-prijzen-inner { padding: 40px 18px; }
  .pj-kop h2 { font-size: 27px; }
  /* meta-regel als verticale lijst zonder puntjes */
  .pj-meta { flex-direction: column; align-items: flex-start; gap: 11px; text-align: left; margin-top: 26px; }
  .pj-meta .stip { display: none; }

  .pj-krijg-grid { padding: 40px 18px 34px; gap: 22px; }
  .pj-krijg-intro h2 { font-size: 25px; }

  .pj-faq-inner { padding: 38px 18px; }
  .pj-faq-kop h2 { font-size: 23px; }
}
