/* ============================================================
   APEX CONTROLLERS — HOMEPAGE, VISUELE LAAG
   02-09-2026
   ------------------------------------------------------------
   Deze laag ligt bovenop home.css en tilt de homepage naar het
   designniveau van de referentie (clipcut.framer.ai), maar volledig in
   de Apex-huisstijl: zwart, donkergrijs, bordeaux en rood.

   WAT ER IS OVERGENOMEN — en dat is nadrukkelijk de méthode, niet de
   vormgeving:

   1. DIEPTE UIT VLAKKEN, NIET UIT RANDEN.
      De referentie zet een basis van rgb(9,4,1) met kaarten op
      rgb(16,11,8): het verschil tussen twee bijna-zwarten doet het werk.
      Apex stond op één egale #050505 met overal een zichtbare rand van
      6% wit. Hieronder staat daarom een oppervlakteschaal.

   2. TYPOGRAFIE OP GEWICHT 500, NIET 700.
      De H1 van de referentie is 70px, gewicht 500, letter-spacing
      -2.1px. Groot en strak in plaats van dik. Saira Condensed blijft
      het Apex-lettertype; alleen schaal en tracking gaan mee.

   3. GLOWS OP 3 TOT 6 PROCENT.
      Grote, zeer zachte radialen. Geen neon, geen rand die oplicht.
      Bordeaux (#7d2231) draagt de sfeer; #ff0000 blijft voor CTA's,
      cijfers en focus.

   ALLES IS GESCOPED ONDER body.page-home. Andere pagina's blijven
   ongemoeid, en het geheel is terug te draaien door één <link> te
   verwijderen.
   ============================================================ */

body.page-home {
  /* ---- Oppervlakteschaal: het fundament van de diepte ---- */
  --sf-0: #060607;   /* paginabasis, iets warmer dan #050505 */
  --sf-1: #0b0b0d;   /* secties die van de basis af moeten steken */
  --sf-2: #101013;   /* kaarten */
  --sf-3: #16161a;   /* kaart bij hover, en genest oppervlak */

  /* ---- Randen: veel subtieler dan voorheen ---- */
  --ln-1: rgba(255, 255, 255, 0.05);
  --ln-2: rgba(255, 255, 255, 0.09);
  --ln-red: rgba(255, 40, 40, 0.28);

  /* ---- Glow ---- */
  --gl-bordeaux: rgba(125, 34, 49, 0.20);
  --gl-red: rgba(255, 0, 0, 0.10);

  /* ---- Tekst: hiërarchie via opaciteit, zoals de referentie ---- */
  --tx-1: rgba(255, 255, 255, 0.96);
  --tx-2: rgba(255, 255, 255, 0.72);
  --tx-3: rgba(255, 255, 255, 0.52);
  --tx-4: rgba(255, 255, 255, 0.34);

  --ease-apex: cubic-bezier(0.16, 1, 0.3, 1);

  background: var(--sf-0);
}

/* ============================================================
   1. ACHTERGROND — gelaagd in plaats van egaal
   ============================================================ */
body.page-home main {
  position: relative;
  background:
    radial-gradient(1200px 700px at 12% 4%,  var(--gl-bordeaux), transparent 62%),
    radial-gradient(900px 600px at 92% 32%,  rgba(125, 34, 49, .13), transparent 65%),
    radial-gradient(1100px 700px at 50% 96%, rgba(125, 34, 49, .10), transparent 66%),
    var(--sf-0);
}

/* Zeer fijn verticaal raster. Bijna niet te zien, maar het haalt de
   dode vlakheid uit grote donkere stukken. */
