/* 000-basis.css */
/* ============================================================
   De opmaak van vanstraalen-schilderwerken, sitebreed. De bestanden
   in assets/css/ worden door build.php op naam gesorteerd en samen-
   gevoegd tot public/assets/site.<hash>.css:

   1. Gedeeld, ongescopet: fonts, tokens, basis, focus, nav.
   2. Per paginasoort een blok, gescopet via native CSS-nesting op
      een soort-class op <body>:
        .p-home    — de homepage
        .p-content — contentpagina's (lokale pagina's en diensten)
        .p-tekst   — juridische tekstpagina's (privacy, voorwaarden)
        .p-fout    — de foutpagina
      Nooit een kale .nav-/main-regel buiten een scope toevoegen:
      dezelfde classnaam kan per paginasoort andere waarden hebben.

   Cache: de hash in de bestandsnaam verandert met de inhoud, dus
   er is niets met de hand op te hogen.
   ============================================================ */

  /* ============================================================
     LOKALE WEBFONTS
     Zelf gehost in plaats van bij Google: dat scheelt
     een renderblokkerend verzoek naar een derde partij (en dus ook
     een derde partij die de bezoeker ziet langskomen). Geist is één
     variabel bestand voor 400-700; Young Serif (de koppen) heeft één
     snede en geen cursief — dat is de bedoeling, zie CLAUDE.md.
     font-display: swap, zodat de tekst meteen leesbaar is in de fallback.
     ============================================================ */
  @font-face {
    font-family: 'Geist';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('/fonts/geist-normal-400-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  }
  @font-face {
    font-family: 'Geist';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('/fonts/geist-normal-400-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
  }
  @font-face {
    font-family: 'Young Serif';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/fonts/young-serif-normal-400-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  }
  @font-face {
    font-family: 'Young Serif';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/fonts/young-serif-normal-400-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
  }


  /* ============================================================
     TOKENS
     Eén donkere familie, één crème-familie, één typeschaal (1.25),
     één spacing-schaal, twee radii, één elevatiestap.
     Kleur is semantisch: oranje = actie, goud = waardering.
     ============================================================ */
  :root {
    /* --- merk --- */
    --orange:      #f39324;   /* vlak/fill van acties */
    --orange-deep: #d97a10;   /* hover van acties */
    --orange-ink:  #9d5400;   /* oranje als TEKST op crème — 5,3:1 op --paper */
    --gold:        #f0c419;   /* uitsluitend waardering: score, sterren */
    --gold-deep:   #c79a00;

    /* --- één donkere familie, warm --- */
    --ink:        #1f1d19;
    --ink-raise:  #2b2822;    /* opgetild donker oppervlak */
    --ink-soft:   #5c574e;    /* secundaire tekst op crème  — 6,7:1 */
    --ink-mute:   #6b6659;    /* metadata op crème          — 4,9:1 op --paper-warm */

    /* --- crème-familie --- */
    --paper:       #faf7f2;
    --paper-warm:  #f3ede2;
    --paper-deep:  #ece5d8;   /* verdiept vlak: invoervelden */
    --line:        #e4ddce;
    --line-strong: #cfc6b3;

    /* --- tekstramp op donker --- */
    --on-dark:      #faf7f2;
    --on-dark-soft: rgba(250,247,242,.74);
    --on-dark-mute: rgba(250,247,242,.55);
    --on-dark-line: rgba(250,247,242,.14);

    /* --- semantisch --- */
    --action:       var(--orange);
    --action-hover: var(--orange-deep);
    --on-action:    var(--ink);   /* label op een oranje vlak — 7,2:1 */
    --action-ink:   var(--orange-ink);
    --rating:       var(--gold);

    /* --- typeschaal, ratio ~1.25, basis 17 --- */
    --t-2xs: 13px;   /* caps-microlabels; zelfde maat als --t-xs, alleen de rol verschilt */
    --t-xs:  13px;
    --t-sm:  15px;
    --t-base:17px;
    --t-md:  21px;
    --t-lg:  27px;
    --t-2xl: 42px;
    --display-s: clamp(28px, 3vw, 38px);
    --display-m: clamp(34px, 4vw, 54px);
    --display-l: clamp(42px, 6vw, 84px);

    /* --- spacing --- */
    --s-1: 4px;  --s-2: 8px;   --s-3: 12px; --s-4: 16px;
    --s-5: 24px; --s-6: 32px;  --s-7: 48px; --s-8: 64px;
    --s-9: 80px; --s-10:112px; --s-11:144px;

    /* --- radii: twee stappen + pill --- */
    --r-sm:   4px;
    --r-md:   10px;
    --r-pill: 999px;

    /* --- één dieptestrategie: haarlijn + één fluisterzachte elevatie --- */
    --elev: 0 1px 2px rgba(31,29,25,.04), 0 10px 28px rgba(31,29,25,.07);

    --ease: cubic-bezier(.2,.7,.2,1);
  }

  * { box-sizing: border-box; }
  html, body { margin: 0; padding: 0; }
  html { scroll-behavior: smooth; }
  body {
    font-family: 'Geist', system-ui, sans-serif;
    color: var(--ink);
    background: var(--paper);
    font-size: var(--t-base);
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
    text-wrap: pretty;
  }
  /* Young Serif: één zware, laagcontrast snede zonder cursief. De koppen krijgen
     hun gewicht van de letter zelf, niet van een accentwoord in kleur of cursief. */
  h1, h2, h3, h4 {
    font-family: 'Young Serif', Georgia, serif;
    font-weight: 400;
    letter-spacing: -0.01em;
    margin: 0;
    line-height: 1.08;
    text-wrap: balance;
  }
  .serif { font-family: 'Young Serif', Georgia, serif; font-weight: 400; }
  /* `*woord*` in de content: nadruk in de lopende tekst, halfvet in plaats van cursief
     (Geist heeft geen cursieve snede; een nagemaakte schuine letter is lelijker dan geen). */
  .nadruk { font-style: normal; font-weight: 600; }
  a { color: inherit; }
  .container { max-width: 1240px; margin: 0 auto; padding: 0 var(--s-6); }

  /* ---- Focus: één zichtbare ring op alles wat interactief is ---- */
  :where(a, button, input, select, textarea, [tabindex]):focus-visible {
    outline: 2px solid var(--action-ink);
    outline-offset: 3px;
    border-radius: var(--r-sm);
  }
  .hero :focus-visible,
  .reviews :focus-visible,
  .footer :focus-visible,
  .mobile-actions :focus-visible { outline-color: var(--gold); }

  @media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after {
      animation-duration: .01ms !important;
      transition-duration: .01ms !important;
    }
  }

  /* ============ NAV ============ */
  .nav {
    position: sticky; top: 0; z-index: 50;
    background: rgba(250,247,242,.88);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--line);
  }
  .nav-inner {
    display: flex; align-items: center; justify-content: space-between;
    gap: var(--s-6);
    /* Verticaal s-1 in plaats van s-3: het logo op 60px vult de balk, de balkhoogte blijft ~68px. */
    padding: var(--s-1) var(--s-6);
    max-width: 1240px; margin: 0 auto;
  }
  .logo { display: flex; align-items: center; text-decoration: none; color: var(--ink); }
  .logo img { height: 60px; width: auto; display: block; }
  .nav-links { display: flex; gap: var(--s-6); font-size: var(--t-sm); }
  .nav-links a {
    text-decoration: none; color: var(--ink-soft);
    padding: var(--s-2) 0;
    transition: color .16s var(--ease);
  }
  .nav-links a:hover { color: var(--ink); }
  .nav-cta {
    display: inline-flex; align-items: center; gap: var(--s-2);
    padding: 11px var(--s-5);
    background: var(--action);
    color: var(--on-action);
    text-decoration: none;
    border-radius: var(--r-pill);
    font-size: var(--t-sm);
    font-weight: 500;
    white-space: nowrap;
    transition: background .16s var(--ease), transform .1s var(--ease);
  }
  .nav-cta:hover { background: var(--action-hover); }
  .nav-cta:active { transform: translateY(1px) scale(.985); }
  @media (max-width: 860px) { .nav-links { display: none; } }

/* 010-subpaginas.css */
/* ============================================================
   SUBPAGINA'S — gedeelde opmaak van content-, tekst- en foutpagina's
   (knoppen, secties, mobiele actiebalk, footer). De homepage heeft
   hieronder zijn eigen, rijkere varianten van deze onderdelen.
   ============================================================ */
body.p-content,
body.p-tekst,
body.p-fout {
  /* ============ GEDEELD ============ */


  .btn {
    display: inline-flex; align-items: center; gap: var(--s-3);
    padding: var(--s-4) 28px;
    border-radius: var(--r-pill);
    text-decoration: none;
    font-size: var(--t-sm);
    font-weight: 500;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background .18s var(--ease), color .18s var(--ease),
                border-color .18s var(--ease), transform .1s var(--ease);
  }
  .btn:active { transform: translateY(1px) scale(.985); }
  .btn-primary { background: var(--action); color: var(--on-action); }
  .btn-primary:hover { background: var(--action-hover); }
  .btn-ghost {
    background: rgba(250,247,242,.06);
    color: var(--on-dark);
    border-color: rgba(250,247,242,.45);
  }
  .btn-ghost:hover { background: var(--on-dark); color: var(--ink); border-color: var(--on-dark); }
  .btn-ghost .lbl {
    text-transform: uppercase;
    letter-spacing: 0.16em;
    font-size: var(--t-2xs);
    opacity: .7;
  }
  .btn-ghost strong {
    font-weight: 600;
    font-size: var(--t-sm);
    margin-left: var(--s-2);
    letter-spacing: 0.01em;
    font-variant-numeric: tabular-nums;
  }
  .btn .arrow { transition: transform .18s var(--ease); }
  .btn:hover .arrow { transform: translateX(3px); }

  /* Sectieritme: de verticale ruimte volgt het gewicht van de sectie. */
  section { padding: var(--s-9) 0; }


  .section-title { font-size: var(--display-m); margin-bottom: var(--s-5); }
  .section-lede { font-size: var(--t-md); color: var(--ink-soft); max-width: 640px; }
  /* Elke sectie eindigt met dezelfde vervolgstap-link: één behandeling, geen tweede knopvorm. */
  .section-cta {
    display: inline-flex; align-items: center; gap: var(--s-2);
    margin-top: var(--s-6);
    font-size: var(--t-sm); font-weight: 500;
    color: var(--action-ink);
    text-decoration: none;
    border-bottom: 1px solid var(--line-strong);
    padding-bottom: 2px;
    transition: color .16s var(--ease), border-color .16s var(--ease);
  }
  .section-cta:hover { color: var(--ink); border-bottom-color: var(--action); }

  /* ============ MOBIELE ACTIEBALK ============ */
  .mobile-actions { display: none; }
  @media (max-width: 359px) {
    .container { padding: 0 var(--s-5); }
    .nav-inner { gap: var(--s-4); padding-left: var(--s-5); padding-right: var(--s-5); }
    .nav-cta { padding-left: var(--s-4); padding-right: var(--s-4); }
  }

  @media (max-width: 860px) {
    & { padding-bottom: 66px; }  /* de body zelf; genest zou 'body' hier niets matchen */
    .mobile-actions {
      position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
      display: grid; grid-template-columns: 1fr 1fr 1.2fr;
      gap: 1px;
      background: var(--line);
      border-top: 1px solid var(--line);
      box-shadow: 0 -6px 20px rgba(31,29,25,.08);
    }
    .mobile-actions a {
      background: var(--paper);
      padding: var(--s-4) var(--s-2);
      text-align: center;
      text-decoration: none;
      font-size: var(--t-sm);
      font-weight: 500;
      color: var(--ink);
      min-height: 52px;
      display: grid; place-items: center;
    }
    .mobile-actions a.primary { background: var(--action); color: var(--on-action); }
    .mobile-actions a:active { background: var(--paper-deep); }
    .mobile-actions a.primary:active { background: var(--action-hover); }
  }
  @media print { .mobile-actions { display: none; } }

  /* ============ FOOTER / CONTACT ============ */
  .footer { background: var(--ink); color: var(--on-dark); padding: var(--s-9) 0 var(--s-6); }
  .footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: var(--s-7); }
  /* Op deze pagina staat de footer direct onder de h1, dus zijn de kopjes h2 —
     dezelfde vormgeving, correcte koppenvolgorde. */
  .footer h2 {
    font-family: 'Geist', sans-serif;
    font-size: var(--t-2xs);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--on-dark-mute);
    font-weight: 500;
    margin-bottom: var(--s-4);
  }
  /* Typografisch woordmerk op donker — geen brightness-filter over een logo voor lichte grond. */
  .footer .ft-logo .display {
    font-family: 'Young Serif', Georgia, serif;
    font-size: var(--t-lg);
    line-height: 1.05;
    margin-bottom: var(--s-3);
    color: var(--on-dark);
  }
  .footer .ft-logo .display small {
    display: block;
    font-family: 'Geist', sans-serif;
    font-style: normal;
    font-size: var(--t-2xs);
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--on-dark-mute);
    margin-top: var(--s-2);
  }
  .footer .ft-logo p { color: var(--on-dark-soft); font-size: var(--t-sm); max-width: 280px; }
  .footer ul { list-style: none; padding: 0; margin: 0; }
  .footer ul li { padding: var(--s-1) 0; font-size: var(--t-sm); color: var(--on-dark-soft); }
  .footer ul li a { text-decoration: none; transition: color .16s var(--ease); }
  .footer ul li a:hover { color: var(--gold); }
  .footer :is(h2, h4) a { text-decoration: none; transition: color .16s var(--ease); }
  .footer :is(h2, h4) a:hover { color: var(--gold); }
  .footer .contact-line {
    font-size: var(--t-sm); padding: var(--s-1) 0; color: var(--on-dark-soft);
    display: flex; gap: var(--s-3); align-items: flex-start;
  }
  .footer .contact-line a { text-decoration: none; }
  .footer .contact-line a:hover { color: var(--gold); }
  .footer .contact-line .lk {
    color: var(--on-dark-mute); width: 46px; flex: 0 0 46px;
    font-size: var(--t-2xs); letter-spacing: .1em; text-transform: uppercase; padding-top: 2px;
  }
  .footer-bottom {
    margin-top: var(--s-8);
    padding-top: var(--s-5);
    border-top: 1px solid var(--on-dark-line);
    display: flex; justify-content: space-between; flex-wrap: wrap; gap: var(--s-4);
    font-size: var(--t-2xs);
    color: var(--on-dark-mute);
  }
  .footer h4.mt, .footer h2.mt { margin-top: var(--s-5); }
  .footer-bottom a { text-decoration: none; margin-right: var(--s-4); }
  .footer-bottom a:hover { color: var(--gold); }
  @media (max-width: 1000px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
  @media (max-width: 600px) { .footer-grid { grid-template-columns: 1fr; } }

}

