/* ===== EIGEN LETTERTYPES (niets gaat naar Google) ===== */
  /* woff2 staat vooraan en woff erachter als terugval. woff2 is een kwart
     kleiner bij exact hetzelfde lettertype - samen scheelt dat ruim 50 kB
     op het eerste bezoek. Elke browser die woff2 kent, neemt die; een heel
     oude browser leest gewoon door naar de tweede regel. */
  @font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;
    src:url('../fonts/inter-400.woff2') format('woff2'),
        url('../fonts/inter-400.woff') format('woff');}
  @font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;
    src:url('../fonts/inter-500.woff2') format('woff2'),
        url('../fonts/inter-500.woff') format('woff');}
  @font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;
    src:url('../fonts/inter-600.woff2') format('woff2'),
        url('../fonts/inter-600.woff') format('woff');}
  @font-face{font-family:'Space Grotesk';font-style:normal;font-weight:400;font-display:swap;
    src:url('../fonts/spacegrotesk-400.woff2') format('woff2'),
        url('../fonts/spacegrotesk-400.woff') format('woff');}
  @font-face{font-family:'Space Grotesk';font-style:normal;font-weight:500;font-display:swap;
    src:url('../fonts/spacegrotesk-500.woff2') format('woff2'),
        url('../fonts/spacegrotesk-500.woff') format('woff');}
  @font-face{font-family:'Space Grotesk';font-style:normal;font-weight:600;font-display:swap;
    src:url('../fonts/spacegrotesk-600.woff2') format('woff2'),
        url('../fonts/spacegrotesk-600.woff') format('woff');}
  @font-face{font-family:'Space Grotesk';font-style:normal;font-weight:700;font-display:swap;
    src:url('../fonts/spacegrotesk-700.woff2') format('woff2'),
        url('../fonts/spacegrotesk-700.woff') format('woff');}
  @font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;
    src:url('../fonts/jetbrainsmono-400.woff2') format('woff2'),
        url('../fonts/jetbrainsmono-400.woff') format('woff');}
  @font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;
    src:url('../fonts/jetbrainsmono-500.woff2') format('woff2'),
        url('../fonts/jetbrainsmono-500.woff') format('woff');}

  :root{
    --ink:#010928;      /* logo shadow-navy */
    --deep:#092249;      /* logo blue, darkened for panels */
    --panel:#0C2C57;
    /* Het logoblauw (#0A59CE) opgehelderd voor op de donkere grond. Reken je
       het logoblauw op de helderheid die daar nodig is, dan kom je exact hier
       uit. Het logoblauw zelf haalt op donkerblauw maar 2,5 en dat is te
       weinig om een randje te zien; dit haalt 3,4. */
    --accent:#166DF4;
    /* Hetzelfde blauw, maar donkerder: voor KLEINE TEKST op een lichte
       achtergrond. Het heldere blauw haalt daar maar 3,9 tot 4,3 op 1, en
       WCAG vraagt 4,5. Dit haalt overal minstens 5,1. */
    /* Het logoblauw zelf, voor tekst en knoppen op een lichte achtergrond.
       --accent hierboven is datzelfde blauw, opgehelderd voor op donker. */
    --accent-tekst:#0A59CE;
    --accent-soft:#9FBFEF;
    --frost:#5C93E0;     /* logo blue, lightened — used for airco motion (no teal/cyan) */
    /* Het goud uit de vector van het logo, exact. Stond hiervoor op #F09506;
       dat was donkerder dan het logo en dan het drukwerk. Dit haalt op de
       donkere grond 9,1 waar het oude 6,7 haalde. */
    --gold:#FDBA00;
    --gold-soft:#FFD24A;
    /* Goud als TEKST op een lichte achtergrond. Het gewone goud haalt daar
       2,3 en dat is onleesbaar; dit haalt 6,4. Zelfde kleur, donkerder
       gemaakt - net zoals de drukker een andere inktwaarde gebruikt. */
    --gold-donker:#8A5202;
    /* Het geel uit de vector van het logo, exact. */
    --yellow:#F6EB25;
    --paper:#F5F7FB;
    --paper-dim:#E7ECF5;
    --slate:#54627A;
    --line:rgba(255,255,255,0.12);
    --line-dark:rgba(10,26,48,0.10);
  }
  *{box-sizing:border-box;}
  /* NL/EN-tekst heeft niet exact dezelfde lengte, waardoor de pagina net over/onder de grens komt
     waar een verticale scrollbalk nodig is - die balk erbij/eraf laten springen schuift dan de hele
     pagina een stukje links/rechts. Scrollbalk-ruimte altijd reserveren voorkomt die sprong. */
  html{scroll-behavior:smooth;scrollbar-gutter:stable;overflow-y:scroll;}
  body{margin:0;background:var(--paper);color:var(--ink);font-family:'Inter',sans-serif;-webkit-font-smoothing:antialiased;}
  h1,h2,h3{font-family:'Space Grotesk',sans-serif;margin:0;letter-spacing:-0.01em;}
  .mono{font-family:'JetBrains Mono',monospace;letter-spacing:0.02em;}
  a{color:inherit;text-decoration:none;}
  /* Links midden in een tekst moeten er ook uitzien als een link */
  .qf-hint a, .faq-a a, .desc a, .sd-lead a, .rz-intro a, .legal-panel p a, .tekstlink{
    color:var(--accent-tekst);font-weight:600;text-decoration:underline;
    text-decoration-thickness:1.5px;text-underline-offset:2.5px;
    text-decoration-color:rgba(22,109,244,0.45);
    transition:color .15s ease, text-decoration-color .15s ease;}
  .qf-hint a:hover, .faq-a a:hover, .desc a:hover, .sd-lead a:hover, .rz-intro a:hover,
  .legal-panel p a:hover, .tekstlink:hover{
    color:#0B4FBF;text-decoration-color:currentColor;text-decoration-thickness:2px;}
  .qf-hint a:focus-visible, .faq-a a:focus-visible, .desc a:focus-visible,
  .legal-panel p a:focus-visible, .tekstlink:focus-visible{
    outline:2px solid var(--accent);outline-offset:2px;border-radius:3px;}
  .wrap{max-width:1160px;margin:0 auto;padding:0 32px;}
  section{padding:96px 0;}
  @media(max-width:640px){ section{padding:64px 0;} .wrap{padding:0 20px;} }

  /* ===== HEADER ===== */
  header{position:sticky;top:0;z-index:50;background:rgba(10,26,48,0.92);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);}
  .headbar{max-width:1160px;margin:0 auto;padding:4px 32px;display:flex;align-items:center;justify-content:space-between;}
  .logo{display:flex;align-items:center;gap:10px;color:#fff;flex-shrink:0;}
  /* Compacte tussenruimte in de nav (i.p.v. de vroegere 20px) zodat de volledige navigatie + een
     goed leesbaar logo samen in de 1160px kopbalk passen zonder dat één van beide ineenschrompelt. */
  nav{display:flex;align-items:center;gap:8px;}
  nav a.navlink{color:var(--accent-soft);font-size:13px;font-weight:500;}
  nav a.navlink:hover{color:#fff;}

  /* ===== Tweede rij: het hoofdmenu =====
     Stond vroeger samen met het telefoonnummer op één regel rechts van het
     logo, waar het klein en gedrongen oogde. Nu staat het op een eigen regel
     eronder, groter, en verdeeld over driekwart van de balk. */
  /* Geen scheidingslijn: de menurij is gewoon een tikje donkerder dan de rij erboven.
     Dat geeft rust - je ziet dat het twee rijen zijn zonder dat er een streep staat. */
  .hoofdnav{background:rgba(0,0,0,0.18);}
  .hoofdnav-binnen{max-width:1160px;margin:0 auto;display:flex;
    align-items:center;justify-content:center;gap:38px;padding:9px 32px;}
  .hoofdnav a.navlink{color:var(--accent-soft);font-size:16px;font-weight:500;
    letter-spacing:0.01em;padding:6px 16px;border-radius:999px;position:relative;
    transition:color .16s ease, background .16s ease;}
  .hoofdnav a.navlink:hover{color:#fff;background:rgba(255,255,255,0.05);}
  /* De pagina waar u nu bent, licht zachtjes op in de blauwtinten van de site zelf. */
  .hoofdnav a.navlink.hier{color:#fff;background:rgba(255,255,255,0.09);}
  .call-pill{display:flex;align-items:center;gap:8px;color:#fff;font-family:'JetBrains Mono',monospace;font-size:13px;border:1px solid var(--line);border-radius:999px;padding:8px 11px;transition:border-color .18s ease, background .18s ease;}
  .call-pill:hover{border-color:var(--accent);background:rgba(255,255,255,0.06);}
  .call-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--gold);flex:none;box-shadow:0 0 0 3px rgba(242,169,59,0.25);transition:box-shadow .18s ease;}
  .call-pill:hover .dot{box-shadow:0 0 0 4px rgba(242,169,59,0.4);}
  .taal-switch{display:flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:999px;padding:4px;font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:600;flex:none;}
  .taal-switch a{color:var(--accent-soft);padding:4px 9px;border-radius:999px;letter-spacing:0.5px;}
  .taal-switch a.actief{background:var(--gold);color:#241300;}
  .taal-switch a:hover:not(.actief){color:#fff;}
  .mobile-nav .taal-switch{margin:14px 24px 4px;align-self:flex-start;}
  /* WAAR STAAT DE TAALKIEZER: IN DE BALK OF IN HET MENU?

     Op een gsm paste de kopbalk niet. Gemeten op 13 september 2026: logo +
     telefoonpil + NL EN FR (95 px) + hamburger vroegen samen meer dan het scherm
     breed is, en dus schoof ELKE bladzijde zijwaarts - 37 px te breed op 320,
     33 op 360, 18 op 375. Onder de 430 px staat de taalkiezer daarom in het
     hamburgermenu; daarboven gewoon in de balk zoals altijd.

     Stephen koos dat boven een krappere balk of een balk over twee regels: je
     kiest je taal een keer, de rest van de balk gebruik je elke keer. */
  .mobile-nav .taal-switch{display:none;}
  @media(max-width:430px){
    .headbar .taal-switch{display:none;}
    .mobile-nav .taal-switch{display:flex;}
  }
  /* 44 bij 44 pixels: dat is de maat waarop een duim betrouwbaar raakt. De streepjes
     blijven even breed als vroeger, alleen het aanraakvlak eromheen is groter. */
  .hamburger{display:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;
    width:44px;height:44px;background:none;border:none;cursor:pointer;padding:0;
    border-radius:10px;-webkit-tap-highlight-color:transparent;
    transition:background .15s ease;}
  .hamburger span{width:24px;}
  .hamburger:active{background:rgba(255,255,255,0.12);}
  .hamburger:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
  .hamburger span{display:block;width:24px;height:2px;background:#fff;border-radius:2px;transition:transform .2s ease, opacity .2s ease;}
  .hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
  .hamburger.open span:nth-child(2){opacity:0;}
  .hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
  .mobile-nav{display:none;flex-direction:column;background:var(--deep);border-top:1px solid var(--line);visibility:hidden;
    max-height:0;overflow:hidden;transition:max-height .3s ease;}
  .mobile-nav.open{max-height:420px;visibility:visible;}
  .mobile-nav a{padding:14px 24px;color:var(--accent-soft);font-size:15px;border-bottom:1px solid rgba(255,255,255,0.06);}
  .mobile-nav a:hover{color:#fff;}
  /* Nu het hoofdmenu op een eigen regel staat, moet het niet meer vechten om plaats met het logo.
     Daardoor kan het hamburgermenu later inschakelen dan vroeger (900 in plaats van 1150px) en
     zien meer bezoekers het volledige menu. In de bovenste regel staan enkel nog het logo, de
     twee contactknoppen en de taalkeuze; die passen ruim binnen 900px. */
  @media(max-width:900px){
    nav a.navlink{display:none;}
    .hoofdnav{display:none;}
    .hamburger{display:flex;}
    .mobile-nav{display:flex;}
  }
  /* Het mailadres verdwijnt uit de balk zodra ze anders te breed wordt. Dat stond op
     760 px, en precies daardoor schoof een iPad in portret (768 px) nog 14 px
     zijwaarts: op 768 stond de mailpil er nog wel, en samen met logo, telefoonpil,
     sociale iconen en de taalkiezer paste dat niet. 820 px is de eerste waarde
     waarbij 768 er netjes onder valt en 834 (iPad Air) er nog boven blijft.
     Het mailadres staat dan gewoon in het hamburgermenu. */
  @media(max-width:820px){ .call-pill[href^='mailto']{display:none;} }

  /* ===== Het eerlijke cookiebericht =====
     Groter en midden op het scherm, maar het BLOKKEERT NIETS: de laag eromheen
     staat op pointer-events:none en alleen de kaart zelf vangt kliks. Zo kan de
     bezoeker gewoon verder lezen en scrollen. Het is geen toestemmingsvenster,
     want de site volgt niemand - er valt niets te kiezen. */
  .cookieregel{position:fixed;inset:0;z-index:950;
    display:flex;align-items:center;justify-content:center;padding:20px;
    pointer-events:none;
    background:rgba(3,10,26,0.52);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
    opacity:0;transition:opacity .3s ease;}
  .cookieregel.tonen{opacity:1;}
  .cookieregel-kaart{pointer-events:auto;position:relative;
    width:100%;max-width:520px;max-height:calc(100vh - 40px);overflow-y:auto;
    background:#0B2249;border:1px solid var(--line);border-radius:18px;
    padding:30px 32px 24px;box-shadow:0 26px 70px rgba(3,10,26,0.55);
    color:#D3E0F5;font-size:15px;line-height:1.62;
    transform:translateY(16px) scale(.985);
    transition:transform .3s cubic-bezier(.22,.8,.28,1);}
  .cookieregel.tonen .cookieregel-kaart{transform:none;}
  .cookieregel-titel{font-family:'Space Grotesk',sans-serif;font-size:22px;line-height:1.25;
    letter-spacing:-0.01em;color:#fff;font-weight:600;margin:0 44px 12px 0;}
  .cookieregel-tekst{margin:0 0 18px;}
  .cookieregel-kaart a{color:var(--gold-soft);text-decoration:underline;
    text-decoration-color:rgba(249,204,134,0.45);text-underline-offset:3px;}
  .cookieregel-kaart a:hover{text-decoration-color:currentColor;}
  .cookieregel-rij{display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;}
  .cookieregel-ok{flex:none;background:var(--gold);color:#231402;border:0;
    font:600 15px/1 'Inter',sans-serif;cursor:pointer;
    padding:14px 26px;border-radius:11px;min-height:48px;
    transition:background .18s ease, transform .18s ease;}
  .cookieregel-ok:hover{background:#FFA81F;}
  .cookieregel-ok:active{transform:translateY(1px);}
  .cookieregel-sluit{position:absolute;top:10px;right:10px;
    width:44px;height:44px;display:flex;align-items:center;justify-content:center;
    background:none;border:0;color:var(--accent-soft);font-size:26px;line-height:1;
    cursor:pointer;border-radius:10px;}
  .cookieregel-sluit:hover{color:#fff;background:rgba(255,255,255,0.07);}
  .cookieregel-ok:focus-visible,.cookieregel-sluit:focus-visible,
  .cookieregel-kaart a:focus-visible{outline:2px solid var(--accent-soft);outline-offset:3px;}
  @media(max-width:520px){
    .cookieregel{padding:16px;}
    .cookieregel-kaart{padding:26px 22px 20px;font-size:14.5px;}
    .cookieregel-titel{font-size:19.5px;margin-right:40px;}
    .cookieregel-ok{width:100%;}
  }
  @media(prefers-reduced-motion:reduce){
    .cookieregel{transition:none;}
    .cookieregel-kaart{transition:none;transform:none;}
  }

  /* ===== HERO ===== */
  .hero{background:radial-gradient(1100px 500px at 15% -10%, #16345F 0%, var(--ink) 55%);color:#fff;padding:88px 0 40px;position:relative;overflow:hidden;}
  .hero-grid{display:grid;grid-template-columns:1.05fr 0.95fr;gap:56px;align-items:center;}
  @media(max-width:900px){ .hero-grid{grid-template-columns:1fr;} }
  .eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--gold-soft);border:1px solid rgba(242,169,59,0.35);border-radius:999px;padding:6px 14px;margin-bottom:22px;}
  .hero h1{font-size:44px;font-weight:700;line-height:1.1;color:#fff;}
  .hero h1 em{font-style:normal;color:var(--frost);}
  .hero p.lead{font-size:17px;color:#C9D8ED;line-height:1.6;margin:22px 0 32px;max-width:480px;}
  .btnrow{display:flex;gap:14px;flex-wrap:wrap;}
  .btn{display:inline-flex;align-items:center;gap:8px;padding:14px 24px;border-radius:10px;font-weight:600;font-size:15px;border:1px solid transparent;cursor:pointer;}
  .btn-gold{background:var(--gold);color:#241300;}
  .btn-gold:hover{background:var(--gold-soft);}
  .btn-outline{border-color:rgba(255,255,255,0.3);color:#fff;}
  .btn-outline:hover{border-color:#fff;background:rgba(255,255,255,0.06);}
  /* .btn-outline-dark is de variant voor een LICHTE achtergrond. Die werd
     gebruikt in 404.php en in deel/inhoud/gemeente.php - dus op de 19
     gemeentepagina's plus de foutpagina, 20 in totaal - maar bestond niet in
     de CSS. Gevolg: .btn gaf border:1px solid transparent en geen kleuren, en
     de belknop stond daar als kale tekst naast de gouden knop.
     De rand #74889F haalt 3,1:1 tegen wit, dus boven de 3:1 die WCAG voor
     bedieningselementen vraagt. */
  .btn-outline-dark{border-color:#74889F;color:var(--accent-tekst);background:#fff;}
  .btn-outline-dark:hover{border-color:var(--accent);background:var(--paper-dim);}

  /* ===== SIGNATURE: interactive koelen/verwarmen unit ===== */
  .unit-demo{position:relative;height:440px;border-radius:20px;overflow:hidden;
    background:radial-gradient(120% 120% at 30% 20%, #0E2E63 0%, #06152F 70%);
    border:1px solid var(--line);transition:background 0.8s ease;}
  .unit-demo.mode-heat{background:radial-gradient(120% 120% at 30% 20%, #4A2A0E 0%, #251206 70%);}
  .unit-demo .particles{position:absolute;inset:0;overflow:hidden;}
  .particle{position:absolute;border-radius:50%;opacity:0;}
  .unit-demo.mode-cool .particle{background:var(--accent-soft);animation:fall linear infinite;}
  .unit-demo.mode-heat .particle{background:var(--gold-soft);animation:rise linear infinite;}
  @keyframes fall{ 0%{transform:translateY(-10%);opacity:0;} 10%{opacity:0.85;} 100%{transform:translateY(480px);opacity:0;} }
  @keyframes rise{ 0%{transform:translateY(10%);opacity:0;} 12%{opacity:0.85;} 100%{transform:translateY(-480px);opacity:0;} }

  .ac-unit{position:absolute;left:50%;top:56px;transform:translateX(-50%);width:340px;z-index:3;}
  .unit-photo{-webkit-mask-image:radial-gradient(ellipse 62% 70% at center, #000 62%, transparent 100%);
    mask-image:radial-gradient(ellipse 62% 70% at center, #000 62%, transparent 100%);}
  .unit-photo{width:100%;height:auto;display:block;position:relative;z-index:2;}
  .ac-unit .flow-svg{position:absolute;left:0;top:0;width:100%;height:270px;z-index:1;overflow:visible;}
  @media(max-width:640px){
    .hero p.lead{font-size:15.5px;max-width:100%;}
    .unit-demo{height:340px;}
    .ac-unit{width:75%;top:36px;}
    .ac-unit .flow-svg{height:210px;}
    .btnrow .btn{flex:1 1 auto;justify-content:center;}
  }
  .flow-line{fill:none;stroke-width:2.4;stroke-linecap:round;opacity:0;stroke-dasharray:10 14;}
  .unit-demo.mode-cool .flow-line{stroke:var(--accent-soft);animation:flowcool 2.4s linear infinite;opacity:0.75;}
  .unit-demo.mode-heat .flow-line{stroke:var(--gold-soft);animation:flowheat 2.4s linear infinite;opacity:0.75;}
  .flow-line.f2,.flow-line.f4{animation-delay:-0.6s;}
  .flow-line.f3{animation-delay:-1.2s;}
  @keyframes flowcool{ from{stroke-dashoffset:48;} to{stroke-dashoffset:0;} }
  @keyframes flowheat{ from{stroke-dashoffset:0;} to{stroke-dashoffset:-48;} }
  .unit-label{position:absolute;left:50%;bottom:112px;transform:translateX(-50%);z-index:3;
    font-family:'JetBrains Mono',monospace;font-size:12.5px;color:#DCE7F6;text-align:center;
    letter-spacing:0.04em;transition:color 0.5s ease;}
  .unit-demo.mode-heat .unit-label{color:#FBE3BF;}
  .unit-label b{display:block;font-family:'Space Grotesk',sans-serif;font-size:18px;color:#fff;margin-top:2px;}

  .mode-toggle{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:4;
    display:flex;gap:6px;background:rgba(0,0,0,0.25);border:1px solid rgba(255,255,255,0.15);
    border-radius:999px;padding:5px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
  .mode-btn{font-family:'JetBrains Mono',monospace;font-size:13px;padding:9px 18px;border-radius:999px;
    border:none;cursor:pointer;background:transparent;color:#B9CFEC;transition:all 0.25s ease;}
  .mode-btn.active.cool{background:var(--accent);color:#fff;}
  .mode-btn.active.heat{background:var(--gold);color:#241300;}

  .node-circle{fill:var(--deep);stroke:var(--accent-soft);stroke-width:1.4;}
  .node-label{font-family:'JetBrains Mono',monospace;font-size:11px;fill:#B9CFEC;}

  .stat-strip{border-top:1px solid var(--line);margin-top:56px;padding-top:28px;display:flex;gap:0;flex-wrap:wrap;}
  .stat{flex:1;min-width:140px;padding-right:24px;}
  .stat .num{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:26px;color:#fff;}
  .stat .lbl{font-size:12.5px;color:#94A9C7;margin-top:4px;font-family:'JetBrains Mono',monospace;}

  /* ===== INTRO ===== */
  .intro{background:var(--paper);}
  /* Drie velden in twee kolommen:
       links  rij 1-2 : de foto, over allebei de rijen
       rechts rij 1   : de titel
       rechts rij 2   : de tekst en de erkenningen
     Zo dragen beide kolommen ongeveer evenveel en eindigen ze samen. Stonden
     titel en foto samen links, dan was die kolom 808 px en de tekst rechts
     554 - 254 px leegte, en het blok eindigde scheef. */
  .intro-grid{display:grid;grid-template-columns:0.92fr 1.08fr;gap:24px 60px;
    align-items:start;}
  .intro-foto{grid-column:1;grid-row:1 / span 2;}
  .intro-titel{grid-column:2;grid-row:1;margin:0;}
  .intro-body{grid-column:2;grid-row:2;}
  .intro-foto .creds-box{margin-top:0;}

  /* Op een smal scherm valt alles onder elkaar, in de volgorde
     titel - foto - tekst - erkenningen: eerst waar het over gaat, dan wie
     het doet, dan het verhaal. */
  @media(max-width:860px){
    .intro-grid{grid-template-columns:1fr;gap:0;}
    .intro-titel,.intro-body,.intro-foto{grid-column:1;grid-row:auto;}
    .intro-titel{order:1;}
    .intro-foto{order:2;}
    .intro-body{order:3;margin-top:26px;}
    .intro-foto .creds-box{margin-top:22px;}
  }
  .kicker{font-weight:inherit;font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--accent-tekst);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:14px;display:block;}
  .intro h2{font-size:32px;font-weight:700;color:var(--ink);line-height:1.18;}
  .intro-body p{font-size:16px;line-height:1.75;color:var(--slate);margin:0 0 16px;}
  .intro-body strong{color:var(--ink);}

  /* ===== SERVICES OVERVIEW ===== */
  .services{background:var(--ink);color:#fff;}
  .sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:48px;flex-wrap:wrap;}
  .sec-head h2{font-size:32px;color:#fff;}
  .sec-head p{color:#9FB2D1;font-size:15px;max-width:360px;margin:0;}
  .sec-head-onder{display:block;margin-bottom:40px;}
  .sec-head-onder p{max-width:560px;margin-top:12px;}
  .service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
  @media(max-width:860px){ .service-grid{grid-template-columns:1fr;} }
  .scard{background:var(--deep);border:1px solid var(--line);border-radius:16px;padding:32px 28px;transition:transform .25s ease, border-color .25s ease;text-align:left;display:block;}
  .scard:hover{transform:translateY(-4px);border-color:var(--accent);}
  .scard .icon{width:46px;height:46px;margin-bottom:22px;}
  .scard h3{color:#fff;font-size:20px;margin-bottom:12px;}
  .scard p{color:#AFC1DD;font-size:14.5px;line-height:1.65;margin:0 0 18px;}
  .scard .tag{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--gold-soft);border:1px solid rgba(242,169,59,0.3);border-radius:999px;padding:4px 12px;display:inline-block;}
  .scard .go{font-size:13px;color:var(--frost);font-weight:600;}

  /* ===== SUB-PAGE STYLE SECTIONS (Airco / Elektriciteit / Laadpalen) ===== */
  .subpage{position:relative;overflow:hidden;}
  .subpage .wrap{position:relative;z-index:2;}
  .subpage-head{display:flex;align-items:center;gap:16px;margin-bottom:10px;}
  .subpage-tag{font-family:'JetBrains Mono',monospace;font-size:12px;padding:5px 12px;border-radius:999px;border:1px solid var(--line-dark);color:var(--slate);}
  .subpage h1,.subpage h2{font-size:34px;margin:14px 0 18px;line-height:1.18;}
  @media(max-width:640px){ .subpage h1,.subpage h2{font-size:27px;} }
  /* Een bovenschrift blijft klein, ook als het om leesbaarheid voor
     schermlezers een echte h2 geworden is. */
  .subpage h2.kicker, h2.kicker{
    font-family:'JetBrains Mono',monospace;font-size:12.5px;font-weight:400;
    line-height:1.5;letter-spacing:0.08em;text-transform:uppercase;}
  .subpage h2.gallery-label, h2.gallery-label{font-family:'JetBrains Mono',monospace;font-weight:400;line-height:1.5;text-transform:uppercase;}
  @media(max-width:640px){ .subpage h2.kicker{font-size:12.5px;} .subpage h2.gallery-label{font-size:11.5px;} }
  .subpage h2.gallery-label, h2.gallery-label{font-size:11.5px;letter-spacing:0.06em;color:var(--slate);margin:28px 0 12px;}
  h2.kicker{color:var(--accent-tekst);margin-bottom:14px;}
  /* kruimelpad bovenaan een dienstpagina */
  .kruimel{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-family:'JetBrains Mono',monospace;
    font-size:12px;color:var(--slate);margin-bottom:2px;}
  .kruimel a{color:var(--slate);text-decoration:underline;text-decoration-color:rgba(90,104,126,0.35);
    text-underline-offset:3px;}
  .kruimel a:hover{color:var(--accent-tekst);text-decoration-color:currentColor;}
  .kruimel span[aria-current]{color:var(--ink);font-weight:500;}
  .navlink.hier{color:#fff;position:relative;}
  .navlink.hier::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--gold);border-radius:2px;}
  .hoofdnav .navlink.hier::after{display:none;}
  .mobile-nav .navlink.hier::after{display:none;}
  .mobile-nav .navlink.hier{color:#fff;font-weight:600;}
  .subpage .desc{font-size:16px;color:var(--slate);line-height:1.7;max-width:600px;margin-bottom:36px;}
  .feature-list{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:36px;}
  @media(max-width:700px){ .feature-list{grid-template-columns:1fr;} }
  .feature-item{display:flex;gap:12px;align-items:flex-start;padding:16px;background:#fff;border:1px solid var(--line-dark);border-radius:12px;}
  .feature-item .fi{width:20px;height:20px;flex:none;margin-top:2px;}
  .feature-item p{margin:0;font-size:14px;color:var(--ink);line-height:1.5;}

  .subpage.airco{background:linear-gradient(180deg,#EAF6FB 0%, var(--paper) 100%);}
  .subpage.elek{background:linear-gradient(180deg,#FFF6E6 0%, var(--paper) 100%);}
  .subpage.laadpaal{background:var(--paper);}


  /* ===== REALISATIES GALLERY ===== */
  .gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:8px;}
  @media(max-width:700px){ .gallery{grid-template-columns:1fr;} }
  .gallery img{width:100%;height:280px;object-fit:cover;border-radius:12px;border:1px solid var(--line-dark);
    display:block;cursor:zoom-in;transition:transform 0.2s ease, box-shadow 0.2s ease;}
  .gallery img:hover{transform:scale(1.02);box-shadow:0 8px 24px rgba(10,26,48,0.18);}
  .gallery-label{font-weight:inherit;font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--slate);text-transform:uppercase;letter-spacing:0.06em;margin:28px 0 12px;display:block;}

  /* ===== HOVER ZOOM OVERLAY ===== */
  .zoom-overlay{position:fixed;inset:0;z-index:999;display:flex;align-items:center;justify-content:center;
    background:rgba(1,9,40,0.82);padding:40px;pointer-events:none;
    opacity:0;visibility:hidden;transition:opacity 0.4s ease, visibility 0.4s;}
  /* pointer-events terug aan: anders komt er geen klik of veeg aan en doen
     de pijlen, het kruisje en het vegen niets. */
  .zoom-overlay.active{opacity:1;visibility:visible;pointer-events:auto;}
  .zoom-overlay img{max-width:94vw;max-height:92vh;border-radius:14px;box-shadow:0 30px 70px rgba(0,0,0,0.5);
    border:2px solid rgba(255,255,255,0.15);transform:scale(0.97);transition:transform 0.4s ease, opacity 0.3s ease;}
  .zoom-overlay.active img{transform:scale(1);}


  /* ===== WHATSAPP CHAT WIDGET ===== */
  .whatsapp-fab{position:fixed;right:22px;bottom:22px;z-index:900;width:58px;height:58px;border-radius:50%;
    background:#25D366;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 22px rgba(0,0,0,0.28);
    transition:transform 0.2s ease, box-shadow 0.2s ease;border:none;cursor:pointer;}
  .whatsapp-fab:hover{transform:scale(1.08);box-shadow:0 10px 28px rgba(0,0,0,0.35);}
  .whatsapp-fab svg{width:30px;height:30px;color:#fff;}
  .whatsapp-fab .wa-close-icon{display:none;}
  .whatsapp-fab.open .wa-chat-icon{display:none;}
  .whatsapp-fab.open .wa-close-icon{display:block;}
  @media(max-width:640px){ .whatsapp-fab{right:16px;bottom:16px;width:52px;height:52px;} .whatsapp-fab svg{width:26px;height:26px;} }

  .wa-panel{position:fixed;right:22px;bottom:92px;z-index:899;width:320px;max-width:calc(100vw - 32px);
    background:#fff;border-radius:16px;box-shadow:0 20px 50px rgba(0,0,0,0.25);overflow:hidden;
    opacity:0;visibility:hidden;transform:translateY(16px);transition:opacity 0.25s ease, transform 0.25s ease, visibility 0.25s;}
  .wa-panel.open{opacity:1;visibility:visible;transform:translateY(0);}
  .wa-panel-header{background:#075E54;color:#fff;padding:16px 18px;display:flex;align-items:center;gap:12px;}
  .wa-panel-avatar{width:40px;height:40px;border-radius:50%;background:var(--gold);color:#241300;font-weight:700;
    display:flex;align-items:center;justify-content:center;font-family:'Space Grotesk',sans-serif;flex:none;}
  .wa-panel-header div{flex:1;}
  .wa-panel-header .wa-naam{margin:0;font-size:15px;font-family:'Space Grotesk',sans-serif;font-weight:700;}
  .wa-panel-header p{margin:2px 0 0;font-size:12px;color:#CFE9E4;}
  .wa-panel-body{background:#ECE5DD;padding:16px;}
  .wa-bubble{background:#fff;border-radius:10px;padding:10px 14px;font-size:13.5px;color:var(--ink);
    line-height:1.5;box-shadow:0 1px 2px rgba(0,0,0,0.1);max-width:90%;}
  .wa-panel-footer{padding:14px;background:#fff;display:flex;flex-direction:column;gap:10px;}
  .wa-panel-footer textarea{font-family:'Inter',sans-serif;font-size:13.5px;border:1px solid #D9E1EE;
    border-radius:8px;padding:9px 11px;resize:none;min-height:54px;}
  .wa-start-btn{display:flex;align-items:center;justify-content:center;gap:8px;background:#25D366;color:#fff;
    border:none;border-radius:8px;padding:11px;font-weight:600;font-size:14px;cursor:pointer;text-decoration:none;}
  .wa-start-btn:hover{background:#1EBE59;}
  .wa-start-btn svg{width:18px;height:18px;}

  /* ===== BRAND CREDENTIALS ===== */
  .brand-creds{display:flex;gap:14px;margin-bottom:32px;flex-wrap:wrap;}
  .brand-cred{display:flex;flex-direction:column;align-items:flex-start;gap:8px;background:#fff;border:1px solid var(--line-dark);
    border-radius:12px;padding:20px 26px;min-width:170px;}
  .brand-cred-name{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:17px;color:var(--ink);letter-spacing:0.02em;}
  .brand-cred-tag{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--accent-tekst);text-transform:uppercase;letter-spacing:0.05em;}

  /* ===== MODEL CARDS ===== */
  .model-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:8px 0 32px;}
  @media(max-width:760px){ .model-grid{grid-template-columns:1fr;} }
  .model-card{background:#fff;border:1px solid var(--line-dark);border-radius:14px;padding:20px;}
  .model-card .m-icon{width:100%;height:64px;margin-bottom:14px;transition:transform 0.2s ease, box-shadow 0.2s ease;}
  .model-card .m-icon:hover{transform:scale(1.03);box-shadow:0 8px 24px rgba(10,26,48,0.15);}
  .model-card .m-brand{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--accent-tekst);text-transform:uppercase;letter-spacing:0.06em;}
  .model-card h3{font-family:'Space Grotesk',sans-serif;font-size:16px;margin:4px 0 8px;color:var(--ink);}
  .model-card p{font-size:13px;color:var(--slate);line-height:1.55;margin:0;}


  /* ===== OFFERTE FORMULIER ===== */
  .quote-section{background:var(--paper);}
  .quote-grid{display:grid;grid-template-columns:1.1fr 0.9fr;gap:48px;align-items:start;}
  @media(max-width:900px){ .quote-grid{grid-template-columns:1fr;} }
  .quote-form{background:#fff;border:1px solid var(--line-dark);border-radius:16px;padding:32px;}
  @media(max-width:480px){ .quote-form{padding:22px 18px;} }
  /* Kopjes binnen het formulier: donkerder, met een goudkleurig streepje ervoor */
  .quote-form .gallery-label{font-size:12.5px;font-weight:600;color:var(--ink);letter-spacing:0.09em;
    display:flex;align-items:center;gap:10px;}
  .quote-form .gallery-label::before{content:"";width:16px;height:2.5px;border-radius:2px;
    background:var(--gold);flex:none;}
  .quote-form .qf-optioneel{color:var(--slate);}
  /* niet-gekozen knopjes iets leesbaarder */
  .quote-form .qf-radio label{color:#2A3A55;}
  .quote-form .qf-radio label:hover{border-color:var(--accent);color:var(--accent);}
  .quote-form .qf-radio input:checked + label{color:#fff;}
  .qf-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;}
  @media(max-width:560px){ .qf-row{grid-template-columns:1fr;} }
  .qf-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}
  .qf-field label{font-family:'JetBrains Mono',monospace;font-size:11.5px;font-weight:500;color:#2A3A55;text-transform:uppercase;letter-spacing:0.05em;}
  .qf-field input, .qf-field select, .qf-field textarea{
    font-family:'Inter',sans-serif;font-size:14.5px;color:var(--ink);
    border:1px solid #D9E1EE;border-radius:8px;padding:10px 12px;background:#F9FAFC;
    width:100%;min-width:0;box-sizing:border-box;}
  .qf-field input:focus, .qf-field select:focus, .qf-field textarea:focus{outline:2px solid var(--accent);outline-offset:1px;}
  .qf-field textarea{resize:vertical;min-height:70px;}
  .qf-radiogroup{display:flex;gap:10px;flex-wrap:wrap;}
  .qf-radio{position:relative;}
  .qf-radio input{position:absolute;opacity:0;}
  .qf-radio label{display:block;font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--slate);
    border:1px solid #D9E1EE;border-radius:999px;padding:8px 16px;cursor:pointer;transition:all .15s ease;text-transform:none;letter-spacing:0;}
  .qf-radio input:checked + label{background:var(--ink);color:#fff;border-color:var(--ink);}
  .qf-roomblock{border:1px solid #D9E1EE;border-radius:12px;padding:16px;margin-bottom:12px;background:#F9FAFC;position:relative;}
  .qf-roomblock-grid{display:grid;grid-template-columns:1.3fr 0.8fr 0.9fr;gap:10px;margin-bottom:10px;}
  @media(max-width:640px){ .qf-roomblock-grid{grid-template-columns:1fr;} }
  .qf-roomblock select, .qf-roomblock input[type="number"]{
    font-family:'Inter',sans-serif;font-size:13.5px;color:var(--ink);
    border:1px solid #D9E1EE;border-radius:8px;padding:9px 10px;background:#fff;width:100%;}
  .qf-roomblock-sublabel{font-size:11px;font-weight:500;color:#2A3A55;font-family:'JetBrains Mono',monospace;margin-bottom:5px;display:block;text-transform:uppercase;letter-spacing:0.04em;}
  .qf-optioneel{font-weight:400;text-transform:none;letter-spacing:0;opacity:0.7;}
  .qf-photo-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
  .qf-photo-btn{display:inline-flex;align-items:center;gap:6px;font-family:'JetBrains Mono',monospace;font-size:12.5px;
    color:var(--accent);border:1px dashed var(--accent);border-radius:8px;padding:8px 14px;cursor:pointer;background:#fff;}
  /* Stond op display:none. Een verborgen invoerveld staat niet in de
     tabvolgorde, en er is geen <label> die het overneemt - de acht foto- en
     documentkiezers waren dus alleen met de muis te bedienen. Nu blijft het
     veld onzichtbaar maar wel bereikbaar, en :focus-within laat zien waar je
     staat. */
  .qf-photo-btn input{position:absolute;width:1px;height:1px;padding:0;margin:0;
    overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;}
  .qf-photo-btn:focus-within{outline:2px solid var(--accent);outline-offset:2px;}
  .qf-fotolijst{display:none;flex-basis:100%;width:100%;flex-wrap:wrap;gap:12px;margin-top:12px;}
  .qf-fotolijst.vol{display:flex;}
  .qf-foto{position:relative;width:82px;}
  .qf-foto a{display:block;border-radius:8px;overflow:hidden;border:1px solid var(--line-dark);background:#0d1117;}
  .qf-foto img{display:block;width:82px;height:82px;object-fit:cover;}
  .qf-foto-weg{position:absolute;top:-9px;right:-9px;width:26px;height:26px;border-radius:50%;border:1px solid #0d1117;
    background:#b03a2e;color:#fff;font-size:15px;line-height:24px;text-align:center;cursor:pointer;padding:0;
    font-family:inherit;box-shadow:0 2px 5px rgba(0,0,0,0.4);}
  .qf-foto-weg:hover{background:#d1493a;}
  .qf-foto.doc a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
    width:82px;height:82px;background:#EEF2F7;color:var(--slate);}
  .qf-foto.doc a svg{width:26px;height:26px;}
  .qf-foto.doc a b{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:0.05em;color:var(--ink);}
  @media(max-width:640px){ .qf-foto.doc a{width:96px;height:96px;} }
  .qf-foto-naam{display:block;font-size:10.5px;color:var(--slate);margin-top:5px;line-height:1.3;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .qf-fotolijst-info{flex-basis:100%;width:100%;font-size:12px;color:var(--slate);margin:2px 0 0;}
  .qf-roomblock-remove{position:absolute;top:10px;right:12px;background:none;border:none;color:var(--slate);
    font-size:16px;cursor:pointer;line-height:1;padding:2px 6px;}
  .qf-roomblock-remove:hover{color:#c0392b;}
  .qf-addroom{display:inline-flex;align-items:center;gap:6px;font-family:'JetBrains Mono',monospace;font-size:12.5px;
    color:var(--accent);background:none;border:1px dashed var(--accent);border-radius:8px;padding:9px 16px;cursor:pointer;margin-top:4px;}
  .qf-unit-block{border:1px dashed #C9D3E0;border-radius:10px;padding:16px;margin-top:6px;background:#F9FAFC;}
  .qf-hint{font-size:12.5px;color:var(--slate);line-height:1.6;background:#EEF2F7;border-radius:8px;padding:12px 14px;margin-top:4px;}
  .qf-hint strong{color:var(--ink);}
  .qf-multi-only{display:none;}
  .qf-multi-only.show{display:block;}
  .qf-submit{width:100%;margin-top:8px;justify-content:center;border:none;font-family:inherit;cursor:pointer;}
  .quote-side h3,.quote-side .sim-kop{font-size:20px;margin-bottom:14px;color:var(--ink);}
  .quote-side ul{margin:0 0 24px;padding-left:0;list-style:none;}
  .quote-side li{display:block;padding:14px 0 14px 18px;border-left:3px solid var(--accent);
    background:#F9FAFC;border-radius:0 8px 8px 0;margin-bottom:12px;}
  .quote-side li b{display:block;color:var(--ink);font-size:14.5px;margin-bottom:4px;}
  .quote-side li span{display:block;font-size:13.5px;color:var(--slate);line-height:1.6;padding-right:14px;}
  .quote-note{font-size:12.5px;color:var(--slate);background:var(--paper-dim);border-radius:10px;padding:14px 16px;line-height:1.6;}

  /* ===== WHY STRIP ===== */
  .why{background:var(--paper-dim);}
  .why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;}
  @media(max-width:760px){ .why-grid{grid-template-columns:1fr 1fr;} }
  @media(max-width:400px){ .why-grid{grid-template-columns:1fr;} }
  .why-item{padding:24px;border-right:1px solid var(--line-dark);}
  .why-item:last-child{border-right:none;}
  
  .why-item h3{font-family:'Space Grotesk',sans-serif;font-size:16.5px;margin:0 0 6px;color:var(--ink);}
  .why-item p{margin:0;font-size:13.5px;color:var(--slate);line-height:1.5;}

  /* ===== Facebook en Instagram in de kopbalk =====
     Twee kleine knopjes naast de taalkeuze. Ze verdwijnen op een smal scherm:
     daar is elke pixel nodig voor het telefoonnummer en de menuknop, en in het
     uitklapmenu staan ze toch. */
  .kop-sociaal{display:inline-flex;align-items:center;gap:8px;margin-right:4px;}
  .kop-sociaal a{display:inline-flex;align-items:center;justify-content:center;
    width:34px;height:34px;border-radius:10px;border:1px solid var(--line);
    color:#AEC0DB;background:rgba(255,255,255,0.04);
    transition:background .2s ease, border-color .2s ease, color .2s ease, transform .2s ease;}
  .kop-sociaal a:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-2px);}
  .kop-sociaal a:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
  .kop-sociaal svg{width:17px;height:17px;fill:currentColor;display:block;}
  @media(prefers-reduced-motion:reduce){ .kop-sociaal a:hover{transform:none;} }
  /* Onder deze breedte wordt de balk te krap; dan staan ze enkel in het menu. */
  @media(max-width:1080px){ .kop-sociaal{display:none;} }

  /* Dezelfde twee knopjes onderaan het uitklapmenu op gsm en tablet. */
  .mobiel-sociaal{display:flex;gap:10px;padding:14px 22px 18px;}
  /* De opsomming .mobile-nav ervoor is nodig: zonder die extra houvast wint de
     algemene menuregel met haar padding van 24px, en dan blijft er van een
     knopje van 42px niets over om het pictogram in te zetten. */
  .mobile-nav .mobiel-sociaal a{display:inline-flex;align-items:center;justify-content:center;
    width:42px;height:42px;padding:0;border-radius:12px;border:1px solid var(--line);
    border-bottom:1px solid var(--line);
    color:#AEC0DB;background:rgba(255,255,255,0.04);}
  .mobile-nav .mobiel-sociaal a:hover{background:var(--accent);border-color:var(--accent);color:#fff;}
  .mobile-nav .mobiel-sociaal svg{width:19px;height:19px;fill:currentColor;display:block;flex:none;}

  /* ===== "Een airco is ook een verwarming" =====
     Het blok dat van een aankoop een investering maakt. Bewust rustig van
     opmaak: het moet gelezen worden, niet geroepen. */
  .warmte{background:#fff;border:1px solid var(--line-dark);border-radius:16px;
    padding:30px 32px;margin:8px 0 34px;max-width:820px;position:relative;overflow:hidden;
    box-shadow:0 10px 30px rgba(10,26,48,0.05);}
  .warmte::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--gold);}
  @media(max-width:640px){ .warmte{padding:24px 22px;} }
  .warmte h2{font-size:24px;line-height:1.25;color:var(--ink);margin:8px 0 12px;}
  .warmte p{font-size:15.5px;color:var(--slate);line-height:1.7;margin:0 0 14px;}
  .warmte p strong{color:var(--ink);}
  .warmte-cijfer{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0 16px;}
  .warmte-cijfer div{flex:1 1 180px;background:var(--paper);border-radius:12px;padding:14px 16px;}
  .warmte-cijfer b{display:block;font-family:'Space Grotesk',sans-serif;font-size:22px;color:var(--ink);line-height:1.2;}
  .warmte-cijfer span{display:block;font-size:13px;color:var(--slate);line-height:1.5;margin-top:4px;}
  .warmte-klein{font-size:13px;color:var(--slate);line-height:1.6;background:var(--paper-dim);
    border-radius:9px;padding:12px 14px;margin:4px 0 0;}

  /* ===== Bewijsstrook: zo werken we de leiding weg ===== */
  /* auto links en rechts, want deze klasse staat op hetzelfde element als
     .wrap - met "margin:0 0 34px" werd de centrering van .wrap overschreven
     en plakte de hele strook tegen de linkerrand. */
  .bewijs{margin:0 auto 34px;}
  .bewijs-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:16px;}
  @media(max-width:900px){ .bewijs-grid{grid-template-columns:repeat(2,1fr);} }
  .bewijs-grid figure{margin:0;}
  .bewijs-grid img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;display:block;
    border-radius:12px;background:#EEF1F6;box-shadow:0 8px 22px rgba(10,26,48,.10);cursor:zoom-in;}
  .bewijs-grid figcaption{font-size:12.5px;color:var(--slate);line-height:1.5;margin:9px 2px 0;}
  .bewijs-onder{font-size:13.5px;color:var(--slate);line-height:1.6;margin:16px 0 0;}
  .bewijs-onder strong{color:var(--ink);}

  /* ===== Zo gaat het verder na uw aanvraag ===== */
  .verloop{margin:26px 0 0;}
  .verloop-rij{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:14px;counter-reset:stap;}
  @media(max-width:820px){ .verloop-rij{grid-template-columns:repeat(2,1fr);} }
  @media(max-width:460px){ .verloop-rij{grid-template-columns:1fr;} }
  .verloop-stap{background:#fff;border:1px solid var(--line-dark);border-radius:12px;padding:16px 18px;position:relative;}
  .verloop-stap b{display:block;font-family:'Space Grotesk',sans-serif;font-size:15px;color:var(--ink);margin:0 0 5px;}
  .verloop-stap span{font-size:13.5px;color:var(--slate);line-height:1.55;}
  .verloop-stap i{position:absolute;top:-11px;left:16px;font-style:normal;
    font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;color:#241300;
    background:var(--gold);border-radius:999px;padding:3px 9px;}

  /* ===== REGIO ===== */
  .regio{background:var(--paper);}
  .regio-map{display:flex;flex-wrap:wrap;gap:10px;margin-top:32px;}
  .pill{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--deep);background:#fff;
    border:1px solid #D9E1EE;border-radius:999px;padding:9px 16px;display:inline-block;
    text-decoration:none;
    transition:border-color .18s ease, color .18s ease, background-color .18s ease,
               box-shadow .18s ease, transform .18s ease;}
  .pill.home{background:var(--ink);color:#fff;border-color:var(--ink);}

  /* Een gemeente waar u naartoe kunt klikken, licht op zodra u ze aanwijst.
     Blauw, niet oranje - het oranje houden we voor de knoppen die iets doen. */
  a.pill:hover, a.pill:focus-visible{
    color:var(--accent-tekst);border-color:var(--accent);background:#F1F6FF;
    box-shadow:0 5px 16px rgba(22,109,244,.20);transform:translateY(-2px);}
  a.pill:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
  a.pill:active{transform:translateY(0);box-shadow:0 2px 6px rgba(22,109,244,.18);}

  /* De gemeente waar u nu op staat, is geen link naar zichzelf maar staat
     wel aangeduid, zodat u in het rijtje ziet waar u zit. */
  .pill.hier{color:var(--accent-tekst);border-color:var(--accent-soft);background:#EAF2FF;font-weight:600;}

  @media(prefers-reduced-motion:reduce){
    a.pill:hover, a.pill:focus-visible, a.pill:active{transform:none;}
  }

  /* ===== REVIEWS ===== */
  .reviews{background:var(--ink);color:#fff;}
  .regio-onder{font-size:13.5px;color:var(--slate);line-height:1.7;max-width:640px;margin:18px 0 0;}
  /* ===== TWEE APARTE SCOREKAARTEN ===== */
  .score-rij{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:720px;margin-bottom:14px;}
  @media(max-width:640px){ .score-rij{grid-template-columns:1fr;} }
  .score-kaart{display:flex;flex-direction:column;align-items:flex-start;gap:9px;background:var(--deep);
    border:1px solid var(--line);border-radius:14px;padding:20px 22px;
    transition:border-color .18s ease, transform .18s ease;}
  .score-kaart:hover{border-color:rgba(242,169,59,0.5);transform:translateY(-2px);}
  .sk-bron{display:flex;align-items:center;gap:8px;font-family:'JetBrains Mono',monospace;font-size:12px;
    letter-spacing:0.06em;color:#fff;text-transform:uppercase;}
  .sk-bron svg{width:17px;height:17px;flex:none;}
  .sk-cijfer{display:flex;align-items:baseline;gap:3px;}
  .sk-cijfer b{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:36px;color:var(--gold);line-height:1;}
  .sk-cijfer i{font-style:normal;font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:17px;color:#7E93B5;}
  .sk-onder{font-size:12.5px;color:#AFC1DD;line-height:1.5;}
  .sk-stand{font-size:12px;color:#8AA0C2;line-height:1.5;margin:14px 0 0;text-align:center;}
  .sk-link{margin-top:auto;padding-top:6px;font-size:13.5px;color:var(--frost);font-weight:600;}
  .score-kaart:hover .sk-link{text-decoration:underline;text-underline-offset:3px;}
  .sk-balk{display:block;width:100%;max-width:170px;height:7px;border-radius:999px;
    background:rgba(255,255,255,0.12);overflow:hidden;}
  .sk-balk span{display:block;height:100%;border-radius:999px;background:var(--gold);}
  .score-totaal{font-size:12.5px;color:#7E93B5;line-height:1.6;margin:0 0 34px;max-width:520px;}
  .score-kaart .toppro{margin-top:2px;}
  .toppro{display:inline-flex;align-items:center;gap:6px;background:rgba(242,169,59,0.15);border:1px solid rgba(242,169,59,0.4);color:var(--gold-soft);font-family:'JetBrains Mono',monospace;font-size:12px;padding:6px 12px;border-radius:999px;}
  .review-grid{overflow:hidden;position:relative;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 14%,#000 86%,transparent);
    mask-image:linear-gradient(90deg,transparent,#000 14%,#000 86%,transparent);}
  .review-track{display:flex;gap:20px;width:max-content;animation:reviewScroll 32s linear infinite;}
  .review-track:hover{animation-play-state:paused;}
  @keyframes reviewScroll{ from{transform:translateX(-50%);} to{transform:translateX(0%);} }
  .rcard{background:var(--deep);border:1px solid var(--line);border-radius:14px;padding:24px;flex:0 0 340px;width:340px;}
  @media(max-width:640px){ .rcard{flex-basis:280px;width:280px;} }
  .rcard .stars{color:var(--gold);font-size:14px;margin-bottom:12px;letter-spacing:2px;}
  .rcard p{font-size:14px;color:#C9D8ED;line-height:1.65;margin:0 0 16px;}
  .rcard .who{font-family:'JetBrains Mono',monospace;font-size:12px;color:#7E93B5;}

  /* ===== FAQ ===== */
  .faq{background:var(--paper);}
  .faq-list{border-top:1px solid var(--line-dark);margin-top:32px;}
  .faq-item{border-bottom:1px solid var(--line-dark);}
  .faq-q{width:100%;text-align:left;background:none;border:none;color:var(--ink);cursor:pointer;padding:22px 0;display:flex;justify-content:space-between;align-items:center;font-family:'Space Grotesk',sans-serif;font-size:17px;font-weight:600;}
  .faq-q .plus{font-family:'JetBrains Mono',monospace;color:var(--accent-tekst);font-size:20px;transition:transform .2s;}
  .faq-item.open .plus{transform:rotate(45deg);}
  .faq-a{max-height:0;overflow:hidden;transition:max-height .3s ease;}
  .faq-a p{color:var(--slate);font-size:14.5px;line-height:1.7;margin:0 0 22px;max-width:640px;}

  /* ===== CTA ===== */
  .cta{background:linear-gradient(120deg, var(--deep), var(--ink));color:#fff;text-align:center;}
  .cta h2{font-size:32px;margin-bottom:14px;}
  .cta p{color:#B9CFEC;font-size:16px;margin:0 auto 32px;max-width:480px;}
  .cta .btnrow{justify-content:center;}

  /* ===== FOOTER ===== */
  footer{background:#081327;color:#7E93B5;padding:56px 0 28px;}
  .foot-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:40px;}
  @media(max-width:760px){ .foot-grid{grid-template-columns:1fr;gap:28px;} }
  .foot-logo{display:flex;align-items:center;gap:10px;color:#fff;margin-bottom:14px;}
  footer .foot-kop{font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:0.08em;text-transform:uppercase;color:#8FA3C2;margin:0 0 16px;}
  footer ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px;}
  footer ul a{font-size:14px;color:#AEC0DB;}
  footer ul a:hover{color:#fff;}
  .foot-bottom{border-top:1px solid var(--line);margin-top:44px;padding-top:22px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px 20px;font-size:12.5px;line-height:2;color:#8FA3C2;font-family:'JetBrains Mono',monospace;}
  .social-row{display:flex;gap:12px;margin-top:4px;}
  /* Was 40 bij 40. WCAG 2.5.8 vraagt 44 bij 44 voor een aanraakvlak. */
  .social-row a{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:11px;
    border:1px solid var(--line);color:#AEC0DB;background:rgba(255,255,255,0.03);
    transition:background .2s ease, border-color .2s ease, color .2s ease, transform .2s ease;}
  .social-row a:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-2px);}
  .social-row svg{width:19px;height:19px;fill:currentColor;display:block;}
  .qf-radio input[type="checkbox"]:checked + label{background:var(--accent);color:#fff;border-color:var(--accent);}
  .qf-service-block{display:none;}
  .qf-service-block.show{display:block;}
  .qf-num-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  @media(max-width:520px){ .qf-num-grid{grid-template-columns:1fr;} }
  /* ===== Kopbalk krimpt bij het scrollen =====
     Bovenaan de pagina staat het logo op volle grootte. Zodra u begint te
     scrollen, schuift de balk samen tot ongeveer de helft, zodat ze minder
     scherm inneemt terwijl ze wel blijft plakken. Alles blijft klikbaar. */
  header{transition:box-shadow .2s ease;}
  .logo .vb-logo{transition:height .22s ease, width .22s ease;}
  .headbar{transition:padding .22s ease;}
  .hoofdnav-binnen{transition:padding .22s ease;}
  /* Alleen op een breed scherm. Op gsm en tablet is de kopbalk al compact en
     staat het logo daar al kleiner ingesteld; krimpen zou het logo dan juist
     GROTER maken dan de balk hoog is, en dan wordt het bovenaan afgesneden. */
  @media(min-width:901px){
    header.gekrompen .logo .vb-logo{height:66px !important;width:194px !important;}
    header.gekrompen .headbar{padding-top:2px;padding-bottom:2px;}
    header.gekrompen .hoofdnav-binnen{padding-top:6px;padding-bottom:6px;}
  }
  header.gekrompen{box-shadow:0 6px 20px rgba(5,16,32,0.28);}
  @media(prefers-reduced-motion:reduce){
    header, .logo .vb-logo, .headbar, .hoofdnav-binnen{transition:none;}
  }

  .vb-logo{background-image:url("../images/logo.svg");background-position:center;background-size:contain;background-repeat:no-repeat;display:block;flex:none;}
  .gallery-3{grid-template-columns:repeat(3,1fr);}
  .gallery-3 img{height:230px;}
  @media(max-width:900px){ .gallery-3{grid-template-columns:repeat(2,1fr);} }
  @media(max-width:560px){ .gallery-3{grid-template-columns:1fr;} .gallery-3 img{height:250px;} }
  .subpage h1,.subpage h2,.subpage .desc,.subpage-head,.kruimel{position:relative;z-index:3;}
  /* ===== JURIDISCH VENSTER ===== */
  .legal-overlay{position:fixed;inset:0;z-index:200;background:rgba(1,9,40,0.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
    display:none;align-items:center;justify-content:center;padding:24px;}
  .legal-overlay.open{display:flex;}
  .legal-panel{background:#fff;border-radius:16px;max-width:720px;width:100%;max-height:84vh;overflow-y:auto;
    padding:36px 38px;position:relative;box-shadow:0 24px 60px rgba(1,9,40,0.4);}
  @media(max-width:640px){ .legal-panel{padding:28px 22px;} }
  .legal-panel h2{font-size:24px;color:var(--ink);margin-bottom:6px;}
  .legal-panel .upd{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--slate);
    text-transform:uppercase;letter-spacing:0.05em;margin-bottom:22px;display:block;}
  .legal-panel h3{font-family:'Space Grotesk',sans-serif;font-size:15.5px;color:var(--ink);margin:22px 0 8px;}
  .legal-panel p,.legal-panel li{font-size:14px;line-height:1.7;color:var(--slate);margin:0 0 10px;}
  .legal-panel ul{margin:0 0 10px;padding-left:20px;}
  .legal-panel a{color:var(--accent-tekst);font-weight:600;}
  .legal-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:26px;line-height:1;
    color:var(--slate);cursor:pointer;padding:4px 8px;border-radius:8px;}
  .legal-close:hover{background:var(--paper-dim);color:var(--ink);}
  @media(max-width:560px){
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:4px;line-height:1.7;}
    .foot-bottom > span{display:block;width:100%;}
  }
  .fb-rechts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .foot-bottom a{color:#7E93B5;border-bottom:1px solid rgba(126,147,181,0.35);}
  .foot-bottom a:hover{color:#fff;}
  /* ===== VASTE PRIJZEN ===== */
  .vasteprijs{background:#fff;border:1px solid var(--line-dark);border-radius:14px;
    padding:22px 24px;margin:26px 0 4px;max-width:760px;position:relative;overflow:hidden;}
  .vasteprijs::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--gold);}
  .vasteprijs h3{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:19px;color:var(--ink);margin:0 0 8px;}
  .vasteprijs p{font-size:14.5px;color:var(--slate);line-height:1.7;margin:0;}
  @media(max-width:640px){ .vasteprijs{padding:20px 18px;} }
  /* ===== VERDER LEZEN ===== */
  .verder{padding:56px 0;background:var(--paper-dim);border-top:1px solid var(--line-dark);}
  .verder-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:16px;}
  @media(max-width:760px){ .verder-grid{grid-template-columns:1fr;} }
  .verder-kaart{display:block;background:#fff;border:1px solid var(--line-dark);border-radius:14px;
    padding:22px 24px;transition:transform .18s ease,border-color .18s ease;}
  .verder-kaart:hover{transform:translateY(-3px);border-color:var(--accent);}
  .verder-kaart h3{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:19px;color:var(--ink);margin:0 0 6px;}
  .verder-kaart p{font-size:14px;color:var(--slate);line-height:1.6;margin:0 0 12px;}
  .verder-kaart .go{font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--accent-tekst);}
  /* ===== BEDIENING MET DE APP ===== */
  .appblok{background:#fff;border:1px solid var(--line-dark);border-radius:14px;padding:22px 24px;
    margin:4px 0 22px;max-width:760px;}
  .appblok .ab-tag{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--slate);
    text-transform:uppercase;letter-spacing:0.06em;display:block;margin-bottom:8px;}
  .appblok h3{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:18px;color:var(--ink);margin:0 0 8px;}
  .appblok .ab-lead{font-size:14px;color:var(--slate);line-height:1.6;margin:0 0 16px;}
  .appblok ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:10px 20px;}
  .appblok li{font-size:14px;color:var(--ink);line-height:1.5;padding-left:24px;position:relative;}
  .appblok li::before{content:"";position:absolute;left:0;top:5px;width:14px;height:14px;border-radius:50%;
    background:rgba(22,109,244,0.12);
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3.4 7.2l2.3 2.3 4.9-5' fill='none' stroke='%23166DF4' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}
  .appblok li b{font-weight:600;}
  @media(max-width:640px){ .appblok{padding:20px 18px;} .appblok ul{grid-template-columns:1fr;} }
  /* ===== ERKENNINGEN / ZAAKVOERDER ===== */
  .creds-box{background:#fff;border:1px solid var(--line-dark);border-radius:14px;padding:22px 24px;margin-top:22px;}
  .creds-box .cb-name{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:18px;color:var(--ink);}
  .creds-box .cb-role{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--accent-tekst);
    text-transform:uppercase;letter-spacing:0.05em;margin-top:2px;display:block;}
  /* De erkenningen staan sinds 22 augustus 2026 in de RECHTERkolom, onder de
     tekst: links stond 888 px leegte naast die twee alinea's. De opmaak is
     dezelfde gebleven, vandaar dat beide selectors hier samen staan. */
  .creds-box ul,.creds-lijst{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:12px;}
  .creds-lijst{margin-top:18px;padding-top:0;border-top:0;}
  /* Naam en rol staan sinds 22 augustus 2026 hier in plaats van als bijschrift
     onder de foto: op die foto staat Stephens vader. */
  .intro-wie{margin:26px 0 0;padding-top:24px;border-top:1px solid var(--line-dark);
    font-size:14.5px;color:var(--slate);}
  .intro-wie strong{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:17px;
    color:var(--ink);display:block;margin-bottom:2px;}
  .creds-box li,.creds-lijst li{font-size:13.5px;color:var(--slate);line-height:1.5;padding-left:26px;position:relative;}
  .creds-box li b,.creds-lijst li b{display:block;color:var(--ink);font-size:14px;margin-bottom:1px;}
  .creds-box li::before,.creds-lijst li::before{content:"";position:absolute;left:0;top:2px;width:16px;height:16px;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 1.6l6.6 2.6v5.1c0 4-2.8 7.4-6.6 8.5-3.8-1.1-6.6-4.5-6.6-8.5V4.2z' fill='none' stroke='%23166DF4' stroke-width='1.4' stroke-linejoin='round'/%3E%3Cpath d='M6.9 9.9l2.2 2.2 4.1-4.3' fill='none' stroke='%23FDBA00' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}
  .creds-box .cb-nr,.creds-lijst .cb-nr{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--slate);
    background:var(--paper-dim);border-radius:6px;padding:2px 7px;display:inline-block;margin-top:3px;}
  .brand-cred.cert{justify-content:center;}
  .brand-cred.cert .brand-cred-name{font-size:14.5px;line-height:1.3;}
  .faq.garantie{background:linear-gradient(180deg,#EAF6FB 0%, var(--paper) 100%);}
  .garantie-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:28px 0 8px;}
  @media(max-width:820px){ .garantie-summary{grid-template-columns:1fr;} }
  .gs-card{background:#fff;border:1px solid var(--line-dark);border-radius:14px;padding:22px 24px;}
  .gs-card .gs-num{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:30px;color:var(--ink);line-height:1.1;}
  .gs-card .gs-num small{font-size:15px;font-weight:600;color:var(--slate);}
  .gs-card .gs-t{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--accent-tekst);text-transform:uppercase;
    letter-spacing:0.05em;margin:8px 0 6px;display:block;}
  .gs-card p{font-size:13.5px;color:var(--slate);line-height:1.6;margin:0;}
  /* ===== SCROLL-REVEAL ===== */
  .js-anim .reveal{opacity:0;transform:translateY(18px);
    transition:opacity .65s cubic-bezier(.2,.7,.3,1), transform .65s cubic-bezier(.2,.7,.3,1);}
  .js-anim .reveal.in{opacity:1;transform:none;}

  /* ===== UITLEG-ANIMATIE: SPLIT ===== */
  .splitdemo{background:#fff;border:1px solid var(--line-dark);border-radius:18px;
    padding:28px 30px 22px;margin:8px 0 32px;max-width:760px;box-shadow:0 10px 30px rgba(10,26,48,0.06);}
  @media(max-width:640px){ .splitdemo{padding:22px 18px 18px;} }
  .splitdemo .sd-tag{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--accent-tekst);
    text-transform:uppercase;letter-spacing:0.06em;display:block;margin-bottom:8px;}
  .splitdemo h3{font-size:20px;color:var(--ink);margin-bottom:8px;}
  .splitdemo .sd-lead{font-size:14.5px;color:var(--slate);line-height:1.65;margin:0 0 18px;max-width:560px;}
  .splitdemo .sd-svg{width:100%;height:auto;display:block;border-radius:12px;overflow:hidden;}
  .splitdemo .sd-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;
    flex-wrap:wrap;margin-top:14px;}
  .splitdemo .sd-note{font-size:12.5px;color:var(--slate);line-height:1.6;margin:0;flex:1 1 320px;}
  /* ===== Koelen / verwarmen ==========================================
     Een split is een warmtepomp: hij verplaatst warmte, en welke kant op
     kies jij. Standaard staat de tekening op koelen.

     Het warme oranje is #D97F04 en niet het gewone goud #FDBA00: op deze
     lichte achtergrond haalt het gewone goud te weinig contrast om een lijn
     van vier pixels te kunnen volgen.

     Kleur draagt het verschil NIET alleen - onder de tekening staat een regel
     die meeverandert. Wie blauw en oranje moeilijk uit elkaar houdt, leest
     daar wat er gebeurt. */
  .sd-standen{display:inline-flex;border:1px solid rgba(22,109,244,0.35);border-radius:999px;
    overflow:hidden;flex:none;}
  .sd-stand{font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:.04em;
    background:none;border:0;padding:7px 15px;cursor:pointer;color:var(--accent-tekst);
    transition:background .2s ease,color .2s ease;}
  .sd-stand + .sd-stand{border-left:1px solid rgba(22,109,244,0.35);}
  .sd-stand:hover{background:rgba(22,109,244,0.09);}
  .sd-stand[aria-pressed="true"]{background:var(--accent);color:#fff;}
  .splitdemo.warm .sd-stand[aria-pressed="true"]{background:#D97F04;}
  .splitdemo.warm .sd-standen{border-color:rgba(217,127,4,0.45);}
  .splitdemo.warm .sd-stand{color:#8A5202;}
  .splitdemo.warm .sd-stand + .sd-stand{border-left-color:rgba(217,127,4,0.45);}
  .splitdemo.warm .sd-stand:hover{background:rgba(217,127,4,0.10);}
  .sd-stand:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
  .sd-uitleg{font-size:12.5px;color:var(--slate);line-height:1.6;margin:0;flex:1 1 300px;}

  /* Koelen: binnen blauw, buiten warm. Verwarmen: omgekeerd. */
  .splitdemo .sd-flow{stroke:#5C93E0;}
  .splitdemo .sd-flow-buiten{stroke:#D97F04;}
  .splitdemo.warm .sd-flow{stroke:#D97F04;}
  .splitdemo.warm .sd-flow-buiten{stroke:#5C93E0;}
  /* De warmte in de leiding. Dit is het enige dat werkelijk van richting
     verandert: bij koelen gaat ze van binnen naar buiten, bij verwarmen
     omgekeerd. De lucht uit de binnenunit blaast altijd de kamer in - die
     draait niet om, die wordt alleen warm of koud.

     Twee aparte keyframes en geen animation-direction:reverse: dat laatste
     geldt voor ALLE animaties op het element, dus ook voor het invaagje, en
     dan speelde dat achterstevoren en verdween de stroom juist. */
  /* De twee leidingen. Het koelmiddel draait rond; het vierwegventiel keert
     die kring om. De twee lopen dus altijd in tegengestelde richting, en bij
     het omschakelen keren ze allebei om.

     De kleur volgt de temperatuur van die leiding op dat moment - dat is wat
     een technieker voelt als hij ze vastpakt:

       koelen      de dikke is de zuigleiding en is KOUD
                   de dunne voert warme vloeistof naar binnen
       verwarmen   de dikke is de persleiding en is HEET
                   de dunne voert de afgekoelde vloeistof terug

     Twee aparte keyframes en geen animation-direction:reverse: dat laatste
     geldt voor alle animaties op het element, dus ook voor het invaagje. */
  .sd-gas{stroke:#5C93E0;}
  .sd-vloeistof{stroke:#D97F04;}
  /* Bij verwarmen zijn ze allebei warm: de dikke heet (persgas), de dunne
     lauw - die vloeistof komt net uit de condensor en is een graad of dertig
     a veertig. Blauw zou daar koud suggereren en dat klopt niet; koud wordt ze
     pas na het expansieventiel, en dat zit in de buitenunit. Uit elkaar te
     houden aan de dikte en aan het label ernaast. */
  .splitdemo.warm .sd-gas{stroke:#D97F04;}
  .splitdemo.warm .sd-vloeistof{stroke:#D97F04;opacity:.62;}
  .sd-pipe-dun{opacity:.75;}

  .js-anim .splitdemo .sd-gas,
  .js-anim .splitdemo .sd-vloeistof{opacity:0;}
  .splitdemo.playing .sd-gas{animation:sdFade .4s ease 2.15s forwards,
                                       sdNaarBuiten 2.4s linear 2.15s infinite;}
  .splitdemo.playing .sd-vloeistof{animation:sdFade .4s ease 2.15s forwards,
                                             sdNaarBinnen 2.6s linear 2.15s infinite;}
  .splitdemo.warm.playing .sd-gas{animation:sdFade .4s ease 2.15s forwards,
                                            sdNaarBinnen 2.4s linear 2.15s infinite;}
  .splitdemo.warm.playing .sd-vloeistof{animation:sdFade .4s ease 2.15s forwards,
                                                  sdNaarBuiten 2.6s linear 2.15s infinite;}
  @keyframes sdNaarBuiten{ from{stroke-dashoffset:0;} to{stroke-dashoffset:-64;} }
  @keyframes sdNaarBinnen{ from{stroke-dashoffset:0;} to{stroke-dashoffset:64;}  }

  .sd-replay{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--accent-tekst);
    background:none;border:1px solid rgba(22,109,244,0.35);border-radius:999px;padding:7px 14px;
    cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:background .2s ease,color .2s ease;}
  .sd-replay:hover{background:var(--accent);color:#fff;border-color:var(--accent);}
  .sd-replay svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;
    stroke-linecap:round;stroke-linejoin:round;}

  /* startstaat — alles onzichtbaar tot de animatie speelt */
  .js-anim .splitdemo .sd-scene,
  .js-anim .splitdemo .sd-inner,
  .js-anim .splitdemo .sd-outer,
  .js-anim .splitdemo .sd-dim,
  .js-anim .splitdemo .sd-hole,
  .js-anim .splitdemo .sd-flow,
  .js-anim .splitdemo .sd-flow-buiten{opacity:0;}
  .js-anim .splitdemo .sd-pipe{stroke-dasharray:450;stroke-dashoffset:450;}

  .splitdemo.playing .sd-scene{animation:sdFade .5s ease forwards;}
  .splitdemo.playing .sd-inner{animation:sdDrop .55s cubic-bezier(.2,.8,.3,1) .35s forwards;}
  .splitdemo.playing .sd-outer{animation:sdSlide .55s cubic-bezier(.2,.8,.3,1) .65s forwards;}
  .splitdemo.playing .sd-pipe{animation:sdDraw 1.25s cubic-bezier(.4,0,.3,1) .95s forwards;}
  .splitdemo.playing .sd-hole{animation:sdPop .4s cubic-bezier(.2,1.4,.4,1) 1.15s forwards;}
  .splitdemo.playing .sd-dim{animation:sdFade .5s ease 2.15s forwards;}
  .splitdemo.playing .sd-flow,
  .splitdemo.playing .sd-flow-buiten{animation:sdFade .4s ease 2.35s forwards, sdFlow 1.7s linear 2.35s infinite;}

  @keyframes sdFade{ to{opacity:1;} }
  @keyframes sdDrop{ from{opacity:0;transform:translateY(-14px);} to{opacity:1;transform:translateY(0);} }
  @keyframes sdSlide{ from{opacity:0;transform:translateX(22px);} to{opacity:1;transform:translateX(0);} }
  @keyframes sdDraw{ to{stroke-dashoffset:0;} }
  @keyframes sdPop{ from{opacity:0;transform:scale(.2);} to{opacity:1;transform:scale(1);} }
  @keyframes sdFlow{ from{stroke-dashoffset:0;} to{stroke-dashoffset:-40;} }

  /* ===== BEWEGING BEPERKEN ===== */
  @media (prefers-reduced-motion: reduce){
    *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;
      transition-duration:.001ms !important;}
    html{scroll-behavior:auto;}
    .review-track{animation:none !important;}
    .js-anim .reveal{opacity:1 !important;transform:none !important;}
    .js-anim .splitdemo .sd-scene,.js-anim .splitdemo .sd-inner,.js-anim .splitdemo .sd-outer,
    .js-anim .splitdemo .sd-dim,.js-anim .splitdemo .sd-hole{opacity:1 !important;transform:none !important;}
    .js-anim .splitdemo .sd-pipe{stroke-dashoffset:0 !important;}
    .sd-replay{display:none;}
  }
  @media(max-width:700px){
    .sd-svg .sd-zone{font-size:17px;}
    .sd-svg .sd-lbl{font-size:17px;}
    .sd-svg .sd-dimtxt{font-size:23px;}
  }
  /* ===== MOBIELE CORRECTIES ===== */
  .logo .vb-logo, .foot-logo .vb-logo{max-width:100%;}
  header .headbar{gap:12px;}
  header nav{flex:none;}
  .call-pill{white-space:nowrap;flex:none;}
  .hamburger{width:44px !important;height:44px !important;flex:none;align-items:center;}
  .hamburger span{width:24px;margin:0 auto;}
  /* main[id] staat hier mee in sinds v3.1. Zonder dat landt de nieuwe
     skiplink "naar de inhoud" onder de vastgeplakte kopbalk, en dan springt
     de bezoeker naar iets wat hij niet ziet. */
  section[id], main[id], header{scroll-margin-top:0;}
  section[id], main[id]{scroll-margin-top:var(--kop-marge,118px);}

  /* Logo-opbouw (groot -> klein) hoort hier allemaal samen te staan, van breed naar smal scherm,
     zodat een smallere @media-regel altijd na de bredere komt en die dus correct overschrijft -
     stond dit door elkaar (zoals de oude 430px-regel vóór de 480px-regel), dan won de verkeerde
     regel op sommige schermbreedtes. */
  @media(max-width:1150px){
    .logo .vb-logo{height:90px !important;width:265px !important;}
    section[id]{scroll-margin-top:var(--kop-marge,100px);}
  }
  @media(max-width:900px){
    .headbar{padding:4px 20px;}
    .logo .vb-logo{height:78px !important;width:229px !important;}
    .call-pill{padding:9px 14px;font-size:13px;}
    section[id]{scroll-margin-top:var(--kop-marge,88px);}
  }
  @media(max-width:640px){
    .foot-logo .vb-logo{height:96px !important;width:282px !important;}
  }

  /* ruimere tikvlakken op aanraakschermen */
  @media(hover:none){
    .qf-radio label{padding:12px 16px;}
    .qf-field input, .qf-field select, .qf-field textarea{padding:13px 14px;font-size:16px;}
    .qf-roomblock select, .qf-roomblock input[type="number"]{padding:12px 12px;font-size:16px;}
    .sd-replay{padding:11px 18px;}
    .qf-photo-btn{padding:12px 16px;}
    .qf-fotolijst{gap:18px;}
    .qf-foto{width:96px;}
    .qf-foto img{width:96px;height:96px;}
    .qf-foto-weg{width:30px;height:30px;line-height:28px;font-size:17px;top:-10px;right:-10px;}
    .qf-addroom{padding:12px 16px;}
    footer ul a{display:inline-block;padding:4px 0;}
    .faq-q{padding:20px 0;}
    .navlink{padding:2px 0;}
  }
  @media(hover:none){
    .call-pill{padding:11px 15px;}
    .sd-replay{padding:13px 18px;}
    /* 37 px gemeten (10 + 17 + 10). Het stijlblad zet zelf 44 als
       norm - zie a.pill hieronder - en hier staat de offertelink. */
    footer ul a{padding:10px 0;min-height:44px;display:inline-flex;align-items:center;}
    .foot-bottom a{display:inline-block;padding:9px 0;position:relative;z-index:2;}
    .quote-note a, .qf-hint a{display:inline-block;padding:5px 0;}
  }
  @media(max-width:560px){
    .stat-strip{gap:10px;margin-top:40px;padding-top:22px;}
    .stat{flex:1 1 0;min-width:0;padding-right:0;}
    .stat .num{font-size:19px;}
    .stat .lbl{font-size:10px;margin-top:3px;}
  }
  /* ===== HERO-DEMO ZONDER JAVASCRIPT ===== */
  .mode-input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;}
  .mode-btn{display:inline-flex;align-items:center;justify-content:center;user-select:none;}
  .unit-label .lbl-heat{display:none;}
  .unit-demo:has(#btnHeat:checked) .lbl-cool{display:none;}
  .unit-demo:has(#btnHeat:checked) .lbl-heat{display:block;}
  .unit-demo:has(#btnCool:checked) .mode-btn.cool{background:var(--accent);color:#fff;}
  .unit-demo:has(#btnHeat:checked) .mode-btn.heat{background:var(--gold);color:#241300;}
  .unit-demo:has(#btnHeat:checked){background:radial-gradient(120% 120% at 30% 20%, #4A2A0E 0%, #251206 70%);}
  .unit-demo:has(#btnHeat:checked) .particle{background:var(--gold-soft);animation:rise linear infinite;}
  .unit-demo:has(#btnCool:checked) .particle{background:var(--accent-soft);animation:fall linear infinite;}
  .unit-demo:has(#btnHeat:checked) .flow-line{stroke:var(--gold-soft);animation:flowheat 2.4s linear infinite;opacity:0.75;}
  .unit-demo:has(#btnCool:checked) .flow-line{stroke:var(--accent-soft);animation:flowcool 2.4s linear infinite;opacity:0.75;}
  .unit-demo:has(#btnHeat:checked) .unit-label{color:#FBE3BF;}
  .mode-input:focus-visible + .mode-btn{outline:2px solid #fff;outline-offset:2px;}

  /* ===== OFFERTEFORMULIER ZONDER JAVASCRIPT ===== */
  .quote-form:has(#dAirco:checked) #aircoFields,
  .quote-form:has(#dOnderhoud:checked) #onderhoudFields,
  .quote-form:has(#dElek:checked) #elekFields,
  .quote-form:has(#dLaad:checked) #laadFields,
  .quote-form:has(#dAnders:checked) #andersFields{display:block;}
  .quote-form:has(#dAirco:checked) #onderhoudFields,
  .quote-form:has(#dAirco:checked) #elekFields,
  .quote-form:has(#dAirco:checked) #laadFields,
  .quote-form:has(#dAirco:checked) #andersFields,
  .quote-form:has(#dOnderhoud:checked) #aircoFields,
  .quote-form:has(#dOnderhoud:checked) #elekFields,
  .quote-form:has(#dOnderhoud:checked) #laadFields,
  .quote-form:has(#dOnderhoud:checked) #andersFields,
  .quote-form:has(#dElek:checked) #aircoFields,
  .quote-form:has(#dElek:checked) #onderhoudFields,
  .quote-form:has(#dElek:checked) #laadFields,
  .quote-form:has(#dElek:checked) #andersFields,
  .quote-form:has(#dLaad:checked) #aircoFields,
  .quote-form:has(#dLaad:checked) #onderhoudFields,
  .quote-form:has(#dLaad:checked) #elekFields,
  .quote-form:has(#dLaad:checked) #andersFields,
  .quote-form:has(#dAnders:checked) #aircoFields,
  .quote-form:has(#dAnders:checked) #onderhoudFields,
  .quote-form:has(#dAnders:checked) #elekFields,
  .quote-form:has(#dAnders:checked) #laadFields{display:none;}
  .quote-form:has(#sMulti:checked) #singleUnitBlock{display:none;}
  .quote-form:has(#sMulti:checked) .qf-multi-only{display:block;}

  /* ===== TELEFOONKNOP OP SMALLE SCHERMEN ===== */
  .call-ico{display:none;width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;
    stroke-linecap:round;stroke-linejoin:round;}
  .mobile-call{display:none;align-items:center;gap:10px;padding:16px 24px;color:#fff !important;
    font-family:'JetBrains Mono',monospace;font-size:16px;background:rgba(240,149,6,0.12);
    border-bottom:1px solid rgba(255,255,255,0.08);}
  .mobile-call svg{width:18px;height:18px;fill:none;stroke:var(--gold);stroke-width:2;
    stroke-linecap:round;stroke-linejoin:round;flex:none;}
  @media(max-width:1150px){ .mobile-nav .mobile-call{display:flex;} }
  /* Onder 760px past het volledige telefoonnummer niet meer naast het logo, de
     taalknop en de hamburger. Het werd dan naar rechts geduwd en de hamburger
     viel buiten beeld — precies de breedte van een half venster op een laptop.
     Het nummer wordt hier een ronde belknop; tikken werkt nog gewoon. */
  @media(max-width:760px){
    .call-pill{padding:0 !important;width:44px;height:44px;justify-content:center;border-radius:50%;}
    .call-pill .call-num, .call-pill .dot{display:none;}
    .call-pill .call-ico{display:block;}
  }
  @media(max-width:480px){
    .logo .vb-logo{height:56px !important;width:165px !important;}
  }
  @media(max-width:430px){
    section[id]{scroll-margin-top:var(--kop-marge,80px);}
    .headbar{padding:4px 14px;gap:8px;}
    .logo .vb-logo{height:52px !important;width:153px !important;}
  }
  /* Op de kleinste toestellen (een oude iPhone SE is 320px breed) past het niet
     meer met de taalknop op volle grootte. Die wordt hier compacter; alles
     blijft zichtbaar en aantikbaar. */
  @media(max-width:380px){
    .taal-switch{padding:2px;font-size:11px;}
    .taal-switch a{padding:4px 7px;}
  }
  @media(max-width:340px){
    .logo .vb-logo{height:44px !important;width:129px !important;}
    .headbar{padding:4px 8px;gap:5px;}
    .taal-switch a{padding:4px 6px;}
  }
  /* toggle en label mochten maar de halve breedte gebruiken -> tekst brak af */
  .unit-demo .mode-toggle{left:0 !important;right:0 !important;transform:none !important;
    margin:0 auto;width:max-content;max-width:calc(100% - 24px);}
  .unit-demo .unit-label{left:0 !important;right:0 !important;transform:none !important;
    width:100%;padding:0 16px;}
  .mode-btn{white-space:nowrap;}
  .mobile-nav.open{max-height:640px;}
  .mobile-nav{overscroll-behavior:contain;}
  @media(max-width:820px){
  }
  /* ===== RUIMTES ZONDER JAVASCRIPT ===== */
  .room-toggle{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none;}
  .room-extra{display:none;}
  .room-add{display:none;}
  #addRoom2 + .room-add{display:inline-flex;}
  #addRoom2:checked + .room-add{display:none;}
  #addRoom2:checked + .room-add + .room-extra{display:block;}
  #addRoom2:checked ~ #addRoom3 + .room-add{display:inline-flex;}
  #addRoom2:checked ~ #addRoom3:checked + .room-add{display:none;}
  #addRoom2:checked ~ #addRoom3:checked + .room-add + .room-extra{display:block;}
  #addRoom2:checked ~ #addRoom3:checked ~ #addRoom4 + .room-add{display:inline-flex;}
  #addRoom2:checked ~ #addRoom3:checked ~ #addRoom4:checked + .room-add{display:none;}
  #addRoom2:checked ~ #addRoom3:checked ~ #addRoom4:checked + .room-add + .room-extra{display:block;}
  #addRoom2:checked ~ #addRoom3:checked ~ #addRoom4:checked ~ #addRoom5 + .room-add{display:inline-flex;}
  #addRoom2:checked ~ #addRoom3:checked ~ #addRoom4:checked ~ #addRoom5:checked + .room-add{display:none;}
  #addRoom2:checked ~ #addRoom3:checked ~ #addRoom4:checked ~ #addRoom5:checked + .room-add + .room-extra{display:block;}
  .qf-roomblock-nr{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--accent-tekst);
    text-transform:uppercase;letter-spacing:0.06em;display:block;margin-bottom:10px;}
  label.qf-roomblock-remove{cursor:pointer;font-size:22px;line-height:1;padding:2px 6px;border-radius:6px;}
  label.qf-roomblock-remove:hover{color:#c0392b;background:#fff;}
  .room-add{margin-bottom:12px;}
  @media(max-width:640px){
    .qf-roomblock{padding:14px;}
    .room-add{width:100%;justify-content:center;}
  }
  .hero-contact{font-size:14px;color:#9FB2D1;margin:18px 0 0;line-height:1.7;}
  .hero-contact a{color:var(--accent-soft);border-bottom:1px solid rgba(159,191,239,0.45);padding-bottom:1px;}
  .hero-contact a:hover{color:#fff;border-color:#fff;}
  @media(max-width:520px){
    .hero-contact .hc-sep{display:none;}
    .hero-contact .hc-uren{display:block;margin-top:4px;}
  }
  .mobile-mail{background:rgba(22,109,244,0.14) !important;font-size:15px !important;}
  .mobile-mail svg{stroke:var(--accent-soft) !important;fill:none;stroke-width:1.8;}
  /* belknop duidelijk als knop, niet als tekeningetje */
  @media(max-width:480px){
    .call-pill{background:var(--gold);border-color:var(--gold) !important;color:#241300 !important;}
    .call-pill:active{background:var(--gold-soft);}
    .call-pill .call-ico{stroke-width:2.2;}
  }
  .legal-overlay:target{display:flex;}
  .legal-overlay.open{display:flex;}
  a.legal-close{display:flex;align-items:center;justify-content:center;width:40px;height:40px;
    text-decoration:none;}
  /* hero compacter op gsm, zodat het mailadres binnen het eerste scherm valt */
  @media(max-width:700px){
    .hero{padding:40px 0 32px;}
    .eyebrow{margin-bottom:14px;padding:5px 12px;font-size:11.5px;}
    .hero h1{font-size:29px;line-height:1.13;}
    .hero p.lead{margin:16px 0 22px;line-height:1.55;}
    .btnrow{gap:10px;}
    .btn{padding:13px 20px;}
    .hero-contact{margin-top:14px;font-size:14.5px;color:#C9D8ED;}
  }
  .hero-contact a{color:#fff;font-weight:600;border-bottom-color:rgba(255,255,255,0.55);}
  .hero-contact a:hover{border-bottom-color:#fff;}
  /* ===== REALISATIEKAARTEN ===== */
  .rz-intro{font-size:14.5px;color:var(--slate);line-height:1.6;margin:0 0 20px;max-width:620px;}
  .rz-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;}
  @media(max-width:900px){ .rz-grid{grid-template-columns:1fr;} }
  /* Een raster met maar een project: dan niet in twee kolommen blijven staan,
     want de tweede helft blijft leeg. Een enkele kaart staat gecentreerd. */
  .rz-grid-1{grid-template-columns:minmax(0,560px);justify-content:center;}
  .rz-card{background:#fff;border:1px solid var(--line-dark);border-radius:16px;overflow:hidden;
    box-shadow:0 6px 20px rgba(10,26,48,0.05);transition:transform .25s ease, box-shadow .25s ease;}
  .rz-card:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(10,26,48,0.12);}
  .rz-shots{display:grid;grid-template-columns:repeat(2,1fr);gap:3px;background:#fff;}
  .rz-shots img{width:100%;height:186px;object-fit:cover;display:block;cursor:zoom-in;}
  .rz-3 img:first-child{grid-column:span 2;height:230px;}
  @media(max-width:520px){ .rz-shots img{height:150px;} .rz-3 img:first-child{height:190px;} }
  .rz-body{padding:16px 18px 18px;}
  .rz-tag{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--accent);
    text-transform:uppercase;letter-spacing:0.05em;display:block;margin-bottom:6px;}
  .rz-body h3{font-family:'Space Grotesk',sans-serif;font-size:15.5px;color:var(--ink);
    line-height:1.4;margin:0;font-weight:600;}
  /* De foto is 760x1053 - staand, en dus erg hoog. Op ware verhouding werd ze
     602 px en trok ze de hele linkerkolom uit. 4:5 houdt ze staand maar
     rustiger; de uitsnede zit iets boven het midden, want daar staat Stephen
     op de ladder. */
  .cb-foto{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:50% 42%;
    border-radius:11px;display:block;margin-bottom:14px;}
  .rz-2 img{height:200px;}
  .rz-4 img{height:172px;}
  .rz-5 img:first-child{grid-column:span 2;height:214px;}
  .rz-5 img{height:160px;}
  @media(max-width:520px){ .rz-2 img,.rz-4 img,.rz-5 img,.rz-7 img{height:146px;}
    .rz-5 img:first-child,.rz-7 img:first-child{height:184px;} }
  .rz-meer{font-size:14px;color:var(--slate);margin:20px 0 0;line-height:1.6;}
  .rz-meer a{color:var(--accent);font-weight:600;border-bottom:1px solid rgba(22,109,244,0.35);}
  .rz-shots img{height:auto !important;aspect-ratio:4/5;}
  /* Deze regel stond hier fout en is weg. 'img:first-child' raakt namelijk
     ELKE foto: elke <img> is het eerste kind van zijn eigen <a>. Daardoor
     kregen ook de tweede en derde tegel de brede 8:5-verhouding en werden ze
     half zo hoog als ze hoorden. De juiste versie, op de link in plaats van
     op het beeld, staat verderop bij .rz-3 a.foto-link:first-child. */
  .gallery-3 img{height:auto !important;aspect-ratio:4/5;}
  /* Foto's van verschillende vorm naast elkaar, zonder te snijden. De breedte
     van elke kolom volgt de verhouding van de foto - --r is breedte gedeeld
     door hoogte, met dezelfde cijfers als de width/height in de HTML - en dan
     zijn ze allemaal automatisch even hoog. Met twee gelijke kolommen werd de
     staande foto veel hoger dan de liggende en bleef er een gat onder. */
  .gallery-vrij{display:flex;flex-wrap:wrap;align-items:flex-start;gap:16px;}
  .gallery-vrij > .foto-link{flex:var(--r,1) 1 0;min-width:0;}
  .gallery-vrij img{width:100%;height:auto !important;aspect-ratio:auto !important;
    object-fit:contain;border-radius:12px;background:#fff;}
  @media(max-width:640px){ .gallery-vrij > .foto-link{flex-basis:100%;} }
  .rz-een{grid-template-columns:1fr;max-width:660px;}
  .rz-1{grid-template-columns:1fr;}
  .rz-1 img{aspect-ratio:4/5;}
  .ico{width:15px;height:15px;flex:none;display:inline-block;vertical-align:-2px;}
  .mode-btn .ico{width:14px;height:14px;margin-right:7px;}
  .eyebrow .ico{width:14px;height:14px;margin-right:2px;}
  .qf-photo-btn .ico{margin-right:7px;}
  .toppro .ico{width:13px;height:13px;}
  .qf-vangnet{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
  /* ===== Het korte formulier =====
     Vier grote knoppen in plaats van een rij kleine bolletjes, en een ruim
     tekstvak. Alles wat de bezoeker niet meteen nodig heeft, zit weggeklapt
     achter "Liever meteen een richtprijs?". */
  .qf-keuzes{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
  /* De tegels staan in een .qf-field, en daar krijgt elk label normaal het kleine
     mono-hoofdletterlettertype. Dat willen we hier juist niet. */
  .qf-keuze, .qf-keuze b, .qf-keuze span{font-family:'Inter',sans-serif;
    text-transform:none;letter-spacing:normal;}
  .qf-keuze{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;
    border:1.5px solid var(--line-dark);border-radius:14px;padding:16px 15px 15px;cursor:pointer;
    background:#fff;transition:border-color .16s ease, box-shadow .16s ease, background .16s ease;}
  .qf-keuze:hover{border-color:rgba(22,109,244,0.45);background:#FAFCFF;}
  .qf-keuze input{position:absolute;opacity:0;width:1px;height:1px;}
  .qf-keuze svg{width:26px;height:26px;color:var(--accent);flex:none;}
  .qf-keuze b{font-size:15.5px;font-weight:600;color:var(--ink);line-height:1.3;}
  .qf-keuze span{font-size:12.5px;color:var(--slate);line-height:1.45;}
  .qf-keuze:has(input:checked){border-color:var(--accent);background:#F2F7FF;
    box-shadow:0 0 0 3px rgba(22,109,244,0.13);}
  .qf-keuze:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px;}
  /* Vijf tegels in twee kolommen: de laatste neemt de volle breedte,
     zodat er geen gat overblijft. */
  .qf-keuze-breed{grid-column:1 / -1;flex-direction:row;align-items:center;gap:13px;padding:14px 15px;}
  .qf-keuze-breed b{font-size:15px;}
  .qf-keuze-breed > span{margin-left:auto;text-align:right;}
  @media(max-width:430px){ .qf-keuzes{grid-template-columns:1fr;}
    .qf-keuze{flex-direction:row;align-items:center;gap:13px;padding:14px 15px;}
    .qf-keuze b{font-size:15px;} .qf-keuze span{display:none;} }

  .qf-vraag{min-height:132px;font-size:15.5px;line-height:1.6;}

  /* ===== De simulatie =====
     De uitnodiging staat in de kolom NAAST het formulier, niet erin. Zo ziet
     wie gewoon een vraag wil stellen een kort formulier van drie stapjes, en
     staat de vragenlijst er als een duidelijke keuze naast. */
  .sim-kaart{background:#fff;border:1.5px solid rgba(22,109,244,0.28);border-radius:16px;
    padding:22px 22px 20px;margin:0 0 18px;box-shadow:0 3px 14px rgba(10,26,48,.05);}
  .sim-kicker{display:inline-block;font-family:'JetBrains Mono',monospace;font-size:11px;
    text-transform:uppercase;letter-spacing:.09em;color:var(--accent-tekst);
    background:rgba(22,109,244,.09);border-radius:999px;padding:4px 10px;margin:0 0 12px;}
  .sim-kaart h3,.sim-kaart .sim-kop{font-size:18px;line-height:1.35;margin:0 0 10px;color:var(--ink);}
  .sim-kaart p{font-size:13.5px;line-height:1.6;color:var(--slate);margin:0 0 16px;}
  .sim-knop{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;
    background:var(--accent);color:#fff;border:0;border-radius:10px;padding:13px 16px;
    font:inherit;font-size:14.5px;font-weight:600;cursor:pointer;
    transition:background .16s ease;}
  .sim-knop:hover{background:#0B4FBF;}
  .sim-knop:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
  .sim-plus{font-size:18px;line-height:1;transition:transform .2s ease;}
  .sim-knop[aria-expanded="true"] .sim-plus{transform:rotate(45deg);}
  .sim-voet{font-size:12.5px;color:var(--slate);margin:14px 0 0 !important;}
  /* Zichtbaar maken dat de vragenlijst gekozen is */
  .sim-kaart.gekozen{border-color:var(--accent);background:#F5F9FF;
    box-shadow:0 0 0 3px rgba(22,109,244,.10);}
  .sim-kaart.gekozen .sim-knop{background:#fff;color:var(--accent);
    border:1.5px solid rgba(22,109,244,.45);}
  .sim-kaart.gekozen .sim-knop:hover{background:#EEF4FF;}
  .sim-kaart.gekozen .sim-kicker::after{content:" \2713";font-weight:700;}


  /* ===== Foto's op een gemeentepagina =====
     Het blok staat rechtsboven naast de tekst; de tekst loopt eromheen.
     Zijn er meerdere foto's, dan draaien ze in een 3D-slide: de middelste
     groot vooraan, de buren kleiner en weggedraaid. De stand wordt door
     JavaScript gezet (deel/voet.php). Zonder JavaScript blijft de eerste
     foto gewoon staan - vandaar de beginstand hieronder. */
  .gem-media{margin:0 auto 22px;max-width:420px;}
  @media(min-width:860px){
    .gem-media{float:right;width:352px;margin:0 0 20px 32px;}
  }
  .gem-media-onder{font-size:13px;color:var(--slate);line-height:1.6;margin:10px 2px 0;}
  .gem-media-onder strong{color:var(--ink);}

  /* Eén foto: geen slide, gewoon de foto. */
  .gem-solo{margin:0;}
  .gem-solo img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;display:block;
    border-radius:14px;background:#EEF1F6;box-shadow:0 14px 34px rgba(9,34,73,.18);}
  .gem-solo figcaption{font-size:12.5px;color:var(--slate);line-height:1.5;margin:10px 2px 0;}

  /* Meerdere foto's: de 3D-slide. */
  .gem-slide-baan{position:relative;aspect-ratio:1/1;overflow:hidden;
    perspective:1000px;perspective-origin:50% 46%;transform-style:preserve-3d;}
  .gem-dia{position:absolute;top:50%;left:50%;width:62%;margin:0;opacity:0;z-index:1;
    transform:translate(-50%,-50%);
    transition:transform .62s cubic-bezier(.22,.61,.36,1), opacity .62s ease;
    will-change:transform,opacity;}
  .gem-dia:first-child{opacity:1;z-index:20;}
  .gem-dia img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;display:block;
    border-radius:12px;background:#EEF1F6;
    box-shadow:0 16px 36px rgba(9,34,73,.24);
    transition:box-shadow .62s ease;}
  .gem-dia.ver img{box-shadow:0 8px 18px rgba(9,34,73,.13);}
  .gem-dia.klikbaar{cursor:pointer;}
  .gem-slide-bij{font-size:12.5px;color:var(--slate);line-height:1.5;
    margin:2px 4px 0;text-align:center;min-height:3em;}
  /* min-height:44px omdat het aanraakvlak hieronder 44 px hoog is: zonder deze hoogte
     steekt dat vlak 17 px boven en onder de rij uit en vangt het tikken weg van de
     tekst eronder. De rij is dus 44 px hoog, de stippen staan in het midden. */
  .gem-slide-stippen{display:flex;justify-content:center;align-items:center;gap:35px;margin:2px 0 0;min-height:44px;}
  /* HET AANRAAKVLAK IS 44x44, DE STIP BLIJFT 9x9.
     Gemeten op 9 september 2026 met een grove aanwijzer (any-pointer:coarse) op
     375 px: 9,0 x 9,0 px voor een gewone stip en 12,1 x 12,2 voor de actieve, en
     geen enkel pseudo-element dat dat vlak vergrootte. Met een duim raak je dat
     niet. De stip zelf groter maken zou lelijk zijn - dus blijft ze 9 px en ligt
     er een onzichtbaar vlak van 44 px overheen, precies zoals bij de voetlinks.
     De gap gaat mee omlaag zodat de vlakken elkaar niet overlappen. */
  .gem-slide-stippen button{width:9px;height:9px;padding:0;border:0;border-radius:50%;
    background:rgba(10,26,48,.18);cursor:pointer;position:relative;
    transition:background .25s ease, transform .25s ease;}
  .gem-slide-stippen button::after{content:'';position:absolute;
    left:50%;top:50%;width:44px;height:44px;transform:translate(-50%,-50%);}
  .gem-slide-stippen button:hover{background:rgba(10,26,48,.34);}
  .gem-slide-stippen button.actief{background:var(--gold);transform:scale(1.35);}
  @media(prefers-reduced-motion:reduce){
    .gem-dia, .gem-dia img{transition:none;}
  }

  /* ===== Installaties in de aircovragenlijst =====
     Eén installatie = één buitenunit. Een single split heeft er één binnenunit
     aan hangen, een multi-split meerdere. Wie in één huis drie losse systemen
     wil, voegt gewoon drie installaties toe. */
  .qf-inst{border:1.5px solid var(--line-dark);border-radius:14px;padding:16px 16px 14px;
    margin:0 0 12px;background:#fff;}
  .qf-inst[hidden]{display:none;}
  .qf-inst-kop{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px;}
  .qf-inst-kop b{font-size:14.5px;color:var(--ink);}
  .inst-weg{background:none;border:0;color:var(--slate);font:inherit;font-size:12.5px;
    cursor:pointer;padding:4px 8px;border-radius:6px;}
  .inst-weg:hover{color:#B0301F;background:rgba(176,48,31,.08);}
  .qf-inst-type{margin:0 0 14px;}
  .qf-inst-sub{display:block;font-size:11px;opacity:.75;font-weight:400;margin-top:1px;}
  .qf-units{display:grid;gap:10px;}
  .qf-unit{position:relative;border:1px solid var(--line-dark);border-radius:11px;
    padding:12px 13px;background:#FAFBFD;}
  .qf-unit[hidden]{display:none;}
  .qf-unit-nr{display:block;font-family:'JetBrains Mono',monospace;font-size:10.5px;
    text-transform:uppercase;letter-spacing:.07em;color:var(--slate);margin:0 0 9px;}
  .unit-weg{position:absolute;top:7px;right:8px;background:none;border:0;color:var(--slate);
    font-size:19px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px;}
  .unit-weg:hover{color:#B0301F;background:rgba(176,48,31,.08);}
  .qf-unit-erbij, .qf-inst-erbij{display:block;width:100%;margin:10px 0 0;padding:11px 14px;
    background:#F1F5FC;border:1.5px dashed rgba(22,109,244,.4);border-radius:11px;
    color:var(--accent);font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;
    transition:background .15s ease, border-color .15s ease;}
  .qf-unit-erbij:hover, .qf-inst-erbij:hover{background:#E7EFFC;border-color:var(--accent);}
  .qf-unit-erbij[hidden], .qf-inst-erbij[hidden]{display:none;}
  .qf-inst-erbij{background:#fff;border-style:solid;}

  /* ===== Het formulier in stappen =====
     Eén stap tegelijk in beeld. Wie gewoon een vraag wil stellen doorloopt vier
     korte schermpjes; wie een richtprijs wil, wisselt bij stap 3 naar de
     vragenlijst en komt daarna gewoon weer bij stap 4 uit. */
  .qf-stappenbalk{display:flex;list-style:none;padding:0;margin:0 0 24px;gap:6px;
    font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.04em;}
  .qf-stappenbalk li{flex:1;display:flex;align-items:center;gap:7px;color:var(--slate);
    padding:8px 4px 10px;border-bottom:2.5px solid var(--line-dark);
    text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    transition:color .18s ease, border-color .18s ease;}
  .qf-stappenbalk li span{flex:none;width:20px;height:20px;border-radius:50%;
    background:var(--line-dark);color:#455468;display:flex;align-items:center;
    justify-content:center;font-size:11px;font-weight:600;transition:background .18s ease, color .18s ease;}
  .qf-stappenbalk li em{font-style:normal;}
  .qf-stappenbalk li.gedaan{color:var(--accent);border-color:rgba(22,109,244,.4);}
  .qf-stappenbalk li.gedaan span{background:rgba(22,109,244,.15);color:var(--accent);}
  .qf-stappenbalk li.bezig{color:var(--ink);border-color:var(--gold);}
  .qf-stappenbalk li.bezig span{background:var(--gold);color:#241300;}
  @media(max-width:560px){
    .qf-stappenbalk{font-size:0;gap:5px;}
    .qf-stappenbalk li{justify-content:center;padding:8px 0 10px;}
    .qf-stappenbalk li span{font-size:11px;}
  }

  .qf-stap[hidden]{display:none;}

  .qf-stapnav{display:flex;align-items:center;gap:12px;margin:26px 0 0;
    padding-top:20px;border-top:1px solid var(--line-dark);}
  .qf-terug{background:none;border:1.5px solid var(--line-dark);border-radius:10px;
    padding:12px 18px;font:inherit;font-size:14px;color:var(--slate);cursor:pointer;
    transition:border-color .15s ease, color .15s ease;}
  .qf-terug:hover{border-color:var(--accent);color:var(--accent);}
  .qf-terug[hidden]{display:none;}
  .qf-volgende{margin-left:auto;background:var(--accent);color:#fff;border:0;border-radius:10px;
    padding:13px 24px;font:inherit;font-size:15px;font-weight:600;cursor:pointer;
    transition:background .15s ease;}
  .qf-volgende:hover{background:#0B4FBF;}
  .qf-volgende[hidden]{display:none;}
  /* De verzendknop staat in de knoppenrij en verschijnt pas bij de laatste stap.
     display:none moet hier met !important: .qf-submit zet zelf display, en dat
     wint anders van het hidden-attribuut. */
  .qf-stapnav .qf-submit{margin-left:auto;width:auto;margin-top:0;}
  .qf-submit[hidden], .qf-volgende[hidden], .qf-terug[hidden]{display:none !important;}
  .qf-stapnav .qf-privacy{display:none;}
  .qf-terug:focus-visible, .qf-volgende:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}

  /* Wisselen tussen de korte aanvraag en de vragenlijst */
  .qf-wissel{margin:20px 0 0;padding:14px 16px;background:#F5F7FB;border-radius:11px;
    font-size:13.5px;color:var(--slate);line-height:1.6;}
  .qf-wissel-boven{margin:0 0 20px;}
  .qf-wisselknop{display:inline;background:none;border:0;padding:0;font:inherit;
    font-weight:600;color:var(--accent-tekst);cursor:pointer;text-decoration:underline;
    text-decoration-color:rgba(22,109,244,.45);text-underline-offset:2.5px;}
  .qf-wisselknop:hover{text-decoration-color:currentColor;}

  /* Een veld dat nog ingevuld moet worden */
  .qf-field input.mist, .qf-field select.mist, .qf-field textarea.mist{
    border-color:#D9534F !important;background:#FDF6F5;}
  .qf-veldfout{display:block;font-family:'Inter',sans-serif;text-transform:none;
    letter-spacing:normal;font-size:12.5px;color:#B0301F;margin:5px 0 0;}
  /* Klein zinnetje onder een veld: geen fout, wel iets dat helpt. */
  .qf-veldhint{display:block;font-size:12px;color:var(--slate);line-height:1.5;margin:6px 2px 0;}

  .qf-privacy{font-size:12.5px;color:var(--slate);line-height:1.6;margin:16px 0 14px;}
  .qf-privacy a{color:var(--accent);font-weight:600;}
  .qf-melding{display:none;border-radius:12px;padding:16px 18px;margin:18px 0 0;font-size:14.5px;line-height:1.6;}
  .qf-melding strong{display:block;margin-bottom:2px;}
  .qf-ok{background:#E9F6EC;border:1px solid #B7E0C1;color:#1B5E2B;}
  .qf-fout{background:#FDECEA;border:1px solid #F2C0BA;color:#8A2318;}
  .qf-druk{background:#FFF6E5;border:1px solid #F2DCB0;color:#6B4A08;}
  body.verzonden #melding-ok{display:block;}
  body.mislukt #melding-fout{display:block;}
  body.tedruk #melding-druk{display:block;}
  .sd-svg{cursor:pointer;}
  html.handmatig .sd-replay{display:inline-flex !important;}
  @media (prefers-reduced-motion: reduce){
    html.handmatig .splitdemo.playing .sd-scene,
    html.handmatig .splitdemo.playing .sd-inner,
    html.handmatig .splitdemo.playing .sd-outer,
    html.handmatig .splitdemo.playing .sd-dim,
    html.handmatig .splitdemo.playing .sd-hole{animation-duration:.5s !important;}
    html.handmatig .splitdemo.playing .sd-pipe{animation-duration:1.2s !important;}
    html.handmatig .splitdemo.playing .sd-flow{animation-duration:.4s, 1.7s !important;
      animation-iteration-count:1, infinite !important;}
    html.handmatig .splitdemo .sd-flow,
    html.handmatig .splitdemo .sd-flow-buiten,
    html.handmatig .splitdemo .sd-gas,
    html.handmatig .splitdemo .sd-vloeistof{display:block !important;}
  }
  /* Split en multi-split zijn allebei checkboxes (los aan te vinken, niet elkaars tegenpool) - elke hint
     hoort dus enkel bij zijn eigen checkbox, in plaats van de ene te tonen zodra de andere aanstaat. */
  /* ===== FAQ zonder JavaScript ===== */
  details.faq-item > summary{list-style:none;cursor:pointer;}
  details.faq-item > summary::-webkit-details-marker{display:none;}
  details.faq-item > summary::marker{content:'';}
  details.faq-item[open] .plus{transform:rotate(45deg);}
  details.faq-item .faq-a{max-height:none;overflow:visible;}
  details.faq-item[open] .faq-a{animation:faqOpen .26s ease-out;}
  @keyframes faqOpen{ from{opacity:0;transform:translateY(-6px);} to{opacity:1;transform:none;} }
  a.foto-link{display:block;line-height:0;}
  .rz-shots a.foto-link{display:block;}
  .rz-3 a.foto-link:first-child, .rz-5 a.foto-link:first-child{grid-column:span 2;}
  .rz-3 a.foto-link:first-child img, .rz-5 a.foto-link:first-child img{aspect-ratio:8/5;}
  .rz-1 a.foto-link{grid-column:1/-1;}
  /* Elke kaart toont hoogstens VIER foto's, hoeveel er ook bij het project
     horen. Een kaart met zeven tegels werd zoveel hoger dan de rest dat de
     kaart ernaast een groot leeg vlak kreeg. De overige foto's zijn niet weg:
     ze zitten in het album dat opengaat zodra je op een foto klikt.

     Deze regels moeten NA .rz-shots a.foto-link{display:block} staan, anders
     wint die en blijft alles zichtbaar. */
  .rz-shots a.foto-link{position:relative;}
  .rz-shots a.foto-link:nth-child(n+5){display:none;}
  /* Hoeveel foto's er nog achter zitten, op de vierde tegel. */
  .rz-meer-badge{position:absolute;inset:0;display:grid;place-items:center;
    background:rgba(9,34,73,.62);color:#fff;font-family:'Space Grotesk',sans-serif;
    font-weight:600;font-size:19px;letter-spacing:.01em;pointer-events:none;}
  .rz-shots a.foto-link:hover .rz-meer-badge{background:rgba(9,34,73,.5);}

  /* Vangnet voor oudere browsers die :has() nog niet kennen */
  @supports not selector(:has(*)){
    .qf-service-block{display:block;}
    .room-extra{display:block;}
    .room-add{display:none !important;}
    .unit-demo .mode-toggle{display:none;}
  }
  .alleen-zakelijk{display:none;}
  .quote-form:has(#kZakelijk:checked) .alleen-zakelijk{display:block;}
  @supports not selector(:has(*)){ .alleen-zakelijk{display:block;} }
  /* ===== SFEERBEELD ===== */
  .sfeer{background:var(--ink);color:#fff;padding:76px 0;}
  .sfeer-grid{display:grid;grid-template-columns:0.85fr 1.15fr;gap:48px;align-items:center;}
  @media(max-width:900px){ .sfeer-grid{grid-template-columns:1fr;gap:28px;} .sfeer{padding:56px 0;} }
  .sfeer-foto{margin:0;}
  .sfeer-foto img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;border-radius:16px;display:block;
    box-shadow:0 20px 50px rgba(0,0,0,0.35);cursor:zoom-in;}
  @media(max-width:900px){ .sfeer-foto img{aspect-ratio:5/4;} }
  .sfeer-tekst h2{font-size:30px;color:#fff;line-height:1.2;margin:6px 0 16px;}
  @media(max-width:640px){ .sfeer-tekst h2{font-size:24px;} }
  .sfeer-tekst p{font-size:16px;color:#C9D8ED;line-height:1.7;margin:0 0 22px;max-width:520px;}
  .sfeer-punten{list-style:none;margin:0;padding:0;display:grid;gap:11px;}
  .sfeer-punten li{position:relative;padding-left:28px;font-size:14.5px;color:#AFC1DD;line-height:1.55;}
  .sfeer-punten li::before{content:"";position:absolute;left:0;top:3px;width:16px;height:16px;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 10.6l3.6 3.6L16 5.6' fill='none' stroke='%235C93E0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}
  /* ===== OPROEP TOT REVIEW ===== */
  .review-cta{background:var(--deep);border:1px solid var(--line);border-radius:16px;
    padding:26px 28px;margin:0 0 34px;display:grid;grid-template-columns:1.35fr 1fr;gap:26px;align-items:center;}
  @media(max-width:860px){ .review-cta{grid-template-columns:1fr;padding:22px 20px;gap:18px;} }
  .rc-kicker{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--gold-soft);
    text-transform:uppercase;letter-spacing:0.06em;display:block;margin-bottom:6px;}
  .review-cta h3,.review-cta .rv-subkop{font-size:20px;color:#fff;margin-bottom:8px;line-height:1.3;}
  .review-cta p{font-size:14.5px;color:#AFC1DD;line-height:1.65;margin:0;}
  .rc-knoppen{display:flex;flex-direction:column;gap:10px;}
  .rc-knop{display:inline-flex;align-items:center;justify-content:center;gap:10px;
    padding:14px 18px;border-radius:10px;font-weight:600;font-size:14.5px;
    transition:transform .2s ease, box-shadow .2s ease;}
  .rc-knop:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,0,0,0.3);}
  .rc-knop svg{width:18px;height:18px;flex:none;}
  .rc-google{background:#fff;color:#1A1A1A;}
  .rc-knop{width:100%;padding:16px 20px;font-size:15px;}
  .rc-onder{display:block;font-size:12.5px;color:#8FA6C6;line-height:1.55;margin-top:10px;text-align:center;}
  .review-cta{grid-template-areas:"tekst knoppen" "stappen stappen";}
  .rc-tekst{grid-area:tekst;} .rc-knoppen{grid-area:knoppen;} .rc-stappen{grid-area:stappen;}
  @media(max-width:860px){ .review-cta{grid-template-areas:"tekst" "knoppen" "stappen";} }
  .rc-stappen{list-style:none;counter-reset:stap;margin:6px 0 0;padding:20px 0 0;
    border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
  @media(max-width:760px){ .rc-stappen{grid-template-columns:1fr;gap:14px;} }
  .rc-stappen li{counter-increment:stap;position:relative;padding-left:38px;font-size:13.5px;
    color:#9FB2D1;line-height:1.6;}
  .rc-stappen li::before{content:counter(stap);position:absolute;left:0;top:0;width:26px;height:26px;
    border-radius:50%;background:var(--gold);color:#241300;font-family:'Space Grotesk',sans-serif;
    font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;}
  .rc-stappen b{display:block;color:#fff;font-size:14.5px;margin-bottom:3px;font-weight:600;}
  .rc-stappen em{font-style:normal;color:#fff;font-weight:600;}
  .sterrenrij{display:flex;gap:3px;align-items:center;margin-top:5px;}
  .sterrenrij .ster{width:16px;height:16px;fill:rgba(255,255,255,0.18);flex:none;}
  .sterrenrij .ster.aan{fill:var(--gold);}
  .sterrenrij.mini .ster{width:13px;height:13px;}

  /* ===== OPSTARTSCHERM (bij de eerste keer openen deze browsersessie) =====
     Geen laadbalkje meer. Het logo staat er eerst dof en wordt van links naar
     rechts ingekleurd door een gouden lichtstreep: het logo IS de laadbalk.
     Hoe ver het staat, wordt door JavaScript gezet (zie onderaan de body), zodat
     het meeloopt met wat de pagina echt aan het doen is in plaats van blind af
     te tellen. Het kleurt altijd eerst volledig in voor het weggaat. */
  .site-splash{position:fixed;inset:0;z-index:9999;
    background:radial-gradient(1100px 500px at 15% -10%, #16345F 0%, var(--ink) 55%);
    display:flex;align-items:center;justify-content:center;
    transition:opacity 0.45s ease;}
  .site-splash.weg{opacity:0;pointer-events:none;}
  /* Het logo mag groot: pas dan is "Airco specialist & Elektriciteitswerken"
     eronder goed leesbaar. Het kadertje heeft exact de verhouding van het
     logobestand (968.898 : 339.101 = 2.857), zodat de tekening het volledig
     vult en de lichtstreep precies langs de rand van het logo loopt. */
  .site-splash-kern{position:relative;
    width:min(620px,86vw);
    height:calc(min(620px,86vw) / 2.857);}
  .site-splash-dof,.site-splash-vol{position:absolute;inset:0;
    background-image:url("../images/logo.svg");background-size:contain;
    background-position:center;background-repeat:no-repeat;}
  /* het doffe logo eronder: kleurloos en zwak, maar wel leesbaar */
  .site-splash-dof{filter:grayscale(1) brightness(2.4);opacity:0.22;}
  /* Standaard staat het volle logo er gewoon. Pas als JavaScript het overneemt
     wordt het weggeknipt - loopt er iets mis met dat script, dan ziet de
     bezoeker dus nog altijd het logo en geen leeg scherm. */
  .site-splash.bezig .site-splash-vol{clip-path:inset(0 100% 0 0);}
  /* De lichtstreep. De gloed zit in een ::before eronder en niet in een
     box-shadow: een box-shadow wordt namelijk weggeknipt achter de streep zelf,
     en dan krijg je een donkere kern midden in het licht. */
  .site-splash-streep{position:absolute;top:-7%;bottom:-7%;width:3px;left:0;opacity:0;
    background:linear-gradient(180deg,rgba(240,149,6,0),var(--gold) 30%,var(--gold) 70%,rgba(240,149,6,0));}
  .site-splash-streep::before{content:"";position:absolute;inset:-12px -13px;pointer-events:none;
    background:radial-gradient(closest-side,rgba(240,149,6,0.55),rgba(240,149,6,0) 72%);}
  @media (max-width:520px){
    .site-splash-streep{width:2px;}
  }
  /* Wie beweging heeft uitgezet, krijgt gewoon het logo - geen veeg, geen streep. */
  @media (prefers-reduced-motion:reduce){
    .site-splash.bezig .site-splash-vol{clip-path:none;}
    .site-splash-dof,.site-splash-streep{display:none;}
  }

  /* ===================================================================
     TOEGEVOEGD IN v3.1
     =================================================================== */

  /* --- Skiplink ----------------------------------------------------
     Wie met het toetsenbord werkt, moest eerst door de hele kopbalk en
     het menu tabben voor hij bij de inhoud kwam. Deze link staat als
     eerste in de body, is onzichtbaar tot hij focus krijgt, en springt
     dan naar <main id="inhoud">. */
  .skiplink{position:absolute;left:-9999px;top:0;z-index:1000;
    background:#fff;color:var(--accent-tekst);font-weight:600;}
  .skiplink:focus{left:10px;top:10px;padding:13px 20px;min-height:44px;
    display:inline-flex;align-items:center;
    border:2px solid var(--accent);border-radius:10px;
    box-shadow:0 6px 24px rgba(3,10,26,0.25);}

  /* --- Aanraakvlakken naar 44 px (WCAG 2.5.8) ----------------------
     Bij de taalknop wordt ALLEEN het onzichtbare vlak vergroot, met een
     ::after die buiten de letters uitsteekt. Zet je hier padding of
     min-height, dan wordt de kopbalk breder en dat is niet de bedoeling. */
  .taal-switch a{position:relative;}
  .taal-switch a::after{content:"";position:absolute;top:50%;left:50%;
    transform:translate(-50%,-50%);width:44px;height:44px;}
  /* De gemeentepillen: hier mag het vlak wel echt groter. */
  a.pill{min-height:44px;display:inline-flex;align-items:center;}

  /* --- /realisaties/: de filter en de extra regels op een kaart -----
     Zes klassen, en met opzet niet meer. De filterknoppen zijn gewone
     .pill-elementen: die bestaan al voor de gemeentelijst, zijn al 44 px
     hoog op een aanraakscherm (zie hierboven) en hebben al een
     .hier-toestand. Een tweede soort knop erbij zou er anders uitzien dan
     de rest van de site zonder dat iets daarom vraagt. */
  .rz-filter{display:flex;flex-direction:column;gap:14px;
    margin:26px 0 22px;padding:18px 20px;
    background:#F5F7FB;border:1px solid var(--line-dark);border-radius:14px;}
  .rz-filterrij{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;}
  /* Ook de ACTIEVE filter op 44 px. Die is een <span> en geen <a>, dus de
     regel a.pill{min-height:44px} hierboven raakt hem niet. Staat hij alleen
     op een regel, dan rekt hij ook niet mee met de flexregel: gemeten 37 px
     naast buren van 44. Er is niets om op te tikken, maar ongelijke hoogtes
     in dezelfde rij zien er slordig uit. */
  .rz-filter .pill{min-height:44px;display:inline-flex;align-items:center;}
  .rz-filterkop{font-family:'JetBrains Mono',monospace;font-size:12px;
    letter-spacing:.06em;text-transform:uppercase;color:var(--slate);
    min-width:86px;}
  .rz-uitslag{font-size:14.5px;color:var(--slate);margin:0 0 18px;}
  /* De feitenregel onder de titel: waar, met wat, wanneer. Klein en
     gedempt - de foto is het argument, dit is de onderbouwing. */
  .rz-feiten{font-family:'JetBrains Mono',monospace;font-size:12.5px;
    color:var(--slate);margin:6px 0 0;line-height:1.6;}
  .rz-tekst{font-size:14.5px;color:var(--ink);margin:10px 0 0;line-height:1.7;}
  @media(max-width:640px){
    .rz-filter{padding:14px;}
    .rz-filterkop{min-width:0;width:100%;}
  }

  /* --- Afdrukken ---------------------------------------------------
     Er was geen @media print. Wie een offertepagina afdrukte of als PDF
     bewaarde, kreeg de zwevende knoppen over de tekst, het opstartscherm
     mee, een kopbalk die op elke bladzijde opnieuw vastgeplakt stond, en
     de donkere kaarten als zwarte blokken uit de printer. */
  @media print{

    /* Alles wat op papier niets doet. */
    .site-splash,
    .whatsapp-fab, .wa-panel,
    .hamburger, .mobile-nav, .hoofdnav, .mobiel-sociaal,
    .taal-switch, .kop-sociaal,
    .qf-stappenbalk, .qf-volgende, .qf-terug, .qf-submit,
    .sd-replay, .mode-toggle,
    .zoom-overlay, .slide-stippen, .skiplink,
    .cookieregel{display:none !important;}

    /* De kopbalk mag niet blijven plakken: anders staat ze op elke
       bladzijde opnieuw over de tekst. */
    header{position:static !important;box-shadow:none !important;
      border-bottom:1px solid #999 !important;}

    /* Donkere tekst op wit, ook in de donkere kaarten. De sterretjes
       pakken alles: vullingen, verlopen en schaduwen gaan eruit en alle
       tekst wordt zwart. Zonder dit drukken de donkere blokken af als
       zwarte vlakken met onleesbare tekst erin. */
    html, body{background:#fff !important;}
    *, *::before, *::after{
      background-color:transparent !important;
      background-image:none !important;
      color:#000 !important;
      box-shadow:none !important;
      text-shadow:none !important;}

    a{color:#000 !important;text-decoration:underline;}

    /* Geen webadres achter de link plakken. Bij icoonlinks - Facebook,
       Instagram, telefoon - levert dat een bladzijde vol adressen op
       zonder dat er iets bij staat waar ze horen. */
    a[href]::after{content:"" !important;}

    /* Niets middendoor snijden. */
    img, figure, table, tr,
    .kaart, .faq-item, .quote-note, .review, .rz-kaart,
    .gemeente-kaart, .garantie-kaart{
      break-inside:avoid !important;
      page-break-inside:avoid !important;}
    h1, h2, h3{break-after:avoid !important;page-break-after:avoid !important;}
    img{max-width:100% !important;height:auto !important;}

    /* Nu de vullingen weg zijn, houden de kaders de structuur vast. */
    .quote-note, .faq-item, .kaart{border:1px solid #999 !important;}
  }
