/* podofit.nl — ontwerp 2026. Eén stylesheet, geen framework.
   Kleuren en typografie komen uit design/tokens.json; wijzig ze in dit :root-blok.

   Uitgangspunten:
   - Het logo geeft de richting: leisteengrijs + hemelsblauw. Beige is weg.
   - Basistekst 20 px, Atkinson Hyperlegible (ontworpen voor verminderd zicht),
     regelafstand 1,6, contrast minimaal 4,5:1, aanraakvlakken minimaal 48 px.
   - Alles in rem: browserzoom en de tekstgrootte-knop werken samen.
   - Werkt zonder JavaScript; JS voegt alleen beweging en gemak toe. */

:root {
  /* Licht thema. De donkere waarden staan hieronder; beide lijsten worden uit
     dezelfde bron gegenereerd, dus ze kunnen niet uit de pas lopen.
     --vlak is een donker vlak (voet, oproepband), --kop is koptekst: in het
     lichte thema dezelfde kleur, in het donkere thema juist elkaars tegendeel.
     --op-blauw is de tekst op de blauwe knop en verandert nooit: hemelsblauw
     blijft in beide thema's licht, dus die tekst blijft donker. */
  --blauw: #5bcaee;
  --blauw-diep: #1a9fd0;
  --zee: #0e5f7a;
  --vlak: #0b2e3d;
  --vlak-2: #123f52;
  --zeeschuim: #e6f6fc;
  --zeeschuim-2: #cdeefa;
  --zand: #f6f3ee;
  --zand-2: #ede8df;
  --pagina: #ffffff;
  --paneel: #ffffff;
  --plaat: #ffffff;
  --op-vlak: #ffffff;
  --kop: #0b2e3d;
  --op-blauw: #0b2e3d;
  --tekst: #1f2a30;
  --tekst-zacht: #4a5860;
  --rand: #dbe3e8;
  --leisteen: #4f4c4c;
  --fout: #b3261e;
  --goed: #1b7f4b;
  --waas: rgb(255 255 255 / 92%);
  --schaduw-zacht: 0 1px 2px rgb(11 46 61 / 4%), 0 8px 24px rgb(11 46 61 / 6%);
  --schaduw: 0 2px 4px rgb(11 46 61 / 6%), 0 18px 48px rgb(11 46 61 / 12%);

  /* typografie */
  --font-kop: 'Bricolage Grotesque', 'Helvetica Neue', Arial, sans-serif;
  --font-tekst: 'Atkinson Hyperlegible', 'Helvetica Neue', Arial, sans-serif;

  /* maat */
  --breedte: 1240px;
  --breedte-tekst: 720px;
  --gutter: clamp(1.25rem, 4vw, 2.5rem);
  --sectie-y: clamp(4rem, 8vw, 7rem);
  --radius: 20px;
  --radius-kaart: 28px;
  --radius-knop: 999px;
  --kop-hoogte: 5.25rem;
  --overgang: 220ms cubic-bezier(0.2, 0.7, 0.2, 1);

  color-scheme: light;
}

/* Donker thema. Standaard volgt de site de systeeminstelling; kiest de bezoeker
   zelf, dan zet site.js data-thema op <html> en wint die keuze in beide
   richtingen. Vandaar twee blokken met dezelfde inhoud. */
@media (prefers-color-scheme: dark) {
  :root:not([data-thema='licht']) {
    --blauw: #5bcaee;
    --blauw-diep: #6bcdf0;
    --zee: #7ad2f2;
    --vlak: #16394a;
    --vlak-2: #1d4759;
    --zeeschuim: #0f2e3a;
    --zeeschuim-2: #17414f;
    --zand: #16282f;
    --zand-2: #1d3038;
    --pagina: #0a2029;
    --paneel: #102b36;
    --plaat: #ffffff;
    --op-vlak: #eaf6fb;
    --kop: #e8f4f9;
    --op-blauw: #0b2e3d;
    --tekst: #d3e4eb;
    --tekst-zacht: #9fb6c1;
    --rand: #204353;
    --leisteen: #9aa3a4;
    --fout: #ff8a80;
    --goed: #4fd18a;
    --waas: rgb(10 32 41 / 92%);
    --schaduw-zacht: 0 1px 2px rgb(0 0 0 / 30%), 0 8px 24px rgb(0 0 0 / 35%);
    --schaduw: 0 2px 4px rgb(0 0 0 / 35%), 0 18px 48px rgb(0 0 0 / 45%);
    color-scheme: dark;
  }
}
:root[data-thema='donker'] {
    --blauw: #5bcaee;
    --blauw-diep: #6bcdf0;
    --zee: #7ad2f2;
    --vlak: #16394a;
    --vlak-2: #1d4759;
    --zeeschuim: #0f2e3a;
    --zeeschuim-2: #17414f;
    --zand: #16282f;
    --zand-2: #1d3038;
    --pagina: #0a2029;
    --paneel: #102b36;
    --plaat: #ffffff;
    --op-vlak: #eaf6fb;
    --kop: #e8f4f9;
    --op-blauw: #0b2e3d;
    --tekst: #d3e4eb;
    --tekst-zacht: #9fb6c1;
    --rand: #204353;
    --leisteen: #9aa3a4;
    --fout: #ff8a80;
    --goed: #4fd18a;
    --waas: rgb(10 32 41 / 92%);
    --schaduw-zacht: 0 1px 2px rgb(0 0 0 / 30%), 0 8px 24px rgb(0 0 0 / 35%);
    --schaduw: 0 2px 4px rgb(0 0 0 / 35%), 0 18px 48px rgb(0 0 0 / 45%);
  color-scheme: dark;
}

/* ── basis ──────────────────────────────────────────────────────────────── */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* 20 px als vertrekpunt — niet iets wat je eerst moet aanzetten. De knop
   "Tekst groter" in de kop zet .tekst-groter/.tekst-grootst op <html>. */
html {
  font-size: 125%;
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--kop-hoogte) + 1rem);
}
html.tekst-groter {
  font-size: 140%;
}
html.tekst-grootst {
  font-size: 156%;
}