/* 050-home.css */
/* ============================================================
   HOMEPAGE
   ============================================================ */
body.p-home {
  /* ============ HERO ============ */
  .hero {
    position: relative;
    min-height: 92svh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--ink);
    color: var(--on-dark);
  }
  @supports not (min-height: 92svh) { .hero { min-height: 92vh; } }
  .hero-image { position: absolute; inset: 0; overflow: hidden; }
  .hero-image img {
    width: 100%; height: 100%;
    object-fit: cover;
    /* Uitsnede per breekpunt bijgestuurd zodat de schilder — met hoofd — op alle
       vijf de testformaten volledig in beeld blijft. */
    object-position: 52% 50%;
    display: block;
  }
  .hero-image picture { display: contents; }
  @media (min-width: 701px)  { .hero-image img { object-position: 61% 50%; } }
  @media (min-width: 1100px) { .hero-image img { object-position: center; } }
  .hero-image::after {
    content: "";
    position: absolute; inset: 0;
    background:
      linear-gradient(180deg, rgba(31,29,25,.55) 0%, rgba(31,29,25,.25) 30%, rgba(31,29,25,.92) 100%),
      radial-gradient(ellipse 70% 55% at 25% 85%, rgba(31,29,25,.65) 0%, rgba(31,29,25,0) 70%);
  }
  .hero-inner {
    position: relative; z-index: 1;
    margin-top: auto;
    padding: var(--s-10) var(--s-6) var(--s-8);
    width: 100%;
    max-width: 1240px;
    margin-left: auto; margin-right: auto;
  }

  .hero h1 {
    font-size: var(--display-l);
    line-height: 1.02;
    letter-spacing: -0.015em;
    color: var(--on-dark);
    max-width: 14ch;
    text-shadow: 0 2px 28px rgba(31,29,25,.5), 0 1px 2px rgba(31,29,25,.34);
  }
  .hero-sub {
    font-size: var(--t-md);
    color: var(--on-dark);
    max-width: 540px;
    margin: var(--s-6) 0 var(--s-7);
    text-shadow: 0 1px 12px rgba(31,29,25,.45);
  }
  .hero-actions { display: flex; gap: 14px; flex-wrap: wrap; }

  /* rustige, statische trustregel — vervangt het zwevende paneel */
  .hero-trust {
    display: flex; align-items: baseline; flex-wrap: wrap; gap: var(--s-3);
    margin: var(--s-6) 0 0;
    font-size: var(--t-sm);
    color: var(--on-dark-soft);
    text-shadow: 0 1px 10px rgba(31,29,25,.55);
  }
  .hero-trust .sc {
    font-family: 'Young Serif', Georgia, serif;
    font-size: var(--t-lg);
    line-height: 1;
    color: var(--rating);
  }
  .hero-trust .sc small { font-size: var(--t-sm); color: var(--on-dark-soft); }
  .hero-trust .stars { color: var(--rating); letter-spacing: 2px; }
  /* 4,6 van 5: de vijfde ster halfvol. Geen halve-ster-glyph (die ontbreekt in veel
     fonts) maar één losse ster met de tekstkleur op 50% geclipt. letter-spacing hier
     op 0, anders telt de ruimte ná de ster mee en valt de knip te ver naar rechts. */
  .stars .half {
    letter-spacing: 0;
    background: linear-gradient(90deg, var(--rating) 0 50%, var(--on-dark-mute) 50%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
  }

  @media (max-width: 860px) {
    .hero-inner { padding-top: var(--s-8); padding-bottom: var(--s-7); }
  }

  /* ============ GEDEELD ============ */


  .btn {
    display: inline-flex; align-items: center; gap: var(--s-3);
    padding: var(--s-4) 28px;
    border-radius: var(--r-pill);
    text-decoration: none;
    font-size: var(--t-sm);
    font-weight: 500;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background .18s var(--ease), color .18s var(--ease),
                border-color .18s var(--ease), transform .1s var(--ease);
  }
  .btn:active { transform: translateY(1px) scale(.985); }
  .btn-primary { background: var(--action); color: var(--on-action); }
  .btn-primary:hover { background: var(--action-hover); }
  .btn-ghost {
    background: rgba(250,247,242,.06);
    color: var(--on-dark);
    border-color: rgba(250,247,242,.45);
  }
  .btn-ghost:hover { background: var(--on-dark); color: var(--ink); border-color: var(--on-dark); }
  .btn-ghost .lbl {
    text-transform: uppercase;
    letter-spacing: 0.16em;
    font-size: var(--t-2xs);
    opacity: .7;
  }
  .btn-ghost strong {
    font-weight: 600;
    font-size: var(--t-sm);
    margin-left: var(--s-2);
    letter-spacing: 0.01em;
    font-variant-numeric: tabular-nums;
  }
  .btn .arrow { transition: transform .18s var(--ease); }
  .btn:hover .arrow { transform: translateX(3px); }

  /* Sectieritme: de verticale ruimte volgt het gewicht van de sectie. */
  section { padding: var(--s-9) 0; }


  .section-title { font-size: var(--display-m); margin-bottom: var(--s-5); }
  .section-lede { font-size: var(--t-base); color: var(--ink-soft); max-width: 640px; }
  /* De offerte-inleiding blijft even groot als op de contentpagina's. */
  .offerte-side .section-lede { font-size: var(--t-md); }
  /* Elke sectie eindigt met dezelfde vervolgstap-link: één behandeling, geen tweede knopvorm. */
  .section-cta {
    display: inline-flex; align-items: center; gap: var(--s-2);
    margin-top: var(--s-6);
    font-size: var(--t-sm); font-weight: 500;
    color: var(--ink);
    text-decoration: none;
    border-bottom: 1px solid var(--action);
    padding-bottom: 2px;
    transition: color .16s var(--ease), border-color .16s var(--ease);
  }
  .section-cta:hover { color: var(--ink-soft); border-bottom-color: var(--action-hover); }

  /* ============ INTRO / KEURMERKEN ============ */
  .intro { background: var(--paper-warm); padding: var(--s-9) 0; }
  .intro-grid {
    display: grid;
    grid-template-columns: 1.1fr .9fr;
    gap: var(--s-9);
    align-items: center;
  }
  /* Brian op de klus, naast de zin die dat zegt. */
  .intro-foto { margin: 0; }
  .intro-foto img {
    display: block; width: 100%; height: auto;
    aspect-ratio: 4 / 3; object-fit: cover;
    border-radius: var(--r-md);
  }
  .intro p { font-size: var(--t-base); line-height: 1.55; color: var(--ink-soft); margin: 0 0 var(--s-5); }
  .intro p.lead {
    font-family: 'Young Serif', Georgia, serif;
    font-size: var(--t-lg);
    line-height: 1.3;
    color: var(--ink);
  }
  /* De vier keurmerken als één rij onder de intro, alle vier even zwaar. */
  .keurmerken {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-4);
    margin-top: var(--s-8);
  }
  .keurmerk {
    background: var(--paper);
    padding: var(--s-5);
    border-radius: var(--r-sm);
    border: 1px solid var(--line);
  }
  /* Alle vier zijn hetzelfde soort ding — dus dezelfde behandeling. */
  .keurmerk .icon {
    width: 34px; height: 34px;
    border-radius: 50%;
    background: var(--paper-warm);
    color: var(--ink);
    border: 1px solid var(--line-strong);
    display: grid; place-items: center;
    margin-bottom: var(--s-3);
    font-family: 'Young Serif', Georgia, serif;
  }
  .keurmerk .label {
    font-size: var(--t-2xs); letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--ink-mute); margin-bottom: var(--s-1);
  }
  .keurmerk .value { font-family: 'Young Serif', Georgia, serif; font-size: var(--t-md); line-height: 1.3; }
  @media (max-width: 860px) {
    .intro-grid { grid-template-columns: 1fr; gap: var(--s-6); }
    .intro-foto { order: -1; }   /* eerst het beeld, dan de tekst: zo leest een telefoon */
    .keurmerken { grid-template-columns: repeat(2, 1fr); margin-top: var(--s-7); }
  }
  /* Onder 480px past "Kwaliteitslabel" niet meer in een halve kolom: één kolom. */
  @media (max-width: 480px) { .keurmerken { grid-template-columns: 1fr; } .keurmerk { padding: var(--s-4) var(--s-5); } }

  /* ============ PIJLERS — het zwaartepunt van de pagina ============ */
  .pijlers {
    background: var(--paper);
    padding: var(--s-11) 0;
  }
  .pijlers-header {
    display: grid; grid-template-columns: 1.15fr .85fr; gap: var(--s-8);
    align-items: end;
    margin-bottom: var(--s-8);
  }
  .pijlers-header .section-title { font-size: var(--display-m); margin-bottom: 0; }
  .pijlers-header p { color: var(--ink-soft); font-size: var(--t-base); margin: 0; }

  /* De eerste pijler is de lead: eigen oppervlak, elevatie, grotere kop. */
  .pijler-lead {
    background: var(--paper-warm);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    box-shadow: var(--elev);
    padding: var(--s-7);
    display: grid;
    grid-template-columns: .75fr 1.35fr .8fr;
    gap: var(--s-7);
    align-items: start;
    margin-bottom: var(--s-7);
  }
  /* Grid-kinderen krijgen anders min-width:auto en duwen de kaart open zodra een
     lijstkolom niet past; nu breekt de tekst en blijft alles binnen de kaart. */
  .pijler-lead > *, .pijler > * { min-width: 0; }
  /* Elke pijler heeft een eigen foto: in de lead-kaart een kolom, in de rijen een miniatuur. */
  .pijler-foto { margin: 0; }
  .pijler-foto img {
    display: block; width: 100%; height: auto;
    aspect-ratio: 4 / 3; object-fit: cover;
    border-radius: var(--r-sm);
  }
  .pijler-lead .pijler-foto img { aspect-ratio: 3 / 4; height: 100%; }
  .pijler-lead h3 { font-size: var(--t-2xl); line-height: 1.02; margin-bottom: var(--s-4); }
  .pijler-lead .desc { color: var(--ink-soft); font-size: var(--t-base); margin: 0; max-width: 42ch; }
  .pijler-lead ul {
    list-style: none; padding: 0; margin: 0 0 var(--s-5);
    columns: 2; column-gap: var(--s-6);
    font-size: var(--t-xs);   /* scanlabels in een 2-koloms grid: 15px laat ze afbreken */
  }
  .pijler-lead ul li { padding: var(--s-1) 0; color: var(--ink-soft); break-inside: avoid; }
  .pijler-lead ul li::before { content: "—"; color: var(--line-strong); margin-right: var(--s-2); }
  .pijler-lead .aside { border-top: 1px solid var(--line-strong); padding-top: var(--s-4); }

  /* De andere drie zijn gedemoveerd tot compacte haarlijnrijen. */
  .pijler {
    border-top: 1px solid var(--line);
    padding: var(--s-6) 0;
    display: grid;
    grid-template-columns: 160px 1fr 1.2fr .9fr;
    gap: var(--s-6);
    align-items: start;
    transition: background .2s var(--ease);
  }
  .pijler:hover { background: rgba(243,147,36,.035); }
  .pijler:last-of-type { border-bottom: 1px solid var(--line); }
  .pijler h3 { font-size: var(--t-lg); line-height: 1.1; }
  .pijler .desc { color: var(--ink-soft); font-size: var(--t-base); margin-top: var(--s-2); }
  .pijler ul {
    list-style: none; padding: 0; margin: 0;
    columns: 2; column-gap: var(--s-5);
    font-size: var(--t-xs);
  }
  .pijler ul li { padding: 3px 0; color: var(--ink-soft); break-inside: avoid; }
  .pijler ul li::before { content: "—"; color: var(--line-strong); margin-right: var(--s-2); }

  .aside-label {
    display: block;
    font-size: var(--t-2xs); letter-spacing: .12em; text-transform: uppercase;
    color: var(--ink-mute); margin-bottom: var(--s-2); font-weight: 500;
  }
  .pijler .aside, .pijler-lead .aside { color: var(--ink-soft); font-size: var(--t-sm); line-height: 1.5; }

  .pijler-link {
    /* flex + fit-content i.p.v. inline-flex: de link hoort op een eigen regel onder de
       aside-tekst (daar is de margin-top voor). Als inline-element deed die margin niets
       en stond hij alleen los omdat de tekst toevallig de regel uitvulde. */
    display: flex; width: fit-content; align-items: center; gap: var(--s-2);
    color: var(--action-ink); text-decoration: underline;
    text-decoration-color: rgba(157,84,0,.4);
    text-underline-offset: 3px;
    font-size: var(--t-sm); margin-top: var(--s-3); font-weight: 500;
    transition: text-decoration-color .16s var(--ease);
  }
  .pijler-link:hover { text-decoration-color: var(--action-ink); }

  @media (max-width: 1000px) {
    .pijlers-header { grid-template-columns: 1fr; gap: var(--s-5); }
    .pijlers { padding: var(--s-9) 0; }
    .pijler-lead { grid-template-columns: 1fr; gap: var(--s-4); padding: var(--s-6); }
    .pijler-lead h3 { font-size: var(--display-s); }
    .pijler-lead .pijler-foto img { aspect-ratio: 16 / 9; height: auto; margin-bottom: var(--s-2); }
    /* De rij wordt twee kolommen: miniatuur links, de rest ernaast. */
    .pijler { grid-template-columns: 96px 1fr; gap: var(--s-4) var(--s-5); }
    .pijler > .pijler-foto { grid-row: span 3; }
    .pijler > .pijler-foto img { aspect-ratio: 3 / 4; }
    .pijler > div, .pijler > ul, .pijler > .aside { grid-column: 2; }
  }
  @media (max-width: 600px) {
    /* Miniatuur naast de kop; lijst en aside eronder over de volle breedte. */
    .pijler > .pijler-foto { grid-row: span 1; }
    .pijler > ul, .pijler > .aside { grid-column: 1 / -1; }
    .pijler-lead { padding: var(--s-5); }
  }
  /* Onder 480px is een halve kolom te smal voor "Buitengevels & buitenhoutwerk": één kolom. */
  @media (max-width: 480px) { .pijler ul, .pijler-lead ul { columns: 1; } }

  /* ============ REVIEWS ============ */
  .reviews { background: var(--ink); color: var(--on-dark); padding: var(--s-10) 0; }
  /* Deze sectie opent met het cijfer, niet met een eyebrow — ander ritme dan de rest. */
  .reviews-head {
    display: grid; grid-template-columns: auto 1fr; gap: var(--s-8);
    align-items: end; margin-bottom: var(--s-8);
  }
  .reviews .section-title { color: var(--on-dark); margin-bottom: 0; }
  .reviews-score { border-right: 1px solid var(--on-dark-line); padding-right: var(--s-8); }
  .reviews-score .big {
    font-family: 'Young Serif', Georgia, serif;
    font-size: var(--display-l);
    line-height: 1;
    color: var(--rating);
  }
  .reviews-score .big .out { color: var(--on-dark-soft); font-size: var(--t-lg); }
  .reviews-score .stars { color: var(--rating); letter-spacing: 4px; margin: var(--s-2) 0 var(--s-1); font-size: var(--t-lg); }
  .reviews-score .source {
    font-size: var(--t-2xs); letter-spacing: 0.1em; text-transform: uppercase;
    color: var(--on-dark-soft);
  }
  .reviews-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-5); }
  .review {
    background: rgba(250,247,242,.045);
    border: 1px solid var(--on-dark-line);
    padding: var(--s-6);
    border-radius: var(--r-md);
    display: flex; flex-direction: column; gap: var(--s-5);
  }
  .review .quote-mark {
    font-family: 'Young Serif', Georgia, serif;
    font-size: var(--t-2xl); line-height: .5;
    color: rgba(240,196,25,.4);
    margin-bottom: -6px;
  }
  /* Leestekst, geen citaat-cursief: de reviews zijn te lang voor italic serif. */
  .review .quote {
    font-size: var(--t-base);
    line-height: 1.6;
    color: var(--on-dark);
    flex: 1;
  }
  .review .author {
    display: flex; align-items: center; gap: var(--s-3);
    padding-top: var(--s-5);
    border-top: 1px solid var(--on-dark-line);
  }
  /* Alle drie zijn klanten — geen kleurrotatie op volgorde. */
  .review .author .avatar {
    width: 34px; height: 34px; border-radius: 50%;
    background: var(--ink-raise); color: var(--on-dark-soft);
    border: 1px solid var(--on-dark-line);
    display: grid; place-items: center;
    font-family: 'Young Serif', Georgia, serif;
  }
  .review .author .meta { font-size: var(--t-xs); }
  .review .author .meta .name { font-weight: 500; }
  .review .author .meta .role { color: var(--on-dark-mute); font-size: var(--t-2xs); }
  /* Narekenbaarheid: de bezoeker moet het cijfer bij de bron kunnen controleren. */
  .reviews-more {
    display: inline-block; margin-top: var(--s-6);
    font-size: var(--t-sm); color: var(--on-dark-soft);
    border-bottom: 1px solid var(--on-dark-line);
    padding-bottom: 2px;
  }
  .reviews-more:hover { color: var(--on-dark); border-bottom-color: var(--on-dark-soft); }
  @media (max-width: 1000px) {
    .reviews-grid { grid-template-columns: 1fr; }
    .reviews-head { grid-template-columns: 1fr; gap: var(--s-5); }
    .reviews-score { border-right: 0; padding-right: 0; }
  }

  /* ============ GALLERY — direct onder de hero, van rand tot rand ============ */
  .gallery { background: var(--paper); padding: var(--s-9) 0; }
  .gallery-head {
    display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-8); align-items: end;
    margin-bottom: var(--s-7);
  }
  .gallery-head p { color: var(--ink-soft); font-size: var(--t-base); margin: 0; }
  /* De mozaïek negeert de container: de foto's zijn het argument. Alleen een smalle
     rand, even breed als de naad tussen de tegels. */
  .gallery-bleed { padding: 0 var(--s-2); }
  .gallery-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    /* Vier rijen: t1 staat twee rijen hoog links, t6 opent de derde rij over twee kolommen. */
    grid-auto-rows: clamp(200px, 20vw, 300px);
    gap: var(--s-2);
  }
  .gallery-tile {
    position: relative;
    overflow: hidden;
    border-radius: var(--r-sm);
    background: var(--ink-raise);
    color: var(--on-dark);
  }
  .gallery-tile.t1 { grid-row: span 2; grid-column: span 2; }
  .gallery-tile.t6 { grid-column: span 2; }
  .gallery-tile > img {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover; object-position: center;
    display: block;
  }
  /* Eén scrim die niet afhangt van hoe licht het beeld toevallig is. */
  .gallery-tile .meta {
    position: absolute; bottom: 0; left: 0; right: 0;
    padding: var(--s-6) var(--s-5) var(--s-4);
    background: linear-gradient(180deg,
      rgba(31,29,25,0) 0%,
      rgba(31,29,25,.58) 40%,
      rgba(31,29,25,.9) 100%);
    color: #fff;
  }
  .gallery-tile .tag { font-size: var(--t-xs); color: rgba(255,255,255,.8); margin-bottom: 2px; }
  .gallery-tile .ttl { font-family: 'Young Serif', Georgia, serif; font-size: var(--t-md); line-height: 1.25; }
  .gallery-tile.t1 .ttl, .gallery-tile.t6 .ttl { font-size: var(--t-lg); }
  .gallery .rij-hint { margin-top: var(--s-4); }
  @media (max-width: 1000px) {
    .gallery-head { grid-template-columns: 1fr; gap: var(--s-5); }
    .gallery-grid { grid-template-columns: 1fr 1fr; grid-auto-rows: clamp(180px, 26vw, 260px); }
    .gallery-tile.t1 { grid-row: span 1; grid-column: span 2; }
    .gallery-tile.t1 .ttl, .gallery-tile.t6 .ttl { font-size: var(--t-md); }
  }
  /* Onder 768px wordt de grid een carrousel (zie 060); die rekent met de containerrand,
     dus de rand-tot-randwrapper krijgt daar dezelfde padding als de container. */
  @media (max-width: 768px) { .gallery-bleed { padding: 0 var(--s-6); } }
  @media (max-width: 359px) { .gallery-bleed { padding: 0 var(--s-5); } }

  /* ============ WERKWIJZE — tijdlijn, geen wireframe-tabel ============ */
  /* Warm crème (12-9-2026): sinds de galerij naar boven is verhuisd, staan werkwijze en
     vragen direct achter elkaar en vielen ze op dezelfde ondergrond in elkaar over. Nu
     wisselt het weer: reviews donker, werkwijze warm, vragen licht, formulier warm. */
  .werkwijze { background: var(--paper-warm); padding: var(--s-9) 0 var(--s-10); }
  .werkwijze .steps {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: var(--s-5);
    margin-top: var(--s-8);
    position: relative;
  }
  /* De lijn loopt van de eerste tot de laatste marker, niet tot de containerrand. */
  .werkwijze .steps::before {
    content: "";
    position: absolute; top: 6px;
    left: 6px;
    right: calc((100% - 4 * var(--s-5)) / 5 - 6px);
    height: 1px; background: var(--line-strong);
  }
  .step { position: relative; padding-top: var(--s-6); background: none; }
  .step::before {
    content: "";
    position: absolute; top: 0; left: 0;
    width: 13px; height: 13px; border-radius: 50%;
    background: var(--paper-warm);   /* de marker staat op de sectiekleur, anders een licht gaatje in de rail */
    border: 2px solid var(--line-strong);
  }

  .step h3 { font-family: 'Young Serif', Georgia, serif; font-size: var(--t-lg); margin-bottom: var(--s-2); }
  .step p { font-size: var(--t-sm); color: var(--ink-soft); margin: 0; line-height: 1.55; }
  @media (max-width: 1000px) {
    .werkwijze .steps { grid-template-columns: 1fr; gap: var(--s-6); padding-left: var(--s-6); }
    .werkwijze .steps::before { top: 6px; bottom: 6px; left: 6px; right: auto; width: 1px; height: auto; }
    .step { padding-top: 0; padding-left: var(--s-5); }
    .step::before { top: 5px; left: -18px; }
  }

}

