/* SNOEK TEMPLATE VERSIE: 1.8.6 */
/* Nunito Sans, zelf gehost (1.6.0). De oude site laadde hem via Google Fonts;
   bij de omzetting was dat weggevallen en viel alles terug op Arial.
   Variabel lettertype: een bestand voor alle gewichten 200-1000. */
@font-face{font-family:'Nunito Sans';font-style:normal;font-weight:200 1000;font-display:swap;
  src:url(../fonts/nunito/nunito-sans-latin-normal.woff2) format('woff2-variations'),url(../fonts/nunito/nunito-sans-latin-normal.woff2) format('woff2')}
@font-face{font-family:'Nunito Sans';font-style:italic;font-weight:200 1000;font-display:swap;
  src:url(../fonts/nunito/nunito-sans-latin-italic.woff2) format('woff2-variations'),url(../fonts/nunito/nunito-sans-latin-italic.woff2) format('woff2')}
/* ============================================================
   Snoek Hoveniers — SP Page Builder / Helix Ultimate design
   Geport uit template.css v1.1.0 + SPPB-integratielaag (MMX)
   Alle Snoek-addons renderen naar de klassen in dit bestand.
   ============================================================ */

/* 1. TOKENS ---------------------------------------------------- */
:root{
  --green:#9eaf50; --green-dark:#7a8c35; --green-light:#e7ebd1;
  --grey-nav:#63686e; --grey-mid:#a9aaae; --grey-dark:#63686e;
  --red:#bf3a2d; --ink:#1a1a1a; --body:#3d3d3d; --muted:#666;
  --sand:#f5f3ee; --white:#fff; --max:1320px; --r:6px;
}

/* 2. BASE + verplichte overflow-fix ---------------------------- */
html,body{overflow-x:hidden;max-width:100vw}
body.site{
  font-family:'Nunito Sans','Proxima Nova',Arial,sans-serif;
  font-size:16px;line-height:1.75;color:var(--body);background:var(--white);
}
:where(body.site) h1,:where(body.site) h2,:where(body.site) h3{font-family:'Nunito Sans',Arial,sans-serif;font-weight:800;line-height:1.15;color:var(--ink)}
:where(body.site) h1{font-size:var(--h1)}
:where(body.site) h2{font-size:var(--h2)}
:where(body.site) h3{font-size:var(--fs-4);font-weight:800}
:where(body.site) p{font-size:var(--fs-2);line-height:1.75;color:var(--body)}
.wrap{max-width:var(--max);margin:0 auto;padding:0 48px}

/* 3. EYEBROW --------------------------------------------------- */
.eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--green);display:flex;align-items:center;gap:10px;margin-bottom:.9rem}
.eyebrow::before{content:'';width:28px;height:2px;background:var(--green);flex-shrink:0}