body {
  margin: 0;
  background: var(--pagina);
  color: var(--tekst);
  font-family: var(--font-tekst);
  font-size: 1rem;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

:target {
  scroll-margin-top: calc(var(--kop-hoogte) + 1.5rem);
}

img,
svg {
  max-width: 100%;
  height: auto;
  display: block;
}

a {
  color: var(--zee);
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.18em;
  text-decoration-color: rgb(14 95 122 / 35%);
  transition: color var(--overgang), text-decoration-color var(--overgang);
}
a:hover {
  color: var(--kop);
  text-decoration-color: currentColor;
}

:focus-visible {
  outline: 3px solid var(--blauw-diep);
  outline-offset: 3px;
  border-radius: 6px;
}

::selection {
  background: var(--zeeschuim-2);
  color: var(--kop);
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: var(--font-kop);
  color: var(--kop);
  margin: 0 0 0.6em;
  line-height: 1.12;
  letter-spacing: -0.02em;
  font-weight: 700;
  text-wrap: balance;
}
h1 {
  font-size: clamp(2.5rem, 1.6rem + 3vw, 4.25rem);
  line-height: 1.05;
  letter-spacing: -0.025em;
  font-weight: 800;
}
h2 {
  font-size: clamp(1.9rem, 1.4rem + 1.6vw, 2.75rem);
}
h3 {
  font-size: clamp(1.35rem, 1.2rem + 0.6vw, 1.7rem);
  line-height: 1.25;
}
h4,
h5,
h6 {
  font-size: 1.15rem;
  letter-spacing: -0.01em;
}
* + h2 {
  margin-top: 2.2rem;
}
* + h3 {
  margin-top: 1.6rem;
}

p,
ul,
ol {
  margin: 0 0 1.15em;
}
li {
  margin-bottom: 0.35em;
}
strong,
b {
  font-weight: 700;
  color: var(--kop);
}
em {
  font-style: italic;
}
blockquote {
  margin: 2rem 0;
  padding: 0.5rem 0 0.5rem 1.5rem;
  border-left: 5px solid var(--blauw);
  font-family: var(--font-kop);
  font-size: 1.3rem;
  color: var(--kop);
}
hr {
  border: 0;
  border-top: 1px solid var(--rand);
  margin: 3rem 0;
}

.sr {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.overslaan {
  position: absolute;
  left: 1rem;
  top: -100px;
  z-index: 100;
  background: var(--vlak);
  color: var(--op-vlak);
  padding: 0.75rem 1.25rem;
  border-radius: var(--radius-knop);
  font-weight: 700;
}
.overslaan:focus {
  top: 1rem;
}

/* ── knoppen ─────────────────────────────────────────────────────────────── */
.knop,
.pakket__knop,
button.knop {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  min-height: 3.4rem;
  padding: 0.85rem 1.75rem;
  border-radius: var(--radius-knop);
  background: var(--blauw);
  color: var(--op-blauw);
  font-family: var(--font-tekst);
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.2;
  text-decoration: none;
  border: 2px solid transparent;
  cursor: pointer;
  box-shadow: 0 6px 20px rgb(91 202 238 / 30%);
  transition: transform var(--overgang), box-shadow var(--overgang), background var(--overgang), color var(--overgang);
}
.knop:hover,
.pakket__knop:hover {
  background: #62cbef;
  color: var(--op-blauw);
  transform: translateY(-2px);
  box-shadow: 0 10px 28px rgb(91 202 238 / 40%);
}
.knop:active {
  transform: translateY(0);
}
.knop--donker {
  background: var(--vlak);
  color: var(--op-vlak);
  box-shadow: 0 6px 20px rgb(11 46 61 / 25%);
}
.knop--donker:hover {
  background: var(--nacht-2);
  color: var(--op-vlak);
  box-shadow: 0 10px 28px rgb(11 46 61 / 30%);
}
.knop--licht {
  background: var(--paneel);
  color: var(--kop);
  border-color: var(--rand);
  box-shadow: var(--schaduw-zacht);
}
.knop--licht:hover {
  background: var(--zeeschuim);
  border-color: var(--zeeschuim-2);
  color: var(--kop);
}
.knop--omlijnd {
  background: transparent;
  color: var(--kop);
  border-color: var(--kop);
  box-shadow: none;
}
.knop--omlijnd:hover {
  background: var(--vlak);
  color: var(--op-vlak);
}
.knop--groot {
  min-height: 3.9rem;
  padding: 1rem 2.1rem;
  font-size: 1.15rem;
}
.knop svg {
  width: 1.3em;
  height: 1.3em;
  flex: none;
}
.knop-rij {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem 1rem;
  align-items: center;
  margin: 1.4rem 0 0.6rem;
}
.knoppenrij {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
  margin: 1.5rem 0;
}
.knoppenrij .knop-rij {
  margin: 0;
}
.telefoon-rij {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.4rem 0.6rem;
  margin: 0.5rem 0 0;
  font-size: 1.05rem;
}
.telefoon-rij__label {
  color: var(--tekst-zacht);
}
.telefoon-rij__nummer {
  font-family: var(--font-kop);
  font-weight: 700;
  font-size: 1.35rem;
  color: var(--kop);
  letter-spacing: 0.01em;
}

/* ── label boven een kop (eyebrow) ───────────────────────────────────────── */
.label,
.hero__boven,
.pakketgroep__badge,
.locatie__soort {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  margin: 0 0 1rem;
  font-family: var(--font-tekst);
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--zee);
}
.label,
.hero__boven {
  align-items: flex-start;
  line-height: 1.5;
}
.label::before,
.hero__boven::before,
.locatie__soort::before {
  margin-top: 0.4em;
  content: '';
  width: 0.7rem;
  height: 0.7rem;
  border-radius: 50%;
  background: var(--blauw);
  flex: none;
}

/* ── kop / navigatie ─────────────────────────────────────────────────────── */
/* Twee rijen op een breed scherm: een smalle bovenrij met telefoon en
   tekstgrootte, daaronder logo, menu en de afspraakknop. Bij scrollen klapt de
   bovenrij dicht; de afspraakknop blijft altijd in beeld. Op een smal scherm is
   het één rij met een menuknop; telefoon en tekstgrootte zitten dan in het menu. */
.kop {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--waas);
  backdrop-filter: saturate(160%) blur(14px);
  -webkit-backdrop-filter: saturate(160%) blur(14px);
  border-bottom: 1px solid transparent;
  transition: box-shadow var(--overgang), border-color var(--overgang);
}
.kop.is-gescrold {
  border-color: var(--rand);
  box-shadow: 0 8px 30px rgb(11 46 61 / 8%);
}
.kop__boven {
  background: var(--vlak);
  color: var(--op-vlak);
  overflow: hidden;
  max-height: 3.2rem;
  transition: max-height 260ms ease;
}
.kop.is-gescrold .kop__boven {
  max-height: 0;
}
.kop__boven-binnen {
  max-width: 1360px;
  margin: 0 auto;
  padding: 0 var(--gutter);
  min-height: 3.2rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.kop__tagline {
  margin: 0;
  font-size: 0.9rem;
  color: rgb(255 255 255 / 80%);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kop__boven-acties {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex: none;
}
.kop__boven .kop__bellen {
  color: var(--op-vlak);
  min-height: 2.5rem;
  padding: 0.3rem 0.8rem;
}
.kop__boven .kop__bellen:hover {
  background: rgb(255 255 255 / 12%);
  color: var(--op-vlak);
}
.kop__boven .kop__bellen svg {
  color: var(--blauw);
}
.kop__boven .tekstgrootte {
  min-height: 2.5rem;
  min-width: 2.5rem;
  border-color: rgb(255 255 255 / 25%);
  background: transparent;
  color: var(--op-vlak);
  font-size: 0.95rem;
}
.kop__boven .tekstgrootte:hover {
  background: rgb(255 255 255 / 12%);
}
.kop__binnen {
  max-width: 1360px;
  margin: 0 auto;
  padding: 0 var(--gutter);
  min-height: var(--kop-hoogte);
  display: flex;
  align-items: center;
  gap: 1.25rem;
}
.logo {
  display: flex;
  align-items: center;
  flex: none;
  padding: 0.4rem 0;
}
.logo img {
  width: auto;
  height: 3rem;
}
.menu {
  margin-left: auto;
  min-width: 0;
  display: flex;
  align-items: center;
}
.menu__paneel {
  display: flex;
  align-items: center;
}
.menu__extra {
  display: none;
}
.hoofdmenu {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  gap: 0.1rem;
}
.hoofdmenu > li {
  margin: 0;
  position: relative;
}
/* Het logo is al de weg naar huis; op een breed scherm scheelt dat een menu-item. */
.hoofdmenu > .menu-home {
  display: none;
}
.hoofdmenu a,
.submenu-knop {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  min-height: 2.8rem;
  padding: 0.4rem 0.6rem;
  border-radius: var(--radius-knop);
  font-family: var(--font-tekst);
  /* vaste maat: het menu groeit niet mee met de tekstgrootte-knop, anders past het niet */
  font-size: 16px;
  font-weight: 700;
  white-space: nowrap;
  color: var(--kop);
  text-decoration: none;
  background: none;
  border: 0;
  cursor: pointer;
  transition: background var(--overgang), color var(--overgang);
}
.hoofdmenu a:hover,
.submenu-knop:hover,
.submenu-knop[aria-expanded='true'] {
  background: var(--zeeschuim);
  color: var(--kop);
}
.hoofdmenu a[aria-current='page'] {
  background: var(--vlak);
  color: var(--op-vlak);
}
.chevron {
  width: 0.5rem;
  height: 0.5rem;
  border-right: 2.5px solid currentColor;
  border-bottom: 2.5px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform var(--overgang);
}
.submenu-knop[aria-expanded='true'] .chevron {
  transform: translateY(2px) rotate(225deg);
}
.submenu {
  list-style: none;
  margin: 0;
  padding: 0.75rem;
  position: absolute;
  top: calc(100% + 0.6rem);
  right: 0;
  min-width: min(24rem, calc(100vw - 2 * var(--gutter)));
  background: var(--paneel);
  border: 1px solid var(--rand);
  border-radius: var(--radius);
  box-shadow: var(--schaduw);
  display: none;
  columns: 2;
  column-gap: 0.5rem;
}
.submenu-knop[aria-expanded='true'] + .submenu {
  display: block;
  animation: verschijn 180ms ease-out;
}
.submenu li {
  margin: 0;
  break-inside: avoid;
}
.submenu a {
  display: flex;
  width: 100%;
  font-weight: 400;
  padding: 0.5rem 0.9rem;
  border-radius: 12px;
  font-size: 1rem;
  white-space: normal;
}
.submenu a[aria-current='page'] {
  background: var(--zeeschuim);
  color: var(--kop);
}

.kop__acties {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex: none;
}
.kop .kop__acties .knop {
  padding: 0.6rem 1.1rem;
}
.kop__bellen {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 3rem;
  padding: 0.5rem 1rem;
  border-radius: var(--radius-knop);
  color: var(--kop);
  font-family: var(--font-kop);
  font-weight: 700;
  font-size: 1.1rem;
  text-decoration: none;
  letter-spacing: 0.01em;
  transition: background var(--overgang);
}
.kop__bellen:hover {
  background: var(--zeeschuim);
  color: var(--kop);
}
.kop__bellen svg {
  width: 1.25rem;
  height: 1.25rem;
  color: var(--blauw-diep);
  flex: none;
}
.kop__bellen--mobiel {
  display: none;
}
.kop .knop {
  min-height: 3rem;
  padding: 0.6rem 1.3rem;
  font-size: 1rem;
  box-shadow: none;
  white-space: nowrap;
}
.tekstgrootte {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-width: 3rem;
  min-height: 3rem;
  padding: 0 0.7rem;
  border-radius: var(--radius-knop);
  border: 2px solid var(--rand);
  background: var(--paneel);
  color: var(--kop);
  font-family: var(--font-kop);
  font-weight: 800;
  font-size: 1.05rem;
  letter-spacing: -0.02em;
  cursor: pointer;
  transition: background var(--overgang), border-color var(--overgang);
}
.tekstgrootte:hover {
  background: var(--zeeschuim);
  border-color: var(--zeeschuim-2);
}
.tekstgrootte span:nth-child(2) {
  font-size: 1.3em;
  margin-left: -0.3rem;
}
.tekstgrootte__label {
  font-family: var(--font-tekst);
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: 0;
}
.tekstgrootte[hidden] {
  display: none;
}

/* ── logo per thema ──────────────────────────────────────────────────────── */
/* Het logo-PNG heeft een witte achtergrond ingebakken, dus op een donkere
   ondergrond wordt het een witte sticker. logo-donker.png heeft een doorzichtige
   achtergrond en een wit woordmerk. De voet staat in beide thema's op een donker
   vlak en gebruikt die variant altijd. */
.logo__donker {
  display: none;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-thema='licht']) .logo__licht {
    display: none;
  }
  :root:not([data-thema='licht']) .logo__donker {
    display: block;
  }
}
:root[data-thema='donker'] .logo__licht {
  display: none;
}
:root[data-thema='donker'] .logo__donker {
  display: block;
}