/* 060-formulier-en-faq.css */
/* FAQ, offerteformulier en mobiele rijen: op de homepage én op de
   contentpagina's (schilder-mappen) — zelfde formulier, zelfde gedrag. */
body.p-home,
body.p-content {

  /* ============ VEELGESTELDE VRAGEN ============ */
  /* Zelfde ondergrond als de werkwijze erboven; de haarlijn hoort bij deze sectie,
     zodat er niets aan de bestaande secties verandert. Antwoorden zijn leestekst,
     dus geen carrousel op mobiel — alleen één kolom. */
  .faq { background: var(--paper); border-top: 1px solid var(--line); padding: var(--s-9) 0 var(--s-10); }
  /* Twee kolommen: de vragen links, rechts één scherpe projectfoto die blijft kleven als
     de bezoeker antwoorden opent. Geen foto ónder de tekst: dat kost leesbaarheid. */
  .faq-kolommen { display: grid; grid-template-columns: 1.3fr 1fr; gap: var(--s-8); align-items: start; }
  .faq-kolommen > * { min-width: 0; }
  .faq-foto { margin: 0; position: sticky; top: 100px; }
  .faq-foto img {
    display: block; width: 100%; height: auto;
    aspect-ratio: 4 / 3; object-fit: cover;
    border-radius: var(--r-md);
  }
  @media (max-width: 860px) {
    .faq-kolommen { grid-template-columns: 1fr; gap: var(--s-6); }
    .faq-foto { position: static; }   /* onder de lijst; de vragen zijn het doel van de sectie */
  }
  /* Eén kolom haarlijnrijen, standaard dicht: de sectie is dan zes regels hoog en de
     bezoeker opent alleen wat hem aangaat. Native details/summary, geen script. */
  .faq-lijst { margin-top: var(--s-7); border-top: 1px solid var(--line); }
  .faq-item { border-bottom: 1px solid var(--line); }
  .faq-item summary {
    display: flex; align-items: center; justify-content: space-between; gap: var(--s-5);
    padding: var(--s-4) 0;
    cursor: pointer;
    list-style: none;
  }
  .faq-item summary::-webkit-details-marker { display: none; }
  .faq-item summary:focus-visible { outline: 2px solid var(--action-ink); outline-offset: 3px; border-radius: var(--r-sm); }
  .faq-item h3 { font-size: var(--t-md); margin: 0; }
  /* Het teken is een plus die bij openen een min wordt: twee streepjes, één draait weg. */
  .faq-teken { position: relative; flex: 0 0 22px; width: 22px; height: 22px; }
  .faq-teken::before, .faq-teken::after {
    content: ""; position: absolute; top: 50%; left: 50%;
    width: 14px; height: 2px; background: var(--action-ink);
    transform: translate(-50%, -50%);
    transition: transform .18s var(--ease);
  }
  .faq-teken::after { transform: translate(-50%, -50%) rotate(90deg); }
  .faq-item[open] .faq-teken::after { transform: translate(-50%, -50%) rotate(0deg); }
  .faq-item summary:hover h3 { color: var(--action-ink); }
  .faq-item p { font-size: var(--t-base); color: var(--ink-soft); margin: 0; padding: 0 0 var(--s-5); line-height: 1.6; max-width: 62ch; }
  @media (max-width: 860px) {
    .faq-lijst { margin-top: var(--s-6); }
    .faq-item p { max-width: none; }
  }

  /* ============ OFFERTE / FORM ============ */
  .offerte { background: var(--paper-warm); padding: var(--s-10) 0 var(--s-11); }
  .offerte-grid {
    display: grid;
    grid-template-columns: .9fr 1.1fr;
    gap: var(--s-9);
    align-items: start;
  }
  .offerte-side .reassure { margin-top: var(--s-7); display: flex; flex-direction: column; gap: var(--s-4); }
  .offerte-side .reassure-item { display: flex; gap: var(--s-3); align-items: flex-start; font-size: var(--t-sm); }
  /* Vier bevestigingen van dezelfde soort — één behandeling. */
  .offerte-side .reassure-item .check {
    flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%;
    background: var(--ink); color: var(--paper);
    display: grid; place-items: center;
    font-size: var(--t-2xs);
    margin-top: 2px;
  }
  .offerte-side .reassure-item strong { display: block; font-weight: 500; margin-bottom: 1px; }
  .offerte-side .reassure-item span { color: var(--ink-soft); }

  .form-card {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    padding: var(--s-7);
    box-shadow: var(--elev);
  }
  .form-card h3 { font-size: var(--t-lg); margin-bottom: var(--s-2); }
  .form-card .form-sub { color: var(--ink-soft); font-size: var(--t-sm); margin: 0 0 var(--s-6); }
  .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-4); }
  .field { margin-bottom: var(--s-4); }
  .field > label {
    display: block;
    font-size: var(--t-sm);
    color: var(--ink-soft);
    margin-bottom: var(--s-2);
    font-weight: 500;
  }
  /* Velden staan een stap dieper dan de kaart, met een vindbare rand. */
  .field input[type="text"],
  .field input[type="email"],
  .field input[type="tel"],
  .field textarea,
  .field select {
    width: 100%;
    padding: 13px 14px;
    border: 1px solid var(--line-strong);
    background: var(--paper-deep);
    border-radius: var(--r-sm);
    font-family: inherit;
    font-size: var(--t-sm);
    color: var(--ink);
    transition: border-color .16s var(--ease), background .16s var(--ease);
  }
  .field select {
    appearance: none; -webkit-appearance: none;
    padding-right: 40px;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%23736e63' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
  }
  .field textarea { resize: vertical; min-height: 110px; }
  .field input::placeholder, .field textarea::placeholder { color: var(--ink-mute); }
  .field input:hover, .field textarea:hover, .field select:hover { border-color: var(--ink-mute); }
  .field input:focus, .field textarea:focus, .field select:focus {
    border-color: var(--action);
    background: var(--paper);
  }
  .form-submit {
    margin-top: var(--s-5);
    padding-top: var(--s-5);
    border-top: 1px solid var(--line);
    display: flex; align-items: center; gap: var(--s-5);
    flex-wrap: wrap;
  }
  .form-submit .privacy {
    flex: 1 1 220px;
    font-size: var(--t-sm); color: var(--ink-soft);
    display: flex; gap: var(--s-2); align-items: flex-start;
  }
  .form-submit .privacy input { accent-color: var(--action); margin: 3px 0 0; width: 16px; height: 16px; }
  .submit-btn {
    background: var(--action);
    color: var(--on-action);
    border: none;
    padding: var(--s-4) var(--s-6);
    border-radius: var(--r-pill);
    font-family: inherit;
    font-size: var(--t-sm);
    font-weight: 500;
    cursor: pointer;
    display: inline-flex; align-items: center; gap: var(--s-3);
    transition: background .18s var(--ease), transform .1s var(--ease);
  }
  .submit-btn:hover { background: var(--action-hover); }
  .submit-btn:active { transform: translateY(1px) scale(.985); }
  /* Zichtbare fout- en succesbehandeling, in de warme palette. */
  .form-status {
    display: none;
    margin: 0 0 var(--s-5);
    padding: var(--s-3) var(--s-4);
    border-radius: var(--r-sm);
    font-size: var(--t-sm);
    border: 1px solid;
  }
  .form-status.is-ok   { display: block; background: rgba(105,125,70,.10); border-color: #7d8f5a; color: #46532f; }
  .form-status.is-err  { display: block; background: rgba(168,58,32,.08);  border-color: #b4644c; color: #8d3a22; }
  .field.has-error input, .field.has-error select, .field.has-error textarea { border-color: #b4644c; }
  .field .err { display: none; margin-top: var(--s-2); font-size: var(--t-2xs); color: #8d3a22; }
  .field.has-error .err { display: block; }
  /* Het akkoord-vinkje staat onderaan, ver van de statusregel: de melding komt eronder,
     op een eigen regel na de verstuurknop. */
  .form-submit .err { display: none; order: 3; flex-basis: 100%; margin-top: calc(-1 * var(--s-3)); font-size: var(--t-xs); color: #8d3a22; }
  .form-submit.has-error .err { display: block; }
  .form-submit.has-error .privacy input { outline: 2px solid #b4644c; outline-offset: 2px; }
  /* Honeypot: off-screen (niet display:none) — onzichtbaar voor mens en
     schermlezer, wel invulbaar voor bots. */
  .hp-field { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
  /* Bedankt-state: in dezelfde kaart, geen aparte pagina. */
  .form-card.is-done .form-body,
  .form-card.is-done .form-sub,
  .form-card.is-done .form-status { display: none; }
  .form-done {
    margin-top: var(--s-5);
    padding: var(--s-6);
    background: var(--paper-warm);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
  }
  .form-done strong {
    display: block;
    font-family: 'Young Serif', Georgia, serif;
    font-weight: 400;
    font-size: var(--t-md);
    margin-bottom: var(--s-2);
  }
  .form-done span { color: var(--ink-soft); font-size: var(--t-sm); }
  .form-done a { color: var(--action-ink); }
  @media (max-width: 1000px) {
    .offerte-grid { grid-template-columns: 1fr; gap: var(--s-7); }
    .form-row { grid-template-columns: 1fr; }
    .form-card { padding: var(--s-6); }
  }

  .rij-hint { display: none; }

  /* ============ MOBIELE RIJEN — horizontaal in plaats van een lange stapel ============
     Kaartenrijen (reviews, projecten, werkwijze) worden op mobiel scroll-snap-
     carrousels. Dezelfde kaarten, dezelfde maten, alleen een andere as; dat
     scheelt op 360px ruim vier schermen aan lengte. */
  @media (max-width: 768px) {
    .rij-mobiel {
      display: grid;
      grid-auto-flow: column;
      grid-auto-columns: 82%;
      grid-template-columns: none;
      overflow-x: auto;
      overscroll-behavior-x: contain;
      scroll-snap-type: x mandatory;
      scroll-padding-left: var(--s-6);
      padding: 0 var(--s-6) var(--s-4);
      margin: 0 calc(-1 * var(--s-6));
      -webkit-overflow-scrolling: touch;
      scrollbar-width: thin;
    }
    .rij-mobiel > * { scroll-snap-align: start; }
    .reviews-grid.rij-mobiel { grid-template-columns: none; }
    /* De carrousel is geen leesbalk: elk item houdt zijn eigen hoogte. */
    .gallery-grid.rij-mobiel {
      grid-auto-rows: 230px; grid-template-rows: none; grid-template-columns: none;
    }
    .gallery-grid.rij-mobiel .gallery-tile.t1,
    .gallery-grid.rij-mobiel .gallery-tile.t6 { grid-row: auto; grid-column: auto; }
    /* In de carrousel zijn alle tegels even groot, dus ook de titels. */
    .gallery-grid.rij-mobiel .gallery-tile.t1 .ttl,
    .gallery-grid.rij-mobiel .gallery-tile.t6 .ttl { font-size: var(--t-md); }
    .werkwijze .steps.rij-mobiel {
      padding-left: var(--s-6); gap: var(--s-5);
      grid-template-columns: none; grid-auto-columns: 82%;
    }
    .werkwijze .steps.rij-mobiel::before {
      top: 6px; bottom: auto; left: 6px; right: var(--s-6);
      width: auto; height: 1px;
    }
    .werkwijze .steps.rij-mobiel .step { padding: var(--s-6) 0 0; }
    .werkwijze .steps.rij-mobiel .step::before { top: 0; left: 0; }
    .rij-hint {
      display: block;
      font-size: var(--t-2xs); letter-spacing: .12em; text-transform: uppercase;
      color: var(--ink-mute); margin-top: var(--s-3);
    }
    .reviews .rij-hint { color: var(--on-dark-mute); }
  }

}

/* 062-privacylaag.css */
/* De privacyverklaring als laag boven het offerteformulier (offerte-form.js bouwt de
   <dialog> bij de eerste klik op de link in het akkoord-vinkje). Zelfde scope als het
   formulier: alleen pagina's met een formulier krijgen hem. */
body.p-home,
body.p-content {

  &:has(.privacy-laag[open]) { overflow: hidden; }

  .privacy-laag {
    /* Geen eigen padding: de kinderen vullen de dialog, dus een klik op de dialog zelf
       is een klik op de achtergrond. */
    padding: 0;
    width: min(720px, calc(100% - 2 * var(--s-4)));
    max-height: min(85svh, 900px);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--paper);
    color: var(--ink);
    box-shadow: var(--elev);
    overflow: hidden;
  }
  .privacy-laag[open] { display: flex; flex-direction: column; }
  .privacy-laag::backdrop { background: rgba(31, 29, 25, .55); }

  .privacy-laag-kop {
    display: flex; align-items: center; justify-content: space-between; gap: var(--s-4);
    padding: var(--s-4) var(--s-6);
    border-bottom: 1px solid var(--line);
  }
  .privacy-laag-kop h2 { font-size: var(--t-lg); margin: 0; }
  .privacy-laag-sluit {
    flex: none;
    background: transparent;
    color: var(--ink);
    border: 1px solid var(--line-strong);
    border-radius: var(--r-pill);
    padding: var(--s-2) var(--s-4);
    font-family: inherit;
    font-size: var(--t-sm);
    cursor: pointer;
    transition: background .18s var(--ease), transform .1s var(--ease);
  }
  .privacy-laag-sluit:hover { background: var(--paper-warm); }
  .privacy-laag-sluit:active { transform: scale(.97); }

  .privacy-laag-tekst {
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: var(--s-5) var(--s-6) var(--s-6);
  }
  .privacy-laag-tekst .lede { color: var(--ink-soft); font-size: var(--t-base); margin: 0 0 var(--s-5); }
  .privacy-laag-tekst h3 {
    font-size: var(--t-md);
    margin: var(--s-6) 0 var(--s-3);
    padding-top: var(--s-5);
    border-top: 1px solid var(--line);
  }
  .privacy-laag-tekst p, .privacy-laag-tekst li { color: var(--ink-soft); font-size: var(--t-base); }
  .privacy-laag-tekst p { margin: 0 0 var(--s-4); }
  .privacy-laag-tekst ul { margin: 0 0 var(--s-4); padding-left: var(--s-5); }
  .privacy-laag-tekst li { margin-bottom: var(--s-2); }
  .privacy-laag-tekst a { color: var(--action-ink); }
  .privacy-laag-tekst .meta {
    margin: var(--s-6) 0 0;
    padding-top: var(--s-4);
    border-top: 1px solid var(--line);
    font-size: var(--t-sm);
    color: var(--ink-mute);
  }

  .privacy-laag-kop h2 { min-width: 0; }   /* anders duwt de titel de sluitknop uit de laag */

  @media (max-width: 600px) {
    .privacy-laag-kop { padding: var(--s-3) var(--s-4); }
    .privacy-laag-kop h2 { font-size: var(--t-md); }
    .privacy-laag-tekst { padding: var(--s-4) var(--s-4) var(--s-5); }
  }
  @media (prefers-reduced-motion: reduce) {
    .privacy-laag-sluit { transition: none; }
  }
}

/* 065-home-mobiel.css */
body.p-home {

  /* ============ MOBIELE ACTIEBALK ============ */
  .mobile-actions { display: none; }
  /* Onder 360px (Galaxy Fold en vergelijkbaar) passen de tweekoloms-rijtjes en
     de navigatieknop niet meer naast elkaar; daar mag niets horizontaal overlopen. */
  @media (max-width: 359px) {
    .container { padding: 0 var(--s-5); }
    .nav-inner { gap: var(--s-4); padding-left: var(--s-5); padding-right: var(--s-5); }
    .nav-cta { padding-left: var(--s-4); padding-right: var(--s-4); }
    .keurmerken { grid-template-columns: 1fr; }
    .pijler ul, .pijler-lead ul { columns: 1; }
    .hero-inner { padding-left: var(--s-5); padding-right: var(--s-5); }
    /* De carrouselranden volgen de smallere containerpadding, anders steken ze
       8px buiten het venster en scrollt de hele pagina horizontaal. */
    .rij-mobiel {
      margin-left: calc(-1 * var(--s-5));
      margin-right: calc(-1 * var(--s-5));
      padding-left: var(--s-5);
      padding-right: var(--s-5);
      scroll-padding-left: var(--s-5);
    }
    .werkwijze .steps.rij-mobiel { padding-left: var(--s-5); }
  }

  @media (max-width: 860px) {
    & { padding-bottom: 66px; }  /* de body zelf; genest zou 'body' hier niets matchen */
    .mobile-actions {
      position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
      display: grid; grid-template-columns: 1fr 1fr 1.2fr;
      gap: 1px;
      background: var(--line);
      border-top: 1px solid var(--line);
      box-shadow: 0 -6px 20px rgba(31,29,25,.08);
    }
    .mobile-actions a {
      background: var(--paper);
      padding: var(--s-4) var(--s-2);
      text-align: center;
      text-decoration: none;
      font-size: var(--t-sm);
      font-weight: 500;
      color: var(--ink);
      min-height: 52px;
      display: grid; place-items: center;
    }
    .mobile-actions a.primary { background: var(--action); color: var(--on-action); }
    .mobile-actions a:active { background: var(--paper-deep); }
    .mobile-actions a.primary:active { background: var(--action-hover); }
  }
  @media print { .mobile-actions { display: none; } }

  /* ============ FOOTER / CONTACT ============ */
  .footer { background: var(--ink); color: var(--on-dark); padding: var(--s-9) 0 var(--s-6); }
  .footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: var(--s-7); }
  .footer h4 {
    font-family: 'Geist', sans-serif;
    font-size: var(--t-2xs);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--on-dark-mute);
    font-weight: 500;
    margin-bottom: var(--s-4);
  }
  /* Typografisch woordmerk op donker — geen brightness-filter over een logo voor lichte grond. */
  .footer .ft-logo .display {
    font-family: 'Young Serif', Georgia, serif;
    font-size: var(--t-lg);
    line-height: 1.05;
    margin-bottom: var(--s-3);
    color: var(--on-dark);
  }
  .footer .ft-logo .display small {
    display: block;
    font-family: 'Geist', sans-serif;
    font-style: normal;
    font-size: var(--t-2xs);
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--on-dark-mute);
    margin-top: var(--s-2);
  }
  .footer .ft-logo p { color: var(--on-dark-soft); font-size: var(--t-sm); max-width: 280px; }
  .footer ul { list-style: none; padding: 0; margin: 0; }
  .footer ul li { padding: var(--s-1) 0; font-size: var(--t-sm); color: var(--on-dark-soft); }
  .footer ul li a { text-decoration: none; transition: color .16s var(--ease); }
  .footer ul li a:hover { color: var(--gold); }
  .footer h4 a { text-decoration: none; transition: color .16s var(--ease); }
  .footer h4 a:hover { color: var(--gold); }
  .footer .contact-line {
    font-size: var(--t-sm); padding: var(--s-1) 0; color: var(--on-dark-soft);
    display: flex; gap: var(--s-3); align-items: flex-start;
  }
  .footer .contact-line a { text-decoration: none; }
  .footer .contact-line a:hover { color: var(--gold); }
  .footer .contact-line .lk {
    color: var(--on-dark-mute); width: 46px; flex: 0 0 46px;
    font-size: var(--t-2xs); letter-spacing: .1em; text-transform: uppercase; padding-top: 2px;
  }
  .footer-bottom {
    margin-top: var(--s-8);
    padding-top: var(--s-5);
    border-top: 1px solid var(--on-dark-line);
    display: flex; justify-content: space-between; flex-wrap: wrap; gap: var(--s-4);
    font-size: var(--t-2xs);
    color: var(--on-dark-mute);
  }
  .footer h4.mt { margin-top: var(--s-5); }
  .footer-bottom a { text-decoration: none; margin-right: var(--s-4); }
  .footer-bottom a:hover { color: var(--gold); }
  @media (max-width: 1000px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
  @media (max-width: 600px) { .footer-grid { grid-template-columns: 1fr; } }

  /* Anker-offset volgt de werkelijke hoogte van de sticky nav. */
  :target, section[id], footer[id] { scroll-margin-top: 88px; }
}

/* 068-actie.css */
/* ============================================================
   WINTERSCHILDERACTIE — de seizoenslaag: de regel in de hero, de
   actiekaart (groot op de homepage, klein als zijblok op de
   binnenschilderpagina's) en het actievinkje in het formulier.
   Dezelfde tokens als de rest; oranje alleen op wat klikbaar is,
   het kortingscijfer is inkt in Young Serif, zoals het reviewcijfer.
   ============================================================ */
/* De actiestrip: één smalle regel bovenin de sticky kop, dus altijd in beeld zonder
   iets af te dekken. De hele strip is de link; de onderstreping in oranje zegt dat. */
body.p-home,
body.p-content,
body.p-tekst,
body.p-fout {
  .nav-actie {
    display: flex; justify-content: center; align-items: baseline; flex-wrap: wrap;
    gap: 0 var(--s-4);
    padding: var(--s-2) var(--s-5);
    background: var(--ink);
    color: var(--on-dark);
    font-size: var(--t-sm);
    line-height: 1.35;
    text-align: center;
    text-decoration: none;
  }
  .nav-actie-link {
    font-weight: 500; white-space: nowrap;
    border-bottom: 1px solid var(--action); padding-bottom: 1px;
    transition: color .16s var(--ease), border-color .16s var(--ease);
  }
  .nav-actie:hover .nav-actie-link { color: var(--on-dark-soft); border-bottom-color: var(--action-hover); }
  .nav-actie:focus-visible { outline-color: var(--gold); outline-offset: -3px; }
  /* De strip maakt de kop ~32px hoger; de ankers schuiven mee. */
  &:has(.nav-actie) :is(:target, section[id], footer[id]) { scroll-margin-top: 120px; }

  @media (max-width: 600px) {
    .nav-actie { font-size: var(--t-xs); gap: var(--s-2); flex-wrap: nowrap; padding-left: var(--s-4); padding-right: var(--s-4); }
    .nav-actie > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    /* Op een telefoon één regel: de einddatum en het woord 'Bekijk de actie' vallen weg, de pijl blijft. */
    .nav-actie-einde, .nav-actie-label { display: none; }
  }
}

body.p-home,
body.p-content {
  .actie { background: var(--paper); padding: 0 0 var(--s-9); }
  .actiekaart {
    display: grid; grid-template-columns: auto 1fr; gap: var(--s-8); align-items: start;
    background: var(--paper-warm);
    border: 1px solid var(--line-strong);
    border-radius: var(--r-md);
    padding: var(--s-8);
  }
  .actiekaart > * { min-width: 0; }
  .actie-cijfer {
    font-size: var(--display-l); line-height: .9; letter-spacing: -0.03em;
    color: var(--ink);
    font-variant-numeric: tabular-nums;
  }
  .actie-label {
    display: block;
    font-size: var(--t-2xs); letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--ink-mute);
    margin-bottom: var(--s-3);
  }
  .actiekaart h2 { font-size: var(--t-2xl); margin: 0 0 var(--s-4); max-width: 22ch; }
  .actiekaart h3 { font-size: var(--t-lg); margin: 0 0 var(--s-3); }
  .actiekaart p { color: var(--ink-soft); max-width: 60ch; margin: 0 0 var(--s-5); }
  .actiekaart ul {
    list-style: none; margin: 0 0 var(--s-6); padding: 0;
    display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-2) var(--s-6);
    font-size: var(--t-sm); color: var(--ink);
  }
  .actiekaart li { position: relative; padding-left: var(--s-5); }
  .actiekaart li::before { content: '✓'; position: absolute; left: 0; color: var(--action-ink); font-weight: 600; }
  .actie-acties { display: flex; flex-wrap: wrap; gap: var(--s-5); align-items: center; }
  .actie-acties .section-cta { margin-top: 0; }

  /* De kleine variant: één kolom onder het zijblok, zelfde ondergrond als dat blok. */
  .actiekaart-klein { grid-template-columns: 1fr; gap: var(--s-4); padding: var(--s-6); margin-top: var(--s-5); }
  .actiekaart-klein .actie-cijfer { font-size: var(--display-s); }
  .actiekaart-klein ul { grid-template-columns: 1fr; }
  .actiekaart-klein p { font-size: var(--t-sm); }
  .actiekaart-klein .actie-acties .btn { width: 100%; justify-content: center; }

  @media (max-width: 860px) {
    .actiekaart { grid-template-columns: 1fr; gap: var(--s-5); padding: var(--s-6); }
    .actiekaart ul { grid-template-columns: 1fr; }
  }
  @media (max-width: 600px) {
    .actiekaart h2 { font-size: var(--display-s); }
    .actie-acties .btn { width: 100%; justify-content: center; }
  }

  /* Het actievinkje: een eigen rij boven de verzendregel, één stap dieper dan de kaart. */
  .form-card .actie-vinkje {
    display: flex; gap: var(--s-3); align-items: flex-start;
    font-size: var(--t-sm); color: var(--ink);
    padding: var(--s-4);
    margin-bottom: var(--s-5);
    background: var(--paper-warm);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    cursor: pointer;
  }
  .form-card .actie-vinkje input { accent-color: var(--action); margin: 3px 0 0; width: 16px; height: 16px; flex: none; }
}

body.p-home {
  /* De regel onder de trustregel in de hero: één zin, één tekstlink naar de kaart. */
  .hero-actie {
    margin: var(--s-4) 0 0;
    font-size: var(--t-sm);
    color: var(--on-dark);
    text-shadow: 0 1px 10px rgba(31,29,25,.55);
  }
  .hero-actie a {
    color: var(--on-dark); font-weight: 500; text-decoration: none;
    border-bottom: 1px solid var(--action); padding-bottom: 1px;
    margin-left: var(--s-2); white-space: nowrap;
    transition: color .16s var(--ease), border-color .16s var(--ease);
  }
  .hero-actie a:hover { color: var(--on-dark-soft); border-bottom-color: var(--action-hover); }
}

/* 070-content-en-tekst.css */
/* ============================================================
   JURIDISCHE PAGINA
   ============================================================ */
/* ============================================================
   CONTENTPAGINA'S (schilder-mappen) — kruimelpad, paginakop,
   tekstblokken, zijblok en klantcitaat. Knoppen, secties, footer
   en actiebalk komen uit de subpagina-basis; het offerteformulier
   en de FAQ uit het gedeelde blok met de homepage hierboven.
   ============================================================ */
body.p-content {
  .kruimelpad { padding: var(--s-5) 0 0; font-size: var(--t-xs); color: var(--ink-mute); }
  .kruimelpad a { color: inherit; text-decoration: none; }
  .kruimelpad a:hover { color: var(--ink); text-decoration: underline; }

  .paginakop { padding: var(--s-7) 0 var(--s-8); }
  /* Met een foto wordt de kop twee kolommen: tekst links, het werk rechts. */
  .paginakop .kop-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: var(--s-8); align-items: center; }
  .paginakop .kopfoto { margin: 0; }
  .paginakop .kopfoto img {
    display: block; width: 100%; height: auto;
    aspect-ratio: 4 / 3; object-fit: cover;
    border-radius: var(--r-md);
  }
  @media (max-width: 860px) { .paginakop .kop-grid { grid-template-columns: 1fr; gap: var(--s-6); } }
  .paginakop h1 { font-size: var(--display-m); max-width: 22ch; margin: var(--s-4) 0 var(--s-5); }
  .paginakop .lede { font-size: var(--t-md); color: var(--ink-soft); max-width: 640px; margin: 0; }
  .paginakop .acties { display: flex; flex-wrap: wrap; gap: var(--s-4); margin-top: var(--s-6); }
  /* De ghost-knop is ontworpen voor donkere secties; op crème de inkt-variant. */
  .paginakop .btn-ghost { background: transparent; color: var(--ink); border-color: var(--line-strong); }
  .paginakop .btn-ghost:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }
  .paginakop .btn-ghost .lbl { color: var(--ink-mute); opacity: 1; }
  .paginakop .btn-ghost:hover .lbl { color: var(--on-dark-mute); }
  @media (max-width: 600px) { .paginakop .acties .btn { width: 100%; justify-content: center; } }

  /* Het persoonsblok: het portret van de eigenaar naast een korte levensloop. Staat op
     --paper-warm omdat de foto daar met dezelfde kleur op is gezet: de uitsnede loopt
     zo naadloos in de sectie over, zonder witte doos eromheen. Vandaar ook geen kader
     of radius op de img — die zouden de rand juist weer zichtbaar maken. */
  .persoon { background: var(--paper-warm); border-top: 1px solid var(--line); padding: var(--s-8) 0; }
  .persoon .container { display: grid; grid-template-columns: 320px 1fr; gap: var(--s-8); align-items: center; }
  .persoon .portret { margin: 0; }
  .persoon .portret img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; }
  .persoon .kopje {
    font-size: var(--t-2xs);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-mute);
    font-weight: 500;
  }
  .persoon h2 { font-size: var(--t-2xl); margin: var(--s-3) 0 var(--s-5); }
  .persoon p { color: var(--ink-soft); max-width: 60ch; margin: 0 0 var(--s-4); }
  .persoon p:last-child { margin-bottom: 0; }
  @media (max-width: 860px) {
    .persoon .container { grid-template-columns: 1fr; gap: var(--s-6); justify-items: start; }
    .persoon .portret { max-width: 240px; }
  }
  @media (max-width: 600px) { .persoon h2 { font-size: var(--display-s); } }

  .tekstblok { padding: var(--s-8) 0; border-top: 1px solid var(--line); }
  .tekstblok h2 { font-size: var(--t-2xl); margin-bottom: var(--s-5); max-width: 26ch; }
  .tekstblok h3 { font-size: var(--t-md); margin: var(--s-6) 0 var(--s-3); }
  .tekstblok p { color: var(--ink-soft); max-width: 68ch; margin: 0 0 var(--s-4); }
  .tekstblok ul { color: var(--ink-soft); max-width: 68ch; margin: 0 0 var(--s-4); padding-left: var(--s-5); }
  .tekstblok li { margin-bottom: var(--s-2); }
  .tekstblok p a, .tekstblok li a { color: var(--action-ink); }

  /* Twee kolommen op ruime schermen: lopende tekst + een zijblok. */
  .kolommen { display: grid; grid-template-columns: 1.6fr 1fr; gap: var(--s-8); align-items: start; }
  .kolommen > * { min-width: 0; }   /* een lang woord in de h2 mag de kolom niet openduwen */
  @media (max-width: 860px) { .kolommen { grid-template-columns: 1fr; gap: var(--s-6); } }
  /* "badkamerrenovatie" op 42px is breder dan een telefoon: de h2 een stap terug. */
  @media (max-width: 600px) { .tekstblok h2 { font-size: var(--display-s); } }
  .zijblok {
    background: var(--paper-warm);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    padding: var(--s-6);
    font-size: var(--t-sm);
    color: var(--ink-soft);
  }
  .zijblok .kopje {
    font-size: var(--t-2xs);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-mute);
    font-weight: 500;
    margin-bottom: var(--s-3);
  }
  .zijblok ul { list-style: none; margin: 0; padding: 0; }
  .zijblok li { padding: var(--s-2) 0; border-bottom: 1px solid var(--line); }
  .zijblok li:last-child { border-bottom: none; }
  .zijblok a { color: var(--action-ink); }

  /* De tweede projectfoto, boven het zijblok; de bronnen zijn 900 px breed, dus de
     smalle kolom is de plek waar ze scherp blijven. */
  .zijkolom { display: grid; gap: var(--s-5); }
  .zijfoto { margin: 0; }
  /* Een staande foto (de flat in de steiger) mag de kolom niet domineren: afkappen op 560px. */
  .zijfoto img { display: block; width: 100%; height: auto; max-height: 560px; object-fit: cover; border-radius: var(--r-md); }

  /* Citaat van een klant: andermans woorden, dus visueel een eigen kaart. */
  .citaat {
    background: var(--paper-warm);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    padding: var(--s-6) var(--s-6) var(--s-5);
    max-width: 640px;
    margin: var(--s-6) 0 0;
  }
  .citaat blockquote { margin: 0 0 var(--s-4); color: var(--ink); }
  .citaat .wie { font-size: var(--t-xs); color: var(--ink-mute); }
  .tekstblok .na-citaat { margin-top: var(--s-6); }  /* wint van de margin-shorthand op .tekstblok p */
}