body.page-home main::before {
  content: "";
  position: absolute; inset: 0;
  pointer-events: none;
  background-image: linear-gradient(90deg, rgba(255,255,255,.024) 1px, transparent 1px);
  background-size: 96px 100%;
  mask-image: linear-gradient(180deg, transparent, #000 12%, #000 88%, transparent);
  -webkit-mask-image: linear-gradient(180deg, transparent, #000 12%, #000 88%, transparent);
  z-index: 0;
}
body.page-home main > * { position: relative; z-index: 1; }

/* Om en om een iets lichter sectievlak: zo krijgt de pagina ritme
   zonder dat er een lijn of rand aan te pas komt. */
body.page-home #reparaties,
body.page-home #lab,
body.page-home #wie,
body.page-home #console {
  background: linear-gradient(180deg, transparent, var(--sf-1) 14%, var(--sf-1) 86%, transparent);
}

/* ============================================================
   2. TYPOGRAFIE — groter, strakker, minder dik
   ============================================================ */
body.page-home .hero__title {
  font-size: clamp(2.6rem, 6.4vw, 5.4rem);
  line-height: 0.98;
  letter-spacing: -0.03em;
  font-weight: var(--fw-med, 500);
  text-wrap: balance;
}
body.page-home .section-head__title,
body.page-home .drift-block h2,
body.page-home .lab-promo h2,
body.page-home .console-strip h2,
body.page-home .bio-strip h2 {
  font-size: clamp(1.9rem, 3.4vw, 3.1rem);
  line-height: 1.06;
  letter-spacing: -0.025em;
  font-weight: var(--fw-med, 500);
  text-wrap: balance;
}
body.page-home .section-head__lead,
body.page-home .lead {
  color: var(--tx-2);
  line-height: 1.62;
  text-wrap: pretty;
}
body.page-home .eyebrow {
  color: var(--tx-4);
  letter-spacing: 0.16em;
}
body.page-home p { color: var(--tx-2); }

/* ============================================================
   3. HERO
   ============================================================ */
/* ---- Overlay en tekstleesbaarheid ----
   Deze overlay stond op rgba(6,6,7,.62) bovenaan, oplopend naar .80. Dat
   maakte de tekst leesbaar door de video half weg te poetsen: contrast,
   kleur en beweging verdwenen mee. Op 03-09-2026 omgedraaid.

   Gemeten met een canvas op acht frames: het beeld achter de kop heeft een
   gemiddelde luminantie van 13 tot 38 (op 255), dus overwegend donker. Het
   probleem zit niet in het gemiddelde maar in de highlights, die tot 243
   pieken. Een vlakke overlay bestrijdt het gemiddelde en is daarmee het
   verkeerde gereedschap; een schaduw die de lettercontour volgt bestrijdt
   precies die felle plekken achter de letters zelf.

   De overlay is daarom teruggebracht tot ongeveer de helft. Onderaan blijft
   hij wel doorlopen naar --sf-0: dat is geen leesbaarheidslaag maar de
   overgang van de hero naar de pagina eronder. */
body.page-home .hero__overlay {
  background:
    linear-gradient(180deg, rgba(6,6,7,.30) 0%, rgba(6,6,7,.44) 55%, var(--sf-0) 100%),
    radial-gradient(900px 520px at 18% 18%, rgba(125,34,49,.22), transparent 64%);
}

/* Contourschaduw. In em, niet in px, zodat het effect met de tekstgrootte
   meeschaalt: op de telefoon staat de kop op 30px en zou een schaduw van
   22px blur de letters laten zwemmen.

   Drie lagen, elk met een eigen taak:
     1. heel kort en vrij dekkend - zet de letterrand af tegen een fel frame
     2. middellang en zachter    - geeft diepte zonder zichtbaar te worden
     3. lang en licht            - vangt de highlights rond de tekst op
   Samen volgen ze de lettervorm. Er is geen vlak, geen kader en geen
   backdrop-filter, dus de video blijft tussen en rond de letters zichtbaar. */
body.page-home .hero__title {
  text-shadow:
    /* twee lagen zonder verschuiving: die leggen zich rondom de hele
       letter en volgen dus exact de contour, ook aan de bovenkant */
    0 0 .055em rgba(0,0,0,.88),
    0 0 .17em rgba(0,0,0,.62),
    /* daarachter de verschoven lagen voor diepte */
    0 .04em .12em rgba(0,0,0,.5),
    0 .09em .38em rgba(0,0,0,.34);
}
/* De rode accentregel heeft het zwaarst te verduren: rood op een donkerrode
   controller. Iets meer halo, zodat de letters ook daar loskomen. */
body.page-home .hero__title .accent {
  text-shadow:
    0 0 .06em rgba(0,0,0,.92),
    0 0 .2em rgba(0,0,0,.7),
    0 .04em .14em rgba(0,0,0,.55),
    0 .09em .4em rgba(0,0,0,.36);
}
/* De lead staat op 16px. Dezelfde waarden zouden daar als vuil lezen, dus
   kortere afstanden - maar wel dezelfde 0-offset halo, want juist kleine
   tekst valt weg tegen een druk frame. */
body.page-home .hero .lead {
  /* was var(--c-text-dim): te weinig contrast over bewegend beeld */
  color: rgba(255,255,255,.9);
  text-shadow:
    0 0 .09em rgba(0,0,0,.9),
    0 0 .28em rgba(0,0,0,.62),
    0 .06em .2em rgba(0,0,0,.5);
}
/* Kleine losse elementen boven de kop: alleen de korte laag. */
body.page-home .hero__badge,
body.page-home .hero__rating {
  text-shadow: 0 .05em .12em rgba(0,0,0,.55);
}

/* ---- Gecentreerde compositie ----
   De hero stond als "tekst links, kaart rechts". Met de nieuwe typografie
   liep de H1 in die kolom van 572 px op tot vijf regels en werd de hero
   1626 px hoog. Eén kolom, gecentreerd, geeft de kop de ruimte die hij
   nodig heeft. De DOM blijft ongemoeid: de uitgelichte kaart houdt zijn
   id en zijn plek in de HTML, en zakt hier alleen naar onderen. */
/* De tweedeling zit NIET in .hero__grid maar in de .container van de hero
   zelf: die staat op twee kolommen van 572 px. Daardoor belandde alles wat
   ik onder de tekst plaatste in de rechterkolom. Eén kolom hier maakt de
   hele hero gecentreerd; de rest van de regels hieronder ordent de inhoud. */
body.page-home .hero .container {
  display: block;
  max-width: var(--container);
}

/* hero.css legt de tweekolomsopbouw vast met grid-column: 2 én grid-row: 1
   op de uitgelichte kaart. Beide moeten expliciet terug naar automatisch,
   anders blijft de kaart in rij 1 naast de tekst hangen en overlapt hij de
   koptekst. Display: flex is hier eenvoudiger dan tegen de grid vechten. */
body.page-home .hero__grid {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(var(--s-6), 5vw, var(--s-8));
  width: 100%;
  max-width: none;
}
body.page-home .hero__content,
body.page-home .hero__spot {
  grid-column: auto;
  grid-row: auto;
  width: 100%;
}
body.page-home .hero__content { max-width: 940px; }
body.page-home .hero__content {
  text-align: center;
  max-width: 940px;
  display: flex; flex-direction: column; align-items: center;
}
body.page-home .hero__content .lead { max-width: 62ch; }
body.page-home .hero__actions { justify-content: center; }
body.page-home .hero__score { align-self: center; }

/* De uitgelichte kaart staat nu in een eigen band onder de hero. */
body.page-home .spotlight-band { display: flex; justify-content: center; }

/* Uitgelicht product: breed en laag in plaats van hoog en smal, zodat de
   hero niet nog eens 500 px langer wordt. */
body.page-home .hero__spot {
  display: grid;
  grid-template-columns: minmax(180px, 300px) 1fr;
  align-items: center;
  gap: clamp(var(--s-4), 3vw, var(--s-6));
  width: 100%; max-width: 900px;
  background: var(--sf-2);
  border: 1px solid var(--ln-1);
  border-radius: var(--r-xl, 24px);
  box-shadow: 0 1px 0 rgba(255,255,255,.045) inset, 0 30px 70px rgba(0,0,0,.55);
  padding: clamp(var(--s-4), 2.4vw, var(--s-5));
  text-align: left;
}
body.page-home .hero__spot-media {
  border-radius: var(--r-lg, 16px); overflow: hidden;
  background: radial-gradient(300px 200px at 50% 110%, rgba(125,34,49,.34), transparent 70%), var(--sf-3);
}
body.page-home .hero__spot-media img { width: 100%; height: auto; display: block; }
body.page-home .hero__spot-body { min-width: 0; }
body.page-home .hero__spot-label { top: var(--s-4); left: var(--s-4); }
@media (max-width: 700px) {
  body.page-home .hero__spot { grid-template-columns: 1fr; }
}

/* Badge boven de H1 */
.hero__badge {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 7px 14px 7px 10px;
  border-radius: var(--r-pill, 999px);
  border: 1px solid var(--ln-2);
  background: rgba(255,255,255,.04);
  backdrop-filter: blur(12px);
  font-family: var(--font-mono);
  font-size: .68rem; letter-spacing: .1em; text-transform: uppercase;
  color: var(--tx-2);
  margin-bottom: var(--s-4);
}
.hero__badge b {
  display: inline-grid; place-items: center;
  width: 18px; height: 18px; border-radius: 50%;
  background: rgba(255,0,0,.16); color: #ff5e5e;
}
.hero__badge b svg { width: 11px; height: 11px; }

/* ---- Fotocarrousel ----
   Vervangt op 11-09-2026 de vier TikTok-tegels die hier stonden. De foto's
   komen uit Website > Galerij in de admin, via js/galerij-bron.js; het
   bewegen doet js/foto-carrousel.js.

   Smalle staande tegels (3:4). De middelste is 16% groter dan zijn buren,
   daarna worden ze stap voor stap kleiner en donkerder. Schaal, plek en
   helderheid zet het script per tegel; hier staat alleen de vaste maat en
   de opmaak.

   De hoogte ligt vast voordat er ook maar één foto binnen is: tegelhoogte
   plus 28 px voor de hoekjes en de schaduw. Zo schuift de rest van de hero
   niet op wanneer de foto's laden. */
.foto-carrousel {
  --tegel-b: 172px;
  --tegel-tussen: 14px;
  --tegel-h: calc(var(--tegel-b) * 4 / 3);
  position: relative;
  width: 100%;
  max-width: 1040px;
  margin: clamp(var(--s-6), 5vw, var(--s-8)) auto 0;
}
.foto-carrousel[hidden] { display: none; }

.foto-carrousel__venster {
  position: relative;
  height: calc(var(--tegel-h) + 28px);
  overflow: hidden;
  /* Verticaal scrollen blijft van de browser; horizontaal vegen is van ons. */
  touch-action: pan-y;
  cursor: grab;
  -webkit-user-select: none;
  user-select: none;
  outline: none;
  /* De buitenste tegels lopen weg in het donker in plaats van hard af te
     breken tegen de rand. */
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%);
}
.foto-carrousel.is-sleep .foto-carrousel__venster { cursor: grabbing; }