/* ── licht/donker-knop ───────────────────────────────────────────────────── */
.thema {
  display: inline-grid;
  place-items: center;
  min-width: 3rem;
  min-height: 3rem;
  padding: 0 0.7rem;
  border-radius: var(--radius-knop);
  border: 2px solid var(--rand);
  background: var(--paneel);
  color: var(--kop);
  cursor: pointer;
  transition: background var(--overgang), border-color var(--overgang);
}
.thema:hover {
  background: var(--zeeschuim);
  border-color: var(--zeeschuim-2);
}
.thema[hidden] {
  display: none;
}
.thema__icoon {
  grid-area: 1 / 1;
  width: 1.45rem;
  height: 1.45rem;
  display: none;
}
.thema[data-stand='systeem'] .thema__auto,
.thema[data-stand='licht'] .thema__zon,
.thema[data-stand='donker'] .thema__maan {
  display: block;
}
.kop__boven .thema {
  min-height: 2.5rem;
  min-width: 2.5rem;
  border-color: rgb(255 255 255 / 25%);
  background: transparent;
  color: var(--op-vlak);
}
.kop__boven .thema:hover {
  background: rgb(255 255 255 / 12%);
  border-color: rgb(255 255 255 / 35%);
}
.menu__extra .thema {
  border-color: var(--rand);
}

.menu-knop {
  display: none;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  min-width: 3rem;
  min-height: 3rem;
  padding: 0 1rem;
  border-radius: var(--radius-knop);
  border: 2px solid var(--rand);
  background: var(--paneel);
  color: var(--kop);
  font-family: var(--font-tekst);
  font-weight: 700;
  font-size: 1rem;
  cursor: pointer;
}
.menu-knop .sr {
  position: static !important;
  width: auto;
  height: auto;
  clip: auto;
}
.balken {
  position: relative;
  width: 1.3rem;
  height: 2px;
  background: currentColor;
  border-radius: 2px;
}
.balken::before,
.balken::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  height: 2px;
  background: currentColor;
  border-radius: 2px;
  transition: transform var(--overgang);
}
.balken::before {
  top: -7px;
}
.balken::after {
  top: 7px;
}
.menu-knop[aria-expanded='true'] .balken {
  background: transparent;
}
.menu-knop[aria-expanded='true'] .balken::before {
  transform: translateY(7px) rotate(45deg);
}
.menu-knop[aria-expanded='true'] .balken::after {
  transform: translateY(-7px) rotate(-45deg);
}

@media (max-width: 1400px) {
  .kop__tagline {
    display: none;
  }
  .kop__boven-binnen {
    justify-content: flex-end;
  }
}

/* Compacte kop (hamburger). Wordt gezet door site.js, en niet door een
   media-query alleen: hij moet óók aanslaan als de bezoeker de tekst vergroot,
   want dan groeit het menu tot het over de afspraakknop heen loopt. Een
   media-query kan de tekstgrootte-klasse niet zien, vandaar een klasse op <html>
   die het inline-script in de <head> al vóór het tekenen zet. */