body.p-tekst {
  /* ============ JURIDISCHE PAGINA ============ */
  .legal { background: var(--paper); padding: var(--s-10) 0 var(--s-9); }
  .legal .inner { max-width: 68ch; }

  .legal h1 { font-size: var(--display-m); margin-bottom: var(--s-5); max-width: 20ch; }
  .legal .lede { color: var(--ink-soft); font-size: var(--t-md); margin: 0 0 var(--s-7); }
  .legal h2 {
    font-size: var(--t-lg);
    margin: var(--s-8) 0 var(--s-3);
    padding-top: var(--s-6);
    border-top: 1px solid var(--line);
  }
  .legal h2:first-of-type { border-top: none; padding-top: 0; }
  .legal p, .legal li { color: var(--ink-soft); font-size: var(--t-base); }
  .legal p { margin: 0 0 var(--s-4); }
  .legal ul { margin: 0 0 var(--s-4); padding-left: var(--s-5); }
  .legal li { margin-bottom: var(--s-2); }
  .legal a { color: var(--action-ink); }
  .legal .meta {
    margin-top: var(--s-8);
    padding-top: var(--s-5);
    border-top: 1px solid var(--line);
    font-size: var(--t-sm);
    color: var(--ink-mute);
  }
  @media (max-width: 600px) { .legal { padding: var(--s-9) 0 var(--s-8); } }
}