.foto-carrousel__baan {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

.foto-carrousel__dia {
  position: absolute;
  top: 14px;
  left: calc(50% - var(--tegel-b) / 2);
  width: var(--tegel-b);
  height: var(--tegel-h);
  border-radius: 12px;
  /* Zichtbaar zolang de foto nog onderweg is: een tegel, geen gat. */
  background: var(--sf-2);
  box-shadow: 0 18px 40px rgba(0,0,0,.55);
  transform-origin: 50% 50%;
  will-change: transform, opacity;
  cursor: pointer;
}
.foto-carrousel__dia.is-actief { cursor: inherit; }

.foto-carrousel__dia img {
  display: block;
  width: 100%;
  height: 100%;
  /* Cover met een focuspunt per foto (object-position, gezet vanuit de
     admin). De foto wordt bijgesneden, nooit uitgerekt. */
  object-fit: cover;
  border-radius: inherit;
  opacity: 0;
  transition: opacity .35s ease;
  /* Slepen pakt altijd de tegel, nooit de afbeelding zelf. */
  pointer-events: none;
  -webkit-user-drag: none;
}
.foto-carrousel__dia.is-geladen img { opacity: 1; }

/* Haarlijnrand op elke tegel. Op de actieve tegel komt er een zweem rood
   bij, in dezelfde sterkte als de rode rand bij hover op de kaarten. */
.foto-carrousel__dia::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.07),
    0 0 0 1px rgba(255,40,40, calc(var(--actief, 0) * .3));
}

/* Hoekjes rond de actieve tegel: een heel lichte echo van de Apex-lijst
   op /galerij. Geen gloed, geen plaat, alleen vier dunne haken. Ze komen
   op met --actief, dus ze glijden mee terwijl je bladert. */
.foto-carrousel__dia::before {
  --hk: rgba(255,70,70,.78);
  --hl: 14px;
  --hd: 1.5px;
  content: "";
  position: absolute;
  inset: -7px;
  pointer-events: none;
  opacity: var(--actief, 0);
  background:
    linear-gradient(var(--hk), var(--hk)) left top    / var(--hl) var(--hd),
    linear-gradient(var(--hk), var(--hk)) left top    / var(--hd) var(--hl),
    linear-gradient(var(--hk), var(--hk)) right top   / var(--hl) var(--hd),
    linear-gradient(var(--hk), var(--hk)) right top   / var(--hd) var(--hl),
    linear-gradient(var(--hk), var(--hk)) left bottom / var(--hl) var(--hd),
    linear-gradient(var(--hk), var(--hk)) left bottom / var(--hd) var(--hl),
    linear-gradient(var(--hk), var(--hk)) right bottom / var(--hl) var(--hd),
    linear-gradient(var(--hk), var(--hk)) right bottom / var(--hd) var(--hl);
  background-repeat: no-repeat;
}

/* Toetsenbordfocus op het venster tekenen we om de middelste foto: een
   ring om het hele venster zou door het randverloop half wegvallen. */
.foto-carrousel__venster:focus-visible .foto-carrousel__dia.is-actief::after {
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.07), 0 0 0 2px var(--c-red);
}

.foto-carrousel__pijl {
  position: absolute;
  z-index: 2;
  top: 50%;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  margin-top: -22px;
  padding: 0;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(9,9,11,.72);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  color: #fff;
  cursor: pointer;
  transition: border-color .2s ease, background .2s ease, opacity .2s ease;
}
.foto-carrousel__pijl[hidden] { display: none; }
.foto-carrousel__pijl svg { width: 18px; height: 18px; }
.foto-carrousel__pijl--vorige { left: 1.5%; }
.foto-carrousel__pijl--volgende { right: 1.5%; }
.foto-carrousel__pijl:hover:not(:disabled) { border-color: var(--ln-red); background: rgba(9,9,11,.92); }
.foto-carrousel__pijl:focus-visible { outline: 2px solid var(--c-red); outline-offset: 3px; }
.foto-carrousel__pijl:disabled { opacity: .28; cursor: default; }

@media (max-width: 1099px) {
  .foto-carrousel { --tegel-b: 150px; }
}
@media (max-width: 759px) {
  /* Op de telefoon van rand tot rand: de buren steken dan aan beide kanten
     een stukje in beeld, wat laat zien dat er te vegen valt. */
  .foto-carrousel {
    --tegel-b: min(46vw, 196px);
    --tegel-tussen: 10px;
    width: auto;
    max-width: none;
    margin-inline: calc(-1 * var(--gutter));
  }
  .foto-carrousel__venster {
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%);
  }
  .foto-carrousel__pijl { width: 38px; height: 38px; margin-top: -19px; }
  .foto-carrousel__pijl--vorige { left: 8px; }
  .foto-carrousel__pijl--volgende { right: 8px; }
}