html.kop-compact {
  .menu-knop {
    display: inline-flex;
  }
  .kop__bellen--mobiel {
    display: inline-flex;
    border: 2px solid var(--rand);
    padding: 0.5rem 0.75rem;
  }
  .menu__paneel {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    max-height: calc(100dvh - var(--kop-hoogte));
    background: var(--paneel);
    border-top: 1px solid var(--rand);
    overflow-y: auto;
    padding: 1rem var(--gutter) 3rem;
    z-index: 40;
    flex-direction: column;
    align-items: stretch;
    box-shadow: 0 30px 60px rgb(11 46 61 / 20%);
  }
  .menu__paneel.is-open {
    display: flex;
    animation: verschijn 200ms ease-out;
  }
  body.menu-open {
    overflow: hidden;
  }
  .hoofdmenu {
    flex-direction: column;
    align-items: stretch;
    gap: 0.25rem;
  }
  .hoofdmenu > .menu-home {
    display: block;
  }
  .hoofdmenu a,
  .submenu-knop {
    width: 100%;
    justify-content: space-between;
    min-height: 3.5rem;
    font-size: 1.15rem;
    padding: 0.7rem 1.1rem;
    border-radius: 16px;
    white-space: normal;
  }
  .submenu {
    position: static;
    box-shadow: none;
    border: 0;
    background: var(--zand);
    columns: 1;
    min-width: 0;
    margin: 0.3rem 0 0.6rem;
    border-radius: 16px;
  }
  .submenu a {
    font-size: 1.1rem;
    min-height: 3rem;
  }
  .menu__extra {
    display: flex;
    flex-wrap: wrap;
    gap: 0.8rem;
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--rand);
  }
  .menu__extra .kop__bellen {
    border: 2px solid var(--rand);
  }
}

/* Smal scherm én vergrote tekst: het woord "Menu" naast het logo en de belknop
   past dan niet meer. Alleen het icoon dus, met het label weer geknipt zodat een
   schermlezer het nog steeds voorleest (display:none zou het ook daar weghalen). */
html.kop-compact.tekst-groter .menu-knop .sr,
html.kop-compact.tekst-grootst .menu-knop .sr {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
html.kop-compact.tekst-groter .menu-knop,
html.kop-compact.tekst-grootst .menu-knop {
  padding: 0 0.85rem;
}

/* Vergrote tekst op een breed scherm: het menu past niet meer naast de knoppen.
   In plaats van inklappen breekt de kop af naar twee rijen — logo en knoppen
   boven, de menu-items in een eigen rij daaronder. Het menu blijft dus gewoon
   zichtbaar, en groeit nu ook mee met de gekozen tekstgrootte. */
html.kop-rij {
  --kop-hoogte: 8.5rem;
}
html.kop-rij .kop__binnen {
  flex-wrap: wrap;
  align-items: center;
  padding-bottom: 0.5rem;
}
html.kop-rij .kop__acties {
  margin-left: auto;
}
html.kop-rij .menu {
  order: 3;
  width: 100%;
  margin-left: 0;
  border-top: 1px solid var(--rand);
  padding-top: 0.4rem;
}
html.kop-rij .menu__paneel {
  display: flex;
  width: 100%;
}
html.kop-rij .hoofdmenu {
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 0.15rem 0.25rem;
  width: 100%;
}
/* In een eigen rij mag het menu wél meegroeien met de tekstgrootte. */
html.kop-rij .hoofdmenu a,
html.kop-rij .submenu-knop {
  font-size: 1rem;
  padding: 0.45rem 0.8rem;
}
html.kop-rij .submenu {
  right: auto;
  left: 0;
}

/* De bovenbalk verdwijnt alleen op een smal scherm. Bij vergrote tekst klapt de
   kop wél in, maar blijft die balk staan: daar zitten de tekstgrootte- en
   themaknop, en die moet je juist dán kunnen bereiken. */
@media (max-width: 1339px) {
  .kop__boven {
    display: none;
  }
}

/* Zonder JavaScript kan de hamburger niet opengaan. Dan staat het menu gewoon
   open onder het logo: liever een lange lijst dan geen navigatie. */
@media (max-width: 1339px) {
  html:not(.js) .kop__boven,
  html:not(.js) .menu-knop {
    display: none;
  }
  html:not(.js) .kop__binnen {
    flex-wrap: wrap;
    padding-bottom: 0.75rem;
  }
  html:not(.js) .menu {
    width: 100%;
    margin-left: 0;
  }
  html:not(.js) .menu__paneel {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    width: 100%;
  }
  html:not(.js) .hoofdmenu {
    flex-direction: column;
    align-items: stretch;
    gap: 0.25rem;
  }
  html:not(.js) .hoofdmenu > .menu-home {
    display: block;
  }
  html:not(.js) .hoofdmenu a {
    width: 100%;
    min-height: 3.25rem;
    font-size: 1.1rem;
  }
  html:not(.js) .submenu {
    position: static;
    display: block;
    columns: 1;
    min-width: 0;
    border: 0;
    box-shadow: none;
    background: var(--zand);
    border-radius: 16px;
    margin: 0.3rem 0 0.6rem;
  }
}

@media (max-width: 560px) {
  .kop .kop__acties .knop {
    display: none;
  }
  .kop__binnen {
    gap: 0.75rem;
  }
  .logo img {
    height: 2.4rem;
  }
  .menu-knop {
    padding: 0 0.8rem;
  }
  .kop__acties {
    gap: 0.5rem;
  }
}
@media (max-width: 380px) {
  .logo img {
    height: 2.1rem;
  }
  .menu-knop .sr {
    display: none;
  }
}

/* ── hero ─────────────────────────────────────────────────────────────────── */
.hero {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(60rem 30rem at 85% -10%, var(--zeeschuim-2), transparent 70%),
    linear-gradient(180deg, var(--zeeschuim) 0%, var(--pagina) 100%);
}
.hero::before {
  /* abstracte "afdruk": een zachte cirkel met een kleinere erboven, in de logokleur */
  content: '';
  position: absolute;
  right: -8rem;
  top: -6rem;
  width: 34rem;
  height: 34rem;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, rgb(91 202 238 / 28%), rgb(91 202 238 / 0%) 65%);
  pointer-events: none;
}
.hero__binnen {
  position: relative;
  max-width: var(--breedte);
  margin: 0 auto;
  padding: clamp(3rem, 6vw, 5.5rem) var(--gutter) clamp(3rem, 6vw, 5rem);
  display: grid;
  gap: 2.5rem;
  align-items: center;
}
.hero--beeld .hero__binnen {
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
}
.hero__tekst {
  max-width: 40rem;
}
.hero h1 {
  margin-bottom: 1rem;
}
.hero__intro {
  font-size: clamp(1.2rem, 1.1rem + 0.5vw, 1.45rem);
  line-height: 1.5;
  color: var(--tekst-zacht);
  max-width: 34rem;
  margin-bottom: 1.6rem;
}
.hero .knop-rij {
  margin-top: 0.4rem;
}
.hero .knop {
  min-height: 3.9rem;
  padding: 1rem 2rem;
  font-size: 1.15rem;
}
.hero .telefoon-rij {
  margin-top: 1.2rem;
}
.hero__beeld {
  position: relative;
  justify-self: end;
  width: 100%;
  max-width: 34rem;
}
.hero__beeld img {
  width: 100%;
  aspect-ratio: 4 / 4.4;
  object-fit: cover;
  border-radius: 46% 54% 50% 50% / 42% 44% 56% 58%;
  box-shadow: var(--schaduw);
  position: relative;
  z-index: 1;
}
.hero__beeld::after {
  content: '';
  position: absolute;
  inset: 8% -6% -6% 10%;
  border-radius: 54% 46% 48% 52% / 56% 52% 48% 44%;
  background: linear-gradient(135deg, var(--blauw), var(--zeeschuim-2));
  z-index: 0;
}
.hero--compact .hero__binnen {
  padding-top: clamp(2.5rem, 5vw, 4rem);
  padding-bottom: clamp(2.5rem, 5vw, 4rem);
}

/* Tijdelijke meldingsregel in de hero (bijv. wegwerkzaamheden), toegevoegd door
   Anja op 27-08. Zij koos daar een donkerrood (#5c1414) omdat het gebruikelijke
   foutrood op de béige hero van het oude ontwerp geen 4,5:1 haalde. Op het nieuwe
   hero-verloop haalt --fout 5,9:1 op zeeschuim en 6,5:1 op wit, en die wisselt
   bovendien vanzelf mee naar het donkere thema. Vandaar het token in plaats van
   een vaste kleur. */