/* 4. BUTTONS --------------------------------------------------- */
.btn{display:inline-flex;align-items:center;gap:9px;font-family:inherit;font-size:16px;font-weight:700;text-decoration:none;padding:13px 28px;border-radius:var(--r);border:none;cursor:pointer;transition:all .22s ease;white-space:nowrap;line-height:1.2}
.btn-green{background:var(--green);color:#fff}
.btn-green:hover{background:var(--green-dark);transform:translateY(-2px);box-shadow:0 8px 24px rgba(158,175,80,.35);color:#fff}
.btn-outline{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.45)}
.btn-outline:hover{border-color:#fff;background:rgba(255,255,255,.1);color:#fff}
.btn-outline-dark{background:transparent;color:var(--green-dark);border:2px solid var(--green)}
.btn-outline-dark:hover{background:var(--green);color:#fff}
.btn-white{background:#fff;color:var(--green-dark)}
.btn-white:hover{background:var(--green-light);transform:translateY(-2px);color:var(--green-dark)}
.btn-ghost{display:inline-flex;align-items:center;gap:8px;color:rgba(255,255,255,.78);font-size:16px;font-weight:400;text-decoration:none;transition:color .2s}
.btn-ghost:hover{color:#fff}

/* 5. HELIX HEADER als grijze navbalk --------------------------- */
body.site #sp-header.sn-header{background:var(--grey-nav)!important;box-shadow:none;transition:box-shadow .35s;padding:0}
body.site #sp-header.sn-header .container-inner{max-width:var(--max);margin:0 auto;padding:0 48px}
body.site #sp-header.sn-header.sn-scrolled,
body.site #sp-header.sn-header.header-sticky{box-shadow:0 2px 20px rgba(0,0,0,.25);background:var(--grey-nav)!important}
body.site #sp-header.sn-header #sp-logo,body.site #sp-header.sn-header #sp-menu{padding-top:0;padding-bottom:0}
/* menu */
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent{background:transparent}
body.site #sp-header.sn-header .sp-megamenu-parent>li>a,
body.site #sp-header.sn-header .sp-megamenu-parent>li>span{font-size:.87rem;font-weight:600;color:rgba(255,255,255,.82);padding:8px 14px;border-radius:4px;transition:all .2s;line-height:1.2}
body.site #sp-header.sn-header .sp-megamenu-parent>li>a:hover,
body.site #sp-header.sn-header .sp-megamenu-parent>li.active>a,
body.site #sp-header.sn-header .sp-megamenu-parent>li.current>a{color:#fff;background:rgba(255,255,255,.1)}
/* contact/CTA menu-item: geef het menu-item in Joomla de class "nav-cta-item" */
body.site #sp-header.sn-header .sp-megamenu-parent>li.nav-cta-item>a{background:var(--green);color:#fff!important;border-radius:4px}
body.site #sp-header.sn-header .sp-megamenu-parent>li.nav-cta-item>a:hover{background:var(--green-dark)}
/* dropdown */
body.site #sp-header.sn-header .sp-megamenu-parent .sp-dropdown{border-top:3px solid var(--green);border-radius:0 0 6px 6px;box-shadow:0 8px 32px rgba(0,0,0,.14)}
body.site #sp-header.sn-header .sp-megamenu-parent .sp-dropdown .sp-dropdown-items>li>a{color:var(--grey-dark);font-weight:600;font-size:.85rem}
body.site #sp-header.sn-header .sp-megamenu-parent .sp-dropdown .sp-dropdown-items>li>a:hover{background:var(--green-light);color:var(--green-dark)}
/* burger */
body.site #sp-header.sn-header .burger-icon span{background:#fff}
body.site .offcanvas-menu{background:var(--grey-nav)}

/* 6. SPPB INTEGRATIE + full-bleed ------------------------------ */
/* container-breedte gelijk aan ontwerp */
body.site .sppb-row-container,body.site .sppb-container-inner{max-width:var(--max)}
/* full-bleed helpers: gebruik op secties die de volle breedte moeten vullen */
.sn-full{width:var(--sn-vw,100vw);margin-left:calc(50% - var(--sn-vw,100vw) / 2);margin-right:calc(50% - var(--sn-vw,100vw) / 2)}
.sppb-section:has(.sn-full),.sppb-addon-container:has(.sn-full){padding-left:0!important;padding-right:0!important}
/* neutraliseer standaard SPPB-sectiepadding waar onze addons hun eigen padding meebrengen */
.sppb-addon-sn{margin:0}

/* 7. HERO ------------------------------------------------------ */
.hero{position:relative;display:flex;align-items:flex-end;overflow:hidden;min-height:640px;height:82vh}
.hero.hero--compact{min-height:340px;height:44vh;align-items:center}
.hero-bg{position:absolute;inset:0}
.hero-bg img{width:100%;height:100%;object-fit:cover;display:block}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.55) 0%,rgba(0,0,0,.15) 45%,transparent 75%)}
.hero-content{position:relative;z-index:2;max-width:var(--max);margin:0 auto;padding:0 48px 88px;width:100%}
.hero--compact .hero-content{padding-bottom:0}
.hero-eyebrow{font-size:.74rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--green);display:flex;align-items:center;gap:12px;margin-bottom:1.2rem}
.hero-eyebrow::before{content:'';width:36px;height:2px;background:var(--green)}
.hero h1{color:#fff;font-weight:800;line-height:1.08;max-width:720px;margin-bottom:1.2rem;letter-spacing:-.02em}
.hero h1 span{color:var(--green)}
.hero-lead{font-size:18px;color:rgba(255,255,255,.82);max-width:560px;margin-bottom:2.2rem;font-weight:300;line-height:1.7}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap}

/* 8. INTRO / MAIN GRID ---------------------------------------- */
.section-main{background:var(--white);padding:100px 0}
.main-grid{display:grid;grid-template-columns:38% 1fr;gap:5rem;align-items:start;margin-top:3.5rem}
.main-left h2{margin-bottom:1.1rem}
.main-left p{font-size:16px;color:var(--muted);margin-bottom:1.8rem;max-width:420px}
.sn-checks{display:flex;flex-direction:column;gap:10px;margin:1.4rem 0}
.check-item{display:flex;align-items:flex-start;gap:9px;font-size:15px;font-weight:600;color:var(--body)}
.check-item i{color:var(--green);font-size:14px;flex-shrink:0;margin-top:5px}

/* 9. DIENSTEN KAARTEN ----------------------------------------- */
.diensten{background:var(--white);padding:100px 0}
.diensten-grid{display:grid;grid-template-columns:38% 1fr;gap:5rem;align-items:start;margin-top:3.5rem}
.diensten-left h2{margin-bottom:1.1rem}
.diensten-left p{font-size:16px;color:var(--muted);margin-bottom:1.8rem;max-width:420px}
.diensten-right{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.d-card{background:var(--sand);padding:2rem 1.8rem;border-radius:var(--r);position:relative;transition:background .3s,box-shadow .3s;display:flex;flex-direction:column;border-bottom:3px solid transparent;height:100%}
.d-card:hover{background:var(--grey-nav);box-shadow:0 8px 28px rgba(0,0,0,.12);border-bottom-color:var(--green)}
.d-card:hover .d-title{color:#fff}.d-card:hover .d-text{color:rgba(255,255,255,.6)}
.d-card:hover .d-icon-wrap{background:rgba(158,175,80,.2);color:var(--green)}
.d-header{display:flex;align-items:center;gap:.9rem;margin-bottom:1rem}
.d-icon-wrap{width:44px;height:44px;border-radius:10px;flex-shrink:0;background:var(--green-light);color:var(--green-dark);display:flex;align-items:center;justify-content:center;font-size:18px;transition:all .3s}
.d-title{font-size:1.05rem;font-weight:800;color:var(--ink);margin:0;transition:color .3s;line-height:1.25}
.d-text{font-size:14px;line-height:1.75;color:var(--muted);margin-bottom:1.4rem;transition:color .3s;flex:1}
.d-link{font-size:.82rem;font-weight:700;color:var(--green-dark);text-decoration:none;display:inline-flex;align-items:center;gap:7px;margin-top:auto;align-self:flex-start;border:1.5px solid var(--green);padding:8px 16px;border-radius:5px;transition:all .2s}
.d-link:hover{background:var(--green);color:#fff;gap:10px}
.d-card.featured{background:var(--green);grid-column:1 / -1;border-bottom-color:rgba(255,255,255,.25)}
.d-card.featured:hover{background:var(--green-dark)}
.d-card.featured .d-icon-wrap{background:rgba(255,255,255,.18);color:#fff}
.d-card.featured .d-title{color:#fff}
.d-card.featured .d-text{color:rgba(255,255,255,.85);flex:unset}
.d-card.featured .d-link{color:#fff;border-color:rgba(255,255,255,.55)}
.d-card.featured .d-link:hover{background:rgba(255,255,255,.18);border-color:#fff}

/* 10. OVER ONS ------------------------------------------------- */
.over-strip{background:var(--grey-nav);padding:100px 0}
.over-grid{display:grid;grid-template-columns:1fr 1fr;gap:6rem;align-items:center}
.over-imgs{position:relative}
.over-img-frame{width:100%;aspect-ratio:3/4;border-radius:var(--r);overflow:hidden;position:relative}
.over-img-frame img{width:100%;height:100%;object-fit:cover;display:block}
.over-badge{position:absolute;top:-20px;right:-20px;background:#fff;border-radius:50%;width:110px;height:110px;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:2;box-shadow:0 10px 30px rgba(0,0,0,.18)}
.over-badge i{font-size:1.6rem;color:var(--green);display:block;margin-bottom:4px}
.over-badge-label{font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--grey-dark);text-align:center;line-height:1.3}
.over-text .eyebrow{color:rgba(255,255,255,.55)}
.over-text .eyebrow::before{background:rgba(255,255,255,.4)}
.over-text h2{color:#fff;margin-bottom:1.2rem}
.over-text p{font-size:16px;color:rgba(255,255,255,.72);margin-bottom:.9rem}
.over-checks{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:1.8rem 0}
.over-checks .check-item{color:rgba(255,255,255,.85)}
.over-checks .check-item i{color:var(--green)}

/* 11. PROJECTEN GRID + FILTER (Dynamic Content) --------------- */
.projecten{background:var(--sand);padding:100px 0}
.proj-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:2rem;gap:2rem;flex-wrap:wrap}
.filter-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:2rem}
.f-btn{padding:8px 18px;border-radius:20px;font-size:.82rem;font-weight:700;font-family:inherit;border:1.5px solid var(--green);background:transparent;color:var(--green-dark);cursor:pointer;transition:all .2s}
.f-btn:hover,.f-btn.active{background:var(--green);border-color:var(--green);color:#fff}
.proj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.proj-card{border-radius:var(--r);overflow:hidden;cursor:pointer;position:relative;background:#fff;text-decoration:none;display:block}
.proj-card.is-hidden{display:none}
.proj-img-wrap{position:relative;overflow:hidden;aspect-ratio:4/3}
.proj-img-wrap img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .55s ease}
.proj-card:hover .proj-img-wrap img{transform:scale(1.06)}
.proj-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(15,20,10,.88) 0%,transparent 55%);opacity:0;transition:opacity .32s}
.proj-card:hover .proj-overlay{opacity:1}
.proj-info{position:absolute;bottom:0;left:0;right:0;padding:1.3rem;transform:translateY(7px);opacity:0;transition:all .32s;color:#fff}
.proj-card:hover .proj-info{transform:translateY(0);opacity:1}
.proj-cat{font-size:.67rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--green);margin-bottom:3px}
.proj-name{font-size:1rem;font-weight:700;line-height:1.3}
.proj-meta{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#fff}
.proj-meta-title{font-size:.87rem;font-weight:600;color:var(--ink)}
.proj-meta-type{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--green)}
.proj-more{display:flex;justify-content:center;margin-top:3rem}

/* 12. PROJECT DETAIL (DC-detailpagina) ------------------------ */
.project-detail{padding:3.5rem 0 2rem;max-width:960px;margin:0 auto}
.project-hero-img{width:100%;aspect-ratio:16/7;object-fit:cover;border-radius:var(--r);display:block;margin-bottom:1.6rem}
.project-cat{font-size:.7rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--green);margin-bottom:.5rem}
.project-title{font-size:clamp(1.9rem,3vw,2.8rem);font-weight:800;color:var(--ink);margin-bottom:1.2rem}
.project-body{margin-bottom:2.5rem}
.project-body p{margin-bottom:1rem;color:var(--body)}
.sn-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.75rem;margin:2rem 0}
.sn-gallery-item{display:block;overflow:hidden;border-radius:var(--r);aspect-ratio:4/3;background:var(--sand);cursor:zoom-in}
.sn-gallery-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}
.sn-gallery-item:hover img{transform:scale(1.04)}
/* prev/next nav */
.sn-projectnav{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid rgba(0,0,0,.08)}
.sn-projectnav a{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--green-dark);text-decoration:none;transition:gap .2s}
.sn-projectnav a:hover{gap:12px}
/* lightbox overlay (js) */
.lb-overlay{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:9999;display:none;align-items:center;justify-content:center}
.lb-overlay img{max-width:92vw;max-height:92vh;object-fit:contain;border-radius:4px;box-shadow:0 8px 48px rgba(0,0,0,.6)}
.lb-overlay .lb-close{position:fixed;top:1rem;right:1.4rem;color:#fff;font-size:2rem;background:none;border:none;cursor:pointer;line-height:1}
.lb-overlay .lb-prev,.lb-overlay .lb-next{position:fixed;top:50%;transform:translateY(-50%);color:#fff;font-size:2.4rem;background:none;border:none;cursor:pointer;padding:1rem;opacity:.75;transition:opacity .2s}
.lb-overlay .lb-prev:hover,.lb-overlay .lb-next:hover{opacity:1}
.lb-overlay .lb-prev{left:.5rem}.lb-overlay .lb-next{right:.5rem}

/* 13. WERKWIJZE ----------------------------------------------- */
.werkwijze{background:var(--white);padding:100px 0}
.ww-head{text-align:center;max-width:580px;margin:0 auto 4.5rem}
.ww-head h2{margin-bottom:.9rem}.ww-head p{font-size:16px;color:var(--muted)}
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:0;position:relative}
.steps::before{content:'';position:absolute;top:40px;left:10%;right:10%;height:1px;background:var(--green);opacity:.35;z-index:0}
.step{display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 1rem;position:relative;z-index:1}
.step-num{width:80px;height:80px;border-radius:50%;border:2px solid var(--green);background:#fff;display:flex;align-items:center;justify-content:center;font-size:1.55rem;font-weight:800;color:var(--green-dark);margin-bottom:1.4rem;transition:all .3s}
.step:hover .step-num{background:var(--green);color:#fff}
.step-title{font-size:.97rem;font-weight:800;color:var(--ink);margin-bottom:.5rem}
.step-text{font-size:14px;color:var(--muted);line-height:1.7}

/* 14. CTA BANNER ---------------------------------------------- */
.cta-section{background:var(--green);padding:100px 0;text-align:center;position:relative;overflow:hidden}
.cta-section::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle at 2px 2px,rgba(255,255,255,.05) 1px,transparent 0);background-size:40px 40px}
.cta-inner{position:relative;z-index:1;max-width:var(--max);margin:0 auto;padding:0 48px}
.cta-section .eyebrow{justify-content:center;color:rgba(255,255,255,.7)}
.cta-section .eyebrow::before{background:rgba(255,255,255,.45)}
.cta-section h2{color:#fff;margin-bottom:1rem}
.cta-section p{font-size:17px;color:rgba(255,255,255,.82);max-width:460px;margin:0 auto 2.5rem;font-weight:300}
.cta-btns{display:flex;justify-content:center;gap:14px;flex-wrap:wrap}

/* 15. STATS + KAARTEN + SUBSECTIES ---------------------------- */
.sn-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1.2rem;margin-top:2rem}
.sn-stat{text-align:center;padding:1.8rem 1rem;border-radius:var(--r);background:var(--sand)}
.sn-stat-num{font-size:clamp(1.8rem,3.5vw,2.8rem);font-weight:800;color:var(--green-dark);line-height:1;margin-bottom:.35rem}
.sn-stat-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.sn-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin-top:2.5rem}
.sn-subsecties{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem;margin-top:2.5rem}
.sn-sub{background:var(--sand);border-radius:var(--r);padding:2rem}
.sn-sub h3{font-size:1.05rem;font-weight:800;color:var(--ink);margin-bottom:.7rem;padding-bottom:.6rem;border-bottom:2px solid var(--green-light)}
.sn-sub p{font-size:14.5px;line-height:1.7;color:var(--muted);margin-bottom:.9rem}

/* 16. VACATURES ----------------------------------------------- */
.sn-vacatures{display:flex;flex-direction:column;gap:2rem;margin-top:2.5rem}
.vacature-item{background:#fff;border:1px solid rgba(0,0,0,.08);border-top:3px solid var(--green);border-radius:var(--r);padding:2.5rem;scroll-margin-top:90px}
.vacature-item h3{font-size:clamp(1.25rem,2vw,1.6rem);font-weight:800;color:var(--ink);margin-bottom:.75rem;line-height:1.2}
.vacature-intro{margin-bottom:1.4rem;padding-bottom:1.4rem;border-bottom:1px solid rgba(0,0,0,.08)}
.vacature-body h4{color:var(--green-dark);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;margin:1.4rem 0 .5rem}
.vacature-body ul{list-style:none;padding:0;margin:0 0 .5rem;display:flex;flex-direction:column;gap:.35rem}
.vacature-body ul li{color:var(--body);padding:.2rem 0 .2rem 1.5rem;position:relative}
.vacature-body ul li::before{content:'\f00c';font-family:'Font Awesome 6 Free';font-weight:900;color:var(--green);font-size:.75rem;position:absolute;left:0;top:.4rem}
.sn-func-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin-top:2.5rem}

/* 17. SECTIE-ACHTERGRONDEN ------------------------------------ */
.section-grey{background:var(--grey-nav);padding:100px 0}
.section-sand{background:var(--sand);padding:100px 0}
.section-green{background:var(--green);padding:100px 0}
.section-dark{background:#2a2d2f;padding:100px 0}
.section-grey h2,.section-grey h3,.section-dark h2,.section-dark h3{color:#fff}
.section-grey p,.section-dark p{color:rgba(255,255,255,.78)}
.section-grey .eyebrow,.section-dark .eyebrow{color:rgba(255,255,255,.55)}
.section-grey .eyebrow::before,.section-dark .eyebrow::before{background:rgba(255,255,255,.35)}
.section-green h2,.section-green h3{color:#fff}
.section-green p{color:rgba(255,255,255,.85)}
.section-green .eyebrow{color:rgba(255,255,255,.6)}
.section-green .eyebrow::before{background:rgba(255,255,255,.4)}
.section-green .btn-green{background:#fff;color:var(--green-dark)}
.section-green .btn-green:hover{background:var(--green-light)}

/* 18. FOOTER -------------------------------------------------- */
.sn-footer{background:#1a1e14;padding:80px 0 40px}
.sn-footer .foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1.4fr;gap:4rem;padding-bottom:3rem;border-bottom:1px solid rgba(255,255,255,.07)}
.foot-logo-img{height:56px;width:auto;max-width:250px;object-fit:contain;display:block;margin-bottom:.9rem}
.foot-tagline{font-size:14px;color:rgba(255,255,255,.4);line-height:1.8;max-width:300px}
.foot-socials{display:flex;gap:8px;margin-top:1.4rem}
.foot-socials a{width:36px;height:36px;border-radius:50%;border:1px solid rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.5);text-decoration:none;font-size:.85rem;transition:all .2s}
.foot-socials a:hover{border-color:var(--green);color:var(--green)}
.foot-col-h{font-size:.68rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:rgba(255,255,255,.35);margin-bottom:1.2rem}
.foot-links{list-style:none;display:flex;flex-direction:column;gap:.7rem;margin:0;padding:0}
.foot-links a,.foot-links li{font-size:14px;color:rgba(255,255,255,.5);text-decoration:none}
.foot-links a{display:inline-flex;align-items:flex-start;gap:9px;transition:color .2s}
.foot-links a:hover{color:var(--green)}
.foot-links li{display:flex;align-items:flex-start;gap:9px}
.foot-links i{font-size:12px;opacity:.7;margin-top:5px;color:var(--green)}
.foot-bottom{padding-top:1.8rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}
.foot-copy{font-size:13px;color:rgba(255,255,255,.28)}
.foot-legal{display:flex;gap:1.5rem}
.foot-legal a,.foot-legal span{font-size:13px;color:rgba(255,255,255,.28);text-decoration:none}
.foot-legal a:hover{color:rgba(255,255,255,.6)}
body.site #sp-footer{display:none}

/* 19. RSFORM (contactformulier) ------------------------------- */
.sn-form .rsform-block,.rsform .rsform-block{margin-bottom:1rem}
.sn-form .formControlLabel,.rsform .formControlLabel{display:block;font-size:.85rem;font-weight:700;color:var(--ink);margin-bottom:.4rem}
.sn-form .rsform-input-box,.sn-form .rsform-text-box,.sn-form .rsform-select-box,
.rsform .rsform-input-box,.rsform .rsform-text-box,.rsform .rsform-select-box{width:100%;padding:12px 16px;font-family:inherit;font-size:16px;border:1.5px solid var(--grey-mid);border-radius:var(--r);background:#fff;color:var(--ink);transition:border-color .2s}
.sn-form .rsform-input-box:focus,.sn-form .rsform-text-box:focus,.sn-form .rsform-select-box:focus,
.rsform .rsform-input-box:focus,.rsform .rsform-text-box:focus,.rsform .rsform-select-box:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(158,175,80,.15)}
.sn-form .rsform-text-box,.rsform .rsform-text-box{min-height:150px;resize:vertical}
.sn-form .rsform-submit-button,.rsform .rsform-submit-button{display:inline-flex;align-items:center;gap:9px;font-family:inherit;font-size:16px;font-weight:700;padding:13px 30px;border-radius:var(--r);border:none;cursor:pointer;background:var(--green);color:#fff;transition:all .22s ease}
.sn-form .rsform-submit-button:hover,.rsform .rsform-submit-button:hover{background:var(--green-dark);transform:translateY(-2px);box-shadow:0 8px 24px rgba(158,175,80,.35)}
.sn-form .formNoError,.rsform .formNoError{display:none}
.sn-contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:start}
.sn-contact-info{list-style:none;padding:0;margin:1.5rem 0 0;display:flex;flex-direction:column;gap:1rem}
.sn-contact-info li{display:flex;align-items:flex-start;gap:.9rem;color:var(--body)}
.sn-contact-info i{color:var(--green);width:20px;margin-top:5px}
.sn-map{width:100%;aspect-ratio:16/10;border:0;border-radius:var(--r);margin-top:1.5rem}

/* 20. SCROLL REVEALS ------------------------------------------ */
.reveal{opacity:0;transform:translateY(40px);transition:opacity .8s ease,transform .8s ease}
.reveal.vis{opacity:1;transform:none}
.reveal-left{opacity:0;transform:translateX(-48px);transition:opacity .8s ease,transform .8s ease}
.reveal-left.vis{opacity:1;transform:none}
.reveal-right{opacity:0;transform:translateX(48px);transition:opacity .8s ease,transform .8s ease}
.reveal-right.vis{opacity:1;transform:none}
.stagger>*{opacity:0;transform:translateY(36px);transition:opacity .7s ease,transform .7s ease}
.stagger.vis>*:nth-child(1){opacity:1;transform:none;transition-delay:.05s}
.stagger.vis>*:nth-child(2){opacity:1;transform:none;transition-delay:.14s}
.stagger.vis>*:nth-child(3){opacity:1;transform:none;transition-delay:.23s}
.stagger.vis>*:nth-child(4){opacity:1;transform:none;transition-delay:.32s}
.stagger.vis>*:nth-child(5){opacity:1;transform:none;transition-delay:.41s}
.stagger.vis>*:nth-child(6){opacity:1;transform:none;transition-delay:.5s}
/* vanaf de zevende: ook zichtbaar (anders bleef een lange rij onzichtbaar) */
.stagger.vis>*{opacity:1;transform:none}
.stagger.vis>*:nth-child(n+7){transition-delay:.55s}
@media(prefers-reduced-motion:reduce){.stagger>*{opacity:1;transform:none;transition:none}}

/* 21. RESPONSIVE ---------------------------------------------- */
@media(max-width:1100px){
  .main-grid,.diensten-grid{grid-template-columns:1fr;gap:3rem}
  .over-grid{grid-template-columns:1fr;gap:3rem}
  .sn-contact-grid{grid-template-columns:1fr;gap:2.5rem}
}
@media(max-width:1024px){
  .wrap{padding:0 32px}
  body.site #sp-header.sn-header .container-inner{padding:0 32px}
  .proj-grid{grid-template-columns:repeat(2,1fr)}
  .sn-footer .foot-grid{grid-template-columns:1fr 1fr;gap:3rem}
  .steps{grid-template-columns:repeat(3,1fr);gap:1.5rem}
  .steps::before{display:none}
  .cta-inner,.hero-content{padding-left:32px;padding-right:32px}
}
@media(max-width:768px){
  .wrap{padding:0 20px}
  .hero{min-height:520px;height:auto;padding:120px 0 60px}
  .hero h1{font-size:2.2rem}
  .diensten-right{grid-template-columns:1fr}
  .d-card.featured{grid-column:auto}
  .proj-grid{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr 1fr}
  .over-checks{grid-template-columns:1fr}
  .sn-footer .foot-grid{grid-template-columns:1fr;gap:2.5rem}
  .foot-bottom{flex-direction:column;gap:.8rem;text-align:center}
  .hero-content,.cta-inner{padding-left:20px;padding-right:20px}
  .section-main,.diensten,.over-strip,.projecten,.werkwijze,.cta-section,.section-grey,.section-sand,.section-green,.section-dark{padding:64px 0}
}
@media(max-width:480px){
  .steps{grid-template-columns:1fr}
  .hero-actions,.cta-btns{flex-direction:column;align-items:stretch}
}

/* 22. PRINT --------------------------------------------------- */
@media print{#sp-header,.cta-section,.sn-footer{display:none}.hero{min-height:auto;height:auto}body{font-size:12pt}}

/* 23. SECTIE-BANDEN (addon-wrappers) -------------------------- */
.sn-band{padding:100px 0;position:relative}
.sn-band>.wrap{position:relative;z-index:1}
/* full-bleed reset: haal SPPB-container-padding weg rond onze volle-breedte-secties */
.sppb-section:has(.sn-full),.sppb-row:has(.sn-full),.sppb-column:has(.sn-full),
.sppb-addon-container:has(.sn-full),.sppb-addon:has(.sn-full){padding-left:0!important;padding-right:0!important}
.sppb-column>.sppb-column-addons:has(.sn-full){padding:0!important}
@media(max-width:768px){.sn-band{padding:64px 0}}

/* projectkaart: galerij-teller + klikbare kaart */
.proj-card[role="button"]{cursor:pointer}
.proj-count{position:absolute;top:12px;right:12px;background:rgba(0,0,0,.55);color:#fff;font-size:.72rem;font-weight:700;padding:4px 9px;border-radius:20px;display:inline-flex;align-items:center;gap:5px;opacity:0;transition:opacity .3s}
.proj-card:hover .proj-count{opacity:1}

/* 24. HERO-SLIDER + INTRO-TWEEKOLOM ---------------------------- */
.hero-slides{position:absolute;inset:0;z-index:0}
.hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.2s ease;background-size:cover;background-position:center}
.hero-slide.active{opacity:1}
.hero .hero-overlay{z-index:1}
.hero .hero-content{z-index:2}
.hero-dots{position:absolute;bottom:32px;left:50%;transform:translateX(-50%);z-index:3;display:flex;gap:10px}
.hero-dots .hero-dot{width:9px;height:9px;border-radius:50%;border:2px solid rgba(255,255,255,.55);background:transparent;cursor:pointer;padding:0;transition:all .25s}
.hero-dots .hero-dot.active{background:var(--green);border-color:var(--green);width:26px;border-radius:5px}
@media(max-width:1024px){.hero-dots{left:32px;transform:none}}

.sn-intro-cols{display:grid;grid-template-columns:1fr 1fr;gap:4.5rem;align-items:center}
/* img-left: de addon zet de foto al als eerste element in de DOM.
   Hier NIET nog eens omkeren, anders staan beide foto's rechts. */
.sn-intro-photo{width:100%;border-radius:var(--r);object-fit:cover;display:block;aspect-ratio:4/3}
.sn-intro-cols .sn-checks{margin-top:1.4rem}
@media(max-width:900px){.sn-intro-cols{grid-template-columns:1fr;gap:2.5rem}
  /* op mobiel altijd eerst de tekst, dan de foto */
  .sn-intro-cols.img-left .sn-intro-photo-wrap{order:2}.sn-intro-cols.img-left .sn-intro-col{order:1}}

/* diensten-right: originele main-cards indeling bij 5 kaarten.
   BELANGRIJK: alleen boven 768px. Onder die breedte zet de media-query
   het raster op een kolom; de benoemde gebieden bestaan dan niet meer,
   terwijl de kaarten er wel naar bleven verwijzen. Gevolg: alle vijf
   kaarten stapelden in dezelfde cel en je zag er nog maar een. */
@media(min-width:769px){
  .diensten-right:has(> .d-card:nth-child(5):last-child){grid-template-areas:"c1 c2" "c3 c3" "c4 c5"}
  .diensten-right:has(> .d-card:nth-child(5):last-child) > .d-card:nth-child(1){grid-area:c1}
  .diensten-right:has(> .d-card:nth-child(5):last-child) > .d-card:nth-child(2){grid-area:c2}
  .diensten-right:has(> .d-card:nth-child(5):last-child) > .d-card:nth-child(3){grid-area:c3}
  .diensten-right:has(> .d-card:nth-child(5):last-child) > .d-card:nth-child(4){grid-area:c4}
  .diensten-right:has(> .d-card:nth-child(5):last-child) > .d-card:nth-child(5){grid-area:c5}
}
@media(max-width:768px){
  /* vangnet: geen enkele kaart verwijst nog naar een benoemd gebied */
  .diensten-right{grid-template-areas:none}
  .diensten-right > .d-card{grid-area:auto}
}
.diensten-left-text p{margin-bottom:1rem}
@media(max-width:768px){.diensten-right{grid-template-areas:none!important}}


/* 25. TEKSTKLEUR-FIX (specificiteit) --------------------------- */
body.site .hero h1,body.site .hero .hero-lead{color:#fff}
body.site .hero h1 span{color:var(--green)}
body.site .over-text h2,body.site .over-text p{color:#fff}
body.site .over-text p{color:rgba(255,255,255,.72)}
body.site .cta-section h2,body.site .cta-section p{color:#fff}
body.site .cta-section p{color:rgba(255,255,255,.82)}
body.site .sn-band.sn-grey h2,body.site .sn-band.sn-grey h3,body.site .sn-band.sn-green h2,body.site .sn-band.sn-green h3,body.site .sn-band.sn-dark h2,body.site .sn-band.sn-dark h3{color:#fff}


/* ============================================================
   26. KANTLIJN — ÉÉN SYSTEEM (autoritatief; staat bewust als laatste)
   ------------------------------------------------------------
   Live gemeten en overgenomen uit een eerder MMX-project (aug 2026):
   (a) SP Page Builder kapt de rijcontainer standaard op 1290 -> cap omhoog
       naar de huisstijlmaat (--max = 1320).
   (b) Bootstrap zet .container onder 1400px op 1140; in een Dynamic-Content-
       view wint die 1140 -> forceer de huisstijlmaat site-breed, anders
       lijnen projectoverzicht/-detail niet uit met header, addons en footer.
   (c) De SPPB-kolom heeft 15px padding per kant. Snoek-addons brengen hun
       eigen .wrap / .hero-content / .cta-inner mee (1320 + gutter), ruwe
       SPPB-inhoud (Dynamic Content) niet. Daarom: kolompadding = de Snoek-
       gutter voor ruwe inhoud, en 0 zodra er een Snoek-addon (.sn-full) in
       de kolom staat (anders dubbele marge).
   (d) De header stond op tablet/mobiel 12px te ver naar binnen door de
       padding van .container-fluid.
   Gutter = dezelfde waarden als .wrap: 48 / 32 / 20px.
   ============================================================ */
:root{--sn-gutter:48px}
@media(max-width:1024px){:root{--sn-gutter:32px}}
@media(max-width:768px){:root{--sn-gutter:20px}}

/* (a) rijcontainer op de huisstijlmaat */
body.site .sppb-row-container,
body.site .sppb-container-inner{max-width:var(--max)!important;margin-left:auto!important;margin-right:auto!important}

/* (b) bootstrap-container site-breed op de huisstijlmaat (ook in DC-views) */
body.site #sp-main-body .container,
body.site .com-sppagebuilder .container{width:100%!important;max-width:var(--max)!important;margin-left:auto!important;margin-right:auto!important;padding-left:0!important;padding-right:0!important}
body.site #sp-main-body .container-inner{max-width:var(--max);margin-left:auto;margin-right:auto;padding-left:0;padding-right:0}

/* (c) kolompadding: ruwe SPPB-inhoud krijgt exact dezelfde gutter als .wrap */
body.site .sppb-row > .sppb-row-column:only-child{padding-left:var(--sn-gutter)!important;padding-right:var(--sn-gutter)!important}
/* ...maar niet als er een Snoek-addon in staat: die regelt zijn eigen kantlijn */
body.site .sppb-row > .sppb-row-column:only-child:has(.sn-full){padding-left:0!important;padding-right:0!important}

/* (c2) Meerkoloms ruwe rijen (bv. projectdetail 60/40): zet de class sn-container
   op de SECTIE (rij-instelling "CSS Class"). De kolommen houden dan hun 15px
   tussenruimte en de rij als geheel staat op de gutter.
   LET OP: gebruik sn-container alleen op meerkoloms-rijen — bij één kolom regelt
   de regel hierboven het al. */
body.site .sppb-section.sn-container > .sppb-row-container{padding-left:calc(var(--sn-gutter) - 15px)!important;padding-right:calc(var(--sn-gutter) - 15px)!important}

/* (d) header lijnt op elke breedte met de content */
body.site #sp-header .container-fluid{padding-left:0!important;padding-right:0!important}


/* ============================================================
   27. COOKIEMELDING (eigen banner, geen externe tool)
   Markup + JS staan in snoek-footer.php; cookie: sn_cookie_consent (365 dgn).
   De footerlink "Cookies" heropent de melding zodat de keuze te wijzigen is.
   ============================================================ */
.sn-cookie{position:fixed;left:16px;right:16px;bottom:16px;z-index:9999;max-width:920px;margin:0 auto;background:#fff;border-radius:var(--r);box-shadow:0 12px 40px rgba(0,0,0,.18);padding:24px 26px;display:none;border:1px solid rgba(0,0,0,.08)}
.sn-cookie.show{display:block}
.sn-cookie h4{margin:0 0 8px;color:var(--ink);font-family:'Nunito Sans',Arial,sans-serif;font-size:1.15rem;font-weight:800}
.sn-cookie p{margin:0 0 16px;color:var(--body);font-size:.95rem;line-height:1.6}
.sn-cookie a{color:var(--green-dark);font-weight:700;text-decoration:underline}
.sn-cookie-btns{display:flex;gap:12px;flex-wrap:wrap}
.sn-cookie button{border:0;border-radius:var(--r);padding:12px 26px;font:inherit;font-weight:700;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.sn-cookie-accept{background:var(--green);color:#fff}
.sn-cookie-accept:hover{background:var(--green-dark)}
.sn-cookie-min{background:#fff;color:var(--ink);border:2px solid var(--green)}
.sn-cookie-min:hover{background:var(--green-light)}
@media(max-width:600px){.sn-cookie{padding:20px 18px}.sn-cookie-btns{flex-direction:column}.sn-cookie button{width:100%}}


/* ============================================================
   28. JURIDISCHE PAGINA'S + RSFORM IN EEN KOLOM
   .sn-legal = leesbare tekstkolom voor privacyverklaring/cookiebeleid
   (de tekst komt uit het editorveld van Snoek Intro).
   .form-in-kolom = een RSForm-sectie die in een kolom moet passen i.p.v. vol.
   ============================================================ */
.sn-legal .sn-intro-text{max-width:860px}
.sn-legal .sn-intro-text h2{font-size:1.5rem;font-weight:800;color:var(--ink);margin:34px 0 12px;padding-top:26px;border-top:1px solid rgba(0,0,0,.1)}
.sn-legal .sn-intro-text h3{font-size:1.15rem;font-weight:700;color:var(--ink);margin:22px 0 8px}
.sn-legal .sn-intro-text p{margin:0 0 16px}
.sn-legal .sn-intro-text ul{list-style:disc;padding-left:1.35em;margin:0 0 16px}
.sn-legal .sn-intro-text li{margin:0 0 6px}
.sn-legal .sn-intro-text a{color:var(--green-dark);font-weight:700;text-decoration:underline}
.form-in-kolom{margin:0!important;padding:0!important;width:auto!important}
.form-in-kolom > .wrap{max-width:none!important;width:auto!important;padding:0!important}


/* ============================================================
   29. DYNAMIC CONTENT — filter en projectkaarten (v1.2.1)
   ------------------------------------------------------------
   De projectenpagina is een Dynamic-Content-view: die gebruikt de
   SPPB-kernaddons, niet onze Snoek-addons. Zonder deze regels zie je
   de kale SPPB-radioknoppen in plaats van de filterpillen uit het
   ontwerp. Class-namen komen uit SP Page Builder zelf (geverifieerd op een
   werkende installatie), kleuren en vormen uit het Snoek-ontwerp (.f-btn).
   ============================================================ */
.sppb-addon-dynamic-content-filter-wrapper{margin:0 0 2.5rem}
.sppb-addon-dynamic-content-filter-list{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}
.sppb-addon-dynamic-content-filter-item{display:flex;align-items:center;gap:8px}
.sppb-addon-dynamic-content-filter-item-title{display:none}
.sppb-addon-dynamic-content-filter-item-content{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.sppb-addon-dynamic-content-filter-item-count{display:none}
/* de echte radio/checkbox verbergen: de pil zelf is de knop */
.sppb-addon-dynamic-content-filter-fake-radio-input,
.sppb-addon-dynamic-content-filter-fake-checkbox-input{display:none!important}
.sppb-addon-dynamic-content-filter-item-radio-option,
.sppb-addon-dynamic-content-filter-item-checkbox-option{
  display:inline-flex;align-items:center;cursor:pointer;
  padding:8px 18px;border-radius:20px;
  font-size:.82rem;font-weight:700;font-family:inherit;line-height:1;
  border:1.5px solid var(--green);background:transparent;color:var(--green-dark);
  transition:background .2s,color .2s,border-color .2s}
.sppb-addon-dynamic-content-filter-item-radio-option:hover,
.sppb-addon-dynamic-content-filter-item-checkbox-option:hover{background:var(--green);border-color:var(--green);color:#fff}
.sppb-addon-dynamic-content-filter-item-radio-option:has(input:checked),
.sppb-addon-dynamic-content-filter-item-checkbox-option:has(input:checked){background:var(--green);border-color:var(--green);color:#fff}
.sppb-addon-dynamic-content-filter-item-radio-option label,
.sppb-addon-dynamic-content-filter-item-checkbox-option label{margin:0;cursor:pointer;font:inherit;color:inherit}
/* resetknop in dezelfde vorm, maar als donkere pil */
.sppb-addon-dynamic-content-filter-reset-btn-wrapper{display:flex;align-items:center}
.sppb-addon-dynamic-content-filter-reset-btn,
.sppb-addon-dynamic-content-filter-reset-btn-alt,
.sppb-addon-dynamic-content-filter-wrapper button{
  display:inline-flex!important;align-items:center;cursor:pointer;
  padding:8px 18px!important;border-radius:20px!important;
  font-size:.82rem!important;font-weight:700!important;line-height:1;
  background:var(--grey-nav)!important;color:#fff!important;border:1.5px solid var(--grey-nav)!important;
  text-decoration:none!important;opacity:1!important;
  transition:background .2s,color .2s,border-color .2s}
.sppb-addon-dynamic-content-filter-reset-btn:hover,
.sppb-addon-dynamic-content-filter-reset-btn-alt:hover,
.sppb-addon-dynamic-content-filter-wrapper button:hover{background:var(--green)!important;border-color:var(--green)!important;color:#fff!important}

/* Projectkaarten in de Dynamic-Content-grid: zelfde vorm als de ontwerpkaarten
   (.proj-card in de Snoek-addon), maar met de SPPB-markup eromheen. */
.proj-card{border-radius:var(--r);overflow:hidden}
.proj-card img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.proj-card:hover img{transform:scale(1.06)}
.proj-card .sppb-addon-dynamic-content-image{overflow:hidden;border-radius:var(--r)}
.proj-card .sppb-addon-dynamic-content-text{margin:.85rem 0 0}
.proj-card h3,.proj-card .sppb-addon-dynamic-content-text h3{font-size:1.15rem;font-weight:800;color:var(--ink);line-height:1.25;margin:0}
.proj-card a{text-decoration:none;color:inherit}


/* ============================================================
   30. HEADER EN MENU op de maten van het ontwerp (v1.2.2)
   Gemeten op de oorspronkelijke site: balk 72px hoog, logo 65px
   (max 250px breed), menulinks .87rem met 2px tussenruimte, en
   Contact als groene knop (menu-item krijgt de class nav-cta-item).
   ============================================================ */
body.site #sp-header.sn-header{min-height:72px}
body.site #sp-header.sn-header .sp-megamenu-parent>li{margin:0 1px}
body.site #sp-header.sn-header .sp-megamenu-parent>li>a{font-size:.87rem}


/* ============================================================
   31. FOOTERLOGO (v1.2.3)
   Op de donkere footer staat de diapositieve (witte) versie van het logo.
   ============================================================ */
.sn-footer .foot-logo-img{height:58px;width:auto;max-width:250px;object-fit:contain;display:block;margin-bottom:1.1rem}


/* ============================================================
   32. PROJECTKAART: categorie als label OP de foto (v1.2.4)
   Gemeten aan het ontwerp en daarna één stap verder: de categorie
   stond onderin de witte balk en viel daar weg. Als label op de foto
   is hij meteen scanbaar, en de balk houdt alleen de titel over.
   ============================================================ */
.proj-tag{
  position:absolute;top:12px;left:12px;z-index:2;
  display:inline-flex;align-items:center;
  padding:6px 13px;border-radius:20px;
  background:rgba(255,255,255,.92);color:var(--green-dark);
  font-size:.66rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  box-shadow:0 2px 10px rgba(0,0,0,.18);
  backdrop-filter:saturate(140%) blur(2px);
  transition:background .25s,color .25s}
.proj-card:hover .proj-tag{background:var(--green);color:#fff}

/* fototeller rechtsboven, zelfde vorm als het categorielabel */
.proj-card .proj-count{
  position:absolute;top:12px;right:12px;left:auto;bottom:auto;z-index:2;
  display:inline-flex;align-items:center;gap:5px;
  padding:6px 11px;border-radius:20px;
  background:rgba(0,0,0,.45);color:#fff;
  font-size:.7rem;font-weight:700;opacity:0;transition:opacity .25s}
.proj-card:hover .proj-count{opacity:1}

/* op hover: titel + "Bekijk project" over de foto */
.proj-info{padding:1.25rem}
.proj-link{display:inline-flex;align-items:center;gap:8px;margin-top:.5rem;
  font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--green)}
.proj-card:hover .proj-link i{transform:translateX(3px)}
.proj-link i{transition:transform .25s}

/* de balk onder de foto houdt alleen de titel: rustiger en beter leesbaar */
.proj-meta{justify-content:flex-start;padding:14px 16px;min-height:56px}
.proj-meta-title{font-size:.92rem;font-weight:700;color:var(--ink);line-height:1.35}


/* ============================================================
   33. MENU: uitlijning, actieve staat en de Contact-knop (v1.2.4)
   Gemeten tegen de oorspronkelijke site: het menu staat rechts in de
   balk, de actieve pagina krijgt een zachte afgeronde markering, en
   Contact is een groene knop. Joomla zet de menu-item-class op de
   LINK (a), niet op het lijstitem, dus beide varianten staan hier.
   ============================================================ */
body.site #sp-header.sn-header #sp-menu{text-align:right}
body.site #sp-header.sn-header .sp-megamenu-parent{float:none;display:inline-block;vertical-align:middle;white-space:nowrap}
body.site #sp-header.sn-header .sp-megamenu-parent>li{background:transparent;margin:0 1px}
body.site #sp-header.sn-header .sp-megamenu-parent>li>a{border-radius:4px}
body.site #sp-header.sn-header .sp-megamenu-parent>li.active,
body.site #sp-header.sn-header .sp-megamenu-parent>li.current{background:transparent}
body.site #sp-header.sn-header .sp-megamenu-parent>li.active>a,
body.site #sp-header.sn-header .sp-megamenu-parent>li.current>a{
  background:rgba(255,255,255,.14);color:#fff}
/* Contact als groene knop, of de class nu op de li of op de a staat */
body.site #sp-header.sn-header .sp-megamenu-parent>li>a.nav-cta-item,
body.site #sp-header.sn-header .sp-megamenu-parent>li.nav-cta-item>a{
  background:var(--green)!important;color:#fff!important;border-radius:4px;padding:9px 18px}
body.site #sp-header.sn-header .sp-megamenu-parent>li>a.nav-cta-item:hover,
body.site #sp-header.sn-header .sp-megamenu-parent>li.nav-cta-item>a:hover{
  background:var(--green-dark)!important}


/* ============================================================
   34. HERO-KAART, KNOPPEN EN HEADER-CORRECTIES (v1.2.5)
   ============================================================ */

/* -- hero: donkere kaart om de tekst, zoals het ontwerp -------------------- */
.hero-card{
  background:rgba(20,24,16,.62);
  backdrop-filter:blur(3px) saturate(120%);
  padding:44px 48px 48px;
  border-radius:var(--r);
  max-width:760px}
.hero-card .hero-eyebrow{margin-bottom:1rem}
.hero-card h1{margin-bottom:1rem}
.hero-card .hero-lead{margin-bottom:1.8rem;max-width:none}
@media(max-width:768px){.hero-card{padding:28px 24px 32px;background:rgba(20,24,16,.68);backdrop-filter:none}}

/* -- knoppen: rand meteen zichtbaar, niet pas bij hover -------------------- */
.btn{text-transform:none!important;letter-spacing:0}
.btn-outline{border:2px solid rgba(255,255,255,.85);color:#fff}
.btn-outline:hover{border-color:#fff;background:rgba(255,255,255,.14);color:#fff}
.btn-white{border:2px solid #fff}
.btn-outline-dark{border:2px solid var(--green)}
/* de groene knop houdt zijn vlak, maar krijgt dezelfde hoogte als de outline */
.btn-green{border:2px solid var(--green)}
.btn-green:hover{border-color:var(--green-dark)}

/* -- header: menu netjes rechts, Contact als knop in de balk --------------- */
body.site #sp-header.sn-header .container-inner > .row{margin-left:0;margin-right:0;align-items:center;min-height:72px}
body.site #sp-header.sn-header #sp-menu{padding-right:0}
/* GEEN flex op de menu-items: dat brak de rij en duwde Contact naar een tweede regel. */
body.site #sp-header.sn-header .sp-megamenu-parent>li>a.nav-cta-item,
body.site #sp-header.sn-header .sp-megamenu-parent>li.nav-cta-item>a{
  display:inline-block;margin-left:10px;padding:9px 18px;line-height:1.2;vertical-align:middle}


/* ============================================================
   35. PROJECTDETAILPAGINA (v1.2.5)
   ------------------------------------------------------------
   De hero van de detailpagina is een full-bleed kolom (100vw) die
   GEEN .sn-full-markering heeft. Daardoor pakte hij de gutter uit
   regel 26 en schoof de foto naar binnen terwijl de titel bleef
   staan. Die kolom hoort dus uitgezonderd te worden.
   ============================================================ */
body.site .sppb-row > .sppb-row-column:only-child.sn-detail-hero{padding-left:0!important;padding-right:0!important}

.sn-detail-hero{position:relative;width:100vw;margin-left:calc(50% - 50vw);overflow:hidden;
  min-height:clamp(340px,52vh,620px);display:flex;align-items:flex-end}
.sn-detail-hero > .sppb-column-addons{position:static;width:100%;display:flex;flex-direction:column;justify-content:flex-end;min-height:inherit}
.sn-detail-hero .sn-dh-img{position:absolute;inset:0;z-index:0;margin:0}
.sn-detail-hero .sn-dh-img img{width:100%;height:100%;object-fit:cover;display:block}
.sn-detail-hero::after{content:'';position:absolute;inset:0;z-index:1;
  background:linear-gradient(to top,rgba(0,0,0,.72) 0%,rgba(0,0,0,.15) 55%,transparent 80%)}
.sn-detail-hero .sn-dh-title{position:relative;z-index:2;width:100%;max-width:var(--max);
  margin:0 auto;padding:0 var(--sn-gutter) 46px}
.sn-detail-hero .sn-dh-title,.sn-detail-hero .sn-dh-title *{color:#fff}
.sn-detail-hero .sn-dh-title h1{margin:0;font-weight:800;line-height:1.1;
  font-size:clamp(1.9rem,3.6vw,3.2rem);max-width:16em}
@media(max-width:768px){.sn-detail-hero{min-height:44vh}.sn-detail-hero .sn-dh-title{padding-bottom:28px}}

/* intro- en bodytekst van het project: leesbare kolom, rustig ritme */
.sn-detail-intro{font-size:1.12rem;line-height:1.7;color:var(--body);max-width:820px;margin:56px 0 0}
.sn-detail-body{max-width:820px;margin:20px 0 0;line-height:1.75}
.sn-detail-body h2{font-size:1.5rem;font-weight:800;color:var(--ink);margin:32px 0 10px}
.sn-detail-body p{margin:0 0 16px}
.sn-detail-body ul{list-style:disc;padding-left:1.35em;margin:0 0 16px}


/* ============================================================
   36. PROJECTGALERIJ (v1.2.5)
   Raster in plaats van een slider; klik opent de bestaande lightbox.
   ============================================================ */
.sn-projectgalerij{padding:64px 0 100px}
.sn-gal-kop{font-size:1.5rem;font-weight:800;color:var(--ink);margin:0 0 1.4rem}
.sn-gal-grid{display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}
.sn-gal-grid[data-kolommen="2"]{grid-template-columns:repeat(2,1fr)}
.sn-gal-grid[data-kolommen="4"]{grid-template-columns:repeat(4,1fr)}
.sn-gal-item{display:block;overflow:hidden;border-radius:var(--r);aspect-ratio:4/3;background:var(--sand);cursor:zoom-in}
.sn-gal-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.sn-gal-item:hover img{transform:scale(1.05)}
@media(max-width:1024px){.sn-gal-grid,.sn-gal-grid[data-kolommen="4"]{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.sn-gal-grid,.sn-gal-grid[data-kolommen="2"],.sn-gal-grid[data-kolommen="4"]{grid-template-columns:1fr}}


/* ============================================================
   37. PROJECTDETAIL: eigen hero-addon (v1.2.6)
   De vorige hero hing af van een class op de SP Page Builder-kolom.
   Die opmaak pakte niet, waardoor de titel bovenaan over het menu viel.
   De hero is nu een eigen addon met exact dezelfde opbouw als de hero's
   op de andere pagina's, dus dezelfde opmaak en hetzelfde gedrag.
   ============================================================ */
.hero.hero--project{min-height:clamp(360px,56vh,640px);height:auto;align-items:flex-end}
.hero--project .hero-content{padding-bottom:56px}
.hero-card--project{max-width:900px;padding:34px 40px 32px}
.hero-card--project h1{font-size:clamp(1.9rem,3.6vw,3.1rem);margin:0}
.hero-card--project .hero-eyebrow{margin-bottom:.7rem}
.hero-terug{display:inline-flex;align-items:center;gap:9px;margin-top:1.4rem;
  color:#fff;text-decoration:none;font-size:.82rem;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;opacity:.85;transition:opacity .2s}
.hero-terug:hover{opacity:1;color:#fff}
@media(max-width:768px){.hero-card--project{padding:24px 22px}}

/* knoprand met wat meer gewicht in de selector, zodat een latere basisregel
   hem niet alsnog overschrijft */
body.site .btn.btn-outline{border:2px solid rgba(255,255,255,.85)}
body.site .btn.btn-outline:hover{border-color:#fff;background:rgba(255,255,255,.14)}
body.site .btn.btn-white{border:2px solid #fff}
body.site .btn.btn-outline-dark{border:2px solid var(--green)}


/* ============================================================
   38. CORRECTIES OP GEMETEN WAARDEN (v1.2.7)
   ------------------------------------------------------------
   Gemeten op de live site bij viewport 1534 (kantlijn 1320):
   - logo begon op 163px i.p.v. 148px: de Bootstrap-kolommen in de
     header zetten er nog 15px padding bij bovenop de 48px gutter.
   - de Contact-knop was 70px hoog in een balk van 72px en eindigde
     op 1351 i.p.v. 1372, dus niet op de kantlijn.
   - SP Page Builder laadt zijn stylesheet NA custom.css. Regels met
     maar één class verliezen het daardoor van SPPB. Alles wat een
     door SPPB gerenderd element opmaakt staat hier daarom met
     body.site ervoor en waar nodig !important.
   ============================================================ */

/* -- header: logo en menu exact op de kantlijn ---------------------------- */
body.site #sp-header.sn-header #sp-logo,
body.site #sp-header.sn-header #sp-menu{padding-left:0!important;padding-right:0!important}
body.site #sp-header.sn-header .container-inner > .row{margin-left:0!important;margin-right:0!important}

/* -- Contact-knop: echte knop in plaats van een blok over de volle balk --- */
body.site #sp-header.sn-header .sp-megamenu-parent > li > a.nav-cta-item,
body.site #sp-header.sn-header .sp-megamenu-parent > li.nav-cta-item > a{
  height:auto!important;line-height:1.2!important;padding:11px 20px!important;
  margin:0 0 0 12px!important;border-radius:4px}
body.site #sp-header.sn-header .sp-megamenu-parent > li:last-child{margin-right:0}

/* -- projectensectie: kop links, knop rechts, raster eronder -------------- */
.proj-kop{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:2.2rem}
.proj-kop-tekst{max-width:760px}
.proj-kop h2{margin:0}
.proj-kop-knop{flex-shrink:0;white-space:nowrap}
@media(max-width:768px){.proj-kop{flex-direction:column;align-items:flex-start;gap:1.2rem}}

/* -- projectdetail: tekst had geen ruimte onder de hero ------------------- */
body.site .sppb-dynamic-content-text.sn-detail-intro{
  font-size:1.12rem!important;line-height:1.7!important;color:var(--body);
  max-width:820px;margin:56px 0 0!important}
body.site .sppb-dynamic-content-text.sn-detail-body{
  max-width:820px;margin:22px 0 0!important;line-height:1.75}
body.site .sppb-dynamic-content-text.sn-detail-body h2{font-size:1.5rem;font-weight:800;color:var(--ink);margin:30px 0 10px}
body.site .sppb-dynamic-content-text.sn-detail-body p{margin:0 0 16px}

/* -- galerij en projectnavigatie sloten met te veel lucht op elkaar aan --- */
.sn-projectgalerij{padding:72px 0 56px}
.sn-projectnav{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;
  padding:26px 0 0;margin:0;border-top:1px solid rgba(0,0,0,.1)}
.sn-projectnav > span:empty{flex:1 1 0;min-width:0}
.sn-projectnav .btn{flex-shrink:0}


/* ============================================================
   39. MENU EXACT GELIJK AAN DE OORSPRONKELIJKE SITE (v1.2.8)
   ------------------------------------------------------------
   Beide menu's naast elkaar gemeten bij viewport 1534:

                      oude site      was hier      nu
     logohoogte          56px          65px       56px
     linktekst        13.92px (600)  16px (400)   13.92px (600)
     linkpadding       8px 14px         0px       8px 14px
     linkhoogte          40px          70px       40px
     actief            wit 10%        wit 14%     wit 10%
     Contact-knop      8px 14px      11px 20px    8px 14px
     rechterkant        1372px        1351px      1372px

   Waarom het eerder niet pakte: Helix schrijft zijn menuregels met
   TWEE id's (#sp-header #sp-menu ...). Dat weegt zwaarder dan mijn
   selector met één id. Vandaar dezelfde opbouw plus !important.
   ============================================================ */
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li > a,
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li > span{
  font-size:.87rem!important;font-weight:600!important;
  padding:8px 14px!important;line-height:1.2!important;height:auto!important;
  border-radius:4px!important;color:rgba(255,255,255,.82)!important;
  display:inline-block!important;vertical-align:middle}
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li > a:hover{
  color:#fff!important;background:rgba(255,255,255,.1)!important}
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li.active > a,
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li.current > a{
  background:rgba(255,255,255,.1)!important;color:#fff!important}
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li{margin:0 1px!important}
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent{margin-right:0!important}
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li:last-child{margin-right:0!important}

/* Contact: zelfde maatvoering als de andere items, alleen groen */
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li > a.nav-cta-item,
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li.nav-cta-item > a{
  background:var(--green)!important;color:#fff!important;
  padding:8px 14px!important;margin-left:6px!important;border-radius:4px!important}
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li > a.nav-cta-item:hover,
body.site #sp-header.sn-header #sp-menu .sp-megamenu-parent > li.nav-cta-item > a:hover{
  background:var(--green-dark)!important}

/* logo op 56px, precies zoals de oude site */
body.site #sp-header.sn-header .container-inner{min-height:72px}


/* ============================================================
   40. PROJECTNAVIGATIE (v1.2.8)
   De balk stond 15px binnen de kantlijn en plakte met 0px tegen de
   groene band eronder. Hij zit nu in dezelfde .wrap als de rest.
   ============================================================ */
.sn-projectnav-sectie{padding:0 0 72px}
.sn-projectnav{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;
  padding:26px 0 0;margin:0;border-top:1px solid rgba(0,0,0,.1)}
.sn-projectnav > span:empty{flex:1 1 0}
.sn-projectnav .btn{flex-shrink:0}

/* footerlogo: hetzelfde kleurenlogo als in het menu */
.sn-footer .foot-logo-img{height:56px;width:auto;max-width:250px;object-fit:contain;display:block;margin-bottom:1.1rem}


/* ============================================================
   41. MENU volgens de vaste MMX-aanpak (v1.2.9)
   ------------------------------------------------------------
   Overgenomen uit de twee eerder op deze manier gebouwde sites.
   Die lossen exact dezelfde twee Helix-eigenaardigheden zo op:
     1. Bootstrap zet gutters op de headerkolommen  -> #sp-logo/#sp-menu padding 0
     2. Helix zet kleur, achtergrond en hoogte vast -> !important op die drie
     3. font-size:0 op de <ul>: haalt de spatie tussen de inline-block
        menu-items weg. Dat was hier de laatste 5px: het menu eindigde
        op 1367 in plaats van 1372.
   ============================================================ */
body.site #sp-header.sn-header .sp-megamenu-parent{margin:0;font-size:0}
body.site #sp-header.sn-header .sp-megamenu-parent > li{
  display:inline-flex;align-items:center;vertical-align:middle;float:none;
  margin:0 1px!important;padding:0}
body.site #sp-header.sn-header .sp-megamenu-parent > li:last-child{margin-right:0!important;padding-right:0}


/* ============================================================
   42. FOOTERLOGO IN KLEUR (v1.2.10)
   Op het logo stond filter:brightness(0) invert(1). Dat maakt eerst
   alles zwart en daarna wit: het logo werd dus een witte silhouet,
   welk bestand er ook onder lag. Filter eruit bij de bron én hier
   uitgezet, voor het geval een oudere regel blijft hangen.
   ============================================================ */
body.site .sn-footer .foot-logo-img,
body.site .foot-logo-img{filter:none!important;-webkit-filter:none!important;
  height:56px;width:auto;max-width:250px;object-fit:contain;display:block;margin-bottom:1.1rem}


/* ============================================================
   43. LEESRITME EN KAARTEN (v1.3.0)
   ------------------------------------------------------------
   Gemeten op de oorspronkelijke site (/OUD/tuinontwerp): die pagina
   heeft VIJF secties met elk 100px padding, en het ritme komt van de
   achtergrond: wit -> grijs (foto rechts) -> wit -> groene CTA.
   De nieuwe pagina's waren allemaal wit; daardoor las 200px tussen
   twee blokken als leegte in plaats van als sectiescheiding.
   De kaartenrij: op de oude site 5 kolommen van 232px en kaarten van
   225px hoog, dus lange titels passen. Hier waren de kaarten 187px
   met een vaste hoogte, waardoor een titel van drie regels eruit liep.
   ============================================================ */

/* -- achtergrondvarianten voor de secties -------------------------------- */
body.site .sn-band.sn-zand{background:var(--sand)}
body.site .sn-band.sn-grijs{background:var(--grey-nav)}
body.site .sn-band.sn-groen{background:var(--green)}
body.site .sn-band.sn-grijs h2,body.site .sn-band.sn-grijs h3,body.site .sn-band.sn-grijs h4,
body.site .sn-band.sn-groen h2,body.site .sn-band.sn-groen h3,body.site .sn-band.sn-groen h4{color:#fff}
body.site .sn-band.sn-grijs p,body.site .sn-band.sn-grijs li,
body.site .sn-band.sn-groen p,body.site .sn-band.sn-groen li{color:rgba(255,255,255,.92)}
body.site .sn-band.sn-grijs .eyebrow,body.site .sn-band.sn-groen .eyebrow{color:rgba(255,255,255,.7)}
body.site .sn-band.sn-grijs .eyebrow::before,body.site .sn-band.sn-groen .eyebrow::before{background:rgba(255,255,255,.5)}
body.site .sn-band.sn-grijs .check-item,body.site .sn-band.sn-groen .check-item{color:#fff}
body.site .sn-band.sn-grijs .btn-outline-dark,body.site .sn-band.sn-groen .btn-outline-dark{color:#fff;border-color:#fff}
/* kaarten binnen een gekleurde sectie houden hun eigen witte vlak */
body.site .sn-band.sn-grijs .sn-sub,body.site .sn-band.sn-grijs .k-card,
body.site .sn-band.sn-grijs .sn-stat{background:rgba(255,255,255,.08)}
body.site .sn-band.sn-grijs .sn-sub h3,body.site .sn-band.sn-grijs .sn-sub p{color:#fff}

/* twee witte secties op rij: halveer de tussenruimte, anders leest het als leegte */
body.site .sppb-section:has(.sn-band:not(.sn-zand):not(.sn-grijs):not(.sn-groen))
       + .sppb-section .sn-band:not(.sn-zand):not(.sn-grijs):not(.sn-groen){padding-top:0}

/* -- kaarthoogte volgt de inhoud (raster zelf staat in par. 44) --------- */
body.site .sn-cards > *{height:auto;min-height:0}

/* -- koppen breken netjes af (aanpak uit de eerdere projecten) ----------- */
body.site h1,body.site h2,body.site h3,body.site h4{
  overflow-wrap:break-word;hyphens:manual;-webkit-hyphens:manual;text-wrap:balance}
body.site .d-title,body.site .k-titel,body.site .proj-meta-title{
  overflow-wrap:break-word;hyphens:manual;-webkit-hyphens:manual;text-wrap:balance}
body.site .d-title{line-height:1.3}

/* ============================================================
   44. KAARTEN, CIJFERS EN SUBSECTIES - herontwerp 1.4.0
   Aanleiding, in volgorde van de opmerkingen:
   a) een kaart mag nooit dezelfde kleur hebben als zijn ondergrond;
   b) de titel stond naast het icoon, waardoor er in een kolom van
      229px nog ~118px overbleef en woorden werden afgebroken;
   c) een knop in alleen de laatste kaart leest als een fout: die
      knop staat nu in een voetblok onder het raster;
   d) lime cijfers en grijze labels op een grijze band waren
      onleesbaar (contrast 2.2:1 resp. 1.1:1);
   e) de infokolommen waren te vlak.
   ============================================================ */

/* -- 44.1 raster: 3 per rij, laatste rij vult zichzelf ------------------- */
body.site .sn-cards{grid-template-columns:repeat(6,minmax(0,1fr));gap:1.25rem;
  align-items:stretch;margin-top:0}
body.site .sn-cards > *{grid-column:span 2}
body.site .sn-cards[data-sn-aantal="1"]{grid-template-columns:minmax(0,1fr)}
body.site .sn-cards[data-sn-aantal="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
body.site .sn-cards[data-sn-aantal="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}
body.site .sn-cards[data-sn-aantal="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}
body.site .sn-cards[data-sn-aantal="1"] > *,body.site .sn-cards[data-sn-aantal="2"] > *,
body.site .sn-cards[data-sn-aantal="3"] > *,body.site .sn-cards[data-sn-aantal="4"] > *{grid-column:auto}
/* vijf kaarten: 3 boven, 2 breed eronder in plaats van vijf smalle kolommen */
body.site .sn-cards[data-sn-aantal="5"] > *:nth-child(4),
body.site .sn-cards[data-sn-aantal="5"] > *:nth-child(5){grid-column:span 3}
@media(max-width:1024px){
  body.site .sn-cards,body.site .sn-cards[data-sn-aantal="3"],
  body.site .sn-cards[data-sn-aantal="4"]{grid-template-columns:repeat(2,minmax(0,1fr))}
  body.site .sn-cards > *,body.site .sn-cards[data-sn-aantal="5"] > *:nth-child(4),
  body.site .sn-cards[data-sn-aantal="5"] > *:nth-child(5){grid-column:auto}
}
@media(max-width:600px){
  body.site .sn-cards,body.site .sn-cards[data-sn-aantal="2"],
  body.site .sn-cards[data-sn-aantal="3"],body.site .sn-cards[data-sn-aantal="4"]{grid-template-columns:minmax(0,1fr)}
}

/* -- 44.2 kaartvlak steekt altijd af tegen de sectie --------------------- */
body.site .sn-band .d-card{background:var(--sand);border:1px solid rgba(26,26,26,.07);
  border-bottom-width:1px;border-radius:var(--r);position:relative;overflow:hidden;box-shadow:none;
  transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
body.site .sn-band.sn-zand .d-card{background:var(--white);border-color:rgba(26,26,26,.06);
  box-shadow:0 1px 3px rgba(0,0,0,.05)}
body.site .sn-band.sn-grijs .d-card,body.site .sn-band.sn-groen .d-card{
  background:var(--white);border-color:transparent;box-shadow:0 10px 26px rgba(0,0,0,.18)}
/* op een gekleurde band blijft de tekst IN de witte kaart gewoon donker */
body.site .sn-band.sn-grijs .d-card .d-title,body.site .sn-band.sn-groen .d-card .d-title{color:var(--ink)}
body.site .sn-band.sn-grijs .d-card .d-text,body.site .sn-band.sn-groen .d-card .d-text{color:var(--muted)}
body.site .sn-band.sn-grijs .d-card .d-link,body.site .sn-band.sn-groen .d-card .d-link{
  color:var(--green-dark);border-color:var(--green)}
body.site .sn-band.sn-grijs .d-card .d-link:hover,body.site .sn-band.sn-groen .d-card .d-link:hover{
  background:var(--green);color:#fff}

/* -- 44.3 hover: optillen met een groene onderlijn, niet omkleuren ------- */
body.site .sn-band .d-card::after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;
  background:var(--green);transform:scaleX(0);transform-origin:left center;transition:transform .3s ease}
body.site .sn-band .d-card:hover::after{transform:scaleX(1)}
body.site .sn-band .d-card:hover{background:var(--sand);transform:translateY(-4px);
  box-shadow:0 14px 34px rgba(0,0,0,.12)}
body.site .sn-band.sn-zand .d-card:hover,body.site .sn-band.sn-grijs .d-card:hover,
body.site .sn-band.sn-groen .d-card:hover{background:var(--white);box-shadow:0 16px 38px rgba(0,0,0,.18)}
body.site .sn-band .d-card:hover .d-title{color:var(--ink)}
body.site .sn-band .d-card:hover .d-text{color:var(--muted)}
body.site .sn-band .d-card:hover .d-icon-wrap{background:var(--green);color:#fff}

/* -- 44.4 icoon boven de titel: de titel krijgt de volle kaartbreedte ---- */
body.site .sn-cards .d-card{padding:1.9rem 1.6rem 1.7rem}
body.site .sn-cards .d-header{flex-direction:column;align-items:flex-start;gap:.9rem;margin-bottom:.55rem}
body.site .sn-cards .d-icon-wrap{width:48px;height:48px;font-size:19px;border-radius:12px}
body.site .sn-cards .d-title{font-size:1.12rem;line-height:1.3;width:100%;max-width:100%}
body.site .sn-cards .d-text{font-size:14.5px;line-height:1.72;margin:0 0 1.3rem}

/* -- 44.5 kop boven een raster ------------------------------------------ */
body.site .sn-kaarten-kop{max-width:820px}
body.site .sn-kaarten-kop h2{margin-bottom:.8rem}
body.site .sn-kaarten-intro{font-size:16.5px;line-height:1.75;color:var(--muted);margin:0}
body.site .sn-band.sn-grijs .sn-kaarten-intro,body.site .sn-band.sn-groen .sn-kaarten-intro{color:rgba(255,255,255,.92)}
body.site .sn-kaarten-kop + .sn-cards{margin-top:2.6rem}

/* -- 44.6 bestandsregels (lange titels, bv. PDF-ontwerpen) -------------- */
body.site .sn-cards.sn-bestanden,body.site .sn-cards.sn-bestanden[data-sn-aantal]{
  grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
/* :nth-child(n) alleen om het aantal-regels hierboven te overstemmen */
body.site .sn-cards.sn-bestanden > *:nth-child(n){grid-column:auto}
body.site .d-card.d-bestand{display:flex;flex-direction:row;align-items:center;gap:1.15rem;
  padding:1.15rem 1.4rem;text-decoration:none}
body.site .d-bestand .d-icon-wrap{width:42px;height:42px;font-size:17px;border-radius:10px}
body.site .d-bestand-body{flex:1;min-width:0}
body.site .d-bestand .d-title{display:block;font-size:1.02rem;font-weight:800;color:var(--ink);line-height:1.35}
body.site .d-bestand .d-text{display:block;font-size:13.5px;color:var(--muted);margin:.2rem 0 0}
body.site .d-bestand-actie{flex-shrink:0;font-size:.82rem;font-weight:700;color:var(--green-dark);
  display:inline-flex;align-items:center;gap:7px;white-space:nowrap;transition:gap .2s ease}
body.site .d-bestand:hover .d-bestand-actie{gap:12px}
@media(max-width:1024px){body.site .sn-cards.sn-bestanden,
  body.site .sn-cards.sn-bestanden[data-sn-aantal]{grid-template-columns:minmax(0,1fr)}}
@media(max-width:560px){body.site .d-card.d-bestand{flex-wrap:wrap}
  body.site .d-bestand-actie{width:100%;padding-left:calc(42px + 1.15rem)}}

/* -- 44.7 voetblok onder het raster: tekst plus een knop ----------------- */
body.site .sn-kaarten-voet{margin-top:1.25rem;display:flex;align-items:center;
  justify-content:space-between;gap:2.5rem;padding:1.9rem 2rem;border-radius:var(--r);
  background:var(--green-light);border:1px solid rgba(122,140,53,.20)}
body.site .sn-kaarten-voet-tekst{min-width:0}
body.site .sn-kaarten-voet h3{margin:0 0 .35rem;font-size:1.2rem;font-weight:800;color:var(--ink)}
body.site .sn-kaarten-voet p{margin:0;font-size:15.5px;line-height:1.7;color:var(--body);max-width:64ch}
body.site .sn-kaarten-voet .btn{flex-shrink:0}
body.site .sn-band.sn-grijs .sn-kaarten-voet,body.site .sn-band.sn-groen .sn-kaarten-voet{
  background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.32)}
body.site .sn-band.sn-grijs .sn-kaarten-voet h3,body.site .sn-band.sn-groen .sn-kaarten-voet h3{color:#fff}
body.site .sn-band.sn-grijs .sn-kaarten-voet p,body.site .sn-band.sn-groen .sn-kaarten-voet p{color:rgba(255,255,255,.92)}
@media(max-width:768px){body.site .sn-kaarten-voet{flex-direction:column;align-items:flex-start;gap:1.4rem}}

/* -- 44.8 cijfers: leesbaar op elke achtergrond -------------------------- */
body.site .sn-band.sn-compact{padding:72px 0}
body.site .sn-stats-kop{max-width:820px;margin-bottom:2.4rem}
body.site .sn-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:0}
body.site .sn-stats[data-sn-aantal="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
body.site .sn-stats[data-sn-aantal="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}
body.site .sn-stats[data-sn-aantal="5"]{grid-template-columns:repeat(5,minmax(0,1fr))}
body.site .sn-stat{background:var(--white);border:1px solid rgba(26,26,26,.10);
  border-radius:var(--r);padding:2.1rem 1rem 1.8rem;text-align:center}
body.site .sn-band.sn-zand .sn-stat{background:var(--white);border-color:rgba(26,26,26,.07)}
body.site .sn-band.sn-grijs .sn-stat,body.site .sn-band.sn-groen .sn-stat{
  background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.34)}
body.site .sn-stat-num{font-size:clamp(2.1rem,4vw,3.2rem);font-weight:800;line-height:1;
  color:var(--green-dark);margin-bottom:0}
body.site .sn-stat-num::after{content:'';display:block;width:30px;height:3px;border-radius:2px;
  background:var(--green);margin:.65rem auto .55rem}
body.site .sn-band.sn-grijs .sn-stat-num,body.site .sn-band.sn-groen .sn-stat-num{color:#fff}
body.site .sn-band.sn-grijs .sn-stat-num::after{background:var(--green)}
body.site .sn-band.sn-groen .sn-stat-num::after{background:#fff}
body.site .sn-stat-label{font-size:.76rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.12em;color:var(--ink);opacity:.72}
body.site .sn-band.sn-grijs .sn-stat-label,body.site .sn-band.sn-groen .sn-stat-label{color:#fff;opacity:.9}
@media(max-width:900px){body.site .sn-stats,body.site .sn-stats[data-sn-aantal="3"],
  body.site .sn-stats[data-sn-aantal="5"]{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:460px){body.site .sn-stats{grid-template-columns:minmax(0,1fr)}}

/* -- 44.9 subsecties: genummerd, accentlijn, eigen vlak ------------------ */
body.site .sn-subsecties-kop{max-width:820px;margin-bottom:2.6rem}
body.site .sn-subsecties-intro{font-size:16.5px;line-height:1.75;color:var(--muted);margin:0}
body.site .sn-band.sn-grijs .sn-subsecties-intro,body.site .sn-band.sn-groen .sn-subsecties-intro{color:rgba(255,255,255,.92)}
body.site .sn-subsecties{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;margin-top:0}
body.site .sn-subsecties[data-sn-aantal="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
body.site .sn-subsecties[data-sn-aantal="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}
body.site .sn-sub{position:relative;overflow:hidden;display:flex;flex-direction:column;
  background:var(--white);border:1px solid rgba(26,26,26,.07);border-top:3px solid var(--green);
  border-radius:var(--r);padding:2.1rem 1.9rem 1.9rem}
body.site .sn-band.sn-grijs .sn-sub,body.site .sn-band.sn-groen .sn-sub{
  background:var(--white);border-color:transparent;border-top-color:var(--green);
  box-shadow:0 10px 26px rgba(0,0,0,.18)}
body.site .sn-genummerd .sn-sub::before{content:attr(data-nr);position:absolute;top:.3rem;right:1rem;
  font-size:3.8rem;font-weight:800;line-height:1;color:var(--green);opacity:.13;pointer-events:none}
body.site .sn-sub h3{font-size:1.15rem;font-weight:800;color:var(--ink);
  margin:0 0 .8rem;padding:0;border:0;position:relative}
body.site .sn-sub p{font-size:15.5px;line-height:1.75;color:var(--body);margin:0 0 1.3rem}
body.site .sn-sub .btn{margin-top:auto;align-self:flex-start}
body.site .sn-band.sn-grijs .sn-sub h3,body.site .sn-band.sn-groen .sn-sub h3{color:var(--ink)}
body.site .sn-band.sn-grijs .sn-sub p,body.site .sn-band.sn-groen .sn-sub p{color:var(--body)}
body.site .sn-band.sn-grijs .sn-sub .btn-outline-dark,body.site .sn-band.sn-groen .sn-sub .btn-outline-dark{
  color:var(--green-dark);border-color:var(--green)}
body.site .sn-band.sn-grijs .sn-sub .btn-outline-dark:hover,body.site .sn-band.sn-groen .sn-sub .btn-outline-dark:hover{
  background:var(--green);color:#fff}
@media(max-width:1024px){body.site .sn-subsecties,body.site .sn-subsecties[data-sn-aantal="4"]{
  grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){body.site .sn-subsecties,body.site .sn-subsecties[data-sn-aantal="2"],
  body.site .sn-subsecties[data-sn-aantal="4"]{grid-template-columns:minmax(0,1fr)}}

/* -- 44.10 de uitgelichte kaart op de homepage blijft groen -------------- */
body.site .sn-band .d-card.featured{background:var(--green);border-color:transparent;
  box-shadow:0 8px 24px rgba(122,140,53,.28)}
body.site .sn-band .d-card.featured:hover{background:var(--green-dark);
  box-shadow:0 14px 34px rgba(122,140,53,.34)}
body.site .sn-band .d-card.featured::after{background:#fff}
body.site .sn-band .d-card.featured .d-title,
body.site .sn-band .d-card.featured:hover .d-title{color:#fff}
body.site .sn-band .d-card.featured .d-text,
body.site .sn-band .d-card.featured:hover .d-text{color:rgba(255,255,255,.9)}
body.site .sn-band .d-card.featured .d-icon-wrap,
body.site .sn-band .d-card.featured:hover .d-icon-wrap{background:rgba(255,255,255,.18);color:#fff}
body.site .sn-band .d-card.featured .d-link{color:#fff;border-color:rgba(255,255,255,.55)}
body.site .sn-band .d-card.featured .d-link:hover{background:rgba(255,255,255,.18);border-color:#fff;color:#fff}

/* ============================================================
   45. MOBIEL MENU (offcanvas) - 1.4.1
   Helix stijlt alleen het actieve item; de gewone links vielen terug
   op de standaardkleur van Bootstrap (#0d6efd, blauw) op een grijs
   paneel. Contrast 1,6:1, en het paste bij niets.
   ============================================================ */
/* Breedte NIET wijzigen: Helix parkeert het paneel met right:-300px buiten
   beeld. Bij 320px bleef er 20px in beeld staan als grijze strook rechts. */
body.site .offcanvas-menu{width:300px;background:var(--grey-nav)}
body.site .offcanvas-menu .offcanvas-inner{padding:0 22px 32px}
body.site .offcanvas-menu .close-offcanvas{color:#fff}
body.site .offcanvas-menu .close-offcanvas .burger-icon>span{background:#fff}

body.site .offcanvas-menu .offcanvas-inner ul.menu{list-style:none;margin:0;padding:0}
/* de scheidslijn staat op de link zelf; op de li wordt hij door Helix
   overschreven */
body.site .offcanvas-menu .offcanvas-inner ul.menu>li>a{border-bottom:1px solid rgba(255,255,255,.16)}
body.site .offcanvas-menu .offcanvas-inner ul.menu>li:last-child>a{border-bottom:0}
body.site .offcanvas-menu .offcanvas-inner ul.menu li>a{
  display:block;padding:14px 0;font-size:16px;font-weight:600;line-height:1.3;
  color:#fff;text-decoration:none;background:none;border-radius:0;
  transition:color .2s ease,padding-left .2s ease}
body.site .offcanvas-menu .offcanvas-inner ul.menu li>a:hover,
body.site .offcanvas-menu .offcanvas-inner ul.menu li>a:focus{color:var(--green);padding-left:6px}

/* het actieve item krijgt een groene markering in plaats van blauw */
body.site .offcanvas-menu .offcanvas-inner ul.menu li.active>a,
body.site .offcanvas-menu .offcanvas-inner ul.menu li.current>a{
  color:var(--green);position:relative;padding-left:14px}
body.site .offcanvas-menu .offcanvas-inner ul.menu li.active>a::before,
body.site .offcanvas-menu .offcanvas-inner ul.menu li.current>a::before{
  content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:4px;height:20px;border-radius:2px;background:var(--green)}

/* submenu-items een niveau naar binnen */
body.site .offcanvas-menu .offcanvas-inner ul.menu ul{list-style:none;margin:0;padding:0 0 8px 14px}
body.site .offcanvas-menu .offcanvas-inner ul.menu ul li{border:0}
body.site .offcanvas-menu .offcanvas-inner ul.menu ul li>a{
  padding:9px 0;font-size:15px;font-weight:500;color:rgba(255,255,255,.82)}

/* Contact blijft ook op mobiel de groene knop */
body.site .offcanvas-menu .offcanvas-inner ul.menu li>a.nav-cta-item,
body.site .offcanvas-menu .offcanvas-inner ul.menu li.nav-cta-item>a{
  margin:18px 0 0;padding:13px 22px;background:var(--green);color:#fff;
  border-radius:var(--r);text-align:center;font-weight:700}
body.site .offcanvas-menu .offcanvas-inner ul.menu li>a.nav-cta-item:hover,
body.site .offcanvas-menu .offcanvas-inner ul.menu li.nav-cta-item>a:hover{
  background:var(--green-dark);color:#fff;padding-left:22px}
body.site .offcanvas-menu .offcanvas-inner ul.menu>li>a.nav-cta-item{border-bottom:0}
body.site .offcanvas-menu .offcanvas-inner ul.menu ul li>a{border-bottom:0}

/* ============================================================
   46. LOGO IN DE KOPBALK - 1.4.2
   Er stonden zes regels voor de logohoogte door elkaar heen
   (65, 65, 52, 56!, 48!), overblijfsel van eerdere versies.
   Dit is nu de enige plek waar die hoogte wordt bepaald.
   Het !important is nodig omdat Helix de hoogte uit de
   templateparameter als losse regel in de pagina schrijft.
   Gemeten op 390px: de kopbalk is 72px, maar Helix zet de
   logohouder daar op 50px terwijl het logo 56px hoog was. Het
   beeld stak dus boven en onder zijn houder uit en hing te hoog.
   ============================================================ */
body.site #sp-header .logo{display:inline-flex;align-items:center;height:72px}
body.site #sp-header.sn-header .logo-image,
body.site #sp-header.sn-header #sp-logo .logo-image{
  height:56px!important;width:auto;max-width:250px;object-fit:contain}
@media(max-width:991px){
  body.site #sp-header.sn-header .logo-image,
  body.site #sp-header.sn-header #sp-logo .logo-image{height:44px!important;max-width:200px}}
@media(max-width:480px){
  body.site #sp-header.sn-header .logo-image,
  body.site #sp-header.sn-header #sp-logo .logo-image{height:40px!important;max-width:170px}}

/* ============================================================
   47. INSIGNE "25+ JAAR VAKMANSCHAP" - 1.4.2
   De cirkel is 110px, maar het label had geen breedtebegrenzing.
   Een tekst van twee woorden werd daardoor een regel die breder
   was dan de cirkel en er links en rechts uit liep.
   ============================================================ */
body.site .over-badge{width:120px;height:120px;padding:0 14px;text-align:center}
body.site .over-badge i{font-size:1.5rem;margin-bottom:2px}
body.site .over-badge-num{line-height:1.1}
body.site .over-badge-label{max-width:100%;font-size:.58rem;line-height:1.25;
  letter-spacing:.06em;overflow-wrap:break-word;hyphens:manual;white-space:normal}
@media(max-width:600px){
  body.site .over-badge{width:104px;height:104px;padding:0 10px;top:-14px;right:-10px}
  body.site .over-badge i{font-size:1.25rem}
  body.site .over-badge-label{font-size:.54rem}}

/* ============================================================
   48. PROJECTDETAIL ALS VERHAAL - 1.5.0
   ------------------------------------------------------------
   Was: een tekstkolom van 820px (110 tekens per regel), direct
   daaronder een raster van 3 gelijke foto's. Elke regel even
   zwaar, niets om naar te kijken tussen hero en galerij.
   Nu vier composities onder elkaar, elk met een eigen reden:
   1. opening : inleiding groot links (kol 1-7), kenmerken met
                het aantal foto's rechts (kol 9-12). De tekst
                krijgt gewicht, de kolom ernaast geeft houvast.
   2. fotoduo : breed beeld + staand beeld dat 80px verspringt en
                over de rand van de zandband steekt: de overgang
                wit -> zand loopt dwars door de foto's.
   3. verhaal : de lopende tekst op zand, naar rechts verschoven
                (kol 5-11), regellengte max 64 tekens.
   4. galerij : mozaiek op 4 kolommen met grote en brede vlakken,
                de laatste rij altijd vol (SnoekProject::maten).
   Daarna vorig/volgend project met foto in plaats van een losse knop.
   Raster: 12 kolommen, goot 30px binnen de .wrap (1320 - 2x48).
   Kantlijn: .sn-full rekende met 100vw, inclusief de scrollbalk. Alle
   volle-breedtesecties stonden daardoor 7-8px links van het logo
   (gemeten 41 tegen 48 bij een scrollbalk van 15px). snoek.js zet nu
   --sn-vw op de breedte zonder scrollbalk; zonder JS blijft 100vw.
   ============================================================ */
.sn-pv{--pv-gap:30px}
.sn-pv-opening-grid,.sn-pv-duo-grid,.sn-pv-verhaal-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--pv-gap)}

/* 1. opening */
.sn-pv-opening{padding:100px 0 80px;background:var(--white)}
.sn-pv-inleiding{grid-column:1 / span 7}
.sn-pv-inleiding .eyebrow{margin-bottom:1.4rem}
.sn-pv-inleiding .eyebrow::before,.sn-pv-verhaal .eyebrow::before{content:'';width:32px;height:2px;background:var(--green);flex-shrink:0}
body.site .sn-pv-lead,body.site .sn-pv-lead p{
  font-size:clamp(1.3rem,1.02rem + .9vw,1.7rem);line-height:1.45;font-weight:400;color:var(--ink);letter-spacing:-.005em}
body.site .sn-pv-lead p{margin:0 0 .8em}
body.site .sn-pv-lead p:last-child{margin-bottom:0}
.sn-pv-lead a,.sn-pv-tekst a{color:var(--green-dark);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.sn-pv-lead a:hover,.sn-pv-tekst a:hover{color:var(--ink)}

.sn-pv-kenmerken{grid-column:9 / span 4;align-self:start;border-top:3px solid var(--green);padding-top:26px}
.sn-pv-aantal{display:grid;grid-template-columns:auto 1fr;column-gap:16px;align-items:end;text-decoration:none;color:inherit;margin-bottom:28px}
.sn-pv-getal{grid-row:1 / span 2;font-size:4.2rem;line-height:.85;font-weight:800;color:var(--green-dark);letter-spacing:-.03em}
.sn-pv-getal-tekst{font-size:.95rem;line-height:1.3;color:var(--body)}
.sn-pv-getal-link{font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--green-dark);transition:color .2s}
.sn-pv-getal-link i{margin-left:4px;transition:transform .2s}
.sn-pv-aantal:hover .sn-pv-getal-link{color:var(--ink)}
.sn-pv-aantal:hover .sn-pv-getal-link i{transform:translateY(3px)}
.sn-pv-lijst{margin:0 0 24px;padding:0}
.sn-pv-lijst > div{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid rgba(0,0,0,.1)}
.sn-pv-lijst > div:first-child{border-top:1px solid rgba(0,0,0,.1)}
.sn-pv-lijst dt{font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.sn-pv-lijst dd{margin:0;font-weight:700;color:var(--ink);text-align:right}
body.site .sn-pv-vraag{margin:0;font-size:.95rem;line-height:1.5;color:var(--body)}
.sn-pv-vraag a{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--green-dark);text-decoration:none;transition:gap .2s}
.sn-pv-vraag a:hover{gap:10px;color:var(--ink)}

/* 2. fotoduo: de zandband begint halverwege de brede foto */
.sn-pv-duo{padding:0;background:var(--white)}
.sn-pv-duo--band{background:linear-gradient(to bottom,var(--white) 0,var(--white) 55%,var(--sand) 55%,var(--sand) 100%)}
.sn-pv-duo-grid{align-items:start}
.sn-pv-foto{display:block;overflow:hidden;border-radius:var(--r);background:var(--sand);cursor:zoom-in}
.sn-pv-foto img{width:100%;height:100%;object-fit:cover;display:block;transition:scale .6s ease}
.sn-pv-foto:hover img{scale:1.04}
.sn-pv-foto--breed{grid-column:1 / span 7;aspect-ratio:4/3}
.sn-pv-foto--staand{grid-column:9 / span 4;aspect-ratio:4/5;margin-top:80px}

/* 3. verhaal */
.sn-pv-verhaal{background:var(--sand);padding:80px 0 100px}
.sn-pv-verhaal-grid > *{grid-column:5 / span 7}
.sn-pv-verhaal .eyebrow{margin-bottom:1.2rem}
.sn-pv-tekst{max-width:64ch}
body.site .sn-pv-tekst p{font-size:17px;line-height:1.8;margin:0 0 1.1em;color:var(--body)}
body.site .sn-pv-tekst p:last-child{margin-bottom:0}
body.site .sn-pv-tekst h2,body.site .sn-pv-tekst h3{font-size:1.35rem;font-weight:800;color:var(--ink);margin:1.6em 0 .5em}
body.site .sn-pv-tekst ul{list-style:disc;padding-left:1.35em;margin:0 0 1.1em}
/* zonder fotoduo sluit het verhaal direct aan op de opening */
.sn-pv-opening + .sn-pv-verhaal{padding-top:80px}

/* 4. galerij als mozaiek */
body.site .sn-projectgalerij{padding:100px 0 72px}
.sn-gal-kopregel{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:1.6rem}
body.site .sn-gal-kopregel .sn-gal-kop{margin:0}
body.site .sn-gal-grid.sn-gal-mozaiek{
  --gal-gap:16px;--gal-kol:4;
  grid-template-columns:repeat(var(--gal-kol),minmax(0,1fr));gap:var(--gal-gap);grid-auto-flow:dense;
  grid-auto-rows:calc((min(var(--sn-vw,100vw),1320px) - 96px - (var(--gal-kol) - 1) * var(--gal-gap)) / var(--gal-kol) * .75)}
body.site .sn-gal-mozaiek[data-aantal="1"]{--gal-kol:1}
body.site .sn-gal-mozaiek[data-aantal="2"]{--gal-kol:2}
body.site .sn-gal-mozaiek[data-aantal="3"]{--gal-kol:3}
body.site .sn-gal-mozaiek .sn-gal-item{aspect-ratio:auto;height:100%}
body.site .sn-gal-mozaiek .sn-gal-item--groot{grid-column:span 2;grid-row:span 2}
body.site .sn-gal-mozaiek .sn-gal-item--breed{grid-column:span 2}
body.site .sn-gal-mozaiek[data-aantal="4"] .sn-gal-item--groot.sn-gal-item--rechts{grid-column:3 / span 2}

/* 5. vorig / volgend project */
.sn-projectnav.sn-projectnav--kaarten{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:30px;padding:30px 0 0}
.sn-pn-kaart{display:flex;align-items:center;gap:18px;text-decoration:none;color:inherit;min-width:0}
.sn-pn-kaart--volgende{flex-direction:row-reverse;text-align:right}
.sn-pn-foto{flex:0 0 132px;aspect-ratio:4/3;overflow:hidden;border-radius:var(--r);background:var(--sand)}
.sn-pn-foto img{width:100%;height:100%;object-fit:cover;display:block;transition:scale .5s ease}
.sn-pn-kaart:hover .sn-pn-foto img{scale:1.06}
.sn-pn-tekst{display:flex;flex-direction:column;gap:4px;min-width:0}
.sn-pn-label{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--green-dark)}
.sn-pn-titel{font-size:1.05rem;font-weight:800;line-height:1.3;color:var(--ink);transition:color .2s}
.sn-pn-kaart:hover .sn-pn-titel{color:var(--green-dark)}
.sn-pn-alle{white-space:nowrap}
.sn-pn-alle i{margin-right:6px}

@media(max-width:1024px){
  .sn-pv-inleiding{grid-column:1 / span 12}
  .sn-pv-kenmerken{grid-column:1 / span 12;margin-top:48px;display:grid;grid-template-columns:auto 1fr;column-gap:48px;align-items:start}
  .sn-pv-aantal{margin-bottom:0}
  .sn-pv-lijst{margin-bottom:16px}
  .sn-pv-vraag{grid-column:2}
  .sn-pv-verhaal-grid > *{grid-column:1 / span 12}
  body.site .sn-gal-grid.sn-gal-mozaiek{--gal-kol:2;grid-auto-rows:calc((var(--sn-vw,100vw) - 64px - var(--gal-gap)) / 2 * .75)}
  body.site .sn-gal-mozaiek[data-aantal="4"] .sn-gal-item--groot.sn-gal-item--rechts{grid-column:span 2}
  .sn-projectnav.sn-projectnav--kaarten{grid-template-columns:1fr 1fr;row-gap:24px}
  .sn-pn-alle{grid-column:1 / -1;grid-row:2;justify-self:center}
}
@media(max-width:768px){
  .sn-pv-opening{padding:64px 0 48px}
  .sn-pv-kenmerken{display:block;margin-top:40px}
  .sn-pv-aantal{margin-bottom:24px}
  .sn-pv-foto--breed{grid-column:1 / span 12}
  .sn-pv-foto--staand{grid-column:5 / span 8;aspect-ratio:1/1;margin-top:-56px;position:relative;border:6px solid var(--white)}
  .sn-pv-duo--band{background:linear-gradient(to bottom,var(--white) 0,var(--white) 50%,var(--sand) 50%,var(--sand) 100%)}
  .sn-pv-verhaal{padding:56px 0 72px}
  body.site .sn-pv-tekst p{font-size:16px}
  body.site .sn-projectgalerij{padding:72px 0 56px}
  body.site .sn-gal-grid.sn-gal-mozaiek{--gal-gap:10px;grid-auto-rows:calc((var(--sn-vw,100vw) - 40px - var(--gal-gap)) / 2 * .75)}
  .sn-pn-foto{flex-basis:84px}
  .sn-pn-titel{font-size:.95rem}
}
@media(max-width:560px){
  .sn-projectnav.sn-projectnav--kaarten{grid-template-columns:1fr}
  .sn-pn-kaart--volgende{flex-direction:row;text-align:left}
  .sn-pn-alle{grid-row:auto;justify-self:stretch;text-align:center}
}
@media(prefers-reduced-motion:reduce){.sn-pv-foto img,.sn-pn-foto img{transition:none}}

/* ============================================================
   49. KOPBALK OP DE KANTLIJN (TABLET EN MOBIEL) - 1.5.2
   Gemeten in een iframe van 390 en 768px: de inhoud staat op 20px
   (.wrap), maar de kopbalk hield de 32px van de tabletregel. Het
   logo stond 12px verder naar binnen dan alles eronder. Het
   hamburgericoon had daarbij nog een marge van 20px van Helix en
   eindigde 52px van de rand in plaats van 20.
   ============================================================ */
body.site #sp-header.sn-header .offcanvas-toggler-secondary,
body.site #sp-header.sn-header .offcanvas-toggler-right{margin-right:0}
@media(max-width:768px){
  body.site #sp-header.sn-header .container-inner{padding:0 20px}
}

/* ============================================================
   50. JURIDISCHE PAGINA'S (privacyverklaring, cookiebeleid) - 1.5.2
   Was: een kolom van 860px, alle paragrafen even zwaar, en de
   paginatitel stond er nog een keer boven terwijl hij al in de
   hero staat. Nu: inhoudsopgave links (kol 1-4, blijft staan bij
   scrollen, markeert waar je bent), tekst rechts (kol 6-12, max
   68 tekens), genummerde paragrafen, eerste alinea als inleiding.
   De inhoudsopgave maakt snoek.js uit de h2's; zonder JS blijft
   het een gewone tekstkolom.
   ============================================================ */
body.site .sn-legal .sn-band{padding:100px 0 110px}
.sn-legal .sn-legal-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:30px;align-items:start}
/* de titel staat al in de hero: alleen nog voor schermlezers */
.sn-legal .sn-legal-grid > h2{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sn-legal .sn-legal-grid > .sn-intro-text{grid-column:6 / span 7;max-width:68ch;counter-reset:sn-legal}
.sn-legal-inhoud{grid-column:1 / span 4;position:sticky;top:104px;border-top:3px solid var(--green);padding-top:22px}
.sn-legal-inhoud-kop{font-size:var(--fs-1);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.sn-legal-inhoud ol{list-style:none;margin:0;padding:0}
.sn-legal-inhoud a{display:flex;gap:14px;align-items:baseline;padding:9px 0;border-bottom:1px solid rgba(0,0,0,.08);
  font-size:var(--fs-2);font-weight:600;line-height:1.35;color:var(--body);text-decoration:none;transition:color .2s,padding-left .2s}
.sn-legal-inhoud a:hover{color:var(--ink);padding-left:4px}
.sn-legal-inhoud a.is-actief{color:var(--green-dark)}
.sn-legal-nr{flex:0 0 auto;font-size:var(--fs-1);font-weight:800;color:var(--green);font-variant-numeric:tabular-nums}

/* eerste alinea als inleiding */
body.site .sn-legal .sn-legal-grid .sn-intro-text > p:first-child{font-size:var(--fs-3);line-height:1.5;color:var(--ink);margin:0 0 8px}
/* genummerde paragrafen */
body.site .sn-legal .sn-legal-grid .sn-intro-text h2{counter-increment:sn-legal;display:flex;align-items:baseline;gap:16px;
  font-size:var(--fs-4);margin:60px 0 20px;padding-top:30px;border-top:1px solid rgba(0,0,0,.1);scroll-margin-top:100px}
body.site .sn-legal .sn-legal-grid .sn-intro-text h2::before{content:counter(sn-legal,decimal-leading-zero);
  font-size:var(--fs-1);font-weight:800;letter-spacing:.06em;color:var(--green);flex:0 0 auto;transform:translateY(-2px)}
body.site .sn-legal .sn-legal-grid .sn-intro-text p,body.site .sn-legal .sn-legal-grid .sn-intro-text li{font-size:var(--fs-2);line-height:1.75}
body.site .sn-legal .sn-legal-grid .sn-intro-text ul{list-style:none;padding-left:0}
body.site .sn-legal .sn-legal-grid .sn-intro-text ul li{position:relative;padding-left:22px}
body.site .sn-legal .sn-legal-grid .sn-intro-text ul li::before{content:'';position:absolute;left:2px;top:.72em;width:8px;height:2px;background:var(--green)}

@media(max-width:1024px){
  .sn-legal .sn-legal-grid > .sn-intro-text{grid-column:5 / span 8}
}
@media(max-width:860px){
  .sn-legal .sn-legal-grid > .sn-intro-text,.sn-legal-inhoud{grid-column:1 / -1}
  .sn-legal-inhoud{position:static;margin-bottom:48px}
  .sn-legal-inhoud ol{columns:2;column-gap:30px}
  .sn-legal-inhoud li{break-inside:avoid}
  body.site .sn-legal .sn-band{padding:64px 0 72px}
}
@media(max-width:560px){
  .sn-legal-inhoud ol{columns:1}
  body.site .sn-legal .sn-legal-grid .sn-intro-text h2{margin-top:40px}
}

/* ============================================================
   51. SNOEK INTRO ALS OPENING - 1.6.0
   Was (dienstpagina's, direct onder de hero): tekst over de volle
   1224px (170 tekens per regel) met losse vinkjes eronder.
   Nu dezelfde opening als op de projectpagina's: tekst links
   (kol 1-7) met de eerste alinea als inleiding, de punten rechts
   als lijst onder een groene lijn (kol 9-12). Meer dan 6 punten:
   drie kolommen over de volle breedte onder de tekst.
   ============================================================ */
.sn-intro--opening{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:30px;align-items:start}
.sn-intro--opening .sn-intro-hoofd{grid-column:1 / span 7}
.sn-intro--opening.sn-intro--zonder-lijst .sn-intro-hoofd{grid-column:1 / span 8}
.sn-intro--opening .sn-intro-lijst{grid-column:9 / span 4;border-top:3px solid var(--green);padding-top:22px}
.sn-intro--opening.sn-intro--veel .sn-intro-lijst{grid-column:1 / -1;margin-top:60px}
.sn-intro--opening h2{margin:0 0 24px}
body.site .sn-intro--opening .sn-intro-text > p.sn-lead{font-size:var(--fs-4);line-height:1.45;color:var(--ink);margin:0 0 20px}
body.site .sn-band.sn-grijs .sn-intro--opening .sn-intro-text > p.sn-lead,
body.site .sn-band.sn-groen .sn-intro--opening .sn-intro-text > p.sn-lead{color:#fff}
.sn-intro--opening .btn{margin-top:30px}
.sn-intro-lijst-kop{font-size:var(--fs-1);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.sn-intro-punten{list-style:none;margin:0;padding:0}
.sn-intro-punten li{display:flex;align-items:flex-start;gap:14px;padding:13px 0;border-bottom:1px solid rgba(0,0,0,.1);
  font-size:var(--fs-2);font-weight:700;line-height:1.4;color:var(--ink)}
.sn-intro-punten li i{flex:0 0 26px;height:26px;border-radius:50%;background:var(--green-light);color:var(--green-dark);
  display:inline-flex;align-items:center;justify-content:center;font-size:11px;margin-top:-1px}
.sn-intro--veel .sn-intro-punten{columns:3;column-gap:30px}
.sn-intro--veel .sn-intro-punten li{break-inside:avoid}
body.site .sn-band.sn-grijs .sn-intro-punten li,body.site .sn-band.sn-groen .sn-intro-punten li{color:#fff;border-color:rgba(255,255,255,.2)}
body.site .sn-band.sn-grijs .sn-intro-lijst-kop,body.site .sn-band.sn-groen .sn-intro-lijst-kop{color:rgba(255,255,255,.75)}
@media(max-width:1024px){
  .sn-intro--opening .sn-intro-hoofd{grid-column:1 / -1}
  .sn-intro--opening .sn-intro-lijst{grid-column:1 / -1;margin-top:48px}
  .sn-intro--veel .sn-intro-punten{columns:2}
}
@media(max-width:560px){.sn-intro--veel .sn-intro-punten{columns:1}}

/* ============================================================
   52. TYPESCHAAL EN MATEN - 1.6.0
   ------------------------------------------------------------
   Gemeten op 13 pagina's bij 1440px: 30 verschillende letter-
   groottes (norm: hooguit 8) en tekstregels tot 172 tekens
   (norm 45-75). Nu een schaal met een verhouding (1,25) vanaf
   17px lopende tekst:
     --fs-1 13,6  labels in kapitalen, kleine meta, formulierlabels
     --fs-2 17    lopende tekst, lijsten, knoppen, kaarttekst
     --fs-3 21,25 inleidingen, kaarttitels, tussenkoppen klein
     --fs-4 26,5  h3, grote inleiding
     --fs-5 33,2  h2 mobiel
     --fs-6 41,5  h2, grote cijfers
     --fs-7 51,9  h1 projecten / h1 tablet
     --fs-8 64,8  h1 homepage, cijfer projectpagina
   Stappen in plaats van clamp(): op elke schermbreedte liggen
   alle maten op de schaal. Regellengte: alinea's max 68 tekens.
   Het menu staat bewust buiten deze schaal: dat is gelijk
   gehouden aan de oude site (§39).
   ============================================================ */
:root{--fs-1:.85rem;--fs-2:1.0625rem;--fs-3:1.328rem;--fs-4:1.66rem;--fs-5:2.075rem;--fs-6:2.594rem;--fs-7:3.242rem;--fs-8:4.05rem;
  --h1:var(--fs-8);--h1-project:var(--fs-7);--h2:var(--fs-6)}
@media(max-width:1100px){:root{--h1:var(--fs-7);--h1-project:var(--fs-6)}}
@media(max-width:768px){:root{--h1:var(--fs-6);--h1-project:var(--fs-5);--h2:var(--fs-5)}}
@media(max-width:480px){:root{--h1:var(--fs-5);--h1-project:var(--fs-4);--h2:var(--fs-4)}}

/* lopende tekst */
/* basismaten met :where(): specificiteit 0,0,1, zodat elke component-
   regel (inleiding, kaart, label) er gewoon overheen gaat */
body.site{font-size:var(--fs-2)}
:where(body.site #sp-main) :is(p,li){font-size:var(--fs-2)}
:where(body.site #sp-main) :is(p,li){max-width:36em}
body.site .cta-inner p,body.site .hero-lead{margin-left:inherit;margin-right:inherit}

/* koppen */
body.site .hero h1{font-size:var(--h1)}
body.site .hero-card--project h1{font-size:var(--h1-project)}
:where(body.site #sp-main) h2,body.site .cta-inner h2{font-size:var(--h2)}
:where(body.site #sp-main) h3,body.site .vacature-item h3{font-size:var(--fs-4)}
:where(body.site #sp-main) h4{font-size:var(--fs-3)}
body.site .sn-sub h3,body.site .sn-kaarten-voet h3,body.site .step-title{font-size:var(--fs-3)}
body.site .d-title,body.site .sn-cards .d-title,body.site .d-bestand .d-title,body.site .proj-name,body.site .sn-pn-titel{font-size:var(--fs-3)}
body.site .sn-gal-kop,body.site .sn-gal-kopregel .sn-gal-kop{font-size:var(--fs-4)}
body.site .sn-legal .sn-legal-grid .sn-intro-text h2{font-size:var(--fs-4)}
body.site .sn-legal .sn-intro-text h3{font-size:var(--fs-3)}

/* inleidingen */
body.site .hero-lead,body.site .cta-inner p,body.site .sn-kaarten-intro,body.site .sn-subsecties-intro,
body.site .sn-legal .sn-legal-grid .sn-intro-text > p:first-child{font-size:var(--fs-3)}
body.site .sn-pv-lead,body.site .sn-pv-lead p{font-size:var(--fs-4)}

/* kleine tekst en kaarttekst op de lopende maat */
body.site .d-text,body.site .sn-cards .d-text,body.site .step-text,body.site .check-item,body.site .sn-sub p,
body.site .sn-kaarten-voet-tekst p,body.site .proj-meta-title,body.site .sn-pv-tekst p,body.site .sn-pv-getal-tekst,
body.site .sn-pv-vraag,body.site .sn-legal .sn-legal-grid .sn-intro-text p,body.site .sn-legal .sn-legal-grid .sn-intro-text li,
body.site .sn-legal-inhoud a,body.site .btn,body.site .rsform-submit-button,body.site .foot-links a,body.site .foot-links li,
body.site .foot-tagline{font-size:var(--fs-2)}
body.site .d-bestand .d-text,body.site .foot-copy,body.site .foot-legal a,body.site .foot-legal span,body.site .form-label{font-size:var(--fs-1)}

/* labels in kapitalen: allemaal dezelfde maat en spatiering */
body.site .eyebrow,body.site .hero-eyebrow,body.site .sn-stat-label,body.site .proj-link,body.site .sn-pv-lijst dt,
body.site .sn-pv-getal-link,body.site .sn-pn-label,body.site .sn-legal-inhoud-kop,body.site .sn-intro-lijst-kop,
body.site .foot-col-h,body.site .hero-terug,body.site .d-link,body.site .d-bestand-actie,body.site .vacature-item h4{
  font-size:var(--fs-1);letter-spacing:.14em}
body.site .sn-legal-nr,body.site .sn-legal .sn-legal-grid .sn-intro-text h2::before{font-size:var(--fs-1)}

/* cijfers */
body.site .sn-stat-num{font-size:var(--fs-6)}
body.site .sn-pv-getal{font-size:var(--fs-8)}
body.site .over-badge-num{font-size:var(--fs-3)}

/* kolomgoten naar de ruimteschaal (10/20/30/40/60/100): twee kolommen tekst + beeld 60px */
.sn-intro-cols{gap:60px}
.main-grid{gap:60px}
@media(max-width:900px){.sn-intro-cols{gap:40px}}

/* ============================================================
   53. CONTACT - 1.6.0
   Was: twee even zware koppen naast elkaar, links in Bootstrap-
   blauw (#0d6efd), het formulier los op wit met grijze randen en
   een verzendknop zonder kleur (btn-primary won van de eigen
   regel). Nu: links de gegevens als lijst met ronde iconen onder
   een groene lijn (zelfde taal als de projectkenmerken), kaart
   eronder; rechts het formulier in een zandkleurig vlak met een
   kleinere kop, velden in twee kolommen waar dat kan.
   Kolommen: 1-5 en 7-12 van het 12-kolomsraster.
   ============================================================ */
body.site .sn-contact-grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:30px;row-gap:60px;align-items:start}
body.site .sn-contact-left{grid-column:1 / span 5}
body.site .sn-contact-right{grid-column:7 / span 6}
body.site .sn-contact-left h2{margin:0 0 20px}
body.site .sn-contact-left > p{font-size:var(--fs-3);line-height:1.5;color:var(--ink);margin:0 0 30px}
body.site .sn-contact-info{gap:0;margin:0;border-top:3px solid var(--green)}
body.site .sn-contact-info li{align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid rgba(0,0,0,.1);font-size:var(--fs-2);color:var(--ink)}
body.site .sn-contact-info i{flex:0 0 36px;width:36px;height:36px;margin:0;border-radius:50%;background:var(--green-light);color:var(--green-dark);
  display:inline-flex;align-items:center;justify-content:center;font-size:14px}
body.site .sn-contact-info a{color:var(--ink);font-weight:700;text-decoration:none;transition:color .2s}
body.site .sn-contact-info a:hover{color:var(--green-dark)}
body.site .sn-map{margin-top:40px;aspect-ratio:4/3;border-radius:var(--r);filter:saturate(.85)}

/* formulier in een vlak */
body.site .sn-contact-right{background:var(--sand);border-radius:var(--r);padding:40px}
body.site #sp-main .sn-contact-right h2{font-size:var(--fs-4);margin:0 0 30px}
body.site .sn-contact-right .formContainer > .row{margin:0}
body.site .sn-contact-right .formContainer .col-md-12{display:grid;grid-template-columns:1fr 1fr;column-gap:20px;padding:0}
body.site .sn-contact-right .rsform-block{grid-column:1 / -1;margin:0 0 20px}
body.site .sn-contact-right .rsform-block-postcode,body.site .sn-contact-right .rsform-block-woonplaats,
body.site .sn-contact-right .rsform-block-email,body.site .sn-contact-right .rsform-block-telefoon{grid-column:span 1}
body.site .sn-contact-right .formControlLabel{font-size:var(--fs-1);font-weight:700;color:var(--ink);margin:0 0 8px;letter-spacing:.02em}
body.site .sn-contact-right .formRequired{color:var(--green-dark);font-weight:700}
body.site .sn-contact-right .form-control,body.site .sn-contact-right .rsform-input-box,body.site .sn-contact-right .rsform-text-box{
  height:52px;padding:0 16px;font-size:var(--fs-2);border:1px solid rgba(0,0,0,.14);border-radius:var(--r);background:#fff;box-shadow:none}
body.site .sn-contact-right .rsform-text-box,body.site .sn-contact-right textarea.form-control{height:auto;min-height:160px;padding:14px 16px}
body.site .sn-contact-right .form-control:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(158,175,80,.25);outline:none}
body.site .sn-contact-right .rsform-block-submit{margin:10px 0 0}
body.site .sn-contact-right .rsform-submit-button.btn,body.site .sn-contact-right .rsform-submit-button{
  background:var(--green)!important;border:0!important;color:#fff!important;padding:15px 34px;font-weight:700;border-radius:var(--r)}
body.site .sn-contact-right .rsform-submit-button:hover{background:var(--green-dark)!important;transform:none;box-shadow:none}
body.site .sn-contact-right .formError,body.site .sn-contact-right .formValidation{font-size:var(--fs-1);color:var(--red)}

@media(max-width:1024px){
  body.site .sn-contact-left,body.site .sn-contact-right{grid-column:1 / -1}
}
@media(max-width:560px){
  body.site .sn-contact-right{padding:30px 20px}
  body.site .sn-contact-right .formContainer .col-md-12{grid-template-columns:1fr}
  body.site .sn-contact-right .rsform-block-postcode,body.site .sn-contact-right .rsform-block-woonplaats,
  body.site .sn-contact-right .rsform-block-email,body.site .sn-contact-right .rsform-block-telefoon{grid-column:1 / -1}
}

/* ============================================================
   54. HERO-STANDAARD - 1.6.0
   Was: een vaste hoogte (82vh / 44vh) met de tekstkaart daarin
   uitgelijnd. Bij een lange titel of een laag scherm werd de kaart
   hoger dan de hero en plakte hij tegen de menubalk (gezien op
   Werken bij, 1907px breed: 0px ruimte boven, de sliderbolletjes
   in de kaart). Nu bepaalt de inhoud de hoogte:
     ruimte boven en onder de kaart altijd minimaal 100px
     (tablet 60, mobiel 40); de bolletjes staan 40px van de onderkant,
     dus altijd onder de kaart
     minimale hoogte: homepage 640, dienstpagina 460, project 520
   ============================================================ */
body.site .hero{height:auto;min-height:640px;padding:100px 0;align-items:flex-end}
body.site .hero.hero--compact{min-height:460px;height:auto;align-items:center}
body.site .hero.hero--project{min-height:520px;align-items:flex-end}
body.site .hero .hero-content,body.site .hero--project .hero-content,body.site .hero--compact .hero-content{padding-top:0;padding-bottom:0}
body.site .hero-dots{bottom:40px}
body.site .hero:has(.hero-dots){padding-bottom:120px}
@media(max-width:1024px){
  body.site .hero{padding:60px 0;min-height:520px}
  body.site .hero.hero--compact{min-height:400px}
  body.site .hero.hero--project{min-height:440px}
  body.site .hero:has(.hero-dots){padding-bottom:90px}
  body.site .hero-dots{bottom:30px}
}
@media(max-width:768px){
  body.site .hero,body.site .hero.hero--compact,body.site .hero.hero--project{padding:40px 0;min-height:0}
  body.site .hero:has(.hero-dots){padding-bottom:70px}
  body.site .hero-dots{bottom:24px}
}
/* contact: kop links even groot als de kop boven het formulier, en op dezelfde hoogte */
body.site #sp-main .sn-contact-left h2.sn-contact-kop{font-size:var(--fs-4);margin:40px 0 30px}
@media(max-width:560px){body.site #sp-main .sn-contact-left h2.sn-contact-kop{margin-top:0}}

/* ============================================================
   55. CORRECTIES NA DE NAMETING VAN 1.6.0 - 1.6.1
   ============================================================ */
/* Regellengte: 68ch bleek in Nunito Sans 88-94 tekens (ch = breedte
   van de 0, en die is breder dan het gemiddelde teken). 36em is
   gemeten 70-74 tekens. */
body.site .sn-legal .sn-legal-grid > .sn-intro-text,body.site .sn-pv-tekst{max-width:36em}

/* Tekst naast een foto (Snoek Intro met foto), 1.6.2.
   1.6.1 zette de foto op 4:5; bij een korte tekst (Tuinaanleg) werd de foto
   dan veel hoger dan de tekst, met een groot wit vlak eronder. Nu lijnen
   tekst en foto boven en onder: de foto vult de hoogte van de tekstkolom
   (staand bij een lange tekst), exact zo hoog als het tekstblok;
   alleen bij een heel korte tekst niet lager dan 320px. Dezelfde taal
   als de opening: eerste alinea als inleiding, punten als regels met een
   rond vinkje, knop op 30px. */
body.site .sn-intro-cols{align-items:stretch}
body.site .sn-intro-cols .sn-intro-photo-wrap{position:relative;min-height:320px;border-radius:var(--r);overflow:hidden}
body.site .sn-intro-cols .sn-intro-photo{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;object-fit:cover}
body.site .sn-intro-cols .sn-intro-col{align-self:start}
body.site .sn-intro-cols .sn-intro-col > .sn-intro-text:first-child > p.sn-lead,
body.site .sn-intro-cols .sn-intro-col > .sn-intro-text > p.sn-lead{font-size:var(--fs-3);line-height:1.5;color:var(--ink)}
body.site .sn-band.sn-grijs .sn-intro-cols .sn-intro-text > p.sn-lead,
body.site .sn-band.sn-groen .sn-intro-cols .sn-intro-text > p.sn-lead{color:#fff}
body.site .sn-intro-cols .btn{margin-top:30px}
@media(max-width:900px){
  body.site .sn-intro-cols .sn-intro-photo-wrap{min-height:0;aspect-ratio:4/3}
}

/* Vinklijsten overal dezelfde regel: rond vinkje, vet, lijn eronder */
body.site .sn-checks{display:block;margin:30px 0 0;border-top:1px solid rgba(0,0,0,.1)}
body.site .sn-checks .check-item{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid rgba(0,0,0,.1);
  font-size:var(--fs-2);font-weight:700;line-height:1.4;color:var(--ink)}
body.site .sn-checks .check-item i{flex:0 0 26px;height:26px;margin:0;border-radius:50%;background:var(--green-light);color:var(--green-dark);
  display:inline-flex;align-items:center;justify-content:center;font-size:11px}
body.site .sn-band.sn-grijs .sn-checks,body.site .sn-band.sn-grijs .sn-checks .check-item,
body.site .sn-band.sn-groen .sn-checks,body.site .sn-band.sn-groen .sn-checks .check-item{border-color:rgba(255,255,255,.2)}
body.site .sn-band.sn-grijs .sn-checks .check-item,body.site .sn-band.sn-groen .sn-checks .check-item{color:#fff}

/* laatste maten buiten de schaal */
body.site .diensten-left-text p,body.site .over-text p,body.site .over-text strong,body.site .ww-head p{font-size:var(--fs-2)}
body.site .f-btn,body.site .proj-tag,body.site .proj-count{font-size:var(--fs-1)}
body.site .over-badge{width:132px;height:132px}
body.site .over-badge-num{font-size:var(--fs-3)}
body.site .over-badge-label{font-size:var(--fs-1);letter-spacing:.04em;line-height:1.15;text-transform:none}
@media(max-width:600px){body.site .over-badge{width:116px;height:116px}}

/* Vacatures (Werken bij): was een omkaderde doos, 20px binnen de kantlijn,
   met alles in een smalle kolom en rechts een lege helft. Nu zonder kader,
   op de kantlijn, met de functie en de inleiding links (kol 1-5) en de inhoud rechts (kol 7-12). */
body.site .sn-vacatures{gap:0;margin-top:60px}
body.site .vacature-item{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:30px;align-items:start;
  background:none;border:0;border-top:3px solid var(--green);border-radius:0;padding:40px 0 80px}
body.site .vacature-item > h3{grid-column:1 / span 5;grid-row:1;margin:0 0 20px}
body.site .vacature-item > .vacature-intro{grid-column:1 / span 5;grid-row:2;margin:0;padding:0;border:0}
body.site .vacature-item > .vacature-intro p{font-size:var(--fs-3);line-height:1.5;color:var(--ink)}
body.site .vacature-item > .vacature-body{grid-column:7 / span 6;grid-row:1 / span 3}
body.site .vacature-body > h4:first-child{margin-top:6px}
body.site .vacature-body h4{margin:40px 0 12px}
body.site .vacature-body ul{gap:0}
body.site .vacature-body ul li{padding:10px 0 10px 28px;border-bottom:1px solid rgba(0,0,0,.08)}
body.site .vacature-body ul li::before{top:13px}
@media(max-width:1024px){
  body.site .vacature-item > h3,body.site .vacature-item > .vacature-intro,body.site .vacature-item > .vacature-body{grid-column:1 / -1;grid-row:auto}
  body.site .vacature-item > .vacature-intro{margin-bottom:30px}
}

/* Over ons: bij veel punten (diensten) staat de kop van de sectie er al boven */
body.site .sn-intro--veel .sn-intro-lijst-kop{display:none}

/* Projectraster: geen losse kaart in de laatste rij. snoek.js maakt zo nodig
   een of twee kaarten twee kolommen breed (.proj-card--breed); de foto vult dan
   de hoogte van de rij, dus de rij blijft even hoog. */
body.site .proj-grid{grid-auto-flow:dense}
body.site .proj-card{display:flex;flex-direction:column}
body.site .proj-card--breed{grid-column:span 2}
body.site .proj-card--breed .proj-img-wrap{aspect-ratio:auto;flex:1 1 auto;min-height:0}
body.site .proj-card--breed .proj-img-wrap img{position:absolute;inset:0}
@media(max-width:1024px){body.site .proj-card--breed .proj-img-wrap{aspect-ratio:16/7;flex:none}}

/* Over-band (homepage, Werken bij): dezelfde vinkregels, in twee kolommen */
body.site .over-checks{column-gap:30px;row-gap:0;margin:30px 0 0}
body.site .over-checks .check-item{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.18);
  font-size:var(--fs-2);font-weight:700;line-height:1.4;color:#fff}
body.site .over-checks .check-item i{flex:0 0 26px;height:26px;margin:0;border-radius:50%;background:rgba(255,255,255,.12);color:var(--green);
  display:inline-flex;align-items:center;justify-content:center;font-size:11px}

/* ============================================================
   56. EEN REGEL VOOR DE OPENING ONDER DE HERO - 1.6.2
   Civiel en Groen dak zagen er verschillend uit: de een met kop en
   een volledig grote alinea, de ander zonder kop; en de tekst links
   begon op een andere hoogte dan de groene lijn rechts.
   De regel, voor elke opening (dienstpagina's en projectpagina):
     - geen eigen kop: de titel staat al in de hero
     - eerste alinea = inleiding, een maat (--fs-3), de rest lopende tekst
     - de bovenkant van de tekst links = de bovenkant van het label
       rechts: beide 25px onder de lijn (3px lijn + 22px), links zonder lijn
   Een inleiding is overal op de site dezelfde maat: --fs-3.
   ============================================================ */
body.site .sn-intro--opening .sn-intro-hoofd{padding-top:25px}
body.site .sn-intro--opening .sn-intro-lijst{padding-top:22px}
body.site .sn-intro--opening .sn-intro-text > p.sn-lead{font-size:var(--fs-3);line-height:1.5;margin-bottom:20px}
body.site .sn-intro--opening .sn-intro-hoofd > .eyebrow:first-child,
body.site .sn-intro--opening .sn-intro-hoofd > h2:first-child{margin-top:0}
/* projectpagina: dezelfde maat en dezelfde uitlijning */
body.site .sn-pv-lead,body.site .sn-pv-lead p{font-size:var(--fs-3);line-height:1.5}
body.site .sn-pv-inleiding{padding-top:25px}
body.site .sn-pv-kenmerken{padding-top:22px}
@media(max-width:1024px){body.site .sn-intro--opening .sn-intro-hoofd,body.site .sn-pv-inleiding{padding-top:0}}

/* ============================================================
   57. VASTE STRUCTUUR INTROSECTIE - 1.6.3
   ------------------------------------------------------------
   Opmerking Edwin: de ene introsectie (direct onder de hero)
   begon met label + kop + tekst, de andere alleen met tekst.
   Regel voor ELKE introsectie:
     1. label (eyebrow)        --fs-1, groen, kapitalen
     2. kop (h2)               --h2
     3. inleiding              --fs-3, alleen als de eerste alinea
                               kort is (<= 320 tekens)
     4. tekst, lijst, foto
   Label -> kop 16px, kop -> inleiding 20px, inleiding -> tekst 20px.
   Het label is nooit gelijk aan het label in de hero.
   De secties daaronder blijven zoals ze zijn.
   ============================================================ */
body.site :is(.sn-intro-col,.sn-intro-hoofd,.over-text) > .eyebrow{margin:0 0 16px}
body.site :is(.sn-intro-col,.sn-intro-hoofd,.over-text) > h2{margin:0 0 20px}
body.site p.sn-lead{font-size:var(--fs-3);line-height:1.5;color:var(--ink);max-width:36em;margin:0 0 20px}
body.site :is(.sn-band.sn-grijs,.sn-band.sn-groen) p.sn-lead{color:#fff}

/* ============================================================
   58. PROJECTPAGINA: VERHAAL STRAK OP HET RASTER - 1.6.4
   ------------------------------------------------------------
   Opmerking Edwin: het tekstblok zweefde (kol 5-11, alleen een
   label, geen kop, geen aansluiting op de kantlijnen). Nu zoals
   elke tweekoloms sectie: links label + kop (kol 1-5, blijft
   staan bij scrollen), rechts de tekst (kol 7-12), tekst loopt
   door tot de rechter kantlijn. Bovenkant label = bovenkant tekst.
   De galerijkop eronder krijgt dezelfde opbouw (label + h2).
   ============================================================ */
body.site .sn-pv-verhaal-grid{align-items:start}
body.site .sn-pv-verhaal-grid > *{grid-column:auto}
body.site .sn-pv-verhaal-grid > .sn-pv-tekstkop{grid-column:1 / span 5;position:sticky;top:120px}
body.site .sn-pv-verhaal-grid > .sn-pv-tekst{grid-column:7 / span 6;max-width:none}
body.site .sn-pv-tekstkop > .eyebrow{margin:0 0 16px}
body.site #sp-main .sn-pv-tekstkop > h2{margin:0;font-size:var(--h2)}
/* eerste regel tekst op de hoogte van de kop, niet van het label */
body.site .sn-pv-tekst > :first-child{margin-top:0}
@media(max-width:1024px){
  body.site .sn-pv-verhaal-grid > .sn-pv-tekstkop{grid-column:1 / span 12;position:static;margin-bottom:28px}
  body.site .sn-pv-verhaal-grid > .sn-pv-tekst{grid-column:1 / span 12;max-width:36em}
}
/* galerij: label + kop, zelfde maat als de verhaalkop */
body.site .sn-gal-kopregel{display:block;margin-bottom:48px}
body.site .sn-gal-kopregel > .eyebrow{margin:0 0 16px}
body.site #sp-main .sn-gal-kopregel .sn-gal-kop{font-size:var(--h2);margin:0}
@media(max-width:768px){body.site .sn-gal-kopregel{margin-bottom:32px}}

/* ============================================================
   59. PROJECTFILTER - 1.6.5
   ------------------------------------------------------------
   Opmerking Edwin: de filters gedroegen zich vreemd. Oorzaak:
   `body.site .proj-card{display:flex}` (par. 55) woog zwaarder dan
   `.proj-card.is-hidden{display:none}`, dus verborgen kaarten
   hielden hun plek in het raster (lege gaten, pagina even lang).
   ============================================================ */
body.site .proj-grid .proj-card.is-hidden{display:none}

/* ============================================================
   60. PROJECTOVERZICHT ALS MOZAIEK - 1.6.8
   ------------------------------------------------------------
   Opmerking Edwin: het overzicht mag speelser, net als de
   fotogalerij. Zelfde raster als de galerij (4 kolommen, vaste
   rijhoogte 3:4), grote en brede vlakken via snoekMozaiek().
   De titel staat altijd op de foto; bij hover wordt het verloop
   donkerder en verschijnt "Bekijk project".
   ============================================================ */
body.site .proj-grid.proj-mozaiek{
  --pk:4;--pgap:16px;
  grid-template-columns:repeat(var(--pk),minmax(0,1fr));gap:var(--pgap);grid-auto-flow:dense;
  grid-auto-rows:calc((min(var(--sn-vw,100vw),1320px) - 96px - (var(--pk) - 1) * var(--pgap)) / var(--pk) * .75)}
body.site .proj-mozaiek .proj-card{display:block;height:100%;min-height:0;background:var(--sand)}
body.site .proj-mozaiek .proj-card--groot{grid-column:span 2;grid-row:span 2}
body.site .proj-mozaiek .proj-card--breed{grid-column:span 2}
body.site .proj-mozaiek .proj-card--groot.proj-card--rechts{grid-column:3 / span 2}
body.site .proj-mozaiek .proj-img-wrap{position:absolute;inset:0;aspect-ratio:auto;height:auto}
body.site .proj-mozaiek .proj-img-wrap img{position:absolute;inset:0;width:100%;height:100%}
body.site .proj-mozaiek .proj-meta{display:none}
body.site .proj-mozaiek .proj-overlay{opacity:1;
  background:linear-gradient(to top,rgba(15,20,10,.8) 0%,rgba(15,20,10,.35) 32%,rgba(15,20,10,0) 58%);transition:background .35s}
body.site .proj-mozaiek .proj-card:hover .proj-overlay{
  background:linear-gradient(to top,rgba(15,20,10,.88) 0%,rgba(15,20,10,.5) 45%,rgba(15,20,10,.1) 80%)}
body.site .proj-mozaiek .proj-info{opacity:1;transform:none;padding:20px 22px;z-index:1}
body.site .proj-mozaiek .proj-name{color:#fff;font-size:var(--fs-2);line-height:1.3;max-width:26em;text-wrap:balance}
body.site .proj-mozaiek .proj-card--groot .proj-name{font-size:var(--fs-4);line-height:1.2}
body.site .proj-mozaiek .proj-card--groot .proj-info{padding:28px 30px}
body.site .proj-mozaiek .proj-link{display:flex;max-height:0;margin-top:0;overflow:hidden;opacity:0;
  transition:max-height .3s,margin-top .3s,opacity .3s}
body.site .proj-mozaiek .proj-card:hover .proj-link,body.site .proj-mozaiek .proj-card:focus-visible .proj-link{max-height:2em;margin-top:.5rem;opacity:1}
@media(max-width:1024px){
  body.site .proj-grid.proj-mozaiek{--pk:2;grid-auto-rows:calc((var(--sn-vw,100vw) - 64px - var(--pgap)) / 2 * .75)}
  body.site .proj-mozaiek .proj-card--groot.proj-card--rechts{grid-column:span 2}
}
@media(max-width:768px){
  body.site .proj-grid.proj-mozaiek{--pgap:10px;grid-auto-rows:calc((var(--sn-vw,100vw) - 40px - var(--pgap)) / 2 * .75)}
  body.site .proj-mozaiek .proj-info{padding:14px 16px}
  body.site .proj-mozaiek .proj-card--groot .proj-info{padding:20px 22px}
  body.site .proj-mozaiek .proj-name{font-size:.95rem}
  body.site .proj-mozaiek .proj-card--groot .proj-name{font-size:var(--fs-3)}
  /* geen hover op touch: de link blijft verborgen, de hele kaart is de link */
}
@media(max-width:480px){
  body.site .proj-grid.proj-mozaiek{--pk:1;grid-auto-rows:calc((var(--sn-vw,100vw) - 40px) * .7)}
  body.site .proj-mozaiek .proj-card--groot,body.site .proj-mozaiek .proj-card--breed,
  body.site .proj-mozaiek .proj-card--groot.proj-card--rechts{grid-column:auto;grid-row:auto}
  body.site .proj-mozaiek .proj-card--groot .proj-name{font-size:var(--fs-2)}
}

/* ============================================================
   61. SNOEK FOTOGALERIJ (addon) - 1.6.9
   ------------------------------------------------------------
   Losse galerij in dezelfde mozaiek als het projectoverzicht en
   de projectgalerij (zelfde raster, zelfde verdeling, lightbox).
   Kop: label + h2 + optionele inleiding (vaste opbouw, par. 57).
   Een onderschrift staat op de foto zoals de projecttitels.
   ============================================================ */
body.site .sn-fotogalerij .sn-gal-kopregel > .sn-lead{margin:20px 0 0}
body.site .sn-fotogalerij .sn-gal-item{position:relative}
body.site .sn-fotogalerij .sn-gal-raster{grid-template-columns:repeat(3,minmax(0,1fr))}
body.site .sn-fotogalerij .sn-gal-raster[data-aantal="1"]{grid-template-columns:1fr}
body.site .sn-fotogalerij .sn-gal-raster[data-aantal="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
body.site .sn-fotogalerij .sn-gal-raster .sn-gal-item{aspect-ratio:4/3}
body.site .sn-fotogalerij div.sn-gal-item{cursor:default}
body.site .sn-gal-item--tekst::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to top,rgba(15,20,10,.8) 0%,rgba(15,20,10,.3) 32%,rgba(15,20,10,0) 58%)}
body.site .sn-gal-onderschrift{position:absolute;left:0;right:0;bottom:0;z-index:1;padding:20px 22px;
  color:#fff;font-size:var(--fs-2);font-weight:700;line-height:1.3;text-wrap:balance}
body.site .sn-gal-item--groot .sn-gal-onderschrift{font-size:var(--fs-4);line-height:1.2;padding:28px 30px}
@media(max-width:1024px){
  body.site .sn-fotogalerij .sn-gal-raster{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:768px){
  body.site .sn-gal-onderschrift{padding:14px 16px;font-size:.95rem}
  body.site .sn-gal-item--groot .sn-gal-onderschrift{padding:20px 22px;font-size:var(--fs-3)}
}
@media(max-width:480px){
  body.site .sn-fotogalerij .sn-gal-raster{grid-template-columns:1fr}
}

/* ============================================================
   62. VASTSTAANDE INHOUDSOPGAVE (sticky) - 1.7.0
   ------------------------------------------------------------
   Opmerking Edwin: op privacy/cookiebeleid scrolde het menu links
   mee weg. Oorzaak: overflow-x:hidden op html/body (par. 1) en op
   .body-innerwrapper (Helix) maakt van body een scroll-container;
   position:sticky plakt dan aan body, niet aan het venster, en
   doet niets. overflow-x:clip knipt even goed af maar maakt geen
   scroll-container. Hiermee werken ook de andere sticky-blokken
   (kop van het projectverhaal).
   ============================================================ */
html,html body.site{overflow-x:clip;overflow-y:visible}
body.site .body-innerwrapper,body.site.sticky-page .body-wrapper > .body-innerwrapper{overflow-x:clip;overflow-y:visible}
@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
/* actieve paragraaf duidelijker: groen, vet, streepje ervoor */
body.site .sn-legal-inhoud a{position:relative;transition:color .2s,padding-left .2s}
body.site .sn-legal-inhoud a.is-actief{color:var(--green-dark);font-weight:700;padding-left:12px}
body.site .sn-legal-inhoud a.is-actief::before{content:'';position:absolute;left:0;top:50%;width:3px;height:1.1em;transform:translateY(-50%);background:var(--green);border-radius:2px}
/* lange inhoudsopgave op een laag scherm: zelf scrollen in plaats van onder het venster verdwijnen */
@media(min-width:1025px){
  body.site .sn-legal-inhoud{max-height:calc(100vh - 140px);overflow-y:auto;overscroll-behavior:contain}
}

/* ======================================================================
   62. FOTO'S OP IPHONE/SAFARI (v1.8.2)
   ----------------------------------------------------------------------
   Tekst + foto (Over ons, Civiel, Tuinaanleg ...): op <=900px kreeg het
   fotokader zijn hoogte alleen uit aspect-ratio, met de foto absoluut
   erin. Safari rekt dat grid-item uit naar de inhoud (0px) en de foto
   verdween. Nu staat de foto weer in de flow en bepaalt hij zelf de
   hoogte; zonder aspect-ratio-ondersteuning valt hij terug op de
   eigen verhouding van de foto. Zelfde aanpak voor de brede projectkaart.
   ====================================================================== */
@media(max-width:900px){
  body.site .sn-intro-cols .sn-intro-photo-wrap{position:relative;align-self:start;min-height:0;height:auto;aspect-ratio:auto}
  body.site .sn-intro-cols .sn-intro-photo{position:static;inset:auto;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
}
@media(max-width:1024px){
  body.site .proj-card--breed .proj-img-wrap{aspect-ratio:auto}
  body.site .proj-card--breed .proj-img-wrap img{position:static;inset:auto;width:100%;height:auto;aspect-ratio:16/7;object-fit:cover}
}

/* 63. Tekst + foto, optie "Hele foto" (v1.8.3): niet bijsnijden, de foto
   houdt zijn eigen verhouding en staat bovenaan gelijk met de tekst (1.8.4)
   (bijv. de groepsfoto op Over ons). */
body.site .sn-intro-cols .sn-intro-photo-wrap--heel{align-self:start;min-height:0;height:auto;aspect-ratio:auto}
body.site .sn-intro-cols .sn-intro-photo-wrap--heel .sn-intro-photo{position:static;inset:auto;width:100%;height:auto;aspect-ratio:auto;object-fit:contain}
@media(max-width:900px){
  body.site .sn-intro-cols .sn-intro-photo-wrap--heel .sn-intro-photo{aspect-ratio:auto}
}

/* 64. Tekst + foto, tweede foto (v1.8.5): twee foto's onder elkaar in de
   fotokolom. Vullen: samen even hoog als de tekst, elk de helft.
   Hele foto: elk in de eigen verhouding, bovenaan uitgelijnd. */
body.site .sn-intro-cols .sn-intro-photo-wrap--duo{display:flex;flex-direction:column;gap:30px;overflow:visible;border-radius:0}
body.site .sn-intro-cols .sn-intro-photo-wrap--duo .sn-intro-photo{position:static;inset:auto;width:100%;flex:1 1 0;min-height:240px;height:auto;aspect-ratio:auto;object-fit:cover;border-radius:var(--r)}
body.site .sn-intro-cols .sn-intro-photo-wrap--duo.sn-intro-photo-wrap--heel .sn-intro-photo{flex:none;min-height:0;object-fit:contain}
@media(max-width:900px){
  body.site .sn-intro-cols .sn-intro-photo-wrap--duo{gap:20px}
  body.site .sn-intro-cols .sn-intro-photo-wrap--duo .sn-intro-photo{flex:none;min-height:0;aspect-ratio:4/3}
  body.site .sn-intro-cols .sn-intro-photo-wrap--duo.sn-intro-photo-wrap--heel .sn-intro-photo{aspect-ratio:auto}
}