/* Labels onder de strook */
.hero__chips {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 8px;
  margin-top: var(--s-5);
}
.hero__chips span {
  padding: 6px 12px; border-radius: var(--r-pill, 999px);
  border: 1px solid var(--ln-1);
  background: rgba(255,255,255,.035);
  font-family: var(--font-mono); font-size: .66rem;
  letter-spacing: .09em; text-transform: uppercase; color: var(--tx-3);
}

/* Trust-balk als losse pillen in plaats van een blok */
body.page-home .hero__trust-bar { border: 0; background: none; padding: 0; }
body.page-home .hero__trust-bar .trust-bar__item {
  border: 1px solid var(--ln-1);
  background: rgba(255,255,255,.035);
  border-radius: var(--r-md, 12px);
  padding: var(--s-3) var(--s-4);
  backdrop-filter: blur(10px);
}

/* ============================================================
   4. KAARTEN — één systeem voor de hele pagina
   ============================================================ */
body.page-home .route-card,
body.page-home .svc-tile,
body.page-home .drift-block,
body.page-home .console-optie,
body.page-home .zeker-item,
body.page-home .bio-strip,
body.page-home .card,
body.page-home .build-shot {
  background: var(--sf-2);
  border: 1px solid var(--ln-1);
  border-radius: var(--r-lg, 16px);
  box-shadow: 0 1px 0 rgba(255,255,255,.035) inset, 0 18px 44px rgba(0,0,0,.42);
  transition:
    background .3s ease,
    border-color .3s ease,
    transform .45s var(--ease-apex),
    box-shadow .45s var(--ease-apex);
}
body.page-home .route-card:hover,
body.page-home .svc-tile:hover,
body.page-home .console-optie:hover,
body.page-home .build-shot:hover,
body.page-home .route-card:focus-visible,
body.page-home .svc-tile:focus-visible {
  background: var(--sf-3);
  border-color: var(--ln-red);
  transform: translateY(-4px);
  box-shadow:
    0 1px 0 rgba(255,255,255,.06) inset,
    0 26px 60px rgba(0,0,0,.55),
    0 0 0 1px rgba(255,40,40,.10),
    0 12px 46px -14px var(--gl-red);
}

/* Gradient in de hoek van de belangrijkste kaarten. Subtiel: het moet
   opvallen dat er iets is, niet wát het is. */
body.page-home .route-card,
body.page-home .drift-block,
body.page-home .lab-promo {
  position: relative; overflow: hidden;
}
body.page-home .route-card::after,
body.page-home .drift-block::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(340px 200px at 100% 0%, rgba(125,34,49,.16), transparent 70%);
}
/* Het testblok is het onderscheidende van Apex, dus het mag als enige uit
   de rij springen: zichtbaar rodere rand en een extra gloed. Eén accent
   per groep — meer, en het valt weer weg. */
body.page-home .route-card--accent::after {
  background: radial-gradient(340px 200px at 100% 0%, rgba(255,0,0,.18), transparent 70%);
}
body.page-home .route-card--accent {
  border-color: rgba(255, 60, 60, .34);
  box-shadow:
    0 1px 0 rgba(255,255,255,.05) inset,
    0 18px 44px rgba(0,0,0,.42),
    0 14px 44px -18px var(--gl-red);
}
body.page-home .route-card--accent .route-card__icon {
  background: linear-gradient(160deg, rgba(255,40,40,.30), rgba(125,34,49,.16));
}

/* Iconen krijgen diepte in plaats van een platte tint */
body.page-home .route-card__icon {
  background: linear-gradient(160deg, rgba(255,40,40,.18), rgba(125,34,49,.10));
  border-color: var(--ln-red);
  box-shadow: 0 8px 22px -10px var(--gl-red);
}

/* Servicetegels: beeld iets inzoomen bij hover */
body.page-home .svc-tile__media { overflow: hidden; }
body.page-home .svc-tile__media img { transition: transform .6s var(--ease-apex); }
body.page-home .svc-tile:hover .svc-tile__media img { transform: scale(1.045); }

/* ============================================================
   5. CONTROLLER LAB — het onderscheidende blok, dus het meeste gewicht
   ============================================================ */
body.page-home .lab-promo {
  background:
    radial-gradient(700px 380px at 50% 0%, rgba(255,0,0,.11), transparent 68%),
    var(--sf-2);
  border: 1px solid var(--ln-2);
  border-radius: var(--r-xl, 24px);
  box-shadow: 0 1px 0 rgba(255,255,255,.05) inset, 0 40px 90px rgba(0,0,0,.55);
}
body.page-home .lab-promo__lijst li::before {
  box-shadow: 0 0 12px 2px rgba(255,0,0,.45);
}

/* ============================================================
   6. FEATURE ROWS (TMR + joystickmodule)
   ============================================================ */
body.page-home .feature-row__media {
  border-radius: var(--r-lg, 16px);
  overflow: hidden;
  background:
    radial-gradient(420px 260px at 50% 110%, rgba(125,34,49,.30), transparent 70%),
    var(--sf-2);
  border: 1px solid var(--ln-1);
  display: block;
}
body.page-home .feature-row__media img { transition: transform .6s var(--ease-apex); }
body.page-home .feature-row:hover .feature-row__media img { transform: scale(1.03); }

/* ============================================================
   7. KNOPPEN
   ============================================================ */