.hero__melding {
  max-width: 46ch;
  margin: 1.2rem 0 0;
  padding: 0.2rem 0 0.2rem 0.9rem;
  border-left: 4px solid var(--fout);
  color: var(--fout);
  font-weight: 700;
}

/* vertrouwensregel onder de hero-knoppen */
.vertrouwen {
  list-style: none;
  margin: 2.2rem 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 1.5rem;
  font-size: 1rem;
  color: var(--tekst-zacht);
}
.vertrouwen li {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0;
}
.vertrouwen svg {
  width: 1.4rem;
  height: 1.4rem;
  color: var(--blauw-diep);
  flex: none;
}

/* kruimelpad op de subpagina's */
.kruimels {
  margin: 0 0 1.25rem;
  padding: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.6rem;
  font-size: 0.98rem;
  color: var(--tekst-zacht);
}
.kruimels li {
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
}
.kruimels li + li::before {
  content: '›';
  color: var(--blauw-diep);
  font-weight: 700;
}
.kruimels a {
  color: var(--tekst-zacht);
  text-decoration-color: transparent;
}
.kruimels a:hover {
  color: var(--kop);
  text-decoration-color: currentColor;
}

@media (max-width: 900px) {
  .hero--beeld .hero__binnen {
    grid-template-columns: minmax(0, 1fr);
  }
  .hero__beeld {
    justify-self: stretch;
    max-width: 26rem;
    margin: 0 auto;
  }
  .hero__beeld img {
    aspect-ratio: 5 / 4;
  }
}

/* ── secties ─────────────────────────────────────────────────────────────── */
.sectie {
  padding: var(--sectie-y) 0;
  position: relative;
}
.sectie__binnen {
  max-width: var(--breedte);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.sectie--light {
  background: var(--pagina);
}
.sectie--spare {
  background: var(--zand);
}
.sectie--accent {
  background: var(--zeeschuim);
}
.sectie--dark {
  background: var(--vlak);
  color: rgb(255 255 255 / 92%);
}
.sectie--dark h1,
.sectie--dark h2,
.sectie--dark h3,
.sectie--dark h4,
.sectie--dark strong {
  color: var(--op-vlak);
}
.sectie--dark a {
  color: var(--op-vlak);
  text-decoration-color: rgb(255 255 255 / 50%);
}
.sectie--dark .label {
  color: var(--blauw);
}
.sectie--beeld {
  min-height: 24rem;
  background-size: cover;
  background-position: center;
  background-attachment: scroll;
  padding: 0;
}
.sectie--beeld::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgb(11 46 61 / 25%), rgb(11 46 61 / 55%));
}
.sectie + .sectie--light,
.sectie--light + .sectie--light {
  padding-top: 0;
}
.sectie--light + .sectie--light .sectie__binnen {
  padding-top: var(--sectie-y);
  border-top: 1px solid var(--rand);
}

.sectie__binnen--kop {
  padding-bottom: 0;
}
.sectie__binnen--kop h2 {
  margin-bottom: 0;
}
.sectie__binnen--kop + .sectie__binnen .kaarten {
  margin-top: 1.5rem;
}

/* lopende tekst krijgt een leesbreedte; kaarten en beeld de volle breedte */
.sectie__binnen > p,
.sectie__binnen > ul,
.sectie__binnen > ol,
.sectie__binnen > h2,
.sectie__binnen > h3,
.sectie__binnen > h4,
.sectie__binnen > blockquote,
.sectie__binnen > .tabel-wrap,
.sectie__binnen > .knop-rij,
.sectie__binnen > .telefoon-rij,
.sectie__binnen > .naarboven {
  max-width: var(--breedte-tekst);
}
.sectie__binnen > figure.beeld {
  max-width: 56rem;
}

/* pagina's met leestekst (info, blog): kolom + zijkaart */
.lees {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 20rem;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
}
.lees__tekst > :first-child {
  margin-top: 0;
}
.lees__tekst h2,
.lees__tekst h3,
.lees__tekst p,
.lees__tekst ul,
.lees__tekst ol,
.lees__tekst blockquote,
.lees__tekst .tabel-wrap {
  max-width: var(--breedte-tekst);
}
.lees__tekst p,
.lees__tekst li {
  font-size: 1.08rem;
  line-height: 1.65;
}
.lees__zij {
  position: sticky;
  top: calc(var(--kop-hoogte) + 1.5rem);
}
.zijkaart {
  background: var(--vlak);
  color: var(--op-vlak);
  border-radius: var(--radius-kaart);
  padding: 1.8rem;
  box-shadow: var(--schaduw);
  background-image: radial-gradient(28rem 14rem at 100% 0%, rgb(91 202 238 / 30%), transparent 70%);
}
.zijkaart h2 {
  color: var(--op-vlak);
  font-size: 1.5rem;
  margin: 0 0 0.6rem;
}
.zijkaart p {
  color: rgb(255 255 255 / 85%);
  margin-bottom: 1.2rem;
}
.zijkaart .knop {
  width: 100%;
}
.zijkaart .telefoon-rij {
  margin-top: 1rem;
  font-size: 1rem;
}
.zijkaart .telefoon-rij__label {
  color: rgb(255 255 255 / 70%);
}
.zijkaart .telefoon-rij__nummer,
.zijkaart a {
  color: var(--op-vlak);
}
@media (max-width: 960px) {
  .lees {
    grid-template-columns: minmax(0, 1fr);
  }
  .lees__zij {
    position: static;
  }
}

/* ── kaarten (Mobiliseren / Corrigeren / Trainen) ─────────────────────────── */
.kaarten {
  display: grid;
  gap: 1.5rem;
  margin: 2rem 0;
  counter-reset: stap;
}
.kaarten--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.kaarten--3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.kaart {
  min-width: 0;
  position: relative;
  background: var(--paneel);
  border-radius: var(--radius-kaart);
  overflow: hidden;
  box-shadow: var(--schaduw-zacht);
  border: 1px solid var(--rand);
  display: flex;
  flex-direction: column;
  transition: transform var(--overgang), box-shadow var(--overgang);
}
.kaart:hover {
  transform: translateY(-4px);
  box-shadow: var(--schaduw);
}
.kaart > img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.kaart__tekst {
  padding: 1.5rem 1.6rem 1.8rem;
  flex: 1;
}
.kaart__tekst h3 {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  margin-bottom: 0.7rem;
  text-transform: capitalize;
}
.kaart__tekst h3::before {
  counter-increment: stap;
  content: counter(stap);
  display: inline-grid;
  place-items: center;
  width: 2.3rem;
  height: 2.3rem;
  border-radius: 50%;
  background: var(--blauw);
  color: var(--op-blauw);
  font-size: 1.05rem;
  font-weight: 800;
  flex: none;
}
.kaart__tekst p:last-child {
  margin-bottom: 0;
}
.kaart__tekst p {
  color: var(--tekst-zacht);
}
@media (max-width: 960px) {
  .kaarten--3 {
    grid-template-columns: minmax(0, 1fr);
  }
  .kaarten--3 .kaart {
    flex-direction: row;
  }
  .kaarten--3 .kaart > img {
    width: 38%;
    aspect-ratio: auto;
  }
}
@media (max-width: 640px) {
  .kaarten--2,
  .kaarten--3 {
    grid-template-columns: minmax(0, 1fr);
  }
  .kaarten--3 .kaart {
    flex-direction: column;
  }
  .kaarten--3 .kaart > img {
    width: 100%;
    aspect-ratio: 16 / 10;
  }
}