/* 080-fout.css */
/* ============================================================
   FOUTPAGINA
   ============================================================ */
body.p-fout {
  /* ============ FOUTPAGINA ============ */
  .fout {
    background: var(--paper);
    padding: var(--s-11) 0 var(--s-10);
    min-height: 58vh;
    display: flex; align-items: center;
  }
  .fout .code {
    font-family: 'Young Serif', Georgia, serif;
    font-size: var(--t-md);
    color: var(--ink-mute);
    margin-bottom: var(--s-4);
  }
  .fout h1 { font-size: var(--display-m); margin-bottom: var(--s-5); max-width: 18ch; }
  .fout p { color: var(--ink-soft); font-size: var(--t-md); max-width: 56ch; margin: 0 0 var(--s-4); }
  .fout .fout-actions { display: flex; flex-wrap: wrap; gap: var(--s-4); margin-top: var(--s-7); }
  /* De ghost-knop is ontworpen voor donkere secties; op crème krijgt hij de inkt-variant. */
  .fout .btn-ghost { background: transparent; color: var(--ink); border-color: var(--line-strong); }
  .fout .btn-ghost:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }
  .fout .btn-ghost .lbl { color: var(--ink-mute); opacity: 1; }
  .fout .btn-ghost:hover .lbl { color: var(--on-dark-mute); }
  .fout .fout-links {
    margin-top: var(--s-8);
    padding-top: var(--s-5);
    border-top: 1px solid var(--line);
    display: flex; flex-wrap: wrap; gap: var(--s-6);
    font-size: var(--t-sm);
  }
  .fout .fout-links a { color: var(--ink-soft); text-decoration: none; }
  .fout .fout-links a:hover { color: var(--action-ink); }
  @media (max-width: 600px) {
    .fout { padding: var(--s-9) 0 var(--s-8); }
    .fout .fout-actions .btn { width: 100%; justify-content: center; }
  }
}