body.page-home .btn--primary {
  background: linear-gradient(180deg, #ff2020, #d70000);
  border: 1px solid rgba(255,90,90,.45);
  box-shadow: 0 10px 30px -10px rgba(255,0,0,.55), 0 1px 0 rgba(255,255,255,.22) inset;
  transition: box-shadow .3s ease, transform .3s var(--ease-apex), filter .3s ease;
}
body.page-home .btn--primary:hover {
  filter: brightness(1.06);
  box-shadow: 0 16px 40px -10px rgba(255,0,0,.68), 0 1px 0 rgba(255,255,255,.26) inset;
  transform: translateY(-1px);
}
body.page-home .btn--ghost {
  border: 1px solid var(--ln-2);
  background: rgba(255,255,255,.035);
  backdrop-filter: blur(10px);
  transition: border-color .3s ease, background .3s ease;
}
body.page-home .btn--ghost:hover { border-color: var(--ln-red); background: rgba(255,255,255,.06); }
/* Pijltje schuift mee */
body.page-home .btn svg { transition: transform .35s var(--ease-apex); }
body.page-home .btn:hover svg { transform: translateX(3px); }
body.page-home .arrow-link svg { transition: transform .35s var(--ease-apex); }
body.page-home .arrow-link:hover svg { transform: translateX(3px); }

/* ============================================================
   8. RITME — meer lucht tussen de secties
   ============================================================ */
body.page-home .section { padding-block: clamp(var(--s-7), 8vw, calc(var(--s-9) * 1.15)); }
body.page-home .section--tight { padding-block: clamp(var(--s-6), 6vw, var(--s-8)); }
body.page-home .section-head { margin-bottom: clamp(var(--s-5), 4vw, var(--s-7)); }

/* ============================================================
   9. BEWEGING — rustiger en iets sneller dan de 0,9 s uit base.css
   ============================================================ */
body.page-home [data-reveal] {
  transform: translateY(28px);
  transition:
    opacity .62s var(--ease-apex),
    transform .62s var(--ease-apex);
}
body.page-home [data-reveal].is-visible { transform: none; }

/* ============================================================
   10. MOBIEL — eenvoudiger, niet uitgeknepen
   ============================================================ */
@media (max-width: 860px) {
  /* Vijf kaarten in perspectief werken niet op een telefoon: de
     buitenste twee vallen weg en de rest komt plat naast elkaar. */
}
@media (max-width: 520px) {
  /* Eén beeld is genoeg op een telefoon, en dan liggend: staand kostte
     265 px hoogte in een hero die toch al lang is. */
  .foto-carrousel { margin-top: var(--s-5); }
  .hero__chips span { font-size: .62rem; padding: 5px 10px; }
  .hero__chips { gap: 6px; margin-top: var(--s-4); }
  body.page-home main::before { background-size: 64px 100%; }
  /* De badge mag op twee regels, maar niet met de ruimte van een alinea. */
  .hero__badge { font-size: .62rem; padding: 6px 12px 6px 8px; line-height: 1.35; }
}

/* ============================================================
   12. CONSISTENTIERONDE — 03-09-2026
   ------------------------------------------------------------
   Gemeten in de browser op 1440 px. Wat er niet klopte:

   a) PADDING liep over zes waarden: 16 / 24 / 32 / 36 / 42,75 / 48 px.
      42,75 en 36 kwamen uit clamp-formules. Nu drie niveaus, allemaal
      uit de bestaande schaal.
   b) SECTIEPADDING kwam uit op 101,2 px door een clamp met 8vw.
      Vervangen door vaste stappen uit de schaal.
   c) DRIE KAARTFAMILIES door elkaar:
        nieuwe kaarten  #101013 dekkend, rand 5%,  radius 16
        review-card     rgba(18,18,20,.55), rand 12%, radius 16
        how-step        rgba(14,14,16,.55), rand 6%,  radius 12
        feature-row     rgba(14,14,16,.55), rand 6%,  padding 42,75
      Alles op één familie gezet.
   d) ZEVEN primaire rode knoppen. Dan is er geen primaire knop meer.
   e) FAQ: dichtgeklapte antwoorden hielden een eigen layoutbox en
      liepen over de link eronder. Vijf botsingen gemeten.
   ============================================================ */

/* ---- a + b: één spacing-ritme ---- */
body.page-home .section        { padding-block: var(--s-9); }
body.page-home .section--tight { padding-block: var(--s-8); }

/* Drie paddingniveaus, meer heeft deze pagina niet nodig.
   compact = 24, ruim = 32, uitgelicht = 40 */
body.page-home .route-card,
body.page-home .zeker-item,
body.page-home .console-optie,
body.page-home .review-card,
body.page-home .how-step,
body.page-home .svc-tile__body  { padding: var(--s-5); }   /* 24 */
body.page-home .drift-block,
body.page-home .bio-strip,
body.page-home .feature-row     { padding: var(--s-6); }   /* 36 */
body.page-home .lab-promo,
body.page-home .hero__spot      { padding: clamp(var(--s-6), 3.4vw, var(--s-7)); } /* 36-48 */

/* ---- c: één kaartfamilie ----
   Dezelfde drie eigenschappen voor alles wat als kaart leest. */
body.page-home .review-card,
body.page-home .how-step,
body.page-home .feature-row,
body.page-home .home-faq__item {
  background: var(--sf-2);
  border: 1px solid var(--ln-1);
  border-radius: var(--r-lg, 16px);
  box-shadow: 0 1px 0 rgba(255,255,255,.035) inset, 0 18px 44px rgba(0,0,0,.42);
}
/* De twee uitgelichte blokken houden bewust 24 px radius en een iets
   sterkere rand: dat is het enige onderscheid binnen de familie. */
body.page-home .lab-promo,
body.page-home .hero__spot {
  border-radius: var(--r-xl, 24px);
  border-color: var(--ln-2);
}

/* ---- d: knophiërarchie ----
   Alleen de hero en de slot-CTA krijgen de volle rode knop. Midden op de
   pagina wordt dezelfde actie een rode omlijning: het blijft herkenbaar
   als "hier koop je", maar het vecht niet met de hoofdactie. */
body.page-home #upgrades .btn--primary,
body.page-home #stickdrift .btn--primary,
body.page-home #lab .btn--primary,
body.page-home #builds .btn--primary,
body.page-home #reparaties .btn--primary {
  background: rgba(255, 30, 30, .10);
  border: 1px solid rgba(255, 60, 60, .42);
  color: var(--c-red-text, #ff5e5e);
  box-shadow: none;
}
body.page-home #upgrades .btn--primary:hover,
body.page-home #stickdrift .btn--primary:hover,
body.page-home #lab .btn--primary:hover,
body.page-home #builds .btn--primary:hover,
body.page-home #reparaties .btn--primary:hover {
  background: rgba(255, 30, 30, .17);
  border-color: rgba(255, 60, 60, .62);
  filter: none;
  box-shadow: 0 10px 30px -14px var(--gl-red);
}

/* Gelijke knophoogte: 54 en 56 px stonden door elkaar. */
body.page-home .btn { min-height: 48px; }
body.page-home .btn--lg { min-height: 56px; }

/* ---- e: FAQ ----
   Een dichtgeklapte <details> hoort geen inhoud te tonen. Deze regel is
   het vangnet als een UA of een andere regel dat laat lopen. */
body.page-home details:not([open]) > *:not(summary) { display: none; }
body.page-home .home-faq__more { margin-top: var(--s-5); }

/* ---- Leesbaarheid van de zekerheidskaarten ----
   De uitleg stond op --tx-2 binnen een donkere kaart; te vlak. */