/* ── klachtenraster ("Waar heeft u last van?") ────────────────────────────── */
.klachten {
  list-style: none;
  margin: 2rem 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(15rem, 100%), 1fr));
  gap: 0.9rem;
}
.klachten li {
  margin: 0;
}
.klachten a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 4.2rem;
  padding: 1rem 1.25rem 1rem 1.4rem;
  border-radius: 18px;
  background: var(--paneel);
  border: 1px solid var(--rand);
  color: var(--kop);
  font-weight: 700;
  font-size: 1.08rem;
  text-decoration: none;
  transition: transform var(--overgang), box-shadow var(--overgang), border-color var(--overgang), background var(--overgang);
}
.klachten a::after {
  content: '';
  width: 0.7rem;
  height: 0.7rem;
  border-right: 3px solid var(--blauw-diep);
  border-top: 3px solid var(--blauw-diep);
  transform: rotate(45deg);
  flex: none;
  transition: transform var(--overgang);
}
.klachten a:hover {
  transform: translateY(-3px);
  box-shadow: var(--schaduw-zacht);
  border-color: var(--zeeschuim-2);
  background: var(--zeeschuim);
}
.klachten a:hover::after {
  transform: rotate(45deg) translate(3px, -3px);
}
.klachten--alle a {
  background: var(--vlak);
  color: var(--op-vlak);
  border-color: var(--kop);
}
.klachten--alle a::after {
  border-color: var(--blauw);
}
.klachten--alle a:hover {
  background: var(--nacht-2);
  color: var(--op-vlak);
}

/* ── beeld naast tekst ───────────────────────────────────────────────────── */
.beeldtekst {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
  margin: 2.5rem 0;
}
.beeldtekst__beeld img {
  width: 100%;
  aspect-ratio: 5 / 4;
  object-fit: cover;
  border-radius: var(--radius-kaart);
  box-shadow: var(--schaduw);
}
.beeldtekst__tekst h2 {
  margin-top: 0;
}
.beeldtekst__tekst p:last-child {
  margin-bottom: 0;
}
.beeldtekst:nth-of-type(even) .beeldtekst__beeld {
  order: 2;
}
.beeldtekst--rij {
  align-items: start;
  margin: 3.5rem 0;
}
.beeldtekst--rij .beeldtekst__beeld {
  position: sticky;
  top: calc(var(--kop-hoogte) + 1.5rem);
}
.beeldtekst--rij .beeldtekst__beeld img {
  aspect-ratio: 4 / 3;
}
.beeldtekst--rij .beeldtekst__tekst h3 {
  font-size: clamp(1.7rem, 1.3rem + 1.2vw, 2.3rem);
  margin-top: 0;
}
.beeldtekst--rij + .beeldtekst--rij {
  padding-top: 3rem;
  border-top: 1px solid var(--rand);
}
@media (max-width: 860px) {
  .beeldtekst {
    grid-template-columns: minmax(0, 1fr);
  }
  .beeldtekst:nth-of-type(even) .beeldtekst__beeld {
    order: 0;
  }
}

/* ── galerij (mozaïek) ───────────────────────────────────────────────────── */
.galerij {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  grid-auto-rows: 12rem;
  gap: 1rem;
  margin: 2rem 0;
}
.galerij img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: var(--radius);
  grid-column: span 2;
}
.galerij img:nth-child(1) {
  grid-column: span 4;
  grid-row: span 2;
}
.galerij img:nth-child(2) {
  grid-row: span 2;
}
.galerij img:nth-child(3) {
  grid-column: span 2;
}
@media (max-width: 720px) {
  .galerij {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-auto-rows: 10rem;
  }
  .galerij img,
  .galerij img:nth-child(1),
  .galerij img:nth-child(2) {
    grid-column: span 1;
    grid-row: span 1;
  }
  .galerij img:nth-child(1) {
    grid-column: span 2;
  }
}

figure.beeld {
  margin: 2rem 0;
}
figure.beeld img {
  border-radius: var(--radius-kaart);
  width: 100%;
  box-shadow: var(--schaduw-zacht);
}
figcaption {
  margin-top: 0.6rem;
  color: var(--tekst-zacht);
  font-size: 0.98rem;
}

/* ── vinkjes ─────────────────────────────────────────────────────────────── */
.vinkjes {
  list-style: none;
  margin: 1.5rem 0 2rem;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(17rem, 100%), 1fr));
  gap: 0.9rem;
}
.vinkjes li {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  margin: 0;
  padding: 1rem 1.2rem;
  background: var(--paneel);
  border: 1px solid var(--rand);
  border-radius: 18px;
  font-weight: 700;
  color: var(--kop);
}
.vinkje {
  width: 2rem;
  height: 2rem;
  flex: none;
}

/* ── kolommen ────────────────────────────────────────────────────────────── */
.kolommen {
  display: grid;
  gap: 1.5rem;
  margin: 2rem 0;
}
.kolommen--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.kolommen--3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.kolom {
  background: var(--zand);
  border-radius: var(--radius-kaart);
  padding: 1.8rem;
}
.kolom h3 {
  margin-top: 0;
  text-transform: none;
}
.kolom :last-child {
  margin-bottom: 0;
}
@media (max-width: 860px) {
  .kolommen--2,
  .kolommen--3 {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ── logorij ─────────────────────────────────────────────────────────────── */
.logorij {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.5rem 2.5rem;
  margin: 1.5rem 0;
}
.logorij__logo {
  max-height: 5.5rem;
  width: auto;
  background: var(--plaat);
  padding: 0.6rem 0.9rem;
  border-radius: 14px;
  border: 1px solid var(--rand);
}

/* ── tabel ───────────────────────────────────────────────────────────────── */
.tabel-wrap {
  overflow-x: auto;
  margin: 1.5rem 0 2rem;
  border-radius: var(--radius);
  border: 1px solid var(--rand);
}
table {
  width: 100%;
  border-collapse: collapse;
  font-size: 1rem;
}
th,
td {
  text-align: left;
  padding: 0.85rem 1rem;
  border-bottom: 1px solid var(--rand);
  vertical-align: top;
}
thead th {
  background: var(--zand);
  color: var(--kop);
  font-family: var(--font-kop);
  font-size: 1.05rem;
}
tbody tr:last-child td {
  border-bottom: 0;
}

/* ── inhoudsopgave op lange pagina's ─────────────────────────────────────── */
.opdezepagina {
  background: var(--zand);
  border-radius: var(--radius-kaart);
  padding: 1.6rem 1.8rem;
  margin: 0 0 1rem;
  max-width: 56rem;
}
.opdezepagina h2 {
  font-size: 1.1rem;
  margin: 0 0 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--zee);
}
.opdezepagina ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(15rem, 100%), 1fr));
  gap: 0.4rem 1.2rem;
}
.opdezepagina li {
  margin: 0;
}
.opdezepagina a {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  min-height: 2.8rem;
  padding: 0.3rem 0.6rem;
  border-radius: 10px;
  text-decoration: none;
  font-weight: 700;
  color: var(--kop);
}
.opdezepagina a::before {
  content: '';
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  background: var(--blauw);
  flex: none;
}
.opdezepagina a:hover {
  background: var(--paneel);
}
.naarboven {
  margin: 2.5rem 0 0;
  font-size: 0.98rem;
}
.naarboven a {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  text-decoration: none;
  font-weight: 700;
  padding: 0.5rem 0.9rem;
  border-radius: var(--radius-knop);
  border: 1px solid var(--rand);
}
.naarboven a::before {
  content: '↑';
}