body.page-home .zeker-item span { color: var(--tx-2); font-size: var(--fs-sm); }
body.page-home .zeker-item strong { color: var(--tx-1); }

/* ---- Rust: glow alleen waar hij iets betekent ----
   Vier plekken mogen oplichten. De rest blijft donker; dat is precies
   wat de gloed op die vier plekken laat werken. */
body.page-home #reparaties::after,
body.page-home #builds::after,
body.page-home #wie::after,
body.page-home #console::after,
body.page-home #garantie::after,
body.page-home #veelgevraagd::after { content: none; }

/* ---- Overflow op 768 px ----
   De sectiekop zet titel en "alle …"-link naast elkaar in een flexrij
   zonder wrap. Rond 768 px past dat niet meer en duwde de link de pagina
   21 px te breed (789 tegen 768). Laten omslaan lost dat structureel op,
   in plaats van de link te verstoppen. */
body.page-home .section-head {
  flex-wrap: wrap;
  gap: var(--s-4);
}
body.page-home .section-head > div:last-child { flex-wrap: wrap; }

/* ---- Regelafbreking in de garantievoet ----
   Op 320 px brak "Hoe opsturen werkt" middenin af: "Hoe" bleef alleen aan
   het eind van de vorige regel staan. De links breken nu als geheel af.
   (De overlap die mijn eerste meting hier aangaf bestond niet: inline
   links die over meerdere regels lopen hebben per definitie overlappende
   omhullende kaders. Per regelvak gemeten was er nul overlap.) */
body.page-home .zeker-voet { line-height: 1.9; }
body.page-home .zeker-voet a { white-space: nowrap; }

/* ---- Controller Lab: 4 punten in 3 kolommen gaf 3 boven en 1 alleen ----
   Twee kolommen verdelen vier punten netjes. */
body.page-home .lab-promo__lijst { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 560px; }
@media (max-width: 560px) {
  body.page-home .lab-promo__lijst { grid-template-columns: 1fr; }
}

/* ---- Reviews: laatste rij liep ragged ----
   Vijf reviews in een raster van drie laat twee kaarten links uitlijnen
   met een gat ernaast. Met flex centreren de overgebleven kaarten zich,
   ongeacht hoeveel reviews er binnenkomen. Kaarten houden gelijke hoogte
   per rij via align-items: stretch. */
body.page-home .reviews-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: stretch;
  gap: var(--s-4);
}
body.page-home .reviews-grid > * {
  flex: 1 1 300px;
  max-width: calc(33.333% - var(--s-4));
}
@media (max-width: 1000px) {
  body.page-home .reviews-grid > * { max-width: calc(50% - var(--s-4)); }
}
@media (max-width: 640px) {
  body.page-home .reviews-grid > * { max-width: 100%; }
}

/* ============================================================
   13. BOVENSTE INFORMATIEBALK
   ------------------------------------------------------------
   Deze sectie bevatte correcties met marges op de scheidingsstip. Die zijn
   op 03-09-2026 vervallen: de spacing zit nu volledig in de flex-gaps van
   css/home.css, en het bericht met een icoon en een <strong> is in
   index.html gelijkgetrokken met de rest. Daarmee is elk item kale tekst
   met dezelfde stijl, en is hier geen override meer nodig.

   Wat wel blijft: de balk zit vast onder de nav en het lettertype is
   JetBrains Mono op 10,5px. Zie css/home.css voor de basis.
   ============================================================ */

/* ============================================================
   14. SNELCONTACT — compacte balk onder de hero
   ============================================================ */
.snelcontact {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: var(--s-5);
  padding: var(--s-5);
  background: var(--sf-2);
  border: 1px solid var(--ln-1);
  border-radius: var(--r-lg, 16px);
  box-shadow: 0 1px 0 rgba(255,255,255,.035) inset, 0 18px 44px rgba(0,0,0,.42);
}
.snelcontact__vraag { margin: 0; font-size: var(--fs-sm); line-height: 1.6; color: var(--tx-2); }
.snelcontact__vraag strong { display: block; color: var(--tx-1); font-size: var(--fs-md); margin-bottom: 2px; }
.snelcontact__acties { display: flex; gap: var(--s-3); flex-wrap: wrap; }
.snelcontact__knop {
  display: inline-flex; align-items: center; gap: var(--s-3);
  padding: var(--s-3) var(--s-4);
  min-height: 48px;
  border-radius: var(--r-md, 12px);
  border: 1px solid var(--ln-2);
  background: rgba(255,255,255,.035);
  text-decoration: none; color: inherit;
  transition: border-color .3s ease, background .3s ease;
}
.snelcontact__knop:hover,
.snelcontact__knop:focus-visible { border-color: var(--ln-red); background: rgba(255,255,255,.06); }
.snelcontact__icoon {
  width: 34px; height: 34px; flex: 0 0 auto;
  display: grid; place-items: center;
  border-radius: 50%;
  background: rgba(255,40,40,.12);
  color: var(--c-red-text, #ff5e5e);
}
.snelcontact__knop--wa .snelcontact__icoon { background: rgba(37,211,102,.14); color: #25d366; }
.snelcontact__icoon svg { width: 17px; height: 17px; }
.snelcontact__tekst { display: block; line-height: 1.3; }
.snelcontact__tekst b { display: block; font-size: var(--fs-sm); color: var(--tx-1); }
.snelcontact__tekst small { display: block; font-size: var(--fs-xs); color: var(--tx-3); }
@media (max-width: 860px) {
  .snelcontact { grid-template-columns: 1fr; }
  .snelcontact__acties { display: grid; grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px) {
  .snelcontact__acties { grid-template-columns: 1fr; }
}

/* ============================================================
   15. VERGELIJKING — twee kaarten, één vergelijking
   ------------------------------------------------------------
   Gelijke hoogte, gelijke opbouw, gelijke posities voor titel, prijs en
   knop. Alleen de aanbevolen kaart heeft een badge en een iets sterkere
   rand. Geen schreeuwerige "beste keuze".
   ============================================================ */
.vergelijk {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--s-5);
  align-items: stretch;
}
.vergelijk__kaart {
  position: relative;
  display: flex; flex-direction: column;
  background: var(--sf-2);
  border: 1px solid var(--ln-1);
  border-radius: var(--r-xl, 24px);
  box-shadow: 0 1px 0 rgba(255,255,255,.035) inset, 0 18px 44px rgba(0,0,0,.42);
  overflow: hidden;
}
.vergelijk__kaart--aanbevolen {
  border-color: rgba(255, 60, 60, .30);
  box-shadow:
    0 1px 0 rgba(255,255,255,.05) inset,
    0 24px 60px rgba(0,0,0,.5),
    0 16px 50px -20px var(--gl-red);
}
.vergelijk__badge {
  position: absolute; top: var(--s-4); left: var(--s-4); z-index: 2;
  padding: 5px 11px; border-radius: var(--r-pill, 999px);
  /* Was rgba(255,30,30,.16): 16% dekking. Dat werkte toen de badge op een
     bijna leeg donker vlak stond, maar sinds de foto het hele vak vult
     verdween hij in het beeld. Nu een dekkende donkere plaat, zodat hij
     leesbaar blijft op elke foto die hier ooit onder komt. */
  background: rgba(9,9,11,.86);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(255,60,60,.55);
  font-family: var(--font-mono); font-size: .64rem;
  letter-spacing: .09em; text-transform: uppercase;
  color: var(--c-red-text, #ff5e5e);
}
/* Het plaatje was 300x300 in een vak van 594x352: 43% gevuld, met een klein
   product midden in een groot leeg vlak. De blokken verderop op de pagina
   (.feature-row__media) vullen hun vak wel, dus dit viel uit de toon.
   De opvulling is eruit en de foto vult nu de hele plaat, net als daar. */
.vergelijk__media {
  background:
    radial-gradient(420px 240px at 50% 108%, rgba(125,34,49,.30), transparent 70%),
    var(--sf-3);
  position: relative;
  overflow: hidden;
  aspect-ratio: 16 / 10;
}
.vergelijk__kaart--aanbevolen .vergelijk__media {
  background:
    radial-gradient(420px 240px at 50% 108%, rgba(255,0,0,.22), transparent 70%),
    var(--sf-3);
}
.vergelijk__media img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
}
.vergelijk__body { display: flex; flex-direction: column; padding: var(--s-6); flex: 1; }
.vergelijk__titel {
  margin: 0 0 var(--s-2);
  font-family: var(--font-display); font-weight: var(--fw-med, 500);
  font-size: var(--fs-xl); letter-spacing: -0.02em; text-transform: uppercase;
}
.vergelijk__prijs { margin: 0; font-size: var(--fs-3xl); line-height: 1; letter-spacing: -0.03em; }
.vergelijk__kaart--aanbevolen .vergelijk__prijs strong { color: var(--c-red-text, #ff5e5e); }
.vergelijk__prijsnoot { margin: 6px 0 var(--s-4); font-size: var(--fs-xs); color: var(--tx-3); }
.vergelijk__uitleg { margin: 0 0 var(--s-4); font-size: var(--fs-sm); line-height: 1.65; color: var(--tx-2); }
.vergelijk__punten { list-style: none; margin: 0 0 var(--s-5); padding: 0; display: grid; gap: 8px; }
.vergelijk__punten li {
  position: relative; padding-left: 22px;
  font-size: var(--fs-sm); line-height: 1.5; color: var(--tx-2);
}
.vergelijk__punten li::before {
  content: ""; position: absolute; left: 2px; top: .52em;
  width: 7px; height: 7px; border-radius: 50%; background: var(--c-red);
}
.vergelijk__punten--neutraal li::before { background: var(--tx-4); }
/* Beide kaarten eindigen op dezelfde lijn. De rechterkaart heeft bewust
   een tekstlink in plaats van een knop (dat is geen aankoopactie), maar
   krijgt wel dezelfde hoogte zodat de onderkanten uitlijnen. */
.vergelijk__cta { margin-top: auto; align-self: flex-start; }
.vergelijk__kaart .arrow-link.vergelijk__cta {
  display: inline-flex; align-items: center; gap: 8px;
  min-height: 48px;
}
.vergelijk__voet {
  margin: var(--s-5) 0 0; text-align: center;
  font-size: var(--fs-sm); color: var(--tx-3);
}
.vergelijk__voet a { color: var(--tx-2); border-bottom: 1px solid var(--c-bordeaux-line, rgba(255,255,255,.2)); }
.vergelijk__voet a:hover { color: #fff; }
/* Onder 820 px hebben twee kaarten naast elkaar te weinig ruimte voor de
   productfoto plus de tekst; dan onder elkaar. */
@media (max-width: 820px) {
  .vergelijk { grid-template-columns: 1fr; }
  /* max-width: 240px stond hier voor de oude opzet, waarin het product klein
     en gecentreerd in een leeg vlak stond. Nu de foto de hele plaat vult zou
     die regel het plaatje op smallere schermen weer laten zweven. */
}

/* ---- Tekstbreedte ---- */
body.page-home .section-head__lead { max-width: 62ch; }
body.page-home .drift-block p { max-width: 60ch; }
/* De bio-kaart is sinds sectie 16 volle inhoudsbreedte; 60ch liet daar een
   groot gat rechts vallen. 72ch blijft binnen de leesbare 45-75 tekens. */
body.page-home .bio-strip p { max-width: 72ch; }

/* ---- Naam en datum in een reviewkaart ----
   De opmaak is <span><span class="name">Jesper</span><span class="what">2
   maanden geleden · Google</span></span>: duidelijk bedoeld als naam met
   het detail eronder. Beide spans stonden echter op display:inline, dus ze
   liepen in één tekstregel door: "Jesper2 maanden geleden", met exact 0px
   ertussen op elke schermbreedte. Geen overlap, maar wel onleesbaar.
   Dit stond er al vóór de veegstrip. */
body.page-home .review-card__name { display: block; }

/* ============================================================
   17. REVIEWS OP MOBIEL — veegstrip in plaats van vijf schermen
   ------------------------------------------------------------
   Vijf reviewkaarten onder elkaar zijn op 375px samen 2240px hoog: vijf
   volle schermen scrollen door één sectie. Dat is de grootste enkele
   post in een pagina die op mobiel 28 schermen lang is.

   Bewust NIET opgelost door kaarten te verbergen: dan haal je echte
   klantervaringen weg voor precies de bezoekers die op hun telefoon
   staan te twijfelen, en verstop je tekst voor crawlers. Alle vijf de
   reviews blijven staan; ze liggen alleen naast elkaar in plaats van
   onder elkaar.

   Dit is géén terugkeer naar de oude carrousel. Die draaide vanzelf en
   pauzeerde alleen bij mouse-hover, dus op touch en met het toetsenbord
   kon je hem niet stoppen. Deze strip beweegt nooit uit zichzelf: de
   bezoeker veegt, of gebruikt Tab. scroll-snap zorgt dat hij netjes op
   een kaart uitkomt. De kaart is 86% breed zodat de volgende net zichtbaar
   is — dat is de aanwijzing dat er meer staat, zonder extra bolletjes.
   ============================================================ */
@media (max-width: 680px) {
  body.page-home .reviews-grid {
    flex-wrap: nowrap;
    justify-content: flex-start;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding-bottom: var(--s-3);
    /* Overschrijft de min-height uit home.css, die ruimte reserveerde voor
       vijf gestapelde kaarten. Onder elkaar was dat terecht; naast elkaar
       zou het een leeg gat van ruim 1500px opleveren. */
    min-height: 0;
    scrollbar-width: thin;
  }
  body.page-home .reviews-grid > * {
    flex: 0 0 86%;
    max-width: 86%;
    scroll-snap-align: start;
  }
  /* De strip mag niet zelf de pagina breder maken. */
  body.page-home #reviews .container { overflow-x: clip; }
}

/* ============================================================
   16. PERSOONLIJK BLOK — uitgelijnd met de rest
   ------------------------------------------------------------
   De bio-kaart stond op max-width 860px en werd gecentreerd. Dat werkte
   toen dit blok laag op de pagina stond, tussen smallere onderdelen.
   Sinds 03-09-2026 staat het direct tussen de vergelijkingskaarten en
   het reviewraster, die allebei de volle inhoudsbreedte gebruiken.
   Een kaart die 178px aan weerszijden inspringt leest daar niet als
   'gecentreerd' maar als scheef. Hij loopt nu mee met de rest.
   De foto krijgt wat meer gewicht zodat de bredere kaart niet leegloopt;
   de tekst blijft op 60ch, want dat is de leesbare regellengte.
   ============================================================ */
body.page-home .bio-strip {
  max-width: none;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: var(--s-6);
}
body.page-home .bio-strip__photo { width: 220px; height: 220px; }

/* Derde kolom: een klein stukje werkplaats naast de tekst. Staand formaat,
   zodat het de hoogte van de kaart volgt zonder hem op te rekken. Onder
   1100px valt hij weg: dan heeft de tekst de ruimte harder nodig. */
body.page-home .bio-strip { grid-template-columns: 220px minmax(0, 1fr) 150px; }
body.page-home .bio-strip__detail {
  width: 150px;
  height: 100%;
  max-height: 220px;
  object-fit: cover;
  object-position: center;
  border-radius: var(--r-md, 10px);
  border: 1px solid var(--ln-1);
  display: block;
}
@media (max-width: 1100px) {
  body.page-home .bio-strip { grid-template-columns: 220px minmax(0, 1fr); }
  body.page-home .bio-strip__detail { display: none; }
}

@media (max-width: 860px) {
  body.page-home .bio-strip { grid-template-columns: 1fr; }
  body.page-home .bio-strip__photo { width: 160px; height: 160px; }
}

/* ============================================================
   18. HEROKOP MET DRIE VASTE REGELS
   ------------------------------------------------------------
   De kop bestaat uit drie zinnen die elk op een eigen regel horen. Met
   text-wrap: balance (uit base.css) zou de browser de regels opnieuw
   verdelen en de zinnen door elkaar husselen; de <br/>'s blijven dan wel
   staan maar er komen breaks bij op ongewenste plekken.

   De middelste regel is de langste. Op smallere schermen mag die wel
   afbreken - dat is beter dan de kop kleiner maken - maar op desktop
   krijgt hij genoeg ruimte om heel te blijven.
   ============================================================ */
body.page-home .hero__title--drie {
  text-wrap: initial;
  text-align: center;
  max-width: none;
  /* De langste regel ("Vervang de zwakke plek. Niet je controller.") meet
     1391px bij de oorspronkelijke 86px, terwijl de tekstkolom 940px breed is.
     Bij 56px past hij op ruim 900px en blijven alle drie de zinnen heel.
     De kop is daarmee kleiner dan de vorige eenregelige versie, maar dat is
     de prijs van drie zinnen in plaats van een.

     De schaal (5,2vw) is zo gekozen dat de regel ook op 1024 en 768 nog heel
     blijft: daar is de tekstkolom smaller, maar de kop krimpt evenredig mee.
     Onder ongeveer 640px wint de ondergrens van 1,9rem en breken de regels
     wel af - dat is beter dan een kop van 25px op een telefoon. */
  font-size: clamp(1.9rem, 5.2vw, 3.5rem);
  line-height: 1.06;
}
/* Op een telefoon breekt de middelste zin af. Zonder deze regel viel het
   woord "Niet" nog aan het eind van de vorige regel, waardoor je las
   "vervang de zwakke plek niet" met het onderwerp op de regel erna. De twee
   zinshelften blijven nu heel: 181px + 143px past samen op 343px. Op desktop
   verandert er niets, daar staat de hele zin toch al op een regel. */
body.page-home .hero__title--drie .bijeen { white-space: nowrap; }

/* ---- Twee links onder 'Voordat je opstuurt' ----
   Deze <p> stond op display:block. De twee links stonden daardoor als losse
   woorden achter elkaar met alleen de spatie uit de HTML ertussen: gemeten
   2px, waardoor "verzendinformatie" en "Alle vragen" aan elkaar plakten.
   Een flexrij met een gap zet ze op afstand en laat ze op een smal scherm
   netjes onder elkaar vallen. */
body.page-home .home-faq__more {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--s-3) var(--s-6);
}

/* ============================================================
   11. VERMINDERDE BEWEGING
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  body.page-home .route-card,
  body.page-home .svc-tile,
  body.page-home .console-optie,
  body.page-home .build-shot,
  body.page-home .btn,
  body.page-home .btn svg,
  body.page-home .arrow-link svg,
  body.page-home .svc-tile__media img,
  body.page-home .feature-row__media img,
  /* Carrousel: js/foto-carrousel.js springt dan zonder animatie naar de
     volgende foto; hier alleen nog het invagen van een geladen foto. */
  body.page-home .foto-carrousel__dia img,
  body.page-home .foto-carrousel__pijl { transition: none; }

  body.page-home .route-card:hover,
  body.page-home .svc-tile:hover,
  body.page-home .console-optie:hover,
  body.page-home .build-shot:hover,
  body.page-home .btn--primary:hover { transform: none; }

  body.page-home .svc-tile:hover .svc-tile__media img,
  body.page-home .feature-row:hover .feature-row__media img { transform: none; }
}