/* ── locaties ────────────────────────────────────────────────────────────── */
.locaties {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
  margin: 2rem 0;
}
.locatie {
  min-width: 0;
  background: var(--paneel);
  border: 1px solid var(--rand);
  border-radius: var(--radius-kaart);
  padding: 2rem;
  box-shadow: var(--schaduw-zacht);
  display: flex;
  flex-direction: column;
}
.sectie--light .locatie {
  background: var(--zand);
  border-color: transparent;
  box-shadow: none;
}
.locatie__soort {
  margin-bottom: 0.4rem;
}
.locatie__naam {
  font-size: 1.9rem;
  margin: 0 0 0.6rem;
}
.locatie__adres {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--kop);
  margin-bottom: 0.8rem;
}
.locatie__toelichting {
  color: var(--tekst-zacht);
}
.locatie__praktisch {
  list-style: none;
  padding: 0;
  margin: 0 0 1.2rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.locatie__praktisch li {
  margin: 0;
  padding: 0.35rem 0.85rem;
  border-radius: var(--radius-knop);
  background: var(--zeeschuim);
  color: var(--kop);
  font-size: 0.95rem;
  font-weight: 700;
}
.locatie__uren {
  width: 100%;
  min-width: 0;
  margin: 0.5rem 0 1.4rem;
}
.locatie__uren th,
.locatie__uren td {
  padding: 0.4rem 1rem 0.4rem 0;
  overflow-wrap: anywhere;
  border-bottom: 1px dashed var(--rand);
  font-size: 1rem;
}
.locatie__uren th {
  font-weight: 700;
  color: var(--kop);
  font-family: var(--font-tekst);
}
.locatie__route {
  margin: auto 0 0;
}
.locatie__route a {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-weight: 700;
  text-decoration: none;
  min-height: 3rem;
  padding: 0.5rem 1.2rem;
  border-radius: var(--radius-knop);
  border: 2px solid var(--kop);
  color: var(--kop);
}
.locatie__route a:hover {
  background: var(--vlak);
  color: var(--op-vlak);
}
.locatie__route a::before {
  content: '';
  width: 0.8rem;
  height: 0.8rem;
  border-radius: 50% 50% 50% 0;
  background: var(--blauw-diep);
  transform: rotate(-45deg);
  flex: none;
}
@media (max-width: 800px) {
  .locaties {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ── fijndruk (zakelijke gegevens) ───────────────────────────────────────── */
.fijndruk {
  padding: 0 0 var(--sectie-y);
  background: var(--pagina);
}
.fijndruk__binnen {
  max-width: var(--breedte);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.fijndruk__kop {
  font-size: 1.05rem;
  color: var(--tekst-zacht);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin: 0 0 0.4rem;
}
.fijndruk__naam {
  font-family: var(--font-kop);
  font-weight: 700;
  font-size: 1.3rem;
  color: var(--kop);
  margin-bottom: 1rem;
}
.fijndruk__lijst {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(16rem, 100%), 1fr));
  gap: 0.6rem 2rem;
  font-size: 0.98rem;
}
.fijndruk__regel {
  display: flex;
  gap: 0.6rem;
  padding: 0.4rem 0;
  border-bottom: 1px solid var(--rand);
}
.fijndruk__regel dt {
  color: var(--tekst-zacht);
  flex: none;
  min-width: min(8rem, 40%);
}
.fijndruk__regel dd {
  margin: 0;
  font-weight: 700;
  color: var(--kop);
  overflow-wrap: anywhere;
}

/* ── contactpagina ───────────────────────────────────────────────────────── */
.contact-actie {
  background: var(--pagina);
  padding: 0 0 var(--sectie-y);
}
.contact-actie__binnen {
  max-width: var(--breedte);
  margin: 0 auto;
  padding: 0 var(--gutter);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr));
  gap: 1.5rem;
}
.contact-actie__boeken,
.contact-actie__rest {
  margin: 0;
  padding: 2rem;
  border-radius: var(--radius-kaart);
  display: flex;
  flex-direction: column;
  gap: 1rem;
  align-items: flex-start;
}
.contact-actie__boeken {
  background: var(--vlak);
  color: var(--op-vlak);
  background-image: radial-gradient(30rem 16rem at 100% 0%, rgb(91 202 238 / 30%), transparent 70%);
}
.contact-actie__rest {
  background: var(--zand);
}
.contact-actie__label {
  font-family: var(--font-kop);
  font-weight: 700;
  font-size: 1.5rem;
  line-height: 1.2;
}
.contact-actie__bellen {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  color: var(--tekst-zacht);
}
.contact-actie__nummer {
  font-family: var(--font-kop);
  font-weight: 800;
  font-size: 2rem;
  color: var(--kop);
  text-decoration: none;
  letter-spacing: 0.01em;
}
.contact-actie__mail {
  font-weight: 700;
  font-size: 1.1rem;
}

/* ── formulier ───────────────────────────────────────────────────────────── */
.formulier-sectie {
  background: var(--zeeschuim);
  padding: var(--sectie-y) 0;
}
.formulier-sectie__binnen {
  max-width: 46rem;
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.contactformulier {
  background: var(--paneel);
  border-radius: var(--radius-kaart);
  padding: clamp(1.5rem, 4vw, 2.5rem);
  box-shadow: var(--schaduw-zacht);
}
.veld {
  margin-bottom: 1.4rem;
}
.veld label {
  display: block;
  font-weight: 700;
  color: var(--kop);
  margin-bottom: 0.45rem;
}
.veld input,
.veld textarea {
  width: 100%;
  font: inherit;
  font-size: 1.05rem;
  color: var(--tekst);
  padding: 0.9rem 1.1rem;
  border: 2px solid var(--rand);
  border-radius: 14px;
  background: var(--paneel);
  min-height: 3.4rem;
  transition: border-color var(--overgang), box-shadow var(--overgang);
}
.veld input:focus,
.veld textarea:focus {
  outline: none;
  border-color: var(--blauw-diep);
  box-shadow: 0 0 0 4px rgb(91 202 238 / 30%);
}
.veld textarea {
  resize: vertical;
}
.veld .fout {
  color: var(--fout);
  font-weight: 700;
  margin: 0.4rem 0 0;
}
.veld.is-fout input,
.veld.is-fout textarea {
  border-color: var(--fout);
}
.honeypot {
  position: absolute;
  left: -9999px;
}
.formulier-klein {
  font-size: 0.95rem;
  color: var(--tekst-zacht);
  margin: 1rem 0 0;
}
.formulier-melding {
  padding: 1rem 1.25rem;
  border-radius: 14px;
  font-weight: 700;
  margin-bottom: 1.2rem;
}
.formulier-melding--ok {
  background: #e3f5ea;
  color: var(--goed);
}
.formulier-melding--fout {
  background: #fdeceb;
  color: var(--fout);
}
.knop.is-verzonden {
  background: var(--goed);
  color: var(--op-vlak);
}

/* ── tarieven ────────────────────────────────────────────────────────────── */
.pakketgroep {
  margin-bottom: 3.5rem;
}
.pakketgroep__kop {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.6rem 1.2rem;
  margin-bottom: 1.5rem;
}
.pakketgroep__kop h2 {
  margin: 0;
}
.pakketgroep__badge {
  margin: 0;
  padding: 0.3rem 0.9rem;
  border-radius: var(--radius-knop);
  background: var(--zeeschuim);
}
.pakketten {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.5rem;
}
.pakket {
  min-width: 0;
  background: var(--paneel);
  border: 1px solid var(--rand);
  border-radius: var(--radius-kaart);
  padding: 2rem;
  display: flex;
  flex-direction: column;
  box-shadow: var(--schaduw-zacht);
  transition: transform var(--overgang), box-shadow var(--overgang);
}
.pakket:hover {
  transform: translateY(-4px);
  box-shadow: var(--schaduw);
}
.pakket__naam {
  font-family: var(--font-kop);
  font-weight: 700;
  font-size: 1.35rem;
  color: var(--kop);
  margin: 0 0 0.4rem;
}
.pakket__prijs {
  font-family: var(--font-kop);
  font-weight: 800;
  font-size: 2.4rem;
  color: var(--kop);
  letter-spacing: -0.02em;
  margin: 0 0 1.2rem;
}
.pakket__lijst {
  list-style: none;
  padding: 0;
  margin: 0 0 1.5rem;
}
.pakket__lijst li {
  position: relative;
  padding-left: 2rem;
  margin-bottom: 0.55rem;
  font-size: 1rem;
}
.pakket__lijst li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.45em;
  width: 0.55rem;
  height: 1rem;
  border-right: 3px solid var(--blauw-diep);
  border-bottom: 3px solid var(--blauw-diep);
  transform: rotate(45deg) translate(-2px, -3px);
}
.pakket__voetnoot {
  font-size: 0.95rem;
  color: var(--tekst-zacht);
}
.pakket__knop {
  margin-top: auto;
}
@media (max-width: 960px) {
  .pakketten {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ── blog-overzicht ──────────────────────────────────────────────────────── */
.artikelen {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(20rem, 100%), 1fr));
  gap: 1.5rem;
  margin: 2rem 0;
}
.artikel {
  min-width: 0;
  background: var(--zand);
  border-radius: var(--radius-kaart);
  padding: 2rem;
  display: flex;
  flex-direction: column;
}
.artikel h2 {
  font-size: 1.6rem;
  margin: 0 0 0.6rem;
}
.artikel p {
  color: var(--tekst-zacht);
  flex: 1;
}
.artikel .knop-rij {
  margin-bottom: 0;
}

/* ── oproepband boven de voet ────────────────────────────────────────────── */
.oproep {
  padding: 0 var(--gutter) var(--sectie-y);
  background: var(--pagina);
}
.oproep__binnen {
  max-width: var(--breedte);
  margin: 0 auto;
  background: var(--vlak);
  color: var(--op-vlak);
  border-radius: var(--radius-kaart);
  padding: clamp(2.5rem, 5vw, 4.5rem);
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
  gap: 2rem;
  align-items: center;
  position: relative;
  overflow: hidden;
  background-image:
    radial-gradient(34rem 20rem at 100% 100%, rgb(91 202 238 / 35%), transparent 70%),
    radial-gradient(20rem 14rem at 0% 0%, rgb(91 202 238 / 15%), transparent 70%);
}
.oproep h2 {
  color: var(--op-vlak);
  margin: 0 0 0.6rem;
  font-size: clamp(1.8rem, 1.3rem + 1.6vw, 2.6rem);
}
.oproep p {
  color: rgb(255 255 255 / 85%);
  font-size: 1.1rem;
  margin: 0;
  max-width: 32rem;
}
.oproep__acties {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  align-items: stretch;
}
.oproep__acties .knop {
  width: 100%;
}
.oproep__acties .knop--licht {
  border-color: transparent;
}
@media (max-width: 860px) {
  .oproep__binnen {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ── voet ────────────────────────────────────────────────────────────────── */
.voet {
  background: var(--vlak);
  color: rgb(255 255 255 / 85%);
  padding: var(--sectie-y) 0 2rem;
  font-size: 1rem;
}
.voet__binnen {
  max-width: var(--breedte);
  margin: 0 auto;
  padding: 0 var(--gutter);
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: 2.5rem 2rem;
}
.voet__kolom h2 {
  color: var(--op-vlak);
  font-size: 1.1rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 1rem;
}
.voet__kolom p {
  margin-bottom: 0.9rem;
}
.voet__kolom strong {
  color: var(--op-vlak);
}
.voet a {
  color: var(--op-vlak);
  text-decoration-color: rgb(255 255 255 / 40%);
}
.voet a:hover {
  color: var(--blauw);
}
.voet__logo img {
  height: 3.2rem;
  width: auto;
  margin-bottom: 1.2rem;
}
.voet__missie {
  font-family: var(--font-kop);
  font-size: 1.3rem;
  color: var(--op-vlak);
  line-height: 1.3;
  max-width: 20rem;
}
.sociaal {
  list-style: none;
  margin: 0;
  padding: 0;
}
.sociaal li {
  margin: 0 0 0.5rem;
}
.sociaal a {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  min-height: 2.6rem;
  text-decoration: none;
  font-weight: 700;
}
.sociaal a::before {
  content: '';
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  background: var(--blauw);
}
.voet__logos {
  max-width: var(--breedte);
  margin: 3rem auto 0;
  padding: 2rem var(--gutter) 0;
  border-top: 1px solid rgb(255 255 255 / 15%);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.5rem;
}
.voet__logos span {
  color: rgb(255 255 255 / 65%);
  font-size: 0.95rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.voet__logos img {
  max-height: 4rem;
  width: auto;
  background: var(--plaat);
  padding: 0.5rem 0.8rem;
  border-radius: 12px;
}
.voet__onder {
  max-width: var(--breedte);
  margin: 2rem auto 0;
  padding: 1.5rem var(--gutter) 0;
  border-top: 1px solid rgb(255 255 255 / 15%);
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem 2rem;
  font-size: 0.95rem;
  color: rgb(255 255 255 / 65%);
}
.voet__documenten {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.5rem;
}
.voet__documenten li {
  margin: 0;
}
.voet__onder p {
  margin: 0;
}
@media (max-width: 960px) {
  .voet__binnen {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .voet__kolom--merk {
    grid-column: 1 / -1;
  }
}
@media (max-width: 560px) {
  .voet__binnen {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ── vaste actiebalk op mobiel (bellen + afspraak) ───────────────────────── */
.actiebalk {
  display: none;
}
@media (max-width: 1024px) {
  .actiebalk {
    position: fixed;
    left: 0;
    right: 0;
    bottom: var(--belknop-onder, 0px);
    z-index: 45;
    display: grid;
    grid-template-columns: 1fr 1.4fr;
    gap: 0.6rem;
    padding: 0.7rem var(--gutter) calc(0.7rem + env(safe-area-inset-bottom));
    background: var(--waas);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-top: 1px solid var(--rand);
    transform: translateY(110%);
    transition: transform 260ms ease;
  }
  .actiebalk.is-zichtbaar {
    transform: translateY(0);
  }
  .actiebalk .knop {
    min-height: 3.4rem;
    font-size: 1.05rem;
    box-shadow: none;
    padding-inline: 0.9rem;
    min-width: 0;
  }
  /* Bij de grootste tekststand passen "Bel ons" en "Afspraak maken" niet meer
     naast elkaar; dan onder elkaar in plaats van half buiten beeld. */
  html.tekst-grootst .actiebalk {
    grid-template-columns: minmax(0, 1fr);
  }
  body.menu-open .actiebalk {
    display: none;
  }
}

/* ── 404 / losse inhoud ──────────────────────────────────────────────────── */
.inhoud {
  max-width: var(--breedte-tekst);
  margin: 0 auto;
  padding: var(--sectie-y) var(--gutter);
}

/* ── beweging ────────────────────────────────────────────────────────────── */
@keyframes verschijn {
  from {
    opacity: 0;
    transform: translateY(-6px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.onthul {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 600ms ease, transform 600ms cubic-bezier(0.2, 0.7, 0.2, 1);
}
.onthul.is-zichtbaar {
  opacity: 1;
  transform: none;
}
html:not(.js) .onthul {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
  }
  .onthul {
    opacity: 1;
    transform: none;
  }
}

/* ── afdrukken ───────────────────────────────────────────────────────────── */
@media print {
  .kop,
  .actiebalk,
  .oproep,
  .voet__logos,
  .lees__zij,
  .menu {
    display: none !important;
  }
  body {
    font-size: 12pt;
    color: #000;
  }
  a {
    color: #000;
  }
  .hero {
    background: none;
  }
}
