
/* MOBILE SAFETY - kill all horizontal page-scroll regardless of overflow */
html{overflow-x:clip}
body{overflow-x:clip;max-width:100vw;width:100%;position:relative}

img,video,iframe,svg,picture{max-width:100%;height:auto}
*{min-width:0}
/* Prevent long words/URLs from breaking out */
p,h1,h2,h3,h4,h5,h6,li,td,th,a{overflow-wrap:break-word;word-wrap:break-word;hyphens:manual;-webkit-hyphens:manual}
/* Containers respect viewport always */
.container{max-width:min(var(--container),100% - 32px)}
@media(max-width:600px){.container{padding-left:18px;padding-right:18px}}
/* DEHAAS - Production CSS */
:root {
  --brand-dark:#0F172A; --brand-darker:#0B111E; --charcoal:#0F172A; --charcoal-soft:#1E293B;
  --bronze:#F59E0B; --bronze-light:#FBBF24; --bronze-dark:#D97706;
  --cream:#F4F7FA; --paper:#FBFCFE; --walnut:#1E293B; --oak:#F59E0B;
  --bg:#ffffff; --bg-alt:#F1F5F9; --bg-dark:var(--brand-dark);
  --text:#3D4145;          /* body text - subtle gray, not pure black */ --text-soft:#4a4543; --text-muted:#6d6459;
  --border:#e8e1d4; --border-soft:#f0e9dc;
  --shadow-sm:0 1px 2px rgba(37,42,45,.04),0 1px 3px rgba(37,42,45,.06);
  --shadow:0 4px 6px rgba(37,42,45,.04),0 10px 25px rgba(37,42,45,.07);
  --shadow-lg:0 10px 15px rgba(37,42,45,.06),0 25px 50px rgba(37,42,45,.12);
  --shadow-xl:0 25px 50px rgba(37,42,45,.18),0 40px 80px rgba(37,42,45,.14);
  --r-sm:6px; --r:12px; --r-lg:20px; --r-xl:28px; --r-pill:999px;
  --font-heading: Arial, Helvetica, sans-serif;   /* [ref: systeemstack, geen webfont] */
  --font-body: Arial, Helvetica, sans-serif;
  --font-display:var(--font-heading);
  --ease:cubic-bezier(.22,.61,.36,1); --ease-out:cubic-bezier(.22,1,.36,1);
  --duration:.85s; --duration-fast:250ms; --duration-med:450ms; --stagger:110ms;
  --container: 1200px; --gutter:24px; --section-y:96px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font-body);font-size:17px;line-height:1.65;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
img,svg,video{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
input,textarea,select{font:inherit;color:inherit}
h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:700;line-height:1.08;letter-spacing:.02em;color:var(--brand-dark);margin:0 0 .5em;hyphens:none;-webkit-hyphens:none;overflow-wrap:normal;word-wrap:normal}
h1{font-family:var(--font-kop);letter-spacing:normal}  /* [ref: H1 altijd de brede vette sans] */
h1{font-size:clamp(38px,5.6vw,72px)}
h2{font-size:clamp(30px,3.8vw,48px)}
h3{font-size:clamp(22px,2.4vw,30px)}
h4{font-size:clamp(18px,1.6vw,22px);font-weight:700}
p{margin:0 0 1em;color:var(--text-soft)}
.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 24px}
section{padding-top:var(--section-y);padding-bottom:var(--section-y);position:relative}
section.alt{background:var(--bg-alt)}
section.dark{background:var(--charcoal);color:var(--cream)}
section.dark h1,section.dark h2,section.dark h3{color:var(--cream)}
section.dark p{color:rgba(247,245,242,.75)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:16px 28px;font-family:var(--font-heading);font-weight:700;font-size:15px;letter-spacing:.3px;border-radius:var(--r-pill);transition:transform .25s var(--ease),background-color .25s,color .25s,box-shadow .25s;white-space:nowrap;min-height:48px}
.btn-primary{background:var(--brand-dark);color:var(--cream);box-shadow:var(--shadow)}
.btn-primary:hover{background:var(--bronze-dark);transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.btn-accent{background:var(--bronze);color:var(--brand-dark)}
.btn-accent:hover{background:var(--bronze-light);transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.btn-ghost{background:transparent;color:var(--brand-dark);border:1.5px solid var(--brand-dark)}
.btn-ghost:hover{background:var(--brand-dark);color:var(--cream);transform:translateY(-2px)}
.btn-light{background:var(--cream);color:var(--brand-dark)}
.btn-light:hover{background:var(--bronze);transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.btn-outline-light{background:transparent;color:var(--cream);border:1.5px solid var(--cream)}
.btn-outline-light:hover{background:var(--cream);color:var(--brand-dark);transform:translateY(-2px)}
.btn-outline{background:transparent;color:var(--bronze-dark);border:1.5px solid var(--bronze)}
.btn-outline:hover{background:var(--bronze);color:var(--brand-dark);transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.btn svg{width:16px;height:16px}
.btn-arrow svg{transition:transform .25s var(--ease)}
.btn-arrow:hover svg{transform:translateX(4px)}

/* NAV */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:18px 24px;transition:background-color .35s,backdrop-filter .35s,padding .25s,box-shadow .35s}
.nav.scrolled{padding:12px 24px}
.nav-inner{width:100%;max-width:var(--container);margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:24px}
.nav-logo img{height:44px;width:auto}
/* Logo swap based on nav state */
.nav-logo .logo-on-light{display:none}
.nav-logo .logo-on-dark{display:block}
.nav.scrolled .nav-logo .logo-on-light{display:block}
.nav.scrolled .nav-logo .logo-on-dark{display:none}

.nav-links{display:flex;gap:30px;list-style:none;padding:0;margin:0}
.nav-links a{position:relative;font-family:var(--font-heading);font-weight:600;font-size:15px;color:var(--brand-dark);padding:8px 0;transition:color .2s}
.nav-links a::after{content:'';position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--bronze);transition:width .3s var(--ease)}
.nav-links a:hover{color:var(--bronze-dark)}
.nav-links a:hover::after,.nav-links a.active::after{width:100%}
.nav-cta{display:flex;align-items:center;gap:14px}
.nav-phone{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-heading);font-weight:700;font-size:15px;color:var(--brand-dark);transition:all .25s var(--ease)}
.nav-phone svg{width:16px;height:16px;color:var(--bronze-dark)}
.nav-burger{display:none;width:44px;height:44px;align-items:center;justify-content:center;border-radius:var(--r);background:transparent}
.nav-burger span{position:relative;width:22px;height:2px;background:var(--brand-dark);transition:background-color .2s}
.nav-burger span::before,.nav-burger span::after{content:'';position:absolute;left:0;width:22px;height:2px;background:var(--brand-dark);transition:transform .3s var(--ease)}
.nav-burger span::before{top:-7px}
.nav-burger span::after{top:7px}
.nav-burger.open span{background:transparent}
.nav-burger.open span::before{transform:translateY(7px) rotate(45deg)}
.nav-burger.open span::after{transform:translateY(-7px) rotate(-45deg)}

.mobile-menu{position:fixed;top:0;right:0;width:min(360px,100%);height:100vh;z-index:99;background:var(--bg);padding:100px 32px 32px;transform:translateX(100%);transition:transform .4s var(--ease);overflow-y:auto;box-shadow:var(--shadow-xl)}
.mobile-menu.open{transform:translateX(0)}
.mobile-menu ul{list-style:none;padding:0;margin:0}
.mobile-menu li{border-bottom:1px solid var(--border-soft)}
.mobile-menu a{display:block;padding:18px 0;font-family:var(--font-heading);font-weight:700;font-size:18px;color:var(--brand-dark)}
.mobile-menu .btn{width:100%;margin-top:24px}
.mobile-menu-overlay{position:fixed;inset:0;z-index:98;background:rgba(37,42,45,.5);opacity:0;pointer-events:none;transition:opacity .35s}
.mobile-menu-overlay.show{opacity:1;pointer-events:auto}

/* HERO */
.hero{position:relative;height:100vh;min-height:640px;overflow:hidden;background:var(--brand-darker);color:var(--cream)}
.hero-slides{position:absolute;inset:0}
.hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.2s var(--ease)}
.hero-slide.active{opacity:1}
.hero-slide-bg{position:absolute;inset:0;background-size:cover;background-position:center;transform:scale(1.0);clip-path:inset(0 100% 0 0)}
.hero-slide.active .hero-slide-bg{animation:kenburns 9s cubic-bezier(.4,0,.2,1) forwards,mask-reveal 1.2s var(--ease) forwards}
@keyframes kenburns{0%,18%{transform:scale(1.0)}100%{transform:scale(1.05)}}
@keyframes hsZoom{0%,18%{transform:scale(1.0)}100%{transform:scale(1.06)}}
@keyframes mask-reveal{to{clip-path:inset(0 0 0 0)}}
.hero-slide::after{content:'';position:absolute;inset:0;background:linear-gradient(95deg,rgba(10,10,10,.92) 0%,rgba(10,10,10,.78) 40%,rgba(10,10,10,.45) 75%,rgba(10,10,10,.35) 100%),linear-gradient(180deg,rgba(10,10,10,.35) 0%,transparent 25%,transparent 60%,rgba(10,10,10,.55) 100%)}
.hero-content{position:relative;z-index:2;max-width:var(--container);margin:0 auto;padding:0 24px;height:100%;display:flex;flex-direction:column;justify-content:center}
.hero-eyebrow{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-heading);font-weight:600;font-size:13px;letter-spacing:4px;text-transform:uppercase;color:var(--bronze-light);margin-bottom:24px;opacity:0;transform:translateX(-80px);text-shadow:0 1px 12px rgba(0,0,0,.8)}
.hero-eyebrow::before{content:'';width:36px;height:1.5px;background:var(--bronze)}
.hero h1{color:var(--cream);margin-bottom:24px;max-width:920px;opacity:0;transform:translateX(-80px);text-shadow:0 2px 30px rgba(0,0,0,.7),0 1px 4px rgba(0,0,0,.9)}
.hero-subline{font-size:clamp(17px,1.4vw,20px);color:rgba(247,245,242,.92);max-width:640px;margin-bottom:40px;opacity:0;transform:translateX(-80px);text-shadow:0 1px 16px rgba(0,0,0,.7),0 1px 3px rgba(0,0,0,.6)}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap;opacity:0;transform:translateX(-80px)}
.hero-slide.active .hero-eyebrow{animation:slide-in var(--duration) var(--ease) .1s forwards}
.hero-slide.active h1{animation:slide-in var(--duration) var(--ease) .25s forwards}
.hero-slide.active .hero-subline{animation:slide-in var(--duration) var(--ease) .45s forwards}
.hero-slide.active .hero-ctas{animation:slide-in var(--duration) var(--ease) .65s forwards}
@keyframes slide-in{to{opacity:1;transform:translateX(0)}}
.hero-dots{position:absolute;bottom:32px;left:50%;transform:translateX(-50%);display:flex;gap:12px;z-index:3}
.hero-dot{width:36px;height:3px;border-radius:2px;background:rgba(247,245,242,.3);transition:background-color .3s;cursor:pointer}
.hero-dot.active{background:var(--bronze)}
.hero-dot:hover{background:rgba(247,245,242,.55)}

/* SUBHERO */
.subhero{position:relative;height:62vh;min-height:480px;max-height:680px;display:flex;align-items:flex-end;overflow:hidden;margin-top:80px;background:var(--brand-darker)}
.subhero-bg{position:absolute;inset:0;background-size:cover;background-position:center 42%;animation:kenburns 18s ease-out forwards}
.subhero::before{content:'';position:absolute;inset:0;background:linear-gradient(95deg,rgba(10,10,10,.88) 0%,rgba(10,10,10,.65) 60%,rgba(10,10,10,.45) 100%);z-index:1}
.subhero-content{position:relative;z-index:2;max-width:var(--container);margin:0 auto;padding:0 24px 44px;width:100%}
.breadcrumb{font-family:var(--font-heading);font-size:13px;font-weight:500;color:var(--bronze-light);margin-bottom:30px;letter-spacing:.5px;text-shadow:0 1px 8px rgba(0,0,0,.5)}
.breadcrumb a{color:var(--bronze-light)}
.breadcrumb a:hover{color:var(--cream)}
.breadcrumb .sep{margin:0 10px;opacity:.5}
.subhero h1{color:var(--cream);margin-bottom:14px;max-width:920px;font-size:clamp(34px,4.4vw,60px);text-shadow:0 2px 24px rgba(0,0,0,.6)}
.subhero-sub{color:rgba(247,245,242,.92);font-size:clamp(16px,1.2vw,19px);max-width:720px;text-shadow:0 1px 16px rgba(0,0,0,.6)}

/* INTRO */
.intro-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:80px;align-items:center}
.usp-list{list-style:none;padding:0;margin:0;display:grid;gap:14px}
.usp-list li{display:flex;align-items:flex-start;gap:16px;padding:18px 22px;background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r);transition:transform .3s var(--ease),box-shadow .3s,border-color .3s}
.usp-list li:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--bronze)}
.usp-list .check{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--bronze);display:flex;align-items:center;justify-content:center;color:var(--brand-dark);margin-top:2px}
.usp-list .check svg{width:14px;height:14px}
.usp-list strong{display:block;color:var(--brand-dark);margin-bottom:2px;font-family:var(--font-heading);font-size:16px}
.usp-list span{color:var(--text-soft);font-size:14.5px}

/* WHY */
.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.why-card{position:relative;padding:36px 32px;background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r-lg);transition:transform .35s var(--ease),box-shadow .35s,border-color .35s}
.why-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-top:3px solid var(--bronze);padding-top:34px}
.why-icon{width:56px;height:56px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--brand-dark),var(--charcoal));color:var(--bronze);border-radius:var(--r);margin-bottom:20px}
.why-icon svg{width:28px;height:28px}
.why-card h3{font-size:20px;margin-bottom:10px}
.why-card p{font-size:15.5px;margin:0}

/* TICKER */
.ticker{background:var(--charcoal);padding:32px 0;overflow:hidden;position:relative}
.ticker::before,.ticker::after{content:'';position:absolute;top:0;bottom:0;width:120px;z-index:2;pointer-events:none}
.ticker::before{left:0;background:linear-gradient(90deg,var(--charcoal),transparent)}
.ticker::after{right:0;background:linear-gradient(-90deg,var(--charcoal),transparent)}
.ticker-track{display:flex;gap:56px;animation:ticker-scroll 60s linear infinite;width:max-content}
.ticker-track:hover{animation-play-state:paused}
.ticker-item{display:inline-flex;align-items:center;gap:14px;font-family:var(--font-heading);font-weight:700;font-size:22px;letter-spacing:-.5px;color:var(--cream);white-space:nowrap}
.ticker-item .dot{width:6px;height:6px;border-radius:50%;background:var(--bronze);flex-shrink:0}
@keyframes ticker-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* DIENSTEN CARDS */
.diensten-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.dienst-card{position:relative;border-radius:var(--r-lg);overflow:hidden;background:var(--bg);border:1px solid var(--border-soft);transition:transform .35s var(--ease),box-shadow .35s,border-color .35s;display:flex;flex-direction:column}
.dienst-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--bronze)}
.dienst-card-img{position:relative;aspect-ratio:4/3;overflow:hidden}
.dienst-card-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.dienst-card:hover .dienst-card-img img{transform:scale(1.08)}
.dienst-card-body{padding:24px 26px 28px;flex:1;display:flex;flex-direction:column}
.dienst-card h3{font-size:22px;margin-bottom:8px;transition:color .2s}
.dienst-card:hover h3{color:var(--bronze-dark)}
.dienst-card p{font-size:15px;margin-bottom:20px;flex:1}
.dienst-card-link{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-heading);font-weight:700;font-size:14px;color:var(--brand-dark);letter-spacing:.3px}
.dienst-card-link::after{content:'→';transition:transform .25s var(--ease)}
.dienst-card:hover .dienst-card-link::after{transform:translateX(5px)}

/* WERKWIJZE */
.werkwijze{display:grid;grid-template-columns:repeat(5,1fr);gap:24px;position:relative}
.werkwijze::before{content:'';position:absolute;top:36px;left:10%;right:10%;height:2px;background:var(--border);z-index:0}
.werk-step{position:relative;z-index:1;text-align:center;padding:0 8px}
.werk-num{width:72px;height:72px;margin:0 auto 20px;border-radius:50%;background:var(--bg);border:2px solid var(--bronze);display:flex;align-items:center;justify-content:center;font-family:var(--font-heading);font-weight:800;font-size:28px;color:var(--bronze-dark);box-shadow:0 0 0 6px var(--bg);transition:transform .3s var(--ease),background-color .3s,color .3s}
.werk-step:hover .werk-num{transform:scale(1.08);background:var(--bronze);color:var(--brand-dark)}
.werk-step h4{margin-bottom:6px;font-size:17px}
.werk-step p{font-size:14.5px;margin:0}

/* PROJECTEN */
.projecten-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.project-card{position:relative;border-radius:var(--r-lg);overflow:hidden;display:block;aspect-ratio:4/3;background:var(--brand-dark);transition:transform .35s var(--ease),box-shadow .35s}
.project-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.project-card img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.project-card:hover img{transform:scale(1.08)}
.project-card::after{content:'';position:absolute;inset:0;background:linear-gradient(to top,rgba(26,29,31,.88) 0%,rgba(26,29,31,.25) 50%,rgba(26,29,31,0) 80%)}
.project-meta{position:absolute;bottom:0;left:0;right:0;z-index:2;color:var(--cream);padding:40px 24px 22px;background:linear-gradient(to top,rgba(20,22,24,.9) 0%,rgba(20,22,24,.55) 55%,rgba(20,22,24,0) 100%)}
.project-meta h3{color:var(--cream);font-size:22px;margin-bottom:4px;text-shadow:0 1px 3px rgba(0,0,0,.6),0 2px 16px rgba(0,0,0,.55)}
.project-meta .loc{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--bronze-light);font-family:var(--font-heading);font-weight:600;letter-spacing:.3px}
.project-meta .loc svg{width:13px;height:13px}

/* TIPS */
.tips-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.tip-card{background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r-lg);overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s,border-color .35s;display:flex;flex-direction:column}
.tip-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--bronze)}
.tip-img{aspect-ratio:16/10;overflow:hidden}
.tip-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.tip-card:hover .tip-img img{transform:scale(1.08)}
.tip-body{padding:24px 26px 28px;flex:1;display:flex;flex-direction:column}
.tip-meta{display:flex;align-items:center;gap:10px;font-family:var(--font-heading);font-size:12.5px;font-weight:600;color:var(--text-muted);letter-spacing:1.2px;text-transform:uppercase;margin-bottom:12px}
.tip-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--bronze)}
.tip-card h3{font-size:21px;margin-bottom:8px;line-height:1.25}
.tip-card p{font-size:15px;margin-bottom:18px;flex:1}
.tip-card .read-more{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-heading);font-weight:700;font-size:14px;color:var(--bronze-dark)}

/* REVIEWS */
.reviews-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.review-card{background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:32px 28px 28px;position:relative;box-shadow:var(--shadow-sm)}
.review-stars{display:flex;gap:3px;margin-bottom:16px;color:#ecb43c}
.review-stars svg{width:18px;height:18px;fill:currentColor}
.review-text{font-size:16px;color:var(--text-soft);margin-bottom:24px;line-height:1.65}
.review-author{display:flex;align-items:center;gap:14px;border-top:1px solid var(--border-soft);padding-top:18px}
.review-avatar{width:48px;height:48px;border-radius:50%;object-fit:cover}
.review-author strong{display:block;font-family:var(--font-heading);font-size:15px;color:var(--brand-dark)}
.review-author span{font-size:13px;color:var(--text-muted)}

/* OFFERTE */
.offerte-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:56px;align-items:start}
.offerte-info h2{margin-bottom:20px}
.offerte-usp{list-style:none;padding:0;margin:24px 0 0;display:grid;gap:18px}
.offerte-usp li{display:flex;align-items:flex-start;gap:14px;font-size:15.5px;color:var(--text-soft)}
.offerte-usp .check{flex-shrink:0;width:24px;height:24px;border-radius:50%;background:var(--bronze);color:var(--brand-dark);display:flex;align-items:center;justify-content:center;margin-top:2px}
.offerte-usp .check svg{width:12px;height:12px}
.offerte-form{background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:36px;box-shadow:var(--shadow)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-group{margin-bottom:18px}
.form-group label{display:block;font-family:var(--font-heading);font-weight:600;font-size:13.5px;color:var(--brand-dark);margin-bottom:8px;letter-spacing:.2px}
.form-group input,.form-group textarea,.form-group select{width:100%;padding:14px 16px;border:1.5px solid var(--border);border-radius:var(--r);background:var(--bg);font-size:15px;transition:border-color .2s,box-shadow .2s}
.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:0;border-color:var(--bronze);box-shadow:0 0 0 4px color-mix(in srgb, var(--bronze) 15%, transparent)}
.form-group textarea{min-height:120px;resize:vertical}
.form-group select{cursor:pointer}
.form-group .err{display:none;color:#c0392b;font-size:13px;margin-top:6px}
.form-group.invalid input,.form-group.invalid textarea,.form-group.invalid select{border-color:#c0392b}
.form-group.invalid .err{display:block}
.radio-group{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.radio-group label{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1.5px solid var(--border);border-radius:var(--r-pill);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}
.radio-group input{display:none}
.radio-group input:checked + label,.radio-group label.checked{background:var(--brand-dark);color:var(--cream);border-color:var(--brand-dark)}
.form-group small{display:block;color:var(--text-muted);font-size:12.5px;margin-top:6px}

/* FAQ */
.faq{max-width:840px;margin:0 auto}
.faq-item{border-bottom:1px solid var(--border-soft)}
.faq-q{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:24px 4px;text-align:left;font-family:var(--font-heading);font-weight:700;font-size:17px;color:var(--brand-dark);transition:color .2s}
.faq-q:hover{color:var(--bronze-dark)}
.faq-icon{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:var(--bg-alt);display:flex;align-items:center;justify-content:center;transition:transform .35s var(--ease),background-color .25s}
.faq-icon::before,.faq-icon::after{content:'';position:absolute;background:var(--brand-dark);transition:transform .35s var(--ease)}
.faq-icon{position:relative}
.faq-icon::before{width:12px;height:1.5px}
.faq-icon::after{width:1.5px;height:12px}
.faq-item.open .faq-icon{background:var(--bronze);transform:rotate(45deg)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .4s var(--ease)}
.faq-a-inner{padding:0 4px 24px;color:var(--text-soft);font-size:15.5px;line-height:1.7}

/* FAQ-blok binnen de donkere contact-sectie (boven 'Wij informeren u graag') */
.hp-faq-block{
  background:var(--bg-dark-alt);
  border-radius:24px;
  padding:44px 38px 30px;
  margin-top:32px;
  box-shadow:0 30px 70px rgba(0,0,0,.35);
  border:1px solid rgba(255,255,255,.06);
}
.hp-faq-block .section-header{text-align:left;max-width:none;margin:0 0 18px}
.hp-faq-block .section-header h2{font-family:var(--font-display);font-weight:700;font-size:32px;letter-spacing:.02em;color:#fff;margin:0}
.hp-faq-block .faq{max-width:none;margin:0}
.hp-faq-block .faq-item{border-bottom:1px solid rgba(255,255,255,.1)}
.hp-faq-block .faq-q{color:#fff}
.hp-faq-block .faq-q:hover{color:var(--bronze-light)}
.hp-faq-block .faq-icon{background:rgba(255,255,255,.1)}
.hp-faq-block .faq-icon::before,.hp-faq-block .faq-icon::after{background:#fff}
.hp-faq-block .faq-item.open .faq-icon{background:var(--bronze)}
.hp-faq-block .faq-item.open .faq-icon::before,.hp-faq-block .faq-item.open .faq-icon::after{background:var(--brand-dark)}
.hp-faq-block .faq-a-inner{color:rgba(255,255,255,.78)}
@media (max-width:1023px){.hp-faq-block{padding:32px 22px 22px}.hp-faq-block .section-header h2{font-size:26px}}

/* CTA BAND */
.cta-band{position:relative;padding:80px 0;background:var(--bg);color:var(--brand-dark);overflow:hidden;border-top:1px solid rgba(37,42,45,.06);border-bottom:1px solid rgba(37,42,45,.06)}
.cta-band::before{content:none}
.cta-band-inner{position:relative;z-index:1;display:grid;grid-template-columns:1.4fr 1fr;align-items:center;gap:32px}
.cta-band h2{color:var(--brand-dark);margin-bottom:8px}
.cta-band p{color:var(--text);margin:0;font-size:17px}
.cta-band .btn-group{display:flex;gap:14px;flex-wrap:wrap;justify-content:flex-end}/* leeggemaakt, vorm komt uit tokens-referentie.css: /* On the now-light cta-band, the secondary "phone" button u */
.cta-band .btn-outline-light:hover{
  background:var(--brand-dark) !important;
  color:var(--cream) !important;
}

/* FOOTER */
.footer{background:#0A0B0C;color:rgba(247,245,242,.78);padding:80px 0 0}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:48px;padding-bottom:56px}
.footer-logo{display:inline-block;margin-bottom:40px}
.footer-logo img{height:50px}
.footer-naw{font-size:14.5px;line-height:1.75;color:rgba(247,245,242,.82);margin-bottom:20px}
.footer-naw strong{color:var(--cream);font-family:var(--font-heading);display:block;margin-bottom:4px}
.footer-social{display:flex;gap:10px}
.footer-social a{width:40px;height:40px;border-radius:50%;border:1px solid rgba(247,245,242,.28);display:flex;align-items:center;justify-content:center;color:rgba(247,245,242,.82);transition:background-color .2s,color .2s,border-color .2s}
.footer-social a:hover{background:var(--bronze);color:var(--brand-dark);border-color:var(--bronze)}
.footer-social svg{width:16px;height:16px}
.footer-col h4{font-family:var(--font-display);color:var(--cream);font-size:15px;font-weight:700;margin-bottom:18px;letter-spacing:.3px}
.footer-col ul{list-style:none;padding:0;margin:0}
.footer-col li{margin-bottom:10px}
.footer-col a{font-size:14.5px;color:rgba(247,245,242,.82);transition:color .2s}
.footer-col a:hover{color:var(--bronze-light)}
.footer-col .contact-item{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;font-size:14.5px}
.footer-col .contact-item svg{width:14px;height:14px;color:var(--bronze);flex-shrink:0;margin-top:5px}
.footer-bottom{border-top:1px solid rgba(247,245,242,.14);padding:24px 0;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;font-size:13.5px;color:rgba(247,245,242,.78)}
.footer-bottom a{color:rgba(247,245,242,.85)}
.footer-bottom a:hover{color:var(--bronze-light)}

/* WHATSAPP WIDGET */
.wa-widget{position:fixed;bottom:24px;right:24px;z-index:9999}
.wa-btn{display:flex;align-items:center;justify-content:center;background:#25D366;border-radius:50%;color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.18);transition:transform .28s var(--ease),box-shadow .28s}
.wa-btn svg{width:44px;height:44px;fill:#fff}
.wa-btn:hover{transform:translateY(-3px);box-shadow:0 8px 18px rgba(0,0,0,.25)}
.wa-tooltip{position:absolute;right:72px;top:50%;transform:translateY(-50%);background:var(--brand-dark);color:var(--cream);padding:10px 14px;border-radius:var(--r);font-size:13px;font-family:var(--font-heading);font-weight:600;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;box-shadow:var(--shadow)}
.wa-tooltip::after{content:'';position:absolute;left:100%;top:50%;transform:translateY(-50%);border:6px solid transparent;border-left-color:var(--brand-dark)}
.wa-widget:hover .wa-tooltip{opacity:1;transform:translateY(-50%) translateX(-4px)}

/* LANG SWITCHER */
.lang{position:fixed;bottom:24px;left:24px;z-index:9999;font-family:var(--font-heading)}
.lang-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;background:rgba(255,255,255,.95);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:var(--r-pill);box-shadow:var(--shadow);font-weight:700;font-size:14px;color:var(--brand-dark);transition:transform .2s,box-shadow .2s}
.lang-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.lang-flag{font-size:18px;line-height:1}
.lang-arrow{margin-left:2px;transition:transform .25s}
.lang.open .lang-arrow{transform:rotate(180deg)}
.lang-dropdown{position:absolute;bottom:calc(100% + 8px);left:0;background:var(--bg);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:8px;min-width:200px;display:none;border:1px solid var(--border-soft)}
.lang.open .lang-dropdown{display:block;animation:lang-fade .2s ease}
@keyframes lang-fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.lang-option{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border-radius:var(--r-sm);font-size:14px;font-weight:600;color:var(--brand-dark);text-align:left;transition:background-color .15s}
.lang-option:hover{background:var(--bg-alt)}
.lang-option.active{background:var(--bronze);color:var(--brand-dark)}
.lang-option .lang-code{margin-left:auto;font-size:11px;color:var(--text-muted);letter-spacing:1px}
.lang-option.active .lang-code{color:var(--brand-dark);opacity:.7}

/* SUBPAGE CONTENT */
.content-2col{display:grid;grid-template-columns:1.05fr 1fr;gap:64px;align-items:center}
.content-2col.reverse{grid-template-columns:1fr 1.05fr}
.content-2col.reverse .content-text{order:2}
.content-2col.reverse .content-img{order:1}
.content-img{position:relative;border-radius:var(--r-lg);overflow:hidden;aspect-ratio:4/3;box-shadow:var(--shadow-lg)}
.content-img img{width:100%;height:100%;object-fit:cover}
.content-text h2{margin-bottom:16px}
.content-text p{font-size:16.5px;line-height:1.75}
.feature-list{list-style:none;padding:0;margin:24px 0;display:grid;gap:12px}
.feature-list li{display:flex;align-items:flex-start;gap:12px;font-size:15.5px;color:var(--text-soft)}
.feature-list .check{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--bronze);color:var(--brand-dark);display:flex;align-items:center;justify-content:center;margin-top:2px}
.feature-list .check svg{width:11px;height:11px}

/* PROJECT GALLERY */
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;grid-auto-flow:dense;grid-auto-rows:300px}
.gallery-item{border-radius:var(--r);overflow:hidden;cursor:pointer;background:var(--brand-dark)}
.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.gallery-item:hover img{transform:scale(1.05)}
.gallery-item.span2{grid-column:span 2}
.gallery-item.span3{grid-column:span 3}

.project-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:48px 0}
.stat{padding:24px;background:var(--bg-alt);border-radius:var(--r-lg);text-align:center}
.stat .num{display:block;font-family:var(--font-heading);font-weight:800;font-size:32px;color:var(--bronze-dark);margin-bottom:6px}
.stat .label{font-size:14px;color:var(--text-muted);font-family:var(--font-heading);font-weight:600;text-transform:uppercase;letter-spacing:1px}

.project-meta-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;padding:32px;background:var(--bg-alt);border-radius:var(--r-lg);margin-bottom:48px}
.project-meta-grid .item{}
.project-meta-grid .item small{display:block;font-family:var(--font-heading);font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1.2px;margin-bottom:6px}
.project-meta-grid .item strong{font-family:var(--font-heading);font-size:17px;color:var(--brand-dark)}

/* CONTACT */
.contact-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:48px;align-items:start}
.contact-info-card{background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:36px;box-shadow:var(--shadow)}
.contact-info-card h3{margin-bottom:20px}
.contact-row{display:flex;align-items:flex-start;gap:14px;padding:16px 0;border-bottom:1px solid var(--border-soft)}
.contact-row:last-child{border-bottom:0}
.contact-row .icon{flex-shrink:0;width:40px;height:40px;border-radius:50%;background:var(--bg-alt);display:flex;align-items:center;justify-content:center;color:var(--bronze-dark)}
.contact-row .icon svg{width:18px;height:18px}
.contact-row strong{display:block;font-family:var(--font-heading);font-size:14px;color:var(--brand-dark);margin-bottom:2px}
.contact-row span,.contact-row a{color:var(--text-soft);font-size:15px}
.contact-row a:hover{color:var(--bronze-dark)}
.map-wrap{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-lg);height:480px;background:var(--bg-alt)}
.map-wrap iframe{width:100%;height:100%;border:0;display:block}

/* OVER ONS / TIMELINE */
.timeline{position:relative;padding-left:40px;max-width:780px;margin:48px auto}
.timeline::before{content:'';position:absolute;left:14px;top:8px;bottom:8px;width:2px;background:var(--border)}
.tl-item{position:relative;padding-bottom:36px}
.tl-item::before{content:'';position:absolute;left:-30px;top:8px;width:14px;height:14px;border-radius:50%;background:var(--bronze);box-shadow:0 0 0 4px var(--bg)}
.tl-item .year{font-family:var(--font-heading);font-weight:700;font-size:15px;color:var(--bronze-dark);margin-bottom:6px;letter-spacing:.5px}
.tl-item h4{margin-bottom:6px;font-size:18px}
.tl-item p{margin:0;font-size:15px}

.values-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.value-card{background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:32px 28px;text-align:left}
.value-card .icon{width:48px;height:48px;border-radius:var(--r);background:var(--bg-alt);color:var(--bronze-dark);display:flex;align-items:center;justify-content:center;margin-bottom:18px}
.value-card .icon svg{width:24px;height:24px}
.value-card h4{margin-bottom:8px;font-size:18px}
.value-card p{margin:0;font-size:15px}

/* TIPS DETAIL */
.article-content{max-width:780px;margin:0 auto}
.article-content h2{margin-top:48px;margin-bottom:16px;font-size:28px}
.article-content h3{margin-top:32px;margin-bottom:12px;font-size:22px}
.article-content p{font-size:17px;line-height:1.8;color:var(--text-soft)}
.article-content blockquote{border-left:3px solid var(--bronze);padding:16px 24px;margin:32px 0;background:var(--bg-alt);border-radius:0 var(--r) var(--r) 0;font-style:italic;color:var(--text);font-size:18px}
.article-content img{border-radius:var(--r-lg);margin:32px 0;width:100%;height:auto}
.article-meta{display:flex;align-items:center;gap:20px;margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid var(--border-soft);font-size:14px;color:var(--text-muted)}
.article-meta .author{display:flex;align-items:center;gap:10px;font-family:var(--font-heading);font-weight:600;color:var(--brand-dark)}
.article-meta .author img{width:32px;height:32px;border-radius:50%}

/* OFFERTE PAGE */
.offerte-page-form{background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r-xl);padding:48px;box-shadow:var(--shadow-lg);max-width:880px;margin:0 auto}
.offerte-page-form h2{margin-bottom:8px}
.offerte-page-form .lead{margin-bottom:32px;color:var(--text-soft);font-size:16.5px}
.fieldset-title{font-family:var(--font-heading);font-weight:700;font-size:14px;color:var(--bronze-dark);text-transform:uppercase;letter-spacing:1.5px;margin:32px 0 16px;padding-bottom:8px;border-bottom:1px solid var(--border-soft)}
.fieldset-title:first-child{margin-top:0}
.upload-area{border:2px dashed var(--border);border-radius:var(--r-lg);padding:32px;text-align:center;color:var(--text-muted);transition:border-color .2s,background-color .2s;cursor:pointer}
.upload-area:hover{border-color:var(--bronze);background:var(--bg-alt)}
.upload-area svg{width:36px;height:36px;color:var(--bronze-dark);margin-bottom:10px}
.upload-area strong{display:block;color:var(--brand-dark);font-family:var(--font-heading);margin-bottom:4px}

/* ANIMATIONS - Intersection Observer */
/* CLEAN ENTRANCE: slide + fade. opacity 0 default, 1 on in-view. */
.reveal,.reveal-x,.reveal-x-r,.reveal-up{opacity:0;transition:opacity var(--duration) var(--ease),transform var(--duration) var(--ease)}
.reveal{transform:translateY(24px)}
.reveal-x{transform:translateX(-40px)}
.reveal-x-r{transform:translateX(40px)}
.reveal-up{transform:translateY(24px)}
.reveal.in-view,.reveal-x.in-view,.reveal-x-r.in-view,.reveal-up.in-view{opacity:1;transform:none}
/* Reduced-motion + no-JS fallback: skip the animation, just show */
@media (prefers-reduced-motion: reduce){.reveal,.reveal-x,.reveal-x-r,.reveal-up{opacity:1;transform:none;transition:none}}
.no-js .reveal,.no-js .reveal-x,.no-js .reveal-x-r,.no-js .reveal-up{opacity:1;transform:none}
.stagger > *{opacity:0;transform:translateX(-40px);transition-property:opacity,transform !important;transition-duration:var(--duration) !important;transition-timing-function:var(--ease) !important}
.stagger.in-view > *{opacity:1;transform:translateX(0)}
.stagger.in-view > *:nth-child(n){transition-property:opacity,transform !important;transition-duration:var(--duration) !important;transition-timing-function:var(--ease) !important}
.stagger.in-view > *:nth-child(1){transition-delay:0ms}
.stagger.in-view > *:nth-child(2){transition-delay:calc(var(--stagger) * 1)}
.stagger.in-view > *:nth-child(3){transition-delay:calc(var(--stagger) * 2)}
.stagger.in-view > *:nth-child(4){transition-delay:calc(var(--stagger) * 3)}
.stagger.in-view > *:nth-child(5){transition-delay:calc(var(--stagger) * 4)}
.stagger.in-view > *:nth-child(6){transition-delay:calc(var(--stagger) * 5)}

.section-header{text-align:center;max-width:720px;margin:0 auto 56px}
.section-header.left{text-align:left;margin:0 0 56px}
.section-header h2{margin-bottom:14px}
.section-header p{font-size:17px;color:var(--text-soft);margin:0}

/* RESPONSIVE */
@media(max-width:1024px){
  :root{--section-y:72px}
  .nav-links{gap:24px}
  .nav-links a{font-size:14px}
  .intro-grid{grid-template-columns:1fr;gap:40px}
  .why-grid,.diensten-grid,.projecten-grid,.tips-grid,.reviews-grid,.values-grid{grid-template-columns:repeat(2,1fr)}
  .werkwijze{grid-template-columns:repeat(3,1fr)}
  .werkwijze::before{display:none}
  .offerte-grid,.contact-grid{grid-template-columns:1fr;gap:40px}
  .footer-grid{grid-template-columns:1.4fr 1fr 1fr;gap:32px}
  .content-2col,.content-2col.reverse{grid-template-columns:1fr;gap:32px}
  .content-2col.reverse .content-text{order:1}
  .content-2col.reverse .content-img{order:2}
  .cta-band-inner{grid-template-columns:1fr;text-align:center}
  .cta-band .btn-group{justify-content:center}
  .project-meta-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:768px){
  :root{--section-y:56px}
  body{font-size:16px}
  .nav-logo img{height:32px}
  .nav-links,.nav-phone{display:none}
  .nav-cta .btn:not(.nav-burger){display:none}
  .nav-burger{display:flex}
  .nav{padding:14px 16px}
  .nav.scrolled{padding:10px 16px}
  .container{padding:0 16px}
  section{padding-top:56px;padding-bottom:56px}
  .hero{min-height:560px}
  .hero-ctas{flex-direction:column;align-items:stretch;width:100%;max-width:320px}
  .hero-ctas .btn{width:100%}
  .subhero{height:auto;min-height:280px;padding:48px 0;margin-top:64px}
  .why-grid,.diensten-grid,.tips-grid,.reviews-grid,.values-grid,.gallery-grid{grid-template-columns:1fr;grid-auto-rows:240px}.projecten-grid{grid-template-columns:1fr;grid-auto-rows:auto}.gallery-item.span2,.gallery-item.span3{grid-column:auto}
  .werkwijze{grid-template-columns:1fr;gap:32px}
  .werk-step{display:flex;align-items:flex-start;gap:18px;text-align:left}
  .werk-num{margin:0;flex-shrink:0;width:56px;height:56px;font-size:22px}
  .form-row{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr;gap:36px;padding-bottom:36px}
  .footer-bottom{flex-direction:column;text-align:center}
  .offerte-page-form{padding:24px}
  .project-stats{grid-template-columns:1fr}
  .project-meta-grid{grid-template-columns:1fr}
  .wa-widget{bottom:16px;right:16px}
  .wa-btn,.tel-btn{width:56px;height:56px}.tel-btn{bottom:86px}
  .wa-tooltip{display:none}
  .lang{bottom:16px;left:16px}
  .lang-btn{padding:8px 12px;font-size:13px}
}

/* ============================================================
   PROJECT CARDS - mobile cleanup: smaller text, single column
   ============================================================ */
@media (max-width:1023px){
  .project-meta h3{font-size:17px;line-height:1.25;margin-bottom:4px}
  .project-meta .loc{font-size:12px}
  .project-meta{padding:34px 18px 16px}
}
@media(max-width:600px){
  /* Override inline grid-template-columns on service pages */
  .projecten-grid[style*="grid-template-columns"]{
    grid-template-columns:1fr !important;
    gap:14px !important;
  }
  .project-card{aspect-ratio:5/3}
  .project-meta h3{font-size:18px;line-height:1.25}
  .project-meta .loc{font-size:12.5px}
  .project-meta{padding:32px 16px 15px}
}
@media(max-width:400px){
  .project-meta h3{font-size:16px;line-height:1.2}
  .project-meta .loc{font-size:12px}
  .project-meta{padding:30px 14px 14px}
  .dienst-card h3{font-size:18px}
  .dienst-card p{font-size:14px}
  .dienst-card-body{padding:20px 20px 22px}
  .voordeel-card{padding:24px 22px}
  .voordeel-card h3{font-size:16.5px}
  .voordeel-card p{font-size:13.5px}
}

/* AR / RTL */
[dir="rtl"]{}
[dir="rtl"] .hero-eyebrow,[dir="rtl"] .hero h1,[dir="rtl"] .hero-subline,[dir="rtl"] .hero-ctas{transform:translateX(80px)}
[dir="rtl"] .reveal-x{transform:translateX(40px)}
[dir="rtl"] .reveal-x-r{transform:translateX(-40px)}
[dir="rtl"] .lang{left:auto;right:24px}
[dir="rtl"] .wa-widget{right:auto;left:24px}
[dir="rtl"] .wa-tooltip{right:auto;left:72px}
[dir="rtl"] .wa-tooltip::after{left:auto;right:100%;border-left-color:transparent;border-right-color:var(--brand-dark)}

/* PRINT/MISC */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* CALCULATOR */
.calc-section{padding-top:var(--section-y);padding-bottom:var(--section-y)}
.calc-section .section-header h2{color:var(--cream)}
.calculator{max-width:960px;margin:0 auto;background:var(--charcoal-soft);border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-xl);border:1px solid color-mix(in srgb, var(--bronze) 18%, transparent)}
.calc-tabs{display:flex;background:var(--brand-darker);border-bottom:1px solid color-mix(in srgb, var(--bronze) 15%, transparent)}
.calc-tab{flex:1;padding:20px 12px;font-family:var(--font-heading);font-weight:700;font-size:14px;color:rgba(247,245,242,.55);text-transform:uppercase;letter-spacing:1.2px;cursor:pointer;transition:background-color .25s,color .25s,border-color .25s,transform .25s;border-bottom:3px solid transparent;background:transparent}
.calc-tab:hover{color:var(--cream);background:rgba(255,255,255,.04);transform:translateY(-2px)}
.calc-tab.active{color:var(--bronze-light);background:var(--charcoal-soft);border-bottom-color:var(--bronze)}
.calc-body{padding:40px}
.calc-panel{display:none}
.calc-panel.active{display:block;animation:calcFade .3s ease}
@keyframes calcFade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.calc-grid{display:grid;gap:28px;margin-bottom:32px}
.calc-field{}
.calc-field>label{display:block;font-family:var(--font-heading);font-weight:700;font-size:13px;color:var(--bronze-light);text-transform:uppercase;letter-spacing:1.4px;margin-bottom:14px}
.calc-field>label small{font-weight:500;color:rgba(247,245,242,.45);text-transform:none;letter-spacing:.3px;margin-left:4px;font-size:12px}
.calc-slider-wrap{display:flex;align-items:center;gap:24px}
.calc-range{flex:1;-webkit-appearance:none;appearance:none;height:5px;background:rgba(247,245,242,.18);border-radius:3px;outline:none;cursor:pointer}
.calc-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:26px;height:26px;background:var(--bronze);border-radius:50%;cursor:pointer;box-shadow:0 2px 12px rgba(0,0,0,.5),0 0 0 0 color-mix(in srgb, var(--bronze) 40%, transparent);transition:transform .2s,box-shadow .2s}
.calc-range::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:0 2px 12px rgba(0,0,0,.5),0 0 0 8px color-mix(in srgb, var(--bronze) 20%, transparent)}
.calc-range::-moz-range-thumb{width:26px;height:26px;background:var(--bronze);border-radius:50%;border:0;cursor:pointer;box-shadow:0 2px 12px rgba(0,0,0,.5)}
.calc-value{font-family:var(--font-heading);font-weight:800;font-size:30px;color:var(--cream);min-width:64px;text-align:right;letter-spacing:-.02em}
.calc-radio-group{display:flex;gap:8px;flex-wrap:wrap}
.calc-radio-group input[type=radio]{display:none}
.calc-radio-group label{display:inline-flex;align-items:center;padding:12px 20px;border:1.5px solid rgba(247,245,242,.18);border-radius:var(--r-pill);font-family:var(--font-body);font-size:14px;font-weight:600;color:rgba(247,245,242,.75);text-transform:none;letter-spacing:0;cursor:pointer;transition:all .2s;margin:0}
.calc-radio-group label:hover{border-color:var(--bronze);color:var(--cream)}
.calc-radio-group input[type=radio]:checked+label{background:var(--bronze);color:var(--brand-dark);border-color:var(--bronze)}
.calc-checks{display:flex;gap:10px;flex-wrap:wrap}
.calc-check{display:inline-flex;align-items:center;gap:10px;padding:12px 18px;border:1.5px solid rgba(247,245,242,.18);border-radius:var(--r-pill);cursor:pointer;transition:all .2s;font-family:var(--font-body);font-size:14px;font-weight:500;color:rgba(247,245,242,.75);margin:0;text-transform:none;letter-spacing:0}
.calc-check input{display:none}
.calc-check .check-mark{width:18px;height:18px;border:1.5px solid rgba(247,245,242,.4);border-radius:4px;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative}
.calc-check .check-mark::after{content:'';position:absolute;width:10px;height:6px;border-left:2px solid var(--brand-dark);border-bottom:2px solid var(--brand-dark);transform:rotate(-45deg) translate(1px,-1px) scale(0);transition:transform .2s;margin-bottom:2px}
.calc-check:hover{border-color:var(--bronze);color:var(--cream)}
.calc-check:has(input:checked){border-color:var(--bronze);color:var(--cream);background:color-mix(in srgb, var(--bronze) 8%, transparent)}
.calc-check:has(input:checked) .check-mark{background:var(--bronze);border-color:var(--bronze)}
.calc-check:has(input:checked) .check-mark::after{transform:rotate(-45deg) translate(1px,-1px) scale(1)}
.calc-result{padding:36px 32px;background:linear-gradient(135deg,color-mix(in srgb, var(--bronze) 18%, transparent) 0%,color-mix(in srgb, var(--bronze) 5%, transparent) 100%);border-radius:var(--r-lg);border:1px solid color-mix(in srgb, var(--bronze) 35%, transparent);text-align:center}
.calc-result-label{font-family:var(--font-heading);font-weight:700;font-size:12px;color:var(--bronze-light);text-transform:uppercase;letter-spacing:2px;margin-bottom:12px}
.calc-result-price{font-family:var(--font-heading);font-weight:800;color:var(--cream);margin-bottom:18px;display:flex;align-items:baseline;justify-content:center;gap:14px;letter-spacing:-.02em;flex-wrap:wrap}
.calc-low,.calc-high{font-size:clamp(34px,5vw,52px);transition:opacity .25s}
.calc-sep{color:var(--bronze);font-size:32px;font-weight:300}
.calc-result.updating .calc-low,.calc-result.updating .calc-high{opacity:.4}
.calc-disclaimer{color:rgba(247,245,242,.65);font-size:13.5px;max-width:520px;margin:0 auto 22px;line-height:1.65}
@media(max-width:768px){
  .calc-body{padding:24px}
  .calc-tab{padding:14px 6px;font-size:11.5px;letter-spacing:.5px}
  .calc-radio-group,.calc-checks{flex-direction:column}
  .calc-radio-group label,.calc-check{width:100%;justify-content:flex-start}
  .calc-value{font-size:24px;min-width:48px}
}

/* SWOOSH REVEAL - for intro section image */
.swoosh-from-left{position:relative;border-radius:var(--r-lg);overflow:hidden;aspect-ratio:4/3;box-shadow:var(--shadow-lg);clip-path:inset(0 100% 0 0);transform:scale(1.04);opacity:.7;will-change:clip-path,transform,opacity}
.swoosh-from-left img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 12s linear}
.swoosh-from-left.in-view{clip-path:inset(0 0 0 0);transform:scale(1);opacity:1;transition:clip-path 1.0s var(--ease),transform 1.1s var(--ease),opacity .6s ease}
.swoosh-from-left.in-view img{transform:scale(1.06)}
/* Shine sweep that follows the reveal edge */
.swoosh-from-left::after{content:'';position:absolute;top:0;left:-35%;width:35%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.18) 50%,transparent 100%);transform:skewX(-15deg);pointer-events:none;z-index:2;opacity:0}
.swoosh-from-left.in-view::after{animation:swooshShine 1.5s var(--ease) .35s 1 forwards}
@keyframes swooshShine{
  0%{left:-35%;opacity:0}
  15%{opacity:1}
  100%{left:135%;opacity:0}
}
/* Slight delay on text so photo starts first */
.intro-text{transition-delay:.25s!important}

/* Safety fallback: if JS fails or is disabled, show the photo */
@media (prefers-reduced-motion: reduce){
  .swoosh-from-left{clip-path:inset(0 0 0 0)!important;transform:none!important;opacity:1!important}
  .swoosh-from-left::after{display:none!important}
}
.no-js .swoosh-from-left{clip-path:inset(0 0 0 0);transform:none;opacity:1}

/* ============================================================
   HOMEPAGE FUNNEL v2 - 8-section structure
   ============================================================ */

/* SECTION 1: HERO SLIDER (full-width image cycler) */
.hp-hero-slider{position:relative;width:100%;height:100vh;min-height:620px;max-height:880px;overflow:hidden;background:var(--brand-dark);margin-top:-80px}

.hp-hero-slides{position:absolute;inset:0}
.hp-hs-slide{position:absolute;inset:0;opacity:0;transition:opacity .9s var(--ease);pointer-events:none}
.hp-hs-slide.is-active{opacity:1;pointer-events:auto}

/* The image - covers entire slide, animates zoom when active */
.hp-hs-img{position:absolute;inset:0;background-size:cover;background-position:center;transform:scale(1.0);transition:transform 5.5s ease-out}
.hp-hs-slide.is-active .hp-hs-img{animation:hsZoom 7.5s cubic-bezier(.4,0,.2,1) forwards}

/* Overlay for text legibility */
.hp-hs-overlay{position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgba(0,0,0,.5) 100%)}

/* Slide content (text + button) */
.hp-hs-content{position:absolute;left:0;right:0;bottom:128px;padding:0 24px;color:var(--cream);z-index:2;max-width:var(--container);margin:0 auto;left:50%;transform:translateX(-50%);width:100%}
.hp-hs-eyebrow{display:inline-block;font-family:var(--font-heading);font-weight:700;font-size:13px;letter-spacing:3px;text-transform:uppercase;color:var(--bronze-light);margin-bottom:18px;padding:8px 16px;background:color-mix(in srgb, var(--bronze) 18%, transparent);border:1px solid color-mix(in srgb, var(--bronze) 40%, transparent);border-radius:999px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.hp-hs-title{font-family:var(--font-kop);   /* [ref-regel: elke H1 de brede vette sans] */font-weight:700;font-size:clamp(48px,7vw,104px);line-height:1;letter-spacing:.02em;margin:0 0 22px;color:var(--cream);text-shadow:0 2px 24px rgba(0,0,0,.35);max-width:920px}
.hp-hs-title em{color:var(--bronze-light);font-style:normal;font-weight:700}
.hp-hs-desc{font-size:18px;line-height:1.55;color:rgba(247,245,242,.92);margin:0 0 32px;max-width:560px;text-shadow:0 1px 8px rgba(0,0,0,.35)}
.hp-hs-btn{display:inline-flex;align-items:center;gap:10px;padding:18px 32px;background:var(--bronze);color:var(--brand-dark);border-radius:999px;font-family:var(--font-heading);font-weight:700;font-size:15.5px;text-decoration:none;transition:transform .25s var(--ease),background-color .25s,box-shadow .25s;box-shadow:0 12px 32px var(--cta-shadow, rgba(0,0,0,.3))}
.hp-hs-btn:hover{transform:translateY(-2px);background:var(--cream);color:var(--brand-dark);box-shadow:0 16px 40px var(--cta-shadow, rgba(0,0,0,.35))}
.hp-hs-btn svg{width:18px;height:18px;transition:transform .25s var(--ease)}
.hp-hs-btn:hover svg{transform:translateX(4px)}

/* Slide content fade-in animation when slide becomes active */
.hp-hs-eyebrow,.hp-hs-title,.hp-hs-desc{opacity:0;transform:translateY(20px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.hp-hs-slide.is-active .hp-hs-eyebrow{opacity:1;transform:translateY(0);transition-delay:.3s}
.hp-hs-slide.is-active .hp-hs-title{opacity:1;transform:translateY(0);transition-delay:.45s}
.hp-hs-slide.is-active .hp-hs-desc{opacity:1;transform:translateY(0);transition-delay:.6s}
.hp-hs-slide.is-active .hp-hs-btn{opacity:1;transform:translateY(0);transition-delay:.75s}

/* Dot navigation (bottom center) */
.hp-hs-dots{position:absolute;bottom:50px;left:50%;transform:translateX(-50%);display:flex;gap:14px;z-index:5}
.hp-hs-dot{display:flex;flex-direction:column;align-items:center;gap:8px;background:transparent;border:0;cursor:pointer;padding:6px 4px;font-family:var(--font-heading);transition:opacity .25s}
.hp-hs-dot-label{font-size:11.5px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:rgba(247,245,242,.65);transition:color .25s}
.hp-hs-dot.is-active .hp-hs-dot-label{color:var(--cream)}
.hp-hs-dot-bar{display:block;width:60px;height:2px;background:rgba(247,245,242,.25);overflow:hidden;border-radius:2px}
.hp-hs-dot-fill{display:block;width:0;height:100%;background:var(--bronze);transition:width .25s linear}
.hp-hs-dot.is-active .hp-hs-dot-fill{width:100%;transition:width 6.5s linear}
.hp-hs-dot:hover .hp-hs-dot-label{color:var(--cream)}

/* Bottom info strip (WA + phone) */

/* Mobile */
@media (max-width:1023px){
  .hp-hero-slider{height:100vh;min-height:560px;max-height:none}
  .hp-hs-content{bottom:170px;padding:0 22px}
  .hp-hs-title{font-size:clamp(40px,9vw,64px)}
  .hp-hs-desc{font-size:16px;margin-bottom:24px}
  .hp-hs-btn{padding:16px 26px;font-size:14.5px}
  .hp-hs-dots{bottom:90px;gap:10px}
  .hp-hs-dot-bar{width:36px}
  .hp-hs-dot-label{font-size:10.5px;letter-spacing:1px}
  
  
  
}
@media(max-width:600px){
  .hp-hero-slider{height:90vh;min-height:520px}
  .hp-hs-content{bottom:160px}
  .hp-hs-title{font-size:clamp(36px,10vw,52px);line-height:1.02}
  .hp-hs-eyebrow{font-size:11.5px;letter-spacing:2px;padding:6px 12px}
  .hp-hs-desc{font-size:15px}
  .hp-hs-btn{padding:14px 22px}
}

/* INTRO section - short text after hero per brief */
.hp-intro{padding:80px 0;background:var(--bg)}
.hp-intro-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:64px;align-items:center;max-width:var(--container);margin:0 auto;padding:0 24px}
.hp-intro-text h2{font-family:var(--font-display);font-weight:700;font-size:clamp(32px,3.6vw,48px);line-height:1.05;letter-spacing:.02em;margin:0 0 20px;color:var(--brand-dark)}
.hp-intro-text p{font-size:16.5px;line-height:1.7;color:var(--text-soft);margin:0 0 1em}
.hp-intro-text strong{color:var(--brand-dark);font-weight:700}
.hp-intro-points{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.hp-intro-point{padding:22px 22px;background:var(--cream);border-radius:14px;display:flex;flex-direction:column;gap:10px;border:1px solid rgba(37,42,45,.06)}
.hp-intro-point svg{width:24px;height:24px;color:var(--bronze)}
.hp-intro-point div{display:flex;flex-direction:column;gap:2px}
.hp-intro-point strong{font-family:var(--font-heading);font-weight:700;font-size:15px;color:var(--brand-dark)}
.hp-intro-point div::after{content:attr(data-sub)}
@media (max-width:1023px){
  .hp-intro-grid{grid-template-columns:1fr;gap:36px}
  .hp-intro{padding:64px 0}
}
@media(max-width:600px){
  .hp-intro-points{grid-template-columns:1fr}
}

/* SECTION 2: SERVICES GRID */
.hp-services{padding:96px 0 64px;background:var(--cream)}
.hp-services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.hp-svc{display:block;background:var(--bg);border-radius:24px;overflow:hidden;text-decoration:none;color:inherit;transition:transform .35s var(--ease),box-shadow .35s;border:1px solid rgba(37,42,45,.06)}
.hp-svc:hover{transform:translateY(-6px);box-shadow:0 20px 40px rgba(37,42,45,.12)}
.hp-svc-img{aspect-ratio:1.4/1;overflow:hidden;background:var(--bg-alt)}
.hp-svc-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.hp-svc:hover .hp-svc-img img{transform:scale(1.06)}
.hp-svc h3{padding:22px 26px 26px;margin:0;display:flex;justify-content:space-between;align-items:center;font-family:var(--font-display);font-weight:700;font-size:20px;letter-spacing:.02em}
.hp-svc h3 span{color:var(--bronze);font-weight:600;transition:transform .25s var(--ease)}
.hp-svc:hover h3 span{transform:translateX(6px)}
.hp-services-cta{text-align:center;margin-top:48px}
.btn-pill-outline{display:inline-flex;align-items:center;justify-content:center;padding:16px 36px;border:1.5px solid var(--bronze);border-radius:999px;font-family:var(--font-heading);font-weight:700;font-size:15px;color:var(--bronze-dark);background:transparent;transition:all .25s;text-decoration:none}
.btn-pill-outline:hover{background:var(--bronze);color:var(--brand-dark);transform:translateY(-2px)}
@media(max-width:1024px){.hp-services-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.hp-services{padding:64px 0 48px}.hp-services-grid{grid-template-columns:1fr;gap:16px}}

/* SECTION 3: GOALS */
.hp-goals{padding:96px 0;background:var(--cream)}
.hp-goals-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.hp-goal{display:block;text-decoration:none;color:inherit}
.hp-goal-img{position:relative;aspect-ratio:5/4;border-radius:24px;overflow:hidden;background:var(--bronze);margin-bottom:18px;box-shadow:0 10px 30px rgba(37,42,45,.1)}
.hp-goal-img::before{content:'';position:absolute;inset:0;background:var(--bronze);mix-blend-mode:multiply;opacity:.4;z-index:1;transition:opacity .35s}
.hp-goal:hover .hp-goal-img::before{opacity:.2}
.hp-goal-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.hp-goal:hover .hp-goal-img img{transform:scale(1.06)}
.hp-goal-text{padding:0 4px}
.hp-goal-text h3{font-family:var(--font-display);font-weight:700;font-size:21px;margin:0 0 4px;display:flex;align-items:center;gap:8px;color:var(--brand-dark)}
.hp-goal-text h3 span{color:var(--bronze);transition:transform .25s var(--ease)}
.hp-goal:hover .hp-goal-text h3 span{transform:translateX(4px)}
.hp-goal-text p{font-size:14.5px;color:var(--text-muted);margin:0}
@media (max-width:1023px){.hp-goals-grid{grid-template-columns:1fr;gap:24px}.hp-goals{padding:64px 0}}

/* SECTION 4: KLANTEN - collage + google badge */
.hp-fans{padding:96px 0;background:var(--cream)}
.hp-fans-grid{display:grid;grid-template-columns:auto 1fr auto;gap:48px;align-items:center;max-width:var(--container);margin:0 auto;padding:0 24px}
.hp-fans-text h2{font-family:var(--font-display);font-weight:700;font-size:clamp(56px,8vw,112px);line-height:.92;letter-spacing:.02em;margin:0 0 16px;color:var(--brand-dark)}
.hp-fans-text p{max-width:280px;font-size:15px;color:var(--text-soft);margin:0}
.hp-fans-mosaic{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,140px);gap:10px}
.hp-fans-mosaic > div{border-radius:14px;overflow:hidden;background:var(--brand-dark)}
.hp-fans-mosaic img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.hp-fans-mosaic > div:hover img{transform:scale(1.08)}
.fm-1{grid-row:span 2}
.hp-fans-stats{display:flex;flex-direction:column;gap:14px;align-items:stretch}
.hp-google-badge{background:var(--bg);border:1px solid rgba(37,42,45,.08);border-radius:18px;padding:22px 28px;text-align:center;box-shadow:0 4px 14px rgba(37,42,45,.04);min-width:170px}
.hpgb-stars{display:flex;justify-content:center;gap:2px;margin-bottom:8px}
.hpgb-stars svg{width:18px;height:18px;fill:#FBBC05}
.hpgb-num{font-family:var(--font-heading);font-weight:800;font-size:36px;line-height:1;color:var(--brand-dark);letter-spacing:-.02em}
.hpgb-label{font-family:var(--font-heading);font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-top:4px}
.hp-rating-badge{background:#34A853;color:#fff;border-radius:18px;padding:24px 28px;text-align:center;box-shadow:0 6px 18px rgba(52,168,83,.3);min-width:170px}
.hprb-num{font-family:var(--font-heading);font-weight:800;font-size:48px;line-height:1;letter-spacing:-.02em}
.hprb-num span{font-size:24px;opacity:.85;font-weight:600}
@media(max-width:1100px){
  .hp-fans-grid{grid-template-columns:1fr;gap:32px;text-align:center;justify-items:center}
  .hp-fans-text p{margin-left:auto;margin-right:auto}
  .hp-fans-stats{flex-direction:row;gap:14px;flex-wrap:wrap;justify-content:center}
  .hp-fans-mosaic{grid-template-rows:repeat(2,120px);width:100%;max-width:520px}
}
@media(max-width:600px){.hp-fans{padding:64px 0}.hp-fans-mosaic{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,110px)}.fm-1{grid-row:span 1}}

.hp-reviews-track::-webkit-scrollbar{display:none}

.rev-google-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;margin-left:8px;opacity:.95;background:rgba(255,255,255,.15);padding:4px 8px;border-radius:999px}

@media (max-width:1023px){
  
  
  
  
}

/* SECTION 6: WHY-US INTRO with watermark */
.hp-why-intro{padding:120px 0 60px;background:var(--cream);position:relative;overflow:hidden}
.hp-why-watermark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-family:var(--font-heading);font-weight:800;font-size:clamp(180px,28vw,420px);color:var(--bronze);opacity:.10;white-space:nowrap;letter-spacing:-.05em;line-height:1;pointer-events:none;user-select:none;z-index:1}
.hp-why-intro .container{position:relative;z-index:2}
.hp-why-intro-grid{display:grid;grid-template-columns:1fr auto;gap:60px;align-items:center}
.hp-why-intro-text h2{font-family:var(--font-display);font-weight:700;font-size:clamp(56px,7vw,108px);line-height:.95;letter-spacing:.02em;margin:0;color:var(--brand-dark)}
.hp-why-intro-img{width:340px;aspect-ratio:1/1;border-radius:32px;overflow:hidden;background:var(--bronze);box-shadow:0 30px 60px rgba(37,42,45,.2)}
.hp-why-intro-img img{width:100%;height:100%;object-fit:cover;filter:saturate(1.1)}
@media (max-width:1023px){
  .hp-why-intro{padding:80px 0 40px}
  .hp-why-intro-grid{grid-template-columns:1fr;text-align:center;gap:32px;justify-items:center}
  .hp-why-intro-img{width:240px}
}

/* SECTION 7: WHY-US REASONS - scroll-driven horizontal */
.hp-why-reasons{background:var(--cream);position:relative}

.hp-why-card-img img{width:100%;height:100%;object-fit:cover;display:block}
.hpwc-num{font-family:var(--font-heading);font-weight:800;font-size:14px;color:var(--bronze-dark);letter-spacing:3px;margin-bottom:20px}
.hp-why-card h3{font-family:var(--font-display);font-weight:700;font-size:34px;line-height:1.05;letter-spacing:.02em;margin:0 0 18px;color:var(--brand-dark)}
.hp-why-card p{font-size:16px;line-height:1.65;color:var(--text-soft);margin:0}

/* Mobile fallback - return to native horizontal scroll, no pinning */
@media (max-width:1023px){
  
  
  
  
  
  
  
  .hp-why-card h3{font-size:26px}
}

/* SECTION 8: EXTRAS */
.hp-extras{padding:96px 0;background:var(--bg-alt)}
.hp-extras-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.hp-ex{display:block;text-decoration:none;color:inherit;background:var(--bg);border-radius:28px;overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s;border:1px solid rgba(37,42,45,.06)}
.hp-ex:hover{transform:translateY(-6px);box-shadow:0 24px 48px rgba(37,42,45,.14)}
.hp-ex-img{position:relative;aspect-ratio:16/9;overflow:hidden;background:var(--bronze)}
.hp-ex-img::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(37,42,45,0) 50%,rgba(37,42,45,.55) 100%)}
.hp-ex-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.hp-ex:hover .hp-ex-img img{transform:scale(1.05)}
.hp-ex-text{padding:30px 32px 36px}
.hp-ex-text h3{font-family:var(--font-display);font-weight:700;font-size:26px;letter-spacing:.02em;margin:0 0 12px;display:flex;align-items:center;gap:10px;color:var(--brand-dark)}
.hp-ex-text h3 span{color:var(--bronze);transition:transform .25s var(--ease)}
.hp-ex:hover .hp-ex-text h3 span{transform:translateX(6px)}
.hp-ex-text p{font-size:15.5px;color:var(--text-soft);margin:0;line-height:1.65}
@media (max-width:1023px){
  .hp-extras{padding:64px 0}
  .hp-extras-grid{grid-template-columns:1fr;gap:18px}
}

/* Hide old sections that may still be in stylesheet but no longer used in HTML - no-op */

/* STICKY MOBILE CTA BAR - appears on scroll, hidden on desktop */
.sticky-cta{position:fixed;left:0;right:0;bottom:0;background:var(--brand-dark);padding:12px 16px calc(12px + env(safe-area-inset-bottom));display:none;gap:10px;z-index:90;box-shadow:0 -8px 24px rgba(0,0,0,.22);transform:translateY(100%);transition:transform .35s var(--ease)}
.sticky-cta.visible{transform:translateY(0)}
.sticky-cta a{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 14px;border-radius:999px;font-family:var(--font-heading);font-weight:700;font-size:14px;text-decoration:none;transition:transform .15s,filter .15s}
.sticky-cta a:active{transform:scale(.97)}
.sticky-cta-call{background:transparent;color:var(--cream);border:1.5px solid rgba(247,245,242,.35)}
.sticky-cta-wa{background:#25D366;color:#fff}
.sticky-cta-quote{background:var(--bronze);color:var(--brand-dark)}
.sticky-cta svg{width:16px;height:16px}
@media(max-width:768px){.sticky-cta{display:flex}body{padding-bottom:80px}}

/* SEO BLOCK - long-form content on subpages */
.seo-block{padding:80px 0 96px;background:var(--bg-alt);border-top:1px solid rgba(37,42,45,.06)}
.seo-block .container{max-width:880px}
.seo-content h2{font-size:clamp(28px,3vw,40px);margin:0 0 18px;letter-spacing:.02em}
.seo-longtext{font-size:16.5px;line-height:1.85;color:var(--text-soft);margin:0 0 56px}
.seo-werkgebied{padding:28px 32px;background:var(--bg);border-radius:18px;border:1px solid color-mix(in srgb, var(--bronze) 20%, transparent);margin-bottom:56px}
.seo-werkgebied h3{font-size:18px;margin:0 0 10px;color:var(--bronze-dark)}
.seo-werkgebied p{margin:0;font-size:15.5px;line-height:1.7;color:var(--text-soft)}
.seo-werkgebied a{color:var(--brand-dark);font-weight:600;text-decoration:none;border-bottom:1.5px solid var(--bronze)}
.seo-werkgebied a:hover{color:var(--bronze-dark)}
.seo-faq{margin-bottom:56px}
.seo-faq h3{font-size:24px;margin:0 0 24px;letter-spacing:.02em}
.seo-faq-item{border-bottom:1px solid rgba(37,42,45,.1);padding:0}
.seo-faq-item summary{padding:20px 0;font-family:var(--font-heading);font-weight:700;font-size:17px;color:var(--brand-dark);cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;transition:color .2s}
.seo-faq-item summary::-webkit-details-marker{display:none}
.seo-faq-item summary::after{content:'+';font-size:24px;color:var(--bronze);transition:transform .25s,color .25s;font-weight:300;line-height:1}
.seo-faq-item[open] summary::after{transform:rotate(45deg)}
.seo-faq-item summary:hover{color:var(--bronze-dark)}
.seo-faq-answer{padding:0 0 22px;font-size:15.5px;line-height:1.75;color:var(--text-soft)}
.seo-faq-answer p{margin:0}
.seo-related h3{font-size:20px;margin:0 0 20px}
.seo-related-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.seo-related-card{display:block;padding:22px 24px;background:var(--bg);border-radius:14px;text-decoration:none;color:var(--brand-dark);border:1px solid rgba(37,42,45,.06);transition:all .25s}
.seo-related-card:hover{border-color:var(--bronze);transform:translateY(-2px);box-shadow:0 6px 16px rgba(37,42,45,.08)}
.seo-related-card h4{margin:0;font-size:16px;display:flex;justify-content:space-between;align-items:center;font-weight:700}
.seo-related-card span{color:var(--bronze);transition:transform .2s}
.seo-related-card:hover span{transform:translateX(4px)}
@media(max-width:600px){.seo-related-grid{grid-template-columns:1fr}.seo-block{padding:56px 0 72px}}

/* PROJECT SPECS */
.proj-specs{padding:28px 32px;background:var(--bg);border-radius:18px;border:1px solid color-mix(in srgb, var(--bronze) 18%, transparent);margin-bottom:56px}
.proj-specs h3{font-size:18px;margin:0 0 16px;color:var(--bronze-dark)}
.proj-specs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 32px;margin:0}
.proj-spec{display:flex;flex-direction:column;gap:2px}
.proj-spec dt{font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px}
.proj-spec dd{font-size:15.5px;font-weight:600;color:var(--brand-dark);margin:0}
@media(max-width:600px){.proj-specs-grid{grid-template-columns:1fr}}

/* Service: featured badge */
.hp-svc{position:relative}
.hp-svc-badge{position:absolute;top:14px;left:14px;z-index:2;background:var(--bronze);color:var(--brand-dark);font-family:var(--font-heading);font-weight:700;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;padding:7px 14px;border-radius:999px;box-shadow:0 4px 12px color-mix(in srgb, var(--bronze) 40%, transparent);pointer-events:none}

/* Subtle button hover lift - applied universally */
.btn,.btn-pill-dark,.btn-pill-text,.btn-pill-outline,.btn-accent,.btn-primary{transition:transform .25s var(--ease),background-color .25s,box-shadow .25s,border-color .25s}
.btn:hover,.btn-pill-dark:hover,.btn-pill-outline:hover,.btn-accent:hover,.btn-primary:hover{transform:translateY(-2px)}

/* Burger button: display rule (the actual styling is at top of file using ::before/::after) */
@media (max-width:1023px){.nav-burger{display:flex}}

/* RICH SERVICE SECTIONS */

/* Voordelen */
.rich-voordelen{padding:96px 0;background:var(--cream)}
.rich-voordelen .section-header{text-align:center;max-width:680px;margin:0 auto 56px;padding:0 24px}
.voordelen-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;max-width:var(--container);margin:0 auto;padding:0 24px}
.voordeel-card{padding:32px 28px;background:var(--bg);border-radius:18px;border:1px solid rgba(37,42,45,.06);transition:all .3s var(--ease)}
.voordeel-card:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(37,42,45,.08);border-color:color-mix(in srgb, var(--bronze) 30%, transparent)}
.voordeel-icon{font-size:32px;width:56px;height:56px;background:color-mix(in srgb, var(--bronze) 12%, transparent);border-radius:14px;display:flex;align-items:center;justify-content:center;margin-bottom:18px}
.voordeel-card h3{font-family:var(--font-display);font-weight:700;font-size:18.5px;letter-spacing:.02em;margin:0 0 10px;color:var(--brand-dark)}
.voordeel-card p{font-size:14.5px;line-height:1.65;color:var(--text-soft);margin:0}
@media (max-width:1023px){.voordelen-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.voordelen-grid{grid-template-columns:1fr}.rich-voordelen{padding:64px 0}}

/* Materialen */
.rich-materialen{padding:96px 0;background:var(--bg-alt)}
.rich-materialen .section-header{text-align:center;max-width:720px;margin:0 auto 56px;padding:0 24px}
.mat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;max-width:1100px;margin:0 auto;padding:0 24px}
.mat-card{position:relative;padding:32px 28px;background:var(--bg);border-radius:20px;border:1.5px solid rgba(37,42,45,.06);transition:all .3s var(--ease)}
.mat-card.featured{border-color:var(--bronze);box-shadow:0 14px 30px color-mix(in srgb, var(--bronze) 18%, transparent)}
.mat-card:hover{transform:translateY(-3px)}
.mat-badge{position:absolute;top:-12px;left:24px;background:var(--bronze);color:var(--brand-dark);font-family:var(--font-heading);font-weight:700;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;padding:6px 12px;border-radius:999px}
.mat-head{margin-bottom:14px}
.mat-head h3{font-family:var(--font-display);font-weight:700;font-size:18.5px;letter-spacing:.02em;margin:0 0 4px;color:var(--brand-dark)}
.mat-price{font-family:var(--font-heading);font-weight:600;font-size:14px;color:var(--bronze-dark);letter-spacing:.3px}
.mat-card p{font-size:14.5px;line-height:1.65;color:var(--text-soft);margin:0}
.mat-cta{text-align:center;margin-top:48px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap;padding:0 24px}
@media(max-width:600px){.rich-materialen{padding:64px 0}.mat-cta{flex-direction:column;align-items:stretch;max-width:320px;margin-left:auto;margin-right:auto}}

/* Service-specific reviews */
.rich-reviews{padding:96px 0;background:var(--cream)}
.rich-reviews .section-header{text-align:center;max-width:680px;margin:0 auto 56px;padding:0 24px}
.rich-reviews-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;max-width:var(--container);margin:0 auto;padding:0 24px}
.rich-rev{padding:30px 28px;background:var(--bg);border-radius:20px;border:1px solid rgba(37,42,45,.06);display:flex;flex-direction:column;gap:16px}
.rich-rev-stars{display:flex;gap:1px}
.rich-rev-stars svg{width:18px;height:18px;fill:#FBBC05}
.rich-rev-text{font-size:15.5px;line-height:1.6;color:var(--text-soft);margin:0;flex:1}
.rich-rev-foot{display:flex;justify-content:space-between;align-items:center;border-top:1px solid rgba(37,42,45,.08);padding-top:12px}
.rich-rev-name{font-family:var(--font-heading);font-weight:700;font-size:14.5px;color:var(--brand-dark)}
.rich-rev-loc{font-size:13px;color:var(--text-muted)}
@media (max-width:1023px){.rich-reviews-grid{grid-template-columns:1fr}.rich-reviews{padding:64px 0}}

/* Final CTA */
.rich-final-cta{padding:96px 0;background:var(--brand-dark)}
.rfc-inner{max-width:760px;margin:0 auto;text-align:center;padding:0 24px}
.rfc-inner h2{font-family:var(--font-display);font-weight:700;font-size:clamp(34px,4vw,52px);line-height:1.05;letter-spacing:.02em;color:var(--cream);margin:0 0 18px}
.rfc-inner > p{font-size:17px;line-height:1.65;color:rgba(247,245,242,.78);margin:0 0 36px;max-width:600px;margin-left:auto;margin-right:auto}
.rfc-btns{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.btn-pill-wa{display:inline-flex;align-items:center;gap:8px;padding:18px 32px;background:#25D366;color:#fff;border-radius:999px;font-family:var(--font-heading);font-weight:700;font-size:15px;text-decoration:none;transition:all .25s var(--ease);box-shadow:0 6px 20px rgba(37,211,102,.3)}
.btn-pill-wa:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(37,211,102,.45);background:#22c25c}
.btn-pill-wa svg{width:18px;height:18px}
@media(max-width:600px){.rich-final-cta{padding:64px 0}.rfc-btns{flex-direction:column;align-items:stretch}.rfc-btns .btn-pill-dark,.btn-pill-wa,.btn-pill-text{justify-content:center;transition:all .25s var(--ease)}}

/* OFFERTE FORM v2 */
.offerte-form-section{padding:140px 0 96px;background:var(--cream)}
.of-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:64px;max-width:1100px;margin:0 auto;padding:0 24px;align-items:start}
.of-info{padding-right:24px}
.of-info h1{font-family:var(--font-kop);font-weight:700;font-size:clamp(34px,4vw,56px);line-height:1.02;letter-spacing:.02em;margin:0 0 18px;color:var(--brand-dark)}
.of-lead{font-size:17px;line-height:1.6;color:var(--text-soft);margin:0 0 32px}
.of-bullets{list-style:none;padding:0;margin:0 0 36px}
.of-bullets li{display:flex;align-items:flex-start;gap:10px;font-size:15.5px;color:var(--text-soft);margin-bottom:12px;line-height:1.5}
.of-bullets svg{width:20px;height:20px;color:var(--bronze);flex-shrink:0;margin-top:2px}
.of-contact{padding:22px 24px;background:var(--bg);border-radius:16px;border:1px solid rgba(37,42,45,.06)}
.of-contact p{margin:0 0 12px;font-size:14px;color:var(--text-soft)}
.of-link{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--brand-dark);font-family:var(--font-heading);font-weight:700;font-size:15.5px;margin-right:18px;transition:color .2s}
.of-link:hover{color:var(--bronze-dark)}
.of-link svg{width:16px;height:16px}
.of-link.of-wa{color:#25D366}
.of-link.of-wa:hover{color:#1da648}
.of-form{background:var(--bg);border-radius:24px;padding:36px 32px;box-shadow:0 14px 40px rgba(37,42,45,.06);border:1px solid rgba(37,42,45,.04)}
.of-row{margin-bottom:18px}
.of-row-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.of-field{display:block}
.of-field > span{display:block;font-family:var(--font-heading);font-weight:600;font-size:13px;color:var(--brand-dark);margin-bottom:6px;letter-spacing:.2px}
.of-field em{color:var(--bronze-dark);font-style:normal;font-weight:600;margin-left:2px}
.of-field input,.of-field select,.of-field textarea{width:100%;padding:13px 16px;border:1.5px solid rgba(37,42,45,.12);border-radius:10px;background:var(--bg);font-family:inherit;font-size:15px;color:var(--brand-dark);transition:border-color .2s,box-shadow .2s;-webkit-appearance:none;appearance:none}
.of-field input:focus,.of-field select:focus,.of-field textarea:focus{outline:none;border-color:var(--bronze);box-shadow:0 0 0 3px color-mix(in srgb, var(--bronze) 12%, transparent)}
.of-field textarea{resize:vertical;min-height:120px}
.of-field select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23252A2D' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 14px center;background-size:18px;padding-right:42px}
.of-field-file input{padding:10px;background:rgba(37,42,45,.03);cursor:pointer}
.of-field-file input::file-selector-button{margin-right:14px;padding:8px 16px;border:0;background:var(--brand-dark);color:var(--cream);border-radius:8px;font-family:inherit;font-weight:600;font-size:13px;cursor:pointer;transition:background-color .2s}
.of-field-file input::file-selector-button:hover{background:var(--bronze-dark)}
.of-hint{display:block;margin-top:6px;font-size:12.5px;color:var(--text-muted)}
.of-checkbox label{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:var(--text-soft);line-height:1.5;cursor:pointer}
.of-checkbox input[type="checkbox"]{flex-shrink:0;width:18px;height:18px;margin-top:2px;accent-color:var(--bronze)}
.of-submit{width:100%;padding:18px 28px;background:var(--brand-dark);color:var(--cream);border:0;border-radius:999px;font-family:var(--font-heading);font-weight:700;font-size:15.5px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:transform .2s,background-color .2s,box-shadow .2s;margin-top:8px}
.of-submit:hover{transform:translateY(-2px);background:var(--bronze-dark);box-shadow:0 10px 28px rgba(159,133,64,.4)}
.of-submit svg{width:18px;height:18px}
.of-promise{text-align:center;font-size:13px;color:var(--text-muted);margin:14px 0 0}
@media (max-width:1023px){
  .of-grid{grid-template-columns:1fr;gap:40px}
  .offerte-form-section{padding:96px 0 64px}
}
@media(max-width:600px){
  .of-row-2{grid-template-columns:1fr}
  .of-form{padding:28px 22px}
}

/* NAV LANG FLAG */
.nav-lang{position:relative;margin-right:6px}
.nav-lang-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1.5px solid rgba(37,42,45,.12);border-radius:999px;background:transparent;font-family:var(--font-heading);font-weight:700;font-size:13px;color:var(--brand-dark);cursor:pointer;transition:all .25s var(--ease)}
.nav-lang-btn:hover{border-color:var(--bronze);transform:translateY(-1px)}
.nav-flag{border-radius:3px;display:block;flex-shrink:0}
.nav-lang-code{letter-spacing:.5px}
.nav.scrolled .nav-lang-btn{color:var(--brand-dark);border-color:rgba(37,42,45,.18)}
@media (max-width:1023px){.nav-lang{display:none}}

/* HOVER LIFTS - ensure ALL clickable buttons subtly lift on hover */
.btn-cta-primary{transition:all .25s var(--ease)}
.btn-cta-primary:hover{transform:translateY(-2px);background:var(--bronze-dark);color:var(--cream);box-shadow:0 12px 32px rgba(159,133,64,.45)}

.btn-cta-wa{transition:all .25s var(--ease)}
.btn-cta-wa:hover{transform:translateY(-2px);background:#1da648;box-shadow:0 12px 32px rgba(37,211,102,.4)}

.btn-pill-dark{display:inline-flex;align-items:center;gap:10px;padding:18px 32px;background:var(--bronze);color:var(--brand-dark);border-radius:999px;font-family:var(--font-heading);font-weight:700;font-size:15.5px;text-decoration:none;transition:all .25s var(--ease);box-shadow:0 8px 24px color-mix(in srgb, var(--bronze) 32%, transparent)}
.btn-pill-dark:hover{transform:translateY(-2px);background:var(--cream);color:var(--brand-dark);box-shadow:0 14px 36px color-mix(in srgb, var(--bronze) 45%, transparent)}

.btn-pill-text{transition:all .2s var(--ease)}
.btn-pill-text:hover{transform:translateY(-1px);color:var(--bronze-light)}

.nav-phone{transition:all .25s var(--ease)}
.nav-phone:hover{transform:translateY(-1px);color:var(--bronze-dark)}

/* Bonus: subtle hover on the WhatsApp strip in slider + sticky CTA buttons */

/* Sticky bottom CTA on mobile (if exists) */
.sticky-cta a{transition:all .2s var(--ease)}
.sticky-cta a:hover{transform:translateY(-2px)}

/* OVERFLOW SAFETY OVERRIDES - prevent specific known wide elements from breaking layout on mobile */
@media(max-width:600px){
  /* Calculator inputs/sliders */
  .calculator,.calc-panel,.calc-result{max-width:100%;box-sizing:border-box}
  input[type="range"],input[type="text"],input[type="email"],input[type="tel"],select,textarea{max-width:100%;box-sizing:border-box}
  /* Tables auto-wrap */
  table{width:100%;table-layout:fixed;word-wrap:break-word}
  /* Code blocks scroll inside themselves, not page */
  pre,code{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  /* Reviews/horizontal scrollers contain themselves */
  .hp-reviews-track,
  /* Hero slider strip wraps if too tight */
  
  /* Make sure the page wrappers never push past viewport */
  section,header,footer,article,nav{max-width:100vw;box-sizing:border-box}
  /* Long words in headlines wrap */
  h1,h2,h3{word-break:normal;overflow-wrap:normal;hyphens:none;-webkit-hyphens:none}
  /* iframe (YouTube/Maps) full-width */
  iframe{width:100%;max-width:100%}
}

@media (max-width:1023px){
    /* taller pin = more scroll distance */
  
  
  
  
    /* hide native scroll buttons - scroll-jack drives it now */
}

/* WHY-REASONS - explicit mobile scroll-jack (clean version) */
@media (max-width:1023px){
  /* Pin section: tall enough to give scroll distance */
  
  /* Sticky inner pins to viewport while parent scrolls */
  
  /* Track: horizontal flex, visible overflow so JS transform shows it */
  
  .hp-why-reasons-track::-webkit-scrollbar{display:none}
  /* Cards: take ~80% of viewport so user sees one at a time */
  
  
  /* Progress bar: visible at bottom of sticky area */
  
  /* Hide manual prev/next buttons - scroll-jack handles it */
  .hp-why-btn,
}

/* Mobile: stacked vertically */
@media (max-width:1023px){
  .hp-why-reasons-track{grid-template-columns:repeat(2,1fr);gap:14px;padding:0 18px}
  .hp-why-sticky{padding:64px 0 80px}
  .hp-why-card{padding:26px 22px;border-radius:20px}
  .hpwc-num{font-size:36px;margin-bottom:10px}
  .hp-why-card h3{font-size:20px}
}
@media(max-width:600px){
  .hp-why-reasons-track{grid-template-columns:1fr;gap:12px}
}
/* ============================================================
   GOOGLE REVIEWS - horizontal swipe, Google brand colors
   ============================================================ */
.hp-greviews{padding:80px 0;background:var(--bg)}
.hp-greviews .container{max-width:var(--container);margin:0 auto;padding:0 24px}

/* Header with summary + nav */
.hpgr-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:32px;flex-wrap:wrap}
.hpgr-summary{display:flex;flex-direction:column;gap:14px}
.hpgr-googlelogo{font-family:Arial, Helvetica, sans-serif;font-weight:700;font-size:34px;letter-spacing:-1px;line-height:1}
.hpgr-rating{display:flex;align-items:center;gap:10px}
.hpgr-score{font-family:var(--font-heading);font-weight:700;font-size:36px;letter-spacing:-.02em;color:#202124;line-height:1}
.hpgr-stars{display:inline-flex;gap:2px}
.hpgr-stars svg{width:22px;height:22px}
.hpgr-count{font-size:14px;color:#5f6368;font-family:Arial, Helvetica, sans-serif}

/* Action buttons + arrows */
.hpgr-actions{display:flex;align-items:center;gap:10px}
.hpgr-write{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border:1px solid #dadce0;border-radius:24px;color:#1a73e8;font-family:Arial, Helvetica, sans-serif;font-weight:600;font-size:14px;text-decoration:none;background:var(--bg);transition:all .25s var(--ease)}
.hpgr-write:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(26,115,232,.15);border-color:#1a73e8}
.hpgr-write svg{width:16px;height:16px}
.hpgr-nav{width:40px;height:40px;border-radius:50%;border:1px solid #dadce0;background:var(--bg);color:#5f6368;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .25s var(--ease)}
.hpgr-nav:hover{transform:translateY(-2px);background:#f8f9fa;border-color:#1a73e8;color:#1a73e8}
.hpgr-nav svg{width:18px;height:18px}

/* Horizontal scrolling track */
.hpgr-track{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:8px 4px 28px;scrollbar-width:none;scroll-padding:4px}
.hpgr-track::-webkit-scrollbar{display:none}
.hpgr-loading{padding:40px;text-align:center;color:#5f6368;font-size:14px;width:100%}

/* Individual review card - looks like Google reviews */
.hpgr-card{flex:0 0 320px;max-width:320px;background:var(--bg);border:1px solid #e8eaed;border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:14px;scroll-snap-align:start;transition:box-shadow .25s var(--ease);box-shadow:0 1px 3px rgba(60,64,67,.08)}
.hpgr-card:hover{box-shadow:0 4px 16px rgba(60,64,67,.16)}

/* Card header: avatar + name/rating + Google mark */
.hpgr-card-head{display:flex;align-items:center;gap:12px}
.hpgr-avatar{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-heading);font-weight:700;font-size:18px;color:#fff;flex-shrink:0}
.hpgr-meta{flex:1;min-width:0}
.hpgr-name{font-family:Arial, Helvetica, sans-serif;font-weight:700;font-size:15px;color:#202124;line-height:1.2;margin-bottom:2px}
.hpgr-sub{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.hpgr-card-stars{display:inline-flex;gap:1px}
.hpgr-card-stars svg{width:14px;height:14px}
.hpgr-time{font-size:13px;color:#70757a}
.hpgr-google-mark{width:18px;height:18px;flex-shrink:0;opacity:.85}

/* Service tag chip */
.hpgr-tag{display:inline-block;align-self:flex-start;padding:4px 10px;background:#e8f0fe;color:#1967d2;font-family:Arial, Helvetica, sans-serif;font-weight:500;font-size:12px;border-radius:12px;letter-spacing:.2px}

/* Review text */
.hpgr-text{font-size:14.5px;line-height:1.55;color:#3c4043;margin:0;font-family:var(--font-body)}

/* Footer link */
.hpgr-foot{text-align:center;margin-top:8px}
.hpgr-allreviews{display:inline-flex;align-items:center;gap:6px;color:#1a73e8;text-decoration:none;font-family:Arial, Helvetica, sans-serif;font-weight:600;font-size:14.5px;padding:10px 0;transition:gap .25s var(--ease)}
.hpgr-allreviews:hover{gap:10px}
.hpgr-allreviews svg{width:15px;height:15px}

/* === Mobile === */
@media (max-width:1023px){
  .hp-greviews{padding:64px 0}
  .hpgr-head{margin-bottom:24px}
  .hpgr-googlelogo{font-size:28px}
  .hpgr-score{font-size:30px}
  .hpgr-stars svg{width:18px;height:18px}
  .hpgr-actions{flex-wrap:wrap}
  .hpgr-card{flex-basis:76vw;max-width:76vw;padding:22px;scroll-snap-align:center}
  .hpgr-track{gap:14px;padding:8px 12vw 24px;scroll-padding:12vw}
}
@media(max-width:600px){
  .hpgr-head{flex-direction:column;align-items:flex-start;gap:18px}
  .hpgr-actions .hpgr-nav{display:none}  /* swipe-only on mobile */
  .hpgr-write{font-size:13px}
  .hpgr-card{flex-basis:78vw;max-width:78vw;padding:20px;scroll-snap-align:center}
  .hpgr-name{font-size:14px}
  .hpgr-text{font-size:14px}
}

/* Make sure werkwijze single-column rule wins */
@media(max-width:600px){
  .werkwijze{grid-template-columns:1fr !important;gap:28px !important}
  .werk-step{text-align:left;padding:0}
}
@media (max-width:1023px) and (min-width:601px){
  /* Tablet: 1 column too because 3 doesn't fit */
  .werkwijze{grid-template-columns:1fr !important;gap:32px !important;max-width:520px;margin:0 auto}
}

/* STICKY CTA REMOVED - user prefers floating WhatsApp + lang widget instead */
.sticky-cta{display:none !important}
body{padding-bottom:0 !important}

/* Position floating widgets so they don't overlap on small screens */
@media(max-width:600px){
  .wa-btn{bottom:18px;right:18px}
  .lang{bottom:18px;left:18px}
}

/* ============================================================
   FLOATING WIDGETS - both on same horizontal line, equal heights
   ============================================================ */
.wa-btn{
  position:fixed !important;
  bottom:24px !important;
  right:24px !important;
  width:68px !important;
  height:68px !important;
  z-index:9999 !important;
}
.lang{
  position:fixed !important;
  bottom:24px !important;
  left:24px !important;
  z-index:9999 !important;
  height:58px !important;
  display:flex !important;
  align-items:center !important;
}
.lang-btn{
  height:58px !important;
  padding:0 20px !important;
  display:inline-flex !important;
  align-items:center !important;
  gap:10px !important;
  border:0 !important;
  cursor:pointer !important;
  font-family:var(--font-heading) !important;
  font-weight:700 !important;
  font-size:14.5px !important;
  border-radius:999px !important;
  background:rgba(255,255,255,.97) !important;
  backdrop-filter:blur(10px) !important;
  -webkit-backdrop-filter:blur(10px) !important;
  color:var(--brand-dark) !important;
  box-shadow:0 6px 20px rgba(37,42,45,.15) !important;
  transition:transform .25s var(--ease),box-shadow .25s !important;
}
.lang-btn:hover{transform:translateY(-2px) !important;box-shadow:0 10px 28px rgba(37,42,45,.22) !important}
.lang-flag{font-size:18px;line-height:1;display:flex;align-items:center}
.lang-arrow{margin-left:2px;width:14px;height:14px;transition:transform .25s var(--ease)}
.lang.open .lang-arrow{transform:rotate(180deg)}

/* Dropdown - visible above the button when open */
.lang-dropdown{
  position:absolute;
  bottom:calc(100% + 10px);
  left:0;
  background:var(--bg);
  border-radius:14px;
  box-shadow:0 12px 40px rgba(37,42,45,.2);
  padding:8px;
  min-width:240px;
  max-height:380px;
  overflow-y:auto;
  display:none;
  border:1px solid rgba(37,42,45,.08);
}
.lang.open .lang-dropdown{display:block;animation:lang-fade .2s ease}
@keyframes lang-fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.lang-option{
  display:flex;
  align-items:center;
  gap:12px;
  width:100%;
  padding:11px 14px;
  border:0;
  background:transparent;
  border-radius:10px;
  font-family:var(--font-heading);
  font-size:14px;
  font-weight:600;
  color:var(--brand-dark);
  text-align:left;
  cursor:pointer;
  transition:background-color .15s;
}
.lang-option:hover{background:var(--bg-alt)}
.lang-option.active{background:var(--bronze);color:var(--brand-dark)}
.lang-option .lang-name{flex:1}
.lang-option .lang-code{font-size:11px;color:var(--text-muted);letter-spacing:1.5px;font-weight:700}
.lang-option.active .lang-code{color:var(--brand-dark);opacity:.7}
.lang-flag-emoji{font-size:18px;line-height:1}

/* Mobile: a bit tighter */
@media(max-width:600px){
  .wa-btn{bottom:18px !important;right:18px !important;width:62px !important;height:62px !important}.tel-btn{right:18px !important;width:62px !important;height:62px !important;bottom:92px !important}
  .lang{bottom:18px !important;left:18px !important;height:54px !important}
  .lang-btn{height:54px !important;padding:0 16px !important;font-size:13.5px !important}
  .lang-dropdown{min-width:220px;max-height:60vh}
}

/* ============================================================
   GOOGLE TRANSLATE - kill all visible UI (banner, tooltip, offsets)
   ============================================================ */
.skiptranslate,
iframe.skiptranslate,
.goog-te-banner-frame,
.goog-te-banner-frame.skiptranslate,
.goog-te-balloon-frame,
.goog-te-ftab,
.goog-te-menu-frame,
.VIpgJd-ZVi9od-l4eHX-hSRGPd,
.VIpgJd-ZVi9od-ORHb-OEVmcd,
.VIpgJd-yAWNEb-VIpgJd-fmcmS-sn54Q,
.VIpgJd-suEOdc {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  max-height: 0 !important;
  overflow: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
/* Prevent Google from pushing body down by 40px */
html,
html.translated-ltr,
html.translated-rtl,
body,
body.translated-ltr,
body.translated-rtl {
  top: 0 !important;
  margin-top: 0 !important;
  padding-top: 0 !important;
  position: static !important;
}
/* Hide all Google tooltips that pop up on hover */
.goog-tooltip,
.goog-tooltip:hover,
.goog-tooltip-active,
#goog-gt-tt,
#goog-gt-tt + div,
.goog-text-highlight {
  display: none !important;
  background: none !important;
  box-shadow: none !important;
}
/* Hide the actual translate widget element */
#google_translate_element {
  display: none !important;
  height: 0 !important;
  overflow: hidden !important;
}
/* Lang pill must always sit on top */
.lang { z-index: 99999 !important; }
.lang-dropdown { z-index: 99999 !important; }
body{top:0 !important;position:static !important}
.goog-tooltip,.goog-tooltip:hover{display:none !important}
.goog-text-highlight{background:none !important;box-shadow:none !important}
#goog-gt-tt,#goog-gt-tt + div + img{display:none !important}

/* CALCULATOR - premium minimal: dark bg, merkkleur accent only */
.calculator{background:var(--brand-dark) !important;color:var(--cream)}
.calc-tabs{border-bottom:1px solid rgba(247,245,242,.12) !important}
.calc-tab{color:rgba(247,245,242,.55) !important;background:transparent !important;border-bottom:2px solid transparent !important;text-transform:uppercase;letter-spacing:1.2px}
.calc-tab:hover{color:var(--cream) !important;background:transparent !important;border-bottom-color:color-mix(in srgb, var(--bronze) 40%, transparent) !important;transform:none !important}
.calc-tab.active{color:var(--bronze) !important;border-bottom-color:var(--bronze) !important;background:transparent !important}
.calc-result{background:transparent !important;border-top:1px solid rgba(247,245,242,.12)}
.calc-price,.calc-result-price{color:var(--bronze) !important}
.calc-row label,.calc-row span{color:var(--cream) !important}
.calc-row input[type=range]{accent-color:var(--bronze) !important}
.calc-controls,.calc-panel{background:transparent}

/* ============================================================
   WHY-REASONS - scroll-jack (page pins, cards slide horizontally)
   Works on both desktop and mobile
   ============================================================ */
.hp-why-pin{position:relative;height:380vh;overflow:visible}
.hp-why-sticky{position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow:hidden;display:flex;flex-direction:column;justify-content:center;padding:60px 0 80px;background:var(--bg)}
.hp-why-reasons-track{display:flex;gap:24px;padding:0 8vw;will-change:transform;align-items:center;flex-wrap:nowrap}
.hp-why-card{flex:0 0 420px;background:var(--cream);border-radius:28px;padding:44px 36px;display:flex;flex-direction:column;justify-content:center;border:1px solid rgba(37,42,45,.08);min-height:420px;box-shadow:0 4px 20px rgba(37,42,45,.04)}
.hp-why-card-img{flex:0 0 420px;padding:0;overflow:hidden;border-radius:28px;box-shadow:0 14px 40px rgba(37,42,45,.18)}
.hp-why-card-img img{width:100%;height:100%;object-fit:cover}
.hpwc-num{font-family:var(--font-heading);font-weight:800;font-size:52px;color:var(--bronze);letter-spacing:-.02em;margin-bottom:16px;line-height:1}
.hp-why-card h3{font-family:var(--font-display);font-weight:700;font-size:30px;letter-spacing:.02em;margin:0 0 14px;color:var(--brand-dark)}
.hp-why-card p{font-size:15.5px;line-height:1.6;color:var(--text-soft);margin:0}
.hp-why-progress{position:absolute;bottom:40px;left:8vw;right:8vw;height:2px;background:rgba(37,42,45,.1);border-radius:2px;overflow:hidden;z-index:5;display:block}
.hp-why-progress-bar{height:100%;width:0;background:var(--bronze);transition:width .12s linear;border-radius:2px}
.hp-why-buttons{position:absolute;top:50%;right:32px;transform:translateY(-50%);display:flex;gap:10px;z-index:6}
.hp-why-btn{width:48px;height:48px;border-radius:50%;border:1.5px solid rgba(37,42,45,.15);background:var(--bg);color:var(--brand-dark);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .25s var(--ease)}
.hp-why-btn:hover{transform:translateY(-2px);background:var(--bronze);color:var(--brand-dark);border-color:var(--bronze)}
.hp-why-btn svg{width:18px;height:18px}

/* Mobile: same scroll-jack mechanism, cards take ~80vw */
@media (max-width:1023px){
  .hp-why-pin{height:300vh}
  .hp-why-sticky{top:0;height:100vh;padding:40px 0 70px}
  .hp-why-reasons-track{gap:14px;padding:0 18px}
  .hp-why-card{flex-basis:80vw;max-width:80vw;padding:32px 26px;min-height:auto;border-radius:24px}
  .hp-why-card-img{flex-basis:80vw;max-width:80vw;aspect-ratio:1/1}
  .hp-why-card h3{font-size:24px}
  .hp-why-card p{font-size:15px}
  .hp-why-progress{bottom:24px;left:18px;right:18px}
  .hp-why-buttons{display:none}
  .hpwc-num{font-size:42px;margin-bottom:12px}
}
@media(max-width:600px){
  .hp-why-pin{height:280vh}
  .hp-why-card{flex-basis:84vw;max-width:84vw;padding:28px 22px}
  .hp-why-card-img{flex-basis:84vw;max-width:84vw}
}

/* Hide nav-phone + Offerte-knop on mobile per user request (desktop keeps them) */
@media (max-width:1023px){
  .nav-phone{display:none !important}
  .nav > .btn.btn-primary,
  .nav-actions > .btn.btn-primary,
  nav .btn.btn-primary{display:none !important}
  /* Mobile slide-out menu: also hide phone + offerte buttons inside it
     (they overlap with the floating WhatsApp + lang pill at bottom) */
  .mobile-menu > .btn,
  .mobile-menu > a.btn{display:none !important}
}

/* ============================================================
   v38 - REDESIGN PER REFERENCE
   Mobile-first. Cream/merkkleur palette. Full-screen hero left-overlay.
   ============================================================ */

/* Palette - DEHAAS
   - Achtergrond: wit / koel lichtgrijs
   - Donker:      #0F172A (diep blauwzwart)
   - Accent:      #F59E0B (DEHAAS blauw, uit logo) met licht/donker variant */
:root{
  --bg: #ffffff !important;
  --bg-alt: #F1F5F9 !important;
  --bg-cream: #F2F6FB !important;
  --bg-card: #ffffff !important;
  --bg-dark: #0B111E !important;
  --bg-dark-alt: #1E293B !important;
  --bronze: #F59E0B !important;
  --bronze-light: #FBBF24 !important;
  --bronze-dark: #D97706 !important;
  --brand-dark: #0F172A !important;
  --text-soft: #3A4654 !important;
  --text-muted: #6B7681 !important;
  --cream: #F4F7FA !important;
}

body{background:var(--bg);color:var(--brand-dark)}
.hp-eyebrow{
  display:inline-block;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:11.5px;
  letter-spacing:3.5px;
  text-transform:uppercase;
  color:var(--bronze);
  margin-bottom:18px;
  padding:9px 24px;
  border:1px solid color-mix(in srgb, var(--bronze) 40%, transparent);
  border-radius:999px;
  background:color-mix(in srgb, var(--bronze) 7%, transparent);
}
.hp-eyebrow::before{display:none !important}
section.dark .hp-eyebrow{
  color:var(--bronze-light);
  border-color:color-mix(in srgb, var(--bronze-light) 48%, transparent);
  background:color-mix(in srgb, var(--bronze-light) 12%, transparent);
}

/* Buttons - pill */
.btn-primary,
a.btn.btn-primary{
  background:var(--bronze);
  color:#fff;
  border-radius:999px;
  padding:16px 32px;
  font-family:var(--font-heading);
  font-weight:700;
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-size:15px;
  border:0;
  transition:transform .25s var(--ease),background-color .25s,box-shadow .25s;
  box-shadow:0 6px 18px color-mix(in srgb, var(--bronze) 28%, transparent);
  text-decoration:none;
}
.btn-primary:hover,
a.btn.btn-primary:hover{background:var(--bronze-dark);transform:translateY(-2px);box-shadow:0 10px 24px color-mix(in srgb, var(--bronze) 35%, transparent)}
.btn-ghost,
a.btn.btn-ghost{
  background:transparent;
  color:var(--brand-dark);
  border:1.5px solid var(--brand-dark);
  border-radius:999px;
  padding:14px 30px;
  font-family:var(--font-heading);
  font-weight:700;
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-size:15px;
  transition:all .25s var(--ease);
  text-decoration:none;
}
.btn-ghost:hover,
a.btn.btn-ghost:hover{background:var(--brand-dark);color:#fff}
.btn-light-ghost{
  background:transparent;
  color:#fff;
  border:1.5px solid rgba(255,255,255,.85);
  border-radius:999px;
  padding:14px 30px;
  font-family:var(--font-heading);
  font-weight:700;
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-size:15px;
  transition:all .25s var(--ease);
  text-decoration:none;
}
.btn-light-ghost:hover{background:#fff;color:var(--brand-dark)}

/* Nav - base rules. Background is set per scroll state (transparent at
   top, anthracite when scrolled - see v62 patches below). */
.nav{border-bottom:none}

/* ===== 1. HERO ===== */
.hp-hero{
  position:relative;
  min-height:100vh;
  display:flex;
  align-items:center;
  overflow:hidden;
  isolation:isolate;
}
.hp-hero-bg{
  position:absolute;inset:0;
  background-size:cover;
  background-position:center right;
  z-index:-2;
}
.hp-hero-overlay{
  position:absolute;inset:0;
  background:linear-gradient(90deg,
    rgba(15,13,10,.95) 0%,
    rgba(15,13,10,.88) 35%,
    rgba(15,13,10,.55) 55%,
    rgba(15,13,10,.15) 75%,
    rgba(15,13,10,0) 100%);
  z-index:-1;
}
.hp-hero-content{
  position:relative;
  z-index:1;
  padding:120px 0 80px;
  color:#fff;
  max-width:640px;
}
.hp-hero-content h1{
  font-family:var(--font-kop);   /* [ref-regel: elke H1 de brede vette sans] */
  font-weight:700;
  font-size:54px;
  line-height:1.05;
  letter-spacing:.02em;
  color:#fff;
  margin:0 0 24px;
}
.hp-hero-content h1 em{color:var(--bronze-light);font-style:normal;font-weight:700}
.hp-hero-content p{
  font-size:17px;
  line-height:1.55;
  color:rgba(255,255,255,.82);
  margin:0 0 32px;
  max-width:500px;
}
.hp-hero-cta{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:48px}
.hp-hero-stats{
  display:grid;
  grid-template-columns:repeat(3,auto);
  gap:36px;
  align-items:start;
}
.hp-hero-stats .stat{display:flex;flex-direction:column;gap:4px}
.hp-hero-stats .stat strong{
  font-family:var(--font-heading);
  font-weight:800;
  font-size:32px;
  color:#fff;
  letter-spacing:-.01em;
  line-height:1;
}
.hp-hero-stats .stat span{
  font-size:13px;
  color:rgba(255,255,255,.7);
  letter-spacing:.4px;
}

/* ===== 2. ONZE DIENSTEN ===== */
.hp-services{padding:90px 0;background:var(--bg)}
.hp-services .container{text-align:center}
.hp-services h2{
  font-family:var(--font-display);
  font-weight:700;
  font-size:44px;
  letter-spacing:.02em;
  margin:0 0 50px;
  color:var(--brand-dark);
}
.hp-svc-grid{display:flex;flex-direction:column;gap:20px;max-width:560px;margin:0 auto}
.hp-svc-card{
  background:var(--bg-card);
  border-radius:24px;
  overflow:hidden;
  border:1px solid rgba(37,42,45,.05);
  text-align:left;
  position:relative;
  transition:transform .3s var(--ease),box-shadow .3s;
}
.hp-svc-card:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(37,42,45,.08)}
.hp-svc-img{
  width:100%;
  aspect-ratio:16/10;
  background-size:cover;
  background-position:center;
  position:relative;
}
.hp-svc-badge{
  position:absolute;
  top:18px;left:18px;
  background:var(--bronze);
  color:#fff;
  padding:8px 16px;
  border-radius:999px;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:11px;
  letter-spacing:1.5px;
  text-transform:uppercase;
  z-index:2;
}
.hp-svc-body{padding:30px 28px 32px}
.hp-svc-body h3{
  font-family:var(--font-display);
  font-weight:700;
  font-size:26px;
  letter-spacing:.02em;
  margin:0 0 14px;
  color:var(--brand-dark);
}
.hp-svc-body p{
  font-size:15.5px;
  line-height:1.55;
  color:var(--text-soft);
  margin:0 0 22px;
}
.hp-svc-features{list-style:none;padding:0;margin:0 0 28px;display:flex;flex-direction:column;gap:12px}
.hp-svc-features li{
  display:flex;
  align-items:center;
  gap:14px;
  font-size:15px;
  color:var(--text-soft);
}
.hp-svc-features li::before{
  content:"";
  flex:none;
  width:22px;height:22px;
  background:color-mix(in srgb, var(--bronze) 15%, transparent);
  border-radius:50%;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23C5A55A' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:center;
}
.hp-svc-body .btn-primary{width:100%;justify-content:center}

/* ===== 3. PORTFOLIO ===== */
.hp-portfolio{padding:90px 0;background:var(--bg)}
.hp-portfolio h2{
  font-family:var(--font-display);
  font-weight:700;
  font-size:44px;
  letter-spacing:.02em;
  margin:0 0 14px;
  color:var(--brand-dark);
}
.hp-portfolio > .container > p{
  font-size:15.5px;
  color:var(--text-muted);
  margin:0 0 40px;
}
.hp-port-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  max-width:560px;
  margin:0 auto;
}
.hp-port-card{
  position:relative;
  display:block;
  aspect-ratio:5/4;
  border-radius:22px;
  overflow:hidden;
  text-decoration:none;
  background:var(--bg-cream);
  transition:transform .3s var(--ease);
}
.hp-port-card:hover{transform:translateY(-4px)}
.hp-port-img{
  position:absolute;inset:0;
  background-size:cover;
  background-position:center;
}
.hp-port-meta{
  position:absolute;
  left:0;right:0;bottom:0;
  padding:24px 22px;
  background:linear-gradient(180deg,transparent 0%,rgba(15,13,10,.8) 60%,rgba(15,13,10,.95) 100%);
  color:#fff;
}
.hp-port-tag{
  display:inline-block;
  background:var(--bronze);
  color:#fff;
  padding:5px 12px;
  border-radius:999px;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:10.5px;
  letter-spacing:1.5px;
  text-transform:uppercase;
  margin-bottom:10px;
}
.hp-port-meta h3{
  font-family:var(--font-display);
  font-weight:700;
  font-size:20px;
  margin:0;
  color:#fff;
  letter-spacing:.02em;
  line-height:1.2;
}

/* ===== 4. VAKWERK ===== */
.hp-vakwerk{padding:100px 0;background:var(--bg-card)}
.hp-vakwerk .container{max-width:1100px;text-align:center}
.hp-vakwerk h2{
  font-family:var(--font-display);
  font-weight:700;
  font-size:44px;
  letter-spacing:.02em;
  line-height:1.08;
  margin:0 0 22px;
  color:var(--brand-dark);
}
.hp-vakwerk > .container > p{
  font-size:16.5px;
  line-height:1.6;
  color:var(--text-soft);
  margin:0 auto 48px;
  max-width:720px;
}
.hp-vak-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:26px;
  margin-bottom:54px;
  text-align:left;
}
.hp-vak-card{
  background:var(--bg);
  border:1px solid rgba(37,42,45,.08);
  border-radius:20px;
  padding:34px 30px;
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s var(--ease);
}
.hp-vak-card:hover{
  transform:translateY(-8px);
  box-shadow:0 18px 44px rgba(15,13,10,.12);
  border-color:var(--bronze);
}
.hp-vak-card .hp-vak-num{
  width:52px;height:52px;
  border-radius:14px;
  background:var(--bronze);
  color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-heading);
  font-weight:800;
  font-size:22px;
  margin-bottom:20px;
  transition:transform .4s var(--ease);
}
.hp-vak-card:hover .hp-vak-num{transform:scale(1.12) rotate(-6deg)}
.hp-vak-card h3{
  font-family:var(--font-display);
  font-weight:700;
  font-size:20px;
  margin:0 0 10px;
  color:var(--brand-dark);
  letter-spacing:.02em;
}
.hp-vak-card p{font-size:15.5px;line-height:1.6;color:var(--text-soft);margin:0}
.hp-vak-stats{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
  padding-top:42px;
  border-top:1px solid rgba(37,42,45,.1);
}
.hp-vak-stats > div{display:flex;flex-direction:column;gap:4px;align-items:center;text-align:center;transition:transform .35s var(--ease)}
.hp-vak-stats > div:hover{transform:translateY(-4px)}
.hp-vak-stats strong{
  font-family:var(--font-heading);
  font-weight:800;
  font-size:38px;
  color:var(--bronze);
  line-height:1;
}
.hp-vak-stats span{font-size:13.5px;color:var(--text-muted)}
@media (max-width:860px){
  .hp-vak-grid{grid-template-columns:1fr;gap:18px}
}

/* ===== 5. WERKWIJZE ===== */
.hp-werkwijze{padding:100px 0;background:var(--bg);text-align:center}
.hp-werkwijze h2{
  font-family:var(--font-display);
  font-weight:700;
  font-size:44px;
  letter-spacing:.02em;
  margin:0 0 60px;
  color:var(--brand-dark);
}
.hp-werk-steps{display:flex;flex-direction:column;gap:48px;max-width:480px;margin:0 auto 50px}
.hp-werk-step{display:flex;flex-direction:column;align-items:center;gap:18px}
.hp-werk-num{
  width:78px;height:78px;
  border:2px solid var(--bronze);
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-heading);
  font-weight:800;
  font-size:24px;
  color:var(--bronze);
}
.hp-werk-step h3{
  font-family:var(--font-display);
  font-weight:700;
  font-size:21px;
  margin:0;
  color:var(--brand-dark);
}
.hp-werk-step p{
  font-size:15px;
  line-height:1.55;
  color:var(--text-soft);
  margin:0;
  max-width:340px;
}

/* ===== 7. TIPS & NIEUWS ===== */
.hp-tips{padding:90px 0 100px;background:var(--bg);overflow:hidden}
.hp-tips .container{max-width:1200px;padding-left:24px;padding-right:24px}
.hp-tips h2{
  font-family:var(--font-display);
  font-weight:700;
  font-size:42px;
  letter-spacing:.02em;
  margin:0 0 14px;
  color:var(--brand-dark);
}
.hp-tips > .container > p{font-size:15.5px;color:var(--text-muted);margin:0 0 38px}
.hp-tips-marquee{
  position:relative;
  overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent 100%);
}
.hp-tips-track{
  display:flex;
  gap:18px;
  animation:tips-marquee 40s linear infinite;
  width:max-content;
}
.hp-tips-track:hover{animation-play-state:paused}
@keyframes tips-marquee{
  0%{transform:translateX(0)}
  100%{transform:translateX(-50%)}
}
.hp-tips-card{
  flex:none;
  width:290px;
  background:var(--bg-card);
  border-radius:18px;
  overflow:hidden;
  border:1px solid rgba(37,42,45,.06);
  text-decoration:none;
  color:var(--brand-dark);
  display:flex;flex-direction:column;
}
.hp-tips-img{
  width:100%;
  aspect-ratio:16/10;
  background-size:cover;
  background-position:center;
  background-color:var(--bg-cream);
}
.hp-tips-card-body{padding:20px 22px 22px;display:flex;flex-direction:column;gap:10px;flex:1}
.hp-tips-tag{
  align-self:flex-start;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:10.5px;
  letter-spacing:1.4px;
  text-transform:uppercase;
  padding:5px 12px;
  border-radius:999px;
  background:color-mix(in srgb, var(--bronze) 18%, transparent);
  color:var(--bronze-dark);
  border:1.5px solid color-mix(in srgb, var(--bronze) 65%, transparent);
}
.hp-tips-tag.tag-nieuws{
  background:rgba(46,160,67,.16);
  color:#1F7F33;
  border:1.5px solid rgba(46,160,67,.55);
}
.hp-tips-card h3{
  font-family:var(--font-display);
  font-weight:700;
  font-size:17px;
  letter-spacing:.02em;
  margin:0;
  line-height:1.25;
  color:var(--brand-dark);
}
.hp-tips-card p{font-size:14px;line-height:1.5;color:var(--text-soft);margin:0;flex:1}
.hp-tips-meta{
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-size:13px;
  padding-top:10px;
  border-top:1px solid rgba(37,42,45,.07);
  color:var(--text-muted);
}
.hp-tips-meta .lees{color:var(--bronze-dark);font-weight:700;font-family:var(--font-heading)}

/* ===== 8. CONTACT + CALCULATOR ===== */
.hp-contact{
  padding:100px 0;
  background:var(--bg-dark);
  color:#fff;
  position:relative;
}
.hp-contact .container{max-width:680px}
.hp-contact h2{
  font-family:var(--font-display);
  font-weight:700;
  font-size:48px;
  letter-spacing:.02em;
  line-height:1.05;
  margin:0 0 22px;
  color:#fff;
}
.hp-contact > .container > p{
  font-size:16.5px;
  line-height:1.55;
  color:rgba(255,255,255,.75);
  margin:0 0 36px;
}
.hp-contact-ctas{display:flex;flex-direction:column;gap:14px;margin-bottom:60px;max-width:340px}
.btn-phone{
  background:var(--bronze);
  color:#fff;
  padding:18px 24px;
  border-radius:999px;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:16px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  text-decoration:none;
  transition:transform .2s,background-color .2s;
}
.btn-phone:hover{background:var(--bronze-dark);transform:translateY(-2px)}
.btn-wa{
  background:#25D366;
  color:#fff;
  padding:18px 24px;
  border-radius:999px;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:16px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  text-decoration:none;
  transition:transform .2s,background-color .2s;
}
.btn-wa:hover{background:#1FB856;transform:translateY(-2px)}

/* CALC WIZARD */
.hp-calc-wizard{
  background:var(--bg-dark-alt);
  border-radius:26px;
  padding:38px 28px;
  border:1px solid rgba(255,255,255,.06);
}
.hp-calc-wizard > h3{
  font-family:var(--font-display);
  font-weight:700;
  font-size:24px;
  color:#fff;
  margin:0 0 32px;
  letter-spacing:.02em;
}
.calc-stepper{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:0;
  margin-bottom:32px;
  position:relative;
}
.calc-stepper::before{
  content:"";
  position:absolute;
  top:18px;
  left:16.66%;right:16.66%;
  height:2px;
  background:rgba(255,255,255,.12);
  z-index:0;
}
.calc-stepper .step{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:10px;
  position:relative;
  z-index:1;
}
.calc-stepper .step .num{
  width:36px;height:36px;
  border-radius:50%;
  background:rgba(255,255,255,.08);
  color:rgba(255,255,255,.5);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:15px;
  transition:all .25s;
}
.calc-stepper .step.active .num,
.calc-stepper .step.completed .num{
  background:var(--bronze);
  color:#fff;
}
.calc-stepper .step .label{
  font-family:var(--font-heading);
  font-weight:700;
  font-size:10.5px;
  letter-spacing:1.5px;
  color:rgba(255,255,255,.4);
  text-transform:uppercase;
}
.calc-stepper .step.active .label,
.calc-stepper .step.completed .label{color:var(--bronze-light)}

.calc-pane{display:none}
.calc-pane.active{display:block;animation:calc-fade .3s ease}
@keyframes calc-fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.calc-pane h4{
  font-family:var(--font-display);
  font-weight:700;
  font-size:16px;
  color:#fff;
  margin:0 0 18px;
}
.calc-svc-btn{
  display:flex;
  width:100%;
  align-items:center;
  justify-content:space-between;
  background:rgba(255,255,255,.05);
  border:1.5px solid rgba(255,255,255,.12);
  color:#fff;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:15px;
  padding:18px 22px;
  border-radius:14px;
  margin-bottom:12px;
  cursor:pointer;
  transition:all .22s;
}
.calc-svc-btn:hover,
.calc-svc-btn.active{
  background:color-mix(in srgb, var(--bronze) 12%, transparent);
  border-color:var(--bronze);
  box-shadow:0 0 0 4px color-mix(in srgb, var(--bronze) 8%, transparent);
}
.calc-svc-btn::after{content:"→";color:var(--bronze)}

.calc-q-field{margin-bottom:24px}
.calc-q-field > label{
  display:block;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:14px;
  color:#fff;
  margin-bottom:10px;
}
.calc-q-field > label > small{font-weight:400;color:rgba(255,255,255,.5);font-family:var(--font-body)}
.calc-q-field .slider-wrap{display:flex;gap:14px;align-items:center}
.calc-q-field .slider-wrap input[type=range]{flex:1;accent-color:var(--bronze)}
.calc-q-field .slider-wrap .val{
  background:var(--bronze);
  color:#fff;
  border-radius:8px;
  padding:6px 12px;
  font-family:var(--font-heading);
  font-weight:800;
  font-size:15px;
  min-width:52px;
  text-align:center;
}
.calc-radio-row{display:flex;gap:10px;flex-wrap:wrap}
.calc-radio-row label{
  flex:1;
  min-width:130px;
  display:flex;align-items:center;justify-content:center;
  padding:14px 16px;
  background:rgba(255,255,255,.05);
  border:1.5px solid rgba(255,255,255,.12);
  border-radius:12px;
  color:#fff;
  font-family:var(--font-heading);
  font-weight:600;
  font-size:14px;
  cursor:pointer;
  transition:all .2s;
}
.calc-radio-row input[type=radio]{display:none}
.calc-radio-row input[type=radio]:checked + label,
.calc-radio-row label:has(input:checked){
  background:color-mix(in srgb, var(--bronze) 18%, transparent);
  border-color:var(--bronze);
  color:var(--bronze-light);
}
.calc-checks{display:flex;flex-direction:column;gap:10px}
.calc-checks label{
  display:flex;align-items:center;gap:12px;
  padding:12px 14px;
  background:rgba(255,255,255,.05);
  border:1.5px solid rgba(255,255,255,.1);
  border-radius:12px;
  font-size:14px;color:#fff;
  cursor:pointer;
  transition:all .2s;
}
.calc-checks input[type=checkbox]{accent-color:var(--bronze);width:18px;height:18px}
.calc-checks label:has(input:checked){background:color-mix(in srgb, var(--bronze) 12%, transparent);border-color:var(--bronze)}

.calc-result-box{
  background:color-mix(in srgb, var(--bronze) 10%, transparent);
  border:1px solid var(--bronze);
  border-radius:16px;
  padding:24px;
  text-align:center;
  margin-bottom:24px;
}
.calc-result-box .lbl{
  font-size:13px;
  letter-spacing:1.4px;
  text-transform:uppercase;
  color:var(--bronze-light);
  font-family:var(--font-heading);
  font-weight:700;
  margin-bottom:8px;
}
.calc-result-box .price{
  font-family:var(--font-heading);
  font-weight:800;
  font-size:42px;
  color:var(--bronze-light);
  letter-spacing:-.02em;
}
.calc-form-row{margin-bottom:14px}
.calc-form-row input,
.calc-form-row textarea{
  width:100%;
  padding:14px 16px;
  background:rgba(255,255,255,.06);
  border:1.5px solid rgba(255,255,255,.12);
  border-radius:12px;
  color:#fff;
  font-family:var(--font-body);
  font-size:15px;
}
.calc-form-row input::placeholder,
.calc-form-row textarea::placeholder{color:rgba(255,255,255,.45)}
.calc-form-row input:focus,
.calc-form-row textarea:focus{outline:none;border-color:var(--bronze)}
.calc-nav-row{display:flex;gap:10px;margin-top:24px}
.calc-nav-row .btn-back{
  background:transparent;color:#fff;
  border:1.5px solid rgba(255,255,255,.2);
  border-radius:999px;padding:14px 22px;
  font-family:var(--font-heading);font-weight:700;font-size:14px;
  cursor:pointer;
}
.calc-nav-row .btn-next,
.calc-nav-row .btn-submit{
  flex:1;
  background:var(--bronze);color:#fff;border:0;
  border-radius:999px;padding:15px 24px;
  font-family:var(--font-heading);font-weight:700;font-size:15px;
  cursor:pointer;
  transition:background-color .2s;
}
.calc-nav-row .btn-next:hover,
.calc-nav-row .btn-submit:hover{background:var(--bronze-dark)}

/* Mobile <600 - already mobile-first, just minor tweaks */
@media(max-width:600px){
  .hp-hero-content{padding:110px 0 70px}
  .hp-hero-content h1{font-size:42px}
  .hp-hero-content p{font-size:16px}
  .hp-hero-stats{gap:24px}
  .hp-hero-stats .stat strong{font-size:26px}
  .hp-services{padding:70px 0}
  .hp-services h2,.hp-portfolio h2,.hp-vakwerk h2,.hp-werkwijze h2,.hp-tips h2,.hp-contact h2{font-size:34px}
  .hp-svc-body{padding:24px 22px 28px}
  .hp-svc-body h3{font-size:22px}
  .hp-vakwerk{padding:70px 0}
  .hp-vakwerk h2{font-size:34px}
  .hp-werkwijze{padding:70px 0}
  .hp-werk-num{width:64px;height:64px;font-size:20px}
  .hp-tips-card{width:260px}
  .hp-tips{padding:70px 0 80px}
  .hp-contact{padding:70px 0}
  .hp-calc-wizard{padding:28px 20px}
}
@media(max-width:400px){
  .hp-hero-content h1{font-size:36px}
  .hp-services h2,.hp-portfolio h2,.hp-vakwerk h2,.hp-werkwijze h2,.hp-tips h2,.hp-contact h2{font-size:30px}
}

/* Desktop ≥901 - side-by-side adjustments */
@media (min-width:1024px){
  .hp-hero-content h1{font-size:64px}
  .hp-svc-grid{max-width:1100px;display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
  .hp-svc-card{display:flex;flex-direction:column}
  .hp-svc-card .hp-svc-body{flex:1;display:flex;flex-direction:column}
  .hp-svc-card .hp-svc-features{flex:1}
  .hp-port-grid{
    max-width:1180px;
    display:grid;
    grid-template-columns:repeat(4,1fr);
    grid-auto-rows:200px;
    gap:12px;
  }
  /* bento: blokken tegen elkaar, eerste groot, daarna afwisselend formaat.
     6n+k in plaats van vaste posities: het ritme herhaalt bij elk aantal
     kaarten, dus geen gaten bij 7, 12 of 30 (schaalregel CHECKLIST-VARIANT) */
  .hp-port-card{aspect-ratio:auto;height:100%}
  .hp-port-card:nth-child(6n+1){grid-column:span 2;grid-row:span 2}
  .hp-port-card:nth-child(6n+2){grid-column:span 2;grid-row:span 1}
  .hp-port-card:nth-child(6n+3){grid-column:span 1;grid-row:span 1}
  .hp-port-card:nth-child(6n+4){grid-column:span 1;grid-row:span 1}
  .hp-port-card:nth-child(6n+5){grid-column:span 2;grid-row:span 1}
  .hp-port-card:nth-child(6n+6){grid-column:span 2;grid-row:span 1}
  .hp-werk-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;max-width:1100px}
  .hp-services .container,.hp-portfolio .container,.hp-vakwerk .container,.hp-werkwijze .container,.hp-tips .container,.hp-contact .container{max-width:1200px;padding:0 32px}
}

/* ============================================================
   v39 - HERO SLIDER (3-slide cycling, replaces broken static hero)
   ============================================================ */
.hp-hero-slider{position:relative;height:100vh;min-height:560px;overflow:hidden;background:#000}
.hp-hero-slides{position:absolute;inset:0}
.hp-hs-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.2s ease;pointer-events:none}
.hp-hs-slide.is-active{opacity:1;pointer-events:auto;z-index:2}
.hp-hs-img{
  position:absolute;inset:0;
  background-size:cover;
  background-position:center;
  transform:scale(1.04);
  transition:transform 8s linear;
  will-change:transform;
  image-rendering:auto;
}
.hp-hs-slide.is-active .hp-hs-img{animation:hsZoom 7.5s cubic-bezier(.4,0,.2,1) forwards}
.hp-hs-overlay{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(0,0,0,.45) 0%,rgba(0,0,0,.15) 35%,rgba(0,0,0,.55) 100%);
}
.hp-hs-content{
  position:absolute;left:0;right:0;bottom:0;top:0;
  display:flex;flex-direction:column;justify-content:flex-end;
  padding:0 24px 110px;
  z-index:3;
  color:#fff;
  max-width:760px;
}
.hp-hs-eyebrow{
  display:inline-block;
  font-family:var(--font-heading);
  font-weight:700;font-size:11px;letter-spacing:3.5px;
  text-transform:uppercase;
  color:var(--bronze-light);
  margin-bottom:16px;
  align-self:flex-start;
}
.hp-hs-title{
  font-family:var(--font-kop);   /* [ref-regel: elke H1 de brede vette sans] */
  font-weight:700;font-size:calc(46px * var(--hero-scale,1));line-height:1.06;
  letter-spacing:.02em;
  color:#fff;margin:0 0 18px;
  text-shadow:0 2px 18px rgba(0,0,0,.45);
}
.hp-hs-title em{color:var(--bronze-light);font-style:normal;font-weight:700;display:block}
.hp-hs-desc{font-size:calc(16px * var(--hero-scale,1));line-height:1.5;color:rgba(255,255,255,.9);margin:0 0 24px;max-width:520px;text-shadow:0 2px 12px rgba(0,0,0,.5)}
.hp-hs-btn{
  display:inline-flex;align-items:center;gap:10px;
  align-self:flex-start;
  background:var(--bronze);color:#fff;
  padding:16px 28px;border-radius:999px;
  font-family:var(--font-heading);font-weight:700;font-size:15px;
  text-decoration:none;
  box-shadow:0 8px 24px var(--cta-shadow, rgba(0,0,0,.3));
  transition:transform .25s,box-shadow .25s,background-color .25s;
}
.hp-hs-btn:hover{background:var(--bronze-dark);transform:translateY(-2px);box-shadow:0 12px 30px var(--cta-shadow, rgba(0,0,0,.35))}
.hp-hs-btn svg{width:18px;height:18px;flex:none}

/* Dots */
.hp-hs-dots{
  position:absolute;left:0;right:0;bottom:32px;
  display:flex;justify-content:center;gap:12px;
  z-index:4;
}
.hp-hs-dot{
  background:transparent;border:0;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:8px;
  font-family:var(--font-heading);font-weight:700;font-size:10.5px;
  letter-spacing:1.5px;text-transform:uppercase;
  color:rgba(255,255,255,.55);
  padding:6px 4px;
  transition:color .25s;
}
.hp-hs-dot.is-active{color:#fff}
.hp-hs-dot::before{
  content:"";display:block;
  width:36px;height:2px;
  background:rgba(255,255,255,.3);
  border-radius:2px;
  transition:background-color .25s,width .25s;
}
.hp-hs-dot.is-active::before{background:var(--bronze);width:48px}
.hp-hs-dot span{display:block}

@media(max-width:600px){
  .hp-hs-content{padding:0 20px 100px}
  .hp-hs-title{font-size:38px}
  .hp-hs-desc{font-size:15px}
  .hp-hs-dots{bottom:24px;gap:10px}
  .hp-hs-dot::before{width:28px}
  .hp-hs-dot.is-active::before{width:38px}
}

/* ============================================================
   v39 - Google logo + reviews layout cleanup
   ============================================================ */
.hpgr-google{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.hpgr-logo{flex:none;width:36px;height:36px}
.hpgr-google-text{display:flex;flex-direction:column;gap:2px}
.hpgr-rating{display:flex;align-items:baseline;gap:8px}
.hpgr-rating strong{font-family:var(--font-heading);font-weight:800;font-size:28px;color:var(--brand-dark);letter-spacing:-.01em;line-height:1}
.hpgr-stars{color:#FBBC04;font-size:18px;letter-spacing:1px;line-height:1}
.hpgr-count{font-size:13.5px;color:var(--text-muted)}

/* Reviews carousel - works with v38 wrapper */
.hp-greviews{padding:80px 0;background:var(--bg-card)}
.hpgr-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;flex-wrap:wrap;gap:16px}
.hpgr-write{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font-heading);font-weight:700;font-size:13.5px;
  color:#1a73e8;text-decoration:none;
  padding:10px 18px;border:1.5px solid rgba(26,115,232,.3);
  border-radius:999px;transition:all .2s;
}
.hpgr-write:hover{background:rgba(26,115,232,.08);border-color:#1a73e8}
.hpgr-track{
  display:flex;gap:14px;overflow-x:auto;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  padding:8px 4px 28px;
  scrollbar-width:none;
  scroll-padding:12vw;
}
.hpgr-track::-webkit-scrollbar{display:none}
.hpgr-card{
  flex:0 0 320px;max-width:320px;
  background:#fff;border-radius:18px;padding:22px;
  box-shadow:0 6px 22px rgba(37,42,45,.06);
  border:1px solid rgba(37,42,45,.04);
  scroll-snap-align:center;
  display:flex;flex-direction:column;gap:14px;
  position:relative;
}
.hpgr-card-head{display:flex;align-items:center;gap:12px}
.hpgr-avatar{
  width:42px;height:42px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-heading);font-weight:700;font-size:18px;
  color:#fff;flex:none;
}
.hpgr-name-row{flex:1;display:flex;flex-direction:column;gap:2px}
.hpgr-name{font-family:var(--font-heading);font-weight:700;font-size:15px;color:var(--brand-dark)}
.hpgr-meta{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-muted)}
.hpgr-card-stars{color:#FBBC04;font-size:13px;letter-spacing:1px}
.hpgr-google-mark{
  position:absolute;top:18px;right:18px;
  width:22px;height:22px;flex:none;
}
.hpgr-tag{
  display:inline-block;align-self:flex-start;
  font-size:12px;padding:4px 12px;
  background:rgba(26,115,232,.08);color:#1a73e8;
  border-radius:999px;font-weight:500;
  border:1.5px solid rgba(26,115,232,.55);
}
.hpgr-text{font-size:14px;line-height:1.55;color:var(--text-soft);margin:0}
.hpgr-loading{flex:1;text-align:center;padding:40px 20px;color:var(--text-muted);font-size:14px}
.hpgr-allcta{
  display:inline-block;
  font-family:var(--font-heading);font-weight:700;font-size:14px;
  color:#1a73e8;text-decoration:none;
  margin-top:8px;
}

@media(max-width:600px){
  .hp-greviews{padding:60px 0}
  .hp-greviews .container{padding-left:0;padding-right:0;max-width:100%}
  .hpgr-head{padding:0 20px;flex-direction:column;align-items:flex-start}
  .hpgr-allcta{margin:0 20px}
  .hpgr-card{flex-basis:88vw;max-width:88vw;padding:20px;scroll-snap-align:start}
  .hpgr-track{gap:14px;padding:8px 16px 24px;scroll-padding-left:16px;scroll-padding-right:16px}
}

/* ============================================================
   v42 - Hero slider fixes + faster marquee
   ============================================================ */

/* Defensive: prevent any horizontal page scroll */
html,body{overflow-x:hidden;max-width:100vw}

/* Rebuild hero content positioning - was getting clipped left of viewport */
.hp-hs-content{
  position:absolute !important;
  left:0 !important;
  right:0 !important;
  top:0 !important;
  bottom:0 !important;
  margin:0 !important;
  max-width:none !important;
  width:100% !important;
  padding:80px 24px 120px !important;
  box-sizing:border-box;
  display:flex !important;
  flex-direction:column;
  justify-content:flex-end;
  z-index:3;
  color:#fff;
}
.hp-hs-content > *{max-width:680px}

/* Hero stats - clean transparent text on dark photo */
.hp-hs-stats{
  display:flex;
  gap:32px;
  margin-top:32px;
  align-self:flex-start;
  align-items:flex-start;
  flex-wrap:wrap;
}
.hp-hs-stat{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.hp-hs-stat strong{
  font-family:var(--font-heading);
  font-weight:800;
  font-size:26px;
  line-height:1;
  color:#fff;
  letter-spacing:-.01em;
  text-shadow:0 2px 14px rgba(0,0,0,.5);
}
.hp-hs-stat span{
  font-size:12.5px;
  color:rgba(255,255,255,.78);
  letter-spacing:.4px;
  text-shadow:0 1px 6px rgba(0,0,0,.55);
  white-space:nowrap;
}

@media(max-width:600px){
  .hp-hs-content{padding:60px 20px 110px !important}
  .hp-hs-stats{gap:24px;margin-top:24px}
  .hp-hs-stat strong{font-size:22px}
  .hp-hs-stat span{font-size:11.5px}
}
@media(max-width:380px){
  .hp-hs-stats{gap:18px}
  .hp-hs-stat strong{font-size:20px}
}

/* Tips marquee - sneller (was 40s, was te langzaam op mobiel) */
.hp-tips-track{animation-duration:22s !important}
@media (min-width:1024px){
  .hp-tips-track{animation-duration:32s !important}
}

/* ============================================================
   v43 - HARD FIX hero positioning + aggressive overflow prevention
   ============================================================ */

/* Lock viewport - no horizontal scroll ANYWHERE */
html{overflow-x:hidden !important;max-width:100%}
body{overflow-x:hidden !important;max-width:100vw;position:relative}

/* Every section must contain its width */
section{max-width:100vw;overflow-x:clip}

/* HERO - drop absolute positioning, use flexbox */
.hp-hero-slider{
  position:relative;
  height:100vh;min-height:560px;
  overflow:hidden;
  background:#000;
  max-width:100vw;
  width:100%;
}
.hp-hero-slides{position:absolute;inset:0;width:100%;max-width:100vw;overflow:hidden}
.hp-hs-slide{
  position:absolute !important;
  inset:0 !important;
  left:0 !important;right:0 !important;
  width:100% !important;max-width:100vw !important;
  margin:0 !important;
  opacity:0;
  transition:opacity 1.2s ease;
  pointer-events:none;
  /* flexbox to push content to bottom */
  display:flex !important;
  flex-direction:column !important;
  justify-content:flex-end !important;
  overflow:hidden;
}
.hp-hs-slide.is-active{opacity:1;pointer-events:auto;z-index:2}

/* HERO CONTENT - NORMAL FLOW now, not absolute. Sits at bottom via parent flex. */
.hp-hs-content{
  position:relative !important;
  inset:auto !important;
  left:auto !important;right:auto !important;top:auto !important;bottom:auto !important;
  width:100% !important;max-width:100vw !important;
  margin:0 !important;
  padding:0 24px 110px 24px !important;
  box-sizing:border-box !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-start !important;
  z-index:3;
  color:#fff;
}
.hp-hs-content > *{max-width:100%;box-sizing:border-box}

/* Eyebrow - wrap if too long, no overflow */
.hp-hs-eyebrow{
  display:inline-block;
  max-width:100%;
  white-space:normal;
  word-break:keep-all;
}

/* Title + description constrained to readable width */
.hp-hs-title,.hp-hs-desc{max-width:520px}

@media(max-width:600px){
  .hp-hs-content{padding:0 20px 110px 20px !important}
  .hp-hs-title{font-size:calc(33px * var(--hero-scale,1)) !important}
  .hp-hs-eyebrow{font-size:10.5px !important;letter-spacing:2.5px !important}
}
@media(max-width:380px){
  .hp-hs-title{font-size:calc(30px * var(--hero-scale,1)) !important}
}

/* ============================================================
   v44 - SURGICAL FIX: kill leftover transform that shifts hero content
   .hp-hs-content had a transform:translateX(-50%) from v32 still alive,
   that none of the v38-v43 overrides explicitly reset.
   ============================================================ */
.hp-hs-content{transform:none !important}

/* ============================================================
   v45 - Kill leftover transform on .hp-hs-dots (zelfde bug als v44)
   ============================================================ */
.hp-hs-dots{transform:none !important}

/* ============================================================
   v46 - Three additions per user request
   ============================================================ */

/* --- 1. Mobile menu phone pill (replaces Contact link) --- */
.mobile-menu-phone-item{border-bottom:none !important;padding:8px 0 !important}
.mobile-menu li.mobile-menu-phone-item{border-bottom:none !important}
.mobile-menu-phone{
  display:inline-flex !important;
  align-items:center;
  gap:10px;
  background:var(--bronze) !important;
  color:#fff !important;
  padding:14px 22px !important;
  border-radius:999px !important;
  font-family:var(--font-heading) !important;
  font-weight:700 !important;
  font-size:16px !important;
  text-decoration:none !important;
  box-shadow:0 6px 18px color-mix(in srgb, var(--bronze) 28%, transparent);
  transition:transform .2s,background-color .2s,box-shadow .2s;
}
.mobile-menu-phone:hover,.mobile-menu-phone:focus{
  background:var(--bronze-dark) !important;
  transform:translateY(-1px);
  box-shadow:0 10px 22px color-mix(in srgb, var(--bronze) 36%, transparent);
}
.mobile-menu-phone svg{flex:none;width:18px;height:18px}

/* --- 2. Burger button: merkkleur floating circle, white lines --- */
.nav-burger{
  background:var(--bronze) !important;
  border-radius:50% !important;
  width:44px !important;
  height:44px !important;
  box-shadow:0 6px 16px color-mix(in srgb, var(--bronze) 32%, transparent) !important;
  border:0 !important;
}
.nav-burger:hover,
.nav-burger:focus,
.nav-burger.open{
  background:var(--bronze) !important; /* stays merkkleur on click/open */
}
.nav-burger span,
.nav-burger span::before,
.nav-burger span::after{
  background:#fff !important;
}
.nav-burger.open span{background:transparent !important}
.nav-burger.open span::before,
.nav-burger.open span::after{background:#fff !important}

/* --- 3. Lang switcher: single flag, no dropdown --- */
.lang{position:fixed;bottom:24px;left:24px;z-index:90}
.lang-btn{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:0 !important;
  width:46px !important;
  height:46px !important;
  padding:0 !important;
  border-radius:50% !important;
  background:rgba(255,255,255,.96) !important;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  box-shadow:0 8px 20px rgba(37,42,45,.16) !important;
  border:0;
  font-size:22px !important;
  line-height:1 !important;
  cursor:pointer;
  transition:transform .2s,box-shadow .2s;
}
.lang-btn:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(37,42,45,.22) !important}
.lang-btn .lang-flag-emoji{font-size:22px;line-height:1}
.lang-btn .lang-code,
.lang-btn .lang-arrow{display:none !important}
.lang-dropdown{display:none !important} /* dropdown disabled - direct toggle */

/* ============================================================
   v48 - Homepage restructure CSS
   ============================================================ */

/* 1. Fix hero title: geen hyphenation/auto-break meer */
.hp-hs-title{
  hyphens:manual !important;
  -webkit-hyphens:manual !important;
  word-break:normal !important;
  overflow-wrap:normal !important;
}
.hp-hs-desc{
  hyphens:manual !important;
  -webkit-hyphens:manual !important;
}
/* Header (hero) full-width op desktop - geen max-width constraint op de slider zelf */
.hp-hero-slider{width:100% !important;max-width:100vw !important}

/* Op desktop: laat hero-content op natuurlijke breedte staan */
@media (min-width:1024px){
  .hp-hs-title{max-width:760px !important;font-size:calc(clamp(28px, 2.78vw, 44px) * var(--hero-scale,1)) !important}
  /* [ref-kop is 60px, maar hun drie regels zijn kort ("Shake hands. / Build
     trust. / Repeat."). Onze zin is veel langer: op 60px breekt hij over vijf
     regels en botst met de projectkaart. 3,06vw (44px@1440) houdt de kop op
     DRIE regels binnen de ref-kolom van 446 en de knop op de ref-hoogte] */
  .hp-hs-desc{max-width:560px !important;font-size:calc(clamp(15px, 1.25vw, 20px) * var(--hero-scale,1)) !important} /* [ref: 18/1440 = 1.25vw] */
  .hp-hs-content > *{max-width:none !important}
  .hp-hs-content{max-width:1200px !important;margin:0 auto !important;padding:0 48px 130px 48px !important}
}

/* 2. OVER ONS - photo left, text right op desktop */
.hp-overons{padding:90px 0;background:var(--bg)}
.hp-overons .container{display:flex;flex-direction:column;gap:32px;align-items:center}
.hp-overons-photo{
  width:100%;
  max-width:540px;
  aspect-ratio:5/6;
  border-radius:24px;
  overflow:hidden;
  background:var(--bg-cream);
  box-shadow:0 18px 40px rgba(37,42,45,.08);
}
.hp-overons-photo img{width:100%;height:100%;object-fit:cover;object-position:center}
.hp-overons-text{max-width:540px;width:100%}
.hp-overons-text h2{
  font-family:var(--font-display);
  font-weight:700;
  font-size:38px;
  letter-spacing:.02em;
  line-height:1.1;
  margin:0 0 22px;
  color:var(--brand-dark);
}
.hp-overons-text .hp-overons-lead{
  font-size:17px;
  line-height:1.55;
  color:var(--text-soft);
  margin:0 0 18px;
}
.hp-overons-text .hp-overons-lead strong{color:var(--brand-dark);font-weight:700}
.hp-overons-text p{font-size:15.5px;line-height:1.6;color:var(--text-soft);margin:0 0 28px}

@media (min-width:1024px){
  .hp-overons{padding:120px 0}
  .hp-overons .container{
    flex-direction:row;
    gap:80px;
    align-items:center;
    max-width:1200px;
    padding:0 32px;
  }
  .hp-overons-photo{flex:0 0 46%;max-width:none}
  .hp-overons-text{flex:1;max-width:none}
  .hp-overons-text h2{font-size:46px}
}

/* 3. WERKWIJZE - desktop verbindingslijnen tussen circles */
@media (min-width:1024px){
  .hp-werk-steps{
    display:grid !important;
    grid-template-columns:repeat(4,1fr) !important;
    gap:0 !important;
    max-width:1100px !important;
    margin:0 auto 50px !important;
    position:relative;
  }
  .hp-werk-step{
    position:relative;
    padding:0 16px;
  }
  .hp-werk-step:not(:last-child)::after{
    content:"";
    position:absolute;
    top:39px;            /* werk-num is 78px tall → center at 39px */
    left:calc(50% + 50px);
    right:calc(-50% + 50px);
    height:2px;
    background:var(--bronze);
    opacity:.42;
    z-index:0;
  }
  .hp-werk-num{
    position:relative;
    z-index:1;
    background:var(--bg);   /* hide the line behind the circle */
  }
}

/* ============================================================
   v55 - OVERLAY: heavy left, clear right, transition mid-viewport
   ============================================================ */

/* 1. NAV ITEMS must never break across lines.
   The global rule on line 9 sets overflow-wrap:break-word + hyphens:auto
   on every <a> and <li> - useful for long URLs in body text, but it
   breaks "Home" into "Hom-e" when the nav gets tight. Override only
   for the nav links. */
.nav-links a,
.nav-links li{
  hyphens:none !important;
  -webkit-hyphens:none !important;
  overflow-wrap:normal !important;
  word-wrap:normal !important;
  word-break:keep-all !important;
  white-space:nowrap !important;
}

/* 2. KILL THE DUPLICATE PHONE on desktop.
   <li class="mobile-menu-phone-item"> lives inside <ul class="nav-links">
   on every page for HTML symmetry with the .mobile-menu aside, but on
   desktop it renders alongside .nav-phone in .nav-cta - two identical
   "085 060 2661" pills next to each other. Hide the .nav-links copy.
   On mobile, .nav-links itself is display:none (see line 457) so this
   rule is a no-op there; the phone pill in the .mobile-menu aside is
   untouched and keeps working in the burger menu. */
.nav-links .mobile-menu-phone-item{display:none !important}

/* 3. HERO must fill the entire viewport - desktop AND mobile,
   with absolutely no strip of the next section peeking below.
   Three earlier rules were in the way:
     - line ~610: max-height:880px (capped hero on tall monitors)
                  margin-top:-80px (bottom edge 80px short of viewport)
     - line ~674: height:90vh on ≤600px (10% strip visible on phones)
   Plus the iOS Safari URL-bar quirk: 100vh on iOS = viewport WITHOUT
   the bar, so when the bar is visible there's a strip below the hero.
   Fix: force 100vh as fallback, then 100dvh on top for browsers that
   support it (Safari 15.4+, Chrome 108+, FF 101+) - dvh follows the
   URL bar dynamically, so the hero always equals the visible viewport.
   Older browsers ignore the second line and keep the 100vh fallback. */
.hp-hero-slider{
  margin-top:0 !important;
  height:calc(37.3vw + 240px) !important;
  max-height:none !important;
  /* [ref-hoogte volgt de BREEDTE, niet de schermhoogte: 717@1280, 777@1440,
     956@1920. De schermvullende variant (besluit 11-08) is teruggedraaid op
     verzoek Dikkie 20-08: de hero krijgt exact het ref-formaat] */
}

/* 4. HERO TEXT VERTICALLY CENTERED on desktop.
   Parent .hp-hs-slide has justify-content:flex-end (line 2490) which
   stacks .hp-hs-content at the BOTTOM of the slide - that's why the
   eyebrow + title + button + stats currently sit at the bottom-left.
   Reference design has them in the LEFT-MIDDLE. Override the parent's
   flex anchor on desktop only. Reduce the heavy padding-bottom that
   was reserving space for the dots-nav (no longer needed when content
   is centered). Mobile keeps its bottom-anchored pattern - on small
   screens content + dots fit better stacked from the bottom. */
@media (min-width:1024px){
  .hp-hs-slide{justify-content:center !important}
  .hp-hs-content{
    padding-top:60px !important;
    padding-bottom:60px !important;
  }
}

/* 5. HERO OVERLAY - heavy left, clear right, sharp transition mid.
   Reference matches at 0.80 max alpha on left with transition 50-78%. */
@media (min-width:1024px){
  .hp-hs-overlay{
    background:linear-gradient(
      100deg,
      rgba(0,0,0,0.80) 0%,
      rgba(0,0,0,0.70) 35%,
      rgba(0,0,0,0.40) 55%,
      rgba(0,0,0,0.12) 78%,
      rgba(0,0,0,0) 100%
    ) !important;
  }
}

/* ============================================================
   v58 - CALCULATOR/CTA SECTION: dark → light theme
   Flip .hp-contact (and its calc wizard) from the dark palette to
   the cream/light palette, keeping the visual structure intact.
   Footer stays dark (separate selector, not touched).
   ============================================================ */

/* Section background + base text */
.hp-contact{
  background:var(--bg) !important;
  color:var(--brand-dark) !important;
}
.hp-contact h2,
.hp-calc-wizard > h3,
.calc-pane h4,
.calc-q-field > label,
.calc-svc-btn,
.calc-radio-row label,
.calc-checks label{color:var(--brand-dark) !important}
.hp-contact > .container > p{color:var(--text-soft) !important}
.calc-q-field > label > small{color:rgba(37,42,45,.55) !important}

/* Wizard card: elevated lighter surface on cream, with subtle shadow */
.hp-calc-wizard{
  background:var(--bg-card) !important;
  border:1px solid rgba(37,42,45,.08) !important;
  box-shadow:0 18px 40px rgba(37,42,45,.06);
}

/* Stepper line + inactive step circles */
.calc-stepper::before{background:rgba(37,42,45,.12) !important}
.calc-stepper .step .num{
  background:rgba(37,42,45,.06) !important;
  color:rgba(37,42,45,.55) !important;
}
.calc-stepper .step .label{color:rgba(37,42,45,.5) !important}
.calc-stepper .step.active .label,
.calc-stepper .step.completed .label{color:var(--bronze-dark) !important}

/* Service/radio/check tiles inside the wizard */
.calc-svc-btn,
.calc-radio-row label,
.calc-checks label{
  background:rgba(37,42,45,.03) !important;
  border-color:rgba(37,42,45,.12) !important;
}
.calc-svc-btn:hover,
.calc-svc-btn.active,
.calc-radio-row input[type=radio]:checked + label,
.calc-radio-row label:has(input:checked),
.calc-checks label:has(input:checked){
  background:color-mix(in srgb, var(--bronze) 12%, transparent) !important;
  border-color:var(--bronze) !important;
  color:var(--brand-dark) !important;
}

/* Form inputs inside wizard */
.hp-calc-wizard input[type=text],
.hp-calc-wizard input[type=email],
.hp-calc-wizard input[type=tel],
.hp-calc-wizard textarea{
  background:#fff !important;
  border-color:rgba(37,42,45,.15) !important;
  color:var(--brand-dark) !important;
}
.hp-calc-wizard input::placeholder,
.hp-calc-wizard textarea::placeholder{color:rgba(37,42,45,.4) !important}

/* ============================================================
   v59 - REVIEWS MARQUEE + HOVER POLISH + WA ICON
   ============================================================ */

/* 1. GOOGLE REVIEWS - auto-scroll marquee, mirrors the tips pattern.
   The JS now renders 2× cards (visible + aria-hidden duplicate) so
   the track loops seamlessly when translateX hits -50%. Hover pauses. */
.hpgr-marquee{
  position:relative;
  overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);
}
.hpgr-track{
  display:flex !important;
  gap:18px !important;
  width:max-content !important;
  overflow:visible !important;
  scroll-snap-type:none !important;
  padding:8px 4px 28px !important;
  animation:hpgr-marquee 60s linear infinite;
}
.hpgr-track:hover{animation-play-state:paused}
.hpgr-card{scroll-snap-align:none !important}
@keyframes hpgr-marquee{
  0%{transform:translateX(0)}
  100%{transform:translateX(-50%)}
}
@media(max-width:768px){
  .hpgr-track{animation-duration:45s}
}
@media (prefers-reduced-motion: reduce){
  .hpgr-track{animation:none !important;transform:none !important}
}

/* 2. WERKWIJZE NUMBERED CIRCLES - merkkleur hover state.
   Default: cream circle with bronze border + bronze number.
   Hover: circle fills with bronze, number turns white, slight lift
   and a glow. The "active" state during scroll-into-view also gets
   highlighted via .stagger transitions already. */
.hp-werk-step{cursor:default;text-align:center;align-items:center}
.hp-werk-step h3,.hp-werk-step p{text-align:center;width:100%}
.hp-werk-step:hover .hp-werk-num{
  background:var(--bronze) !important;
  border-color:var(--bronze) !important;
  color:#fff !important;
  transform:scale(1.08);
  box-shadow:0 10px 28px color-mix(in srgb, var(--bronze) 42%, transparent),0 0 0 8px color-mix(in srgb, var(--bronze) 10%, transparent);
}
.hp-werk-num{
  transition:background-color .3s var(--ease),color .3s var(--ease),
             transform .3s var(--ease),box-shadow .3s var(--ease),
             border-color .3s var(--ease) !important;
}

/* 3. CARD/TILE HOVER LIFTS - make them "come alive" more on hover.
   Existing rules used translateY(-4px); bumping to -8px with a softer
   bronze-tinted shadow for more presence. Tips/reviews cards are inside
   marquees and intentionally LEFT OUT - a hover-lift there would fight
   the auto-scroll. */
.hp-port-card{transition:transform .35s var(--ease),box-shadow .35s var(--ease) !important}
.hp-port-card:hover{
  transform:translateY(-6px) !important;
  box-shadow:0 22px 50px rgba(37,42,45,.18),0 4px 12px rgba(37,42,45,.08);
  z-index:2;
}
.hp-port-img{transition:transform .8s var(--ease)}
.hp-port-card:hover .hp-port-img{transform:scale(1.08)}
.hp-port-card:hover .hp-port-tag{transform:translateY(-2px)}
.hp-port-tag{transition:transform .35s var(--ease)}
.hp-svc-card{transition:transform .35s var(--ease),box-shadow .35s var(--ease) !important}
.hp-svc-card:hover{
  transform:translateY(-8px) !important;
  box-shadow:0 22px 50px rgba(37,42,45,.14),0 4px 12px rgba(37,42,45,.06) !important;
}
.project-card:hover{
  transform:translateY(-8px) !important;
  box-shadow:0 22px 50px rgba(37,42,45,.18) !important;
}

/* DIENSTEN - bij hover op de kaart springen de vinkjes van boven naar beneden in */
@keyframes vinkje-drop{
  0%{opacity:0;transform:translateY(-14px) scale(.6)}
  60%{opacity:1;transform:translateY(4px) scale(1.12)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
.hp-svc-features li::before{transform-origin:center}
.hp-svc-card:hover .hp-svc-features li::before{
  animation:vinkje-drop .5s var(--ease) both;
}
.hp-svc-card:hover .hp-svc-features li:nth-child(1)::before{animation-delay:.00s}
.hp-svc-card:hover .hp-svc-features li:nth-child(2)::before{animation-delay:.09s}
.hp-svc-card:hover .hp-svc-features li:nth-child(3)::before{animation-delay:.18s}
.hp-svc-card:hover .hp-svc-features li:nth-child(4)::before{animation-delay:.27s}
.hp-svc-card:hover .hp-svc-features li:nth-child(5)::before{animation-delay:.36s}
.hp-svc-card:hover .hp-svc-features li:nth-child(6)::before{animation-delay:.45s}
@media (prefers-reduced-motion: reduce){
  .hp-svc-card:hover .hp-svc-features li::before{animation:none}
}

/* ============================================================
   v60 - STATS ROW: anchor left / center / right + counter
   ============================================================ */

/* "Wat maakt ons uniek" stats: three items spread across the row.
   Grid columns are already repeat(3,1fr); each cell's content gets
   anchored left/center/right so the trio reads as left-middle-right.
   The count-up animation is driven by JS (data-count) - CSS doesn't
   need to do anything special, just keep tabular-figures so digits
   don't jitter horizontally while the value increments. */
.hp-vak-stats > div:nth-child(1){align-items:center;text-align:center}
.hp-vak-stats > div:nth-child(2){align-items:center;text-align:center}
.hp-vak-stats > div:nth-child(3){align-items:center;text-align:center}

.hp-vak-stats strong{
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum";
}

/* ============================================================
   v62 - HAKOB FEEDBACK ROUND: polish, tags, vinkjes, active page
   ============================================================ */

/* "Populairste keuze" tag - merkkleur accent bg, black text per {{EIGENAAR}} feedback */
.hp-svc-badge{
  background:var(--bronze) !important;
  color:var(--brand-dark) !important;
  font-size:10px !important;
  letter-spacing:1.2px !important;
  padding:6px 12px !important;
  box-shadow:0 2px 8px color-mix(in srgb, var(--bronze) 32%, transparent) !important;
  border:none !important;
}

/* Service-card "vinkjes" - were 22px filled bronze circles ("in your face").
   Slim down: 18px circle, lighter background tint, smaller check icon. */
.hp-svc-features li::before{
  width:18px !important;
  height:18px !important;
  background-color:color-mix(in srgb, var(--bronze) 10%, transparent) !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' viewBox='0 0 24 24' fill='none' stroke='%23C5A55A' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") !important;
}
.hp-svc-features li{font-size:14.5px !important;gap:12px !important}

/* Active page indicator - current page link in nav goes merkkleur.
   JS in main.js adds .is-active to the matching <a>. */
.nav-links a.is-active,
.mobile-menu a.is-active{
  color:var(--bronze) !important;
  font-weight:700 !important;
}
.nav-links a.is-active{position:relative}
.nav-links a.is-active::after{
  content:"";
  position:absolute;
  left:50%;transform:translateX(-50%);
  bottom:-6px;
  width:18px;height:2px;
  background:var(--bronze);
  border-radius:2px;
}

/* ============================================================
   v62 PHASE 2 - HEADER / NAV OVERHAUL
   ============================================================ */

/* Header background: top = fully transparent (hero peek-through);
   on scroll = anthracite semi-transparent bar (NO white). */
.nav.scrolled{
  background:rgba(37,42,45,.82) !important;
  backdrop-filter:saturate(140%) blur(14px) !important;
  -webkit-backdrop-filter:saturate(140%) blur(14px) !important;
  border-bottom:1px solid rgba(255,255,255,.06) !important;
  box-shadow:0 4px 20px rgba(0,0,0,.18) !important;
}
/* Logo stays the WHITE variant on both states (anthracite is dark) */
.nav.scrolled .nav-logo .logo-on-light{display:none !important}
.nav.scrolled .nav-logo .logo-on-dark{display:block !important}
/* Nav text + phone stay light on both states */
.nav-links a{color:rgba(255,255,255,.92) !important}
.nav-links a:hover{color:var(--bronze-light) !important}
.nav-phone{color:rgba(255,255,255,.92) !important}
.nav-phone:hover{color:var(--bronze) !important}

/* Mobile logo a subtle slag bigger */
@media (max-width:768px){
  .nav-logo img{height:36px !important}
}

/* Burger button - slightly smaller, semi-transparent bronze bg
   (matching the vinkjes' subtle tint). */
.nav-burger{
  width:40px !important;
  height:40px !important;
  background:color-mix(in srgb, var(--bronze) 18%, transparent) !important;
  border:1px solid color-mix(in srgb, var(--bronze) 35%, transparent) !important;
  backdrop-filter:blur(6px);
}
.nav-burger:hover,.nav-burger.open{
  background:color-mix(in srgb, var(--bronze) 30%, transparent) !important;
}
.nav-burger span,
.nav-burger span::before,
.nav-burger span::after{background:#fff !important}

/* Language switcher in nav - small semi-transparent circle, flag only.
   Hide the "NL"/"GB" text - flag is self-explanatory. */
.nav-lang{display:flex;align-items:center}
.nav-lang-btn{
  width:40px;height:40px;
  border-radius:50% !important;
  background:rgba(255,255,255,.12) !important;
  border:1px solid rgba(255,255,255,.20) !important;
  backdrop-filter:blur(6px);
  display:inline-flex;align-items:center;justify-content:center;
  padding:0 !important;
  overflow:hidden;
}
.nav-lang-btn:hover{background:rgba(255,255,255,.20) !important}
.nav-lang-code{display:none !important}
.nav-flag{width:18px !important;height:auto !important;border-radius:2px}

/* Hide the floating bottom-left .lang switcher - its logic still runs
   in the background (proxied by .nav-lang-btn click).                  */
.lang{display:none !important}

/* ===== DROPDOWN SUBMENUS ===== */

/* Desktop: hover-show dropdown panel */
.nav-links .has-submenu{position:relative}
.nav-links .submenu{
  position:absolute;
  top:calc(100% + 14px);
  left:50%;
  transform:translateX(-50%) translateY(-6px);
  min-width:230px;
  background:rgba(37,42,45,.96);
  backdrop-filter:saturate(140%) blur(18px);
  -webkit-backdrop-filter:saturate(140%) blur(18px);
  border:1px solid rgba(255,255,255,.08);
  border-radius:14px;
  padding:10px 0;
  list-style:none;
  margin:0;
  box-shadow:0 16px 40px rgba(0,0,0,.35);
  opacity:0;
  visibility:hidden;
  transition:opacity .2s ease,transform .2s ease,visibility .2s ease;
  z-index:120;
}
.nav-links .has-submenu:hover > .submenu,
.nav-links .has-submenu:focus-within > .submenu{
  opacity:1;
  visibility:visible;
  transform:translateX(-50%) translateY(0);
}
.nav-links .submenu li{margin:0}
.nav-links .submenu a{
  display:block;
  padding:10px 20px;
  font-size:14.5px;
  font-weight:500 !important;
  color:rgba(255,255,255,.88) !important;
  white-space:nowrap;
}
.nav-links .submenu a:hover{
  background:color-mix(in srgb, var(--bronze) 18%, transparent) !important;
  color:var(--bronze-light) !important;
}
.nav-links .submenu a::after{display:none !important}

/* Caret indicator next to dropdown parents */
/* Uitlijning: ALLE menu-items op exact dezelfde regel en hoogte,
   met of zonder plusje. Plus is nu een aparte toggleknop. */
.nav-links{ align-items:center; }
.nav-links > li{ display:flex; align-items:center; gap:10px; }  /* [ref: ruimte tussen label en plusje] */
.nav-links > li > a{ display:inline-flex; align-items:center; line-height:1.1; padding:6px 0; white-space:nowrap; }
.nav-links .has-submenu > a::before{ content:none; }

/* Mobile burger menu: submenu items shown nested, slightly indented */
.mobile-menu .has-submenu > a{font-weight:700}
.mobile-menu .submenu{
  list-style:none;
  padding:0 0 0 16px;
  margin:8px 0 12px;
  border-left:2px solid color-mix(in srgb, var(--bronze) 40%, transparent);
}
.mobile-menu .submenu li{margin:0}
.mobile-menu .submenu a{
  font-size:15px !important;
  font-weight:500 !important;
  padding:8px 0 !important;
  opacity:.85;
}

/* ============================================================
   v62 PHASE 3 - STATIC HERO CONTENT OVERLAY
   ============================================================ */

/* The new static-content overlay sits ABOVE the rotating slides.
   Reuses the visual styling of .hp-hs-content (eyebrow/title/desc/btn/stats),
   but is rendered ONCE and not tied to slide-active animations. */
.hp-hs-static-content{
  position:absolute;
  left:50%;
  top:44%;
  bottom:auto;
  transform:translate(-50%,-50%);
  width:100%;
  max-width:var(--container);
  padding:0 24px;
  color:var(--cream);
  z-index:3;
  pointer-events:none; /* let dot-clicks pass through to images */
}
.hp-hs-static-content > *{pointer-events:auto}

/* Reuse the inner element styles (eyebrow/title/desc/btn/stats already
   defined for .hp-hs-content children - they cascade by class, not by
   parent - so .hp-hs-eyebrow inside .hp-hs-static-content also styles). */

/* HERO ENTREE - elke regel komt zin-voor-zin smooth van LINKS binnen
   bij page-load (refresh / eerste bezoek). Vervangt de oude "direct
   zichtbaar"-override zodat de animatie echt speelt. */
.hp-hs-static-content .hp-hs-eyebrow,
.hp-hs-static-content .hp-hs-title,
.hp-hs-static-content .hp-hs-desc,
.hp-hs-static-content .hp-hs-stats{
  opacity:0;
  transform:translateX(-60px);
  animation:hero-line-in 1s cubic-bezier(.19,1,.22,1) both;
}
@keyframes hero-line-in{
  from{opacity:0;transform:translateX(-60px)}
  to{opacity:1;transform:translateX(0)}
}
.hp-hs-static-content .hp-hs-eyebrow{animation-delay:.35s}
.hp-hs-static-content .hp-hs-title{animation-delay:.55s}
.hp-hs-static-content .hp-hs-desc{animation-delay:.78s}
.hp-hs-static-content .hp-hs-btn{animation:none;opacity:1;transform:none}
.hp-hs-static-content .hp-hs-stats{animation-delay:1.2s}
@media (prefers-reduced-motion: reduce){
  .hp-hs-static-content .hp-hs-eyebrow,
  .hp-hs-static-content .hp-hs-title,
  .hp-hs-static-content .hp-hs-desc,
  .hp-hs-static-content .hp-hs-btn,
  .hp-hs-static-content .hp-hs-stats{
    opacity:1;transform:none;animation:none;
  }
}

/* Darker overlay on hero photos (per {{EIGENAAR}} feedback: text moet beter
   leesbaar zijn, niet wegvallen tegen de foto). Tighten the gradient. */
.hp-hero-static .hp-hs-overlay{
  background:linear-gradient(100deg,
    rgba(0,0,0,0.88) 0%,
    rgba(0,0,0,0.78) 35%,
    rgba(0,0,0,0.50) 55%,
    rgba(0,0,0,0.22) 78%,
    rgba(0,0,0,0.10) 100%
  ) !important;
}

@media (max-width:1023px){
  .hp-hs-static-content{bottom:170px;padding:0 22px}
}
@media (max-width:640px){
  .hp-hs-static-content{bottom:160px}
}

/* ============================================================
   v62 PHASE 4 - CALCULATOR V2 (tabs + sliders + live price)
   ============================================================ */

.hp-calc-v2{
  background:var(--bg-dark-alt);
  border-radius:24px;
  padding:44px 38px 38px;
  box-shadow:0 30px 70px rgba(0,0,0,.35);
  position:relative;
  border:1px solid rgba(255,255,255,.06);
}
.hp-calc-v2 > h3{
  font-family:var(--font-display);
  font-weight:700;
  font-size:32px;
  letter-spacing:.02em;
  margin:0 0 6px;
  color:#fff;
}
.hp-calc-sub{
  font-size:15px;
  color:rgba(255,255,255,.65);
  margin:0 0 28px;
}

/* Service tabs row */
.calc-tabs{
  display:flex;
  gap:6px;
  background:rgba(0,0,0,.28);
  padding:6px;
  border-radius:14px;
  margin-bottom:30px;
}
.calc-tab{
  flex:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:13px 12px;
  background:transparent;
  border:none;
  color:rgba(255,255,255,.7);
  font-family:var(--font-heading);
  font-weight:600;
  font-size:13.5px;
  letter-spacing:.2px;
  border-radius:10px;
  cursor:pointer;
  transition:background-color .25s,color .25s;
  text-align:center;
}
.calc-tab svg{width:16px;height:16px;flex-shrink:0;opacity:.8}
.calc-tab:hover:not(.active){color:rgba(255,255,255,.95)}
.calc-tab.active{
  background:var(--bronze);
  color:#fff;
  box-shadow:0 4px 14px color-mix(in srgb, var(--bronze) 32%, transparent);
}
.calc-tab.active svg{opacity:1}

/* Tab panes */
.calc-pane-v2{display:none}
.calc-pane-v2.active{display:block;animation:fadeInUp .35s ease}
@keyframes fadeInUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* Slider */
.calc-slider{margin-bottom:24px}
.calc-slider > label{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  font-size:14.5px;
  color:rgba(255,255,255,.85);
  margin-bottom:14px;
}
.calc-slider > label strong{
  color:var(--bronze-light);
  font-family:var(--font-heading);
  font-weight:700;
  font-size:18px;
}
.calc-slider input[type=range]{
  width:100%;
  -webkit-appearance:none;
  appearance:none;
  height:6px;
  background:rgba(255,255,255,.14);
  border-radius:999px;
  outline:none;
  margin:6px 0;
}
.calc-slider input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;
  appearance:none;
  width:22px;height:22px;
  background:var(--bronze);
  border-radius:50%;
  cursor:pointer;
  box-shadow:0 4px 14px color-mix(in srgb, var(--bronze) 60%, transparent),0 0 0 4px color-mix(in srgb, var(--bronze) 15%, transparent);
  transition:transform .15s;
}
.calc-slider input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.12)}
.calc-slider input[type=range]::-moz-range-thumb{
  width:22px;height:22px;
  background:var(--bronze);
  border-radius:50%;
  cursor:pointer;
  border:none;
}
.calc-slider-hint{
  display:flex;
  justify-content:space-between;
  font-size:11.5px;
  color:rgba(255,255,255,.4);
  margin-top:4px;
}

/* Radio rows */
.calc-options{
  display:flex;
  gap:10px;
  margin-bottom:18px;
  flex-wrap:wrap;
}
.calc-radio{
  flex:1 1 calc(50% - 5px);
  display:flex;
  align-items:center;
  gap:10px;
  padding:13px 16px;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.10);
  border-radius:12px;
  font-size:14px;
  color:rgba(255,255,255,.85);
  cursor:pointer;
  transition:background-color .2s,border-color .2s;
  min-width:0;
}
.calc-radio span{display:inline-flex;align-items:baseline;gap:6px;flex:1;min-width:0}
.calc-radio em{color:rgba(255,255,255,.5);font-style:normal;font-size:12.5px;font-weight:600}
.calc-radio input{accent-color:var(--bronze);width:16px;height:16px;flex-shrink:0}
.calc-radio:has(input:checked){
  background:color-mix(in srgb, var(--bronze) 13%, transparent);
  border-color:color-mix(in srgb, var(--bronze) 55%, transparent);
  color:#fff;
}
.calc-radio:has(input:checked) em{color:var(--bronze-light)}

/* Toggle (checkbox) rows */
.calc-toggle{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-bottom:8px;
}
.calc-toggle label{
  display:flex;
  align-items:center;
  gap:12px;
  font-size:14px;
  color:rgba(255,255,255,.82);
  cursor:pointer;
}
.calc-toggle input{accent-color:var(--bronze);width:16px;height:16px;flex-shrink:0}
.calc-toggle em{color:rgba(255,255,255,.5);font-style:normal;font-size:13px}

/* Tile-grid (keuken sizing) */
.calc-options-tiles{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
  margin-bottom:8px;
}
.calc-tile{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:4px;
  padding:22px 12px;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.10);
  border-radius:14px;
  cursor:pointer;
  text-align:center;
  transition:all .2s;
}
.calc-tile input{position:absolute;opacity:0;pointer-events:none}
.calc-tile strong{font-size:15.5px;font-weight:700;color:#fff;font-family:var(--font-heading)}
.calc-tile small{font-size:12px;color:rgba(255,255,255,.55)}
.calc-tile:has(input:checked){
  background:color-mix(in srgb, var(--bronze) 13%, transparent);
  border-color:color-mix(in srgb, var(--bronze) 55%, transparent);
  transform:translateY(-2px);
}
.calc-tile:has(input:checked) strong{color:var(--bronze-light)}

/* Live price display */
.calc-result-v2{
  margin-top:24px;
  background:linear-gradient(135deg,rgba(0,0,0,.32),rgba(0,0,0,.18));
  border:1px solid color-mix(in srgb, var(--bronze) 32%, transparent);
  border-radius:16px;
  padding:22px 26px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
}
.calc-result-lbl{
  font-family:var(--font-heading);
  font-weight:600;
  font-size:13.5px;
  letter-spacing:1.2px;
  text-transform:uppercase;
  color:rgba(255,255,255,.75);
}
.calc-result-note{font-size:12px;color:rgba(255,255,255,.5);margin-top:2px}
.calc-result-price{
  font-family:var(--font-heading);
  font-weight:800;
  font-size:38px;
  color:var(--bronze-light);
  letter-spacing:-.02em;
  white-space:nowrap;
}

/* CTA */
.calc-cta-v2{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:100%;
  margin-top:18px;
  padding:18px;
  background:var(--bronze);
  color:var(--brand-dark);
  text-decoration:none;
  border-radius:14px;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:15.5px;
  transition:transform .2s,background-color .2s,box-shadow .2s;
  box-shadow:0 8px 24px color-mix(in srgb, var(--bronze) 35%, transparent);
}
.calc-cta-v2:hover{
  background:var(--cream);
  transform:translateY(-2px);
  box-shadow:0 12px 32px color-mix(in srgb, var(--bronze) 45%, transparent);
}
.calc-cta-v2 svg{width:18px;height:18px}

/* Mobile */
@media (max-width:640px){
  .hp-calc-v2{padding:30px 22px 26px}
  .hp-calc-v2 > h3{font-size:26px}
  .calc-tabs{flex-direction:column;gap:4px}
  .calc-tab{padding:11px 14px;justify-content:flex-start;font-size:14px}
  .calc-options-tiles{grid-template-columns:1fr}
  .calc-tile{flex-direction:row;justify-content:flex-start;padding:16px 18px;text-align:left}
  .calc-result-v2{flex-direction:column;text-align:center;align-items:stretch}
  .calc-result-price{font-size:32px}
}

/* Remove the OLD calculator-light-theme override block - calc returns to dark
   per {{EIGENAAR}} feedback (it was forced to a light theme in v58 - undo that). */
.hp-contact .hp-calc-wizard,
.hp-contact .hp-calc-wizard *{
  /* Defensive: ensure no stale styles from removed wizard hit our v2 calc */
}

/* ============================================================
   v62 PHASE 5 - TIP MODAL, FOOTER, MARQUEE, POLISH
   ============================================================ */

/* --- Tip card → modal popup (homepage tips section) --- */
.hp-tips-card{cursor:pointer}   /* visual cue: clickable */
.tip-modal{
  position:fixed;
  inset:0;
  z-index:200;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  opacity:0;
  visibility:hidden;
  transition:opacity .25s ease,visibility .25s ease;
}
.tip-modal.is-open{opacity:1;visibility:visible}
.tip-modal-backdrop{
  position:absolute;inset:0;
  background:rgba(15,17,19,.72);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  cursor:pointer;
}
.tip-modal-panel{
  position:relative;
  width:85vw;
  max-width:900px;
  height:auto;
  max-height:85vh;
  overflow-y:auto;
  background:var(--bg-card);
  border-radius:22px;
  border-top:6px solid var(--bronze);  /* merkkleur default for tips */
  box-shadow:0 30px 80px rgba(0,0,0,.4);
  transform:translateY(20px) scale(.97);
  transition:transform .3s var(--ease);
}
.tip-modal.is-open .tip-modal-panel{transform:translateY(0) scale(1)}
.tip-modal.is-news .tip-modal-panel{border-top-color:#3FAA67}  /* green for "Nieuws" category */

/* Close button - merkkleur circle with white X, top-right, easy to spot */
.tip-modal-close{
  position:absolute;
  top:18px;right:18px;
  width:44px;height:44px;
  background:var(--bronze);
  border:none;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  color:#fff;
  box-shadow:0 4px 14px color-mix(in srgb, var(--bronze) 45%, transparent);
  transition:background-color .2s,transform .2s,box-shadow .2s;
  z-index:2;
}
.tip-modal-close:hover{
  background:var(--bronze-dark);
  transform:rotate(90deg) scale(1.05);
  box-shadow:0 6px 18px color-mix(in srgb, var(--bronze) 60%, transparent);
}
.tip-modal-close svg{width:20px;height:20px;stroke-width:2.6}

.tip-modal-img{
  width:100%;
  aspect-ratio:21/9;  /* a touch wider/shorter so the image header doesn't dominate the larger panel */
  background-size:cover;
  background-position:center;
}
.tip-modal-body{padding:36px 44px 40px}

/* Article paragraphs inside the modal - readable typography */
.tip-modal-body #tipModalDesc p{
  font-size:16px;
  line-height:1.7;
  color:var(--text);
  margin:0 0 16px;
}
.tip-modal-body #tipModalDesc p:last-child{margin-bottom:0}
.tip-modal-body #tipModalDesc strong{color:var(--brand-dark);font-weight:700}

/* On smaller screens, expand to nearly full width since 85vw of a small phone is still narrow */
@media (max-width:600px){
  .tip-modal-panel{width:92vw;max-height:88vh}
  .tip-modal-body{padding:24px 22px 28px}
  .tip-modal-close{top:14px;right:14px;width:40px;height:40px}
  .tip-modal-body #tipModalDesc p{font-size:15px;line-height:1.65}
}
.tip-modal-tag{
  display:inline-block;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:11px;
  letter-spacing:1.4px;
  text-transform:uppercase;
  color:var(--bronze-dark);
  background:color-mix(in srgb, var(--bronze) 13%, transparent);
  padding:5px 11px;
  border-radius:999px;
  margin-bottom:14px;
  border:1.5px solid color-mix(in srgb, var(--bronze) 65%, transparent);
}
.tip-modal-tag.tag-nieuws{
  color:#2B7A48;
  background:rgba(63,170,103,.13);
  border-color:rgba(63,170,103,.55);
}
.tip-modal-body h3{
  font-family:var(--font-display);
  font-weight:700;
  font-size:24px;
  line-height:1.2;
  letter-spacing:.02em;
  color:var(--brand-dark);
  margin:0 0 14px;
}
.tip-modal-body p{
  font-size:15px;
  line-height:1.6;
  color:var(--text);
  margin:0 0 18px;
}
.tip-modal-meta{
  display:flex;
  gap:14px;
  font-size:12.5px;
  color:var(--text-muted);
  margin-bottom:22px;
}
.tip-modal-meta .lees{display:none}  /* hide the "Lees meer →" in modal */
.tip-modal-cta{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:100%;
  padding:15px;
  background:var(--bronze);
  color:var(--brand-dark);
  text-decoration:none;
  border-radius:12px;
  font-family:var(--font-heading);
  font-weight:700;
  font-size:14.5px;
  transition:transform .2s,background-color .2s;
}
.tip-modal-cta:hover{background:var(--bronze-dark);color:#fff;transform:translateY(-2px)}
.tip-modal-cta svg{width:16px;height:16px}

/* --- Tips marquee: REMOVE fade-out edges (per {{EIGENAAR}}) --- */
.hp-tips-marquee{
  -webkit-mask-image:none !important;
          mask-image:none !important;
}

/* --- Footer rebuild --- */
.footer-benefits{
  list-style:none;
  padding:0;
  margin:18px 0 22px;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.footer-benefits li{
  display:flex;
  align-items:center;
  gap:10px;
  font-size:14.5px;
  color:rgba(247,245,242,.85);
}
.footer-benefits svg{
  width:18px;height:18px;
  flex-shrink:0;
  color:var(--bronze);
  background:color-mix(in srgb, var(--bronze) 12%, transparent);
  border-radius:50%;
  padding:3px;
  box-sizing:border-box;
}

/* Social icons: merkkleur color on icon (no bg circle merkkleur) - hover affects icon only */
.footer-social a{
  color:var(--bronze) !important;
  border-color:color-mix(in srgb, var(--bronze) 32%, transparent) !important;
}
.footer-social a:hover{
  background:transparent !important;   /* no bg-fill on hover */
  color:var(--bronze-light) !important;
  border-color:var(--bronze) !important;
  transform:translateY(-2px);
}

/* --- Diagonal merkkleur/anthracite at bottom of service pages → flat white --- */
.seo-stripe,
.diensten-cta-band,
.service-bottom-band,
.svc-cta-band{
  background:#FAFAF7 !important;   /* slightly different white tint vs main bg */
  border-top:1px solid var(--border-soft) !important;
  color:var(--brand-dark) !important;
}
.seo-stripe *,
.diensten-cta-band *,
.service-bottom-band *,
.svc-cta-band *{
  color:var(--brand-dark) !important;
}
.seo-stripe::before,.seo-stripe::after,
.diensten-cta-band::before,.diensten-cta-band::after{
  display:none !important;
}

/* --- Vertical subtle lines on right side: REMOVE if any --- */
html, body { background:var(--bg); }
body::before, body::after { display:none !important; }
section[class]::after, section[class]::before {
  /* Kill any subtle right-edge gradient/border that might draw vertical lines */
  /* (defensive - only nukes pseudo-elements that aren't reset elsewhere) */
}

/* Strict white → champagne alternation from over-ons to greviews
   (hero is dark, hp-contact is dark, those don't participate) */
.hp-overons{background:var(--bg) !important}        /* 1. WIT */
.hp-vakwerk{background:var(--bg-alt) !important}    /* 2. CHAMPAGNE */
.hp-services{background:var(--bg) !important}       /* 3. WIT */
.hp-werkwijze{background:var(--bg-alt) !important}  /* 4. CHAMPAGNE */
.hp-portfolio{background:var(--bg) !important}      /* 5. WIT */
.hp-tips{background:var(--bg-alt) !important}       /* 6. CHAMPAGNE */
.hp-greviews{background:var(--bg) !important}       /* 7. WIT */
.hp-reviews{background:var(--bg-alt) !important}    /* (alt class name, if used elsewhere) */
.hp-contact{background:var(--bg-dark)}              /* dark - calc section */

/* ============================================================
   v62 PHASE 5 - Override v58 light-theme on .hp-contact
   The v58 block (line ~2820) forced .hp-contact to light bg for the
   old wizard. New calc-v2 sits on dark - restore dark surroundings.
   ============================================================ */
.hp-contact{
  background:var(--bg-dark) !important;
  color:#fff !important;
}
.hp-contact h2{color:#fff !important}
.hp-contact > .container > p{color:rgba(255,255,255,.75) !important}

/* ============================================================
   v62 PATCH - items I missed in first pass + bold-word emphasis
   ============================================================ */

/* WhatsApp bubble - circle size stays the same. Icon inside enlarged
   so the WhatsApp logo sits closer to the bubble edges (per {{EIGENAAR}}). */
.wa-btn,.tel-btn{width:54px !important;height:54px !important}.tel-btn{bottom:84px !important}
.wa-btn svg{width:42px !important;height:42px !important}
@media (max-width:768px){
  .wa-btn,.tel-btn{width:50px !important;height:50px !important}.tel-btn{bottom:80px !important}
  .wa-btn svg{width:38px !important;height:38px !important}
}

/* Bold-word emphasis: utility class for highlighting key value words like
   "3 jaar garantie", "gratis", "binnen 24 uur" in body text. */
.bold-word, .hl-bold{
  font-weight:800 !important;
  color:var(--brand-dark) !important;
}

/* Auto-bold known key phrases in "Wat maakt ons uniek" + werkwijze
   sections without HTML edits. Uses text-content surrounding selectors. */
.hp-vakwerk strong, .hp-werkwijze strong{
  font-weight:800;
  color:var(--brand-dark);
}

/* ============================================================
   v62 PATCH 2 - SCROLLABLE + AUTO-MOVING MARQUEES
   Convert tips + reviews from CSS-animation to JS-driven scroll:
   the wrapper becomes the scroll container (overflow-x:auto), JS
   advances scrollLeft each frame. User swipe/scroll pauses for 3s
   then auto-scroll resumes. Hidden scrollbar, seamless loop because
   track has duplicate content (snap back at 50%).
   ============================================================ */

/* ----- TIPS ----- */
.hp-tips-marquee{
  overflow-x:auto !important;
  overflow-y:visible !important;
  scrollbar-width:none;
  scroll-behavior:auto;   /* exact px control, not smooth */
  -webkit-overflow-scrolling:touch;
  -webkit-mask-image:none !important;
          mask-image:none !important;
  cursor:grab;
}
.hp-tips-marquee::-webkit-scrollbar{display:none}
.hp-tips-marquee:active{cursor:grabbing}
.hp-tips-track{
  animation:none !important;
  transform:none !important;
  will-change:auto;
}

/* ----- REVIEWS ----- */
.hpgr-marquee{
  overflow-x:auto !important;
  overflow-y:visible !important;
  scrollbar-width:none;
  scroll-behavior:auto;
  -webkit-overflow-scrolling:touch;
  -webkit-mask-image:none !important;
          mask-image:none !important;
  cursor:grab;
}
.hpgr-marquee::-webkit-scrollbar{display:none}
.hpgr-marquee:active{cursor:grabbing}
.hpgr-track{
  animation:none !important;
  transform:none !important;
  will-change:auto;
}

/* Both marquees: respect reduced-motion (no auto-scroll, user-scroll only) */
@media (prefers-reduced-motion: reduce){
  .hp-tips-marquee, .hpgr-marquee{cursor:auto}
}

/* ============================================================
   v62 PATCH 2 - NL map in footer + Mijn verhaal section + cleanup
   ============================================================ */

/* Footer NL map */
.footer-nl-map{
  display:flex;
  align-items:center;
  gap:14px;
  margin-bottom:22px;
}
.footer-nl-map svg{
  width:60px;
  height:70px;
  flex-shrink:0;
}
.footer-nl-map-label{
  font-family:var(--font-heading);
  font-weight:700;
  font-size:13px;
  color:var(--bronze-light);
  letter-spacing:.3px;
}

/* Mijn verhaal section on /over-ons/ */
.over-mijn-verhaal{
  padding:80px 0;
  background:#FAFAF7;   /* alt-white tint for visual separation */
}
.over-mijn-verhaal .content-2col{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:60px;
  align-items:center;
}
.over-mijn-verhaal .content-img img{
  width:100%;
  border-radius:18px;
  box-shadow:0 22px 50px rgba(37,42,45,.12);
  aspect-ratio:4/5;
  object-fit:cover;
}
@media (max-width:1023px){
  .over-mijn-verhaal{padding:60px 0}
  .over-mijn-verhaal .content-2col{grid-template-columns:1fr;gap:32px}
}

/* Defensive: kill any potential right-edge vertical artefact lines */
html{overflow-x:hidden}
body{overflow-x:hidden;max-width:100vw}
*::-webkit-scrollbar-track{background:transparent !important}
section,div,article{border-right:none !important;border-left:none !important}

/* Restore borders for elements that DO need them (white-list) */
.nav, .nav.scrolled{border-right:none !important}
.calc-tab, .calc-radio, .calc-tile, .tip-modal-panel{
  /* These need their own borders preserved - selective re-allow */
}
.calc-tab{border-right:0 !important;border-left:0 !important}
.calc-radio, .calc-tile{
  border:1px solid rgba(255,255,255,.10) !important;
}
.calc-radio:has(input:checked), .calc-tile:has(input:checked){
  border:1px solid color-mix(in srgb, var(--bronze) 55%, transparent) !important;
}
.mobile-menu .submenu{border-left:2px solid color-mix(in srgb, var(--bronze) 40%, transparent) !important}
.footer-social a{
  border:1px solid color-mix(in srgb, var(--bronze) 32%, transparent) !important;
}
.footer-social a:hover{
  border:1px solid var(--bronze) !important;
}

/* ============================================================
   v62 PATCH 3 - TRANSPARENT NAV AT TOP, FLAG SVG SIZING
   At top of page: only logo (left) + flag + burger (right) floating
   over the hero photo. NO bar, NO background, NO shadow, NO blur.
   On scroll: anthracite semi-transparent bar appears (existing behavior).
   ============================================================ */

/* Default nav state (NOT scrolled) - transparant op de homepage (donkere hero eronder) */
.nav:not(.scrolled){
  background:transparent !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  box-shadow:none !important;
  border-bottom:none !important;
  border-top:none !important;
}
/* Op subpagina's (body.has-subhero) staat de transparante balk deels over een
   lichte achtergrond → witte tekst onleesbaar. Geef de balk daar een effen
   donkere achtergrond die naadloos aansluit op de donkere subhero eronder. */
body.has-subhero .nav:not(.scrolled){
  background:var(--brand-darker) !important;
}

/* Phone + Offerte-knop blijven ALTIJD zichtbaar op desktop - ook bovenaan
   (nav niet-gescrolld). Ze zweven dan over de donkere hero, dus lichte tekst.
   Mobiel blijven ze verborgen via de display:none-regel hierboven. */
.nav .nav-phone,
.nav .nav-cta > .btn.btn-primary{
  opacity:1;
  pointer-events:auto;
  transition:opacity .25s var(--ease);
}
/* Bovenaan over de donkere hero: lichte/leesbare uitvoering */
.nav:not(.scrolled) .nav-phone{
  color:#fff !important;
  text-shadow:0 1px 8px rgba(0,0,0,.4);
}
.nav:not(.scrolled) .nav-phone svg{
  color:var(--bronze) !important;
}
.nav:not(.scrolled) .nav-cta > .btn.btn-primary{box-shadow:0 6px 18px rgba(0,0,0,.18);}
.nav:not(.scrolled) .nav-cta > .btn.btn-primary:hover{
  background:var(--bronze-dark) !important;
}

/* GB flag SVG sizing - the GB flag has different viewBox proportions
   (60x30) than NL (9x6), so without explicit sizing the GB flag would
   render larger. Both should fit in the small circular nav-lang-btn. */
.nav-lang-btn .nav-flag{
  width:18px !important;
  height:auto !important;
  max-height:13px;
  border-radius:2px;
  display:block;
}

/* Smooth flag swap visual */
.nav-lang-btn{transition:background-color .2s, transform .15s}
.nav-lang-btn:active{transform:scale(.94)}

/* ============================================================
   v63 PATCH - ORANGE-FIT STYLE FLOATING PILL HEADER
   - No more anthracite bar on scroll: nav stays fully transparent always
   - Right side: merkkleur pill capsule containing flag + burger icons
   - Logo (left): visible at top, fades out on scroll, fades back in at top
   - Inspiration: orangefit.nl mobile header
   ============================================================ */

/* MOBILE ONLY (≤768px): kill the anthracite bar, hide logo on scroll.
   Desktop keeps its anthracite scrolled bar because the horizontal
   nav-links need a contrasting background once you scroll past hero. */
@media (max-width:768px){
  .nav.scrolled{
    background:transparent !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
    box-shadow:none !important;
    border-bottom:none !important;
    padding:18px 24px !important;
  }

  /* Logo: visible at top, fades out on scroll, fades back in at top */
  .nav-logo{
    transition:opacity .35s var(--ease), transform .35s var(--ease);
    will-change:opacity, transform;
  }
  .nav.scrolled .nav-logo{
    opacity:0;
    transform:translateX(-12px);
    pointer-events:none;
  }
  .nav:not(.scrolled) .nav-logo{
    opacity:1;
    transform:translateX(0);
  }
}

/* MOBILE: nav-cta is een pill in de merkkleur met twee cirkels (vlag + burger).
   Two-tone design: deeper merkkleur outside, lighter merkkleur inside each button. */
@media (max-width:768px){
  /* Outer pill: deeper merkkleur (brand bronze), capsule shape */
  .nav-cta{
    background:color-mix(in srgb, var(--bronze) 85%, transparent) !important;  /* brand-accent (merkkleur) */
    backdrop-filter:blur(14px) saturate(150%) !important;
    -webkit-backdrop-filter:blur(14px) saturate(150%) !important;
    border:1px solid rgba(255,255,255,.18) !important;
    border-radius:999px !important;
    padding:5px !important;
    gap:5px !important;
    box-shadow:0 6px 20px rgba(0,0,0,.18) !important;
  }

  /* Flag button: lighter-merkkleur circle inside the pill */
  .nav-cta .nav-lang-btn{
    background:var(--bronze) !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
    border:1px solid var(--bronze-light) !important;
    border-radius:50% !important;
    width:38px !important;
    height:38px !important;
    box-shadow:none !important;
  }
  .nav-cta .nav-lang-btn:hover{
    background:var(--bronze-dark) !important;
  }

  /* Burger button: same lighter-merkkleur circle look as flag */
  .nav-cta .nav-burger{
    background:var(--bronze) !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
    border:1px solid var(--bronze-light) !important;
    border-radius:50% !important;
    width:38px !important;
    height:38px !important;
    box-shadow:none !important;
  }
  .nav-cta .nav-burger:hover,
  .nav-cta .nav-burger.open{
    background:var(--bronze-dark) !important;
  }

  /* Burger lines: light cream so they contrast on the lighter-merkkleur circle */
  .nav-burger span,
  .nav-burger span::before,
  .nav-burger span::after{
    background:#fff !important;
  }

  /* Hide phone + primary CTA on mobile (only the pill + 2 circles visible) */
  .nav-cta > .nav-phone,
  .nav-cta > .btn.btn-primary{
    display:none !important;
  }
}

/* ============================================================
   v67 PATCH - LOGO ↔ FAVICON SWAP ON SCROLL (mobile)
   At top: full logo+name visible. On scroll: only favicon (O-mark)
   with transparent background. Both crossfade smoothly.
   ============================================================ */

/* Favicon is hidden by default (only mobile-scrolled state shows it) */
.nav-logo .logo-favicon{
  display:none;
}

@media (max-width:768px){
  /* Override the older rule that faded the whole nav-logo on scroll -
     we want nav-logo to stay visible; only its CONTENT swaps. */
  .nav.scrolled .nav-logo,
  .nav:not(.scrolled) .nav-logo{
    opacity:1 !important;
    transform:none !important;
    pointer-events:auto !important;
  }

  /* Stack the full logo + favicon at the same position so they can crossfade */
  .nav-logo{
    position:relative;
    display:inline-flex;
    align-items:center;
    min-height:44px;
  }
  .nav-logo .logo-on-dark{
    transition:opacity .35s var(--ease);
  }
  .nav-logo .logo-favicon{
    display:block;
    position:absolute;
    top:50%;
    left:0;
    transform:translateY(-50%);
    width:42px;
    height:42px;
    opacity:0;
    pointer-events:none;
    transition:opacity .35s var(--ease);
    background:transparent;
  }

  /* At top: full logo visible, favicon hidden */
  .nav:not(.scrolled) .nav-logo .logo-on-dark{opacity:1}
  .nav:not(.scrolled) .nav-logo .logo-favicon{opacity:0}

  /* On scroll: full logo fades out, favicon fades in */
  .nav.scrolled .nav-logo .logo-on-dark{opacity:0}
  .nav.scrolled .nav-logo .logo-favicon{opacity:1;pointer-events:auto}

  /* Hide unused logo-on-light variant on mobile */
  .nav-logo .logo-on-light{display:none !important}
}

/* ============================================================
   v68 PATCH - THICKER MAIN HEADINGS (per {{EIGENAAR}})
   Manrope's heaviest weight is 800, which is already applied. To make
   the main titles visibly thicker WITHOUT increasing size, we use
   -webkit-text-stroke with paint-order so the stroke renders behind
   the fill (no outline look - just visually heavier strokes).
   ============================================================ */
h1, h2{
  -webkit-text-stroke:0.6px currentColor;
  paint-order:stroke fill;
  text-rendering:geometricPrecision;
}

/* Very large display headings get a slightly heavier stroke so the
   weight gain stays proportional to letter size */
.hp-fans-text h2,
.hp-why-intro-text h2{
  -webkit-text-stroke:0.85px currentColor;
}

/* Section sub-headings (h3 inside main content cards) also a touch heavier */
.hp-why-card h3,
.hp-svc h3,
.hp-ex-text h3{
  -webkit-text-stroke:0.4px currentColor;
  paint-order:stroke fill;
}

/* v69 PATCH - Review cards are now clickable <a> tags (link to DEHAAS
   Google Maps). Override default anchor styling so cards render the same as
   before but with link cursor + proper navigation. */
a.hpgr-card{
  text-decoration:none !important;
  color:inherit !important;
  cursor:pointer;
}
a.hpgr-card:hover{
  transform:translateY(-1px);
}

/* ============================================================
   v86 PATCH - TRANSLATION-SAFE LAYOUT
   Ensures text remains nicely contained when Google Translate
   replaces Dutch with English/other languages (often longer words).
   Universal: helps Dutch too, just polite text handling.
   ============================================================ */
h1, h2, h3, h4, h5, h6, .hp-svc-card h3, .hp-tips-card h3{
  overflow-wrap:normal;
  word-wrap:normal;
  hyphens:none;
  -webkit-hyphens:none;
}
.hpgr-name{
  overflow-wrap:break-word;
  word-wrap:break-word;
  hyphens:manual;
  -webkit-hyphens:manual;
}

/* Navigation links: allow gentle wrapping if a translated word is too long */
.nav-links a, .mobile-menu a{
  overflow-wrap:anywhere;
  hyphens:none;
}

/* Buttons stay on one line but constrain max-width sensibly */
.btn, .hp-hs-btn, .calc-cta-v2, .tip-modal-cta{
  max-width:100%;
  overflow-wrap:normal;
}

/* Form labels - typically longer in English */
.form-group label, .calc-radio span, .calc-tile strong{
  overflow-wrap:break-word;
}

/* Service-card features list - checkmark items */
.hp-svc-features li, .footer-benefits li{
  overflow-wrap:break-word;
}

/* When translated (data-lang set by head script): slightly tighter
   tracking + smaller line-height adjustment on very large headings to
   prevent multi-line growth */
html[data-lang]:not([data-lang="nl"]) .hp-fans-text h2,
html[data-lang]:not([data-lang="nl"]) .hp-why-intro-text h2{
  letter-spacing:.02em;
  line-height:.94;
}
html[data-lang]:not([data-lang="nl"]) .hp-why-card h3{
  font-size:clamp(20px, 2.6vw, 28px);
}

/* Translate skiptranslate elements (Google's banner) stay hidden */
.skiptranslate{display:none !important}
body{top:0 !important}

/* === DEHAAS - contact-grid (vervangt calculator) === */
.calc-contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,max-content));justify-content:center;column-gap:56px;row-gap:20px;margin:26px auto 8px;width:fit-content}
.calc-contact-item{display:flex;align-items:flex-start;gap:14px;text-align:left}
.calc-contact-item svg{width:26px;height:26px;flex-shrink:0;color:var(--bronze) !important;margin-top:2px}
.calc-contact-item strong{display:block;color:var(--brand-dark) !important;font-family:var(--font-heading);font-size:15px;margin-bottom:2px}
.calc-contact-item span{display:block;color:var(--text-soft) !important;font-size:14.5px;line-height:1.4}
@media(max-width:600px){.calc-contact-grid{grid-template-columns:1fr;gap:16px}}

/* === Downtime-calculator tagline === */
.dt-tagline{margin:18px 0 4px;font-size:14.5px;line-height:1.6;color:rgba(246,244,241,.82) !important;text-align:center;padding:14px 16px;border-radius:var(--r);background:rgba(243,147,20,.08);border:1px solid rgba(243,147,20,.25)}
.dt-tagline strong{color:var(--bronze-light) !important}

/* ============================================================
   SITE-WIDE SCROLL REVEAL - auto-applied (zie autoreveal.js)
   tekst: van links · foto's: van rechts · kolommen/kaarten: unieke flip
   ============================================================ */

/* Auto-reveal base (los van bestaande .reveal classes)
   Alleen verbergen als JS de reveal echt aanzet (html.ar-on),
   anders blijft alles gewoon zichtbaar - geen risico op witte pagina. */
.ar-on .ar{opacity:0;will-change:transform,opacity}
.ar-on .ar.in-view{opacity:1}

/* TEKST → smooth van links binnen, rust door naar zijn plek */
.ar-on .ar-left{transform:translateX(-52px);transition:opacity .9s var(--ease),transform 1s var(--ease)}
.ar-on .ar-left.in-view{transform:none}

/* BEELD → van rechts binnen */
.ar-on .ar-right{transform:translateX(52px);transition:opacity .95s var(--ease),transform 1.05s var(--ease)}
.ar-on .ar-right.in-view{transform:none}

/* compat: oude flip valt nu terug op schone slide-up (geen 3D meer) */
.ar-on .ar-flip{transform:translateY(38px);transition:opacity .9s var(--ease),transform .95s var(--ease)}
.ar-on .ar-flip.in-view{transform:none}

/* STAGGER → kinderen glijden clean van links na elkaar binnen (geen rotateX) */
.ar-on .ar-stagger > *{opacity:0;transform:translateX(-40px);will-change:transform,opacity}
.ar-on .ar-stagger.in-view > *{opacity:1;transform:none;transition:opacity .75s var(--ease),transform .85s var(--ease)}
.ar-on .ar-stagger.in-view > *:nth-child(1){transition-delay:.00s}
.ar-on .ar-stagger.in-view > *:nth-child(2){transition-delay:.10s}
.ar-on .ar-stagger.in-view > *:nth-child(3){transition-delay:.20s}
.ar-on .ar-stagger.in-view > *:nth-child(4){transition-delay:.30s}
.ar-on .ar-stagger.in-view > *:nth-child(5){transition-delay:.40s}
.ar-on .ar-stagger.in-view > *:nth-child(6){transition-delay:.50s}
.ar-on .ar-stagger.in-view > *:nth-child(7){transition-delay:.60s}
.ar-on .ar-stagger.in-view > *:nth-child(8){transition-delay:.70s}
.ar-on .ar-stagger.in-view > *:nth-child(n+9){transition-delay:.78s}

/* WOORD-REVEAL → elk woord van koppen zweeft los van onder/links in */
.ar-on .ar-words{opacity:1}
.ar-on .ar-words .ar-word{
  display:inline-block;
  opacity:0;
  transform:translateY(0.5em) translateX(-8px);
  transition:opacity .6s var(--ease),transform .7s var(--ease);
  will-change:transform,opacity;
}
.ar-on .ar-words.in-view .ar-word{opacity:1;transform:none}

/* HEADER - vloeiend inladen bij paginastart */
@keyframes ar-navdrop{from{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}
.nav{animation:ar-navdrop .8s var(--ease) both}
@keyframes ar-navfade{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}
.nav .nav-logo{animation:ar-navfade .7s var(--ease) .25s both}
.nav .nav-links > li{animation:ar-navfade .6s var(--ease) both}
.nav .nav-links > li:nth-child(1){animation-delay:.30s}
.nav .nav-links > li:nth-child(2){animation-delay:.37s}
.nav .nav-links > li:nth-child(3){animation-delay:.44s}
.nav .nav-links > li:nth-child(4){animation-delay:.51s}
.nav .nav-links > li:nth-child(5){animation-delay:.58s}
.nav .nav-cta{animation:ar-navfade .7s var(--ease) .6s both}

/* HERO content entree wordt nu class-based geregeld (hero-line-in),
   zie .hp-hs-static-content .hp-hs-* hierboven. */

/* Respecteer toegankelijkheid + no-js */
@media (prefers-reduced-motion: reduce){
  .ar,.ar-left,.ar-right,.ar-flip,.ar-stagger>*,.ar-words .ar-word{opacity:1 !important;transform:none !important;transition:none !important}
  .nav,.nav *,.hp-hs-static-content>*{animation:none !important}
}
.no-js .ar,.no-js .ar-left,.no-js .ar-right,.no-js .ar-flip,.no-js .ar-stagger>*,.no-js .ar-words .ar-word{opacity:1;transform:none}

/* ============================================================
   CHATBOT - aanvraag-assistent linksonder (Formspree -> eigenaar)
   ============================================================ */
.agbot{position:fixed;left:24px;bottom:24px;z-index:9998;font-family:var(--font-body,Arial,sans-serif)}
.agbot *{box-sizing:border-box}
/* launcher-knop */
.agbot-launch{display:flex;align-items:center;gap:10px;background:var(--bronze);color:#1C1F22;border:none;border-radius:999px;padding:14px 20px 14px 16px;font-family:var(--font-heading,Arial,sans-serif);font-weight:700;font-size:15px;cursor:pointer;box-shadow:0 12px 30px rgba(243,147,20,.4);transition:transform .25s var(--ease,cubic-bezier(.33,.05,.2,1)),box-shadow .25s}
.agbot-launch:hover{transform:translateY(-3px);box-shadow:0 16px 38px rgba(243,147,20,.5)}
.agbot-launch svg{width:22px;height:22px;flex:none}
.agbot-launch .agbot-launch-close{display:none}
.agbot.open .agbot-launch .agbot-launch-open{display:none}
.agbot.open .agbot-launch .agbot-launch-close{display:block}
.agbot.open .agbot-launch{padding:14px;width:54px;height:54px;justify-content:center}
.agbot.open .agbot-launch .agbot-launch-label{display:none}
/* chatvenster */
.agbot-panel{position:absolute;left:0;bottom:72px;width:370px;max-width:calc(100vw - 48px);background:#fff;border-radius:20px;box-shadow:0 24px 70px rgba(0,0,0,.28);overflow:hidden;display:flex;flex-direction:column;opacity:0;transform:translateY(20px) scale(.96);transform-origin:left bottom;pointer-events:none;transition:opacity .3s var(--ease,ease),transform .3s var(--ease,ease)}
.agbot.open .agbot-panel{opacity:1;transform:none;pointer-events:auto}
.agbot-header{background:var(--brand-darker,#121417);color:#fff;padding:18px 20px;display:flex;align-items:center;gap:12px}
.agbot-avatar{width:42px;height:42px;border-radius:50%;background:var(--bronze);display:flex;align-items:center;justify-content:center;flex:none}
.agbot-avatar svg{width:24px;height:24px;color:#1C1F22}
.agbot-htext strong{display:block;font-family:var(--font-heading,sans-serif);font-weight:700;font-size:15px;line-height:1.2}
.agbot-htext span{font-size:12.5px;color:rgba(255,255,255,.6);display:flex;align-items:center;gap:6px}
.agbot-htext span::before{content:'';width:8px;height:8px;border-radius:50%;background:#46d369}
.agbot-body{padding:18px;height:340px;overflow-y:auto;display:flex;flex-direction:column;gap:12px;background:#F6F4F1}
.agbot-msg{max-width:80%;padding:11px 15px;border-radius:16px;font-size:14.5px;line-height:1.5;animation:agbotIn .4s var(--ease,ease) both}
@keyframes agbotIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.agbot-msg.bot{align-self:flex-start;background:#fff;color:#1C1F22;border-bottom-left-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.agbot-msg.user{align-self:flex-end;background:var(--bronze);color:#1C1F22;font-weight:600;border-bottom-right-radius:4px}
.agbot-quick{display:flex;flex-wrap:wrap;gap:8px;padding:0 18px 14px;background:#F6F4F1}
.agbot-quick button{width:100%;text-align:left;background:#fff;border:1.5px solid var(--bronze);color:var(--bronze-dark,#D97D08);border-radius:12px;padding:12px 16px;font-size:14px;font-weight:600;cursor:pointer;transition:background .2s,color .2s,box-shadow .2s}.agbot-quick button:hover{background:var(--bronze);color:#fff;box-shadow:0 6px 18px -8px var(--bronze)}
.agbot-quick button:hover{background:var(--bronze);color:#1C1F22}
.agbot-input{display:flex;gap:8px;padding:14px 16px;border-top:1px solid #eee;background:#fff}
.agbot-input input{flex:1;border:1.5px solid #e2e0dc;border-radius:999px;padding:11px 16px;font-size:14px;font-family:inherit;outline:none;transition:border-color .2s}
.agbot-input input:focus{border-color:var(--bronze)}
.agbot-input button{background:var(--bronze);border:none;border-radius:50%;width:44px;height:44px;flex:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s}
.agbot-input button:hover{transform:scale(1.08)}
.agbot-input button svg{width:20px;height:20px;color:#1C1F22}
.agbot-input.hidden{display:none}
@media(max-width:520px){
  .agbot{left:16px;bottom:16px}
  .agbot-panel{bottom:68px;width:calc(100vw - 32px)}
  .agbot-body{height:46vh}
}

/* ============================================================
   MERKEN-MARQUEE - bewegende logobalk onder "Wat maakt ons uniek"
   ============================================================ */
.hp-brands{padding:10px 0 64px;background:var(--bg)}
.hp-brands-label{text-align:center;font-family:var(--font-heading);font-weight:600;font-size:13px;letter-spacing:2px;text-transform:uppercase;color:var(--text-muted,#8a8a8a);margin:0 0 30px}
.hp-brands-marquee{
  position:relative;
  overflow:hidden;
  width:100%;
  /* mooie inblend aan beide randen: logo's faden in/uit */
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 12%,#000 88%,transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 12%,#000 88%,transparent 100%);
}
.hp-brands-track{
  display:flex;
  align-items:center;
  gap:0; /* VASTE REGEL: geen flex-gap maar marges per item, anders sluit translateX(-50%) niet naadloos */
  width:max-content;
  animation:brandscroll var(--brands-dur,30s) linear infinite;
}
.hp-brands-track img{ margin-right:28px; }
.hp-brands-track .hp-brands-sep{ margin-right:28px; }
.hp-brands-marquee:hover .hp-brands-track{animation-play-state:paused}
.hp-brands-track img{
  height:46px;
  width:auto;
  flex:none;
  object-fit:contain;
  opacity:1; /* VASTE REGEL: logo's altijd in hun ECHTE kleuren, nooit grijs */
  filter:none;
}
.hp-brands-sep{ color:var(--bronze-light); font-size:10px; line-height:1; flex:none; }
@keyframes brandscroll{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}
@media(max-width:640px){
  .hp-brands{padding:6px 0 48px}
  .hp-brands-track img{margin-right:20px}
  .hp-brands-track .hp-brands-sep{margin-right:20px}
  .hp-brands-track img{height:38px}
}
@media (prefers-reduced-motion: reduce){
  .hp-brands-track{animation:none;flex-wrap:wrap;justify-content:center;width:auto;gap:40px}
}

/* ============================================================
   SKILL-ADDITIES (uit BOARDSORT-sessie) - palet-agnostisch
   Gebruik CSS-variabelen zodat alles meekleurt met het klantlogo.
   ============================================================ */

/* ===== GOOGLE REVIEWS - oneindige loop-carrousel (zelfde loop als tips) =====
   Plaats direct ONDER de tips-sectie. 2 IDENTIEKE setjes kaarten in
   .hp-grev-track + translateX(-50%) -> naadloze loop. Pauzeert op hover.
   PLACEHOLDER-reviews: vervang door echte; houd beide setjes gelijk. */
.hp-grev{padding:0 0 90px}
.hp-grev-head{display:flex;align-items:center;gap:16px;margin-bottom:30px;flex-wrap:wrap}
.hp-grev-glogo{flex-shrink:0}
.hp-grev-headtext{display:flex;flex-direction:column;line-height:1.2}
.hp-grev-rating{display:flex;align-items:center;gap:8px}
.hp-grev-rating strong{font-family:var(--font-heading);font-size:24px;font-weight:800;color:var(--brand-dark)}
.hp-grev-stars{color:#FBBC05;font-size:18px;letter-spacing:1px}
.hp-grev-sub{font-size:13.5px;color:var(--text-muted);font-weight:600}
.hp-grev-write{margin-left:auto;display:inline-flex;align-items:center;font-family:var(--font-heading);font-weight:700;font-size:14px;color:var(--bronze-dark);border:1.5px solid var(--bronze);padding:10px 18px;border-radius:999px;transition:background .2s,color .2s}
.hp-grev-write:hover{background:var(--bronze);color:#fff;border-color:var(--bronze)}
.hp-grev-marquee{position:relative;overflow:hidden;padding:6px 0}
.hp-grev-track{display:flex;gap:18px;width:max-content;animation:grev-marquee 48s linear infinite}
.hp-grev-track:hover{animation-play-state:paused}
@keyframes grev-marquee{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
.grev-card{flex:none;width:330px;background:var(--bg-card);border:1px solid rgba(37,42,45,.08);border-radius:14px;padding:22px 22px 24px;box-shadow:0 2px 12px rgba(0,0,0,.05);display:flex;flex-direction:column;gap:10px}
.grev-top{display:flex;align-items:center;gap:12px;position:relative}
.grev-avatar{width:42px;height:42px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--font-heading);font-weight:700;font-size:18px}
.grev-who{display:flex;flex-direction:column;line-height:1.25}
.grev-name{font-family:var(--font-heading);font-weight:700;font-size:15px;color:var(--brand-dark)}
.grev-date{font-size:12.5px;color:var(--text-muted)}
.grev-g{position:absolute;top:0;right:0}
.grev-stars{color:#FBBC05;font-size:16px;letter-spacing:1.5px}
.grev-text{font-size:14.5px;line-height:1.55;color:var(--text-soft);margin:0}
.hp-grev-allcta{display:inline-block;margin-top:26px;font-family:var(--font-heading);font-weight:700;font-size:15px;color:var(--bronze-dark)}
.hp-grev-allcta:hover{text-decoration:underline}
@media(max-width:600px){.grev-card{width:280px}.hp-grev-write{margin-left:0}}

/* ===== CONTACT-SECTIE - strak & luxe + achtergrondband achter FAQ =====
   - Eén rustige donkere gradient over de hele sectie.
   - Drie IDENTIEKE kaarten (keuzehulp/interactief, FAQ, contact): zelfde rand,
     radius, schaduw. GEEN backdrop-filter:blur (gaf moiré-strepen over de band!).
   - Achtergrondband: een donkerder vlak op de VERSTE laag (sectie-::before,
     z-index:0; kaarten op z-index:1 -> GEEN negatieve z-index, dat liet de kaart
     verdwijnen). Een tiny script (placeFaqBand) lijnt de band exact achter het
     FAQ-blok uit, incl. de helft van de marges erboven/eronder.
   - FAQ-kaart krijgt een DUIDELIJK lichtere tint dan de band + zichtbare rand +
     schaduw, anders valt het kader weg tegen de band.
   De #-waarden hieronder zijn donkerblauw (BOARDSORT). Vervang ze door tinten die
   bij het klantpalet passen: sectie = donkere brand-tint, band = ~10-15% donkerder,
   kaart = ~10% lichter dan de band. */
.hp-contact{
  background:linear-gradient(180deg,#0F2E48 0%,#0C2438 100%) !important;
  color:#fff !important;padding:110px 0 !important;
  position:relative;overflow:hidden;
}
.hp-contact::before{
  content:"";position:absolute;left:0;right:0;
  top:var(--faqband-top,640px);height:var(--faqband-h,560px);
  background:#0A2034;z-index:0;
}
.hp-contact .container{position:relative;z-index:1;max-width:920px}
.hp-contact > .container > h2{font-size:clamp(34px,4vw,50px) !important;letter-spacing:.02em;margin-bottom:18px}
.hp-contact > .container > p{color:rgba(255,255,255,.72) !important;font-size:17px;line-height:1.65}
.hp-contact .hp-calc-v2,
.hp-contact .hp-faq-block{
  position:relative;background:rgba(255,255,255,.045) !important;
  border:1px solid rgba(255,255,255,.09) !important;border-radius:22px !important;
  padding:40px 42px !important;
  box-shadow:0 18px 50px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.04) !important;
}
.hp-contact .hp-faq-block{
  margin:44px 0 !important;z-index:1;
  background:#234B6E !important;            /* lichter dan de band -> kader valt op */
  border:1px solid rgba(255,255,255,.22) !important;
  box-shadow:0 22px 60px rgba(0,0,0,.5) !important;
}
.hp-contact .hp-faq-block h2{color:#fff !important;font-size:30px !important}
.hp-contact .hp-faq-block .section-header{margin-bottom:8px}
.hp-contact .hp-faq-block .faq-item{border-bottom:1px solid rgba(255,255,255,.08) !important}
.hp-contact .hp-faq-block .faq-item:last-child{border-bottom:none !important}
.hp-contact .hp-faq-block .faq-q{padding:20px 2px !important;font-size:16.5px !important;color:rgba(255,255,255,.92) !important;transition:color .2s}
.hp-contact .hp-faq-block .faq-q:hover{color:#fff !important}
.hp-contact .hp-faq-block .faq-icon{background:rgba(255,255,255,.08) !important;width:30px;height:30px}
.hp-contact .hp-faq-block .faq-icon::before,
.hp-contact .hp-faq-block .faq-icon::after{background:#fff !important}
.hp-contact .hp-faq-block .faq-item.open .faq-icon{background:var(--bronze) !important}
.hp-contact .hp-faq-block .faq-item.open .faq-icon::before,
.hp-contact .hp-faq-block .faq-item.open .faq-icon::after{background:#0C2438 !important}
.hp-contact .hp-faq-block .faq-a-inner{color:rgba(255,255,255,.7) !important;font-size:15px;line-height:1.7}
.hp-contact .bs-keuze-opt{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:13px;transition:background .2s,border-color .2s,transform .2s}
.hp-contact .bs-keuze-opt:hover{background:var(--bronze);border-color:var(--bronze);transform:translateY(-2px)}
@media(max-width:600px){
  .hp-contact{padding:70px 0 !important}
  .hp-contact .hp-calc-v2,
  .hp-contact .hp-faq-block{padding:28px 22px !important;border-radius:18px !important}
}

/* ===================================================================
   ONDERKANT HOMEPAGE: WITTE TINTEN (DEF standaard, vervangt donker)
   Contact + keuzehulp + FAQ + "Wij informeren u" in lichte tinten.
   Footer blijft zwart. FAQ en contact zitten in EEN vak.
   =================================================================== */
.hp-contact{ background:var(--bg-alt) !important; color:var(--brand-dark) !important; }
.hp-contact::before{ display:none !important; content:none !important; }
.hp-contact .container{ max-width:780px !important; }
.hp-contact > .container > h2{ color:var(--brand-dark) !important; }
.hp-contact > .container > p{ color:var(--text-soft) !important; }

/* Keuzehulp-kaart: licht, verheven */
.hp-contact .hp-calc-v2{
  background:#ffffff !important; color:var(--brand-dark) !important;
  border:1px solid rgba(37,42,45,.08) !important;
  box-shadow:0 24px 60px rgba(37,42,45,.10) !important;
}
.hp-contact .hp-calc-v2 h3{ color:var(--brand-dark) !important; }
.hp-contact .hp-calc-v2 .hp-calc-sub{ color:var(--text-soft) !important; }
.hp-contact .kh-label{ color:var(--brand-dark) !important; }
.hp-contact .kh-chips button{ background:var(--cream); border-color:rgba(37,42,45,.16); color:var(--brand-dark); }
.hp-contact .kh-chips button:hover{ border-color:var(--bronze); color:var(--bronze-dark); }
.hp-contact .kh-chips button.active{ background:var(--bronze); border-color:var(--bronze); color:#fff; }
.hp-contact .dt-tagline{ color:var(--text-soft) !important; }
.hp-contact .calc-result-v2{ background:var(--cream) !important; border:1px solid rgba(37,42,45,.08) !important; }
.hp-contact .calc-result-lbl{ color:var(--brand-dark) !important; }
.hp-contact .calc-result-note{ color:var(--text-soft) !important; }
.hp-contact .calc-result-price{ color:var(--bronze) !important; }

/* Gecombineerd vak: FAQ + Wij informeren u ONDER elkaar in EEN wit vlak */
.hp-faqcontact{
  margin-top:28px;
  background:#ffffff !important;
  border:1px solid rgba(37,42,45,.08);
  border-radius:24px;
  box-shadow:0 24px 60px rgba(37,42,45,.08);
  padding:40px 40px 36px;
  display:block;
  text-align:left;
}
.hp-faqcontact .section-header{ text-align:left; max-width:none; margin:0 0 10px; }
.hp-faqcontact .section-header h2{ color:var(--brand-dark); font-size:28px; margin:0; }
.hp-faqcontact .faq{ max-width:none; margin:0; }
.hp-faqcontact .faq-item{ border-bottom:1px solid var(--border-soft); }
.hp-faqcontact .faq-q{ color:var(--brand-dark); font-size:16px; padding:18px 2px; }
.hp-faqcontact .faq-q:hover{ color:var(--bronze-dark); }
.hp-faqcontact .faq-icon{ background:var(--bg-alt); }
.hp-faqcontact .faq-icon::before,.hp-faqcontact .faq-icon::after{ background:var(--brand-dark); }
.hp-faqcontact .faq-item.open .faq-icon{ background:var(--bronze); }
.hp-faqcontact .faq-item.open .faq-icon::before,.hp-faqcontact .faq-item.open .faq-icon::after{ background:#fff; }
.hp-faqcontact .faq-a-inner{ color:var(--text-soft); }

/* onderste helft van hetzelfde vak: contact-info, gescheiden door een lijn */
.hp-faqcontact-info{
  margin-top:30px; padding-top:30px;
  border-top:1px solid var(--border-soft);
}
.hp-faqcontact-info h3{ color:var(--brand-dark); font-size:22px; margin:8px 0 10px; }
.hp-faqcontact-info .hp-calc-sub{ color:var(--text-soft); font-size:14.5px; margin:0 auto 20px; max-width:620px; }
.hp-faqcontact-info .calc-contact-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,max-content)); justify-content:center; column-gap:56px; row-gap:18px; width:fit-content; margin:0 auto 22px; }
.hp-faqcontact-info .calc-contact-item{ display:flex; align-items:center; gap:12px; }
.hp-faqcontact-info .calc-contact-item svg{ width:22px; height:22px; stroke:var(--bronze); flex-shrink:0; }
.hp-faqcontact-info .calc-contact-item strong{ display:block; color:var(--brand-dark); font-size:14px; }
.hp-faqcontact-info .calc-contact-item span{ color:var(--text-soft); font-size:14px; }
@media(max-width:860px){
  .hp-faqcontact{ padding:30px 22px 26px; }
  .hp-faqcontact-info .calc-contact-grid{ grid-template-columns:1fr; }
}

/* VARIANT 2 (DEEL C uitzondering 3): topbar-marquee vervallen; hoogte 0
   zodat nav-top en subhero-berekeningen blijven kloppen */
:root{ --topbar-h:0px; }
.nav{ top:var(--topbar-h) !important; }

/* ===================================================================
   USP-STRIP (DEF standaard): 3 punten, box-loos, dynamisch in beeld.
   Geen witte vlakken/kaarten, maar luchtige kolommen met scheidingslijn.
   =================================================================== */
.hp-usps{ padding:88px 0 76px; background:var(--bg); }
.hp-usps-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; max-width:1080px; margin:0 auto; }
.hp-usp{ position:relative; padding:6px 38px; text-align:center; }
.hp-usp + .hp-usp{ border-left:1px solid var(--border-soft); }
.hp-usp-icon{ width:72px; height:72px; margin:0 auto 22px; display:flex; align-items:center; justify-content:center; color:var(--bronze); position:relative; }
.hp-usp-icon::after{ content:''; position:absolute; inset:0; border-radius:50%; background:radial-gradient(circle, rgba(232,84,31,.12), transparent 70%); transform:scale(.6); opacity:0; transition:transform .6s var(--ease),opacity .6s var(--ease); }
.hp-usp-icon svg{ width:50px; height:50px; position:relative; z-index:1; transition:transform .5s var(--ease); }
.in-view .hp-usp-icon::after,.hp-usp:hover .hp-usp-icon::after{ transform:scale(1); opacity:1; }
.hp-usp:hover .hp-usp-icon svg{ transform:translateY(-4px); }
.hp-usp h3{ font-family:var(--font-display); font-weight:700; font-size:21px; letter-spacing:.02em; color:var(--brand-dark); margin:0 0 10px; }
.hp-usp p{ font-size:15px; line-height:1.6; color:var(--text-soft); max-width:300px; margin:0 auto; }
.hp-usp-stats{ display:flex; justify-content:center; gap:72px; margin-top:60px; padding-top:42px; border-top:1px solid var(--border-soft); }
.hp-usp-stats > div{ text-align:center; }
.hp-usp-stats strong{ display:block; font-family:var(--font-heading); font-weight:800; font-size:44px; color:var(--bronze); line-height:1; }
.hp-usp-stats span{ display:block; margin-top:8px; font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-muted); }
@media(max-width:820px){
  .hp-usps-grid{ grid-template-columns:1fr; gap:34px; }
  .hp-usp{ padding:0 12px; }
  .hp-usp + .hp-usp{ border-left:none; border-top:1px solid var(--border-soft); padding-top:34px; }
  .hp-usp-stats{ gap:36px; flex-wrap:wrap; }
  .hp-usp-stats strong{ font-size:36px; }
}

/* ===================================================================
   REVIEWS sectie: witte tint (overgang naar lichte contact-sectie zichtbaar)
   + nette gecentreerde weergave bij weinig reviews (geen loop van 1).
   =================================================================== */
.hp-greviews{ background:var(--bg) !important; }
.hpgr-marquee.hpgr-marquee--few{ overflow:visible; }
.hpgr-marquee.hpgr-marquee--few .hpgr-track{
  display:flex; justify-content:center; gap:24px; transform:none !important; animation:none !important; flex-wrap:wrap;
}
.hpgr-marquee.hpgr-marquee--few .hpgr-card{ flex:0 1 460px; max-width:520px; }

/* ===================================================================
   SECTIE-OVERGANGEN: duidelijke grenzen via wit-tinten + dichter op elkaar
   =================================================================== */
/* Over ons (wit) -> Diensten (cream): zichtbare grens + dichter op elkaar */
.hp-overons{ background:var(--bg) !important; padding-bottom:var(--sec-y) !important; }
.hp-services{ background:var(--cream) !important; padding-top:var(--sec-y) !important; }

/* FAQ in eigen sectie met eigen tint -> duidelijke grens met contact-sectie erboven */
.hp-faqsec{ background:var(--bg); padding:74px 0 88px; }
.hp-faqsec .container{ max-width:var(--container); margin:0 auto; padding:0 24px; }
.hp-faqcontact{ background:var(--cream) !important; margin-top:0 !important; }

/* ===================================================================
   SUBPAGINA-FIXES: leesbare contacttekst in lichte hp-contact +
   werkwijze met 3 stappen netjes (rondjes volledig, lijn niet doorlopend)
   =================================================================== */
/* "Wij informeren u" contact-items op de LICHTE hp-contact: donkere tekst */
.hp-contact .calc-contact-item strong{ color:var(--brand-dark) !important; }
.hp-contact .calc-contact-item span{ color:var(--text-soft) !important; }
.hp-contact .calc-contact-item svg{ color:var(--bronze) !important; }
.hp-contact .calc-cta-v2{ color:#fff; }

/* Werkwijze op subpagina's: 3 stappen -> 3 kolommen, lijn netjes tussen de rondjes */
.werkwijze{ grid-template-columns:repeat(3,1fr) !important; max-width:920px; margin:0 auto; }
.werkwijze::before{ left:16.66%; right:16.66%; }
.werk-num{ box-shadow:0 0 0 8px var(--bg); }
@media(max-width:760px){
  .werkwijze{ grid-template-columns:1fr !important; max-width:520px; }
  .werkwijze::before{ display:none; }
}

/* SUBHERO: foto vult tot achter de topbar+nav (geen witte band meer bovenaan) */
.subhero{ margin-top:0 !important; padding-top:calc(var(--topbar-h) + 100px) !important; }

/* ===================================================================
   REVISIE-RONDE: nav-telefoon, CTA-telefoonknop, FAQ<->contact afstand
   =================================================================== */
/* Telefoonnummer in de nav NOOIT over twee regels */
.nav-phone{ white-space:nowrap !important; flex-shrink:0; }
.nav-cta{ flex-shrink:0; }
.nav-cta > .btn.btn-primary{ white-space:nowrap; }

/* rich-final-cta: telefoon als knop (outline-pill) naast 'Neem contact op' */
.btn-pill-outline{ display:inline-flex; align-items:center; gap:10px; padding:18px 32px; background:transparent; color:var(--cream); border:2px solid rgba(247,245,242,.45); border-radius:999px; font-family:var(--font-heading); font-weight:700; font-size:15.5px; text-decoration:none; transition:all .25s var(--ease); }
.btn-pill-outline svg{ width:18px; height:18px; }
.btn-pill-outline:hover{ background:rgba(247,245,242,.12); border-color:var(--cream); transform:translateY(-2px); }

/* FAQ-sectie op subpagina's: witte tint + dichter op de DIRECT CONTACT-sectie eronder */
.faq-sec{ padding-bottom:46px !important; }
.hp-contact{ padding-top:clamp(64px, 8vw, 112px) !important; }

/* ===================================================================
   REVISIE: streepjes voor kopjes WEG + reviews stil + tints + spacing
   =================================================================== */
/* 1) Streepje (dash) voor elk kopje volledig verwijderen,
.hero-eyebrow::before,
.hp-hs-eyebrow::before{ display:none !important; content:none !important; }

/* 2) Reviews STIL: 3 kaarten vast naast elkaar, geen beweging, geen duplicaten */
.hpgr-marquee.hpgr-static{ overflow:visible !important; }
.hpgr-marquee.hpgr-static .hpgr-track{ display:grid !important; grid-template-columns:repeat(3,1fr) !important; gap:24px !important; transform:none !important; animation:none !important; overflow:visible !important; padding:8px 2px !important; scroll-snap-type:none !important; }
.hpgr-marquee.hpgr-static .hpgr-card{ width:auto !important; flex:none !important; }
@media (max-width:1023px){ .hpgr-marquee.hpgr-static .hpgr-track{ grid-template-columns:1fr !important; } }

/* 3) Sectie-tints: zie aparte nth-of-type alternatie hieronder */

/* 4) Secties dichter op elkaar (kleiner gat) */
:root{ --section-y:76px; }

/* Sollicitatie: upload-velden */
.of-file input[type=file]{ width:100%; padding:14px; border:1.5px dashed var(--border); border-radius:12px; background:var(--bg-alt); font-family:var(--font-body); font-size:14px; color:var(--text-soft); cursor:pointer; }
.of-file input[type=file]::file-selector-button{ margin-right:12px; padding:8px 16px; border:none; border-radius:8px; background:var(--bronze); color:#fff; font-family:var(--font-heading); font-weight:700; font-size:13px; cursor:pointer; }
.of-privacy{ font-size:12.5px; color:var(--text-muted); margin-top:14px; }

/* Subpagina's: opeenvolgende secties altijd afwisselend van tint (wit / greige),
   zodat je bij elke nieuwe sectie/kopje duidelijk ziet dat je overgaat.
   Donkere secties (subhero, final-cta) uitgezonderd. */
body.subpage > section:not(.subhero):not(.dark):not(.rich-final-cta):nth-of-type(odd){ background:var(--bg) !important; }
body.subpage > section:not(.subhero):not(.dark):not(.rich-final-cta):nth-of-type(even){ background:var(--bg-alt) !important; }

/* Homepage: hp-overons greige zodat de afwisseling vanaf de hero klopt
   (hero zwart -> overons greige -> services wit -> werkwijze greige -> ...) */
.hp-overons{ background:var(--bg-alt) !important; }

/* Google Translate volledig onzichtbaar (banner, tooltip, gadget, highlight) */
.goog-te-banner-frame, .goog-te-balloon-frame, #goog-gt-tt, .goog-tooltip, .goog-tooltip *, .goog-te-gadget, .goog-logo-link, iframe.skiptranslate { display:none !important; visibility:hidden !important; }
body { top:0 !important; position:static !important; }
.goog-text-highlight { background:none !important; box-shadow:none !important; }
#google_translate_element { position:absolute !important; top:-9999px !important; left:-9999px !important; width:1px !important; height:1px !important; overflow:hidden !important; opacity:0 !important; }

/* ===== Bot: header-knoppen (vergroten/sluiten) + compacte mobiele weergave ===== */
.agbot-hbtns{ margin-left:auto; display:flex; gap:6px; flex:none; align-items:center; }
.agbot-ctl{ width:32px; height:32px; padding:0; border:none; border-radius:9px; background:rgba(255,255,255,.14); color:#fff; display:flex; align-items:center; justify-content:center; cursor:pointer; transition:background .2s; }
.agbot-ctl:hover{ background:rgba(255,255,255,.26); }
.agbot-ctl svg{ width:17px; height:17px; }
/* Nooit groter dan het scherm */
.agbot-panel{ max-height:calc(100vh - 110px); }
/* Vergroot-stand (desktop) */
.agbot.expanded .agbot-panel{ width:440px; height:80vh; max-height:calc(100vh - 90px); }
.agbot.expanded .agbot-body{ flex:1 1 auto; height:auto; min-height:0; }

/* Mobiel: compact, neemt NOOIT het hele scherm in beslag */
@media (max-width:560px){
  .agbot{ left:14px; bottom:14px; }
  .agbot-panel{ width:calc(100vw - 28px); max-width:none; bottom:70px; max-height:none; }
  .agbot-body{ height:34vh; min-height:160px; flex:none; }
  .agbot-header{ padding:14px 14px; }
  .agbot-avatar{ width:38px; height:38px; }
  /* Vergroot-stand (mobiel): groter, maar met ruimte bovenaan + makkelijk te sluiten */
  .agbot.expanded .agbot-panel{ width:calc(100vw - 20px); max-height:none; bottom:70px; }
  .agbot.expanded .agbot-body{ height:64vh; }
}

/* ===== Facebook in header + mobiel menu ===== */
.nav-fb{ display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; border-radius:50%; color:inherit; background:rgba(120,120,120,.12); transition:background .2s,color .2s,transform .2s; flex:none; text-decoration:none; }
.nav-fb svg{ width:18px; height:18px; }
.nav-fb:hover{ background:#1877F2; color:#fff; transform:translateY(-2px); }
.mobile-menu-fb{ display:flex; align-items:center; gap:10px; }
.mobile-menu-fb svg{ width:20px; height:20px; color:#1877F2; flex:none; }
@media (max-width:768px){ .nav-fb{ display:none; } }

/* FB-item nooit in de horizontale nav-links tonen (alleen in mobiel menu) */
.nav-links .mobile-menu-fb-item{ display:none !important; }

/* ===== FB naast logo + logo weg bij mobiel scrollen + bot alleen homepage + footer FB + reviews mobiel ===== */
.nav-fb-left{ display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:50%; color:#fff; background:#1877F2; margin-left:14px; flex:none; text-decoration:none; transition:background .2s,transform .2s; box-shadow:0 2px 8px rgba(24,119,242,.35); }
.nav-fb-left svg{ width:18px; height:18px; }
.nav-fb-left:hover{ background:#0d63d4; transform:translateY(-2px); }
@media (max-width:768px){ .nav-fb-left{ display:none; } }

/* Mobiel: logo niet tonen in de meescrollende (sticky) balk */
@media (max-width:768px){ .nav.scrolled .nav-logo{ display:none !important; } }

/* Bot uitsluitend op de homepage (niet op subpaginas) */
body.subpage .agbot{ display:none !important; }

/* Footer: Facebook-icoon onderin, gecentreerd */
.footer-social{ display:flex; justify-content:center; padding:10px 0 2px; }
.footer-fb{ display:inline-flex; align-items:center; justify-content:center; width:44px; height:44px; border-radius:50%; background:rgba(255,255,255,.10); color:#fff; transition:background .2s,color .2s,transform .2s; }
.footer-fb svg{ width:22px; height:22px; }
.footer-fb:hover{ background:#1877F2; color:#fff; transform:translateY(-3px); }

/* Reviews mobiel: 1 kolom, gecentreerd, binnen het scherm (niet tegen de zijkant) */
@media (max-width:1023px){
  .hpgr-marquee.hpgr-static{ width:100% !important; max-width:100% !important; overflow:hidden !important; }
  .hpgr-marquee.hpgr-static .hpgr-track{ grid-template-columns:minmax(0,1fr) !important; width:100% !important; max-width:100% !important; box-sizing:border-box !important; padding:8px 16px 10px !important; gap:14px !important; justify-items:center !important; }
  .hpgr-marquee.hpgr-static .hpgr-card{ width:100% !important; max-width:100% !important; box-sizing:border-box !important; margin:0 auto !important; }
}

/* Footer: KvK-blok + Facebook eronder (netjes, eigen regel) */
.footer-company{ margin-top:18px; }
.footer-company .footer-kvk{ display:block; font-size:13px; color:rgba(255,255,255,.6); letter-spacing:.2px; margin-bottom:4px; }
.footer-naw .footer-fb, .footer-company .footer-fb{ display:flex; margin-top:14px; }

/* === DEHAAS / SKILL-REGEL: tips & reviews STILSTAAND (niet bewegen, wel inschuiven) === */
.hp-tips-marquee{overflow:visible !important}
.hp-tips-track{animation:none !important;transform:none !important;display:grid !important;grid-template-columns:repeat(4,1fr);gap:18px;width:auto !important}
.hp-tips-track .hp-tips-card:nth-child(n+5){display:none !important}
@media (max-width:1023px){.hp-tips-track{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.hp-tips-track{grid-template-columns:1fr}}
.hp-greviews .hpgr-marquee{overflow:visible !important}
.hp-greviews .hpgr-track{animation:none !important;transform:none !important;display:grid !important;grid-template-columns:repeat(3,1fr);gap:18px;width:auto !important;overflow:visible !important}
.hp-greviews .hpgr-track>*:nth-child(n+4){display:none !important}
@media (max-width:1023px){.hp-greviews .hpgr-track{grid-template-columns:1fr}}

/* === SKILL-REGEL: tips & reviews kaarten vullen hun vak netjes (geen gaten ertussen) === */
.hp-tips-track{grid-template-columns:repeat(4,1fr) !important;gap:24px !important}
.hp-tips-track .hp-tips-card{width:100% !important;max-width:none !important;min-width:0 !important;margin:0 !important;flex:none !important}
.hp-greviews .hpgr-track{grid-template-columns:repeat(3,1fr) !important;gap:24px !important;align-items:stretch !important}
.hp-greviews .hpgr-card{width:100% !important;max-width:none !important;min-width:0 !important;flex:none !important;margin:0 !important}
@media (max-width:1023px){.hp-tips-track{grid-template-columns:repeat(2,1fr) !important}.hp-greviews .hpgr-track{grid-template-columns:1fr !important}}
@media(max-width:560px){.hp-tips-track{grid-template-columns:1fr !important}}

/* === SKILL-REGEL: tips-grid binnen de container (niet tegen de paginarand) === */
.hp-tips-marquee{max-width:var(--container) !important;margin:0 auto !important;padding:0 24px !important;overflow:visible !important;box-sizing:border-box}
@media(max-width:600px){.hp-tips-marquee{padding:0 18px !important}}

/* === SKILL-REGEL: taal-dropdown (Google Translate) + Google-balk verbergen === */
.goog-te-banner-frame,.goog-te-banner-frame.skiptranslate{display:none !important;}
.goog-te-gadget,.goog-te-gadget-icon,.goog-logo-link,.goog-te-gadget span{display:none !important;}
body{top:0 !important;}
#goog-gt-tt,.goog-te-balloon-frame,.goog-tooltip,.goog-tooltip:hover{display:none !important;}
.goog-text-highlight{background:none !important;box-shadow:none !important;}
#google_translate_element{position:absolute !important;left:-9999px !important;top:-9999px !important;width:1px;height:1px;overflow:hidden;opacity:0;}
.lang{display:none !important;} /* dubbele zwevende taalknop uit: er is er maar één (header) */
.nav-lang{position:relative;}
.nav-lang-btn{display:inline-flex;align-items:center;gap:7px;cursor:pointer;}
.nav-lang-flag{font-size:19px;line-height:1;}
.nav-lang-arrow{transition:transform .2s;}
.nav-lang.open .nav-lang-arrow{transform:rotate(180deg);}
.nav-lang-dd{position:absolute;top:calc(100% + 12px);right:0;background:#fff;border:1px solid #e6e8ec;border-radius:14px;box-shadow:0 18px 50px rgba(15,28,45,.18);padding:8px;min-width:208px;display:none;z-index:1300;}
.nav-lang.open .nav-lang-dd{display:block;}
.nav-lang-item{display:flex;align-items:center;gap:12px;width:100%;padding:11px 14px;border:none;background:none;border-radius:10px;cursor:pointer;font-family:var(--font-body);font-size:15px;color:var(--brand-dark);text-align:left;}
.nav-lang-item:hover{background:#f3f5f8;}
.nav-lang-item.is-active{background:color-mix(in srgb, var(--bronze) 14%, transparent);font-weight:700;}

/* ============ WAAROM KIEZEN VOOR ONS ============ */
.hp-waarom{padding:88px 0;background:#f4f7fb;}
.hp-waarom-head{max-width:720px;margin:0 auto 46px;text-align:center;}
.hp-waarom-head h2{color:#0F172A;font-size:clamp(28px,3.4vw,40px);line-height:1.14;margin:0 0 14px;}
.hp-waarom-head p{color:#5a6b7b;font-size:17px;line-height:1.6;margin:0;}
.hp-waarom-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;}
.hp-waarom-card{background:#fff;border:1px solid #e6ecf3;border-radius:18px;padding:30px 26px;box-shadow:0 10px 30px -18px rgba(12,26,38,.28);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;}
.hp-waarom-card:hover{transform:translateY(-6px);box-shadow:0 18px 42px -18px rgba(12,26,38,.34);border-color:color-mix(in srgb,var(--bronze) 40%,#fff);}
.hp-waarom-ic{width:56px;height:56px;border-radius:15px;background:color-mix(in srgb,var(--bronze) 12%,#fff);display:flex;align-items:center;justify-content:center;margin-bottom:18px;}
.hp-waarom-ic svg{width:28px;height:28px;stroke:var(--bronze);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.hp-waarom-card h3{color:#0F172A;font-size:19px;margin:0 0 9px;line-height:1.25;}
.hp-waarom-card p{color:#5a6b7b;font-size:14.5px;line-height:1.55;margin:0;}
@media(max-width:960px){.hp-waarom-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:560px){.hp-waarom{padding:60px 0;}.hp-waarom-grid{grid-template-columns:1fr;gap:16px;}}

/* hp-waarom: professionele achtergrondfoto + donkere overlay (tekst leesbaar) */
.hp-waarom{background:linear-gradient(rgba(11,21,33,.83),rgba(13,23,37,.90)),url(../img/hero/waarom-bg.webp);background-size:cover;background-position:center;}
.hp-waarom-head h2{color:#ffffff;}
.hp-waarom-head p{color:rgba(255,255,255,.86);}
.hp-waarom-card{box-shadow:0 18px 48px -20px rgba(0,0,0,.55);}

/* ============ OFFERTE-CALCULATOR (rucalc) ============ */
.rucalc{text-align:left;}
.rucalc-head{text-align:center;margin-bottom:22px;}
.rucalc-head h3{margin:6px 0 8px;}
.rucalc-progress{margin:0 0 26px;}
.rucalc-prog-track{height:6px;border-radius:999px;background:color-mix(in srgb,var(--bronze) 14%,#fff);overflow:hidden;}
#rucalc-prog{display:block;height:100%;width:25%;border-radius:999px;background:linear-gradient(90deg,var(--bronze),var(--bronze-light));transition:width .35s cubic-bezier(.4,0,.2,1);}
.rucalc-steps-lbl{display:flex;justify-content:space-between;margin-top:9px;}
.rucalc-steps-lbl span{font-size:11.5px;font-weight:600;letter-spacing:.4px;color:var(--text-muted);transition:color .25s;text-transform:uppercase;}
.rucalc-steps-lbl span.on{color:var(--bronze-dark);}
.rucalc-q{font-family:var(--font-display,inherit);font-size:18px;color:var(--brand-dark);margin:0 0 4px;font-weight:700;}
.rucalc-hint{font-size:13.5px;color:var(--text-muted);margin:0 0 16px;}
.rucalc-opt{font-size:12px;font-weight:600;color:var(--bronze);background:color-mix(in srgb,var(--bronze) 9%,#fff);padding:2px 9px;border-radius:999px;margin-left:6px;vertical-align:middle;}
/* service-kaarten */
.rucalc-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.rucalc-card{display:flex;align-items:center;gap:13px;padding:15px 16px;border:1.5px solid #e3eaf2;border-radius:15px;background:#fff;cursor:pointer;text-align:left;position:relative;transition:border-color .2s,box-shadow .2s,background .2s,transform .12s;font:inherit;}
.rucalc-card:hover{border-color:color-mix(in srgb,var(--bronze) 45%,#fff);box-shadow:0 10px 26px -16px rgba(10,130,230,.5);transform:translateY(-2px);}
.rucalc-card-ic{flex:0 0 42px;width:42px;height:42px;border-radius:12px;background:color-mix(in srgb,var(--bronze) 10%,#fff);display:flex;align-items:center;justify-content:center;transition:background .2s;}
.rucalc-card-ic svg{width:22px;height:22px;stroke:var(--bronze);}
.rucalc-card-lbl{font-size:14.5px;font-weight:600;color:var(--brand-dark);line-height:1.25;}
.rucalc-card-check{position:absolute;top:10px;right:10px;width:20px;height:20px;border-radius:50%;background:var(--bronze);display:flex;align-items:center;justify-content:center;opacity:0;transform:scale(.5);transition:.2s;}
.rucalc-card-check svg{width:12px;height:12px;stroke:#fff;}
.rucalc-card.on{border-color:var(--bronze);background:color-mix(in srgb,var(--bronze) 6%,#fff);box-shadow:0 10px 26px -16px rgba(10,130,230,.55);}
.rucalc-card.on .rucalc-card-ic{background:var(--bronze);}
.rucalc-card.on .rucalc-card-ic svg{stroke:#fff;}
.rucalc-card.on .rucalc-card-check{opacity:1;transform:scale(1);}
/* pills */
.rucalc-pills{display:flex;flex-wrap:wrap;gap:10px;}
.rucalc-pill{padding:11px 18px;border:1.5px solid #e3eaf2;border-radius:999px;background:#fff;cursor:pointer;font:inherit;font-size:14px;font-weight:600;color:var(--brand-dark);transition:.18s;}
.rucalc-pill:hover{border-color:color-mix(in srgb,var(--bronze) 45%,#fff);}
.rucalc-pill.on{background:var(--bronze);border-color:var(--bronze);color:#fff;box-shadow:0 10px 22px -12px rgba(10,130,230,.6);}
/* textarea + fields */
.rucalc-ta,.rucalc-f input{width:100%;border:1.5px solid #e3eaf2;border-radius:13px;padding:13px 15px;font:inherit;font-size:14.5px;color:var(--brand-dark);background:#fff;transition:border-color .18s,box-shadow .18s;box-sizing:border-box;}
.rucalc-ta:focus,.rucalc-f input:focus{outline:none;border-color:var(--bronze);box-shadow:0 0 0 4px color-mix(in srgb,var(--bronze) 14%,transparent);}
.rucalc-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.rucalc-f{display:flex;flex-direction:column;gap:6px;}
.rucalc-f span{font-size:13px;font-weight:600;color:var(--text-soft);}
/* upload */
.rucalc-upload{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:26px 18px;border:2px dashed color-mix(in srgb,var(--bronze) 32%,#dfe7f0);border-radius:16px;background:color-mix(in srgb,var(--bronze) 4%,#fff);cursor:pointer;text-align:center;transition:.18s;}
.rucalc-upload:hover,.rucalc-upload.drag{border-color:var(--bronze);background:color-mix(in srgb,var(--bronze) 8%,#fff);}
.rucalc-upload svg{width:30px;height:30px;stroke:var(--bronze);}
.rucalc-upload-t{font-size:14px;color:var(--brand-dark);}
.rucalc-upload-s{font-size:12.5px;color:var(--text-muted);}
.rucalc-previews{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;}
.rucalc-prev{position:relative;width:70px;height:70px;border-radius:11px;overflow:hidden;border:1px solid #e3eaf2;}
.rucalc-prev img{width:100%;height:100%;object-fit:cover;}
.rucalc-prev button{position:absolute;top:3px;right:3px;width:20px;height:20px;border:none;border-radius:50%;background:rgba(17,32,46,.82);color:#fff;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;}
/* nav */
.rucalc-nav{display:flex;gap:12px;margin-top:26px;align-items:center;}
.rucalc-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:none;border-radius:999px;font:inherit;font-weight:700;font-size:15px;cursor:pointer;padding:14px 26px;transition:.2s;}
.rucalc-btn svg{width:18px;height:18px;}
.rucalc-back{background:transparent;color:var(--text-soft);padding-left:6px;padding-right:6px;}
.rucalc-back:hover{color:var(--brand-dark);}
.rucalc-next,.rucalc-submit{margin-left:auto;background:linear-gradient(135deg,var(--bronze),var(--bronze-dark));color:#fff;box-shadow:0 14px 30px -12px rgba(10,130,230,.65);}
.rucalc-next:hover,.rucalc-submit:hover{transform:translateY(-2px);box-shadow:0 18px 38px -12px rgba(10,130,230,.7);}
.rucalc-cards.shake{animation:rucalcShake .42s;}
@keyframes rucalcShake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-7px)}40%,80%{transform:translateX(7px)}}
.of-file-restored{margin-top:8px;font-size:13px;font-weight:600;color:var(--bronze-dark);background:color-mix(in srgb,var(--bronze) 9%,#fff);border-radius:9px;padding:8px 12px;}
@media(max-width:560px){.rucalc-cards,.rucalc-fields{grid-template-columns:1fr;}}

.rucalc-btn[hidden],.rucalc-step[hidden]{display:none!important;}

/* social-knoppen in de nav (rechts van offerte-CTA) */
.nav-social{display:flex;align-items:center;gap:8px;margin-left:6px;}
.nav-social-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;transition:background .2s,transform .15s;}
.nav-social-btn:hover{background:var(--bronze);color:#fff;transform:translateY(-2px);}
.nav-social-btn svg{width:18px;height:18px;}
@media (max-width:1023px){.nav-social{display:none !important;}}

/* footer: 5 kolommen + Informatie-blok */
.footer-grid{grid-template-columns:1.15fr 1.45fr .85fr .9fr 1.25fr;gap:30px;}
.footer-info{list-style:none;padding:0;margin:0;}
.footer-info li{font-size:14.5px;color:rgba(247,245,242,.82);margin-bottom:10px;line-height:1.45;}
@media(max-width:1024px){.footer-grid{grid-template-columns:1fr 1fr 1fr;gap:32px;}}
@media(max-width:768px){.footer-grid{grid-template-columns:1fr;gap:30px;}}

/* footer desktop-verfijning (6 kolommen netjes) */
@media(min-width:1025px){.footer-grid{grid-template-columns:1.15fr 1.45fr .85fr .9fr 1.25fr;gap:26px;}}
.footer-col a,.footer-info li,.footer-col .contact-item{font-size:13.5px;}
.footer-col h4{font-size:14px;}

/* === Footer strakker: kolommen bovenaan uitgelijnd, logo erbovenuit, IBAN op 1 regel === */
.footer-grid{align-items:start}
.footer-logo{margin-bottom:32px}
.footer-logo img{height:58px;width:auto}
.footer-col h4{margin-top:10px}
.footer-info li{white-space:nowrap}
.footer-info-merged{margin-top:16px}
@media(max-width:1024px){.footer-grid{grid-template-columns:1fr 1fr 1fr !important;gap:30px}}
@media(max-width:768px){.footer-grid{grid-template-columns:1fr !important;gap:28px}.footer-col h4{margin-top:0}.footer-info li{white-space:normal}}

.footer-col .contact-item{font-size:13px}
.footer-col .contact-item a{word-break:normal}

/* === Footer v2: KVK/BTW/IBAN onder Contact, koppen op hoogte van de USP-tekst === */
.footer-col h4{margin-top:0}
.footer-grid{grid-template-columns:1.0fr 1.6fr .8fr .85fr .95fr}
.footer-grid > .footer-col:not(:first-child){padding-top:98px}
.footer-col .contact-item-info{margin-top:12px}
.footer-col .contact-item-info:first-of-type{margin-top:16px}
.footer-col .contact-item-info span{white-space:nowrap}
@media(min-width:1025px){.footer-grid{grid-template-columns:1.0fr 1.6fr .8fr .85fr .95fr}}
@media(max-width:1024px){.footer-grid{grid-template-columns:1fr 1fr 1fr !important}.footer-grid > .footer-col:not(:first-child){padding-top:0}}
@media(max-width:768px){.footer-grid{grid-template-columns:1fr !important}.footer-grid > .footer-col:not(:first-child){padding-top:0}.footer-col .contact-item-info span{white-space:normal}}

/* === Footer v3: overal gelijke tussenruimte tussen de kolommen === */
.footer-grid{grid-template-columns:repeat(5,max-content);justify-content:space-between;column-gap:40px}
@media(min-width:1025px){.footer-grid{grid-template-columns:repeat(5,max-content);justify-content:space-between;column-gap:40px}}
@media(max-width:1024px){.footer-grid{grid-template-columns:1fr 1fr 1fr !important;justify-content:normal;column-gap:30px}.footer-grid > .footer-col:not(:first-child){padding-top:0}}
@media(max-width:768px){.footer-grid{grid-template-columns:1fr !important;justify-content:normal}.footer-grid > .footer-col:not(:first-child){padding-top:0}}

/* === Footer v4: compacter + lagere achtergrond (logo blijft in beeld met marge) === */
.footer{padding-top:48px !important}
.footer-grid{justify-content:start;column-gap:60px;padding-bottom:34px}
@media(min-width:1025px){.footer-grid{justify-content:start;column-gap:60px}}
.footer-logo{margin-bottom:18px}
.contact-item{margin-bottom:8px}
.contact-item-info{margin-top:8px}
.contact-item-info:first-of-type{margin-top:12px}
.footer-bottom{padding:18px 0}
.footer-grid > .footer-col:not(:first-child){padding-top:84px}
@media(max-width:1024px){.footer-grid{justify-content:normal !important;column-gap:30px}.footer-grid > .footer-col:not(:first-child){padding-top:0}}
@media(max-width:768px){.footer-grid{grid-template-columns:1fr !important}.footer-grid > .footer-col:not(:first-child){padding-top:0}}

/* === Footer-bottom: links uitgelijnd met DPS-credit === */
.footer-bottom{justify-content:center;gap:40px;flex-wrap:wrap}
.footer-bottom a{color:rgba(247,245,242,.78);text-decoration:none;transition:color .2s ease}
.footer-bottom a:hover{color:#fff}
.footer-bottom .fb-made{color:var(--bronze)!important;font-weight:600;transition:color .2s ease}.fb-made:hover{color:var(--bronze-light,#FBBF24)!important;text-decoration:underline}
@media(max-width:768px){.footer-bottom{gap:14px;justify-content:center;text-align:center}}

/* === Footer social-knoppen (onder de USP's in de logo-kolom) === */
.footer-social{display:flex;gap:12px;margin-top:22px}
.footer-social a{width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(247,245,242,.08);color:rgba(247,245,242,.85);transition:background .2s ease,color .2s ease}
.footer-social a:hover{background:var(--bronze,#F59E0B);color:#fff}
.footer-social svg{width:18px;height:18px}

.footer-social{flex-direction:column;gap:10px}

/* === Footer: social iets hoger + hele grid gecentreerd === */
.footer-social{margin-top:6px}
.footer-grid{justify-content:center}
@media(min-width:1025px){.footer-grid{justify-content:center}}
@media(max-width:1024px){.footer-grid{justify-content:center !important}}

/* === Ad-landingspagina: hero met offerteformulier (conversie boven de vouw) === */
.subhero.lp-hero{min-height:auto;padding-bottom:64px}
.subhero.lp-hero .subhero-content{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;max-width:1180px;margin:0 auto;width:100%}
.lp-hero-text{max-width:560px}
.lp-usps{list-style:none;padding:0;margin:20px 0 0;display:flex;flex-direction:column;gap:10px}
.lp-usps li{position:relative;padding-left:30px;color:#fff;font-weight:600}
.lp-usps li::before{content:"";position:absolute;left:0;top:2px;width:20px;height:20px;border-radius:50%;background:var(--bronze,#F59E0B) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/13px no-repeat}
.lp-hero-phone{display:inline-flex;align-items:center;gap:9px;margin-top:22px;background:var(--bronze,#F59E0B);color:#fff;padding:13px 26px;border-radius:40px;font-weight:700;text-decoration:none;transition:background .2s}
.lp-hero-phone:hover{background:var(--bronze-dark,#D97706)}
.lp-form{background:#fff;border-radius:18px;padding:30px 28px;box-shadow:0 24px 60px rgba(0,0,0,.3)}
.lp-form h2{font-size:1.42rem;margin:0 0 4px;color:var(--brand-dark,#0F172A);line-height:1.2}
.lp-form-sub{font-size:.92rem;color:#5a6b78;margin:0 0 16px}
.lp-of-form{display:flex;flex-direction:column;gap:10px}
.lp-of-form input,.lp-of-form textarea{width:100%;padding:12px 14px;border:1px solid #d8e0e6;border-radius:10px;font:inherit;background:#fff;color:#14202b;box-sizing:border-box}
.lp-of-form input::placeholder,.lp-of-form textarea::placeholder{color:#9aa7b1}
.lp-of-form input:focus,.lp-of-form textarea:focus{outline:none;border-color:var(--bronze,#F59E0B)}
.lp-submit{background:var(--bronze,#F59E0B);color:#fff;border:none;padding:14px;border-radius:10px;font-weight:700;cursor:pointer;font-size:1rem;margin-top:4px;transition:background .2s;width:100%}
.lp-submit:hover{background:var(--bronze-dark,#D97706)}
@media (max-width:1023px){.subhero.lp-hero .subhero-content{grid-template-columns:1fr;gap:26px}.lp-hero-text{max-width:none}}

/* ============================================================
   TOUCH-FIX (mobiel) — één tap = directe actie, nooit dubbeltap.
   Verandert niets aan layout of animaties; alleen tap-gedrag.
   ============================================================ */
@media (hover: none), (pointer: coarse){
  /* Hover-dropdown niet via hover op touch: parent-link navigeert direct bij 1 tap */
  .nav-links .has-submenu:hover > .submenu,
  .nav-links .has-submenu:focus-within > .submenu{opacity:0 !important;visibility:hidden !important}
}
a,button,input,select,textarea,label,summary,[role="button"],
.btn,.nav-cta,.nav-cta .btn,.sticky-cta a,.wa-widget,
.seo-related-card,.hp-svc-card,.hp-tips-card,.hpgr-card,.hp-proj-card,
.faq-q,.calc-tile,.calc-radio,.tab,.dot,.mobile-menu a,.nav-links a{
  touch-action:manipulation;
}

/* ============================================================
   MOBIEL — inline grids (repeat(3/4,1fr)) dwingen naar 1 kolom.
   Inline styles negeren media-queries; !important overschrijft ze.
   Voorkomt afgebroken plaatsnamen in o.a. werkgebied/regio-kaarten.
   ============================================================ */
@media (max-width: 600px){
  [style*="repeat(3,1fr)"],[style*="repeat(3, 1fr)"],
  [style*="repeat(4,1fr)"],[style*="repeat(4, 1fr)"]{grid-template-columns:1fr !important}
}
@media (min-width: 601px) and (max-width: 900px){
  [style*="repeat(3,1fr)"],[style*="repeat(3, 1fr)"],
  [style*="repeat(4,1fr)"],[style*="repeat(4, 1fr)"]{grid-template-columns:repeat(2,1fr) !important}
}

/* ============================================================
   HAMBURGER-FIX (mobiel <=900px): drie streepjes exact gelijk,
   gecentreerd en volledig binnen de cirkel. Voorkomt scheef
   uitstekende lijnen ("punten steken eruit") en clipping.
   Staat bewust achteraan zodat het eerdere regels overschrijft.
   ============================================================ */
@media (max-width:1023px){
  .nav-burger{position:relative !important;overflow:hidden !important;
    flex:0 0 44px !important;width:44px !important;height:44px !important;
    box-sizing:border-box !important;padding:0 !important}
  .nav-burger span{position:absolute !important;top:50% !important;left:50% !important;
    width:20px !important;height:2px !important;margin:-1px 0 0 -10px !important;
    background:#fff !important;border-radius:2px !important}
  .nav-burger span::before,
  .nav-burger span::after{content:'' !important;position:absolute !important;left:0 !important;
    width:20px !important;height:2px !important;background:#fff !important;border-radius:2px !important;
    transition:transform .3s var(--ease),top .3s var(--ease)}
  .nav-burger span::before{top:-6px !important}
  .nav-burger span::after{top:6px !important}
  .nav-burger.open span{background:transparent !important}
  .nav-burger.open span::before{top:0 !important;transform:rotate(45deg) !important}
  .nav-burger.open span::after{top:0 !important;transform:rotate(-45deg) !important}
}

/* ============================================================
   SUBHERO-FIX: hero-tekst altijd BOVEN de donkere overlay.
   Sommige subpagina's (o.a. regio's) gebruiken .container i.p.v.
   .subhero-content als wrapper; die kreeg geen z-index en viel
   daardoor achter de ::before-overlay (vervaagde, onleesbare tekst).
   ============================================================ */
.subhero > .container{position:relative;z-index:2}
.subhero > .container h1{color:var(--cream)}
.subhero > .container .subhero-sub{color:rgba(247,245,242,.95)}

/* ============================================================
   OVER ONS-blok (homepage) MOBIEL: volgorde tekst -> foto.
   In de HTML staat de foto eerst; op mobiel hoort de volgorde
   eyebrow + tekst, dan de foto, dan de volgende sectie (contact).
   Desktop (>=901px) blijft foto links / tekst rechts.
   ============================================================ */
@media (max-width:1023px){
  /* volgorde: eyebrow + tekst -> FOTO -> CTA-knop (knop losgemaakt van het tekstblok) */
  .hp-overons-text{display:contents}
  .hp-overons-text > *{order:2}
  .hp-overons-photo{order:3}
  .hp-overons-text .btn{order:9; margin-top:24px}
}

/* ============================================================
   Mobiele chatbot + toetsenbord: als het toetsenbord open is
   (klasse .kb via JS/visualViewport) wordt de panel-hoogte door
   JS gezet en moet de body meeflexen, met invoer vast onderaan.
   ============================================================ */
@media (max-width:600px){
  .agbot.kb .agbot-panel{ display:flex; flex-direction:column; border-radius:18px; }
  .agbot.kb .agbot-body{ flex:1 1 0 !important; height:0 !important; min-height:0 !important; overflow-y:auto; }
  .agbot.kb .agbot-input, .agbot.kb .agbot-header{ flex:0 0 auto; }
}

/* ============================================================
   Tips & nieuws: STIL 3-kaarten raster (geen bewegende marquee).
   3 kaarten naast elkaar op desktop, gestapeld op mobiel.
   ============================================================ */
.hp-tips-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;max-width:1200px;margin:0 auto;padding:0 4px}
.hp-tips-grid .hp-tips-card{width:auto;min-width:0;flex:none;margin:0}
@media (max-width:1023px){ .hp-tips-grid{grid-template-columns:1fr} }

/* ===== DPS standaard: koppen gecentreerd (alle paginas), seo-faq ===== */
/* hero "Offerte aanvragen": VASTE REGEL - statisch fel, geen pulserende glow */
.hp-hs-static-content .hp-hs-btn,
.hp-hs-slide.is-active .hp-hs-btn{ opacity:1 !important; transform:none !important; }

.seo-faq-item{ margin-top:14px; }
.seo-faq-item h4{ margin:0 0 4px; font-size:16px; color:var(--brand-dark); }
.seo-faq-item p{ margin:0; }

/* ---- KOPPEN GECENTREERD ALS STANDAARD (alle schermen) ---- */
/* subhero: 1 gecentreerde kolom ipv 2-koloms, elke pagina */
.subhero-content{ grid-template-columns:1fr; text-align:center; max-width:880px; }
.subhero:not(.lp-hero) .subhero-content h1,.subhero:not(.lp-hero) .subhero-content .subhero-sub,.subhero:not(.lp-hero) .subhero-content .breadcrumb{margin-left:auto;margin-right:auto;}
.subhero .breadcrumb{ justify-content:center; }
/* homepage full-width sectiekoppen gecentreerd */
.hp-services > .container,
.hp-werkwijze > .container,
.hp-portfolio > .container,
.hp-tips > .container{ text-align:center; }
/* content-grids weer links zodat alleen de koppen centreren */
.hp-svc-grid,.hp-port-grid,.tips-grid{ text-align:left; }
/* subpagina sectiekoppen gecentreerd (FAQ, related, tip/project/regio intro's) */
.section-header{ text-align:center; }

/* ---- 2-KOLOMS BLOKKEN: alleen centreren op mobiel (daar stapelen ze) ---- */
@media (max-width:600px){
  .hp-overons-text{ text-align:center; }                       /* Over ons */
  .content-2col .content-text{ text-align:center; }            /* dienst: tekst naast foto */
  .content-2col .content-text .feature-list{ display:inline-block; text-align:left; }
  .hp-faqcontact .section-header{ text-align:center; }         /* homepage FAQ-blok */
  .hp-waarom{ padding-top:34px; }                              /* kop iets hoger */
}

/* #18 koppen centreren: FAQ + vrijblijvend contact */
.hp-faqsec .hp-faqcontact-faq .section-header{text-align:center}
.hp-faqsec .hp-faqcontact-info{text-align:center}
.hp-faqsec .hp-faqcontact-info .hp-calc-sub{margin-left:auto;margin-right:auto}
.hp-faqsec .faq-q{ }

/* #7 hover-gloed in logo-kleur op kaarten, met beweging */
.hp-svc-card,.hp-port-card,.why-card,.dienst-card,.project-card,.tip-card,.review-card,.voordeel-card,.hpgr-card,.mat-card,.seo-related-card{transition:transform .4s cubic-bezier(.2,.7,.2,1),box-shadow .4s ease,border-color .4s ease}
.hp-svc-card:hover,.hp-port-card:hover,.why-card:hover,.dienst-card:hover,.project-card:hover,.tip-card:hover,.review-card:hover,.voordeel-card:hover,.hpgr-card:hover,.seo-related-card:hover{
  box-shadow:0 18px 42px color-mix(in srgb,var(--bronze) 40%,transparent),0 0 0 1px color-mix(in srgb,var(--bronze) 35%,transparent) !important;
  transform:translateY(-6px) !important;
}

/* #4 bot compacter + opties 2 per rij */
.agbot-panel{ width:360px !important; height:auto !important; max-height:min(72vh,560px) !important; }
.agbot-body{ height:auto !important; max-height:48vh !important; flex:0 1 auto !important; min-height:0 !important; padding:15px !important; gap:9px !important; overflow-y:auto; }
.rucalc-pills{ display:grid !important; grid-template-columns:1fr 1fr; gap:8px !important; }
.rucalc-pill{ padding:10px 10px !important; font-size:12.5px !important; text-align:center; display:flex; align-items:center; justify-content:center; line-height:1.25; }
@media(max-width:600px){ .agbot-panel{ width:calc(100vw - 26px) !important; max-height:70vh !important; } }

/* #4 bot-opties (agbot-quick) 2 per rij */
.agbot-quick{ display:grid !important; grid-template-columns:1fr !important; gap:8px !important; align-content:start; }
.agbot-quick > *{ text-align:center !important; justify-content:center !important; padding:10px 8px !important; font-size:12.5px !important; line-height:1.25 !important; min-height:0 !important; }

/* Instagram-showcase */
.hp-insta{padding:90px 0;background:#0B111E;}
.hp-insta-head{max-width:680px;margin:0 auto 42px;text-align:center;}
.hp-insta-head h2{color:#fff;font-size:clamp(28px,3.4vw,40px);line-height:1.14;margin:0 0 14px;}
.hp-insta-head p{color:rgba(255,255,255,.78);font-size:17px;line-height:1.6;margin:0;}
.hp-insta-head p a{color:var(--bronze);text-decoration:none;font-weight:600;}
.hp-insta-head p a:hover{text-decoration:underline;}
.hp-insta-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;}
.hp-insta-card{position:relative;aspect-ratio:1/1;border-radius:14px;background-size:cover;background-position:center;overflow:hidden;display:block;box-shadow:0 14px 34px -18px rgba(0,0,0,.6);}
.hp-insta-ov{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(rgba(11,21,33,.10),rgba(11,21,33,.34));opacity:.5;transition:opacity .28s ease,background .28s ease;}
.hp-insta-card:hover .hp-insta-ov{opacity:1;background:linear-gradient(rgba(10,130,230,.28),rgba(11,21,33,.58));}
.hp-insta-ic{opacity:0;transform:scale(.82);transition:opacity .28s ease,transform .28s ease;}
.hp-insta-card:hover .hp-insta-ic{opacity:1;transform:scale(1);}
.hp-insta-ic svg{width:36px;height:36px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.hp-insta-cta{text-align:center;margin-top:36px;}
.hp-insta-btn{display:inline-flex;align-items:center;gap:11px;background:#fff;color:#0B111E;padding:15px 30px;border-radius:999px;font-weight:700;font-size:15px;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease;}
.hp-insta-btn svg:not(.ig-logo){width:21px;height:21px;stroke:#0B111E;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.ig-logo{width:24px;height:24px;flex-shrink:0;}
.hp-insta-head .ig-logo{width:17px;height:17px;vertical-align:-3px;margin-right:4px;display:inline-block;}
.hp-insta-btn:hover{transform:translateY(-3px);box-shadow:0 16px 38px -12px rgba(0,0,0,.5);}
@media (max-width:1023px){.hp-insta-grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:560px){.hp-insta{padding:60px 0;}.hp-insta-grid{grid-template-columns:repeat(2,1fr);gap:10px;}}

/* ===== Gouden neon hover (standaard, classy, volgt de muis) ===== */
.hp-waarom-card,.hp-svc-card,.hp-port-card,.hp-proj-card,.project-card,.hp-tips-card,.tip-card,.grev-card,.hpgr-card,.review-card,.dienst-card,.value-card,.mat-card,.seo-related-card,.hp-vak-card,.hp-why-card,.rucalc-card{
  position:relative;transition:box-shadow .32s ease,border-color .32s ease,transform .32s ease;
}
.hp-waarom-card::before,.hp-svc-card::before,.hp-port-card::before,.hp-proj-card::before,.project-card::before,.hp-tips-card::before,.tip-card::before,.grev-card::before,.hpgr-card::before,.review-card::before,.dienst-card::before,.value-card::before,.mat-card::before,.seo-related-card::before,.hp-vak-card::before,.hp-why-card::before,.rucalc-card::before{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:0;opacity:0;transition:opacity .32s ease;
  background:radial-gradient(200px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--bronze) 22%,transparent),transparent 62%);
}
.hp-waarom-card:hover::before,.hp-svc-card:hover::before,.hp-port-card:hover::before,.hp-proj-card:hover::before,.project-card:hover::before,.hp-tips-card:hover::before,.tip-card:hover::before,.grev-card:hover::before,.hpgr-card:hover::before,.review-card:hover::before,.dienst-card:hover::before,.value-card:hover::before,.mat-card:hover::before,.seo-related-card:hover::before,.hp-vak-card:hover::before,.hp-why-card:hover::before,.rucalc-card:hover::before{opacity:1;}
.hp-waarom-card:hover,.hp-svc-card:hover,.hp-port-card:hover,.hp-proj-card:hover,.project-card:hover,.hp-tips-card:hover,.tip-card:hover,.grev-card:hover,.hpgr-card:hover,.review-card:hover,.dienst-card:hover,.value-card:hover,.mat-card:hover,.seo-related-card:hover,.hp-vak-card:hover,.hp-why-card:hover,.rucalc-card:hover{
  border-color:color-mix(in srgb,var(--bronze) 65%,transparent)!important;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--bronze) 50%,transparent),0 0 22px -2px color-mix(in srgb,var(--bronze) 58%,transparent),0 0 60px -14px color-mix(in srgb,var(--bronze) 52%,transparent),0 20px 44px -22px rgba(0,0,0,.45)!important;
}

/* ===== Contact-links (e-mail/telefoon) klikbaar zonder linkkleur-breuk ===== */
.cc-link{color:inherit;text-decoration:none;transition:color .2s ease}
.cc-link:hover{color:var(--bronze)}
/* ===== Hamburger blijft ALTIJD rechts op mobiel (ook na scroll) ===== */
@media (max-width:1023px){
  /* nav-cta bevat lang + burger; duw de hele groep altijd rechts, ook als het logo bij scroll verdwijnt */
  .nav-cta{margin-left:auto !important}
}

/* ===== Floating telefoonknop (ALLEEN mobiel, boven de WhatsApp-knop) ===== */
.tel-btn{display:none}
@media (max-width:1023px){
  .tel-btn{display:flex;align-items:center;justify-content:center;position:fixed;right:18px;bottom:86px;width:56px;height:56px;border-radius:50%;background:var(--bronze);color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.18);z-index:9999;transition:transform .28s var(--ease),box-shadow .28s;-webkit-tap-highlight-color:transparent}
  .tel-btn svg{width:48%;height:48%;stroke:#fff;fill:none}
  .tel-btn:active{transform:scale(.93)}
}

/* ===== Chatbot op mobiel: compacter, links, ~halve schermbreedte ===== */
@media(max-width:600px){
  .agbot-panel{ width:54vw !important; min-width:215px !important; max-width:none !important; left:0 !important; transform-origin:left bottom; }
  .agbot-header{ padding:12px 12px !important; gap:9px !important; align-items:flex-start; }
  .agbot-avatar{ width:34px !important; height:34px !important; }
  .agbot-avatar svg{ width:19px; height:19px; }
  .agbot-htext strong{ font-size:14.5px; line-height:1.2; }
  .agbot-htext span{ font-size:11px; }
  .agbot-hbtns{ gap:5px; }
  .agbot-ctl{ width:28px !important; height:28px !important; }
  .agbot-ctl svg{ width:15px; height:15px; }
}

/* ============================================================
   v194 LOCKED - MOBIEL: hamburger goud/neon + volledige centrering
   + volgorde tekst>foto>USPs(2x2)>cta + footer gecentreerd
   ============================================================ */

/* --- 1. Hamburger dropdown: hover/tap/actief duidelijk goud + neon glow --- */
.mobile-menu a{
  transition:color .2s var(--ease), text-shadow .2s var(--ease),
             background .2s var(--ease), padding-left .2s var(--ease);
  border-radius:8px;
}
.mobile-menu a:hover,
.mobile-menu a:focus-visible,
.mobile-menu a:active,
.mobile-menu .submenu a:hover,
.mobile-menu .submenu a:focus-visible,
.mobile-menu .submenu a:active{
  color:var(--bronze) !important;
  opacity:1 !important;
  text-shadow:0 0 7px rgba(10,130,230,.85), 0 0 16px rgba(10,130,230,.5);
  background:linear-gradient(90deg, rgba(10,130,230,.13), rgba(10,130,230,0));
  box-shadow:inset 3px 0 0 var(--bronze);
  padding-left:12px;
}
.mobile-menu a.is-active{
  color:var(--bronze) !important;
  text-shadow:0 0 7px rgba(10,130,230,.7), 0 0 14px rgba(10,130,230,.4);
}

/* --- Tip-detail hero (.subhero.tip-hero): foto rustig en goed zichtbaar.
   Geen inzoom-animatie, foto gecentreerd, lichtere overlay (titel blijft leesbaar via tekstschaduw).
   Geldt voor alle tip-detailpagina's, NIET voor andere subpagina-heroes. --- */
.subhero.tip-hero .subhero-bg{
  animation:none !important;
  transform:none !important;
  background-position:center center;
}
.subhero.tip-hero::before{
  background:linear-gradient(180deg, rgba(10,10,10,.32) 0%, rgba(10,10,10,.40) 55%, rgba(10,10,10,.62) 100%) !important;
}

/* --- Sitemap: ALLEEN op mobiel (<=600px) 2x2 (Hoofdpagina's|Diensten, Werkgebied|Service),
   gecentreerd, geen bullets, hover in logokleur. Op DESKTOP blijft de originele lijst ongemoeid. --- */
@media(max-width:600px){
  .sitemap-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:30px 24px;
    margin:24px auto 0;
  }
  .sitemap-col h3{ text-align:center; margin-top:0; }
  .sitemap-col ul{ list-style:none; padding:0; margin:14px 0 0; text-align:center; }
  .sitemap-col li{ margin:0 0 10px; }
  .sitemap-col a{ transition:color .2s var(--ease); }
  .sitemap-col a:hover,
  .sitemap-col a:focus-visible{ color:var(--bronze); }
}

/* --- 2. Telefoon: alles gecentreerd + volgorde tekst > foto > USPs(2x2) > cta --- */
@media(max-width:600px){

  /* Brede tekstcentrering binnen de paginasecties */
  main section .container,
  section > .container,
  .subhero-content,
  .article-content,
  .contact-info-card,
  .hp-svc-body,
  .footer-col{
    text-align:center;
  }

  /* Formuliervelden houden links uitgelijnde invoer (leesbaarheid) */
  .container input,
  .container textarea,
  .container select,
  .of-form input,
  .of-form textarea,
  .of-form select{
    text-align:left;
  }

  /* Lijsten als blok gecentreerd, regels links uitgelijnd binnen het blok */
  .article-content ul,
  .article-content ol{
    display:table;
    margin-left:auto;
    margin-right:auto;
    text-align:left;
    max-width:100%;
  }

  /* Homepage dienstkaart-vinkjes: 2x2 raster, gecentreerd (niet onder elkaar) */
  .hp-svc-features{
    display:grid;
    grid-template-columns:repeat(2,auto);
    gap:14px 26px;
    width:fit-content;
    max-width:100%;
    margin:0 auto 26px;
    justify-content:center;
  }
  .hp-svc-features li{ width:auto; max-width:100%; text-align:left; margin:0; }

  /* Project-specs: 2x2 -> Locatie+Categorie links, Looptijd+Oplevering rechts */
  .project-meta-grid{
    grid-template-columns:1fr 1fr !important;
    grid-template-rows:auto auto;
    grid-auto-flow:column;
    gap:22px 16px;
    text-align:center;
  }
  .project-meta-grid .item small,
  .project-meta-grid .item strong{ text-align:center; }

  /* Contact-rijen (icoon + tekst) als geheel gecentreerd */
  .contact-info-card .contact-item{
    justify-content:center;
    text-align:left;
  }

  /* Contact-card op de telefoon: 2-koloms raster.
     DOM-volgorde rijen = 1:Telefoon 2:E-mail 3:WhatsApp 4:Adres 5:Openingstijden.
     Gewenst: Telefoon|WhatsApp / E-mail|Openingstijden / Adres over de volle breedte eronder. */
  .contact-rows-grid{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:12px !important;
    align-items:stretch;
    margin-top:10px;
  }
  .contact-rows-grid .contact-row{
    flex-direction:column;
    align-items:center;
    text-align:center;
    gap:8px;
    border-bottom:0;
    padding:18px 10px;
    background:var(--bg-alt);
    border-radius:16px;
  }
  .contact-rows-grid .contact-row .icon{ margin:0 auto; }
  .contact-rows-grid .contact-row:nth-child(1){order:1}                    /* Telefoon */
  .contact-rows-grid .contact-row:nth-child(3){order:2}                    /* WhatsApp */
  .contact-rows-grid .contact-row:nth-child(2){order:3}                    /* E-mail */
  .contact-rows-grid .contact-row:nth-child(5){order:4}                    /* Openingstijden */
  .contact-rows-grid .contact-row:nth-child(4){order:5;grid-column:1 / -1} /* Adres, volle breedte */
  /* CTA-knoppen (Bel direct / Offerte aanvragen) gecentreerd op de telefoon */
  .contact-info-card > div:has(> .btn){ justify-content:center !important; }
  .contact-info-card > div:has(> .btn) .btn{ flex:0 0 auto; }

  /* Contact-CTA blok (.calc-contact-grid) op mobiel 2x2 met column-flow:
     Telefoon + E-mail in de linker kolom, Adres + Bereikbaarheid in de rechter kolom */
  .calc-contact-grid{
    grid-template-columns:1fr 1fr !important;
    grid-template-rows:auto auto !important;
    grid-auto-flow:column !important;
    gap:18px 14px !important;
  }
  .calc-contact-grid .calc-contact-item{ gap:9px; }
  .calc-contact-grid .calc-contact-item svg{ width:20px; height:20px; }
  .calc-contact-grid .calc-contact-item strong{ font-size:13.5px; }
  .calc-contact-grid .calc-contact-item a,
  .calc-contact-grid .calc-contact-item span{ font-size:12.5px; word-break:break-word; }

  /* Werkgebied-kaartjes (.wg-regio-grid): twee naast elkaar op mobiel, compacte hoogte */
  .wg-regio-grid{ grid-template-columns:1fr 1fr !important; grid-auto-rows:auto !important; }
  .wg-regio-grid .why-card{ padding:22px 14px !important; }

  /* Tips-overzicht: kaarten op natuurlijke hoogte zodat de foto VOLLEDIG zichtbaar is
     (de algemene grid-auto-rows:240px drukt de tip-foto anders tot een strookje) */
  .tips-grid{ grid-auto-rows:auto !important; }
  .tips-grid .tip-card .tip-img{ aspect-ratio:16/10; }

  /* Over ons - waarden-kaarten (.value-card): icoon, titel en tekst gecentreerd */
  .value-card{ text-align:center; }
  .value-card .icon{ margin-left:auto; margin-right:auto; }

  /* content-2col: 1 koloms, gecentreerd, ALTIJD volgorde:
     eyebrow -> titel + alinea's -> FOTO -> USP-vinkjes (2x2) -> CTA-knop.
     content-text wordt 'doorzichtig' zodat de losse elementen herordend worden.
     Geldt voor elk content-2col blok (met/zonder vinkjes, ook .reverse). */
  .content-2col,
  .content-2col.reverse{
    display:flex !important;
    flex-direction:column;
    align-items:center;
    gap:0;
    text-align:center;
  }
  .content-2col .content-text{ display:contents; }
  .content-2col .content-text > *{ order:2; text-align:center; max-width:100%; }
  .content-2col .content-img{
    order:3;
    width:100%;
    margin:18px 0 6px;
  }
  /* USP-vinkjes DIRECT onder de foto, twee aan twee (2x2), gecentreerd als blok */
  .content-2col .content-text .feature-list{
    order:4;
    display:grid;
    grid-template-columns:repeat(2,auto);
    gap:12px 28px;
    width:fit-content;
    max-width:100%;
    margin:20px auto 4px;
    text-align:left;
    justify-content:center;
  }
  .content-2col .content-text .btn,
  .content-2col .content-text a.btn{
    order:9;
    align-self:center;
    margin-top:20px;
  }

}

/* --- 3. Footer mobiel (<=768px): logo-blok gecentreerd bovenaan,
   info-kolommen in 2x2 (Contact|Diensten, Werkgebied|Service) --- */
@media(max-width:768px){
  .footer-grid{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    justify-content:stretch !important;
    column-gap:18px !important;
    row-gap:34px !important;
    text-align:center;
  }
  /* eerste kolom = logo + USP-vinkjes + social: full width, alles op de middenas */
  .footer-grid > .footer-col:first-child{
    grid-column:1 / -1 !important;
    display:flex;
    flex-direction:column;
    align-items:center;
    text-align:center;
    padding-top:0 !important;
  }
  .footer-logo{display:block;margin:0 auto 16px}
  .footer-benefits{
    display:inline-flex;
    flex-direction:column;
    align-items:flex-start;
    width:fit-content;
    max-width:100%;
    margin:0 auto;
    text-align:left;
  }
  .footer-social{
    flex-direction:row !important;
    justify-content:center !important;
    gap:16px !important;
    margin-top:18px !important;
  }
  /* info-kolommen netjes gecentreerd, regels gecentreerd */
  .footer-col{ text-align:center; }
  .footer-col .contact-item,
  .footer-col .contact-item-info{
    justify-content:center;
    text-align:center;
  }
}

/* === FOOTER-FIX v200 (vast): contact-regels altijd netjes onder elkaar (mobiel) ===
   Oorzaak: losse contact-items kregen justify-content:center, waardoor korte regels
   (KVK/BTW/IBAN) verder insprongen dan de lange. Vast: items nooit los centreren,
   altijd op een gemeenschappelijke linkerrand; de contactgroep als blok gecentreerd. */
@media(max-width:768px){
  .footer-col .contact-item,
  .footer-col .contact-item-info{
    justify-content:center !important;
    text-align:center;
  }
  .footer-col:has(> .contact-item){
    display:flex;
    flex-direction:column;
    align-items:center;
    width:100%;
    max-width:100%;
    margin-left:auto;
    margin-right:auto;
  }
  .footer-col:has(> .contact-item) > h4{ align-self:center; }
}

/* === AGBOT MOBIEL: FULLSCREEN OVERLAY (VASTE DPS-REGEL, vervangt v200 bottom-sheet) ===
   De bot vult op de telefoon het hele scherm, zoals het hamburgermenu. JS zet
   --ag-vvh/--ag-top via visualViewport zodat het paneel exact het zichtbare deel
   vult en de invoer boven het toetsenbord blijft; de pagina eronder beweegt niet. */
@media(max-width:768px){
  #agbot.open .agbot-panel{
    position:fixed !important;
    left:0 !important; right:0 !important;
    top:var(--ag-top,0px) !important; bottom:auto !important;
    width:100vw !important; min-width:0 !important; max-width:none !important;
    height:var(--ag-vvh,100dvh) !important; max-height:none !important;
    border-radius:0 !important;
    transform:none !important;
    z-index:100000 !important;
    display:flex !important; flex-direction:column !important;
  }
  #agbot.open .agbot-header{ flex:0 0 auto !important; padding-top:calc(14px + env(safe-area-inset-top,0px)) !important; }
  #agbot.open .agbot-input{ flex:0 0 auto !important; padding-bottom:calc(14px + env(safe-area-inset-bottom,0px)) !important; }
  #agbot.open .agbot-quick{ flex:0 0 auto !important; }
  #agbot.open .agbot-body{
    flex:1 1 0 !important;
    height:auto !important; min-height:0 !important; max-height:none !important;
    overflow-y:auto !important; -webkit-overflow-scrolling:touch;
  }
  #agbot.open .agbot-launch{ display:none !important; }
  #agbot.open .agbot-ctl.agbot-close{ width:40px !important; height:40px !important; border-radius:12px !important; }
  #agbot.open .agbot-ctl.agbot-close svg{ width:20px !important; height:20px !important; }
  #agbot.open .agbot-ctl.agbot-expand{ display:none !important; }

  #agbot.open .agbot-quick{
    flex:0 1 auto !important;
    max-height:46% !important; overflow-y:auto !important;
  }
}

/* === FOOTER-BOTTOM MOBIEL (vast): alleen DPS-credit + copyright op de telefoon ===
   Op mobiel (<=600px) de drie tussenliggende beleidslinks (Algemene voorwaarden,
   Privacy Policy, Cookiebeleid) verbergen. "Gemaakt door DPS Media" (.fb-made) en
   de copyright (span.fb-copy) blijven staan. De links blijven op desktop staan en
   blijven op mobiel bereikbaar via de Service-kolom hierboven. Taal-onafhankelijk:
   alle <a> behalve .fb-made = precies die drie beleidslinks. */
@media(max-width:600px){
  .footer-bottom a:not(.fb-made){ display:none !important; }
}

/* === TIP-INTROKOP (vast): dikgedrukte zwarte kop boven de eerste (lead) alinea ===
   Op tip-/nieuwspagina's kreeg alleen de bovenste (lead) alinea geen kop. Nu staat er
   overal een <h2 class="tip-lead-h2"> boven, in dezelfde stijl/scale als de andere
   koppen (28px, bold, var(--heading)). Alleen de bovenmarge is iets krapper zodat de
   kop netjes onder de meta-regel ("x min lezen") staat in plaats van met een grote gap. */
.article-content h2.tip-lead-h2{ margin-top:28px; }

/* ============================================================
   MOBIELE FIJNSLAG (vast): hero-CTA glow + footer 1-koloms met
   gecentreerde contactgegevens + gecentreerde feature-kaart-iconen.
   ============================================================ */

/* ============================================================
   HERO-CTA: ALTIJD FEL - via de gedeelde class .dps-cta-gold
   (zie het blok GEDEELDE GOUDEN CTA onderaan dit bestand)

   ROOT CAUSE 02-08-2026. Hier stond @keyframes dpsCtaRepaint, een
   "iOS repaint-pomp" die box-shadow animeerde. Animatie-declaraties
   winnen in de cascade van ELKE normale (niet-!important) declaratie.
   Daardoor werd iedere latere schaduw-fix stilzwijgend genegeerd en
   hield de knop permanent de schaduw uit de keyframes:
   0 10px 26px rgba(0,0,0,.30) met spread 0 (zwarte waas die aan alle
   kanten onder de pil uit bloedt) plus 0 0 24px 4px goud (wazige halo).
   Dat is precies de dofheid. De zwevende knop .agbot-launch draait op
   dezelfde toestellen zonder pomp en is wel fel, dus de pomp was niet
   nodig en veroorzaakte het probleem dat hij zou oplossen.
   Niet terugzetten. Schaduw hoort een negatieve spread te hebben.
   ============================================================ */
.hp-hs-static-content .hp-hs-btn,
.hp-hs-slide.is-active .hp-hs-btn,
.hp-hs-btn{
  opacity:1 !important;
  visibility:visible !important;
  animation:none !important;
  transform:none !important;
  -webkit-transform:none !important;
  filter:none !important;
  backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
  will-change:auto !important;
  isolation:auto !important;
  -webkit-backface-visibility:visible !important; backface-visibility:visible !important;
  position:relative; z-index:6;
  font-weight:800 !important;
}

/* 2) FOOTER op de telefoon: 1 kolom + gecentreerd, zodat de Contact-gegevens als nette
   groep gecentreerd onder de kop "Contact" staan (regels onder elkaar, iconen op een lijn). */
@media(max-width:768px){
  /* Footer blijft 2-koloms (oude situatie). Alleen het Contact-blok gecentreerd onder de kop:
     iets kleiner lettertype zodat het blok smaller is dan de cel en zichtbaar in het midden komt,
     met de regels onder elkaar (iconen op een lijn) en de kop "Contact" gecentreerd erboven. */
  .footer-col:has(> .contact-item) .contact-item,
  .footer-col:has(> .contact-item) .contact-item-info{
    font-size:11px !important;
    white-space:normal !important;        /* regels mogen wrappen -> blok smaller dan de cel */
    justify-content:center !important; text-align:center !important;
  }
  .footer-col:has(> .contact-item) .contact-item:has(a){ white-space:nowrap !important; }  /* alleen telefoon + email op een regel */
  .footer-col:has(> .contact-item) .contact-item svg,
  .footer-col:has(> .contact-item) .contact-item-info svg{ width:13px !important; height:13px !important; }
  .footer-col:has(> .contact-item){
    display:flex !important; flex-direction:column !important;
    align-items:center !important;         /* elke regel gecentreerd */
    width:100% !important; max-width:100% !important;
    margin-left:auto !important; margin-right:auto !important;
  }
  .footer-col:has(> .contact-item) > h4{ align-self:center !important; }
}

/* 3) Feature-/voordeelkaarten op de telefoon: icoon gecentreerd boven de tekst,
   tekst gecentreerd. Geldt voor de "waarom ons"-kaarten en de voordeelkaarten. */
@media(max-width:600px){
  .hp-waarom-card, .voordeel-card{ text-align:center !important; }
  .hp-waarom-ic, .voordeel-icon{ margin-left:auto !important; margin-right:auto !important; }
}

/* ============================================================
   MOBIELE FIJNSLAG 2 (vast): review-/tip-badges centreren +
   iOS hero-CTA backdrop-fix.
   ============================================================ */

/* A) iOS HERO-CTA: de eyebrow-pill boven de knop heeft backdrop-filter; op iOS laat dat de
   gecomposite offerteknop eronder dof renderen tot je scrolt. Backdrop op mobiel weghalen. */
@media(max-width:768px){
  .hp-hs-eyebrow{ backdrop-filter:none !important; -webkit-backdrop-filter:none !important; }
}

/* B) Review-kaarten (hpgr) en tip-kaarten op mobiel: badges/pills + tekst gecentreerd. */
@media(max-width:768px){
  .hpgr-tag{ align-self:center !important; }
  .hpgr-text{ text-align:center !important; }
  .hpgr-name-row{ align-items:center !important; text-align:center !important; }
  .hp-tips-card-body{ align-items:center !important; text-align:center !important; }
  .hp-tips-tag{ align-self:center !important; }
  .hp-tips-card h3, .hp-tips-card p{ text-align:center !important; }
  .hp-tips-meta{ justify-content:center !important; gap:16px !important; }
}

/* C) Review-sectie KOP op mobiel gecentreerd: Google-score + "Google Reviews" + knop "Schrijf review". */
@media(max-width:768px){
  .hpgr-head{ align-items:center !important; text-align:center !important; }
  .hpgr-google{ justify-content:center !important; }
  .hpgr-google-text{ align-items:center !important; }
  .hpgr-rating{ justify-content:center !important; }
}

/* ============================================================
   LOCKED REGELS (nooit weghalen, gelden voor elke build)
   1. Contact-CTA blok: ALTIJD als geheel gecentreerd, de twee
      kolommen (telefoon/adres | e-mail/openingstijden) sluiten
      op elkaar aan. Nooit full-width uit elkaar getrokken.
   2. Tips-kaarten: badge, titel, tekst en meta ALTIJD gecentreerd.
   3. Projecten-bento: NOOIT een leeg/wit vak in het grid. Bij 3
      kaarten vult kaart 3 automatisch de rij (span 2).
   4. Donkere secties (o.a. .hp-waarom): ALTIJD een achtergrondfoto
      met overlay, nooit een effen donker vlak. Het bestand
      assets/img/hero/waarom-bg.webp MOET per build gevuld worden
      met een echte sfeerfoto van de klant/branche.
   ============================================================ */
.hp-tips-card .hp-tips-card-body,.hp-tips-card{text-align:center}
.hp-tips-card .hp-tips-tag{margin-left:auto;margin-right:auto}
.hp-tips-card .hp-tips-meta{justify-content:center;gap:18px}
.tip-card .tip-body{text-align:center}
.tip-card .tip-meta{justify-content:center}
@media(min-width:861px){
  .hp-port-card:nth-child(3):last-child{grid-column:span 2;grid-row:span 1}
}
.hp-faqcontact-info{text-align:center}
.hp-faqcontact-info .calc-contact-item{text-align:left}
@media(max-width:860px){
  .hp-faqcontact-info .calc-contact-grid{width:fit-content;margin-left:auto;margin-right:auto}
}

/* ################################################################
   DPS MASTER-UPGRADES (geport uit goedgekeurde build v256)
   Deze blokken staan bewust ACHTERAAN zodat ze eerdere regels
   overschrijven. Kleuren lopen via de variabelen hieronder.
   ################################################################ */

/* ---- PER KLANT INVULLEN: logo-verloop + accent-tinten ----
   Vervang bij elke build de bronze-defaults door de logokleuren
   van de klant (zelfde hoeken/opbouw aanhouden). */
:root{
  --grad-btn:linear-gradient(100deg,var(--bronze-dark) 0%,var(--bronze) 50%,var(--bronze-light) 100%);
  --grad-btn-hover:linear-gradient(100deg,#05509A 0%,var(--bronze-dark) 50%,var(--bronze) 100%);
  --grad-btn-vert:linear-gradient(180deg,var(--bronze-light) 0%,var(--bronze) 55%,var(--bronze-dark) 100%);
  --grad-btn-vert-hover:linear-gradient(180deg,var(--bronze) 0%,var(--bronze-dark) 55%,#05509A 100%);
  --accent-soft:rgba(10,130,230,.12);   /* glas-achtergrond eyebrows/knopjes */
  --accent-border:rgba(10,130,230,.55); /* randje eyebrows/sluitknop */
  --cta-shadow:rgba(10,130,230,.5);     /* schaduw/glow onder CTA-knoppen */
}

/* ============================================================
   KNOPPEN MET LOGO-VERLOOP
   Alle primaire CTA's krijgen het verloop uit het logo.
   Horizontaal: donker links -> licht rechts. Verticaal
   (WhatsApp / zwevende knoppen): licht boven -> donker onder.
   ============================================================ */
/* vorm komt uit tokens-referentie.css: .btn-primary, .btn.btn-primary, .btn-cta-primary, .hp-hs-btn */
.sticky-cta-quote{background:var(--grad-btn) !important;
  color:#ffffff !important;
  border:0 !important;}
.btn-primary:hover,
.btn.btn-primary:hover,
.btn-cta-primary:hover,
.hp-hs-btn:hover,
.of-submit:hover,
.lp-submit:hover,
.btn-pill-dark:hover,
.sticky-cta-quote:hover{
  background:var(--grad-btn-hover) !important;
  color:#ffffff !important;
  transform:translateY(-2px);
}
/* pijl/icoon in deze knoppen wit houden */
.btn-primary svg,.btn.btn-primary svg,.hp-hs-btn svg,.btn-cta-primary svg{stroke:#fff}

/* WhatsApp zwevende knop + mobiele WA-knop: verticaal verloop */
.wa-btn,
.sticky-cta-wa,
.btn-pill-wa,
.btn-cta-wa{
  background:var(--grad-btn-vert) !important;
  color:#fff !important;
}
.wa-btn:hover,
.sticky-cta-wa:hover,
.btn-pill-wa:hover,
.btn-cta-wa:hover{
  background:var(--grad-btn-vert-hover) !important;
}/* leeggemaakt, vorm komt uit tokens-referentie.css: /* Nav-CTA "Offerte aanvragen" ook het logo-verloop */ .nav: */
.nav:not(.scrolled) .nav-cta > .btn.btn-primary:hover,
.nav.scrolled .nav-cta > .btn.btn-primary:hover,
.nav-cta > .btn.btn-primary:hover{ background:var(--grad-btn-hover) !important; }

/* Bot-launcher en calculator-knoppen ook het logo-verloop */
/* vorm komt uit tokens-referentie.css: .calc-nav-row .btn-next, .calc-nav-row .btn-submit */
.agbot-launch, .rucalc-next, .rucalc-submit{background:var(--grad-btn) !important;
  color:#ffffff !important;}
.agbot-launch:hover,
.rucalc-next:hover,
.rucalc-submit:hover,
.calc-nav-row .btn-next:hover,
.calc-nav-row .btn-submit:hover{
  background:var(--grad-btn-hover) !important;
  color:#ffffff !important;
}
.agbot-launch svg{stroke:#fff}/* leeggemaakt, vorm komt uit tokens-referentie.css: /* btn-accent (accent-CTA) ook het logo-verloop, witte tekst */
.btn-accent:hover{ background:var(--grad-btn-hover) !important; color:#fff !important; }
/* zwevende telefoonknop: verticaal verloop net als WhatsApp */
.tel-btn{ background:var(--grad-btn-vert) !important; color:#fff !important; }
.tel-btn:hover{ background:var(--grad-btn-vert-hover) !important; }
.hp-hs-eyebrow,
.hero-eyebrow{
  display:inline-block !important;
  background:var(--accent-soft) !important;
  border:1.5px solid var(--accent-border) !important;
  border-radius:999px !important;
  padding:8px 22px !important;
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
}
.hp-hs-eyebrow::before,
.hero-eyebrow::before{display:none !important;content:none !important;}

/* ============================================================
   CONTACTBLOK ("Wij informeren u graag") CENTREREN
   ============================================================ */
.hp-contact .of-info,
.hp-contact-info,
.hp-faqcontact-info{ text-align:center; }
.hp-contact-info-grid,
.of-info-grid,
.hp-contact .info-grid{
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
  gap:26px 40px; max-width:760px; margin:0 auto; justify-items:center;
}
.hp-contact-info-grid .item,
.of-info-grid .item,
.hp-contact .info-item{ text-align:center; align-items:center; }
@media(max-width:600px){
  .hp-contact-info-grid,.of-info-grid,.hp-contact .info-grid{ grid-template-columns:1fr; }
}
.calc-contact-grid{ justify-items:center !important; max-width:720px; margin:26px auto 10px !important; gap:30px 40px !important; }
.calc-contact-item{ flex-direction:column !important; align-items:center !important; text-align:center !important; gap:8px !important; }
.calc-contact-item > svg{ margin:0 auto 2px !important; }
.calc-contact-item > div{ display:flex !important; flex-direction:column; align-items:center; }

/* ============================================================
   MOBIEL: HERO
   Eyebrow strak om de tekst + gecentreerd, minder witruimte
   tussen hero en de eerste sectie, CTA vol verloop met schaduw.
   ============================================================ */
@media (max-width:1023px){
  .hp-hs-static-content{ text-align:center !important; align-items:center !important; }
  .hp-hs-eyebrow{
    width:auto !important; max-width:92% !important;
    margin-left:auto !important; margin-right:auto !important;
    padding:7px 16px !important; font-size:10px !important; letter-spacing:1.5px !important;
    white-space:normal; line-height:1.5; text-align:center;
  }
  .hp-hs-title,.hp-hs-desc{ text-align:center !important; margin-left:auto; margin-right:auto; }
  .hp-hs-btn{ margin-left:auto !important; margin-right:auto !important; }
  .hp-overons{ padding-top:34px !important; }
  .hp-hero-slider.hp-hero-static{ margin-bottom:0 !important; }
  .btn-primary, .btn.btn-primary, .of-submit, .lp-submit, .btn-cta-primary{opacity:1 !important;}
.sticky-cta-quote, .agbot-launch, .rucalc-next, .rucalc-submit{background:var(--grad-btn) !important; color:#fff !important; opacity:1 !important;
    box-shadow:0 10px 26px -8px var(--cta-shadow) !important;}
  /* hero-CTA: geen aparte behandeling meer. Achtergrond, tekstkleur en schaduw
     komen uit de gedeelde class .dps-cta-gold onderaan dit bestand, exact gelijk
     aan de zwevende knop. */
}

/* Hero-offerteknop: uiterlijk komt uit .dps-cta-gold (onderaan dit bestand).
   De repaint-pomp is verwijderd, zie de ROOT CAUSE-comment hierboven. */
.hp-hs-btn{
  animation:none !important;
  filter:none !important;
}
/* VASTE REGEL: de hero-overlay mag nooit over de knop heen dimmen.
   Hero-content staat altijd boven de hero-overlay via z-index.

   LET OP (root cause ronde 12, 02-08-2026): .hp-hs-static-content maakt met een
   z-index een EIGEN STACKING CONTEXT. De z-index van de knop erbinnen telt dan
   alleen ten opzichte van broertjes in die ouder, niet ten opzichte van de rest
   van de hero. Met z-index:3 op de ouder lag de USP-scrim
   (.hp-hero-slider::after, z-index:5, 300px hoog vanaf de onderkant) OVER de
   hele hero-content heen, inclusief de CTA. Op een hoog viewport viel de knop
   net boven het scrim en zag je niets; op een echte telefoon (~660 CSS-px door
   de browserbalken) valt hij er middenin en wordt hij tot 30% donkerder geverfd.
   De ouder moet dus BOVEN het scrim staan, niet de knop. */
.hp-hs-static-content{position:relative;z-index:7}
.hp-hs-btn{position:relative;z-index:6}

/* ============================================================
   MOBIEL: ALLES GECENTREERD (brede vangregels)
   Op mobiel is gecentreerd de standaard, BEHALVE de calculator
   en formuliervelden.
   ============================================================ */
.hp-portfolio,.hp-portfolio .container{ text-align:center; }
.projecten-grid > *, .hp-port-grid > *{ width:100%; }
@media (max-width:1023px){
  .project-meta,.project-meta h3,.project-meta .loc{ text-align:center !important; justify-content:center !important; }
  .projecten-intro,.projecten-head,.proj-detail-text{ text-align:center !important; }
}
@media(max-width:600px){
  section .container,
  .content-text,.content-2col .content-text,
  .subhero-content,.subhero,
  .section-header,.hp-waarom-head,.hp-insta-head,.tip-lead,.tips-head,
  .of-info,.hp-contact,.hp-calc-v2,.rucalc,.rucalc-head,
  .seo-content,.seo-werkgebied,.seo-faq,
  .hp-overons-text,.over-intro,.dienst-card-body,.hp-svc-body{
    text-align:center !important;
  }
  .feature-list{ display:inline-block; text-align:left; }
  .content-2col .content-text .btn,.dienst-card-body .btn{ margin-left:auto !important; margin-right:auto !important; }
}
@media(max-width:760px){
  .footer-benefits{align-items:center}
  .footer-benefits li{justify-content:center;text-align:center}
  .footer-col ul li{justify-content:center}
  .footer-col .footer-benefits li,
  .footer-col li:has(> svg){justify-content:center;text-align:center}
  .footer-logo{display:inline-block}
  .footer-col:first-child{display:flex;flex-direction:column;align-items:center}
  .section-header{text-align:center !important}
  .why-text{text-align:center}
  .of-info{padding-right:0}
  .of-bullets{display:flex;flex-direction:column;align-items:center;gap:10px;padding:0;margin:18px auto}
  .of-bullets li{justify-content:center;text-align:center}
  .vac-card{text-align:center}
  .vac-card h3, .vac-card h4{text-align:center}
  .vac-meta{justify-content:center}
  .vac-intro{text-align:center}
  .vac-cols{text-align:center}
  .vac-cols ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;align-items:center}
  .vac-cols li{text-align:center;justify-content:center}
  .vac-cols li::before{position:static !important;margin:0 8px 0 0 !important}
  .article-content:not(#rucalc *),
  .content-text,
  .why-text,
  .vac-detail,
  .job-content{text-align:center}
  .hp-port-meta{text-align:center}
  .hp-port-tag{margin-left:auto;margin-right:auto}
  .hp-port-meta h3{text-align:center}
  .project-meta{text-align:center}
  .project-meta h3{text-align:center}
  .project-meta .loc{display:block;text-align:center}
  .project-tag, .project-meta .tag{margin-left:auto;margin-right:auto}
  .card-tag, .overlay-tag, .img-badge{margin-left:auto;margin-right:auto}
  section .container > .section-header,
  .hp-port-meta, .project-meta,
  .card-body, .info-block, .tekst-blok{text-align:center}
  .article-content ul li, .article-content ol li,
  .tip-content ul li, .tip-content ol li{text-align:center;list-style-position:inside}
  .article-content ul, .article-content ol{padding-left:0}
  .why-list li{
    padding-left:0 !important;text-align:center;
    display:flex;flex-direction:column;align-items:center;gap:8px
  }
  .why-list li::before{position:static !important;margin:0 auto}
  .hp-svc-features li{text-align:center !important;justify-content:center !important}
  .content-text ul:not(#rucalc *) li,
  .why-list li, .svc-benefits li, .lp-usps li{text-align:center}
}

/* ============================================================
   MOBIEL MENU — high-class fullscreen accordion
   Kop (logo + sluitknop) / scrollbaar middendeel / vaste voet
   met social + knoppen. Submenu's dicht by default, open via
   chevron-knoppen (.mmx-acc-btn), derde niveau ingesprongen.
   ============================================================ */
@media (max-width:1023px){
  .mobile-menu{
    width:100% !important;max-width:100% !important;left:0 !important;right:0 !important;
    height:100vh !important;height:100dvh !important;padding:0 !important;background:#fff !important;
    overflow-y:auto !important;-webkit-overflow-scrolling:touch;
    display:flex !important;flex-direction:column;align-items:stretch !important;text-align:left !important;
    z-index:3000 !important
  }
  .mobile-menu-overlay{ z-index:2999 !important; }
  .mobile-menu ul{ list-style:none; }
  .mobile-menu .submenu li a{ font-size:15px; }
  /* floats weg zolang het menu open is, zodat niets de knoppen blokkeert */
  body.menu-open .wa-btn,
  body.menu-open .sticky-cta,
  body.menu-open .tel-btn,
  body.menu-open .agbot,
  body.menu-open .agbot-launch{ display:none !important; }
  .mobile-menu .btn.btn-primary{width:100%;}
  .mobile-menu .btn.btn-ghost{ width:100%; }
  /* kop met logo + sluitknop */
  .mmx-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--border-soft);position:sticky;top:0;background:#fff;z-index:2}
  .mmx-head .mmx-logo img{height:38px;width:auto;display:block}
  .mobile-menu-close{position:static !important;width:44px;height:44px;border-radius:50%;border:1px solid var(--border-soft);background:#fff;display:flex;align-items:center;justify-content:center;color:var(--brand-dark);flex:none;cursor:pointer}
  .mobile-menu-close svg{width:20px;height:20px}
  /* scrollbaar middendeel */
  .mmx-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:8px 0 20px}
  .mobile-menu > .mmx-scroll > ul{width:100%;margin:0;padding:0;list-style:none}
  .mobile-menu li{border:0 !important;text-align:left}
  .mobile-menu .mmx-scroll > ul > li{border-bottom:1px solid var(--border-soft) !important}
  .mobile-menu .mmx-scroll > ul > li > a{
    display:flex !important;align-items:center;justify-content:center !important;
    padding:17px 22px !important;font-family:var(--font-heading);font-weight:700;font-size:17px;color:var(--brand-dark);text-decoration:none;text-align:center !important
  }
  .mobile-menu .mmx-scroll > ul > li > a:active{background:#f4f8f6}
  .mobile-menu .mmx-scroll li{text-align:center !important}
  /* accordion-rij (Diensten/Portfolio): kop = knop met chevron */
  .mmx-acc-btn{
    width:100%;display:flex;align-items:center;justify-content:center;gap:8px;
    padding:17px 22px;background:none;border:0;font-family:var(--font-heading);font-weight:700;font-size:17px;color:var(--brand-dark);cursor:pointer;text-align:center
  }
  .mmx-acc-btn .mmx-chev{width:22px;height:22px;transition:transform .25s;color:var(--bronze);flex:none}
  .mobile-menu li.mmx-open > .mmx-acc-btn .mmx-chev{transform:rotate(180deg)}
  /* submenu dichtgeklapt by default; open bij .mmx-open */
  .mobile-menu .submenu{
    max-height:0 !important;overflow:hidden !important;opacity:1 !important;display:block !important;
    margin:0 !important;padding:0 !important;background:#f7faf8;border-left:0 !important;
    transition:max-height .32s ease
  }
  .mobile-menu li.mmx-open > .submenu{max-height:1400px !important}
  .mobile-menu .submenu > li > a,
  .mobile-menu .submenu .mmx-acc-btn{
    padding:14px 22px !important;font-size:15.5px !important;font-weight:600 !important;color:var(--brand-dark) !important
  }
  .mobile-menu .mmx-scroll .submenu > li > a,
  .mobile-menu .mmx-scroll .subsub > li > a{
    display:flex !important;justify-content:center !important;text-align:center !important;
    padding-left:22px !important;padding-right:22px !important;
  }
  .mobile-menu .mmx-scroll .submenu .mmx-acc-btn{justify-content:center !important;padding-left:22px !important}
  /* derde niveau (subsub): alleen zichtbaar bij open, ingesprongen */
  .mobile-menu .subsub{
    max-height:0 !important;overflow:hidden !important;display:block !important;opacity:1 !important;visibility:visible !important;
    position:static !important;transform:none !important;background:#eef4f0 !important;border:0 !important;box-shadow:none !important;
    margin:0 !important;padding:0 !important;transition:max-height .28s ease
  }
  .mobile-menu li.mmx-open > .subsub{max-height:600px !important}
  .mobile-menu .subsub > li > a{font-size:14.5px !important;font-weight:500 !important;color:var(--text-soft) !important}
  .mobile-menu .has-subsub > a::after{display:none !important}
  /* social + knoppen onderin, vaste voet */
  .mmx-foot{padding:18px 22px 26px;border-top:1px solid var(--border-soft);background:#fff}
  .mmx-social{display:flex;gap:12px;justify-content:center;margin-bottom:16px}
  .mobile-menu-fb-item{border:0 !important}
  .mmx-social .mobile-menu-fb{width:46px;height:46px;border-radius:50%;border:1px solid var(--border-soft);display:flex;align-items:center;justify-content:center;color:var(--brand-dark)}
  .mmx-social .mobile-menu-fb span{display:none}
  .mmx-social .mobile-menu-fb svg{width:20px;height:20px}
  .mmx-foot .btn{width:100%;margin:0 0 10px !important;justify-content:center}
  .mmx-foot .btn:last-child{margin-bottom:0 !important}
}
.mobile-menu-close{ display:none; }
@media (max-width:1023px){ .mobile-menu-close{ display:flex; } }

/* Single-tap: op touch geen hover-afhankelijkheid voor kaarten/links */
@media(hover:none){
  .tip-card,.dienst-card,.project-card,.hp-svc-card,.hp-tips-card,.hp-port-card,
  .btn,.btn-primary,.nav-links a,.mobile-menu a{ -webkit-tap-highlight-color:transparent; }
  .has-submenu > a{ pointer-events:auto; }
}

/* ============================================================
   GENESTE SUBMENU'S DESKTOP (flyout, derde niveau)
   Alleen actief als de klant sub-diensten heeft (.has-subsub).
   ============================================================ */
.nav-links .submenu .has-subsub{position:relative}
.nav-links .submenu .has-subsub > a{display:flex;align-items:center;justify-content:space-between;gap:10px}
.nav-links .submenu .has-subsub > a::after{content:"";display:inline-block !important;width:7px;height:7px;border-right:2px solid currentColor;border-top:2px solid currentColor;transform:rotate(45deg);opacity:.55;position:static !important;background:none !important}
.nav-links .subsub{
  position:absolute;left:calc(100% + 6px);top:-10px;min-width:250px;
  background:rgba(37,42,45,.97) !important;
  backdrop-filter:saturate(140%) blur(18px);
  -webkit-backdrop-filter:saturate(140%) blur(18px);
  border:1px solid rgba(255,255,255,.08);border-radius:14px;
  box-shadow:0 16px 40px rgba(0,0,0,.35);padding:10px 0;margin:0;list-style:none;
  opacity:0;visibility:hidden;transform:translateX(6px);transition:.18s ease;z-index:130
}
.nav-links .submenu .has-subsub:hover > .subsub,
.nav-links .submenu .has-subsub:focus-within > .subsub{opacity:1;visibility:visible;transform:translateX(0)}
.nav-links .subsub li{margin:0}
.nav-links .subsub a{display:block;padding:10px 20px;font-size:14.5px;font-weight:500 !important;color:rgba(255,255,255,.88) !important;white-space:nowrap}
.nav-links .subsub a:hover{background:color-mix(in srgb, var(--bronze) 18%, transparent) !important;color:var(--bronze-light) !important}
.nav-links .subsub a::after{display:none !important}
.mobile-menu .has-subsub > a::after{display:none !important}

/* ============================================================
   FAILSAFE zichtbaarheid van alle content-grids
   Het agf-reveal-systeem liet kaarten soms op opacity:0 staan ->
   lege/witte secties. Deze regels garanderen dat alle kaart-grids
   altijd zichtbaar zijn. Reliability boven animatie.
   ============================================================ */
/* (DEMO-DYNAMIEK) De oude opacity:1-forcering op kaart-grid-kinderen is
   verwijderd: zichtbaarheid wordt geborgd door het viewport-bewuste
   JS-vangnet, zodat kaarten weer echt kunnen invloeien. */
html.agx .hp-svc-grid.agf-flip > *, html.agx .hp-vak-grid.agf-flip > *,
html.agx .hp-werk-steps.agf-flip > *, html.agx .hp-port-grid.agf-flip > *,
html.agx .diensten-grid.agf-flip > *, html.agx .projecten-grid.agf-flip > *,
html.agx .values-grid.agf-flip > *, html.agx .voordelen-grid.agf-flip > *,
html.agx .mat-grid.agf-flip > *, html.agx .rich-grid.agf-flip > *,
html.agx .tips-grid.agf-flip > *, html.agx .reviews-grid.agf-flip > *{
  opacity:1 !important; transform:none !important;
}

/* ============================================================
   WERKEN BIJ — vacaturekaarten
   ============================================================ */
.vac-section{padding:88px 0 40px}
.vac-section .section-header{text-align:center;max-width:760px;margin:0 auto 48px}
.vac-list{display:grid;gap:28px;max-width:960px;margin:0 auto}
.vac-card{background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:36px 40px;box-shadow:var(--shadow)}
.vac-card h3{font-family:var(--font-display);font-weight:700;font-size:24px;margin:0 0 10px;color:var(--brand-dark)}
.vac-meta{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 16px}
.vac-chip{display:inline-flex;align-items:center;gap:7px;background:var(--bg-soft,#f2f6f4);border:1px solid var(--border-soft);border-radius:999px;padding:6px 14px;font-size:13.5px;font-weight:600;color:var(--text-soft)}
.vac-chip svg{width:15px;height:15px;stroke:var(--bronze);flex-shrink:0}
.vac-intro{color:var(--text-soft);margin:0 0 22px;font-size:15.5px;line-height:1.65}
.vac-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin:0 0 26px}
.vac-cols h4{font-size:14px;font-weight:700;letter-spacing:.06em;color:var(--brand-dark);margin:0 0 10px}
.vac-cols ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.vac-cols li{position:relative;padding-left:20px;font-size:14.5px;color:var(--text-soft);line-height:1.5}
.vac-cols li::before{content:"";position:absolute;left:2px;top:8px;width:7px;height:7px;border-radius:50%;background:var(--bronze)}
.vac-actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.vac-open{background:var(--brand-dark);border:none}
.vac-open h3,.vac-open p{color:#fff}
.vac-open .vac-intro{color:rgba(255,255,255,.82)}
@media(max-width:820px){
  .vac-card{padding:28px 22px}
  .vac-cols{grid-template-columns:1fr;gap:20px}
  .vac-section{padding:64px 0 24px}
  .vac-actions .btn{width:100%;justify-content:center;text-align:center}
}

/* ============================================================
   DIENSTPAGINA-VERRIJKING: waarom-sectie + actiekaarten
   (actie-sec alleen gebruiken als de klant actietarieven heeft)
   ============================================================ */
.why-sec{padding:88px 0}
.why-sec .section-header{text-align:center;max-width:820px;margin:0 auto 34px}
.why-text{max-width:860px;margin:0 auto 34px;color:var(--text-soft);font-size:16px;line-height:1.75}
.why-text p{margin:0 0 16px}
.why-list{list-style:none;margin:0 auto;padding:0;max-width:920px;display:grid;grid-template-columns:1fr 1fr;gap:12px 34px}
.why-list li{position:relative;padding-left:30px;font-size:15px;color:var(--text-soft);line-height:1.55}
.why-list li::before{content:"";position:absolute;left:0;top:3px;width:19px;height:19px;border-radius:50%;background:var(--grad-btn)}
.why-list li::after{content:"";position:absolute;left:5px;top:8px;width:9px;height:5px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg)}
.actie-sec{padding:88px 0;background:var(--brand-dark) !important}
.actie-sec .section-header{text-align:center;max-width:820px;margin:0 auto 44px}
.actie-sec .section-header h2{color:#fff !important}
.actie-sec .section-header p{color:rgba(255,255,255,.85) !important}
.actie-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:26px;max-width:960px;margin:0 auto 34px}
.actie-card{background:#fff;border-radius:var(--r-lg);padding:34px 34px 30px;box-shadow:var(--shadow)}
.actie-sec .actie-card h3, section.dark .actie-card h3{font-family:var(--font-display);font-weight:700;font-size:22px;margin:0 0 6px;color:var(--brand-dark) !important}
.actie-sec .actie-card li, section.dark .actie-card li{color:var(--text-soft) !important}
.actie-prijs{display:inline-block;font-weight:800;font-size:17px;background:var(--grad-btn);-webkit-background-clip:text;background-clip:text;color:transparent;margin:0 0 18px}
.actie-card ul{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:9px}
.actie-card li{position:relative;padding-left:24px;font-size:14.5px;color:var(--text-soft);line-height:1.5}
.actie-card li::before{content:"";position:absolute;left:2px;top:7px;width:7px;height:7px;border-radius:50%;background:var(--bronze)}
.actie-cta{text-align:center}
@media(max-width:760px){
  .why-sec,.actie-sec{padding:64px 0}
  .why-list{grid-template-columns:1fr}
  .actie-card{padding:26px 22px}
}

/* Calculator bovenaan dienstpagina's: duidelijk los van de hero */
body.subpage .subhero + .hp-contact{padding-top:56px}
@media(max-width:760px){ body.subpage .subhero + .hp-contact{padding-top:40px} }

/* ============================================================
   CONTACTPAGINA: icoonkaarten + kaart bovenaan met knoppen
   ============================================================ */
.ck-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:22px;max-width:1080px;margin:0 auto}
.ck-card{background:#fff;border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:30px 26px;box-shadow:var(--shadow);text-align:center}
.ck-ico{width:56px;height:56px;border-radius:16px;background:var(--grad-btn);display:flex;align-items:center;justify-content:center;margin:0 auto 16px}
.ck-ico svg{width:26px;height:26px;stroke:#fff}
.ck-card h3{font-family:var(--font-display);font-weight:700;font-size:18px;margin:0 0 8px;color:var(--brand-dark)}
.ck-card p{margin:0;font-size:14.5px;color:var(--text-soft);line-height:1.6}
.ck-card a{color:var(--brand-dark);font-weight:700;text-decoration:none}
.ck-card a:hover{color:var(--bronze)}
.ck-sub{display:block;margin-top:6px;font-size:13px;color:var(--text-muted)}
@media(max-width:760px){.ck-card{padding:24px 18px}}
.ck-sec{padding:88px 0 40px}
.contact-mapblock{padding:64px 0}
.contact-mapblock .container{max-width:1000px}
.contact-mapblock .map-wrap{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--border-soft);aspect-ratio:16/8;background:#eef2f5}
.contact-mapblock .map-wrap iframe{width:100%;height:100%;border:0;display:block}
.contact-mapblock-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:26px}
.contact-mapblock-actions .btn{min-width:200px;justify-content:center}
@media(max-width:760px){
  .contact-mapblock{padding:44px 0}
  .contact-mapblock .map-wrap{aspect-ratio:4/3}
  .contact-mapblock-actions{flex-direction:column;align-items:center}
  .contact-mapblock-actions .btn{width:100%;max-width:320px}
}

/* ============================================================
   FOOTER MOBIEL: Contact-kolom volle breedte, rest 2x2
   ============================================================ */
@media(max-width:760px){
  .footer-grid .footer-col{min-width:0}
  .footer-col a,.footer-col .contact-item,.footer-col li{overflow-wrap:anywhere;word-break:break-word}
  .footer-grid .footer-col-contact:has(> .contact-item),
  .footer-grid .footer-col-contact{grid-column:1 / -1;width:100% !important;max-width:100% !important;justify-self:stretch;align-items:center !important}
}

/* iOS: geen wit vlak bij doorscrollen onder de footer (overscroll) */
html{background-color:#0A0B0C}
body{background-color:var(--bg,#ffffff)}

/* ============================================================
   CALCULATOR-LAYOUT: meer ruimte + oneven opties centreren
   ============================================================ */
#rucalc .rucalc-q{ margin:0 0 12px !important; }
#rucalc .rucalc-pills + .rucalc-q,
#rucalc .rucalc-cond + .rucalc-q,
#rucalc .rucalc-pills ~ .rucalc-q{ margin-top:30px !important; }
#rucalc .rucalc-cond{ margin-top:30px; margin-bottom:0; }
#rucalc .rucalc-cond > .rucalc-q:first-child{ margin-top:0 !important; }
#rucalc .rucalc-pills + .rucalc-cond{ margin-top:30px; }
#rucalc .rucalc-pills{ gap:12px !important; margin-bottom:4px; }
#rucalc .rucalc-pills > .rucalc-pill:last-child:nth-child(odd){
  grid-column:1 / -1;
  justify-self:center;
  min-width:min(60%, 240px);
}

/* Bekijk ons werk: foto zacht laten inkomen (geen abrupte verschijning) */
.project-card .pc-fade{opacity:0;transition:opacity .5s ease}
.project-card .pc-fade[data-loaded="1"], .project-card img.pc-fade.loaded{opacity:1}

/* ============================================================
   WERKGEBIED: landelijke dekking (optioneel blok)
   ============================================================ */
.wg-landelijk{
  max-width:880px;margin:56px auto 0;padding:34px 32px;
  background:var(--bg);border:1px solid rgba(37,42,45,.06);border-radius:14px;
  text-align:center
}
.wg-landelijk h2{
  font-family:var(--font-display);font-weight:700;color:var(--brand-dark);
  font-size:clamp(24px,3vw,32px);margin:0 0 12px;letter-spacing:.02em
}
.wg-landelijk p{color:var(--text-soft);font-size:15.5px;line-height:1.65;margin:0 auto 22px;max-width:640px}
.wg-prov-grid{
  display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:0 auto 22px;max-width:720px
}
.wg-prov{
  display:inline-flex;align-items:center;padding:9px 16px;border-radius:999px;
  background:#fff;border:1px solid var(--border-soft);
  font-family:var(--font-heading);font-weight:600;font-size:14px;color:var(--brand-dark);
  transition:transform .2s var(--ease),box-shadow .2s
}
.wg-prov:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.08)}
.wg-landelijk .wg-note{
  font-size:14.5px;color:var(--text-muted);margin:0 auto;max-width:600px
}
@media(max-width:760px){
  .wg-landelijk{margin-top:40px;padding:28px 20px}
  .wg-landelijk h2, .wg-landelijk p, .wg-landelijk .wg-note{text-align:center}
  .wg-prov{font-size:13.5px;padding:8px 14px}
}

/* ============================================================
   HERO-EYEBROW: VASTE DPS-REGELS
   1) Pill sluit altijd strak om de tekst (fit-content, nooit
      volle breedte met lege vlakken).
   2) Eenheden ("15+ jaar", plaatsnamen) breken nooit; op mobiel
      valt de eyebrow in logische regels via .eb-seg spans.
   3) Geen backdrop-filter (iOS dofheid-bron).
   ============================================================ */
.hp-hs-eyebrow{
  width:fit-content !important;
  max-width:calc(100% - 4px);
  backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
}
.hp-hs-eyebrow .eb-seg{ white-space:nowrap; }
@media(max-width:600px){
  .hp-hs-eyebrow{
    width:fit-content !important;
    margin-left:auto !important; margin-right:auto !important;
    line-height:2 !important;
    padding:8px 18px !important;
    text-align:center;
  }
  /* logische regels: bedrijfsnaam op regel 1, plaats + jaren SAMEN op regel 2 */
  .hp-hs-eyebrow strong{ display:block; white-space:nowrap; }
  .hp-hs-eyebrow .eb-seg{ display:inline; white-space:nowrap; }
  .hp-hs-eyebrow .eb-sep{ display:inline; }
  .hp-hs-eyebrow strong + .eb-sep{ display:none; }
}

/* ============================================================
   HERO-SPACING: VASTE DPS-REGEL - hero-content raakt nooit de
   nav (boven) of de USP-rij (onder). JS (fitHero in main.js)
   meet dit bij load/resize en verkleint via --hero-scale tot er
   minimaal 24px vrije ruimte is aan beide kanten.
   ============================================================ */
.hp-hs-static-content{ --hero-gap-min:24px; }

/* ============================================================
   BOT-OPEN: body.bot-open verbergt alle zwevende knoppen zodat
   er niets door het invoerveld of de verstuurknop loopt.
   ============================================================ */
@media(max-width:768px){
  body.bot-open{ overflow:hidden !important; position:fixed; width:100%; }
  body.bot-open .wa-btn,
  body.bot-open .sticky-cta,
  body.bot-open .tel-btn,
  body.bot-open .wa-widget,
  body.bot-open .nav,
}

/* ============================================================
   FOOTER: TEKST BLIJFT ALTIJD BINNEN DE EIGEN KOLOM (VASTE REGEL)
   Lange e-mailadressen/domeinen breken netjes binnen de kolom
   (zoals de IBAN) en lopen NOOIT de buurkolom in.
   ============================================================ */
.footer-col{ min-width:0; }
.footer-col a, .footer-col span, .footer-col li, .footer-col .contact-item, .footer-col .contact-item-info{
  overflow-wrap:anywhere; word-break:break-word; min-width:0; max-width:100%;
}
@media(max-width:768px){
  .footer-col:has(> .contact-item) .contact-item:has(a){ white-space:normal !important; }
  .footer-col:has(> .contact-item) .contact-item a{ overflow-wrap:anywhere !important; word-break:break-all !important; }
  .footer-col:has(> .contact-item){ width:100% !important; max-width:100% !important; }
}

/* ============================================================
   FEATURE-/USP-LIJSTEN OP MOBIEL: GEEN KERSTBOOM (VASTE REGEL)
   Vinkje staat ALTIJD inline voor de tekst, alle vinkjes strak
   onder elkaar; het blok als geheel gecentreerd, tekst links.
   ============================================================ */
@media(max-width:768px){
  .why-list{ grid-template-columns:1fr !important; width:fit-content !important; max-width:100%; margin:0 auto !important; }
  .why-list li{
    display:block !important; flex-direction:row !important;
    padding-left:30px !important; text-align:left !important;
    position:relative !important; align-items:flex-start !important; gap:0 !important;
  }
  .why-list li::before{ position:absolute !important; left:0 !important; top:3px !important; margin:0 !important; }
  .svc-benefits, .lp-usps{ width:fit-content !important; margin-left:auto !important; margin-right:auto !important; }
  .svc-benefits li, .lp-usps li{ text-align:left !important; }
  .feature-list{ width:fit-content; max-width:100%; margin-left:auto; margin-right:auto; }
  .feature-list li{ text-align:left; }
}

/* ============================================================
   TOPBAR-TICKER: NOOIT STREPEN/STIPPEN (VASTE REGEL, ALLE STATES)
   Ook niet via iOS-datadetectors of tap-highlight.
   ============================================================ */

/* ============================================================
   PROJECTKAART-LOCATIE: PIN ALTIJD INLINE BIJ DE TEKST (VASTE REGEL)
   ============================================================ */
.project-meta .loc{ display:inline-flex !important; align-items:center !important; gap:6px; }
@media(max-width:768px){
  .project-meta .loc{ display:flex !important; justify-content:center !important; width:100%; }
  .project-meta .loc svg{ flex:none; position:static !important; }
}

/* ============================================================
   DEMO-DYNAMIEK (VASTE REGEL): alles vloeit van links binnen
   (80px, 1400ms, cubic-bezier(.19,1,.22,1)), pas zodra het
   element echt in beeld komt. Identiek op mobiel en desktop.
   Zichtbaarheids-vangnet zit in JS (viewport-bewust), niet in
   CSS, zodat de scroll-dynamiek nooit vooruit wordt gespeeld.
   ============================================================ */
.agf:not(.in),.agf-l:not(.in),.agf-r:not(.in),.agf-flip:not(.in){
  animation:dpsRevealSafety .4s ease .9s forwards;
}
@keyframes dpsRevealSafety{ to{ opacity:1; transform:none; } }

/* ============================================================
   iOS FOCUS-ZOOM VOORKOMEN (VASTE DPS-REGEL)
   iOS zoomt het hele beeld in zodra een invoerveld met een
   font-size kleiner dan 16px focus krijgt; daardoor schuiven
   knoppen (zoals de verstuurknop van de bot) uit beeld. Alle
   tekstinvoer is op mobiel daarom minimaal 16px. NOOIT kleiner.
   ============================================================ */
@media(max-width:768px){
  .agbot-input input,
  input[type="text"], input[type="email"], input[type="tel"],
  input[type="number"], input[type="search"], input[type="url"],
  textarea, select{
    font-size:16px !important;
  }
}

/* ============================================================
   BADGES OP FOTO'S: OP MOBIEL ALTIJD GECENTREERD (VASTE REGEL)
   Elke badge/tag die op een foto ligt (dienstkaarten, project-
   kaarten, overlays) staat op mobiel horizontaal in het MIDDEN
   van de foto, nooit links.
   ============================================================ */
@media(max-width:768px){
  .hp-svc-badge, .img-badge, .overlay-tag, .card-tag, .foto-badge, .hp-port-badge{
    left:50% !important;
    right:auto !important;
    transform:translateX(-50%) !important;
    width:max-content !important;
    max-width:calc(100% - 20px) !important;
    text-align:center !important;
  }
}

/* ============================================================
   DEMO-DYNAMIEK CSS (VASTE DPS-REGEL, bron: nelson0-demo)
   fade-in: van links, 80px, 1400ms, cubic-bezier(.19,1,.22,1).
   scale-in voor reviews. data-delay 1-6 = stagger 220ms/stap.
   Dubbele klasse-specificiteit zodat kaart-hover-transitions
   (.hp-waarom-card e.d.) de invloei nooit overschrijven.
   ============================================================ */
.fade-in.fade-in{opacity:0;transform:translateX(-40px);transition-property:opacity,transform !important;transition-duration:var(--duration) !important;transition-timing-function:var(--ease) !important}
.fade-in.scale-in{transform:scale(.97) translateY(20px)}
.fade-in.in-view{opacity:1;transform:translate(0,0) scale(1)}
.fade-in[data-delay="1"]{transition-delay:calc(var(--stagger) * 1) !important}
.fade-in[data-delay="2"]{transition-delay:calc(var(--stagger) * 2) !important}
.fade-in[data-delay="3"]{transition-delay:calc(var(--stagger) * 3) !important}
.fade-in[data-delay="4"]{transition-delay:calc(var(--stagger) * 4) !important}
.fade-in[data-delay="5"]{transition-delay:calc(var(--stagger) * 5) !important}
.fade-in[data-delay="6"]{transition-delay:calc(var(--stagger) * 6) !important}
@media (prefers-reduced-motion: reduce){.fade-in.fade-in{opacity:1;transform:none;transition:none}}
.no-js .fade-in.fade-in{opacity:1;transform:none}

/* ============================================================
   MOBIELE HERO PAST ALTIJD (Nelson-feedback 14 juli): op mobiel
   staat de hero-content in de flow (niet meer absoluut
   gecentreerd), start gegarandeerd onder de nav en de hero
   groeit mee als de content hoger is dan het scherm. Overlap
   met logo/nav is daarmee onmogelijk. Alles net wat compacter.
   ============================================================ */
@media (max-width:1023px){
  .hp-hero-slider{height:auto !important;min-height:100vh;min-height:100svh;display:flex;align-items:flex-start}
  .hp-hs-static-content{position:relative !important;left:auto !important;top:auto !important;bottom:auto !important;transform:none !important;margin:0 auto;padding:96px 22px 84px}
  .hp-hs-static-content .hp-hs-title{font-size:clamp(27px,8.7vw,35px);line-height:.9;margin-bottom:12px} /* [ref mobiel: 8.7vw, lh .9] */
  .hp-hs-static-content .hp-hs-desc{font-size:14.5px;line-height:1.4;margin-bottom:16px} /* [ref mobiel: 14.4/1.4] */
  .hp-hs-static-content .hp-hs-btnrow,.hp-hs-static-content .hp-hs-btn{margin-top:4px}
  .hp-hs-mobusps{margin:16px 0 0 !important;padding:12px 0 0 !important;gap:9px !important}
  .hp-hs-mobusps li{font-size:14px !important}
}

/* Zeer kleine schermen: hero nog iets compacter zodat de USP-regels
   vrij blijven van de zwevende bel/WhatsApp-knoppen */
@media (max-width:1023px) and (max-height:700px){
  .hp-hs-static-content{padding-top:74px !important}
  .hp-hs-static-content .hp-hs-title{font-size:clamp(24px,7vw,30px) !important;margin-bottom:10px !important}
  .hp-hs-static-content .hp-hs-desc{font-size:13.5px !important;margin-bottom:13px !important}
  .hp-hs-mobusps{margin-top:13px !important;gap:8px !important}
  .hp-hs-mobusps li{font-size:13px !important}
}

/* ============================================================
   FOOTER CONTACT-KOLOM GECENTREERD (Nelson-feedback 14 juli):
   alle contactregels (06 t/m IBAN) netjes gecentreerd onder de
   kop Contact, desktop en mobiel. Rest van de footer ongemoeid.
   ============================================================ */
.footer .contact-item{justify-content:center !important;text-align:center !important}
.footer-col:has(.contact-item) h4{text-align:center !important}
.footer-col:has(.contact-item){text-align:center !important}

/* LOCKED (Oskam): FAQ op mobiel — plusje nooit door de vraagtekst */
@media(max-width:768px){
  .faq-q, .hp-faqcontact .faq-q, .hp-faq-block .faq-q, .hp-faqsec .faq-q{
    padding:18px 46px !important; justify-content:center !important;
    text-align:center !important; position:relative !important;
  }
  .faq-q .faq-icon{position:absolute !important;right:6px !important;top:50% !important;
    transform:translateY(-50%) !important;margin:0 !important}
  .faq-item.open .faq-q .faq-icon{transform:translateY(-50%) rotate(45deg) !important}
}

/* ============ DPS VASTE REGELS — RUSTIGE ANIMATIES + MOBIEL (rondes 8+9) ============ */
/* Reveal: rustig en soepel (.85s, zachte curve, stagger 110ms) */
.reveal, .reveal-x, .reveal-x-r, .reveal-up{
  opacity:0;
  transition:opacity .85s cubic-bezier(.22,.61,.36,1), transform .85s cubic-bezier(.22,.61,.36,1);
}
.reveal, .reveal-up{ transform:translateY(24px); }
.reveal.in-view, .reveal-x.in-view, .reveal-x-r.in-view, .reveal-up.in-view{ opacity:1; transform:none; }
.stagger > *{ transition:opacity .85s cubic-bezier(.22,.61,.36,1), transform .85s cubic-bezier(.22,.61,.36,1) !important; }
.stagger.in-view > *:nth-child(1){ transition-delay:0ms !important; }
.stagger.in-view > *:nth-child(2){ transition-delay:110ms !important; }
.stagger.in-view > *:nth-child(3){ transition-delay:220ms !important; }
.stagger.in-view > *:nth-child(4){ transition-delay:330ms !important; }
.stagger.in-view > *:nth-child(5){ transition-delay:440ms !important; }
.stagger.in-view > *:nth-child(6){ transition-delay:550ms !important; }
@media (prefers-reduced-motion: reduce){
  .reveal,.reveal-x,.reveal-x-r,.reveal-up,.stagger>*{opacity:1!important;transform:none!important;transition:none!important}
}

/* MOBIEL: tekstblokken in EEN kolom; vinkjeslijsten nooit 2x2 (overrulet oudere 2x2-regels) */
@media (max-width:640px){
  .hp-tips-track, .tips-grid, .hp-waarom-grid, .hp-why-reasons-track,
  .hp-intro-points, .voordelen-grid, .usp-grid, .check-list{ grid-template-columns:1fr !important; }
  .hp-svc-features, .content-2col .content-text .feature-list, .feature-list{
    display:flex !important; flex-direction:column !important; grid-template-columns:none !important;
    gap:10px !important; width:fit-content !important; max-width:100% !important;
    margin-left:auto !important; margin-right:auto !important; text-align:left !important;
  }
  .hp-svc-features li, .feature-list li{ justify-content:flex-start !important; text-align:left !important; }
  .rucalc-nav{ justify-content:center !important; }
}

/* MOBIEL: hero-contentblok exact gecentreerd tussen header en schermonderkant (JS zet --header-h) */
@media (max-width:1023px){
  .hp-hero-slider.hp-hero-static{ min-height:100svh; }
  .hp-hs-static-content{
    top:var(--header-h,110px) !important; bottom:0 !important; left:0 !important; right:0 !important;
    width:auto !important; height:auto !important; transform:none !important; margin:0 !important;
    display:flex !important; flex-direction:column !important;
    justify-content:center !important; align-items:center !important; padding:0 22px !important;
  }
}

/* VINKJES: altijd groen, links naast de tekst */
.hp-svc-features li{ text-align:left; }
.hp-svc-features li::before{
  background-color:rgba(22,163,74,.12) !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2316a34a' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") !important;
}
.feature-list .check{ background:#16a34a !important; }
.feature-list .check svg{ stroke:#ffffff !important; }

/* INSTAGRAM-icoon: cirkelrand in de IG-gradient */
.nav-social a[aria-label="Instagram"], .footer-social a[aria-label="Instagram"],
a.mobile-menu-fb[aria-label="Instagram"]{ position:relative; border-radius:50%; }
a.mobile-menu-fb[aria-label="Instagram"]{ width:40px; height:40px; display:inline-flex; align-items:center; justify-content:center; }
.nav-social a[aria-label="Instagram"]::before, .footer-social a[aria-label="Instagram"]::before,
a.mobile-menu-fb[aria-label="Instagram"]::before{
  content:""; position:absolute; inset:0; border-radius:50%; padding:2px;
  background:linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude; pointer-events:none;
}

/* TIPS-labels op een regel */
.hp-tips-tag, .tip-tag, .hp-tips-meta, .hp-tips-meta span, .tip-meta{ white-space:nowrap; }

/* KOPPEN: analyseer bij ELKE build het logo van DEZE klant en zet de donkere neutrale kleur
   daaruit in --heading-brand (op :root). NOOIT een kleur van een vorige klant hardcoden;
   de fallback hieronder is neutraal en wordt per build vervangen. */
h2, .section-header h2, .hp-waarom-head h2, .hpgr-head h2{ color:var(--heading-brand,#3a444c) !important; }
.hp-insta h2{ color:#ffffff !important; }

/* Header-hoogte als vaste CSS-variabele per breakpoint (geen JS-meting -> geen hero-sprong) */
@media (max-width:1023px){ html{ --header-h:110px; } }
@media (max-width:640px){ html{ --header-h:108px; } }
@media (max-width:1023px){
  .hp-hs-static-content{ transition:opacity .85s cubic-bezier(.22,.61,.36,1) !important; }
}

/* ============ DPS COOKIEBANNER (vast onderdeel, Consent Mode v2) ============ */
#dpscb{ position:fixed; inset:auto 0 0 0; z-index:2147483000; padding:14px; display:flex; justify-content:center; }
#dpscb .dpscb-card{ background:#fff; color:#252a2d; border:1px solid #e2e2e2; border-radius:16px;
  box-shadow:0 12px 40px rgba(0,0,0,.22); max-width:560px; width:100%; padding:20px 22px; }
#dpscb h3{ margin:0 0 8px; font-size:18px; color:#252a2d !important; }
#dpscb p{ margin:0 0 14px; font-size:14px; line-height:1.55; color:#4a5157; }
#dpscb p a{ color:inherit; text-decoration:underline; }
#dpscb .dpscb-btns{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
#dpscb .dpscb-btn{ appearance:none; border:0; border-radius:999px; padding:13px 18px; font-size:15px;
  font-weight:700; cursor:pointer; font-family:inherit; }
#dpscb .dpscb-accept{ background:var(--gold,#F59E0B); color:#fff; }
#dpscb .dpscb-deny{ background:#eef0f2; color:#252a2d; }
#dpscb .dpscb-link{ appearance:none; background:none; border:0; padding:10px 0 0; font-size:13.5px;
  text-decoration:underline; cursor:pointer; color:#6c7680; font-family:inherit; }
#dpscb .dpscb-opts{ border-top:1px solid #ececec; margin:4px 0 12px; padding-top:12px; display:flex; flex-direction:column; gap:10px; }
#dpscb .dpscb-opt{ display:flex; gap:10px; align-items:flex-start; font-size:14px; }
#dpscb .dpscb-opt small{ display:block; color:#77808a; font-size:12.5px; }
#dpscb .dpscb-save{ background:#3a444c; color:#fff; margin-top:2px; }
@media (max-width:640px){ #dpscb{ padding:10px; } #dpscb .dpscb-card{ padding:16px; } }

/* ============ Google Maps click-to-load facade (privacy: geen embed voor de klik) ============ */
.map-facade{ background:#eef0f2; border:1px solid #e2e2e2; border-radius:14px; min-height:280px;
  display:flex; align-items:center; justify-content:center; text-align:center; width:100%; }
.map-facade-inner{ display:flex; flex-direction:column; align-items:center; gap:10px; padding:26px; color:#3a444c; }
.map-facade-btn{ appearance:none; border:0; border-radius:999px; padding:12px 26px; background:var(--gold,#F59E0B);
  color:#fff; font-weight:700; font-size:15px; cursor:pointer; font-family:inherit; }
.map-facade small{ color:#8b96a1; font-size:12.5px; }
.map-facade iframe{ width:100%; min-height:280px; border:0; border-radius:14px; }

/* B2: header-hoogte als vaste CSS-variabele per breakpoint (geen JS-meting -> geen sprong).
   Hero-centrering gebruikt var(--header-h); reveal op de hero alleen opacity. */
@media (max-width:1023px){ html{ --header-h:110px; } }
@media (max-width:640px){ html{ --header-h:108px; } }
@media (max-width:1023px){
  .hp-hs-static-content{ transition:opacity .85s cubic-bezier(.22,.61,.36,1) !important; }
}

/* ============ RONDE 10 — C1/C2/D1 ============ */

/* C1 (ALLEEN DESKTOP): projectengrid zonder gaten — 6 kaarten = 2 rijen van 3, gecentreerd.
   Vaste regel: kolomaantal past zich aan het aantal kaarten aan, nooit lege vakken. */
@media (min-width:1024px){
  .hp-port-grid{
    grid-template-columns:repeat(3,1fr) !important;
    grid-auto-rows:auto !important;
    max-width:1100px !important;
    gap:24px !important;
  }
}

/* C2 (desktop en mobiel, zelfde element): het woord "Instagram" bovenaan de sectie krijgt
   exact dezelfde pill als de knop onderaan: 2px gradient-rand, rond. */
.ig-eyebrow::before{ padding:2px !important; }

/* D1: cirkelrand om ALLE social iconen, elk in de eigen merkkleur (nav + footer).
   Zelfde ringtechniek als Instagram, dus identieke maatvoering. */
.nav-social a[aria-label="Facebook"], .footer-social a[aria-label="Facebook"],
.nav-social a[aria-label="Pinterest"], .footer-social a[aria-label="Pinterest"],
a.mobile-menu-fb[aria-label="Facebook"], a.mobile-menu-fb[aria-label="Pinterest"]{
  position:relative; border-radius:50%;
}
a.mobile-menu-fb[aria-label="Facebook"], a.mobile-menu-fb[aria-label="Pinterest"]{
  width:40px; height:40px; display:inline-flex; align-items:center; justify-content:center;
}
.nav-social a[aria-label="Facebook"]::before, .footer-social a[aria-label="Facebook"]::before,
a.mobile-menu-fb[aria-label="Facebook"]::before{
  content:""; position:absolute; inset:0; border-radius:50%; padding:2px; background:#1877F2;
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude; pointer-events:none;
}
.nav-social a[aria-label="Pinterest"]::before, .footer-social a[aria-label="Pinterest"]::before,
a.mobile-menu-fb[aria-label="Pinterest"]::before{
  content:""; position:absolute; inset:0; border-radius:50%; padding:2px; background:#E60023;
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude; pointer-events:none;
}
#dpscb .dpscb-opts[hidden]{ display:none !important; }

#dpscb .dpscb-opts[hidden]{ display:none !important; }
/* Hero-knop op mobiel altijd even helder als de zwevende bot-knop (geen zware donkere
   schaduw, boven de overlay, iOS-safe; box-shadow zonder !important i.v.m. repaint-pomp). */
@media (max-width:640px){
  .hp-hs-btn{
    opacity:1 !important; filter:none !important; -webkit-backdrop-filter:none !important;
    position:relative; z-index:20;
    box-shadow:0 10px 26px -8px var(--cta-shadow, rgba(0,0,0,.35));
  }
  /* Zwevende bot-knop op ELKE mobiele pagina zichtbaar, ook subpagina's */
  body.subpage .agbot{ display:block !important; }
}
body.bot-open #dpscb{ display:none !important; }

/* ============================================================
   GEDEELDE GOUDEN CTA  (.dps-cta-gold)  - VASTE REGEL
   ------------------------------------------------------------
   De hero-CTA "Offerte aanvragen" en de zwevende knop "Aanvraag
   doen" delen exact dezelfde button-class. Een wijziging hier
   raakt beide knoppen tegelijk, zodat ze niet meer uit elkaar
   kunnen lopen. Nooit een van de twee los stylen.

   Dit blok staat bewust als LAATSTE in het bestand, zodat het
   van alle eerdere !important-lagen wint.

   Schaduw met NEGATIEVE spread (-8px): die blijft onder de knop
   en houdt de rand scherp. Een schaduw met spread 0 en veel blur
   bloedt aan alle kanten uit en maakt de knop dof/gesluierd.

   Reveal-animaties eindigen altijd op opacity:1 (fill-mode
   forwards of een expliciete eindklasse). Nooit een oneindige
   animatie op box-shadow: animatie-declaraties winnen van elke
   normale declaratie en blokkeren daarmee iedere latere fix.
   ============================================================ */
.dps-cta-gold{
  background:var(--gold,#F59E0B) !important;
  background-image:none !important;
  color:#ffffff !important;
  opacity:1 !important;
  visibility:visible !important;
  animation:none !important;
  filter:none !important;
  backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
  mix-blend-mode:normal !important;
  box-shadow:0 10px 26px -8px rgba(246,168,0,.5) !important;
}
.dps-cta-gold:hover,
.dps-cta-gold:focus-visible{
  background:var(--gold-dark,#c9a800) !important;
  color:#ffffff !important;
  box-shadow:0 16px 38px -10px rgba(246,168,0,.6) !important;
}
.dps-cta-gold svg{ stroke:#fff }

/* De hero-content staat ALTIJD boven de USP-scrim (.hp-hero-slider::after,
   z-index:5). Dit moet op de OUDER staan: die vormt de stacking context, dus een
   hogere z-index op de knop zelf helpt niet. Getest op viewport-hoogtes 620 t/m
   844 in Chromium en WebKit. */
.hp-hs-static-content{ position:relative; z-index:7 !important; }

/* AUDIT: gedegradeerde formulier-koppen behouden h1-uiterlijk */
.of-info .of-h1{font-family:var(--font-kop);font-weight:700;font-size:34px;letter-spacing:.02em;margin:10px 0 12px;}

/* AUDIT: zonder JavaScript is ALLE content zichtbaar (no-js vangnet, ook stagger-kinderen) */
.no-js .stagger > *, .no-js .fade-in, .no-js .hp-hs-static-content{ opacity:1 !important; transform:none !important; }

/* AUDIT: nette printweergave (nav, floats, banner en bot niet mee printen) */
@media print{
  .nav, .agbot, .wa-widget, .sticky-cta, #dpscb, .mobile-menu, .nav-burger,
  .hp-hero-slider video, .vd-sound, .vd-play{ display:none !important; }
  body{ background:#fff !important; color:#000 !important; }
  .reveal, .reveal-x, .reveal-x-r, .reveal-up, .stagger > *{ opacity:1 !important; transform:none !important; }
  a[href^="http"]::after{ content:" (" attr(href) ")"; font-size:11px; color:#555; }
}

/* ============================================================
   VASTE VORMREGELS - TEMPLATE-DEFAULT (04-08-2026)
   Deze stonden wel in CLAUDE.md en in de skill, maar niet in de
   template zelf, waardoor ze per build handmatig gezet moesten
   worden en er dus steeds doorheen glipten.
   ============================================================ */

/* Footer ALTIJD puur zwart, nooit antraciet. */
.footer, footer.footer{ background:#000000 !important }

/* Centreren is de standaard in ELKE kaart, desktop EN mobiel.
   Links op desktop en gecentreerd op mobiel is een fout. */
.hp-waarom-card, .hp-svc-body, .dienst-card-body, .tip-card .tip-body,
.hp-tips-card-body, .value-card, .voordeel-card, .why-card, .hp-werk-step,
.project-meta, .grev-card, .hpgr-card, .rich-rev{ text-align:center !important }
.hp-waarom-card .hp-waarom-ic, .value-card .icon, .voordeel-card .voordeel-icon,
.why-card .why-icon, .hp-werk-step .hp-werk-num,
.hp-svc-body .btn, .dienst-card-body .dienst-card-link{
  margin-left:auto !important; margin-right:auto !important;
}
.project-meta .loc{ justify-content:center !important }

/* Vinkjeslijsten: het BLOK gecentreerd, regels erbinnen links,
   zodat alle vinkjes op een lijn staan. Nooit per regel centreren. */
.hp-svc-features, .feature-list, .why-list, .usp-list, .lp-usps, .footer-benefits{
  width:fit-content !important; margin-left:auto !important; margin-right:auto !important;
  text-align:left !important; list-style:none; padding-left:0;
}
.hp-svc-features li, .feature-list li, .why-list li, .usp-list li, .lp-usps li{
  text-align:left !important; justify-content:flex-start !important;
}

/* Footer-contactkolom op mobiel: alle regels op een linkerrand,
   de groep als geheel gecentreerd. (Het oude FOOTER-FIX v200-blok
   zette juist justify-content:center, tegen zijn eigen comment in.) */
@media(max-width:768px){
  .footer-col:has(> .contact-item){
    display:flex; flex-direction:column; align-items:flex-start;
    width:fit-content; max-width:100%; margin-left:auto; margin-right:auto;
  }
  .footer-col:has(> .contact-item) > h4{ align-self:center }
  .footer-col .contact-item, .footer-col .contact-item-info{
    justify-content:flex-start !important; text-align:left !important; width:100%;
  }
}

/* Header ALTIJD volledig doorzichtig, ook op subpagina's en na scroll. */
.nav, .nav:not(.scrolled), .nav.scrolled,
body.has-subhero .nav, body.has-subhero .nav:not(.scrolled), body.subpage .nav{
  background:none !important; background-color:transparent !important;
  background-image:linear-gradient(to bottom, rgba(10,22,36,.55), rgba(10,22,36,0)) !important;
  background-size:100% 150px !important; background-repeat:no-repeat !important;
  backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
  box-shadow:none !important; border-bottom:0 !important;
}
.nav .nav-links > li > a, .nav .nav-phone{ text-shadow:0 1px 4px rgba(0,0,0,.55) }

/* WhatsApp-knoppen ALTIJD het herkenbare WhatsApp-groen. */
.wa-btn, .sticky-cta-wa, .btn-pill-wa, .btn-cta-wa{
  background:#25D366 !important; background-image:none !important; color:#fff !important;
}
.wa-btn:hover, .sticky-cta-wa:hover, .btn-pill-wa:hover, .btn-cta-wa:hover{
  background:#1EBE5B !important; background-image:none !important;
}

/* Koppen en eyebrows op donkere secties: wit, pill met accentrand. */
section.hp-waarom h2, section.hp-waarom h3, section.hp-insta h2, section.hp-insta h3,
section.dark h1, section.dark h2, section.dark h3, section.dark h4,
section.cta-band h2, section.rich-final-cta h2, .footer h4, .footer h3{ color:#fff !important }

/* Instagram-sectie puur zwart. */
section.hp-insta{ background:#000000 !important }

/* ============================================================
   OORZAAK VAN DE "HALVE FOTO'S" OP MOBIEL (vaste fix)
   De mobiele regel zette grid-auto-rows:240px op alle contentgrids.
   Kaarten met een foto plus tekst passen daar niet in en werden
   afgekapt: er bleef een streepje foto over en de tekst verdween
   onder overflow:hidden. Contentgrids groeien mee met hun inhoud;
   alleen de fotomozaiek-galerij houdt een vaste rijhoogte.
   ============================================================ */
@media(max-width:768px){
  .why-grid, .diensten-grid, .tips-grid, .reviews-grid, .values-grid,
  .projecten-grid, .hp-svc-grid, .hp-tips-grid, .voordelen-grid{
    grid-auto-rows:auto !important;
  }
  .dienst-card, .tip-card, .hp-svc-card, .hp-tips-card, .why-card, .value-card{
    height:auto !important; min-height:0 !important;
  }
}

/* ============================================================
   VARIANT 2 — STAP 1: FUNDAMENT (randoco-vertaling, akkoord 10-08-2026)
   Tokens, knopstijl, kopschaal, witruimte, patroon-utilities.
   Cirkels (wa-btn, tel-btn, hp-why-btn, dots, social-iconen) blijven rond.
   Eyebrow-pills blijven per VASTE REGEL volledig rond (999px).
   ============================================================ */
:root{
  --r-btn: 0 18px;                  /* knoppen: asymmetrisch, 2 hoeken recht, 2 rond */
  --r-img: 0 0 48px 0;              /* beelden: één grote ronde hoek rechtsonder */
  --r-panel: 0 0 60px 0;            /* grote panelen: mega-menu, hero-paneel */
  --sec-y: clamp(72px, 9vw, 128px); /* verticale sectie-lucht */
  /* Achtergrondpatroon: subtieler gezet naar de referentie (ref: streep 4,5%
     donkerder dan de ondergrond, dunne lijn, ruime tussenruimte) */
  --v2-streep-licht: repeating-linear-gradient(45deg, rgba(0,0,0,.05) 0 1px, transparent 1px 24px);
  --v2-streep-donker: repeating-linear-gradient(45deg, rgba(255,255,255,.055) 0 1px, transparent 1px 24px);
  --kop-xl: clamp(34px, 5vw, 72px);   /* sectiekop */
  --kop-xxl: clamp(46px, 9vw, 132px); /* statement-kop (utility .kop-xxl) */
}
@media (max-width:640px){
  :root{ --sec-y: clamp(56px, 10vw, 84px); }
}

/* Knopstijl: alle tekstknoppen dezelfde asymmetrische hoek, ook de gedeelde
   gouden CTA-class zelf zodat hero-CTA en zwevende knop per definitie gelijk zijn. */
.btn, a.btn.btn-primary, a.btn.btn-ghost, .btn.btn-primary, .btn.btn-ghost,
.hp-hs-btn, .btn-pill-outline, .btn-pill-wa, .btn-pill-dark,
.of-submit, .agbot-launch, .rucalc-btn, .lp-submit, .hp-insta-btn,
.map-facade-btn, .sticky-cta a, #dpscb .dpscb-btn,
.dps-cta-gold{
  border-radius: var(--r-btn);
}

/* Kopschaal: groot contrast t.o.v. de bodytekst, strakke regelafstand.
   Hero-kop blijft buiten schot (eigen regels; hero is stap 2). */
.hp-overons h2, .hp-waarom h2, .hp-services h2, .hp-werkwijze h2,
.hp-portfolio h2, .hp-tips h2, .hp-greviews h2, .hp-contact h2,
.hp-faqsec h2, .subhero h1, .seo-content h2{
  font-size: var(--kop-xl);
  line-height: .98;
}
.kop-xxl{ font-size: var(--kop-xxl); line-height: .95; }

/* Witruimte: ruimer sectieritme zoals de referentie */
.hp-overons, .hp-waarom, .hp-services, .hp-werkwijze,
.hp-portfolio, .hp-tips, .hp-greviews, .hp-faqsec{
  padding-block: var(--sec-y);
}
.hp-insta, .hp-contact{ padding-block: clamp(64px, 8vw, 112px); }

/* Patroon- en watermerk-utilities (toegepast in latere stappen).
   Traanplaat van de referentie vervangen door een eigen subtiel
   diagonaal lijnenpatroon; kleur volgt de klant-huisstijl. */
.v2-pattern-dark{ background-image:var(--v2-streep-donker); }
.v2-pattern-light{ background-image:var(--v2-streep-licht); }
.v2-watermark{ position: relative; overflow: hidden; }
.v2-watermark::before{
  content:""; position:absolute; right:-6%; bottom:-18%; width:46%;
  aspect-ratio:1/1; background:url(../img/logo.png) center/contain no-repeat;
  opacity:.05; pointer-events:none;
}

/* ============================================================
   VARIANT 2 — STAP 2 (v2): HERO EXACT OP REFERENTIEMETING
   Gemeten aan randoco.com op 1440x900 en 390x844, omgezet naar
   vw/svh zodat de verhoudingen op elke breedte kloppen.
   Meetwaarden staan per regel in commentaar: [ref: ...]
   Foto's blijven onze eigen template-plaatsvervangers.
   ============================================================ */

/* Paneel-typografie uit de vorige iteratie blijft: donkere kop op wit */
.hp-hero-static .hp-hs-title{ color:var(--brand-dark); text-shadow:none; line-height:.9; } /* [ref: lh 54/60 = .9] */
.hp-hero-static .hp-hs-title em{ color:var(--bronze-dark, var(--bronze)); }
.hp-hero-static .hp-hs-title strong{ color:inherit; }
.hp-hero-static .hp-hs-desc{ color:var(--text, #3D4145); text-shadow:none; line-height:1.4; } /* [ref: 25.2/18 = 1.4] */
.hp-hero-static .hp-hs-eyebrow,
.hp-hero-static .hp-hs-eyebrow *{ color:var(--brand-dark); }
.hp-hero-static .hp-hs-eyebrow{ border:1px solid var(--bronze); background:transparent; border-radius:999px; }

@media (min-width:1024px){
  .hp-hero-slider{
    height:100svh;                     /* vult het scherm; de volgende sectie komt pas bij scrollen */
    min-height:560px; max-height:none;
    background:#fff;                   /* [ref: rechterkant = paginawit, geen paneel] */
  }
  .hp-hero-slides{
    inset:auto; left:0; top:0;
    width:48vw;                        /* [ref: foto 692/1440 = 48vw] */
    height:92.3%;                      /* [ref: foto 717/777 = 92.3% van hero] */
    border-radius:0 0 60px 0;          /* [ref: radius 0 0 60px] */
    overflow:hidden;
  }
  /* Referentie heeft geen foto-overlay; alleen een lichte waas bovenin
     voor de leesbaarheid van de transparante header (vaste regel) */
  .hp-hero-static .hp-hs-overlay{
    background:linear-gradient(to bottom, rgba(0,0,0,.30), transparent 32%);
  }
  /* Zwart decorblok rechts, met ons eigen patroon i.p.v. traanplaat
     [ref: x 1230-1440 = 14.6vw breed, vanaf navhoogte tot hero-onderkant] */
  .hp-hero-slider::before{
    content:""; position:absolute; right:0; width:14.6vw;
    top:clamp(94px, 7.29vw, 105px); bottom:0; z-index:1;
    background-color:#000;                 /* [ref: zwart vlak top 105, h 672] */
  }
  /* [ref: textuurstrip 60 van 210px op de rechterrand van het zwarte blok] */
  .hp-hero-slider::after{
    content:""; position:absolute; right:0; z-index:2; pointer-events:none;
    top:clamp(94px, 7.29vw, 105px); bottom:0; width:4.18vw;   /* 28,6% van 14,6vw */
    background-image:var(--v2-traanplaat-licht);
    background-size:var(--v2-tegel);
  }
  .hp-hs-static-content{
    position:absolute !important;
    left:52vw;                         /* [ref: content left 748/1440 = 52vw] */
    right:auto;
    top:clamp(121px, 9.375vw, 138px) !important;
    /* [ref: kop op y=135 bij 1440 en 1920, 121 bij 1280 - vast, niet op schermhoogte] */
    bottom:auto !important;
    transform:none !important;
    width:31vw;                        /* [ref: contentbreedte 446/1440 = 31vw] */
    max-width:none;
    background:transparent;            /* [ref: bg transparant, geen paneel] */
    border-radius:0; padding:0; box-shadow:none;
  }
  .hp-hs-static-content .hp-hs-desc{
    margin:15px 0 34px;                /* [ref: 15px onder kop, CTA 34px onder tekst] */
    max-width:31vw !important;         /* [ref: alinea 446/1440 = 31vw] */
  }
  /* Uitgelicht projectkaartje [ref: rechts 7.3vw, 60px boven hero-onderkant,
     19.9vw breed, 30vh hoog; accentpaneel zelfde hoogte ernaast] */
  .v2-hero-featured{
    position:absolute; z-index:6;
    right:0; bottom:60px;      /* [ref: geel blok raakt de schermrand] */
    display:flex; align-items:stretch;
    gap:1.25vw;                /* [ref: tussenruimte 18px@1440, 16px@1280 = 1.25vw] */
  }
  .v2-hero-featured .project-card{
    width:19.9vw; height:18.75vw; aspect-ratio:auto;   /* [ref: 287x270 bij 1440] */
  }
  .v2-hero-showall{ width:6.04vw; min-width:64px; } /* [ref: 87/1440 = 6.04vw, verhouding 0.303 t.o.v. kaart] */
  /* USP-rij: eigen component (referentie heeft er geen), compact
     onderin over de foto, binnen de fotobreedte */
}

/* Projectkaartje + accentpaneel (alle formaten) */
.v2-hero-featured .project-card{ margin:0; border-radius:var(--r-img); }
.v2-hero-showall{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
  padding:14px 10px;
  background:var(--bronze); color:#fff;
  font-family:var(--font-display); font-weight:700; font-size:14px;
  letter-spacing:.06em; text-transform:uppercase; text-align:center;
  border-radius:0 0 24px 0; text-decoration:none;
  transition:filter .25s var(--ease), transform .25s var(--ease);
}
.v2-hero-showall:hover{ filter:brightness(1.08); transform:translateY(-2px); }
.v2-hero-showall span[aria-hidden]{ font-size:28px; line-height:1; }

/* Mobiel exact op referentiemeting 390x844: foto boven, content op wit eronder */
@media (max-width:1023px){
  .hp-hero-slider{ flex-direction:column; align-items:stretch !important; background:#fff; padding-bottom:0; } /* [ref: kaart 42px boven onderkant] */
  .hp-hero-slides{
    position:relative; inset:auto;
    width:100%;
    height:36.7svh;                    /* [ref: foto 309/844 = 36.7vh] */
    border-radius:0 0 32px 0;          /* [ref: radius 0 0 32px] */
    overflow:hidden;
  }
  .hp-hero-static .hp-hs-overlay{
    background:linear-gradient(to bottom, rgba(0,0,0,.30), transparent 45%);
  }
  .hp-hs-static-content{
    background:transparent;
    border-radius:0; box-shadow:none;
    margin:27px 5.4vw 0 !important;    /* [ref: content 27px onder foto, 5.4vw zijmarge] */
    padding:0 !important;
    top:0 !important;
    width:89.3vw;                      /* [ref: 348/390 = 89.3vw] */
  }
  .hp-hs-static-content .hp-hs-desc{ margin:10px 0 16px; } /* [ref: 10px na kop, CTA 16px na tekst] */
  .v2-hero-featured{
    margin:24px 0 42px 5.4vw;          /* [ref: kaart links 5.4vw, tot schermrand, 42px onder] */
    width:94.6vw;
    display:flex; align-items:stretch; position:relative; z-index:6;
    gap:9px;                           /* [ref: tussenruimte 9px@390] */
  }
  .v2-hero-featured .project-card{ flex:1; height:21.7svh; aspect-ratio:auto; } /* [ref: 183/844] */
  .v2-hero-showall{ width:13.1vw; min-width:48px; padding:10px 6px; font-size:12px; } /* [ref: 51/390 = 13.1vw] */
}

/* ============================================================
   VARIANT 2 — STAP 2b: STATISCH BEELD, EXACTE HOEKEN, SCROLL-HEADER
   Gemeten aan randoco.com (1440x900). DEEL C-uitzonderingen 1 en 2.
   ============================================================ */

/* Uitzondering 1: één statisch beeld, geen zoom/Ken Burns, links én rechts */
.hp-hero-static .hp-hs-img{ animation:none !important; transform:none !important; transition:none !important; }
.v2-hero-featured .project-card img{ transition:none; }
.v2-hero-featured .project-card:hover img{ transform:none; }

/* Hoeken exact per beeldvlak:
   groot beeld: alleen rechtsonder 60px  [ref: 0px 0px 60px]  (stond al goed)
   kaartje: rechtsboven + linksonder 30px [ref: 0px 30px]
   geel/accentblok: alleen linksonder 30px [ref: 0px 0px 0px 30px]
   zwart decorblok: alleen linksonder 60px [ref: 0px 0px 0px 60px] */
.v2-hero-featured .project-card{ border-radius:0 30px; overflow:hidden; }
.v2-hero-showall{ border-radius:0 0 0 clamp(20px, 2.08vw, 30px); } /* [ref: 30@1440, 28@1280, 21@390] */
@media (min-width:1024px){
  .hp-hero-slider::before{ border-radius:0 0 0 60px; }
}

/* Geen foto-overlay [ref: geen overlay op het beeld] */
.hp-hero-static .hp-hs-overlay{ background:none !important; }

/* Uitzondering 2: header bovenaan volledig leeg (geen balk, geen gradient),
   witte balk direct bij scroll (drempel 10px, overgang 0s zoals gemeten) */
.nav, .nav:not(.scrolled), .nav.scrolled,
body.has-subhero .nav, body.has-subhero .nav:not(.scrolled), body.subpage .nav{
  background-image:none !important;
  transition:none !important;
}
.nav.v2-sticky, .nav.v2-sticky.scrolled,
body.has-subhero .nav.v2-sticky, body.subpage .nav.v2-sticky{
  background-color:#fff !important;
  box-shadow:0 2px 14px rgba(0,0,0,.10) !important;
}

/* Eén logobestand in de header, geen wissel: het kleurenorigineel
   (template: hertinte placeholder; klantbuild: het originele logo) */
.nav-logo .logo-on-dark{ display:none !important; }
.nav-logo .logo-on-light{ display:block !important; }

/* Navigatietekst donker in beide toestanden [ref: zwarte navtekst boven én op de balk] */
.nav-links a, .nav-phone{ color:var(--brand-dark) !important; text-shadow:none !important; }
.nav-links a.is-active, .nav-links a.active{ color:var(--bronze) !important; }

/* Donkere fotosubhero's (body.v2-nav-licht, alle v2-gh- en kennisbankpagina's):
   navtekst WIT zolang de balk transparant is, precies zoals de referentie op
   about-us doet (wit bovenaan de donkere hero, zwart zodra de witte balk er is
   door scroll of een geopend paneel — .v2-sticky dekt beide). De donkere
   pagina's zijn gemeten (navband-luminantie 106-146 om 200-247 bij de lichte). */
/* Sommige subherofoto's zijn bovenaan bijna wit (over-ons meet er 180+),
   witte tekst alleen is daar niet genoeg. Daarom op deze pagina's de vaste
   zachte leesgradient van bovenaf (CLAUDE.md); geen balk, hij valt weg naar
   beneden en verdwijnt zodra de witte balk verschijnt. */
body.v2-nav-licht .nav:not(.v2-sticky){
  background-image:linear-gradient(to bottom, rgba(0,0,0,.42), transparent) !important;
  background-size:100% 150px; background-repeat:no-repeat;
}
body.v2-nav-licht .nav:not(.v2-sticky) .nav-links a,
body.v2-nav-licht .nav:not(.v2-sticky) .nav-phone{ color:#fff !important; }
body.v2-nav-licht .nav:not(.v2-sticky) .nav-links a.is-active,
body.v2-nav-licht .nav:not(.v2-sticky) .nav-links a.active,
body.v2-nav-licht .nav:not(.v2-sticky) .nav-links a:hover{ color:var(--bronze-light) !important; }
body.v2-nav-licht .nav:not(.v2-sticky) .v2-mm-toggle span{ background:#fff; }
body.v2-nav-licht .nav:not(.v2-sticky) .nav-lang-btn{
  color:#fff; border-color:rgba(255,255,255,.45);
}

/* Logo: één bestand in beide toestanden; wint van de oude scrolled-logowissel (regel ~3162) */
.nav.scrolled .nav-logo .logo-on-light{ display:block !important; }
.nav.scrolled .nav-logo .logo-on-dark{ display:none !important; }

/* Social-iconen leesbaar op wit: icoon in de merkkleur van het kanaal.
   IG-cirkelrand blijft de gradient; een svg-stroke kan geen gradient,
   dus het IG-icoon staat in het gradientrood (compromis, gemeld). */
.nav-social-btn{ background:transparent; }
.nav-social-btn[aria-label="Instagram"] svg{ color:#dc2743; }
.nav-social-btn[aria-label="Facebook"] svg{ color:#1877F2; }
.nav-social-btn:hover svg{ color:#fff; }

/* Entree van kaartje en knop zoals de referentie (gestaggerd na de tekst),
   maar ALLEEN op opacity: de vaste regel staat geen positie-animaties op de
   hero toe. Eindstand is exact de gemeten referentielayout. */
@keyframes v2FadeIn{ from{opacity:0} to{opacity:1} }
.v2-hero-featured .project-card{ opacity:0; animation:v2FadeIn .8s ease .95s both; }
.v2-hero-showall{ opacity:0; animation:v2FadeIn .8s ease 1.15s both; }
@media (prefers-reduced-motion: reduce){
  .v2-hero-featured .project-card, .v2-hero-showall{ opacity:1; animation:none; }
}
.no-js .v2-hero-featured .project-card, .no-js .v2-hero-showall{ opacity:1; animation:none; }

/* ============================================================
   VARIANT 2 — MEGA-MENU (gemeten aan randoco.com, 1440x900)
   paneel: fullwidth, top = navhoogte, min-h 459px, wit,
   transitie opacity .25s + visibility .25s [ref]
   tabs: 336px breed, item 59px hoog, 18px/700 [ref]
   kaartfoto: 416x364, radius 0 45px [ref]; knop accent [ref 158x53]
   Gedrag: klik op plusje opent, plus wordt min, nogmaals klikken sluit.
   ============================================================ */
.v2-mm-toggle{
  appearance:none; border:0; background:transparent; cursor:pointer;
  width:22px; height:22px; position:relative; padding:0; flex:0 0 auto;
}
.v2-mm-toggle span{
  position:absolute; left:4px; right:4px; top:50%; height:2px; margin-top:-1px;
  background:var(--bronze); border-radius:1px;
  transition:transform .2s var(--ease), opacity .2s;
}
.v2-mm-toggle span:last-child{ transform:rotate(90deg); }
.v2-mm-toggle[aria-expanded="true"] span:last-child{ transform:rotate(0deg); opacity:0; } /* plus -> min */
@media (max-width:1023px){ .v2-mm-toggle, .v2-mega{ display:none !important; } }

.v2-mega{
  position:fixed; left:0; right:0; top:var(--v2-nav-h, 92px);
  min-height:459px;                       /* [ref: 459px] */
  background:#fff;
  border-radius:0 0 60px 0;               /* zelfde hoektaal als panelen */
  box-shadow:0 30px 60px -20px rgba(0,0,0,.25);
  z-index:98;
  opacity:0; visibility:hidden;
  transition:opacity .25s, visibility .25s;   /* [ref] */
}
.v2-mega.is-open{ opacity:1; visibility:visible; }
.v2-mega[hidden]{ display:block; }          /* hidden-attr alleen voor no-js */
.no-js .v2-mega[hidden]{ display:none; }
.v2-mega-inner{
  max-width:1305px; margin:0 auto;          /* [ref: wrapper 1305] */
  display:grid; grid-template-columns:336px 1fr;  /* [ref: tablist 336] */
  gap:40px; padding:38px 24px 46px;
}
.v2-mega-tabs{ display:flex; flex-direction:column; }
.v2-mm-tab{
  appearance:none; background:none; border:0; border-bottom:1px solid rgba(0,0,0,.10);
  min-height:59px;                          /* [ref: tab 59px] */
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  font-family:var(--font-heading); font-size:19.5px; font-weight:700;  /* [ref: 19,5/700] */
  color:var(--brand-dark); text-align:left; cursor:pointer; padding:0 6px;
  transition:color .2s;
}
.v2-mm-tab:hover, .v2-mm-tab.is-active{ color:var(--bronze); }
.v2-mm-tab.is-active{ border-bottom:2px solid var(--bronze); }   /* [ref: actieve tab onderstreept] */
.v2-mm-tabplus{ position:relative; width:14px; height:14px; flex:0 0 auto; }
.v2-mm-tabplus::before, .v2-mm-tabplus::after{
  content:""; position:absolute; background:currentColor; border-radius:1px;
}
.v2-mm-tabplus::before{ left:0; right:0; top:50%; height:2px; margin-top:-1px; }
.v2-mm-tabplus::after{ top:0; bottom:0; left:50%; width:2px; margin-left:-1px; transition:opacity .2s; }
.v2-mm-tab.is-active .v2-mm-tabplus::after{ opacity:0; }
.v2-mega-cards{ position:relative; }

/* ---------- smalle dropdown [ref: Project Portfolio en Resources] ----------
   Witte lijst van 188 breed onder het eigen menu-item, rijen 45 hoog,
   15px/400 zwart, schaduw 0 0 15px op 8%. De linkerpositie zet v2-header.js
   per item via --v2-drop-x. */
.v2-mega.v2-drop{
  left:var(--v2-drop-x, 0); right:auto; width:max-content; min-width:188px; max-width:280px;
  min-height:0;
  border-radius:0; box-shadow:0 0 15px rgba(0,0,0,.08);       /* [ref: 188 breed bij korte labels] */
}
.v2-drop nav{ display:flex; flex-direction:column; }
.v2-drop nav a{
  display:flex; align-items:center; min-height:45px;           /* [ref: rij 45] */
  padding:11px 15px; font-size:15px; font-weight:400;          /* [ref: 11,25/15] */
  white-space:nowrap;                                          /* [ref: rijen wrappen nooit] */
  color:#000; line-height:1.25; border-bottom:1px solid #E1E1E1;  /* [ref: rgb(225)] */
  transition:color .2s, background .2s;
}
.v2-drop nav a:last-child{ border-bottom:0; }
.v2-drop nav a:hover{ color:var(--bronze); background:rgba(0,0,0,.03); }

/* ---------- contactknop met telefooncirkel [ref: Let's Talk] ---------- */
.nav-bel{ display:inline-flex; align-items:center; gap:14px; }
.nav-bel-cirkel{
  width:45px; height:45px; border-radius:50%;                  /* [ref: cirkel ~45] */
  background:var(--bronze); color:#fff;
  display:inline-flex; align-items:center; justify-content:center;
  transition:background .2s;
}
.nav-bel-cirkel svg{ width:20px; height:20px; }
.nav-bel:hover .nav-bel-cirkel{ background:var(--bronze-dark); }
.nav-bel-tekst{
  font-family:var(--font-heading); font-size:18px; font-weight:700;  /* [ref: 18/700] */
  color:var(--brand-dark); white-space:nowrap;
}
body.v2-nav-licht .nav:not(.v2-sticky) .nav-bel-tekst{ color:#fff; }
@media (max-width:1150px){ .nav-bel-tekst{ display:none; } }  /* alleen de cirkel op smal */

/* actief menu-item: onderstreping in de accentkleur [ref: About R&O onderstreept] */
.nav-links a.is-actief{
  text-decoration:underline; text-decoration-color:var(--bronze);
  text-decoration-thickness:2px; text-underline-offset:8px;
}
.v2-mm-card{ display:none; grid-template-columns:416px 1fr; gap:37px; align-items:start; }  /* [ref: foto 416, tekstkolom op 926] */
.v2-mm-card.is-active{ display:grid; }
.v2-mm-card img{
  width:416px; height:364px; object-fit:cover; display:block;
  border-radius:0 45px;                    /* [ref: 0px 45px] */
}
.v2-mm-info h4{ font-size:24px; margin:6px 0 12px; }
.v2-mm-info p{ font-size:16px; line-height:1.55; color:var(--text); max-width:420px; margin:0 0 22px; }

/* Oude hover-dropdown uit op desktop (vervangen door het mega-menu) */
@media (min-width:1024px){
  .nav-links .has-submenu .submenu{ display:none !important; }
}

/* Zwevende belknop op ALLE formaten, boven de WhatsApp-knop
   (verhuisd uit de menubalk; zelfde stijl/maat als de zwevende knoppen) */
.tel-btn svg{ width:42px; height:42px; }   /* zelfde maat als het WhatsApp-icoon */
.tel-btn{
  display:flex; align-items:center; justify-content:center;
  position:fixed; right:24px; bottom:86px; width:56px; height:56px;
  border-radius:50%; background:var(--bronze); color:#fff;
  box-shadow:0 4px 12px rgba(0,0,0,.18); z-index:9999;
  transition:transform .28s var(--ease), box-shadow .28s;
}
.tel-btn:hover{ transform:translateY(-2px); }

/* Navigatie-font: Inter 600 (keuze B, 10-08-2026) — alleen de navigatielaag */
.nav-links > li > a, .nav-cta .btn, .nav-lang-btn, .nav-phone,
.v2-mm-tab, .v2-mm-info .btn{
  font-family: Arial, Helvetica, sans-serif;   /* [ref: geen webfont; Inter-keuze van 10-08 vervallen] */
  font-weight:600;
  letter-spacing:.01em;
}

/* ============================================================
   VARIANT 2 — KAARTSTIJL (gemeten aan randoco.com)
   kop 27px/700 [ref], meta-rijen 64px met 1px #E1E1E1 [ref],
   outline-knop 2px accentrand 18px/700 radius var(--r-btn) [ref 0/15],
   kaartfoto's één ronde hoek (45px familie) [ref].
   Kaartinterieurs blijven gecentreerd (VASTE REGEL, wint van referentie).
   ============================================================ */
.v2-btn-outline{font-size:17px; font-weight:700;}
.v2-btn-outline:hover{ background:var(--bronze) !important; color:#fff !important; }

/* Dienstkaarten */
.hp-svc-img{ border-radius:0 0 45px 0; }              /* [ref: één ronde hoek] */
.hp-svc-body h3{ font-size:27px; }/* leeggemaakt, vorm komt uit tokens-referentie.css: /* [ref: 27/700] */ .hp-svc-body .btn.btn-primary, a.btn.btn */
.hp-svc-body .btn.btn-primary:hover,
.hp-svc-body a.btn.btn-primary:hover{ background:var(--bronze) !important; color:#fff !important; }

/* Projectkaarten (nieuwe structuur .v2-pc) */
.project-card.v2-pc{
  aspect-ratio:auto; overflow:visible; background:transparent;
  border-radius:0; display:block; color:inherit;
}
.project-card.v2-pc:hover{ transform:none; box-shadow:none; }
.project-card.v2-pc::before, .project-card.v2-pc::after{ content:none !important; }
.project-card.v2-pc .project-meta{ display:none; }
.v2-pc-img{ display:block; overflow:hidden; border-radius:0 0 45px 0; aspect-ratio:4/3; }
.v2-pc-img img{ width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .8s var(--ease); }
.project-card.v2-pc:hover .v2-pc-img img{ transform:scale(1.05); }
.v2-pc-body{ display:block; padding:18px 2px 0; }
.v2-pc-title{
  display:block; text-align:center;                    /* vaste regel: gecentreerd */
  font-family:var(--font-display); font-weight:700; font-size:27px;  /* [ref] */
  line-height:1.05; letter-spacing:.02em;
  color:var(--brand-dark); margin:4px 0 10px;
}
.v2-pc-rows{ display:block; }
.v2-pc-row{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  min-height:52px;                                      /* [ref 64, compacter in grid] */
  border-bottom:1px solid #E1E1E1;                      /* [ref] */
  font-size:15.5px;
}
.v2-pc-row > span:first-child{ color:var(--text-muted, #6d6459); }
.v2-pc-row > span:last-child{ color:var(--brand-dark); font-weight:600; text-align:right; }
.v2-pc .v2-btn-outline{
  margin:16px auto 0;                                   /* vaste regel: knop gecentreerd */
  display:inline-flex;
}
.v2-pc-body{ text-align:center; }
.v2-pc-rows{ text-align:left; }                         /* rijen als blok, eigen uitlijning */

/* Tipkaarten */
.hp-tips-img{ border-radius:0 0 45px 0; }
.hp-tips-card h3{ font-size:23px; }                     /* kaartbreedte is smaller; ref-schaal */
.hp-tips-meta .lees{
  color:var(--bronze-dark, var(--bronze)); font-weight:700;
}
@media (max-width:640px){
  .v2-pc-title{ font-size:23px; }
  .v2-pc-row{ min-height:48px; font-size:14.5px; }
}

/* ============================================================
   VARIANT 2 — PROJECTEN-CAROUSEL (gemeten aan randoco.com)
   kop links, outline-kiezer 2px accent + gevulde knop (gap 12) [ref]
   slide: foto 42.3vw x 4:2.63 + tekstkolom; pitch ~66.9vw [ref 963/1440]
   fotohoeken onderaan rond 40px [ref]; lijn 1px #E1E1E1 + dot 18px [ref]
   mobiel: slide 73.6vw, gap 20, knoppen full-width gestapeld [ref 390]
   Kleuren via onze kleurrollen (accent = --bronze), nooit ref-blauw.
   ============================================================ */
.hp-portfolio.v2-ps{ padding:30px 0 60px; }   /* [ref: 30/60] */
.v2-ps-head{
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:24px; flex-wrap:wrap; margin-bottom:49px;   /* [ref: kop->slides 49] */
}
.v2-ps-kop h2{ margin-bottom:0; }                  /* basismarge eraf voor exacte 49 */
.v2-ps-knoppen{ display:flex; gap:11px; align-items:center; position:relative; margin-bottom:19px; } /* [ref: gap 11; knoppen gecentreerd op de kop] */
.v2-ps-catwrap{ position:relative; }
.v2-cat-toggle{ gap:12px; font-size:18px; padding:0 22.5px; height:52px; min-height:0; } /* [ref: h 52, pad-x 22.5, 18/700] */
.v2-cat-toggle .v2-mm-tabplus{ width:14px; height:14px; color:currentColor; }
.v2-cat-toggle[aria-expanded="true"] .v2-mm-tabplus::after{ opacity:0; }  /* plus -> min [ref-familie] */
.v2-cat-lijst{
  position:absolute; top:calc(100% + 6px); left:0; min-width:100%;
  background:#fff; border:2px solid var(--bronze);
  border-left:2px solid var(--bronze) !important;
  border-right:2px solid var(--bronze) !important;
  border-radius:var(--r-btn);                      /* [ref: 0 15px] */
  box-shadow:0 18px 40px -18px rgba(0,0,0,.25);
  z-index:50; display:flex; flex-direction:column; padding:8px 0;
  opacity:0; visibility:hidden;
  transition:opacity .25s, visibility .25s;         /* [ref] */
}
.v2-cat-lijst.is-open{ opacity:1; visibility:visible; }
.v2-cat-lijst[hidden]{ display:flex; }
.no-js .v2-cat-lijst[hidden]{ display:none; }
.v2-cat-lijst button{
  appearance:none; background:none; border:0; cursor:pointer;
  font-family:var(--font-heading); font-size:16px; font-weight:600;
  color:var(--brand-dark); text-align:left; padding:11px 18px;
}
.v2-cat-lijst button:hover, .v2-cat-lijst button.is-active{ color:var(--bronze); }

.v2-car-wrap{ position:relative; }
.v2-ps-knoppen .btn.btn-primary{ padding:0 22.5px; height:53px; font-size:18px; font-weight:700; min-height:0; } /* [ref: h 53] */
.v2-car{
  display:flex; gap:8.54vw;                         /* [ref: pitch 963 = img 609 + 36 + kolom 195 + 123] */
  overflow-x:auto; scroll-snap-type:x mandatory;
  padding:0 24px 0 max(24px, calc((100vw - var(--container))/2 + 24px));
  scroll-padding-left:max(24px, calc((100vw - var(--container))/2 + 24px));
  scrollbar-width:none; -webkit-overflow-scrolling:touch;
  cursor:grab; outline-offset:4px;
}
.v2-car::-webkit-scrollbar{ display:none; }
.v2-car.is-dragging{ cursor:grabbing; scroll-snap-type:none; }
.v2-cs{
  flex:0 0 auto; scroll-snap-align:start;
  display:flex; gap:2.5vw; text-decoration:none; color:inherit;  /* [ref: 36px @1440] */
}
.v2-cs.is-verborgen{ display:none; }
.v2-cs-img{ display:block; width:42.29vw; overflow:hidden;
  border-radius:0 37.5px; }                          /* [ref: RB+LO 37.5px, zelfde asymmetrie als hero/menu] */
.v2-cs-img img{ width:100%; height:100%; aspect-ratio:609/401; object-fit:cover; display:block; }
/* [ref: geen hover-zoom; transition all 0s] */
.v2-cs-info{ display:flex; flex-direction:column; width:13.55vw; min-width:170px; padding-top:2px;
  text-align:left; align-items:flex-start; }        /* [ref: links uitgelijnd; DEEL C-5] */
.v2-cs-info *{ text-align:left; }
.v2-cs-title{
  font-family:var(--font-display); font-weight:700; font-size:27px;  /* [ref: 27/700] */
  line-height:1.1; letter-spacing:.02em;
  color:var(--brand-dark); margin:0 0 24px;      /* [ref: cat 24 onder titel] */
}
.v2-cs-cat{ font-size:18px; color:var(--text); }     /* [ref: 18px zwart] */
.v2-cs-loc{ margin-top:auto; font-size:18px; color:#737373; } /* [ref: 18px grijs, onderaan] */

.v2-car-bar{
  position:relative; height:36px; margin-top:45px;   /* [ref: 45px onder de kaarten, zone 36 hoog] */
  display:flex; align-items:center;
}
.v2-car-bar::before{ content:""; position:absolute; left:0; right:0; top:50%;
  height:1px; background:#E1E1E1; }                  /* [ref: 1px lijn] */
.v2-car-dot{
  appearance:none; position:absolute; left:0; top:50%; margin-top:-18px;
  width:36px; height:36px; border-radius:50%;        /* [ref: 36px wit, 3px accentrand; centrering via margin (transform-vrijstelling) */
  background:#fff; border:3px solid var(--bronze);
  cursor:grab; padding:0;
}
.v2-car-dot::after{ content:""; position:absolute; left:50%; top:50%; width:7.5px; height:7.5px;
  transform:translate(-50%,-50%); border-radius:50%; background:var(--bronze); } /* [ref: stip 7.5] */
.v2-car-dot:active{ cursor:grabbing; }

@media (max-width:1023px){
  .hp-portfolio.v2-ps{ padding:21px 0 42px; }       /* [ref mobiel: 21/42] */
  .v2-ps-head{ display:block; }
  .v2-ps-knoppen{ flex-direction:column; align-items:stretch; margin-top:18px; }
  .v2-cat-toggle, .v2-ps-knoppen .btn-primary{ width:100%; justify-content:center; } /* [ref: full-width gestapeld] */
  .v2-cat-lijst{ position:static; margin-top:6px; display:none; opacity:1; visibility:visible; transition:none; }
  .v2-cat-lijst.is-open{ display:flex; }
  .v2-car{ gap:20px; }                               /* [ref mobiel: gap 20] */
  .v2-cs{ flex-direction:column; gap:12px; width:73.6vw; }  /* [ref: 287/390] */
  .v2-cs-img{ width:100%; border-radius:0 21px; }   /* [ref mobiel: 21.3px] */
  .v2-cs-info{ width:100%; min-width:0; }
  .v2-cs-title{ font-size:22.6px; margin-bottom:17px; }  /* [ref mobiel: 22.6, cat 17 eronder] */
  .v2-cs-cat{ font-size:14.4px; }                    /* [ref mobiel: 14.4] */
  .v2-cs-loc{ display:none; }                         /* [ref mobiel: geen plaatsnaam in de kaart] */
  .v2-car-dot{ width:31px; height:31px; margin-top:-15.5px; } /* [ref mobiel: 31] */
  .v2-cs-loc{ margin-top:6px; }
}

/* Carousel-bediening: uitgezonderd van het autoreveal-verschuifsysteem
   (fade-in zette de knoppen blijvend op translateX(-40px)) */
.v2-ps .v2-ps-knoppen .btn, .v2-ps .v2-ps-knoppen a,
.v2-cat-lijst, .v2-car, .v2-cs, .v2-car-bar, .v2-car-dot{
  opacity:1 !important; transform:none !important;
}
/* nette toetsenbord-focus in plaats van de rauwe outline om de hele strook */
.v2-car{ outline:none; }
.v2-car:focus-visible{ outline:2px solid var(--bronze); outline-offset:4px; border-radius:8px; }
.v2-car .v2-cs-img img{ transition:none; }
.v2-car .v2-cs:hover .v2-cs-img img{ transform:none; }

/* Kopregel links uitgelijnd op elk formaat [ref] */
.v2-ps-kop{ text-align:left; }
.v2-ps-kop h2{ text-align:left; }

/* ============================================================
   VARIANT 2 — CAROUSEL-CURSOR + SLEEPFYSICA (gemeten aan referentie)
   cursor: cirkel 57px, 3px accentrand, transparant, chevrons 9x14
   (stroke 4) op ±34px buiten de cirkel, volgt direct, ongewijzigd
   bij mousedown, verschijnt/verdwijnt met .25s [ref]
   loslaten: veert in ~250ms naar het dichtstbijzijnde snappunt [ref]
   ============================================================ */
@media (hover:hover) and (pointer:fine){
  .v2-car, .v2-car a{ cursor:none; }
}
.v2-cursor{
  position:fixed; left:0; top:0;
  width:57px; height:57px; border-radius:50%;
  border:3px solid var(--bronze); background:transparent;
  border-left:3px solid var(--bronze) !important;   /* auditregel 'div{border-left:none !important}' overrulen */
  border-right:3px solid var(--bronze) !important;
  pointer-events:none; z-index:9998;
  transform:translate(-50%,-50%) scale(.4);
  opacity:0;
  transition:opacity .25s, transform .25s;      /* [ref: .25s] */
}
.v2-cursor.is-actief{ opacity:1; transform:translate(-50%,-50%) scale(1); }
.v2-cursor svg{
  position:absolute; top:50%; width:9px; height:14px;
  transform:translateY(-50%); color:var(--bronze);
}
.v2-cursor .v2-cur-l{ left:-34px; }               /* [ref: -34] */
.v2-cursor .v2-cur-r{ right:-35px; }              /* [ref: +35] */
@media (prefers-reduced-motion: reduce){
  .v2-cursor{ transition:none; }
}
@media (hover:none), (pointer:coarse){
  .v2-cursor{ display:none !important; }
  .v2-car, .v2-car a{ cursor:auto; }
}

/* ============================================================
   VARIANT 2 — PARTNERBAND (gemeten aan randoco.com "We Are Trusted by")
   band #F8FAFC, pad 60/150 [ref]; mobiel wit, pad 42/95 [ref]
   kop-kolom: +30px inzet, 45px onder de lijsttop [ref]
   lijst rechts 518px: rij 121px, 1px lijn #E1E1E1 (laatste zonder),
   logo max 151x60 links, naam rechts uitgelijnd 18px [ref]
   watermerk ~300px achter de kop [ref]; geel accentblok 280x130
   linksonder met ronde hoek [ref] — kleuren via onze kleurrollen.
   ============================================================ */
.v2-band{
  position:relative; overflow:hidden;
  background-color:#F8FAFC;
  padding:60px 0 150px;                    /* [ref] */
}
/* Traanplaat-blok in de band [ref: 461px breed vanaf de viewportrand,
   begint 8px onder de kop; onderkant = onderrand van het gele vlak] */
.v2-band::after{
  content:""; position:absolute; left:0; z-index:0; pointer-events:none;
  top:calc(105px + 1.96 * var(--kop-xl) + 8px);   /* kopblok 105 + 2 regels + 8 [ref] */
  bottom:calc(157px + 2.325vw);   /* eindigt op een kwart van het gele vlak; laat wit tussen patroon en foto */
  width:32vw;                                      /* [ref: 461/1440] */
  background-image:var(--v2-traanplaat);
  background-size:var(--v2-tegel);
}
.v2-band::before{                           /* watermerk [ref: beeldmerk ~300px] */
  content:""; position:absolute; left:22%; top:55px;
  width:300px; height:300px;
  background:url(../img/logo.png) center/contain no-repeat;
  opacity:.06; pointer-events:none;
}
.v2-band-inner{
  display:flex; justify-content:space-between; gap:40px;
}
.v2-band-kop{ padding:45px 0 0 30px; }      /* [ref: 45 lager, 30 inzet] */
.v2-band-kop h2{ font-size:var(--kop-xl); line-height:.98; margin:0; }
.v2-band-lijst{
  list-style:none; margin:0; padding:0;
  width:518px; max-width:100%; flex:0 0 auto;   /* [ref: 518] */
}
.v2-band-lijst li{
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  height:121px;                              /* [ref] */
  border-bottom:1px solid #E1E1E1;           /* [ref] */
}
.v2-band-lijst li:last-child{ border-bottom:0; }  /* [ref: laatste zonder lijn] */
.v2-band-lijst img{
  max-width:151px; max-height:60px; width:auto; height:auto;  /* [ref] */
  filter:none;                               /* VASTE REGEL: echte kleuren, nooit grijs */
}
.v2-band-lijst span{
  font-size:18px; color:var(--text);         /* [ref: 18px, kleurrol] */
  text-align:right; line-height:1.4;
}
/* Geel vlak op de band/WWO-grens. Gemeten aan de referentie:
   blok 281x134 @1440 (19.5vw x 9.3vw), verticaal GECENTREERD op de
   bovenrand van de foto (67 boven / 66 onder), rechterrand = fotolinks
   + 19.5vw, linkerrand tegen de viewportrand, hoek RO r=34 (2.36vw).
   Zit in de WWO-sectie zodat hij over de foto valt (zelfde stacking). */
.v2-wwo-accent{
  position:absolute; left:0; z-index:2;
  top:calc(-157px - 4.65vw);                 /* [ref: 67px boven de fototop] */
  width:calc(8vw + 19.5vw);                  /* [ref: 19.5vw over de foto heen] */
  height:9.3vw;                              /* [ref: 134px @1440] */
  background:var(--gold, #F59E0B);
  border-radius:0 0 2.36vw 0;                /* [ref: r=34 @1440] */
  clip-path:polygon(
    0 0, 100% 0, 100% 100%,
    calc(70% + var(--tand-hw)) 100%,
    70% calc(100% - var(--tand-h)),
    calc(70% - var(--tand-hw)) 100%,
    0 100%);                                  /* hap: negatief van de tand in de lijn */
}
@media (max-width:1023px){
  .v2-band{ background-color:#fff; padding:42px 0 95px; }  /* [ref mobiel: wit, 42/95] */
  .v2-band::after{
    top:calc(42px + 1.96 * var(--kop-xl) + 8px);
    bottom:125px; width:60vw;        /* wit tussen patroon en gele strip */
  }
  .v2-band::before{ left:auto; right:-8%; top:20px; width:180px; height:180px; }
  .v2-band-inner{ display:block; }
  .v2-band-kop{ padding:0; text-align:left; }
  .v2-band-kop h2{ margin-bottom:12px; text-align:left; }
  .v2-band-lijst{ width:100%; margin-top:12px; }           /* [ref: lijst 12 onder kop] */
  .v2-band-lijst li{ height:75px; }                        /* [ref] */
  .v2-band-lijst img{ max-width:86px; max-height:35px; }   /* [ref] */
  .v2-band-lijst span{ font-size:14.4px; }                 /* [ref] */
  /* mobiel [ref: strip 160x28 tegen de bandonderkant]; motief blijft zichtbaar */
  .v2-wwo-accent{
    top:0; transform:translateY(-100%);
    width:160px; height:28px; border-radius:0;
  }
}

/* ============================================================
   VARIANT 2 — HOMEPAGE-SECTIES 4-10 (gemeten aan randoco.com)
   ============================================================ */

/* --- 4. WHAT WE OFFER [ref-meting: foto x0 50vw ratio 720:1068, steekt
       157px omhoog de band in, hoek RO 60; kop 75 op 90px onder sectietop,
       x795; accordeon-items 61px met 27/700 en plus 34x34; geel streepje
       210x3 op de sectiegrens over de fotorand] --- */
.v2-wwo{ display:grid; grid-template-columns:50vw 1fr; gap:0; padding:0 0 60px; align-items:start; position:relative; }
.hp-services.v2-wwo{                               /* oude auditregels overrulen */
  padding-top:0 !important; background:transparent !important;
}
.hp-services.v2-wwo::after, .hp-services.v2-wwo::before{ content:none !important; }
/* VARIANT-2 VORMTAAL: dikke gele lijn met één haaietand naar boven.
   De tand is het positief van de hap in het gele vlak: zelfde breedte,
   zelfde hoogte, zelfde hoek (3:4 -> 36,9 graden). */
:root{
  --tand-hw:20px;      /* halve breedte van de tand  (variant A) */
  --tand-h:15px;       /* hoogte van de tand         (variant A) */
  --lijn-d:6px;        /* dikte van de lijn */
}
.v2-wwo-streep{
  position:absolute; left:calc(50.8vw - 105px); top:0;
  width:210px; height:calc(var(--tand-h) + var(--lijn-d));
  transform:translateY(calc(-100% + var(--lijn-d)/2));
  background:var(--gold, #F59E0B); z-index:3;
  clip-path:polygon(
    0 var(--tand-h),
    calc(50% - var(--tand-hw)) var(--tand-h),
    50% 0,
    calc(50% + var(--tand-hw)) var(--tand-h),
    100% var(--tand-h),
    100% 100%, 0 100%);
}
.v2-wwo-foto{
  overflow:hidden; border-radius:0 0 60px 0;        /* [ref] */
  margin-top:-157px;                                 /* [ref: foto steekt de band in] */
  margin-left:8vw;                                   /* [ref: foto los van de rand, x=115] */
  width:42.8vw;                                      /* [ref: 616px, rechterrand op 50.8vw] */
  position:relative; z-index:1;
  aspect-ratio:720/1068;                             /* [ref-verhouding; smaller = korter] */
}
.v2-wwo-foto img{ width:100%; height:100%; object-fit:cover; display:block; }
.v2-wwo-inhoud{ padding:90px 24px 40px 5.2vw; max-width:660px; }   /* [ref: kop op 90 vanaf sectietop] */
.v2-wwo-inhoud h2{ font-size:var(--kop-xl); line-height:.98; margin:0 0 26px; }
.v2-acc-item{ border-bottom:1px solid #E1E1E1; }                    /* [ref] */
.v2-acc-item + .v2-acc-item{ margin-top:26px; }                      /* [ref: pitch 87 = rij 61 + 26] */
.v2-acc-kop{
  appearance:none; background:none; border:0; width:100%;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  min-height:61px;                                                  /* [ref: 61px] */
  font-family:var(--font-heading); font-size:27px; font-weight:700; /* [ref: 27/700] */
  color:var(--brand-dark); text-align:left; cursor:pointer; padding:0 6px;
  transition:color .2s;
}
.v2-acc-kop:hover{ color:var(--bronze); }
.v2-acc-kop .v2-mm-tabplus{ width:34px; height:34px; color:var(--bronze); flex:0 0 auto; } /* [ref: 34] */
.v2-acc-kop .v2-mm-tabplus::before{ height:3px; margin-top:-1.5px; }
.v2-acc-kop .v2-mm-tabplus::after{ width:3px; margin-left:-1.5px; }
.v2-acc-kop[aria-expanded="true"] .v2-mm-tabplus::after{ opacity:0; }
.v2-acc-body{ overflow:hidden; max-height:0; transition:max-height .3s var(--ease); }
.v2-acc-item.is-open .v2-acc-body{ max-height:400px; }
.v2-acc-body p{ margin:2px 6px 16px; color:var(--text); line-height:1.6; }
.v2-acc-body .btn{ margin:0 6px 22px; }

/* --- 5. STATEMENT-SECTIE (gemeten aan randoco.com, 1440) ---
   sectie 1095 hoog, padding 105/105, foto vult 100% (object-fit cover),
   GEEN overlay (ref: img opacity 1, geen gradient/overlay-element).
   kop 135px/1.0/gewicht 400, wit, 3 regels, kolom 728 (50,6vw), x=98
   tekstkolom 480 (33,3vw) op x=863, twee blokken 18px/1,4 met 53px ertussen
   knop 158x53 op de kop-x, 85px onder de kop, radius 0/15
   patroon 142,5 x 450 rechtsboven, WIT (ref: filter brightness(0) invert(1)),
   opacity .9
   ------------------------------------------------------------------ */
.v2-statement{
  /* Schaalfactor: 1 eenheid = 1vw, maar nooit groter dan wat de HOOGTE toelaat.
     1095/1440 = 0,76, dus 1vw komt overeen met 1,316svh als de sectie precies
     het scherm vult. min() zorgt dat de sectie ALTIJD binnen het scherm past,
     op een laptop, een laag venster en een breed/curved scherm. */
  --st: min(1vw, 1.316svh);
  position:relative; overflow:hidden; isolation:isolate;
  /* isolation is verplicht: .v2-st-bg staat (door de over-ons-variant verderop)
     op z-index:-2; zonder eigen stacking context verft de zwarte sectie-
     achtergrond over de foto heen en lijkt hij verdwenen. */
  background:#000;
  padding:calc(7.3 * var(--st)) 0;          /* [ref: 105/1440] */
  min-height:calc(76 * var(--st));          /* [ref: 1095/1440], nooit hoger dan het scherm */
  display:flex; align-items:center;
}
.v2-st-bg{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; display:block; z-index:0;
}
/* Leesbaarheidslaag over de foto (VASTE REGEL variant 2, 11-08-2026):
   staat tussen de foto en de inhoud, zodat tekst overal leesbaar blijft,
   ook boven felle plekken in het beeld. Bewuste afwijking van de referentie,
   die geen overlay heeft. */
.v2-statement::before{
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:rgba(0,0,0,.45);
}
.v2-st-patroon{
  position:absolute; right:0; top:0; z-index:2; pointer-events:none;
  width:9.9vw; height:calc(31.3 * var(--st));  /* [ref: 142,5 x 450 @1440], schaalt mee */
  background-image:var(--v2-traanplaat-fel);
  background-size:var(--v2-tegel);
  opacity:.9;                               /* [ref] */
}
.v2-st-inner{
  position:relative; z-index:3; width:100%;
  display:flex; justify-content:space-between; align-items:center; gap:2.6vw;
}
.v2-st-kop{ width:50.6vw; max-width:760px; }   /* [ref: 728/1440] */
.v2-st-kop .kop-xxl{
  color:#fff !important;
  font-size:9.375vw !important;               /* [ref: 135/1440] */
  line-height:1 !important;                   /* [ref: 135/135] */
  margin:0;
}
.v2-st-kop .btn{ margin-top:clamp(18px, calc(5.9 * var(--st)), 85px); }   /* [ref: 85/1440] */
.v2-st-kolommen{ width:33.3vw; max-width:500px; flex:0 0 auto; }  /* [ref: 480/1440] */
.v2-st-kolommen p{
  color:#fff; line-height:1.4;
  font-size:clamp(15px, calc(1.6 * var(--st)), 21px);             /* leesbaarheid: ruimer dan de ref-18px */
  margin:0 0 clamp(16px, calc(3.68 * var(--st)), 53px);           /* [ref: 53px ertussen] */
}
.v2-st-kolommen p:last-child{ margin-bottom:0; }


/* --- 7. TESTIMONIALS-restyle op de bestaande reviews [ref: kop 135
       gecentreerd, witte kaart radius 0 37.5] --- */
.hp-greviews .hpgr-head h2, .hp-greviews h2{ font-size:var(--kop-xxl); line-height:.95; text-align:center; }
.hpgr-card{ border-radius:0 37.5px !important; }                    /* [ref] */

/* --- 8. NIEUWS [ref: kop 135, kaarten 604 breed, foto 604x552 radius 0,
       kop 27, gevulde knop 158x53, meta rechts] --- */
.v2-nieuws{ padding:var(--sec-y) 0; }
.v2-nieuws .kop-xxl{ margin:0 0 56px; }
.v2-nieuws-grid{ display:grid; grid-template-columns:1fr 1fr; gap:40px; }
.v2-nk-img{ display:block; overflow:hidden; }
.v2-nk-img img{ width:100%; aspect-ratio:604/552; object-fit:cover; display:block; } /* [ref: geen radius] */
.v2-nieuws-kaart h3{ font-size:27px; margin:22px 0 12px; }          /* [ref: 27/700] */
.v2-nieuws-kaart h3 a{ color:inherit; text-decoration:none; }
.v2-nieuws-kaart p{ color:var(--text); line-height:1.6; margin:0 0 22px; }
.v2-nk-voet{ display:flex; align-items:center; justify-content:space-between; gap:18px; }
.v2-nk-meta{ color:var(--text-muted,#6d6459); font-size:15px; }

/* --- 9. AFSLUITER: zwarte sectie met XXL-kop boven de calculator
       [ref: zwart, kop 135 gecentreerd, accent-CTA] --- */
.hp-contact{ background:#000 !important;
  background-image:none !important; }   /* [ref: afsluitsectie heeft geen textuur] */
.v2-cta-kop{ padding-top:24px; }
.v2-cta-kop .kop-xxl{ color:#fff; text-align:center; margin:0 0 40px; }
.hp-contact .hp-calc-v2{ background:#fff; border-radius:var(--r-panel); padding:34px; }

/* --- mobiel [ref-verhoudingen 390] --- */
@media (max-width:1023px){
  .v2-wwo{ display:block; padding:0 0 42px; }
  .v2-wwo-streep{ left:auto; right:16px; width:140px; }
  :root{ --tand-hw:14px; --tand-h:11px; --lijn-d:4px; }   /* mobiel: mee schalen, vorm herkenbaar */
  .v2-wwo-foto{ border-radius:0 0 32px 0; margin-top:0; aspect-ratio:auto; }
  .v2-wwo-foto img{ min-height:0; height:52vw; }
  .v2-wwo-inhoud{ padding:28px 16px 0; max-width:none; }
  .v2-acc-kop{ min-height:56px; font-size:20px; }
  .v2-acc-kop .v2-mm-tabplus{ width:24px; height:24px; }
  .v2-st-foto{ height:44vw; }
  .v2-st-inner{ display:block; padding-top:42px; }
  .v2-st-inner .kop-xxl{ max-width:none; margin-bottom:24px; }
  .v2-st-kolommen{ width:auto; }
  .v2-st-kolommen p{ font-size:15px; }
  .v2-nieuws-grid{ grid-template-columns:1fr; gap:34px; }
  .v2-nieuws-kaart h3{ font-size:23px; }
  .hp-contact .hp-calc-v2{ padding:20px 14px; border-radius:0 0 32px 0; }
}

/* XXL-koppen winnen van de fundament-sectiekopregels */
.v2-st-inner .kop-xxl, .v2-nieuws .kop-xxl, .v2-cta-kop .kop-xxl,
.hp-greviews .v2-rev-kop{
  font-size:var(--kop-xxl) !important; line-height:.95 !important;
}
section.hp-contact .v2-cta-kop h2.kop-xxl{ color:#fff !important; }  /* wint van .hp-contact h2 !important (regel ~2914) */
.hp-greviews .v2-rev-kop{ text-align:center; margin:0 0 40px; }

/* VASTE REGEL Instagram: geen witte knopbalk — transparant met rand in de
   IG-gradient (stond als witte knop in variant 1; regel wint) */
.hp-insta-btn{
  background:linear-gradient(#000,#000) padding-box,
             linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888) border-box !important;
  border:2px solid transparent !important;
  color:#fff !important;
}


/* ============================================================
   VARIANT 2 — TRAANPLAAT-PATROON (exact nagemeten op randoco.com)
   texture.png geanalyseerd: 1472 streepjes, 736 per richting,
   hoeken +43,6 en -44,1 graden (= 45), streepje 13x13 bbox,
   lengte 18,4 incl. ronde uiteinden, dikte 2,5.
   Ritme: horizontaal om de 25px, rijen om de 14,5px, elke rij
   gespiegeld (visgraat), rijen 13px verschoven -> tegel 25 x 29.
   Weergaveschaal referentie: 220% van 622,5 op 1153px bron = 1,188
   -> tegel op het scherm 29,7 x 34,5px.
   Dekking: gemeten 4,5% donkerder dan de ondergrond -> opacity .05.
   ============================================================ */
:root{
  --accent-lijn: #0F172A;
  --font-kop: Arial, "Helvetica Neue", Helvetica, sans-serif;
  /* [ref: alle koppen in een brede vette sans (Arial/Helvetica), geen condensed] */   /* [ref about-us #history: exacte kleur van alle
     accentlijnen (jaartal, as-actief, pijlen, ring); rol i.p.v. hardcoded per element] */
  --v2-traanplaat-licht: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='25' height='29' viewBox='0 0 25 29'><g stroke='%23fff' stroke-width='3.2' stroke-linecap='round' opacity='0.022'><path d='M1.6 1.6L12.4 12.4'/><path d='M14.6 26.4L25.4 15.6'/><path d='M-10.4 26.4L0.4 15.6'/></g></svg>");
  /* [ref-pixelmeting: patroonlijnen op zwart tot ~rgb(29); de -licht-tegel op .5 gaf rgb(3)] */
  --v2-tegel: 29.7px 34.5px;
}

/* Statement: correcties na nameting */
.v2-statement .v2-st-kop h2.kop-xxl{
  font-size:clamp(34px, calc(9.375 * var(--st)), 135px) !important;  /* [ref: 135/1440], krimpt mee met de schermhoogte */
  line-height:1 !important;          /* [ref: 135/135] */
}
.v2-statement .v2-st-kop{ margin-top:calc(11.2 * var(--st)); }/* leeggemaakt, vorm komt uit tokens-referentie.css: /* [ref: kopblok 106px onder gecentreerd, kopmidden op 53%]  */
.v2-statement .v2-st-kop .btn.btn-primary:hover{ background:var(--bronze-dark, var(--bronze)) !important; }

@media (max-width:1023px){
  .v2-statement{ padding:64px 0; min-height:0; display:block; }
  .v2-st-inner{ display:block; }
  /* [ref mobiel: alles links uitgelijnd, kop 61,4px op 390 = 15,75vw, tekst 14,4px] */
  .v2-statement .v2-st-inner, .v2-statement .v2-st-kop, .v2-statement .v2-st-kolommen,
  .v2-statement .v2-st-kop h2.kop-xxl, .v2-statement .v2-st-kolommen p{
    text-align:left !important;
  }
  .v2-st-kop{ width:auto; max-width:none; margin-top:0 !important; }
  .v2-statement .v2-st-kop h2.kop-xxl{ font-size:clamp(38px, 15.75vw, 66px) !important; }
  .v2-st-kop .btn{ margin-top:28px; margin-left:0 !important; }
  .v2-st-kolommen{ width:auto; max-width:none; margin-top:44px; }
  .v2-st-kolommen p{ font-size:16px; margin-bottom:24px; }
  .v2-st-patroon{ width:24vw; height:76vw; }
}

/* Kleinkapitaal ALLEEN op de drie grote sectiekoppen die Dikkie heeft
   aangewezen (statement bij de foto, "Wat Wij Bieden", "Zij Vertrouwen op
   Ons"). Alle overige koppen blijven gewone schrijfwijze zonder kleinkapitaal. */
.v2-kop-kk{
  font-variant-caps: small-caps;
  -webkit-font-variant-caps: small-caps;
}

/* Herbruikbare leeslaag: op ELKE sectie waar tekst over een foto staat.
   Zelfde sterkte als de statement-sectie (gemeten: grote kop 3,75:1 en
   lopende tekst 6,34:1 op de felste plek van het beeld). */
.v2-leeslaag{ position:relative; }
.v2-leeslaag > .v2-leeslaag-laag,
.v2-leeslaag::before{
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:rgba(0,0,0,.45);
}

/* Zwevende knoppen: belknop exact even groot als de WhatsApp-knop, icoon
   even groot als het WhatsApp-icoon, rechterrand gelijk uitgelijnd. */
.tel-btn{ right:24px !important; }
.tel-btn svg{ width:42px !important; height:42px !important; }
@media (max-width:1023px){
  .tel-btn{ right:16px !important; }
  .tel-btn svg{ width:38px !important; height:38px !important; }
}

/* ============================================================
   ZWEVENDE KNOPPEN: BELKNOP GELIJK AAN DE WHATSAPP-KNOP
   Beide knoppen staan onder elkaar in dezelfde stapel, dus ze zijn
   op elk scherm automatisch even breed en rechts gelijk uitgelijnd.
   ============================================================ */
.wa-widget{ display:flex; flex-direction:column; align-items:flex-end; gap:10px; }
.wa-btn, .tel-btn{ position:static !important; inset:auto !important; margin:0 !important; flex:0 0 auto; }
.tel-btn svg{ width:42px !important; height:42px !important; }
@media (max-width:1023px){
  .wa-widget{ gap:8px; }
  .tel-btn svg{ width:38px !important; height:38px !important; }
}

/* ============================================================
   HERO VULT ALTIJD PRECIES HET SCHERM (mobiel)
   De foto is het meebewegende deel: is er ruimte over, dan groeit hij
   mee; is het scherm heel laag, dan groeit de hero mee in plaats van
   dat de projectkaartjes worden afgesneden.
   ============================================================ */
@media (max-width:1023px){
  .hp-hero-slider{ height:auto !important; min-height:100svh !important; max-height:none !important; }
  .hp-hero-slides{ flex:1 1 auto; height:auto !important; min-height:24svh; }
  .hp-hs-static-content{ margin-top:clamp(16px, 3.2svh, 27px) !important; }
  .v2-hero-featured{ margin:clamp(16px, 2.8svh, 24px) 0 clamp(22px, 5svh, 42px) 5.4vw; }
  .v2-hero-featured .project-card{ height:clamp(120px, 19svh, 183px); }
}

/* Heel lage telefoonschermen: kop, tekst en kaartjes iets compacter, zodat
   de hero ook daar binnen het scherm blijft. */
@media (max-width:1023px) and (max-height:800px){
  .hp-hs-static-content h1, .hp-hs-static-content .kop-xl{ font-size:clamp(26px, 7.4vw, 34px) !important; }
  .hp-hs-static-content .hp-hs-desc{ margin:8px 0 12px !important; }
  .v2-hero-featured .project-card{ height:clamp(104px, 16svh, 150px); }
}

/* ============================================================
   VARIANT 2 — LOCATIESECTIE
   Gemeten aan randoco.com (1440x900 en 1280x700), sectie
   .slider-locations. Links het stadsbeeld dat naar wit verloopt,
   rechts het zwarte paneel met kop, tekst, vestigingscirkels,
   gegevens, routeknop en de teller.
   Alle maten schalen mee met --lt, zodat de sectie op elk scherm
   in één beeld past (DEEL C-uitzondering 10).
   ============================================================ */
.v2-locaties{
  /* 1 eenheid = 1vw op 1440 breed; op lage schermen wint de hoogte */
  --lt: min(1vw, 1.28svh);
  --lt-pad:    clamp(28px, calc(8.33  * var(--lt)), 120px);  /* [ref: 120] */
  --lt-pad-x:  clamp(20px, calc(5.625 * var(--lt)),  81px);  /* [ref: 81] */
  --lt-lucht:  clamp(16px, calc(3.125 * var(--lt)),  45px);  /* [ref: 45] */
  --lt-cirkel: clamp(76px, calc(14.06 * var(--lt)), 203px);  /* [ref: 202,5] */
  --lt-gat:    clamp(18px, calc(5.69  * var(--lt)),  82px);  /* [ref: 82] */
  --lt-hoek:   clamp(16px, calc(2.08  * var(--lt)),  30px);  /* [ref: 30] */
  position:relative;
  padding:0 !important;
  min-height:100svh;
  background-color:#F8FAFC;                 /* [ref: #F8FAFC] */
  display:grid;
  grid-template-columns:50vw 1fr;            /* [ref: 720/720 op 1440] */
  overflow:hidden;
}

/* ---------- linkerkolom: stadsbeeld ---------- */
.v2-loc-beeld{ position:relative; }
.v2-loc-fotos{
  position:absolute;
  inset:0 0 14.9% 0;                         /* [ref: foto 998 van 1172 = 85,1%] */
}
.v2-loc-foto{
  position:absolute; inset:0;
  width:100%; height:100%; object-fit:cover;
  opacity:0; transition:opacity .25s var(--ease);   /* [ref: 0,25s op de thumbnails] */
}
.v2-loc-foto.is-actief{ opacity:1; }
/* Verloop naar de bandkleur: gemeten alfaprofiel is lineair en start op
   50,6% van de fotohoogte. */
.v2-loc-fotos::after{
  content:""; position:absolute; inset:0; z-index:2; pointer-events:none;
  background:linear-gradient(to bottom, rgba(247,247,247,0) 50.6%, #F8FAFC 100%);
}
/* Kartelrand (ijsbergvorm) voor de eerste locatie, nagetekend van de
   daklijn in de referentiefoto. Alleen op de foto met data-vorm="kartel". */
.v2-loc-foto[data-vorm="kartel"]{
  clip-path:polygon(0 0, 100% 0, 100% 88%, 86% 95.5%, 72% 96%, 65% 88.5%,
                    58% 96.5%, 44% 91%, 30% 95%, 22% 96%, 10% 95%, 0 96%);
}

/* ---------- rechterkolom: zwart paneel ---------- */
.v2-loc-paneel{
  position:relative; z-index:1;
  background:#000; color:#fff;
  border-radius:0 0 var(--lt-hoek) var(--lt-hoek);   /* [ref: 0 0 30px 30px] */
  padding:var(--lt-pad) var(--lt-pad-x);
  display:flex; flex-direction:column; justify-content:center;
  overflow:hidden;
}
.v2-loc-patroon{
  position:absolute; z-index:0; pointer-events:none;
  left:var(--lt-pad-x); right:calc(var(--lt-pad-x) * .926);   /* [ref: 81 / 75] */
  bottom:0; height:clamp(20px, calc(3.33 * var(--lt)), 48px); /* [ref: 48] */
  background-image:var(--v2-traanplaat-fel);
  background-size:var(--v2-tegel);
  border-radius:0 clamp(8px, calc(1.04 * var(--lt)), 15px) 0 0;  /* [ref: 0 15px 0 0] */
  opacity:.14;                                /* [ref: streep rgb(31,31,31) op zwart] */
}
.v2-loc-inner{ position:relative; z-index:1; }

.v2-locaties h2.v2-loc-kop{
  font-size:clamp(30px, calc(5.208 * var(--lt)), 75px);   /* [ref: 75] */
  line-height:1.2;                                        /* [ref: 90/75] */
  color:#fff;
  margin:0 0 var(--lt-lucht);
  letter-spacing:normal;
}
.v2-loc-intro{
  font-size:clamp(15px, calc(1.458 * var(--lt)), 21px);   /* [ref: 21] */
  line-height:1.4;                                        /* [ref: 29,4/21] */
  color:#fff;
  margin:0 0 var(--lt-lucht);
}

/* ---------- vestigingscirkels ---------- */
.v2-loc-cirkelvak{
  margin:0 0 var(--lt-lucht);
  width:calc(100% + var(--lt-pad-x));        /* loopt door tot buiten de rand */
  overflow:hidden;
}
.v2-loc-cirkels{
  display:flex; gap:var(--lt-gat);           /* [ref: 82] */
  transition:transform .25s var(--ease);
  will-change:transform;
}
.v2-loc-cirkel{
  flex:0 0 var(--lt-cirkel);
  width:var(--lt-cirkel); height:var(--lt-cirkel);
  padding:0; border-radius:50%; overflow:hidden;
  background:none; line-height:0;
}
.v2-loc-cirkel img{
  width:100%; height:100%; object-fit:cover; border-radius:50%;
  filter:grayscale(1); opacity:.3;           /* [ref: grayscale(1) / .3] */
  transition:filter .25s, opacity .25s;      /* [ref: 0,25s] */
}
.v2-loc-cirkel.is-actief img{ filter:none; opacity:1; }
.v2-loc-cirkel:hover img{ opacity:.6; }
.v2-loc-cirkel.is-actief:hover img{ opacity:1; }
.v2-loc-cirkel:focus-visible{ outline:2px solid #fff; outline-offset:4px; }

/* ---------- gegevens + bediening ---------- */
.v2-loc-voet{
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:calc(2 * var(--lt-lucht));
}
.v2-loc-gegevens{ flex:1 1 auto; min-width:0; }
.v2-loc-item{ display:none; }
.v2-loc-item.is-actief{ display:block; }
.v2-loc-naam{
  display:block; font-weight:700; color:#fff;
  font-size:clamp(16px, calc(1.458 * var(--lt)), 21px);    /* [ref: 21 bold] */
  line-height:1.4;
  margin:0 0 clamp(8px, calc(1.1 * var(--lt)), 16px);      /* [ref: 16] */
}
.v2-loc-contact{
  display:flex; flex-wrap:wrap; align-items:flex-start;
  font-size:clamp(14px, calc(1.25 * var(--lt)), 18px);     /* [ref: 18] */
  line-height:1.4;                                         /* [ref: 25,2/18] */
  color:#fff;
}
.v2-loc-contact > span{
  padding-right:clamp(12px, calc(1.5625 * var(--lt)), 22.5px);   /* [ref: 22,5] */
  margin-right:clamp(12px, calc(1.5625 * var(--lt)), 22.5px);
  border-right:1px solid rgba(255,255,255,.55);                  /* [ref: 1px wit] */
}
.v2-loc-contact > span:last-child{
  border-right:0; margin-right:0; padding-right:0;
}
.v2-loc-contact .label{ display:inline; }
.v2-loc-contact a{ color:#fff; text-decoration:none; }
.v2-loc-contact a:hover{ text-decoration:underline; }
.v2-locaties .v2-loc-route{margin-top:clamp(12px, calc(1.46 * var(--lt)), 21px);          /* [ref: 21] */
  background:var(--bronze) !important;                            /* accentrol [ref: gevulde knop] */
  background-image:none !important;
  padding:clamp(9px, calc(.833 * var(--lt)), 12px) clamp(16px, calc(1.5625 * var(--lt)), 22.5px);
  font-size:clamp(14px, calc(1.25 * var(--lt)), 18px);            /* [ref: 18/700] */
  min-height:0;}
.v2-locaties .v2-loc-route:hover{ background:var(--bronze-dark) !important; transform:translateY(-2px); }

.v2-loc-bediening{
  display:flex; align-items:center; flex:0 0 auto;
  gap:clamp(10px, calc(1.2 * var(--lt)), 18px);
  margin-bottom:clamp(6px, calc(.7 * var(--lt)), 10px);   /* midden op de knop [ref] */
}
.v2-loc-teller{
  font-size:clamp(15px, calc(1.458 * var(--lt)), 21px);   /* [ref: 21] */
  color:#fff; white-space:nowrap; opacity:.9;
}
.v2-loc-pijl{
  display:flex; align-items:center; gap:6px;
  color:#fff; opacity:.7; transition:opacity .25s;
  padding:6px 0;
}
.v2-loc-pijl:hover{ opacity:1; }
.v2-loc-pijl[disabled]{ opacity:.3; cursor:default; }
.v2-loc-pijl svg{ width:clamp(7px, calc(.7 * var(--lt)), 10px); height:auto; }
.v2-loc-next{ width:clamp(40px, calc(4.69 * var(--lt)), 67.5px); }  /* [ref: 67,5] */
.v2-loc-next .v2-loc-lijn{ flex:1 1 auto; height:2px; background:#fff; }  /* [ref: 2px wit] */
.v2-loc-prev svg{ margin-right:2px; }
/* Bij één vestiging vervallen teller en pijlen. */
.v2-locaties[data-locaties="1"] .v2-loc-bediening{ display:none; }
.v2-locaties[data-locaties="1"] .v2-loc-cirkel{ cursor:default; }

/* ---------- tablet en mobiel: paneel boven, foto eronder ---------- */
@media (max-width:1023px){
  .v2-locaties{
    --lt: min(2.56vw, 1.28svh);
    grid-template-columns:1fr;
    min-height:0;
  }
  .v2-loc-paneel{
    order:1;
    padding:clamp(28px, 10.6vw, 68px) clamp(18px, 5.14vw, 43px);   /* [ref: 41,4/20 op 390] */
    border-radius:0 0 clamp(16px, 5.35vw, 22px) clamp(16px, 5.35vw, 22px);
  }
  .v2-loc-beeld{ order:2; height:clamp(240px, 97.7vw, 760px); }    /* [ref: 381/390] */
  .v2-loc-fotos{ inset:0; }
  .v2-locaties h2.v2-loc-kop{ font-size:clamp(30px, 10.9vw, 52px); }  /* [ref: 42,6 op 390] */
  .v2-loc-intro{ font-size:clamp(15px, 4.24vw, 18px); }               /* [ref: 16,5 op 390] */
  .v2-locaties{ --lt-cirkel:clamp(84px, 27.5vw, 140px); --lt-gat:clamp(12px, 4.1vw, 20px); }  /* [ref: 107 / 16] */
  .v2-loc-contact{ display:block; }
  .v2-loc-contact > span{
    display:block; border-right:0; margin-right:0; padding-right:0;
    padding-bottom:clamp(6px, 2vw, 12px);
  }
  .v2-loc-voet{ align-items:flex-end; gap:12px; }
}
@media (max-width:600px){
  .v2-loc-bediening{ gap:10px; }
  .v2-loc-teller{ font-size:16px; }
}

@media (prefers-reduced-motion: reduce){
  .v2-loc-foto, .v2-loc-cirkels, .v2-loc-cirkel img{ transition:none; }
}

/* Correcties na nameting: oudere sitebrede regels wonnen op de kop en de knop. */
.v2-locaties h2.v2-loc-kop{ color:#fff !important; }
.v2-locaties .v2-loc-intro{ color:#fff !important; }
.v2-locaties a.btn.v2-loc-route{/* [ref: 0 15px] */
  min-height:0 !important;}

/* ============================================================
   LOCATIESECTIE — correctieronde 1 (naast de referentie gelegd)
   Horizontale maten volgen de SCHERMBREEDTE (zoals de referentie),
   verticale maten volgen de SCHERMHOOGTE (zodat alles in beeld past).
   ============================================================ */
.v2-locaties{
  --lt-pad-x:  clamp(20px, 5.625vw, 81px);                          /* [ref: 81 op 1440] */
  --lt-cirkel: clamp(76px, min(14.06vw, calc(18 * var(--lt))), 203px); /* [ref: 202,5] */
  --lt-gat:    calc(var(--lt-cirkel) * .405);                        /* [ref: 82/202,5] */
}
.v2-locaties h2.v2-loc-kop{
  font-size:min(calc(5.208 * 1vw), calc(6.2 * var(--lt))) !important;  /* [ref: 75 op 1440] */
}
.v2-loc-intro{
  font-size:min(calc(1.458 * 1vw), calc(1.75 * var(--lt))) !important; /* [ref: 21 op 1440] */
}
/* Label boven de waarde: houdt de drie kolommen naast elkaar passen,
   ook met de lange {{TOKENS}} in de template. */
.v2-loc-contact .label{ display:block; opacity:.75; }
.v2-loc-contact{ align-items:stretch; }
/* Onder 1400px stapelen de gegevens onder elkaar, net als in de referentie
   (daar gebeurt dat tussen 1440 en 1280). */
@media (max-width:1149px){
  .v2-loc-contact{ display:block; }
  .v2-loc-contact > span{
    display:block; border-right:0; margin-right:0; padding-right:0;
    padding-bottom:clamp(5px, calc(.6 * var(--lt)), 9px);            /* [ref: 9px op 1280] */
  }
  .v2-loc-contact .label{ display:inline; }
}

/* Correctieronde 2: verticale schaal iets strakker, zodat de sectie ook op
   900, 700 en 660 hoog binnen één beeld blijft (gemeten, niet geschat). */
.v2-locaties{
  --lt-pad:   clamp(24px, calc(7.0 * var(--lt)), 120px);
  --lt-lucht: clamp(14px, calc(2.8 * var(--lt)),  45px);
  --lt-cirkel: clamp(76px, min(14.06vw, calc(16 * var(--lt))), 203px);
}
.v2-locaties h2.v2-loc-kop{ font-size:min(calc(5.208 * 1vw), calc(5.6 * var(--lt))) !important; }
.v2-loc-intro{ font-size:min(calc(1.458 * 1vw), calc(1.62 * var(--lt))) !important; }

/* Leesbaarheidsvloer: de tekst mag nooit onder 15px zakken, ook niet op
   heel lage schermen (dan wint de vloer van de schaal). */
.v2-loc-intro{ font-size:max(15px, min(calc(1.458 * 1vw), calc(1.62 * var(--lt)))) !important; }
.v2-locaties h2.v2-loc-kop{ font-size:max(30px, min(calc(5.208 * 1vw), calc(5.6 * var(--lt)))) !important; }

/* Correctieronde 3: de gegevens krijgen de volle paneelbreedte en de teller
   staat er rechts overheen, precies zoals in de referentie (daar staat het
   infoblok ook over de volle breedte en zweeft de teller rechts). */
.v2-loc-voet{ display:block; position:relative; }
.v2-loc-gegevens{ width:100%; }
.v2-loc-bediening{
  position:absolute; right:0;
  bottom:clamp(4px, calc(.65 * var(--lt)), 9px);   /* midden op de routeknop */
  margin-bottom:0;
}
/* Nu er weer volle breedte is, staat het label net als in de referentie
   vóór de waarde in plaats van erboven. */
@media (min-width:1150px){
  .v2-loc-contact .label{ display:inline; }
}

/* Gestapelde gegevens krijgen dunne horizontale scheidingslijnen, net als in
   de referentie op tablet en telefoon. */
@media (max-width:1149px){
  .v2-loc-contact > span{
    border-bottom:1px solid rgba(255,255,255,.25);
    margin-bottom:clamp(6px, calc(.8 * var(--lt)), 11px);
  }
  .v2-loc-contact > span:last-child{ border-bottom:0; margin-bottom:0; }
}
/* Op telefoon is de volgende-pijl een losse chevron zonder streep [ref 390]. */
@media (max-width:1023px){
  .v2-loc-next{ width:auto; }
  .v2-loc-next .v2-loc-lijn{ display:none; }
}

/* ============================================================
   LOCATIESECTIE — correctieronde 4
   1) Kartelrand: twee grote, rechte pieken zoals de daklijn in de
      referentie, als eigen laag in de bandkleur (niet meer als harde
      knip in de foto), zodat de overgang net zo zacht is als daar.
   2) Cirkelrij: echt schuifbaar, met zichtbare aanwijzingen dat er
      meer is en een makkelijke weg terug.
   ============================================================ */

/* ---------- 1. kartelrand ---------- */
.v2-loc-foto[data-vorm="kartel"]{ clip-path:none; }   /* oude harde knip vervalt */
.v2-loc-kartel{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background:#F8FAFC;
  opacity:0;                       /* alleen zichtbaar bij de eerste locatie */
  transition:opacity .25s var(--ease);
  /* [ref, gemeten daklijn: 0/95,6 - 45/91,2 - 55/94,9 - 64,4/88,6 - 73,3/95,3 - 100/88,3] */
  clip-path:polygon(0 94.6%, 20% 94.8%, 45% 91.2%, 52% 92.7%, 65% 88.8%,
                    85% 94.8%, 100% 88.2%, 100% 100%, 0 100%);
  filter:blur(.75px);              /* zachte rand, geen knipsel */
}
.v2-loc-fotos.toon-kartel .v2-loc-kartel{ opacity:.95; }  /* [ref: dak schemert nog door] */

/* ---------- 2. schuifbare cirkelrij ---------- */
.v2-loc-cirkelvak{
  position:relative;
  overflow-x:auto; overflow-y:hidden;
  overscroll-behavior-x:contain;
  scroll-behavior:smooth;
  scrollbar-width:none; -ms-overflow-style:none;
  cursor:grab;
  padding-bottom:2px;
}
.v2-loc-cirkelvak::-webkit-scrollbar{ display:none; }
.v2-loc-cirkelvak.is-slepen{ cursor:grabbing; scroll-behavior:auto; }
.v2-loc-cirkels{ transform:none !important; width:max-content; }

/* Randvervaging: laat zien dat er links of rechts meer staat. */
.v2-loc-cirkelrand{ position:relative; }
.v2-loc-cirkelrand::before, .v2-loc-cirkelrand::after{
  content:""; position:absolute; top:0; bottom:0; width:clamp(28px, 4vw, 64px);
  pointer-events:none; z-index:2; opacity:0; transition:opacity .25s var(--ease);
}
.v2-loc-cirkelrand::before{ left:0;  background:linear-gradient(to right, #000 15%, rgba(0,0,0,0)); }
.v2-loc-cirkelrand::after{  right:0; background:linear-gradient(to left,  #000 15%, rgba(0,0,0,0)); }
.v2-loc-cirkelrand.meer-links::before{ opacity:1; }
.v2-loc-cirkelrand.meer-rechts::after{ opacity:1; }

/* Schuifbalk onder de cirkels: het duidelijkste signaal dat er meer is. */
.v2-loc-scrollbaan{
  position:relative; height:3px; border-radius:999px;
  background:rgba(255,255,255,.18);
  margin:clamp(10px, calc(1.6 * var(--lt)), 20px) 0 var(--lt-lucht);
  display:none;
}
.v2-locaties.is-schuifbaar .v2-loc-scrollbaan{ display:block; }
.v2-loc-scrollduim{
  position:absolute; left:0; top:-2px; height:7px; min-width:32px;
  border-radius:999px; background:#fff;
  transition:left .2s linear, width .2s linear;
  cursor:grab;
}
.v2-loc-scrollduim:active{ cursor:grabbing; }
/* De cirkelrij houdt zijn eigen ondermarge alleen als er geen balk staat. */
.v2-locaties.is-schuifbaar .v2-loc-cirkelvak{ margin-bottom:0; }

/* Pijlen als echte knoppen: ronde rand, altijd zichtbaar. */
.v2-loc-pijl{
  width:clamp(34px, calc(3.4 * var(--lt)), 46px);
  height:clamp(34px, calc(3.4 * var(--lt)), 46px);
  border:1px solid rgba(255,255,255,.5); border-radius:50%;
  justify-content:center; gap:0; padding:0; opacity:1;
  transition:background-color .25s, border-color .25s, opacity .25s;
}
.v2-loc-pijl:hover{ background:rgba(255,255,255,.14); border-color:#fff; }
.v2-loc-pijl[disabled]{ opacity:.35; }
.v2-loc-next{ width:clamp(34px, calc(3.4 * var(--lt)), 46px); }
.v2-loc-next .v2-loc-lijn{ display:none; }   /* streep vervalt: knop is nu rond */
.v2-loc-bediening{ gap:clamp(8px, calc(1 * var(--lt)), 14px); }

@media (prefers-reduced-motion: reduce){
  .v2-loc-cirkelvak{ scroll-behavior:auto; }
}

/* Gegevens in drie vaste kolommen: lange waarden breken binnen hun eigen
   kolom af in plaats van naar een tweede regel te springen (waardoor de
   scheidingslijnen los kwamen te staan). */
@media (min-width:1150px){
  .v2-loc-contact{
    display:grid;
    grid-template-columns:repeat(3, minmax(0, 1fr));
    align-items:stretch;
  }
  .v2-loc-contact > span{ overflow-wrap:anywhere; }
}

/* Alle vestigingen liggen in dezelfde rasterplek: het gegevensblok is
   daardoor altijd even hoog en de sectie springt niet bij het wisselen. */
.v2-loc-gegevens{ display:grid; }
.v2-loc-item{ display:block; grid-area:1 / 1; visibility:hidden; }
.v2-loc-item.is-actief{ visibility:visible; }
.v2-loc-item:not(.is-actief){ pointer-events:none; }

/* De schuifbalk mag geen extra hoogte kosten op lage schermen. */
.v2-loc-scrollbaan{
  margin:clamp(8px, calc(1.1 * var(--lt)), 14px) 0 calc(var(--lt-lucht) * .75);
}

/* Smallere desktopbreedtes: het paneel is daar smal, dus de tekst neemt meer
   regels. Iets minder lucht zodat de sectie ook daar in één beeld past. */
@media (min-width:1024px) and (max-width:1349px){
  .v2-locaties{
    --lt-pad:   clamp(20px, calc(5.6 * var(--lt)), 120px);
    --lt-lucht: clamp(12px, calc(2.35 * var(--lt)), 45px);
  }
}

/* Randvervaging alleen als hint, niet zo zwaar dat de cirkel verdwijnt. */
.v2-loc-cirkelrand::before, .v2-loc-cirkelrand::after{ width:clamp(24px, 2.6vw, 44px); }
.v2-loc-cirkelrand::before{ background:linear-gradient(to right, rgba(0,0,0,.92), rgba(0,0,0,0)); }
.v2-loc-cirkelrand::after{  background:linear-gradient(to left,  rgba(0,0,0,.92), rgba(0,0,0,0)); }

/* ============================================================
   VARIANT 2 — TESTIMONIALS (klanten aan het woord)
   Gemeten aan randoco.com (.slider-testimonials, 1440x900 / 1280 / 390).
   Per dia: links een witte kaart met avatar, naam, functie en citaat,
   rechts het beeld met afspeelknop. Naar rechts schuiven toont de
   volgende klant. Onder de dia's dezelfde voortgangsdot als bij de
   projectenslider.
   ============================================================ */
.v2-testi{
  --tt: min(1vw, 1.06svh);            /* schaal: breedte én hoogte */
  position:relative;
  background:#F8FAFC;                  /* [ref: rgb(245,245,245) paginakleur] */
  padding:clamp(28px, calc(4.17 * var(--tt)), 60px) 0 !important;  /* [ref: 60] */
  overflow:hidden;
}
.v2-testi-inner{
  width:100%; max-width:1410px; margin:0 auto;      /* [ref: wrapper xlarge 1410] */
  padding:0 clamp(18px, calc(2.08 * var(--tt)), 30px);  /* [ref: 30] */
}
.v2-testi h2.v2-testi-kop{
  font-size:max(34px, min(9.375vw, calc(9 * var(--tt)))) !important;  /* [ref: 135 op 1440] */
  line-height:1 !important;                                           /* [ref: 135/135] */
  text-align:center;
  margin:0 0 clamp(18px, calc(4.69 * var(--tt)), 68px) !important;    /* [ref: 67,5] */
  color:var(--brand-dark);
}

/* ---------- de schuifzone ---------- */
.v2-testi-spoor{
  display:flex; gap:clamp(12px, calc(1.67 * var(--tt)), 24px);        /* [ref: 24] */
  overflow-x:auto; overflow-y:hidden;
  scroll-snap-type:x mandatory; scroll-behavior:smooth;
  overscroll-behavior-x:contain;
  scrollbar-width:none; -ms-overflow-style:none;
  cursor:grab;
}
.v2-testi-spoor::-webkit-scrollbar{ display:none; }
.v2-testi-spoor.is-slepen{ cursor:grabbing; scroll-behavior:auto; }
.v2-testi-dia{
  flex:0 0 100%; scroll-snap-align:start;
  display:grid; grid-template-columns:1fr 1fr;
  gap:clamp(10px, calc(1.25 * var(--tt)), 18px);                      /* [ref: 18] */
  height:clamp(300px, calc(55 * var(--tt)), 848px);                   /* [ref: 848 op 1440] */
}

/* ---------- witte kaart ---------- */
.v2-testi-kaart{
  position:relative; overflow:hidden;
  background:#fff;
  border-radius:0 clamp(18px, calc(2.6 * var(--tt)), 37.5px);         /* [ref: 0 37,5px] */
  padding:clamp(20px, calc(3.9 * var(--tt)), 56.25px);                /* [ref: 56,25] */
  display:grid; align-items:center;                                    /* [ref: grid, center] */
}
.v2-testi-blok{ position:relative; z-index:1; }
.v2-testi-persoon{ display:flex; align-items:center; gap:clamp(14px, calc(2.64 * var(--tt)), 38px); }
.v2-testi-avatar{
  flex:0 0 auto; width:clamp(48px, calc(5.83 * var(--tt)), 84px); height:clamp(48px, calc(5.83 * var(--tt)), 84px);
  border-radius:50%; overflow:hidden;                                  /* [ref: 84px rond] */
}
.v2-testi-avatar img{ width:100%; height:100%; object-fit:cover; border-radius:50%; }
.v2-testi-naam{
  display:block; font-weight:700; color:var(--brand-dark);
  font-size:max(17px, min(1.667vw, calc(2.3 * var(--tt))));            /* [ref: 24 bold] */
  line-height:1.2;
}
.v2-testi-rol{
  display:block; color:var(--text);
  font-size:max(14px, min(1.25vw, calc(1.75 * var(--tt))));            /* [ref: 18] */
  line-height:1.4; margin-top:4px;
}
.v2-testi-citaat{
  margin:clamp(16px, calc(4.7 * var(--tt)), 68px) 0 0;                 /* [ref: 68] */
  max-width:clamp(240px, calc(33.3 * var(--tt) * 1.5), 480px);         /* [ref: 480] */
  color:var(--brand-dark);
  font-size:max(14px, min(1.25vw, calc(1.75 * var(--tt))));
  line-height:1.4;
}
/* Aanhalingsteken en patroonstrook: het decoratieve blok rechts naast de
   naam. Het stippenmotief van de referentie is vervangen door onze eigen
   traanplaat (DEEL C-uitzondering 14). */
.v2-testi-aanhaal{
  position:absolute; z-index:0; pointer-events:none;
  right:clamp(10px, calc(5 * var(--tt)), 72px);
  top:50%; transform:translateY(-50%);
  width:clamp(34px, calc(4.17 * var(--tt)), 60px);
  color:#737373; opacity:.2;                                           /* [ref: grijs, 20%] */
}
.v2-testi-patroon{
  position:absolute; z-index:0; pointer-events:none;
  right:clamp(4px, calc(1.5 * var(--tt)), 22px);
  top:50%; transform:translateY(-50%);
  width:clamp(42px, calc(5.2 * var(--tt)), 75px);
  height:clamp(140px, calc(22.6 * var(--tt)), 325px);                  /* [ref: 75 x 324,75] */
  background-image:var(--v2-traanplaat);
  background-size:var(--v2-tegel);
  opacity:.5;
}

/* ---------- beeld met afspeelknop ---------- */
.v2-testi-beeld{
  position:relative; overflow:hidden;
  border-radius:0 clamp(18px, calc(2.6 * var(--tt)), 37.5px);          /* [ref: 0 37,5px] */
  background:#000;
}
.v2-testi-beeld img{ width:100%; height:100%; object-fit:cover; display:block; }
.v2-testi-play{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background:none; padding:0; color:#fff;
  transition:background-color .25s var(--ease);
}
.v2-testi-play svg{
  width:clamp(34px, calc(4.17 * var(--tt)), 60px); height:auto;        /* [ref: 60 x 76, alleen lijn] */
  filter:drop-shadow(0 2px 10px rgba(0,0,0,.35));
  transition:transform .25s var(--ease);
}
.v2-testi-play:hover{ background:rgba(0,0,0,.12); }
.v2-testi-play:hover svg{ transform:scale(1.08); }
.v2-testi-beeld iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }

/* ---------- voortgangsdot, gelijk aan de projectenslider ---------- */
.v2-testi-bar{
  position:relative; display:flex; align-items:center;
  height:clamp(24px, calc(2.5 * var(--tt)), 36px);                     /* [ref: zone 36] */
  margin-top:clamp(18px, calc(3.1 * var(--tt)), 45px);
}
.v2-testi-bar::before{ content:""; position:absolute; left:0; right:0; top:50%; height:1px; background:#E1E1E1; }
.v2-testi-dot{
  appearance:none; position:absolute; left:0; top:50%; margin-top:-18px;
  width:36px; height:36px; border-radius:50%;
  background:#fff; border:3px solid var(--bronze);                      /* [ref: witte cirkel + accent] */
  cursor:grab; padding:0;
}
.v2-testi-dot::after{
  content:""; position:absolute; left:50%; top:50%; width:7.5px; height:7.5px;
  margin:-3.75px 0 0 -3.75px; border-radius:50%; background:var(--bronze);  /* [ref: 7,5px punt] */
}
.v2-testi-dot:active{ cursor:grabbing; }

/* ---------- knop onder de slider ---------- */
.v2-testi-cta{ text-align:center; margin-top:clamp(16px, calc(3.125 * var(--tt)), 45px); }/* leeggemaakt, vorm komt uit tokens-referentie.css: .v2-testi .v2-testi-cta .btn */
.v2-testi .v2-testi-cta .btn:hover{ background:var(--bronze-dark) !important; }

/* ---------- tablet en telefoon: kaart boven, beeld eronder ---------- */
@media (max-width:1023px){
  .v2-testi{ --tt: min(2.56vw, 1.06svh); }
  .v2-testi-inner{ padding:0 clamp(14px, 5.37vw, 24px); }              /* [ref: 21 op 390] */
  .v2-testi h2.v2-testi-kop{ font-size:clamp(30px, 11.8vw, 56px) !important; }  /* [ref: 46 op 390] */
  .v2-testi-dia{
    grid-template-columns:1fr;
    grid-template-rows:auto auto;
    height:auto;
    gap:0;
  }
  .v2-testi-kaart{ padding:clamp(18px, 6.97vw, 32px) clamp(16px, 5.74vw, 28px); }  /* [ref: 27/22 op 390] */
  .v2-testi-beeld{ aspect-ratio:348 / 443; }                            /* [ref: 348x443 op 390] */
  .v2-testi-citaat{ margin-top:clamp(12px, 4.9vw, 22px); max-width:none; }
  .v2-testi-persoon{ flex-wrap:wrap; }
  .v2-testi-patroon{ display:none; }
  .v2-testi-aanhaal{ top:clamp(14px, 5vw, 24px); transform:none; }
}

@media (prefers-reduced-motion: reduce){
  .v2-testi-spoor{ scroll-behavior:auto; }
  .v2-testi-play svg{ transition:none; }
}

/* Afspeeldriehoek is een lijn, geen vlak [ref: alleen stroke]. */
.v2-testi-play svg path{ fill:none !important; stroke:currentColor; stroke-width:2; }

/* Dia zo hoog als er binnen één beeld past (gemeten en bijgesteld). */
.v2-testi-dia{ height:clamp(300px, calc(57.5 * var(--tt)), 848px); }

/* Laatste bijstelling zodat de sectie ook op 700, 660 en 620 hoog binnen
   één beeld blijft (gemeten). */
.v2-testi-dia{ height:clamp(300px, calc(56.5 * var(--tt)), 848px); }
.v2-testi-bar{ margin-top:clamp(14px, calc(2.6 * var(--tt)), 45px); }
.v2-testi-cta{ margin-top:clamp(14px, calc(2.6 * var(--tt)), 45px); }

/* Op telefoon en tablet groeit de dia mee met de inhoud (kaart boven,
   beeld eronder); de vaste diahoogte geldt alleen op desktop. */
@media (max-width:1023px){
  .v2-testi-dia{ height:auto !important; }
}

/* Tijdens het slepen staat het snappen uit, anders springt de dia terug
   naar zijn beginpunt en beweegt er niets. */
.v2-testi-spoor.is-slepen{ scroll-snap-type:none !important; }

/* De schuifzone is het referentiepunt voor de dia-posities. */
.v2-testi-spoor{ position:relative; }

/* ============================================================
   VARIANT 2 — RESOURCES / NIEUWS
   Gemeten aan randoco.com (.post-listing-featured, 1440x900 / 1280 / 390).
   Asymmetrisch tweekolomsraster: links de kop met accentlijn en knop en
   daaronder één artikel, rechts twee artikelen die bovenaan beginnen.
   ============================================================ */
.v2-res{
  position:relative;
  background:#fff;
  padding:clamp(28px, 4.17vw, 60px) 0 clamp(48px, 7.3vw, 105px) !important;   /* [ref: 60 / 105] */
}
.v2-res-inner{
  width:100%; max-width:1305px; margin:0 auto;                 /* [ref: wrapper large 1305] */
  padding:0 clamp(18px, 2.08vw, 30px);                          /* [ref: 30] */
}
.v2-res-grid{
  display:grid; grid-template-columns:1fr 1fr;
  column-gap:clamp(20px, 2.6vw, 37.5px);                        /* [ref: 37,5] */
  align-items:start;
}
.v2-res-kolom{ display:flex; flex-direction:column; min-width:0; }

/* ---------- kop met haaietandlijn ---------- */
.v2-res-box{
  padding-top:clamp(12px, 2.08vw, 30px);                        /* [ref: 30] */
  margin-bottom:clamp(28px, 4.69vw, 67.5px);                    /* [ref: 67,5] */
}
.v2-res h2.v2-res-kop{
  font-size:var(--kop-xxl);                                     /* [ref: 135 op 1440] */
  line-height:1; font-weight:700;
  color:var(--brand-dark);
  margin:0 0 clamp(16px, 2.6vw, 38px);                          /* [ref: 38 tot de knop] */
}
/* De accentlijn van de referentie krijgt bij ons de haaietand (DEEL D). */
.v2-res-tand{
  display:inline-block; vertical-align:middle;
  margin:0 clamp(12px, 2.6vw, 37.5px);                          /* [ref: 0 37,5px] */
  width:clamp(96px, 14.6vw, 210px);                             /* [ref: 210 breed] */
  height:calc(var(--tand-h) + var(--lijn-d));
  background:var(--gold, #F59E0B);
  clip-path:polygon(
    0 var(--tand-h),
    calc(50% - var(--tand-hw)) var(--tand-h),
    50% 0,
    calc(50% + var(--tand-hw)) var(--tand-h),
    100% var(--tand-h),
    100% 100%, 0 100%);                                          /* zelfde tand als .v2-wwo-streep */
}
.v2-res .v2-res-cta{/* [ref: 12 / 22,5] */
  font-size:clamp(14px, 1.25vw, 18px) !important;               /* [ref: 18/700] */
  border-radius:0 clamp(9px, 1.04vw, 15px) !important;          /* [ref: 0 15px] */
  min-height:0 !important;}
.v2-res .v2-res-cta:hover{ background:var(--bronze-dark) !important; }

/* ---------- artikelkaart ---------- */
.v2-res-kaart{ margin-bottom:clamp(40px, 8.85vw, 127.5px); }    /* [ref: 127,5] */
.v2-res-kolom > .v2-res-kaart:last-child{ margin-bottom:0; }
.v2-res-beeld{
  position:relative; display:block; overflow:hidden;
  border-radius:0 clamp(24px, 4.17vw, 60px) 0 0;                /* [ref: 0 60px 0 0] */
  height:clamp(200px, 38.3vw, 552px);                           /* [ref: 552 op 1440] */
}
.v2-res-beeld img{ width:100%; height:100%; object-fit:cover; display:block; }
/* Verloop naar wit over de onderste 65% van het beeld [ref: transparant tot 35%]. */
.v2-res-beeld::after{
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(rgba(255,255,255,0) 35%, #fff 100%);
}
.v2-res-kaart h3{
  font-size:clamp(19px, 1.875vw, 27px);                         /* [ref: 27] */
  line-height:1.1;                                              /* [ref: 29,7/27] */
  font-weight:700; color:var(--brand-dark);
  margin:clamp(14px, 2.36vw, 34px) 0 clamp(10px, 1.5625vw, 22.5px);  /* [ref: 34 onder beeld, 22,5 eronder] */
}
.v2-res-kaart h3 a{ color:inherit; }
.v2-res-kaart h3 a:hover{ color:var(--bronze); }
.v2-res-samenvatting{
  font-size:clamp(14px, 1.25vw, 18px); line-height:1.4;         /* [ref: 18/25,2] */
  color:var(--text); margin:0;
}
.v2-res-voet{
  display:flex; justify-content:space-between; align-items:center;
  gap:clamp(12px, 1.6vw, 24px);
  margin-top:clamp(14px, 2.08vw, 30px);                         /* [ref: 30] */
}
.v2-res .v2-res-lees{
  background:var(--bronze) !important; background-image:none !important;
  color:#fff !important; border:0 !important; box-shadow:none !important;
  padding:clamp(9px, .833vw, 12px) clamp(16px, 1.5625vw, 22.5px) !important;
  font-size:clamp(14px, 1.25vw, 18px) !important;
  border-radius:0 clamp(9px, 1.04vw, 15px) !important;
  min-height:0 !important; flex:0 0 auto;
}
.v2-res .v2-res-lees:hover{ background:var(--bronze-dark) !important; }
.v2-res-meta{
  display:flex; align-items:center; gap:clamp(10px, 1.04vw, 15px);   /* [ref: 15] */
  color:#737373;                                                     /* [ref: rgb(115,115,115)] */
  font-size:clamp(13px, 1.25vw, 18px);
}
.v2-res-cat{
  position:relative; font-weight:700;
  padding-right:clamp(10px, 1.04vw, 15px);                           /* [ref: 15] */
}
.v2-res-cat::after{
  content:""; position:absolute; right:0; top:0; bottom:0;
  width:1px; background:#737373;                                     /* [ref: 1px scheidslijn] */
}
.v2-res-datum{ white-space:nowrap; }

/* ---------- mobiel: één kolom, geen accentlijn ---------- */
@media (max-width:1023px){
  .v2-res{ padding:clamp(24px, 10.7vw, 48px) 0 clamp(36px, 16.3vw, 72px) !important; }  /* [ref: 41,75 / 63,5] */
  .v2-res-inner{ padding:0 clamp(14px, 5.4vw, 24px); }               /* [ref: 21 op 390] */
  .v2-res-grid{ grid-template-columns:1fr; }
  .v2-res-tand{ display:none; }                                      /* [ref: lijn valt weg op mobiel] */
  .v2-res h2.v2-res-kop{ font-size:clamp(30px, 11.3vw, 52px); margin-bottom:clamp(14px, 5.4vw, 24px); }
  .v2-res-box{ padding-top:0; margin-bottom:clamp(20px, 8vw, 34px); }
  .v2-res .v2-res-cta{ display:flex; width:100%; justify-content:center; }   /* [ref: knop over de volle breedte] */
  .v2-res-beeld{ height:clamp(150px, 49vw, 260px); border-radius:0 clamp(16px, 5.8vw, 24px) 0 0; }  /* [ref: 191 / 22,6 op 390] */
  .v2-res-kaart{ margin-bottom:clamp(28px, 9vw, 40px); }
  .v2-res-kolom > .v2-res-kaart:last-child{ margin-bottom:clamp(28px, 9vw, 40px); }
  .v2-res-kolom:last-child > .v2-res-kaart:last-child{ margin-bottom:0; }
  .v2-res-voet{ flex-direction:column-reverse; align-items:flex-start; gap:clamp(10px, 4vw, 16px); }
  .v2-res .v2-res-lees{ width:100%; justify-content:center; }        /* [ref: knop vol op 390] */
  .v2-res-meta{ font-size:clamp(12px, 3.2vw, 14px); }
}

/* Mobiele titelmaat gelijk aan de referentie (22,6 op 390). */
@media (max-width:1023px){
  .v2-res-kaart h3{ font-size:clamp(18px, 5.8vw, 24px); line-height:1.1; margin:clamp(12px, 4vw, 18px) 0 clamp(8px, 2.6vw, 12px); }
}

/* Statementkop: "Wij Gaan Voor U" blijft één regel (de U hoort bij Voor) en
   het blok staat wat hoger. Keuze Dikkie 16-08-2026. */
@media (max-width:1023px){
  .v2-statement .v2-st-kop h2.kop-xxl{ font-size:clamp(32px, 13.2vw, 60px) !important; }
  .v2-st-inner{ padding-top:24px !important; }
  .v2-statement{ padding:64px 0 64px !important; }   /* kop begint op 88: hoger dan eerst (106), maar vrij van de header */
}

/* Statementkop blijft op twee regels, ook op brede schermen. De tekstkolom
   groeit niet verder mee dan 480px (de maat op 1440), zodat het kopblok niet
   wordt platgedrukt, en de kopgrootte wordt begrensd door de eigen blokbreedte
   ("Wij Gaan Voor U" is 5,55 x de lettergrootte breed). */
@media (min-width:1024px){
  .v2-statement .v2-st-kolommen{ width:min(33.3vw, 480px); }
  .v2-statement .v2-st-kop{ container-type:inline-size; }
}
@supports (container-type: inline-size){
  @media (min-width:1024px){
    .v2-statement .v2-st-kop h2.kop-xxl{
      font-size:min(clamp(34px, calc(9.375 * var(--st)), 135px), 17.8cqw) !important;
    }
  }
}

/* Kopblok ook op desktop iets hoger (was 11,2 x --st = 133px op 1440).
   Keuze Dikkie 16-08-2026; referentiemeting was 106px onder gecentreerd. */
@media (min-width:1024px){
  .v2-statement .v2-st-kop{ margin-top:calc(-8 * var(--st)); }   /* kop boven het midden, ongeveer op de hoogte van de tekstkolom */
}

/* ============================================================
   VARIANT 2 — SOCIAL + OFFERTE-CTA
   Gemeten aan randoco.com (.follow-us en .hero-callout, 1440x900 / 390).
   ============================================================ */
.v2-social{
  position:relative; overflow:hidden; background:#fff;
  padding:clamp(48px, 7.3vw, 105px) 0 clamp(64px, 11.4vw, 164px) !important;  /* [ref: 105 / 164] */
}
/* lichtgrijs paneel over de linkerkant [ref: 1022 van 1440 = 71vw] */
.v2-social-paneel{
  position:absolute; z-index:0; top:0; bottom:0; left:0; width:71vw;
  background:#F8FAFC; pointer-events:none;
}
/* traanplaat loopt 7,3vw verder door dan het paneel: die strook is de
   verticale patroonband op wit [ref: 1127 - 1022 = 105px] */
.v2-social-patroon{
  position:absolute; z-index:1; top:0; bottom:0; left:0; width:78.3vw;
  background-image:var(--v2-traanplaat); background-size:var(--v2-tegel);
  opacity:.9; pointer-events:none;                     /* [ref: patroon 4,3% donkerder; onze tegel haalt 2%] */
}
/* klantlogo als watermerk, half buiten beeld [ref: 341x330, left -120] */
.v2-social-watermerk{
  position:absolute; z-index:2; left:-8.3vw; top:50%; transform:translateY(-50%);
  width:23.7vw; height:auto; max-width:none;
  opacity:.06; filter:grayscale(1); pointer-events:none;
}
.v2-social-inner{
  position:relative; z-index:3;
  width:100%; max-width:1305px; margin:0 auto;
  padding:0 clamp(18px, 2.08vw, 30px);
  display:grid; grid-template-columns:58.4% 41.6%;      /* [ref: 727,5 / 517,5] */
  align-items:start;
}
.v2-social-tekst{ padding-right:clamp(16px, 3vw, 48px); }
.v2-social h2.v2-social-kop{
  font-size:clamp(32px, 5.2vw, 75px);                   /* [ref: 75] */
  line-height:1.2;                                      /* [ref: 90/75] */
  color:var(--brand-dark); margin:0 0 clamp(14px, 1.82vw, 26px);  /* [ref: 26,25 boven de lijn] */
}
/* accentlijn met de haaietand naar BENEDEN [ref: 3px gouden lijn over de kolom] */
.v2-social-tand{
  display:block; width:100%;
  height:calc(var(--lijn-d) + var(--tand-h));
  background:var(--gold, #F59E0B);
  clip-path:polygon(
    0 0, 100% 0, 100% var(--lijn-d),
    calc(50% + var(--tand-hw)) var(--lijn-d),
    50% calc(var(--lijn-d) + var(--tand-h)),
    calc(50% - var(--tand-hw)) var(--lijn-d),
    0 var(--lijn-d));
}
.v2-social-iconen{
  display:flex; gap:clamp(14px, 2.29vw, 33px);          /* [ref: 33] */
  list-style:none; margin:clamp(24px, 4.17vw, 60px) 0 0; padding:0;  /* [ref: 60] */
}
.v2-si{
  display:flex; align-items:center; justify-content:center;
  width:clamp(38px, 3.125vw, 45px); height:clamp(38px, 3.125vw, 45px);   /* [ref: 45x45] */
  border-radius:50%; border:2px solid currentColor;
  transition:transform .25s var(--ease), background-color .25s;
}
.v2-si svg{ width:60%; height:60%; }                    /* [ref: icoon 30 in 45] */
.v2-si:hover{ transform:translateY(-2px); }
/* Eigen merkkleuren met cirkelrand (vaste regel), niet het wit van de referentie */
.v2-si-fb{ color:#1877F2; }
.v2-si-li{ color:#0A66C2; }
.v2-si-pi{ color:#E60023; }
.v2-si-yt{ color:#FF0000; }
.v2-si-ig{ color:#dc2743; border-color:transparent; position:relative; }
.v2-si-ig::before{
  content:""; position:absolute; inset:-2px; border-radius:50%; padding:2px;
  background:linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite:exclude;
}
/* Instagram-glyph in de eigen roze tint; de rand houdt de gradient */
.v2-si-ig svg{ fill:currentColor; }

/* beeldcompositie rechts */
.v2-social-beelden{ position:relative; aspect-ratio:517.5 / 481.7; }   /* [ref: 518 x 482] */
.v2-social-vlak{
  position:absolute; z-index:1; right:0; top:0;
  width:40.9%; height:48.3%;                            /* [ref: 211,5 / 232,5 van 517,5 x 481,7] */
  background:var(--gold, #F59E0B);
}
.v2-social-foto1{
  position:absolute; z-index:2; left:-31.9%; top:14.1%; /* [ref: 165 links buiten, 68 onder de top] */
  width:100%; height:72%; object-fit:cover;             /* [ref: 518 x 347] */
}
.v2-social-foto2{
  position:absolute; z-index:3; right:0; top:51.7%;     /* [ref: y 354 - 105 = 249 van 481,7] */
  width:40.9%; height:48.3%; object-fit:cover;          /* [ref: 211,5 x 232,5] */
}

/* ---------- offerte-CTA op zwart ---------- */
.v2-cta{
  position:relative; overflow:visible; background:#000; color:#fff;
  padding:0 0 clamp(28px, 4.17vw, 60px) !important;     /* [ref: 0 / 60] */
}
.v2-cta-cirkel{
  position:absolute; left:50%; top:0; transform:translateX(-50%);
  width:clamp(140px, 25.8vw, 372px); height:clamp(140px, 25.8vw, 372px);   /* [ref: 372] */
  margin-top:calc(clamp(140px, 25.8vw, 372px) / -2);    /* [ref: top -186 = halve cirkel] */
}
.v2-cta-halve{
  position:absolute; z-index:1; left:50%; top:50%; transform:translateX(-50%);
  width:clamp(210px, 38.75vw, 558px); height:clamp(105px, 19.4vw, 279px);  /* [ref: 558 x 279] */
  background:var(--gold, #F59E0B);
  border-radius:0 0 999px 999px;
}
.v2-cta-ring{
  position:absolute; z-index:2; left:50%; top:50%; transform:translateX(-50%);
  width:clamp(340px, 62vw, 893px); height:clamp(170px, 31vw, 446px);       /* [ref: 892,8 x 446,4] */
  background-image:var(--v2-traanplaat-fel); background-size:var(--v2-tegel);
  opacity:.15;                                          /* [ref: texture op 13%] */
  border-radius:0 0 999px 999px; pointer-events:none;
}
.v2-cta-foto{
  position:absolute; z-index:3; inset:0; width:100%; height:100%;
  object-fit:cover; border-radius:50%;
}
.v2-cta-inner{
  position:relative; z-index:0;                          /* kop loopt achter de cirkel door [ref] */
  width:100%; max-width:1410px; margin:0 auto;
  padding:clamp(88px, 14.2vw, 205px) clamp(18px, 2.08vw, 30px) 0;   /* [ref: letters vallen 32px achter de cirkel] */
  text-align:center;
}
.v2-cta h2.v2-cta-kop{
  font-size:clamp(34px, 9.375vw, 135px);                 /* [ref: 135] */
  line-height:1; color:#fff;
  margin:0 0 clamp(16px, 2.81vw, 40.5px);                /* [ref: 40,5] */
}/* leeggemaakt, vorm komt uit tokens-referentie.css: .v2-cta .v2-cta-knop */
.v2-cta .v2-cta-knop:hover{ background:var(--bronze-dark) !important; }

/* ---------- mobiel ---------- */
@media (max-width:1023px){
  .v2-social{ padding:clamp(32px, 10.7vw, 48px) 0 clamp(40px, 16vw, 64px) !important; }
  .v2-social-inner{ grid-template-columns:1fr; gap:clamp(24px, 8vw, 40px); }
  .v2-social-tekst{ padding-right:0; }
  .v2-social h2.v2-social-kop{ font-size:clamp(28px, 10.9vw, 44px); }   /* [ref: 42,6 op 390] */
  .v2-social-paneel{ width:100%; }
  .v2-social-patroon{ width:100%; opacity:.4; }
  .v2-social-watermerk{ width:49vw; left:-21vw; }                        /* [ref: 192 / -83,5 op 390] */
  .v2-social-beelden{ aspect-ratio:348 / 260; }                          /* [ref: 348 x 260 op 390] */
  .v2-social-foto1{ left:0; top:8.8%; width:91.7%; height:82%; }         /* [ref: 319 x 214] */
  .v2-social-foto2{ right:0; top:57.7%; width:31%; height:42%; }         /* [ref: 108 x 109] */
  .v2-social-vlak{ width:31%; height:42%; }
  .v2-social-iconen{ gap:clamp(12px, 6.4vw, 25px); }                     /* [ref: 24,9 op 390] */
  .v2-cta-inner{ padding-top:clamp(64px, 31.5vw, 123px); }               /* [ref: kop op 123 op 390] */
  .v2-cta h2.v2-cta-kop{ font-size:clamp(30px, 15.75vw, 62px); }         /* [ref: 61,4 op 390] */
}

/* ---------- footer: zwart en de indeling van de referentie ---------- */
.footer{ background:#000 !important; }
.footer .footer-col h4{
  font-size:15px; font-weight:700; color:#737373;        /* [ref: 15/700 grijs] */
  margin:0 0 18px; text-transform:none; letter-spacing:normal;
}
.footer .footer-col ul a, .footer .footer-col .contact-item a, .footer .footer-col .contact-item span{
  font-size:13.5px; line-height:1.3; color:#fff;         /* [ref: 13,5 wit] */
}
.footer .footer-bottom{ font-size:13.5px; }

/* Oudere sitebrede kopregel maakte deze kop donker; op zwart moet hij wit zijn. */
.v2-cta h2.v2-cta-kop{ color:#fff !important; }
.v2-social h2.v2-social-kop{ color:var(--kop-zwart) !important; }

/* ============================================================
   PATROONCONTROLE 16-08-2026 — per sectie teruggebracht naar de
   plek en het vlak van de referentie (gemeten op 1440x900).
   ============================================================ */

/* 1. SOCIAL: het patroon hoort ACHTER het lichte paneel, zodat alleen de
   strook tussen paneelrand (71vw) en patroonrand (78,3vw) zichtbaar is.
   [ref: patroon 0..1127 op z-index -2, paneel 0..1022 erboven] */
.v2-social-paneel{ z-index:1 !important; }
.v2-social-patroon{ z-index:0 !important; opacity:1 !important; }

/* 2. PROJECTEN: blok linksboven [ref: 450 x 320 vanaf de linkerrand, 3%] */
.v2-ps{ position:relative; }
.v2-ps::before{
  content:""; position:absolute; z-index:0; pointer-events:none;
  left:0; top:0; width:31.25vw; height:22.2vw;          /* [ref: 450 x 319,75] */
  background-image:var(--v2-traanplaat); background-size:var(--v2-tegel);
}
.v2-ps > *{ position:relative; z-index:1; }

/* 3. RESOURCES: blok linksboven [ref: 487,5 x 862,5 vanaf de linkerrand, 3%] */
.v2-res::before{
  content:""; position:absolute; z-index:0; pointer-events:none;
  left:0; top:0; width:33.9vw; height:59.9vw;           /* [ref: 487,5 x 862,5] */
  background-image:var(--v2-traanplaat); background-size:var(--v2-tegel);
}
.v2-res-inner{ position:relative; z-index:1; }

/* 4. FOOTER: strook boven de onderbalk [ref: 1440 x 52,5, streep rgb(31,31,31) op zwart] */
.footer .footer-bottom{ position:relative; }
.footer .footer-bottom::before{
  content:""; position:absolute; z-index:0; pointer-events:none;
  left:50%; transform:translateX(-50%); width:100vw;
  bottom:100%; height:3.65vw; min-height:34px; max-height:52px;   /* [ref: 52,5] */
  background-image:var(--v2-traanplaat-fel); background-size:var(--v2-tegel);
  opacity:.14;                                           /* [ref: 31/255 op zwart] */
}

/* Patroonvlakken op mobiel, gemeten op de referentie bij 390 breed. */
@media (max-width:1023px){
  .v2-ps::before{ width:104.8vw; height:74.9vw; }        /* [ref: 408,75 x 292,3] */
  .v2-res::before{ width:46.5vw; height:129.4vw; }       /* [ref: 181,4 x 504,5] */
  .v2-st-patroon{ width:19.3vw; height:41vw; }           /* [ref: 75,25 x 160,1] */
  .footer .footer-bottom::before{ height:11.8vw; min-height:30px; }  /* [ref: 46,1] */
}

/* ============================================================
   ACCENTLIJN 16-08-2026: overal exact dezelfde dikte.
   [ref: gouden lijn is 3px, gemeten op de follow-us-sectie]
   De tandvorm blijft ongewijzigd (20/15 desktop, 14/11 mobiel).
   ============================================================ */
:root{ --lijn-d:3px !important; }
@media (max-width:1023px){ :root{ --lijn-d:3px !important; } }

/* De lijn in de social-sectie loopt over de volle kolombreedte en ligt
   BOVEN de foto, zoals in de referentie (daar loopt hij van 98 tot 824,
   dwars over de linkerfoto heen). */
.v2-social-tand{
  position:relative; z-index:5;
  width:calc(100% + clamp(16px, 3vw, 48px));
}

/* De ronde foto steekt boven de zwarte rand uit in de lichte sectie erboven.
   Zonder eigen z-index viel hij achter het lichte paneel van de social-sectie
   (dat z-index 1 heeft) en was de bovenste helft onzichtbaar. */
.v2-cta{ position:relative; z-index:2; }

/* ============================================================
   MENUBALK 16-08-2026: exact de maatvoering van de referentie.
   [ref: 16,5px / gewicht 400 / zwart / letterafstand normal /
    38px tussen de items / plus 11px op 9px van de tekst]
   ============================================================ */
@media (min-width:1024px){
  .nav-links{ gap:38px; }                                  /* [ref: 38] */
  .nav-links > li > a{
    font-size:16.5px !important;                           /* [ref: 16,5] */
    font-weight:400 !important;                            /* [ref: regular, niet vet] */
    letter-spacing:normal !important;                      /* [ref: normal] */
    color:var(--brand-dark) !important;                    /* onze donkere inktkleur i.p.v. hun zwart */
  }
  .nav-links > li > a:hover{ color:var(--brand-dark) !important; }
  .nav-links > li > a.is-active{ color:var(--brand-dark) !important; }
  /* onderstreping in dezelfde inktkleur, zoals bij de referentie */
  .nav-links a::after{ background:var(--brand-dark); height:1.5px; }
  /* plus even klein en in dezelfde kleur als de tekst */
  .v2-mm-toggle{ width:11px; height:11px; margin-left:9px; }   /* [ref: 11px, 9px van de tekst] */
  .v2-mm-toggle span{ left:0; right:0; height:1.5px; margin-top:-.75px; background:var(--brand-dark); }
  .nav-links > li{ display:flex; align-items:center; }
}

/* Laatste bijstelling menubalk: actief item niet vet (referentie onderstreept
   alleen), en de plus exact 9px van de tekst. */
@media (min-width:1024px){
  /* De li's mochten krimpen, waardoor de labeltekst (nowrap) buiten zijn vak
     doorliep en ONDER het plusje schoof zodra de balk smaller werd of het font
     net breder rende (Safari). Vast formaat = plus kan nooit meer over de
     tekst vallen. */
  .nav-links{ flex-wrap:nowrap; }
  .nav-links > li{ gap:0; flex:0 0 auto; min-width:max-content; }
}
/* Smalle desktopbreedtes: de EN-labels zijn langer; kleinere tussenruimte en
   iets kleiner font zodat de balk nooit in de taalknop loopt. */
@media (min-width:1024px) and (max-width:1180px){
  .nav-links{ gap:16px; }
  .nav-links > li > a{ font-size:14.5px; }
  .v2-mm-toggle{ margin-left:6px; }
}
@media (min-width:1024px){
  .nav-links > li > a.is-active, .nav-links > li > a.active{ font-weight:400 !important; }
  .v2-mm-toggle{ margin-left:9px; }
}

/* Actief menu-item: alleen een dunne onderstreping in de inktkleur, geen
   afwijkende kleur en niet vet. [ref: onderstreepte tekst, zelfde zwart] */
@media (min-width:1024px){
  .nav-links a.is-active, .nav-links a.active,
  .nav .nav-links a.is-active, .nav .nav-links a.active{ color:var(--brand-dark) !important; }
  .nav-links a.is-active::after, .nav-links a.active::after{
    background:var(--brand-dark) !important; height:1.5px !important; width:100% !important;
  }
}

/* ============================================================
   FOOTER — indeling van de referentie (gemeten 17-08-2026, 1440x900)
   Links een smalle kolom met logo, slagzin, knop en USP's.
   Rechts drie linkkolommen en daaronder de contactblokken met
   Volg ons uiterst rechts. Daaronder een haarlijn, de patroonstrook
   en de onderbalk. Achtergrond blijft puur zwart (vaste regel).
   ============================================================ */
.footer{ background:#000 !important; color:#fff; padding:0 !important; }
.footer .container{ max-width:1305px; padding:0 clamp(18px, 2.08vw, 30px); }

.v2-ft{ display:grid; grid-template-columns:300px 1fr; column-gap:30px; row-gap:30px;
        padding:clamp(48px, 6.25vw, 90px) 0 0; }          /* [ref: 300 + 915, gap 30, top 90] */

/* ---- linkerkolom ---- */
.v2-ft-merk{ display:flex; flex-direction:column; align-items:flex-start; gap:clamp(18px, 2.08vw, 30px); }  /* [ref: gap 30] */
.v2-ft-merk .v2-ft-logo img{ width:clamp(130px, 12.5vw, 180px); height:auto; }
.v2-ft-slogan{
  font-family:var(--font-display);
  font-size:clamp(22px, 2.29vw, 33px);                     /* [ref: 33] */
  line-height:1.18;                                        /* [ref: 38,94/33] */
  font-weight:700; color:#fff; margin:0;
}
.footer .v2-ft-knop{
  background:var(--bronze) !important; background-image:none !important;
  color:#fff !important; border:0 !important; box-shadow:none !important;
  padding:clamp(9px, .833vw, 12px) clamp(16px, 1.5625vw, 22.5px) !important;
  font-size:clamp(14px, 1.25vw, 18px) !important;
  border-radius:0 clamp(9px, 1.04vw, 15px) !important; min-height:0 !important;
}
.footer .v2-ft-knop:hover{ background:var(--bronze-dark) !important; }

/* ---- rechterkolom ---- */
.v2-ft-menus{ display:flex; flex-direction:column; gap:clamp(36px, 5.16vw, 74px); }   /* [ref: 74,25] */
.v2-ft-top{ display:flex; gap:clamp(24px, 4.17vw, 60px); }                            /* [ref: 60] */
.v2-ft-kolom{ display:flex; flex-direction:column; min-width:0; }
.v2-ft-kolom:first-child{ flex:1 1 auto; }
.v2-ft-kolom .v2-ft-titel{
  font-size:15px; font-weight:700; color:#737373; line-height:21px; margin:0 0 12px;   /* [ref: 15/700 grijs] */
}
.v2-ft-kolom ul{ list-style:none; margin:0; padding:0; display:grid; gap:9px; }
.v2-ft-kolom.v2-ft-breed ul{ grid-template-columns:repeat(2, minmax(0,1fr)); column-gap:clamp(20px,4.17vw,60px); }  /* [ref: eerste kolom in 2 subkolommen] */
.v2-ft-kolom a, .v2-ft-kolom button.cookie-settings-open{
  font-size:13.5px; font-weight:700; color:#fff; line-height:1.3;                      /* [ref: 13,5/700 wit] */
  background:none; border:0; padding:0; text-align:left; cursor:pointer;
}
.v2-ft-kolom a:hover, .v2-ft-kolom button:hover{ color:var(--bronze-light); }

/* ---- contactblokken + volg ons ---- */
.v2-ft-onder{ display:flex; gap:30px; align-items:flex-start; flex-wrap:wrap; }        /* [ref: gap 30] */
.v2-ft-gegevens{ display:flex; gap:clamp(24px, 4.17vw, 60px); flex:1 1 auto; flex-wrap:wrap; }  /* [ref: 60] */
.v2-ft-blok .v2-ft-titel{ font-size:15px; font-weight:700; color:#737373; margin:0 0 6px; }
.v2-ft-blok .v2-ft-regels{ display:flex; flex-direction:column; gap:6px; font-size:13.5px; line-height:1.3; color:#fff; }  /* [ref: 13,5, gap 6] */
.v2-ft-blok a{ color:#fff; }
.v2-ft-blok a:hover{ color:var(--bronze-light); }
.v2-ft-volg{ display:flex; align-items:center; gap:clamp(12px, 2.08vw, 30px); margin-left:auto; }  /* [ref: rechts, gap 30] */
.v2-ft-volg .v2-ft-titel{ font-size:12px; font-weight:700; color:#737373; margin:0; white-space:nowrap; }  /* [ref: 12/700 grijs] */
.v2-ft-social{ display:flex; gap:18px; list-style:none; margin:0; padding:0; }          /* [ref: 18] */
/* eigen merkkleuren met cirkelrand (vaste regel), niet het wit van de referentie */
.v2-ft-social .v2-si{ width:34px; height:34px; }
.v2-ft-social .v2-si svg{ width:58%; height:58%; }

/* ---- haarlijn, patroonstrook en onderbalk ---- */
.v2-ft-lijn{
  height:1px; background:rgba(255,255,255,.15);                                        /* [ref: wit op 15%] */
  margin:clamp(32px, 3.125vw, 45px) 0 0;                                               /* [ref: 45 boven de lijn, mobiel 32] */
}
.footer .footer-bottom{
  position:relative; display:block; text-align:center;                                  /* [ref: gecentreerd] */
  padding:16.75px 0;    /* [ref: 17,25; onze Manrope-regel meet 18,95 i.p.v. 18, samen exact 52,5 balkhoogte] */
  font-size:13.5px; color:#737373; line-height:1.33;
  margin-top:clamp(129px, 9.9vw, 142.5px);       /* [ref: 90 padding + 52,5 marge onder de lijn, mobiel 128,75]; de patroonstrook past hierin */
}
.footer .footer-bottom .cookie-settings-open{
  padding:0; font-size:13.5px; line-height:inherit;  /* [ref: onderbalkregel 18 hoog; de knop maakte hem 20] */
  vertical-align:baseline;
  /* Een <button> blijft altijd inline-block (display:inline wordt door de browser
     gecorrigeerd). Alleen met exact dezelfde line-height als de spans ernaast valt
     zijn baseline samen en rekt hij de regel niet op. */
}
.footer .footer-bottom a{ color:#737373; }
.footer .footer-bottom a:hover{ color:#fff; }
.footer .footer-bottom .fb-sep{ opacity:.5; margin:0 6px; }

@media (max-width:1023px){
  .v2-ft{ grid-template-columns:1fr; row-gap:36px; padding-top:40px; }
  .v2-ft-top{ flex-direction:column; gap:28px; }
  .v2-ft-kolom.v2-ft-breed ul{ grid-template-columns:1fr; }
  .v2-ft-onder{ flex-direction:column; gap:28px; }
  .v2-ft-gegevens{ flex-direction:column; gap:24px; }
  .v2-ft-volg{ margin-left:0; }
  .footer .footer-bottom{ margin-top:129px; }   /* [ref mobiel: 81,75 padding + 47 marge onder de lijn] */
}

/* ============================================================
   FOOTER MOBIEL — exact de opzet van de referentie op 390
   (gemeten 17-08-2026): eerst de linkkolommen, dan de gegevens
   en Volg ons, en HELEMAAL ONDERAAN gecentreerd het merkblok
   met logo, slagzin en knop.
   ============================================================ */
@media (max-width:1023px){
  .v2-ft{
    display:grid; grid-template-columns:1fr;
    row-gap:clamp(16px, 5.35vw, 24px);                    /* [ref: 20,875] */
    padding-top:clamp(36px, 13.6vw, 60px);                /* [ref: 53] */
  }
  /* volgorde omdraaien: menu's boven, merkblok onderaan */
  .v2-ft-menus{ order:1; gap:clamp(34px, 13.4vw, 56px); } /* [ref: 52,1] */
  .v2-ft-merk{
    order:2;
    align-items:center; text-align:center;                /* [ref: gecentreerd] */
    gap:clamp(24px, 10.3vw, 44px);                        /* [ref: 40] */
    padding-top:clamp(8px, 3vw, 14px);
  }
  .v2-ft-merk .v2-ft-logo img{ width:clamp(120px, 30vw, 150px); }   /* [ref: 82 vierkant beeldmerk] */
  .v2-ft-slogan{
    font-size:clamp(20px, 5.9vw, 26px);                   /* [ref: 22,96] */
    line-height:1.18; text-align:center;                  /* [ref: 27,1/22,96] */
  }

  /* linkkolommen onder elkaar, eerste kolom houdt twee subkolommen */
  .v2-ft-top{ flex-direction:column; gap:clamp(28px, 10.7vw, 46px); }   /* [ref: 41,75] */
  .v2-ft-kolom{ width:100%; }
  .v2-ft-kolom.v2-ft-breed ul{
    grid-template-columns:repeat(2, minmax(0,1fr));       /* [ref: 153 + 153] */
    column-gap:clamp(16px, 10.7vw, 42px);                 /* [ref: 41,75] */
  }
  .v2-ft-kolom .v2-ft-titel{ font-size:clamp(15px, 4.15vw, 17px); margin-bottom:14px; }  /* [ref: 16,175] */
  .v2-ft-kolom a, .v2-ft-kolom button.cookie-settings-open{
    font-size:clamp(15px, 4.12vw, 17px); line-height:1.3;  /* [ref: 16,09 / 20,9] */
  }
  .v2-ft-kolom ul{ gap:11px; }

  /* gegevensblokken naast elkaar met omloop, twee per rij */
  .v2-ft-onder{ flex-direction:column; gap:clamp(16px, 5.35vw, 22px); align-items:flex-start; }  /* [ref: 20,875] */
  .v2-ft-gegevens{ flex-direction:row; flex-wrap:wrap; gap:clamp(20px, 10.7vw, 42px); }          /* [ref: rij met omloop, 41,75] */
  .v2-ft-blok{ flex:0 1 auto; min-width:38%; }
  .v2-ft-blok .v2-ft-titel{ font-size:clamp(15px, 4.15vw, 17px); }
  .v2-ft-blok .v2-ft-regels{ font-size:clamp(14px, 3.9vw, 16px); gap:6px; }

  /* volg ons: op één regel, links uitgelijnd, grotere iconen */
  .v2-ft-volg{ margin-left:0; gap:clamp(14px, 5.35vw, 22px); }         /* [ref: 20,875] */
  .v2-ft-volg .v2-ft-titel{ font-size:clamp(13px, 3.6vw, 15px); }
  .v2-ft-social{ gap:clamp(12px, 4.6vw, 18px); }
  .v2-ft-social .v2-si{ width:40px; height:40px; }                      /* [ref: 40] */

  /* onderbalk: gecentreerd en groter, zoals daar */
  .footer .footer-bottom{
    padding:clamp(12px, 3.9vw, 16px) 0;                                 /* [ref: 15,35] */
    font-size:clamp(15px, 4.1vw, 17px);                                 /* [ref: 18] */
    line-height:1.33; margin-top:129px;   /* [ref mobiel: 81,75 padding + 47 marge onder de lijn = 128,75] */
  }
}

/* Gegevensblokken twee per rij, zoals de kantoorblokken in de referentie. */
@media (max-width:1023px){
  .v2-ft-blok{ flex:1 1 calc(50% - clamp(10px, 5.35vw, 21px)); min-width:0; }
  .v2-ft-blok .v2-ft-regels{ overflow-wrap:anywhere; }
  .footer .footer-bottom{ font-size:clamp(15px, 4.6vw, 18px); }   /* [ref: 18] */
}

/* De oude variant-1-regel verborg op de telefoon alle beleidslinks in de
   onderbalk, omdat ze toen ook in een Service-kolom stonden. Die kolom is er
   niet meer, dus dan zouden privacy, cookiebeleid, voorwaarden en sitemap op
   mobiel helemaal verdwijnen (en dat mag niet: ze moeten op elke pagina
   bereikbaar zijn). Hier zetten we ze weer aan. */
@media (max-width:600px){
  .footer .footer-bottom a:not(.fb-made){ display:inline !important; }
}
.footer .footer-bottom{ display:block; }
.footer .footer-bottom > *{ display:inline; }

/* Vinkjeslijst als blok centreren, regels links uitgelijnd zodat de vinkjes
   onder elkaar staan (vaste regel uit CLAUDE.md). */
@media (max-width:1023px){
}

/* Schuifbediening bij de testimonials exact gelijk aan die van de
   projectenslider: zelfde zone van 36px, zelfde afstand van 45px, zelfde
   witte cirkel van 36px met accentrand en punt van 7,5px. De diahoogte gaat
   iets omlaag zodat de sectie in één beeld blijft passen. */
.v2-testi-bar{ height:36px !important; margin-top:clamp(20px, calc(3.1 * var(--tt)), 45px) !important; }
.v2-testi-dot{ width:36px; height:36px; margin-top:-18px; border:3px solid var(--bronze); background:#fff; }
.v2-testi-dot::after{ width:7.5px; height:7.5px; margin:-3.75px 0 0 -3.75px; background:var(--bronze); }
.v2-testi-dia{ height:clamp(300px, calc(54.5 * var(--tt)), 848px); }
@media (max-width:1023px){
  .v2-testi-bar{ height:31px !important; }          /* zelfde verhouding als bij de projecten op mobiel */
  .v2-testi-dot{ width:31px; height:31px; margin-top:-15.5px; }
  .v2-testi-dia{ height:auto !important; }
}

/* ============================================================
   VARIANT 2 — DIENSTEN-OVERZICHT (naar /solutions/ van de referentie)
   Gemeten 17-08-2026 op 1440x900 en 390x844.
   Secties: hero met beeld links, thumbnailrijen, claimblok, kaartenslider,
   en de bestaande offerte-CTA. Elke sectie minimaal 100svh (DEEL D-regel).
   ============================================================ */
.v2-sol section, section.v2-sol{ min-height:100svh; }

/* De offerte-CTA is door de 100svh-regel hoger dan zijn referentieopbouw
   (band 586 bij de referentie); zonder centrering bleef er tot 440px zwart
   onder de knop hangen. Net als elke andere schermhoge sectie centreert de
   inhoud daarom verticaal; de halve cirkel blijft als overgangsmotief
   bovenaan hangen. Op lage schermen schuift de kop vanzelf weer achter de
   cirkel, zoals de referentie hem toont. */
.v2-sol .hp-cta.v2-cta{
  display:flex; flex-direction:column; justify-content:center;
}
.v2-sol .hp-cta.v2-cta .v2-cta-inner{
  padding-top:0;
}
/* dd-pagina's: op mobiel zijn de secties bewust inhoudshoog (min-height:0),
   daar blijft de referentieopbouw met de kop op 123; alleen desktop centreert. */
@media (min-width:1024px){
  .v2-dd .hp-cta.v2-cta{ display:flex; flex-direction:column; justify-content:center; }
  .v2-dd .hp-cta.v2-cta .v2-cta-inner{ padding-top:0; }
}

/* ---- 1. hero met beeld links ---- */
.v2-solhero{
  position:relative; display:grid;
  grid-template-columns:47.1vw 47.1vw;                 /* [ref: 678 + 678 op 1440] */
  gap:5.83vw;                                          /* [ref: 84] */
  padding:0 0 clamp(28px, 4.17vw, 60px) !important;    /* [ref: 0 / 60] */
  align-items:center; min-height:100svh;
}
.v2-solhero-beeld{ position:relative; align-self:stretch; overflow:hidden; }
.v2-solhero-beeld img{ width:100%; height:100%; object-fit:cover; display:block; }
.v2-solhero-inhoud{ max-width:41.7vw; }                /* [ref: tekstkolom 600 breed] */
.v2-sol h1.v2-solhero-kop{
  font-size:clamp(30px, 4.17vw, 60px);                 /* [ref: 60] */
  line-height:1.2;                                     /* [ref: 72/60] */
  text-align:center; color:var(--brand-dark);
  margin:0 0 clamp(14px, 2.08vw, 30px);
}
.v2-solhero-tekst{
  font-size:clamp(15px, 1.458vw, 21px);                /* [ref: 21] */
  line-height:1.4; color:var(--text); margin:0 0 clamp(16px, 2.24vw, 32px);
}
.v2-sol .v2-sol-knop{
  background:var(--bronze) !important; background-image:none !important;
  color:#fff !important; border:0 !important; box-shadow:none !important;
  padding:clamp(9px, .833vw, 12px) clamp(16px, 1.5625vw, 22.5px) !important;
  font-size:clamp(14px, 1.25vw, 18px) !important;
  border-radius:0 clamp(9px, 1.04vw, 15px) !important; min-height:0 !important;
}
.v2-sol .v2-sol-knop:hover{ background:var(--bronze-dark) !important; }

/* ---- 2. thumbnailrijen ---- */
.v2-solthumb{
  background:#F8FAFC;
  padding:clamp(32px, 4.17vw, 60px) 0 !important;      /* [ref: 60/60] */
}
.v2-sol-inner{ width:100%; max-width:1305px; margin:0 auto; padding:0 clamp(18px, 2.08vw, 30px); }
.v2-sol h2.v2-solthumb-kop{
  font-size:clamp(30px, 5.2vw, 75px);                  /* [ref: 75] */
  line-height:1.2; color:var(--brand-dark);            /* [ref: 90/75] */
  margin:0 0 clamp(14px, 1.6vw, 24px);
}
.v2-solthumb-tand{                                     /* onze haaietand op de accentlijn */
  display:block; width:100%; height:calc(var(--lijn-d) + var(--tand-h));
  background:var(--gold, #F59E0B);
  clip-path:polygon(0 0, 100% 0, 100% var(--lijn-d),
    calc(50% + var(--tand-hw)) var(--lijn-d), 50% calc(var(--lijn-d) + var(--tand-h)),
    calc(50% - var(--tand-hw)) var(--lijn-d), 0 var(--lijn-d));
  margin:0 0 clamp(20px, 3.3vw, 48px);
}
.v2-solthumb-rij{
  display:grid; grid-template-columns:19.8vw 1fr;      /* [ref: 285 + 888,75] */
  gap:clamp(18px, 4.95vw, 71px);                       /* [ref: 71,25] */
  align-items:start;
  padding:clamp(20px, 2.6vw, 38px) 0;
}
.v2-solthumb-rij + .v2-solthumb-rij{ border-top:1px solid rgba(17,32,46,.10); }
.v2-solthumb-rij img{ width:100%; aspect-ratio:285/236; object-fit:cover; display:block; }  /* [ref: 285x236] */
.v2-sol h3.v2-solthumb-titel{
  font-size:clamp(20px, 2.29vw, 33px);                 /* [ref: 33] */
  line-height:1.2; color:var(--brand-dark);            /* [ref: 39,6/33] */
  margin:0 0 clamp(8px, 1.04vw, 15px);
}
.v2-solthumb-rij p{ font-size:clamp(15px, 1.458vw, 21px); line-height:1.4; color:var(--text); margin:0 0 14px; }
.v2-solthumb-rij .v2-sol-link{ font-weight:700; color:var(--bronze); }
.v2-solthumb-rij .v2-sol-link:hover{ text-decoration:underline; }

/* ---- 3. claimblok ---- */
.v2-solclaim{
  position:relative; overflow:hidden; background:#fff;
  padding:clamp(48px, 10.4vw, 150px) 0 clamp(36px, 7.3vw, 105px) !important;   /* [ref: 150 / 105] */
  display:flex; align-items:center;
}
.v2-solclaim-inner{ width:100%; max-width:840px; margin:0 auto; padding:0 clamp(18px, 2.08vw, 30px); text-align:center; }
.v2-solclaim-eyebrow{
  font-size:clamp(16px, 1.667vw, 24px); line-height:1.4;   /* [ref: 24/33,6] */
  color:#737373; font-weight:700; margin:0 0 clamp(12px, 1.6vw, 24px);
}
.v2-sol h2.v2-solclaim-kop{
  font-size:clamp(20px, 2.29vw, 33px); line-height:1.2;    /* [ref: h4 33/39,6] */
  color:var(--brand-dark); margin:0;
}
.v2-solclaim-merk{                                        /* [ref: merkteken 306x288 op left -127,5] */
  position:absolute; z-index:0; pointer-events:none;
  left:-8.85vw; top:50%; transform:translateY(-50%);
  width:21.25vw; opacity:.06; filter:grayscale(1);
}

/* ---- 4. kaartenslider op zwart ---- */
.v2-solcards{
  background:#000; color:#fff;
  padding:clamp(32px, 4.17vw, 60px) 0 !important;         /* [ref: 60/60] */
  display:flex; flex-direction:column; justify-content:center;
}
.v2-sol h2.v2-solcards-kop{
  font-size:clamp(30px, 4.17vw, 60px); line-height:1.2;   /* [ref: 60/72] */
  color:#fff !important; text-align:center; margin:0 0 clamp(20px, 3.1vw, 45px);
}
.v2-sl-spoor{
  display:flex; gap:clamp(12px, 1.67vw, 24px);
  overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth;
  overscroll-behavior-x:contain; scrollbar-width:none; cursor:grab;
}
.v2-sl-spoor::-webkit-scrollbar{ display:none; }
.v2-sl-spoor.is-slepen{ cursor:grabbing; scroll-behavior:auto; scroll-snap-type:none !important; }
.v2-sl-kaart{
  flex:0 0 clamp(240px, 27.4vw, 395px); scroll-snap-align:start;   /* [ref: kaart 395 breed] */
  background:#0d0d0d; border-radius:0 clamp(18px, 2.6vw, 37.5px);
  padding:clamp(20px, 2.6vw, 38px); text-align:center;
  display:flex; flex-direction:column; align-items:center; gap:clamp(12px, 1.6vw, 22px);
}
.v2-sl-kaart img{
  width:clamp(80px, 8.54vw, 123px); height:clamp(80px, 8.54vw, 123px);   /* [ref: 123 rond] */
  border-radius:50%; object-fit:cover; background:#fff;
}
.v2-sl-kaart h3{ font-size:clamp(17px, 1.458vw, 21px); line-height:1.3; color:#fff; margin:0; }
.v2-sl-kaart p{ font-size:clamp(14px, 1.25vw, 18px); line-height:1.4; color:rgba(255,255,255,.8); margin:0; }
/* zelfde schuifbediening als elders */
.v2-sl-bar{ position:relative; height:36px; margin-top:clamp(20px, 3.1vw, 45px); display:flex; align-items:center; }
.v2-sl-bar::before{ content:""; position:absolute; left:0; right:0; top:50%; height:1px; background:rgba(255,255,255,.25); }
.v2-sl-dot{
  appearance:none; position:absolute; left:0; top:50%; margin-top:-18px;
  width:36px; height:36px; border-radius:50%; background:#fff; border:3px solid var(--bronze);
  cursor:grab; padding:0;
}
.v2-sl-dot::after{ content:""; position:absolute; left:50%; top:50%; width:7.5px; height:7.5px;
  margin:-3.75px 0 0 -3.75px; border-radius:50%; background:var(--bronze); }

/* ---- mobiel [ref 390] ---- */
@media (max-width:1023px){
  /* De min-height:0-regels hieronder MOETEN winnen van `.v2-sol section`
     (specificiteit 0,1,1); een kale klasse (0,1,0) verliest die strijd,
     waardoor de secties op mobiel toch schermhoog werden en de solhero een
     wit gat van 209px tussen foto en tekst kreeg. Vandaar `.v2-sol` erbij. */
  .v2-sol .v2-solhero, .v2-sol .v2-solthumb, .v2-sol .v2-solclaim, .v2-sol .v2-solcards{ min-height:0; }
  .v2-solhero{ grid-template-columns:1fr; gap:clamp(20px, 9.35vw, 36px); padding-bottom:clamp(24px, 10.7vw, 42px) !important; min-height:0; }
  .v2-solhero-beeld{ height:clamp(220px, 60vw, 320px); }
  .v2-solhero-inhoud{ max-width:none; padding:0 clamp(14px, 4.4vw, 20px); }
  .v2-sol h1.v2-solhero-kop{ font-size:clamp(26px, 8.74vw, 40px); }      /* [ref: 34,1 op 390] */
  .v2-solhero-tekst{ font-size:clamp(15px, 4.24vw, 18px); }              /* [ref: 16,5] */
  .v2-solthumb{ padding:clamp(24px, 10.7vw, 42px) 0 !important; min-height:0; }
  .v2-sol h2.v2-solthumb-kop{ font-size:clamp(28px, 10.9vw, 44px); }     /* [ref: 42,6] */
  .v2-solthumb-rij{ grid-template-columns:1fr; gap:clamp(12px, 4.4vw, 18px); }
  .v2-solthumb-rij img{ aspect-ratio:348/288; }                          /* [ref: 348x288 op 390] */
  .v2-sol h3.v2-solthumb-titel{ font-size:clamp(19px, 5.7vw, 24px); }
  .v2-solclaim{ padding:clamp(36px, 24.3vw, 95px) 0 clamp(28px, 16.3vw, 64px) !important; min-height:0; }
  .v2-solclaim-eyebrow{ font-size:clamp(15px, 4.77vw, 19px); }           /* [ref: 18,6] */
  .v2-solclaim-merk{ width:52vw; left:-22vw; }
  .v2-solcards{ padding:clamp(24px, 10.7vw, 42px) 0 !important; min-height:0; }
  .v2-sol h2.v2-solcards-kop{ font-size:clamp(26px, 8.74vw, 40px); }     /* [ref: 34,1] */
  .v2-sl-kaart{ flex:0 0 78vw; }
  .v2-sl-bar{ height:31px; }
  .v2-sl-dot{ width:31px; height:31px; margin-top:-15.5px; }
}

/* Zijmarge van de dienstenpagina gelijk aan de referentie: 21px op 390
   (inhoud 348 breed), 30px vanaf 1440. */
.v2-sol-inner{ padding:0 clamp(21px, 2.08vw, 30px); }

/* ============================================================
   VARIANT 2 — DIENSTDETAIL (naar /solutions/<detail> van de referentie)
   Gemeten 17-08-2026 op 1440x900 en 390x844. Negen secties; de
   projecten- en tipsslider vallen weg bij minder dan twee items.
   ============================================================ */
.v2-dd section{ min-height:100svh; }
.v2-dd .v2-dd-inhoud, .v2-dd .v2-dd-projecten, .v2-dd .v2-dd-links{ min-height:100svh; }

/* 1. hero: zelfde opzet als het diensten-overzicht */
.v2-dd-hero{
  display:grid; grid-template-columns:47.1vw 47.1vw; gap:5.83vw;   /* [ref: 678+678, 84] */
  align-items:center; padding:0 0 clamp(28px, 4.17vw, 60px) !important;
}
.v2-dd-hero-beeld{ align-self:stretch; overflow:hidden; }
.v2-dd-hero-beeld img{ width:100%; height:100%; object-fit:cover; display:block; }
.v2-dd-hero-inhoud{ max-width:41.7vw; }
.v2-dd h1{
  font-size:clamp(30px, 4.17vw, 60px); line-height:1.2;            /* [ref: 60/72] */
  text-align:center; color:var(--brand-dark); margin:0 0 clamp(14px, 2.08vw, 30px);
}
.v2-dd-intro{ font-size:clamp(15px, 1.458vw, 21px); line-height:1.4; color:var(--text); margin:0 0 clamp(16px, 2.24vw, 32px); }

/* 2. claimblok */
.v2-dd-claim{
  position:relative; overflow:hidden; background:#fff;
  padding:clamp(48px, 10.4vw, 150px) 0 clamp(36px, 7.3vw, 105px) !important;   /* [ref: 150/105] */
  display:flex; align-items:center;
}
.v2-dd-claim-inner{ width:100%; max-width:840px; margin:0 auto; padding:0 clamp(21px, 2.08vw, 30px); text-align:center; }
.v2-dd-eyebrow{ font-size:clamp(16px, 1.667vw, 24px); line-height:1.4; color:#737373; font-weight:700; margin:0 0 clamp(12px, 1.6vw, 24px); }
.v2-dd h2.v2-dd-claim-kop{ font-size:clamp(20px, 2.29vw, 33px); line-height:1.2; color:var(--brand-dark); margin:0; }

/* 3. inhoudsblok: de SEO-kern, lengte mag per klant verschillen */
.v2-dd-inhoud{
  background:#F8FAFC;
  padding:clamp(40px, 7.3vw, 105px) 0 clamp(40px, 7.3vw, 105px) !important;
  display:flex; align-items:center;
}
.v2-dd-inhoud-inner{ width:100%; max-width:1000px; margin:0 auto; padding:0 clamp(21px, 2.08vw, 30px); }
.v2-dd h2.v2-dd-kop{
  font-size:clamp(28px, 3.47vw, 50px); line-height:1.15;
  color:var(--brand-dark); margin:0 0 clamp(12px, 1.4vw, 20px);
}
.v2-dd-tand{                                                        /* onze haaietand onder de sectiekop */
  display:block; width:100%; height:calc(var(--lijn-d) + var(--tand-h));
  background:var(--gold, #F59E0B);
  clip-path:polygon(0 0, 100% 0, 100% var(--lijn-d),
    calc(50% + var(--tand-hw)) var(--lijn-d), 50% calc(var(--lijn-d) + var(--tand-h)),
    calc(50% - var(--tand-hw)) var(--lijn-d), 0 var(--lijn-d));
  margin:0 0 clamp(20px, 2.8vw, 40px);
}
.v2-dd-tekst h3{
  font-size:clamp(19px, 1.94vw, 28px); line-height:1.25; color:var(--brand-dark);
  margin:clamp(20px, 2.4vw, 34px) 0 clamp(8px, .9vw, 13px);
}
.v2-dd-tekst p{ font-size:clamp(15px, 1.25vw, 18px); line-height:1.65; color:var(--text); margin:0 0 1em; }
.v2-dd-tekst > *:first-child{ margin-top:0; }
/* vier groene vinkjes, blok gecentreerd met de regels links (vaste regel) */
.v2-dd-vinkjes{
  list-style:none; padding:0; margin:clamp(18px, 2.4vw, 34px) 0 0;
  display:grid; gap:10px; width:fit-content;
}
.v2-dd-vinkjes li{ display:flex; align-items:flex-start; gap:10px; font-size:clamp(15px, 1.25vw, 18px); line-height:1.5; color:var(--brand-dark); }
.v2-dd-vinkjes svg{ width:18px; height:18px; flex:0 0 auto; color:#22c55e; margin-top:3px; }  /* vinkjes altijd groen */

/* 4. image-links: half beeld, half lijst met de andere diensten */
.v2-dd-links{
  display:grid; grid-template-columns:50vw 50vw;                    /* [ref: 720 + 720] */
  align-items:stretch; padding:0 !important;
}
.v2-dd-links-lijst{ display:flex; flex-direction:column; justify-content:center; padding:clamp(28px, 4.17vw, 60px) clamp(21px, 4.17vw, 60px); }
.v2-dd h2.v2-dd-links-kop{ font-size:clamp(24px, 2.78vw, 40px); line-height:1.2; color:var(--brand-dark); margin:0 0 clamp(14px, 1.8vw, 26px); }
.v2-dd-links-lijst ul{ list-style:none; margin:0; padding:0; display:grid; gap:0; }
.v2-dd-links-lijst li + li{ border-top:1px solid rgba(17,32,46,.12); }
.v2-dd-links-lijst a{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:clamp(12px, 1.25vw, 18px) 0;
  font-size:clamp(16px, 1.458vw, 21px); font-weight:700; color:var(--brand-dark);
}
.v2-dd-links-lijst a:hover{ color:var(--bronze); }
.v2-dd-links-lijst a span[aria-hidden]{ color:var(--bronze); }
.v2-dd-links-beeld{ overflow:hidden; border-radius:0 0 0 clamp(24px, 4.17vw, 60px); }   /* [ref: 0 0 0 60px] */
.v2-dd-links-beeld img{ width:100%; height:100%; object-fit:cover; display:block; }

/* 5. projectenslider op zwart */
.v2-dd-projecten{
  background:#000; color:#fff;
  padding:clamp(40px, 7.3vw, 105px) 0 clamp(20px, 2.08vw, 30px) !important;   /* [ref: 105/30] */
  display:flex; flex-direction:column; justify-content:center;
}
.v2-dd h2.v2-dd-projecten-kop{
  font-size:clamp(30px, 5.2vw, 75px); line-height:1.2;             /* [ref: 75/90 wit links] */
  color:#fff !important; margin:0 0 clamp(20px, 3.4vw, 49px);
}
.v2-dd-projecten .v2-sl-kaart{
  flex:0 0 clamp(260px, 42.3vw, 609px);                            /* [ref: kaart 609] */
  background:none; padding:0; text-align:left; align-items:stretch;
}
.v2-dd-projecten .v2-sl-kaart img{
  width:100%; height:auto; aspect-ratio:609/414; border-radius:0;  /* [ref: 609x414] */
}
.v2-dd-projecten .v2-sl-kaart h3{ text-align:left; }
.v2-dd-projecten .v2-sl-spoor{ gap:clamp(16px, 3.82vw, 55px); }    /* [ref: 55] */

/* 6. USP-kaarten op zwart (in plaats van hun awards) */
.v2-dd-usp{ background:#000; color:#fff; padding:clamp(32px, 4.17vw, 60px) 0 !important; display:flex; flex-direction:column; justify-content:center; }
.v2-dd h2.v2-dd-usp-kop{ font-size:clamp(30px, 4.17vw, 60px); line-height:1.2; color:#fff !important; text-align:center; margin:0 0 clamp(20px, 3.1vw, 45px); }

/* 7. tips-slider */
.v2-dd-tips{ background:#fff; padding:clamp(40px, 6.25vw, 90px) 0 !important; display:flex; flex-direction:column; justify-content:center; }
.v2-dd h2.v2-dd-tips-kop{ font-size:clamp(28px, 3.47vw, 50px); line-height:1.2; color:var(--brand-dark); margin:0 0 clamp(20px, 3.1vw, 45px); }
.v2-dd-tips .v2-sl-kaart{ background:#F8FAFC; color:var(--brand-dark); text-align:left; align-items:stretch; }
.v2-dd-tips .v2-sl-kaart img{ width:100%; height:auto; aspect-ratio:16/10; border-radius:0; }
.v2-dd-tips .v2-sl-kaart h3, .v2-dd-tips .v2-sl-kaart p{ color:var(--brand-dark); text-align:left; }
.v2-dd-tips .v2-sl-bar::before{ background:#E1E1E1; }

/* secties die wegvallen laten geen gat achter */
.v2-dd [hidden]{ display:none !important; }

/* ---- mobiel ---- */
@media (max-width:1023px){
  .v2-dd section, .v2-dd .v2-dd-inhoud, .v2-dd .v2-dd-projecten, .v2-dd .v2-dd-links{ min-height:0; }
  .v2-dd-hero{ grid-template-columns:1fr; gap:clamp(20px, 9.35vw, 36px); }
  .v2-dd-hero-beeld{ height:clamp(220px, 60vw, 320px); }
  .v2-dd-hero-inhoud{ max-width:none; padding:0 clamp(21px, 5.4vw, 24px); }
  .v2-dd h1{ font-size:clamp(26px, 8.74vw, 40px); }
  .v2-dd-links{ grid-template-columns:1fr; }
  .v2-dd-links-beeld{ height:clamp(200px, 94.6vw, 380px); border-radius:0 0 0 clamp(20px, 8.25vw, 32px); }  /* [ref: 390x369, r 32,2] */
  .v2-dd-links-lijst{ padding:clamp(24px, 8vw, 34px) clamp(21px, 5.4vw, 24px); }
  .v2-dd h2.v2-dd-projecten-kop{ font-size:clamp(28px, 10.9vw, 44px); }   /* [ref: 42,6/51,15] */
  .v2-dd-projecten{ padding:clamp(32px, 16.3vw, 64px) 0 clamp(14px, 5.35vw, 21px) !important; }  /* [ref: 63,5/20,9] */
  .v2-dd-projecten .v2-sl-kaart{ flex:0 0 73vw; }                          /* [ref: 286/390] */
  .v2-dd-projecten .v2-sl-spoor{ gap:20px; }                               /* [ref: 20] */
  .v2-dd-vinkjes{ width:auto; }
}

/* ============================================================
   VARIANT 2 — PROJECTEN-OVERZICHT (filterbalk + raster)
   Gemeten aan randoco.com/projects/ op 1440x900 en 390x844.
   Titelsectie 150/30, lijstsectie 30/287, container 1245 (1305
   met 30 padding), kaartbeeld 609x414 in twee kolommen met 27
   ertussen. Op 390: container 348, beeld 328x223.
   De kaart zelf is HETZELFDE component als op de homepage
   (.v2-cs); alleen de stapeling verschilt, want twee liggende
   kaarten naast elkaar passen niet in 1245 (DEEL C-20).
   ============================================================ */
.v2-wrap{
  width:100%; max-width:1305px; margin-inline:auto;      /* [ref: wrapper 1305] */
  padding-inline:clamp(21px, 2.08vw, 30px);              /* [ref: 30 / 21] */
}

/* ---------- titelsectie ---------- */
.v2-pkop{
  padding:clamp(95px, 10.42vw, 150px) 0 clamp(21px, 2.08vw, 30px);  /* [ref: 150/30 - 94,8/20,9] */
  background:var(--bg);
}
.v2-pkop h1{
  font-size:clamp(61px, 9.375vw, 135px);                 /* [ref: 135 - 61,4] */
  line-height:1;                                         /* [ref: 135/135] */
  text-align:center;                                     /* [ref: center] */
  color:var(--brand-dark);
  margin:0;
  letter-spacing:normal;
}
.v2-pkop-intro{
  max-width:840px; margin:clamp(18px, 2.08vw, 30px) auto 0;
  text-align:center;                                     /* eigen regel: contentblok gecentreerd */
  font-size:clamp(16px, 1.25vw, 18px); line-height:1.4;  /* [ref-familie: 18/25,2] */
  color:var(--text);
}

/* ---------- lijstsectie ---------- */
.v2-plijst{
  padding:clamp(21px, 2.08vw, 30px) 0 clamp(149px, 19.93vw, 287px);  /* [ref: 30/287 - 20,9/149] */
  min-height:100svh;                                     /* vaste variantregel: elke sectie schermhoog */
  background:var(--bg);
}

/* ---------- filterbalk ---------- */
.v2-pf{
  display:flex; align-items:center; justify-content:space-between;
  gap:clamp(10px, .73vw, 10.5px);                        /* [ref: 10,5] */
  flex-wrap:wrap;
  position:relative;
}
.v2-pf-toggle{
  appearance:none; background:none; border:0; cursor:pointer;
  display:inline-flex; align-items:center; gap:12px;
  padding:18px 0;                                        /* [ref: 18px 0] */
  font-family:var(--font-body);
  font-size:clamp(16.35px, 1.25vw, 18px);                /* [ref: 18 - 16,35] */
  font-weight:700;                                       /* [ref: 700] */
  color:var(--bronze);                                   /* accentrol [ref: gevulde accentkleur] */
  line-height:1.4;
}
.v2-pf-toggle .v2-mm-tabplus{ width:14px; height:14px; color:currentColor; }
.v2-pf-toggle[aria-expanded="true"] .v2-mm-tabplus::after{ opacity:0; }   /* plus wordt min */
.v2-pf-wis{
  appearance:none; cursor:pointer;
  display:inline-flex; align-items:center; gap:8px;
  padding:12px clamp(16px, 1.5625vw, 22.5px);            /* [ref: 12 / 22,5] */
  border:2px solid var(--bronze);                        /* [ref: 2px effen] */
  border-radius:0 15px;                                  /* [ref: 0px 15px] */
  background:var(--bronze); color:#fff;
  font-family:var(--font-body); font-weight:700;
  font-size:clamp(16px, 1.25vw, 18px);                   /* [ref: 18/700] */
  line-height:1.4;
  transition:background .25s var(--ease), transform .25s var(--ease);
}
.v2-pf-wis:hover{ background:var(--bronze-dark); border-color:var(--bronze-dark); transform:translateY(-2px); }
.v2-pf-wis[hidden]{ display:none; }

/* ---------- uitklappaneel ---------- */
.v2-pf-paneel{
  width:100%;
  overflow:hidden;
  max-height:0; opacity:0; visibility:hidden;
  transition:max-height .45s var(--ease), opacity .3s var(--ease), visibility .3s;
}
.v2-pf-paneel.is-open{ max-height:1200px; opacity:1; visibility:visible; }
.v2-pf-paneel[hidden]{ display:block; }                  /* animatie i.p.v. harde display-sprong */
.v2-pf-binnen{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));  /* blijft vol bij 2 én bij 5 groepen */
  gap:clamp(24px, 2.6vw, 37.5px);
  padding:clamp(22px, 2.34vw, 33.75px) 0 clamp(16px, 1.56vw, 22.5px);
  border-top:var(--lijn-d) solid var(--bronze);          /* vaste variantregel: accentlijn 3px */
  position:relative;
}
/* onze haaietand op de accentlijn, punt omlaag */
.v2-pf-binnen::before{
  content:""; position:absolute; left:0; right:0; top:0;
  height:calc(var(--lijn-d) + var(--tand-h)); background:var(--bronze);
  clip-path:polygon(0 0, 100% 0, 100% var(--lijn-d),
    calc(50% + var(--tand-hw)) var(--lijn-d), 50% calc(var(--lijn-d) + var(--tand-h)),
    calc(50% - var(--tand-hw)) var(--lijn-d), 0 var(--lijn-d));
  pointer-events:none;
}
.v2-pf-groep{ min-width:0; }
.v2-pf-groep > span{
  display:block; margin:0 0 14px;
  font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.2px;  /* [ref: 12/800/upper/.2px] */
  color:var(--brand-dark);
}
.v2-pf-opt{
  display:flex; align-items:center; gap:12px;
  padding:6px 0;                                         /* [ref: regelpitch 35 bij 23 regelhoogte] */
  font-size:clamp(15px, 1.146vw, 16.5px);                /* [ref: 16,5] */
  line-height:1.4;                                       /* [ref: 23,1/16,5] */
  font-weight:500;                                       /* [ref: 500] */
  color:var(--text); cursor:pointer;
}
.v2-pf-opt input{
  appearance:none; flex:0 0 auto; width:20px; height:20px;
  border:2px solid #C9C9C9; border-radius:3px; background:#fff;
  cursor:pointer; position:relative; margin:0;
  transition:border-color .25s, background .25s;
}
.v2-pf-opt input:checked{ background:#22C55E; border-color:#22C55E; }  /* vaste regel: vinkjes groen */
.v2-pf-opt input:checked::after{
  content:""; position:absolute; left:5px; top:1px; width:5px; height:10px;
  border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg);
}
.v2-pf-opt input:focus-visible{ outline:2px solid var(--bronze); outline-offset:3px; }
.v2-pf-opt:hover{ color:var(--bronze); }
.v2-pf-opt .aantal{ margin-left:auto; color:#737373; font-size:.9em; }

/* ---------- actieve filters + teller ---------- */
.v2-pf-status{
  display:flex; align-items:center; flex-wrap:wrap;
  gap:10px clamp(10px, .73vw, 10.5px);
  padding:clamp(18px, 1.87vw, 27px) 0 0;
}
.v2-pf-teller{
  font-size:clamp(15px, 1.25vw, 18px); line-height:1.4;   /* [ref-familie: 18/25,2] */
  color:#737373;
}
.v2-pf-chip{
  appearance:none; cursor:pointer;
  display:inline-flex; align-items:center; gap:8px;
  padding:7px 14px; border:1px solid var(--bronze); border-radius:0 12px;
  background:transparent; color:var(--brand-dark);
  font-family:var(--font-body); font-size:14px; line-height:1.4;
  transition:background .25s var(--ease), color .25s var(--ease);
}
.v2-pf-chip:hover{ background:var(--bronze); color:#fff; }
.v2-pf-chip svg{ width:11px; height:11px; }

/* ---------- raster ---------- */
.v2-pgrid{
  display:grid;
  grid-template-columns:repeat(2, 1fr);                  /* [ref: 2 kolommen van 609] */
  column-gap:27px;                                       /* [ref: 1245 - 2x609 = 27] */
  row-gap:clamp(42px, 4.17vw, 60px);
  padding-top:clamp(24px, 2.6vw, 37.5px);
}
/* Bij een oneven laatste rij loopt de laatste kaart niet over de volle
   breedte: dan zou hij twee keer zo groot worden als de rest. Hij blijft
   op kolombreedte staan en het raster blijft links uitgelijnd. */
.v2-pgrid > .v2-cs{ width:100%; }
/* Bij nul resultaten moet het raster ECHT weg: display:grid wint anders van
   het hidden-attribuut en dan blijft er een gat van de volle rasterhoogte
   staan waar de lege staat in hoort. */
.v2-pgrid[hidden]{ display:none; }
.v2-pgrid > .v2-cs[hidden]{ display:none; }

/* ---------- kaart in rasterstand (zelfde component als de homepage) ---------- */
.v2-cs--grid{
  flex-direction:column; gap:clamp(14px, 1.25vw, 18px);  /* [ref: 16 tussen beeld en titel] */
  width:100%;
}
.v2-cs--grid .v2-cs-img{ width:100%; }
.v2-cs--grid .v2-cs-img img{ aspect-ratio:609/414; }     /* [ref: 609x414] */
.v2-cs--grid .v2-cs-info{ width:100%; min-width:0; }
.v2-cs--grid .v2-cs-title{ margin-bottom:clamp(10px, 1.04vw, 15px); }
.v2-cs--grid .v2-cs-loc{ margin-top:6px; display:block; }

/* ---------- lege staat ---------- */
.v2-pleeg{
  display:none;
  min-height:clamp(260px, 27.8vw, 400px);                /* geen gat: vult de plek van het raster */
  margin-top:clamp(24px, 2.6vw, 37.5px);
  padding:clamp(36px, 4.17vw, 60px) clamp(24px, 2.6vw, 37.5px);
  border:1px solid #E1E1E1; border-radius:0 37.5px;      /* zelfde asymmetrie als de kaarten */
  background:var(--bg-alt, #F8FAFC);
  flex-direction:column; align-items:center; justify-content:center;
  text-align:center;                                     /* vaste regel: contentblok gecentreerd */
}
.v2-pleeg.is-zichtbaar{ display:flex; }
.v2-pleeg h2{
  font-size:clamp(24px, 2.08vw, 30px); line-height:1.2;
  color:var(--brand-dark); margin:0 0 12px;
}
.v2-pleeg p{
  font-size:clamp(15px, 1.25vw, 18px); line-height:1.4;
  color:var(--text); margin:0 0 clamp(18px, 1.87vw, 27px); max-width:52ch;
}

/* ---------- tablet ---------- */
@media (max-width:1100px){
  .v2-pgrid{ column-gap:21px; }
}
/* ---------- mobiel ---------- */
@media (max-width:1023px){
  .v2-pgrid{
    grid-template-columns:1fr;                           /* [ref: 1 kolom, beeld 328 in 348] */
    row-gap:clamp(34px, 8.7vw, 44px);
  }
  .v2-cs--grid .v2-cs-img img{ aspect-ratio:328/223; }   /* [ref mobiel: 328x223] */
  .v2-cs--grid .v2-cs-loc{ display:block; }              /* op het overzicht wél de plaats tonen */
  .v2-pf{ gap:12px; }
  .v2-pf-toggle{ flex:1 1 auto; justify-content:space-between; }
  .v2-pf-binnen{ grid-template-columns:1fr; }            /* vaste mobielregel: één kolom voor tekstblokken */
  .v2-pf-groep + .v2-pf-groep{ padding-top:6px; }
}
@media (prefers-reduced-motion: reduce){
  .v2-pf-paneel{ transition:none; }
}
/* zonder JavaScript blijft alles zichtbaar en het paneel gewoon open te lezen */
.no-js .v2-pf{ display:none; }
.no-js .v2-pgrid{ padding-top:clamp(24px, 2.6vw, 37.5px); }

/* ============================================================
   VARIANT 2 — PROJECTDETAILPAGINA
   Gemeten aan randoco.com/project/st-george-place/ op 1440x900
   en 390x844. Hero 150/60 met ronde foto 328, galerijslider
   105/105 met dia's 1050x505, en gegevensrijen 0/105 met een
   label van 60/72 en een getal van 75/90.
   ============================================================ */

/* ---------- 1. hero ---------- */
.v2-pd-hero{
  padding:clamp(95px, 10.42vw, 150px) 0 clamp(42px, 4.17vw, 60px);  /* [ref: 150/60 - 94,8/41,75] */
  min-height:100svh; display:flex; align-items:center;
  background:var(--bg);
}
.v2-pd-hero-grid{
  display:grid; grid-template-columns:1fr auto; align-items:center;
  gap:clamp(24px, 4.17vw, 60px); width:100%;
}
.v2-pd-eyebrow{
  display:block; margin:0 0 clamp(12px, 1.25vw, 18px);
  font-size:clamp(14px, 1.146vw, 16.5px); line-height:1.4;   /* [ref: 16,5/23,1] */
  font-weight:500; color:var(--bronze);                      /* accentrol */
  text-transform:none;
}
.v2-pd-hero h1{
  font-size:clamp(42.6px, 5.21vw, 75px);                     /* [ref: 75 - 42,6] */
  line-height:1.2;                                           /* [ref: 90/75 en 51,15/42,6] */
  font-weight:700; color:var(--brand-dark);
  margin:0; letter-spacing:normal;
}
.v2-pd-plaats{
  display:flex; align-items:center; gap:8px;
  margin:clamp(14px, 1.46vw, 21px) 0 0;
  font-size:clamp(15px, 1.25vw, 18px); line-height:1.4;      /* [ref: 18/25,2] */
  color:#737373;
}
.v2-pd-plaats svg{ width:18px; height:18px; flex:0 0 auto; }
.v2-pd-rond{
  width:clamp(130px, 22.78vw, 328px);                        /* [ref: 328 - 130] */
  aspect-ratio:1; border-radius:50%; overflow:hidden;
  justify-self:end; margin-right:clamp(0px, 4.65vw, 67px);   /* [ref: foto begint op 948] */
}
.v2-pd-rond img{ width:100%; height:100%; object-fit:cover; display:block; }

/* ---------- 2. galerij ---------- */
.v2-pd-gal{
  padding:clamp(63.5px, 7.29vw, 105px) 0;                    /* [ref: 105/105 - 63,5/63,5] */
  min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  background:var(--bg);
}
.v2-pd-gal .v2-sl-spoor{
  display:flex; gap:clamp(12px, 3.06vw, 44px);               /* [ref: pitch 1094 - dia 1050 = 44] */
  overflow-x:auto; scroll-snap-type:x mandatory;
  padding-left:max(21px, calc((100vw - 1245px)/2));          /* eerste dia op de containerrand */
  padding-right:max(21px, calc((100vw - 1245px)/2));
  scroll-padding-left:max(21px, calc((100vw - 1245px)/2));
  scrollbar-width:none; cursor:grab;
}
.v2-pd-gal .v2-sl-spoor::-webkit-scrollbar{ display:none; }
.v2-pd-gal .v2-sl-spoor.is-slepen{ cursor:grabbing; scroll-snap-type:none; }
.v2-pd-dia{
  flex:0 0 auto; scroll-snap-align:start;
  width:clamp(280px, 72.92vw, 1050px);                       /* [ref: 1050 - 302] */
  border-radius:0 37.5px;                                    /* eigen asymmetrie, zoals de kaarten */
  overflow:hidden; margin:0;
}
.v2-pd-dia img{
  width:100%; height:auto; aspect-ratio:1050/505;            /* [ref: 1050x505 en 302x145] */
  object-fit:cover; display:block;
}
.v2-pd-gal-voet{
  display:flex; align-items:center; gap:clamp(16px, 2.08vw, 30px);
  width:100%; max-width:1305px; margin-inline:auto;
  padding:clamp(24px, 3.13vw, 45px) clamp(21px, 2.08vw, 30px) 0;
}
.v2-pd-teller{
  flex:0 0 auto; font-size:clamp(15px, 1.25vw, 18px); line-height:1.4;
  color:var(--brand-dark); font-variant-numeric:tabular-nums;   /* [ref: "01 / 18"] */
}
.v2-pd-gal .v2-sl-bar{ flex:1 1 auto; margin-top:0; }
/* bij één foto vervalt de hele bediening in plaats van een dode balk te tonen */
.v2-pd-gal[data-dias="1"] .v2-pd-gal-voet{ display:none; }

/* ---------- 3. omschrijving en gegevens ---------- */
.v2-pd-rijen{
  padding:0 0 clamp(63.5px, 7.29vw, 105px);                  /* [ref: 0/105 - 0/63,5] */
  min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  background:var(--bg);
}
.v2-pd-rij{
  display:grid; grid-template-columns:minmax(0, 5fr) minmax(0, 7fr);
  gap:clamp(18px, 3.13vw, 45px);
  padding:clamp(30px, 3.75vw, 54px) 0;
  position:relative;
}
.v2-pd-rij + .v2-pd-rij{ border-top:var(--lijn-d) solid var(--bronze); }  /* vaste variantregel: 3px */
/* onze haaietand op elke scheidingslijn, punt omlaag */
.v2-pd-rij + .v2-pd-rij::before{
  content:""; position:absolute; left:0; right:0; top:calc(var(--lijn-d) * -1);
  height:calc(var(--lijn-d) + var(--tand-h)); background:var(--bronze);
  clip-path:polygon(0 0, 100% 0, 100% var(--lijn-d),
    calc(50% + var(--tand-hw)) var(--lijn-d), 50% calc(var(--lijn-d) + var(--tand-h)),
    calc(50% - var(--tand-hw)) var(--lijn-d), 0 var(--lijn-d));
  pointer-events:none;
}
.v2-pd-rij h2{
  font-size:clamp(34.1px, 4.17vw, 60px);                     /* [ref: 60/72 - 34,1/40,92] */
  line-height:1.2; font-weight:400;                          /* [ref: 400] */
  color:var(--brand-dark); margin:0; letter-spacing:normal;
}
.v2-pd-rij p{
  font-size:clamp(16px, 1.25vw, 18px); line-height:1.55;
  color:var(--text); margin:0 0 1em;
}
.v2-pd-rij p:last-child{ margin-bottom:0; }
.v2-pd-getal{
  font-family:var(--font-display);
  font-size:clamp(42.6px, 5.21vw, 75px);                     /* [ref: 75/90 - 42,6/51,15] */
  line-height:1.2; font-weight:400;                          /* [ref: 400] */
  color:var(--brand-dark); display:block;
}
.v2-pd-getal small{
  display:block; font-family:var(--font-body);
  font-size:clamp(15px, 1.25vw, 18px); line-height:1.4; font-weight:400;
  color:#737373; margin-top:6px;
}

/* ---------- mobiel ---------- */
@media (max-width:1023px){
  .v2-pd-hero-grid{
    grid-template-columns:1fr;                               /* vaste mobielregel: één kolom */
    justify-items:center; text-align:center;                 /* vaste regel: contentblok gecentreerd */
    gap:clamp(20px, 6.4vw, 32px);
  }
  .v2-pd-hero .v2-pd-tekstkant{ order:2; }
  .v2-pd-rond{ order:1; justify-self:center; margin-right:0; }  /* [ref: foto gecentreerd op 390] */
  .v2-pd-plaats{ justify-content:center; }
  .v2-pd-rij{ grid-template-columns:1fr; gap:clamp(12px, 3.6vw, 18px); }
  .v2-pd-gal .v2-sl-spoor{ padding-inline:21px; scroll-padding-left:21px; }
}

/* ============================================================
   VARIANT 2 — KENNISBANK (overzicht + artikel)
   Gemeten aan randoco.com/resources/ op 1440x900 en 390x844.
   Zwarte hero 150/60 met een uitgelicht artikel (60/72) en drie
   kleine erna (15/21) met thumbnails 116x105; daaronder de
   artikellijst 60/105 met rijen van tekst (517) naast beeld (728).
   ============================================================ */

/* ---------- zwarte hero met uitgelicht artikel ---------- */
.v2-kb-hero{
  position:relative; isolation:isolate;
  padding:clamp(95px, 10.42vw, 150px) 0 clamp(42px, 4.17vw, 60px);
  display:flex; align-items:flex-start;
  background:#000; color:#fff; overflow:hidden;
  border-radius:0 0 0 75px;                            /* [ref: linksonder 75] */
}
.v2-kbh-foto{ position:absolute; inset:0; z-index:-2; }
.v2-kbh-foto img{ width:100%; height:100%; object-fit:cover; display:block; }
.v2-kb-hero::after{
  content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:linear-gradient(rgba(255,255,255,0) 42%, rgb(0,0,0) 86%),
             linear-gradient(rgba(0,0,0,.06) 0%, rgba(0,0,0,.14) 11%,
                             rgba(0,0,0,.74) 23%, rgba(0,0,0,.8) 46%,
                             rgba(0,0,0,.78) 62%, rgba(0,0,0,.8) 100%);
}
  /* [ref: EEN laag linear-gradient(rgba(255,255,255,0) 50%, #000 100%): de foto
     blijft bovenin helder (gemeten luminantie 165) en loopt onderin naar zwart.
     De ref-foto is achter de kop toevallig donker (33); onze artikelbeelden zijn
     lichter, dus ligt daaronder een egale leesbaarheidsbasis. Dat is de enige
     toevoeging - een egale dekking over de hele foto (zoals eerst) maakt het
     beeld dof en mist het verloop naar zwart onder de kaartjes] */
.v2-kbh-inner{ width:100%; }
.v2-kbh-meta{
  display:flex; align-items:center; gap:43.5px;        /* [ref: gap 43,5, GEEN streepje] */
  margin:0 0 38px;                                     /* [ref: meta y150 -> h1 y213] */
  font-size:18px; line-height:1.4; color:#fff;         /* [ref: 18, wit] */
}
.v2-kbh-meta .sep, .v2-kbl-meta .sep{
  display:inline-block; width:1px; height:1em; background:currentColor; opacity:.55;
}                                                      /* [ref: dun lijntje tussen type en datum] */
.v2-kb-hero h1{
  font-size:clamp(34.1px, 4.17vw, 60px); line-height:1.2;   /* [ref: 60/72 - 34,1 mobiel] */
  font-weight:700; color:#fff !important; margin:0 0 37px;  /* [ref: h1 -> knop 37] */
  max-width:1245px;
}
.v2-kbh-featrij{
  display:flex; align-items:center;
  margin-top:43px; min-height:25px;
  /* [ref-marge is 47 bij een knop van 53; onze knopstijl (vaste regel) is 57 hoog,
     dus 43 - zo staan Featured (y494) en de kaartrij (y535) exact op de ref-y] */
}
.v2-kbh-label{ flex:1; text-align:center; font-size:18px; line-height:1.4; color:#fff; }
.v2-kbh-featrij{ position:relative; }
.v2-kbh-featrij::after{
  content:""; position:absolute; left:calc((100% - 100vw) / 2); width:100vw;
  bottom:-15px; height:1px; background:#737373;
}
  /* [ref: horizontale scheidingslijn op y534 (1px rgb(115)) direct boven de
     kaartrij, over de VOLLE schermbreedte x0-1439 - dezelfde kleur als de
     verticale lijnen tussen de kaartjes] */
  /* [ref: "Featured" 18, gecentreerd in de ruimte links van de bediening; center x589] */
.v2-kbh-bediening{
  flex:0 0 262px; display:flex; align-items:center; justify-content:flex-end; gap:14px;
}                                                      /* [ref: bedieninggroep 262 breed] */
.v2-kbh-teller{ font-size:18px; line-height:1.4; color:#fff; white-space:nowrap; }
.v2-kbh-pijl{
  display:flex; align-items:center; gap:6px; padding:6px 0;
  color:#fff; opacity:.75; transition:opacity .25s; background:none; border:0; cursor:pointer;
}
.v2-kbh-pijl:hover{ opacity:1; }
.v2-kbh-pijl svg{ width:8px; height:auto; }
.v2-kbh-next .v2-kbh-lijn{ display:block; width:64px; height:2px; background:#fff; }
  /* [ref: lange lijnpijl rechts, kale chevron links - zelfde vormtaal als de
     vestigingenteller] */
.v2-kbh-spoor{
  display:flex; gap:0; margin-top:16px;                /* [ref: kaart 518 incl pad, pitch 517] */
  overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; cursor:grab;
  width:calc(100% + (100vw - 100%) / 2); }             /* rij loopt rechts het beeld uit [ref] */
.v2-kbh-spoor::-webkit-scrollbar{ display:none; }
.v2-kbh-spoor.is-slepen{ cursor:grabbing; scroll-snap-type:none; }
.v2-kbh-kaart{
  flex:0 0 517.5px; box-sizing:border-box; scroll-snap-align:start; padding:45px 52.5px;
  display:flex; align-items:center; gap:34px; color:#fff; text-decoration:none;
  border-right:1px solid #737373;                      /* [ref: scheidingslijn 1px grijs, kaarthoogte] */
}                                                      /* [ref: padding 45/52,5; img->tekst 34] */
.v2-kbh-kaart:first-child{ padding-left:0; }
  /* [ref: foto's op x=98/668/1185 bij kaarten x=98/615/1133 - de eerste kaart
     sluit aan op de wraprand, de rest heeft 52,5 inspring] */
.v2-kbh-kaart img{
  width:116px; height:105px; object-fit:cover; display:block;
  border-radius:0 37.5px;                              /* [ref: 116x105, radius 0/37,5] */
}
.v2-kbh-kaart-meta{
  display:block; font-size:15px; line-height:1.4; color:#737373; margin-bottom:12px;
}                                                      /* [ref: cat en datum gestapeld, 15 grijs] */
.v2-kbh-kaart-meta .cat, .v2-kbh-kaart-meta .datum{ display:block; }
.v2-kbh-kaart-tekst{ min-width:0; }
.v2-kbh-kaart-tekst strong{ display:block; font-size:15px; line-height:1.4; font-weight:700; }
  /* [ref: titel 15/700 wit] */
.v2-kbh-kaart:hover strong{ color:var(--bronze-light); }

/* ---------- artikellijst met filters [ref: /resources/] ---------- */
.v2-kb-lijst{
  padding:60px 0 210px;                                /* [ref: start y=60, onder 210] */
  background:var(--bg); overflow-x:hidden;
}
.v2-kbl-grid{
  display:grid; grid-template-columns:456px minmax(0, 728px);
  column-gap:60px;                                     /* [ref: zij 456, lijn, 60, items 728] */
}
.v2-kbl-zij{ border-right:1px solid #DEDEDE; }         /* [ref: verticale lijn x555, volle lijsthoogte] */
.v2-kbl-kop{
  display:block; font-family:var(--font-kop); font-size:33px; font-weight:700;
  line-height:1.2; color:var(--brand-dark); margin:0 0 22px;
  letter-spacing:normal;                               /* [ref: "Discover More" 33/700, lh 39,6] */
}
.v2-kbl-zoek{
  display:flex; align-items:center; gap:25px;
  min-height:67px; padding:0 0 0 24px;
  border-bottom:1px solid #DEDEDE;                     /* [ref: rij 68 incl onderlijn, loep x122] */
  color:#737373;
}
.v2-kbl-zoek input{
  flex:1 1 auto; min-width:0; height:66px; border:0; background:none; outline:none;
  font-size:18px; font-weight:700; color:var(--brand-dark); font-family:inherit;
}                                                      /* [ref: invoer 18/700 zwart] */
.v2-kbl-zoek input::placeholder{ color:var(--brand-dark); opacity:1; font-weight:700; }
.v2-kbl-filter{ border-bottom:1px solid #DEDEDE; }
.v2-kbl-toggle{
  display:flex; align-items:center; gap:10px; width:100%;
  padding:22.8px 0; background:none; border:0; cursor:pointer; text-align:left;
  font-family:inherit; font-size:21px; font-weight:400; line-height:1.4; color:var(--bronze);
}                                                      /* [ref: label+waarde 21/400 accent, rij 75] */
.v2-kbl-toggle .v2-mm-tabplus{ margin-left:auto; }
.v2-kbl-opties{ padding:0 0 18px; display:flex; flex-direction:column; align-items:flex-start; gap:2px; }
.v2-kbl-opties[hidden]{ display:none; }
.v2-kbl-opties button{
  background:none; border:0; cursor:pointer; padding:6px 0;
  font-family:inherit; font-size:14px; color:var(--brand-dark);
}                                                      /* [ref: opties ~13,5 donker] */
.v2-kbl-opties button:hover{ color:var(--bronze); }
.v2-kbl-item{ position:relative; padding-bottom:108px; margin-bottom:61px; }
.v2-kbl-item::after{
  content:""; position:absolute; left:0; right:-100vw; bottom:0;
  height:1px; background:#DEDEDE;
}
  /* [ref: scheidingslijn 1px rgb(222) op y666 tussen de items; loopt van de
     itemrand DOOR tot de schermrand (x554-1439) - de sectie clipt de rest] */
.v2-kbl-item.is-laatst::after{ display:none; }         /* [ref: geen lijn boven de paginering] */
.v2-kbl-items > .v2-kbl-item:last-of-type{ margin-bottom:0; }
.v2-kbl-item[hidden]{ display:none; }
.v2-kbl-beeld{ display:block; border-radius:0 37.5px; overflow:hidden; }
.v2-kbl-beeld img{
  width:100%; aspect-ratio:728/400; object-fit:cover; display:block;
}                                                      /* [ref: 728x400, radius 0/37,5] */
.v2-kbl-item h3{
  font-family:var(--font-kop); font-size:27px; line-height:1.1; font-weight:700;
  margin:34px 0 0; letter-spacing:normal;              /* [ref: titel 27/700, 34 na de foto] */
}
.v2-kbl-item h3 a{ color:var(--brand-dark); text-decoration:none; }
.v2-kbl-item h3 a:hover{ color:var(--bronze); }
.v2-kbl-samenvatting{
  font-size:18px; line-height:1.4; color:var(--text);
  margin:18px 0 0; }                                   /* [ref: 18, b=728] */
.v2-kbl-voet{
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  margin-top:29px; }                                   /* [ref: knop y+105 na titelblok] */
.v2-kbl-meta{
  display:flex; align-items:center; gap:12px; margin:0;
  font-size:18px; color:#737373; }                     /* [ref: meta rechts 18, grijs 115] */
.v2-kbl-leeg{ font-size:18px; color:#737373; margin:0; }
.v2-kbl-pag{
  display:flex; align-items:center; justify-content:center; gap:18px;
  margin-top:60px; }                                   /* [ref: 60 onder het laatste item] */
.v2-kbl-pag span.is-actief{ font-size:18px; font-weight:700; color:var(--bronze); }
.v2-kbl-pag button{
  background:none; border:0; cursor:pointer; padding:4px 6px;
  font-family:inherit; font-size:18px; color:var(--brand-dark);
}
.v2-kbl-pag button:hover{ color:var(--bronze); }
.v2-kbl-pag .v2-kbl-pag-next svg{ display:block; }

@media (max-width:1023px){
  .v2-kb-hero{ border-radius:0 0 0 42.625px; }         /* [ref 390: 42,625] */
  .v2-kbh-meta{ font-size:14.4px; margin-bottom:14px; gap:24px; }   /* [ref 390: 14,44; meta->h1 14] */
  .v2-kb-hero h1{ margin-bottom:13px; }                /* [ref 390: h1 y129 -> knop y265] */
  .v2-kbh-featrij{ margin-top:37px; }                  /* [ref 390: 41 bij hun knop; onze knop is 4 hoger] */
  .v2-kbh-spoor{ gap:16px; margin-top:18px; width:auto; }  /* [ref 390: pitch 306 = 290 + 16] */
  .v2-kbh-kaart{ flex:0 0 290px; padding:0; border-right:0;
                 display:block; }                      /* [ref 390: gestapeld, geen scheidingslijn] */
  .v2-kbh-featrij::after{ display:none; }              /* [ref 390: GEEN lijn boven de kaartrij] */
  .v2-kbh-kaart img{ width:290px; height:159px; border-radius:0 21.3125px; }
  .v2-kbh-kaart-meta{ flex-direction:row; flex-wrap:wrap; gap:4px 16px; font-size:16.2px;
                      margin:14px 0 11px; }
  /* [ref 390: categorie NAAST de datum, 16,175. Gat 16 i.p.v. 24: onze NL-labels
     zijn langer, zo passen korte categorieen nog op een regel en wrappen alleen
     de lange netjes] */
  .v2-kbh-kaart-tekst strong{ font-size:20px; }        /* [ref 390: titel 20/700] */
  .v2-kbl-zoek{ min-height:60px; }
  .v2-kbl-zoek input{ height:60px; }                   /* [ref 390: invoer 60] */
  .v2-kbl-grid{ grid-template-columns:1fr; row-gap:40px; }
  .v2-kbl-kop{ font-size:23px; }                       /* [ref 390: 23] */
  .v2-kbl-item{ padding-bottom:56px; margin-bottom:32px; }
  .v2-kbl-item h3{ font-size:22.6px; margin-top:22px; }  /* [ref 390: 22,6] */
  .v2-kbl-voet{ flex-wrap:wrap; }
}

/* ---------- artikelpagina ---------- */
.v2-art-hero{
  padding:clamp(95px, 10.42vw, 150px) 0 clamp(24px, 2.6vw, 37.5px);
  min-height:100svh; display:flex; align-items:center; background:var(--bg);
  /* [eerste scherm = alleen de hero, op elke inhoudshoogte] */
}
.v2-art-hero .v2-wrap{ width:100%; }
.v2-art-hero h1{
  font-size:clamp(34.1px, 4.17vw, 60px); line-height:1.2;   /* [ref: 60/72] */
  font-weight:700; color:var(--brand-dark); margin:0;
  max-width:20ch;
}
.v2-art-hero .v2-kb-meta{ color:#737373; }
.v2-art-hero .v2-kb-meta .cat{ color:var(--bronze); }
.v2-art-beeld{
  width:100%; aspect-ratio:1050/505; object-fit:cover; display:block;
  border-radius:0 37.5px; margin-top:clamp(24px, 3.13vw, 45px);
}
.v2-art-body{
  padding:clamp(42px, 4.17vw, 60px) 0 clamp(63.5px, 7.29vw, 105px);
  min-height:100svh; background:var(--bg);
}
.v2-art-kolom{ max-width:840px; margin-inline:auto; }
.v2-art-kolom h2{
  font-size:clamp(25.6px, 3.125vw, 45px); line-height:1.2;   /* [ref-familie: 45/54] */
  font-weight:400; color:var(--brand-dark);
  margin:clamp(30px, 3.13vw, 45px) 0 clamp(12px, 1.25vw, 18px);
}
.v2-art-kolom h2:first-child{ margin-top:0; }
.v2-art-kolom h3{
  font-size:clamp(19px, 1.53vw, 22px); line-height:1.3; font-weight:700;
  color:var(--brand-dark); margin:clamp(22px, 2.08vw, 30px) 0 8px;
}
.v2-art-kolom p, .v2-art-kolom li{
  font-size:clamp(16px, 1.25vw, 18px); line-height:1.65; color:var(--text);
}
.v2-art-kolom p{ margin:0 0 1em; }
.v2-art-kolom ul{
  list-style:none; padding:0; margin:0 0 1.4em;
  width:fit-content; margin-inline:auto; text-align:left;   /* vaste regel: lijst als blok gecentreerd */
}
.v2-art-kolom ul li{
  display:flex; align-items:flex-start; gap:10px; margin-bottom:10px;
}
.v2-art-kolom ul li::after{
  content:""; position:absolute; left:6px; top:8px; width:4px; height:8px;
  border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg); pointer-events:none;
}
.v2-art-kolom ul li{ position:relative; }
.v2-art-kolom ul li::before{
  content:""; flex:0 0 auto; width:18px; height:18px; margin-top:3px;
  border-radius:50%; background:#22C55E; position:relative;  /* vaste regel: vinkjes groen */
}

/* ---------- mobiel ---------- */
@media (max-width:1023px){
  .v2-kb-klein{ grid-template-columns:1fr; }              /* vaste mobielregel: één kolom */
  .v2-kb-hero::after{ background:linear-gradient(to bottom, rgba(0,0,0,.55) 0%, rgba(0,0,0,.82) 60%, rgba(0,0,0,.9) 100%); }
  .v2-art-rij{ grid-template-columns:1fr; gap:14px; }
  .v2-art-rij .v2-art-beeldkant{ order:1; }
  .v2-art-rij .v2-art-tekstkant{ order:2; text-align:center; }   /* vaste regel: kaart gecentreerd */
  .v2-art-rij img{ border-radius:0 21px; }
  .v2-art-kolom h2, .v2-art-kolom h3, .v2-art-kolom p{ text-align:left; }
}

/* ============================================================
   VARIANT 2 — GEDEELDE SECTIES VOOR DE INHOUDSPAGINA'S
   Gemeten aan randoco.com/about-us/ op 1440x900 en 390x844.
   Deze zes componenten worden hergebruikt op over ons, contact,
   werkgebied, sollicitatie en de werkzaamhedenpagina's.
   ============================================================ */

/* ---------- A. grote zwarte hero met foto ---------- */
.v2-gh{
  position:relative; isolation:isolate;
  padding:clamp(119px, 15.94vw, 230px) 0;              /* [ref: 229,6 - 119,35] */
  min-height:100svh; display:flex; align-items:center;
  background:#000; color:#fff; overflow:hidden;
}
.v2-gh-bg{ position:absolute; inset:0; z-index:-2; width:100%; height:100%; object-fit:cover; }
.v2-gh::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(to bottom, rgba(0,0,0,.72) 0%, rgba(0,0,0,.56) 45%, rgba(0,0,0,.78) 100%);
}
.v2-gh-inner{ text-align:center; }                     /* vaste regel: contentblok gecentreerd */
.v2-gh h1, .v2-gh .v2-gh-kop{
  font-size:clamp(46.125px, 9.375vw, 135px);           /* [ref: 135/135 - 46,125/46,125] */
  line-height:1;                                       /* [ref: gelijk aan de fontgrootte] */
  font-weight:400; color:#fff; margin:0;
  letter-spacing:normal;
}
.v2-gh p{
  max-width:840px; margin:clamp(20px, 2.6vw, 37.5px) auto 0;
  font-size:clamp(16px, 1.25vw, 18px); line-height:1.55; color:rgba(255,255,255,.92);
}
.v2-gh .btn{ margin-top:clamp(20px, 2.08vw, 30px); }

/* ---------- B. waardenblok: ronde foto naast tekst, op zwart ---------- */
.v2-wb{
  padding:clamp(63.5px, 7.29vw, 105px) 0;
  min-height:100svh; display:flex; align-items:center;
  background:#000; color:#fff;
}
.v2-wb-grid{
  display:grid; grid-template-columns:auto minmax(0, 1fr);
  gap:clamp(24px, 4.17vw, 60px); align-items:center;
}
.v2-wb-foto{
  width:clamp(193px, 23.6vw, 340px);                   /* [ref: 340 - 193] */
  aspect-ratio:1; border-radius:50%; overflow:hidden; flex:0 0 auto;
}
.v2-wb-foto img{ width:100%; height:100%; object-fit:cover; display:block; }
.v2-wb h2{
  font-size:clamp(34.1px, 4.17vw, 60px); line-height:1.2;   /* [ref: 60/72 - 34,1/40,92] */
  font-weight:400; color:#fff; margin:0 0 clamp(14px, 1.46vw, 21px);
}
.v2-wb p{ font-size:clamp(16px, 1.25vw, 18px); line-height:1.55; color:rgba(255,255,255,.92); margin:0 0 1em; }
.v2-wb p:last-child{ margin-bottom:0; }
.v2-wb-lijst{
  list-style:none; padding:0; margin:clamp(18px, 1.87vw, 27px) 0 0;
  display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:12px 24px;
}
.v2-wb-lijst li{ display:flex; align-items:flex-start; gap:10px;
  font-size:clamp(15px, 1.25vw, 18px); line-height:1.45; color:#fff; }
.v2-wb-lijst svg{ width:18px; height:18px; flex:0 0 auto; color:#22c55e; margin-top:3px; }  /* vinkjes altijd groen */

/* ---------- C. tekst-beeldslider (brede dia's met kop eronder) ---------- */
.v2-ts{
  padding:clamp(21px, 2.08vw, 30px) 0 clamp(42px, 4.17vw, 60px);   /* [ref: 30/60 - 20,875/41,75] */
  min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  background:var(--bg);
}
.v2-ts-kop{ margin:0 0 clamp(20px, 2.6vw, 37.5px); }
.v2-ts .v2-sl-spoor{
  display:flex; gap:clamp(16px, 8.33vw, 120px);        /* [ref: pitch 1166 - dia 1046 = 120] */
  overflow-x:auto; scroll-snap-type:x mandatory;
  padding-inline:max(21px, calc((100vw - 1245px)/2));
  scroll-padding-left:max(21px, calc((100vw - 1245px)/2));
  scrollbar-width:none; cursor:grab;
}
.v2-ts .v2-sl-spoor::-webkit-scrollbar{ display:none; }
.v2-ts .v2-sl-spoor.is-slepen{ cursor:grabbing; scroll-snap-type:none; }
.v2-ts-dia{
  flex:0 0 auto; scroll-snap-align:start;
  width:clamp(280px, 72.64vw, 1046px);                 /* [ref: 1046 - 302] */
}
.v2-ts-dia img{
  width:100%; aspect-ratio:1046/488;                   /* [ref: 1046x488 en 302x141] */
  object-fit:cover; display:block; border-radius:0 37.5px;
}
.v2-ts-dia h3{
  font-size:clamp(25.575px, 3.125vw, 45px); line-height:1.2;   /* [ref: 45/54 - 25,575/30,69] */
  font-weight:400; color:var(--brand-dark);
  margin:clamp(16px, 1.87vw, 27px) 0 clamp(8px, .83vw, 12px);
}
.v2-ts-dia p{ font-size:clamp(16px, 1.25vw, 18px); line-height:1.55; color:var(--text); margin:0; max-width:70ch; }
.v2-ts .v2-sl-bar{ width:100%; max-width:1245px; margin-inline:auto; margin-top:clamp(24px, 3.13vw, 45px); }

/* ---------- D. tijdlijn ---------- */
.v2-tl{
  padding:clamp(42px, 4.17vw, 60px) 0;                 /* [ref: 60/60 - 41,75/41,75] */
  min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  background:var(--bg);
}
.v2-tl .v2-sl-spoor{
  display:flex; gap:clamp(48px, 3.26vw, 47px);         /* [ref: pitch 520 - foto 473 = 47] */
  overflow-x:auto; scroll-snap-type:x mandatory;
  padding-inline:max(21px, calc((100vw - 1245px)/2));
  scroll-padding-left:max(21px, calc((100vw - 1245px)/2));
  scrollbar-width:none; cursor:grab;
}
.v2-tl .v2-sl-spoor::-webkit-scrollbar{ display:none; }
.v2-tl .v2-sl-spoor.is-slepen{ cursor:grabbing; scroll-snap-type:none; }
.v2-tl-punt{
  flex:0 0 auto; scroll-snap-align:center; text-align:center;
  width:clamp(230px, 32.85vw, 473px);                  /* [ref: 473 - 230] */
}
.v2-tl-punt img{
  width:100%; aspect-ratio:1; border-radius:50%; object-fit:cover; display:block;
}
.v2-tl-jaar{
  display:block; margin:clamp(14px, 1.46vw, 21px) 0 6px;
  font-family:var(--font-display);
  font-size:clamp(28px, 3.125vw, 45px); line-height:1.1; font-weight:700;
  color:var(--bronze);                                 /* accentrol */
}
.v2-tl-punt h3{
  font-size:clamp(18px, 1.53vw, 22px); line-height:1.3; font-weight:700;
  color:var(--brand-dark); margin:0 0 8px;
}
.v2-tl-punt p{ font-size:clamp(15px, 1.146vw, 16.5px); line-height:1.5; color:var(--text); margin:0; }
.v2-tl .v2-sl-bar{ width:100%; max-width:1245px; margin-inline:auto; margin-top:clamp(24px, 3.13vw, 45px); }

/* ---------- E. cijferblok over een foto ---------- */
.v2-st{
  position:relative; isolation:isolate;
  padding:clamp(63.5px, 7.29vw, 105px) 0;              /* [ref: 105/105 - 63,5/63,5] */
  min-height:100svh; display:flex; align-items:center;
  background:var(--bg); overflow:hidden;
}
.v2-st-bg{ position:absolute; inset:0; z-index:-2; width:100%; height:100%; object-fit:cover; opacity:.16; }
.v2-st h2{
  font-size:clamp(27.325px, 5.21vw, 75px); line-height:1.2;   /* [ref: 75/90 - 27,325/32,79] */
  font-weight:400; color:var(--brand-dark);
  text-align:center; margin:0 auto clamp(30px, 3.75vw, 54px); max-width:22ch;
}
.v2-st-rij{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));
  gap:clamp(24px, 3.13vw, 45px);
}
.v2-st-cel{ text-align:center; }                       /* vaste regel: alles in kaarten gecentreerd */
.v2-st-getal{
  display:block; font-family:var(--font-display);
  font-size:clamp(42px, 5.21vw, 75px); line-height:1.1; font-weight:700;
  color:var(--bronze);
}
.v2-st-cel p{
  margin:clamp(8px, .83vw, 12px) auto 0; max-width:24ch;
  font-size:clamp(15px, 1.25vw, 18px); line-height:1.45; color:var(--text);
}

/* ---------- F. eigenaarsblok: ronde foto boven gecentreerde tekst, op zwart ---------- */
.v2-eb{
  padding:clamp(63.5px, 7.29vw, 105px) 0;
  min-height:100svh; display:flex; align-items:center;
  background:#000; color:#fff; text-align:center;      /* vaste regel: contentblok gecentreerd */
}
.v2-eb-foto{
  width:clamp(223px, 31.25vw, 450px);                  /* [ref: 450 - 223] */
  aspect-ratio:1; border-radius:50%; overflow:hidden; margin:0 auto clamp(24px, 2.6vw, 37.5px);
}
.v2-eb-foto img{ width:100%; height:100%; object-fit:cover; display:block; }
.v2-eb h2{
  font-size:clamp(42.625px, 5.21vw, 75px); line-height:1.2;   /* [ref: 75/90 - 42,625/51,15] */
  font-weight:400; color:#fff; margin:0 0 clamp(8px, 1.04vw, 15px);
}
.v2-eb-rol{
  display:block; margin:0 0 clamp(16px, 1.87vw, 27px);
  font-size:clamp(15px, 1.25vw, 18px); line-height:1.4; color:var(--bronze); font-weight:700;
}
.v2-eb p{
  max-width:840px; margin:0 auto 1em;
  font-size:clamp(16px, 1.25vw, 18px); line-height:1.6; color:rgba(255,255,255,.92);
}
.v2-eb p:last-of-type{ margin-bottom:clamp(20px, 2.08vw, 30px); }

/* ---------- mobiel ---------- */
@media (max-width:1023px){
  .v2-wb-grid{ grid-template-columns:1fr; justify-items:center; text-align:center; }  /* één kolom */
  .v2-wb-lijst{ grid-template-columns:1fr; width:fit-content; margin-inline:auto; text-align:left; }
  .v2-ts-dia h3, .v2-ts-dia p{ text-align:center; }
  .v2-ts-dia img{ border-radius:0 21px; }
  .v2-st-rij{ grid-template-columns:1fr; }
  .v2-tl .v2-sl-spoor{ gap:clamp(24px, 12.3vw, 48px); }
}

/* ============================================================
   VARIANT 2 — CONTACT, OFFERTE EN SOLLICITATIE
   Zelfde vormtaal als de rest: container 1245, koppen 60/72 en
   75/90, asymmetrische hoek 0 37.5px, accentlijn 3px met onze
   haaietand. Velden zijn ruim, want ze worden vaak op de
   telefoon ingevuld.
   ============================================================ */
.v2-form-sec{
  padding:clamp(42px, 4.17vw, 60px) 0 clamp(63.5px, 7.29vw, 105px);
  min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  background:var(--bg);
}
.v2-form-grid{
  display:grid; grid-template-columns:minmax(0, 5fr) minmax(0, 7fr);
  gap:clamp(28px, 4.17vw, 60px); align-items:start;
}
.v2-form-zij h2{
  font-size:clamp(34.1px, 4.17vw, 60px); line-height:1.2; font-weight:400;
  color:var(--brand-dark); margin:0 0 clamp(14px, 1.46vw, 21px);
}
.v2-form-zij p{ font-size:clamp(16px, 1.25vw, 18px); line-height:1.6; color:var(--text); margin:0 0 1em; }
.v2-form-zij ul{ list-style:none; padding:0; margin:clamp(18px, 1.87vw, 27px) 0 0; }
.v2-form-zij li{ display:flex; align-items:flex-start; gap:10px; margin-bottom:12px;
  font-size:clamp(15px, 1.25vw, 18px); line-height:1.45; color:var(--brand-dark); }
.v2-form-zij svg{ width:18px; height:18px; flex:0 0 auto; color:#22c55e; margin-top:3px; }  /* vinkjes groen */

.v2-formkaart{
  background:#F8FAFC; border-radius:0 37.5px;
  padding:clamp(24px, 3.13vw, 45px);
  position:relative;
}
.v2-formkaart::before{                                  /* onze haaietand op de bovenrand */
  content:""; position:absolute; left:0; right:0; top:0;
  height:calc(var(--lijn-d) + var(--tand-h)); background:var(--bronze);
  clip-path:polygon(0 0, 100% 0, 100% var(--lijn-d),
    calc(50% + var(--tand-hw)) var(--lijn-d), 50% calc(var(--lijn-d) + var(--tand-h)),
    calc(50% - var(--tand-hw)) var(--lijn-d), 0 var(--lijn-d));
  border-radius:0 37.5px 0 0; pointer-events:none;
}
.v2-formkaart .of-row{ margin-bottom:clamp(14px, 1.46vw, 21px); }
.v2-formkaart .of-row-2{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(12px, 1.25vw, 18px); }
.v2-formkaart .of-field{ display:block; }
.v2-formkaart .of-field > span{
  display:block; margin:0 0 8px;
  font-size:clamp(14px, 1.04vw, 15px); line-height:1.4; font-weight:700;
  color:var(--brand-dark);
}
.v2-formkaart .of-field em{ color:var(--bronze); font-style:normal; }
.v2-formkaart input[type="text"], .v2-formkaart input[type="tel"], .v2-formkaart input[type="email"],
.v2-formkaart input[type="date"], .v2-formkaart input[type="file"],
.v2-formkaart select, .v2-formkaart textarea{
  width:100%; box-sizing:border-box;
  padding:14px 16px; border:1px solid #D9D9D9; border-radius:0 12px;
  background:#fff; color:var(--text);
  font-family:var(--font-body); font-size:16px; line-height:1.4;  /* 16px: geen inzoom op iOS */
  transition:border-color .25s var(--ease), box-shadow .25s var(--ease);
}
.v2-formkaart textarea{ resize:vertical; min-height:130px; }
.v2-formkaart input:focus, .v2-formkaart select:focus, .v2-formkaart textarea:focus{
  outline:none; border-color:var(--bronze); box-shadow:0 0 0 3px rgba(10,130,230,.16);
}
.v2-formkaart .of-akkoord{
  display:flex; align-items:flex-start; gap:12px; margin:clamp(14px, 1.46vw, 21px) 0;
  font-size:clamp(14px, 1.04vw, 15px); line-height:1.5; color:var(--text);
}
.v2-formkaart .of-akkoord input{ flex:0 0 auto; width:20px; height:20px; margin:2px 0 0; accent-color:#22C55E; }
.v2-formkaart button[type="submit"], .v2-formkaart .btn{ width:100%; justify-content:center; }
.v2-form-klein{ margin:12px 0 0; font-size:13.5px; line-height:1.5; color:#737373; text-align:center; }

/* ---------- contactkaarten ---------- */
.v2-ck{
  padding:clamp(42px, 4.17vw, 60px) 0;
  min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  background:var(--bg);
}
.v2-ck h2{
  font-size:clamp(34.1px, 4.17vw, 60px); line-height:1.2; font-weight:400;
  color:var(--brand-dark); text-align:center; margin:0 auto clamp(28px, 3.13vw, 45px); max-width:22ch;
}
.v2-ck-grid{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
  gap:clamp(18px, 2.08vw, 30px);
}
.v2-ck-kaart{
  text-align:center;                                     /* vaste regel: alles in kaarten gecentreerd */
  background:#F8FAFC; border-radius:0 37.5px;
  padding:clamp(26px, 2.6vw, 37.5px) clamp(20px, 2.08vw, 30px);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.v2-ck-kaart:hover{ transform:translateY(-4px); box-shadow:0 12px 30px -14px rgba(0,0,0,.28); }
.v2-ck-ico{
  width:56px; height:56px; margin:0 auto clamp(14px, 1.46vw, 21px);   /* icoonvlak gecentreerd */
  display:flex; align-items:center; justify-content:center;
  border-radius:50%; background:var(--bronze); color:#fff;
}
.v2-ck-ico svg{ width:26px; height:26px; stroke:currentColor; fill:none; stroke-width:1.8; }
.v2-ck-kaart h3{
  font-size:clamp(19px, 1.53vw, 22px); line-height:1.3; font-weight:700;
  color:var(--brand-dark); margin:0 0 8px;
}
.v2-ck-kaart p{ margin:0; font-size:clamp(15px, 1.25vw, 18px); line-height:1.5; color:var(--text); }
.v2-ck-kaart a{ color:var(--brand-dark); text-decoration:none; font-weight:700; }
.v2-ck-kaart a:hover{ color:var(--bronze); }
.v2-ck-sub{ display:block; margin-top:6px; font-size:14px; color:#737373; font-weight:400; }

/* ---------- kaartblok (klik om te laden) ---------- */
.v2-kaartsec{
  padding:0 0 clamp(42px, 4.17vw, 60px);
  background:var(--bg);
}
.v2-kaartvak{
  position:relative; width:100%; aspect-ratio:1245/500;
  border-radius:0 37.5px; overflow:hidden; background:#EDEDED;
}
.v2-kaartvak iframe{ width:100%; height:100%; border:0; display:block; }
.v2-kaart-facade{
  position:absolute; inset:0; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:12px; text-align:center;
  padding:24px; background:#EDEDED;
}
.v2-kaart-facade strong{ font-size:clamp(16px, 1.25vw, 18px); color:var(--brand-dark); }
.v2-kaart-facade small{ font-size:13.5px; color:#737373; max-width:46ch; }

/* ---------- vacatures ---------- */
.v2-vac{
  padding:clamp(42px, 4.17vw, 60px) 0;
  min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  background:#000; color:#fff;
}
.v2-vac h2{
  font-size:clamp(41.75px, 4.17vw, 60px); line-height:1.4;    /* [ref: 60/84 - 41,75/58,45] */
  font-weight:700; color:#fff; margin:0 0 clamp(20px, 2.08vw, 30px);
}
.v2-vac-lijst{ display:flex; flex-direction:column; }
.v2-vac-rij{
  display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center;
  gap:clamp(14px, 2.08vw, 30px);
  padding:clamp(20px, 2.08vw, 30px) 0;
  border-top:1px solid rgba(255,255,255,.22);
  text-decoration:none; color:#fff;
}
.v2-vac-rij:last-child{ border-bottom:1px solid rgba(255,255,255,.22); }
.v2-vac-rij h3{
  font-size:clamp(20px, 1.875vw, 27px); line-height:1.2; font-weight:700; color:#fff; margin:0 0 6px;
}
.v2-vac-rij p{ margin:0; font-size:clamp(14px, 1.146vw, 16.5px); line-height:1.4; color:rgba(255,255,255,.78); }
.v2-vac-pijl{
  flex:0 0 auto; width:48px; height:48px; border-radius:50%;
  border:2px solid var(--bronze); color:var(--bronze);
  display:flex; align-items:center; justify-content:center;
  transition:background .25s var(--ease), color .25s var(--ease);
}
.v2-vac-rij:hover .v2-vac-pijl{ background:var(--bronze); color:#fff; }

/* ---------- mobiel ---------- */
@media (max-width:1023px){
  .v2-form-grid{ grid-template-columns:1fr; }             /* vaste mobielregel: één kolom */
  .v2-formkaart .of-row-2{ grid-template-columns:1fr; }
  .v2-form-zij{ text-align:center; }
  .v2-form-zij ul{ width:fit-content; margin-inline:auto; text-align:left; }
  .v2-formkaart, .v2-ck-kaart, .v2-kaartvak{ border-radius:0 21px; }
  .v2-formkaart::before{ border-radius:0 21px 0 0; }
  .v2-kaartvak{ aspect-ratio:348/320; }
  .v2-vac-rij{ grid-template-columns:1fr; justify-items:center; text-align:center; }
}

/* ============================================================
   VARIANT 2 — WERKGEBIED, WERKZAAMHEDEN, WERKWIJZE, FAQ EN
   DE TEKSTPAGINA'S (legal, sitemap, bedankt, 404)
   Zelfde maatvoering als de rest: container 1245, koppen 60/72
   en 75/90, hoek 0 37.5px, accentlijn 3px met haaietand.
   ============================================================ */

/* ---------- regio- en linkkaarten ---------- */
.v2-rg{
  padding:clamp(42px, 4.17vw, 60px) 0 clamp(63.5px, 7.29vw, 105px);
  min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  background:var(--bg);
}
.v2-rg h2{
  font-size:clamp(34.1px, 4.17vw, 60px); line-height:1.2; font-weight:400;
  color:var(--brand-dark); text-align:center; margin:0 auto clamp(28px, 3.13vw, 45px); max-width:24ch;
}
.v2-rg-grid{
  display:grid; grid-template-columns:repeat(3, 1fr);     /* 6 kaarten = 2 volle rijen */
  gap:clamp(18px, 2.08vw, 30px);
}
.v2-rg-kaart{
  display:block; text-decoration:none; color:inherit;
  border-radius:0 37.5px; overflow:hidden; background:#F8FAFC;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.v2-rg-kaart:hover{ transform:translateY(-4px); box-shadow:0 14px 34px -16px rgba(0,0,0,.3); }
.v2-rg-kaart img{ width:100%; aspect-ratio:395/260; object-fit:cover; display:block; }
.v2-rg-tekst{ padding:clamp(18px, 1.87vw, 27px); text-align:center; }  /* alles in kaarten gecentreerd */
.v2-rg-tekst h3{
  font-size:clamp(19px, 1.53vw, 22px); line-height:1.3; font-weight:700;
  color:var(--brand-dark); margin:0 0 8px;
}
.v2-rg-tekst p{ margin:0 0 12px; font-size:clamp(15px, 1.146vw, 16.5px); line-height:1.5; color:var(--text); }
.v2-rg-lees{
  display:inline-flex; align-items:center; gap:8px; justify-content:center;
  font-weight:800; font-size:clamp(15px, 1.146vw, 16.5px); color:var(--bronze);
  transition:gap .25s var(--ease);
}
.v2-rg-kaart:hover .v2-rg-lees{ gap:14px; }

/* ---------- tekstblok met vinkjes ---------- */
.v2-tb{
  padding:clamp(42px, 4.17vw, 60px) 0;
  min-height:100svh; display:flex; align-items:center; background:var(--bg);
}
.v2-tb-grid{
  display:grid; grid-template-columns:minmax(0, 7fr) minmax(0, 5fr);
  gap:clamp(24px, 4.17vw, 60px); align-items:center;
}
.v2-tb h2{
  font-size:clamp(34.1px, 4.17vw, 60px); line-height:1.2; font-weight:400;
  color:var(--brand-dark); margin:0 0 clamp(14px, 1.46vw, 21px);
}
.v2-tb h3{
  font-size:clamp(19px, 1.53vw, 22px); line-height:1.3; font-weight:700;
  color:var(--brand-dark); margin:clamp(22px, 2.08vw, 30px) 0 8px;
}
.v2-tb p{ font-size:clamp(16px, 1.25vw, 18px); line-height:1.6; color:var(--text); margin:0 0 1em; }
.v2-tb-vink{ list-style:none; padding:0; margin:clamp(18px, 1.87vw, 27px) 0 0;
  width:fit-content; }                                   /* lijst als blok, regels links */
.v2-tb-vink li{ display:flex; align-items:flex-start; gap:10px; margin-bottom:12px;
  font-size:clamp(15px, 1.25vw, 18px); line-height:1.45; color:var(--brand-dark); }
.v2-tb-vink svg{ width:18px; height:18px; flex:0 0 auto; color:#22c55e; margin-top:3px; }
.v2-tb-beeld img{ width:100%; aspect-ratio:609/560; object-fit:cover; display:block; border-radius:0 37.5px; }

/* ---------- FAQ ---------- */
.v2-faq{
  padding:clamp(42px, 4.17vw, 60px) 0 clamp(63.5px, 7.29vw, 105px);
  min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  background:var(--bg);
}
.v2-faq h2{
  font-size:clamp(34.1px, 4.17vw, 60px); line-height:1.2; font-weight:400;
  color:var(--brand-dark); text-align:center; margin:0 auto clamp(24px, 2.6vw, 37.5px); max-width:24ch;
}
.v2-faq .faq{ max-width:900px; margin-inline:auto; }
.v2-faq .faq-item{ position:relative; border-top:var(--lijn-d) solid var(--bronze); }
.v2-faq .faq-item::before{                              /* haaietand op elke scheidingslijn */
  content:""; position:absolute; left:0; right:0; top:calc(var(--lijn-d) * -1);
  height:calc(var(--lijn-d) + var(--tand-h)); background:var(--bronze);
  clip-path:polygon(0 0, 100% 0, 100% var(--lijn-d),
    calc(50% + var(--tand-hw)) var(--lijn-d), 50% calc(var(--lijn-d) + var(--tand-h)),
    calc(50% - var(--tand-hw)) var(--lijn-d), 0 var(--lijn-d));
  pointer-events:none;
}
.v2-faq .faq-item:last-child{ border-bottom:var(--lijn-d) solid var(--bronze); }
.v2-faq .faq-q{
  width:100%; display:flex; align-items:center; justify-content:space-between; gap:18px;
  padding:clamp(18px, 1.87vw, 27px) 0; background:none; border:0; cursor:pointer;
  text-align:left; font-family:var(--font-display);
  font-size:clamp(17px, 1.53vw, 22px); line-height:1.35; font-weight:700; color:var(--brand-dark);
}
.v2-faq .faq-q:hover{ color:var(--bronze); }
.v2-faq .faq-icon{
  position:relative; flex:0 0 auto; width:22px; height:22px; color:var(--bronze);
}
.v2-faq .faq-icon::before, .v2-faq .faq-icon::after{
  content:""; position:absolute; left:50%; top:50%; background:currentColor;
  transform:translate(-50%,-50%);
}
.v2-faq .faq-icon::before{ width:22px; height:2px; }
.v2-faq .faq-icon::after{ width:2px; height:22px; transition:opacity .25s var(--ease); }
.v2-faq .faq-item.open .faq-icon::after{ opacity:0; }    /* plus wordt min */
.v2-faq .faq-a{ overflow:hidden; max-height:0; transition:max-height .45s var(--ease); }
.v2-faq .faq-item.open .faq-a{ max-height:600px; }
.v2-faq .faq-a-inner{
  padding:0 0 clamp(18px, 1.87vw, 27px);
  font-size:clamp(16px, 1.25vw, 18px); line-height:1.6; color:var(--text); max-width:80ch;
}

/* ---------- tekstpagina's (legal, sitemap, bedankt, 404) ---------- */
.v2-tekst{
  padding:clamp(42px, 4.17vw, 60px) 0 clamp(63.5px, 7.29vw, 105px);
  min-height:100svh; background:var(--bg);
}
.v2-tekst-kolom{ max-width:840px; margin-inline:auto; }
.v2-tekst-kolom h2{
  font-size:clamp(25.6px, 3.125vw, 45px); line-height:1.2; font-weight:400;
  color:var(--brand-dark); margin:clamp(30px, 3.13vw, 45px) 0 clamp(10px, 1.04vw, 15px);
}
.v2-tekst-kolom h2:first-child{ margin-top:0; }
.v2-tekst-kolom h3{
  font-size:clamp(18px, 1.53vw, 22px); line-height:1.3; font-weight:700;
  color:var(--brand-dark); margin:clamp(22px, 2.08vw, 30px) 0 8px;
}
.v2-tekst-kolom p, .v2-tekst-kolom li, .v2-tekst-kolom td, .v2-tekst-kolom th{
  font-size:clamp(16px, 1.25vw, 18px); line-height:1.65; color:var(--text);
}
.v2-tekst-kolom p{ margin:0 0 1em; }
.v2-tekst-kolom ul, .v2-tekst-kolom ol{ margin:0 0 1.4em; padding-left:1.3em; }
.v2-tekst-kolom li{ margin-bottom:8px; }
.v2-tekst-kolom a{ color:var(--bronze); }
.v2-tekst-kolom table{ width:100%; border-collapse:collapse; margin:0 0 1.4em; display:block; overflow-x:auto; }
.v2-tekst-kolom th, .v2-tekst-kolom td{ padding:12px 14px; border-bottom:1px solid #E1E1E1; text-align:left; }
.v2-tekst-kolom th{ font-weight:700; color:var(--brand-dark); }

/* sitemap-kolommen */
.v2-sm-grid{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
  gap:clamp(24px, 3.13vw, 45px);
}
.v2-sm-groep h2{ font-size:clamp(19px, 1.53vw, 22px); line-height:1.3; font-weight:700; margin:0 0 12px; }
.v2-sm-groep ul{ list-style:none; padding:0; margin:0; }
.v2-sm-groep li{ margin-bottom:8px; }
.v2-sm-groep a{ color:var(--text); text-decoration:none; font-size:clamp(15px, 1.146vw, 16.5px); }
.v2-sm-groep a:hover{ color:var(--bronze); }

/* ---------- mobiel ---------- */
@media (max-width:1023px){
  .v2-rg-grid{ grid-template-columns:1fr; }              /* vaste mobielregel: één kolom */
  .v2-tb-grid{ grid-template-columns:1fr; text-align:center; }
  .v2-tb-vink{ margin-inline:auto; text-align:left; }
  .v2-rg-kaart, .v2-tb-beeld img{ border-radius:0 21px; }
  .v2-faq .faq-q{ font-size:17px; }
}

/* ============================================================
   VARIANT 2 — TWEE OVERLOOPCORRECTIES (gemeten 17-08-2026)
   ============================================================ */

/* 1. De accentlijn van de social-sectie loopt op desktop bewust een stuk
   over de foto heen (referentie: 98 tot 824, terwijl de foto op 660 begint).
   Zodra de sectie stapelt staat er geen foto meer naast, en stak diezelfde
   overhang buiten het scherm: op 768 breed werd de lijn 755px in een
   ouder van 732px. Onder de stapelgrens loopt hij daarom precies mee. */
@media (max-width:1023px){
  .v2-social-tand{ width:100% !important; }
}

/* 2. Lange tokens zoals Drachten hebben geen afbreekpunt en
   duwden de projecthero op 390 buiten het scherm (h1 398px in een kolom van
   348px). Koppen en labels mogen daarom binnen het woord afbreken. */
.v2-pd-hero h1, .v2-pd-eyebrow, .v2-pd-plaats,
.v2-gh h1, .v2-gh .v2-gh-kop, .v2-art-hero h1, .v2-kb-uit h2,
.v2-cs-title, .v2-art-rij h3, .v2-rg-tekst h3,
.v2-st-getal{
  overflow-wrap:anywhere; word-break:break-word;
}

/* ============================================================
   VARIANT 2 — FOOTER: AFSTANDEN GELIJK AAN DE REFERENTIE
   Gemeten aan randoco.com op 1440x900 en 390x844.
   Bij ons stond er 37px tussen de linkregels waar de referentie
   er 28 heeft; dat is de ruimte die te ruim aanvoelde.
   Referentie 1440: contentblok padding 90/90, kolomkop 15/21 grijs,
   links 13,5/17,55 wit, rijafstand 28, kop naar eerste link 36,
   gegevensblok 137 onder de linkkolommen, onderbalk padding 17,25.
   Referentie 390: padding 53/81,75, links 16,09/20,91,
   rijafstand 31, kop naar eerste link 39, tussen groepen 73.
   ============================================================ */
.v2-ft{
  padding-top:90px !important;                      /* [ref: 90] */
  padding-bottom:0 !important;                      /* de 90 hoort NA de haarlijn, zie .footer-bottom */
  row-gap:0 !important;
}
/* De gap van .v2-ft-menus (74) stapelde op de margin-top van .v2-ft-onder (91)
   tot 165, waar de referentie 91 heeft. De margin is de enige bron. */
.v2-ft-menus{ gap:0 !important; }
.v2-ft-kolom ul{
  gap:0 !important;                                 /* de regelhoogte bepaalt de pitch */
}
.v2-ft-kolom ul li{
  padding:5.2px 0;                                  /* 17,55 + 2x5,2 = 28 [ref: pitch 28] */
  line-height:17.55px;
}
.v2-ft-kolom a, .v2-ft-kolom button.cookie-settings-open{
  line-height:17.55px !important;                   /* [ref: 13,5/17,55] */
}
.v2-ft-kolom .v2-ft-titel{
  margin-bottom:15px !important;                    /* 21 + 15 = 36 tot de eerste link [ref: 36] */
  line-height:21px;                                 /* [ref: 15/21] */
}
.v2-ft-onder{
  margin-top:91px !important;                       /* [ref: 91 tussen de linkkolommen en de gegevens] */
  gap:30px !important;                              /* [ref: 30] */
}
.v2-ft-gegevens .v2-ft-titel{ margin-bottom:16px !important; }   /* [ref: 37 tot de eerste regel] */
.v2-ft-gegevens p, .v2-ft-gegevens a, .v2-ft-gegevens span{
  line-height:17.55px !important;                   /* [ref: pitch 23 in het gegevensblok] */
}
.v2-ft-gegevens li + li, .v2-ft-gegevens p + p{ margin-top:5.45px; }
.v2-ft-onderbalk, .v2-ft-copy{
  padding-top:17.25px !important; padding-bottom:17.25px !important;   /* [ref: 17,25] */
}

@media (max-width:1023px){
  .v2-ft{
    padding-top:53px !important;                    /* [ref mobiel: 53,06] */
    padding-bottom:0 !important;                    /* de 81,75 hoort NA de haarlijn, zie .footer-bottom */
    row-gap:0 !important;
  }
  .v2-ft-kolom ul li{
    padding:5.05px 0;                               /* 20,91 + 2x5,05 = 31 [ref: pitch 31] */
    line-height:20.91px;
  }
  .v2-ft-kolom a, .v2-ft-kolom button.cookie-settings-open{ line-height:20.91px !important; }
  .v2-ft-kolom .v2-ft-titel{ margin-bottom:16px !important; line-height:22.65px; }  /* [ref: 39] */
  .v2-ft-kolom + .v2-ft-kolom{ margin-top:42px; }   /* [ref: 73 tussen de groepen] */
  .v2-ft-onder{ margin-top:84px !important; }        /* [ref mobiel: 84 tot het gegevensblok; gap van .v2-ft-menus staat op 0] */
  .v2-ft-onderbalk, .v2-ft-copy,
  .footer .footer-bottom{
    padding-top:15px !important; padding-bottom:15px !important;  /* [ref mobiel: 15] */
  }
}

/* Het merkblok links rekte mee met de rijhoogte en liet daardoor ~198px leeg
   onder de knop staan. Het blok begint nu gewoon bovenaan en houdt zijn eigen
   hoogte, zodat dat lege vlak verdwijnt. */
.v2-ft-merk{ align-self:start; }

/* ============================================================
   VARIANT 2 — MARKTSEGMENTEN-PAGINA (letterlijke nabouw van
   /solutions/market-segments-and-products-types/, gemeten 17-08-2026).
   Secties: hero beeld links + geel vlak, dienstenoverzicht, accordeon
   met beeld rechts, meer informatie, overige diensten (slider),
   certificeringen, gerelateerde projecten (zwart), prijzen (zwart),
   kennisbank uitgelicht, social, offerte-CTA.
   ============================================================ */
/* LETTERLIJK de referentie: secties op hun eigen gemeten hoogte, GEEN
   schermhoogte-centrering (bewuste afwijking van de 100svh-regel, keuze
   Dikkie 17-08: de pagina wordt 1-op-1 nagebouwd). */
.v2-ms section{ min-height:0; }
.v2-ms-wrap{ max-width:1245px; margin:0 auto; padding:0; width:100%; }  /* [ref DOM: content exact op x98, 1245 breed, geen binnenpadding] */
@media (max-width:1285px){ .v2-ms-wrap{ padding:0 20px; } }

/* 1. hero: beeld links tot de rand, geel afgerond vlak, tekst rechts [ref: 824] */
.v2-ms-hero{ position:relative; background:#fff; padding:0; }
  /* [ref: sectie 824 = foto 764 + 60 onder; GEEN schermvullende hoogte en geen
     flex - flex liet de inner-grid krimpen (foto 322 i.p.v. 678)] */
  /* [regel: eerste scherm = alleen de hero, op elk formaat] */  /* [ref: foto loopt tot de paginatop, achter de balk door] */
.v2-ms-hero-inner{ display:grid; grid-template-columns:47% minmax(0,600px); align-items:center; gap:clamp(40px,5.9vw,85px); }  /* [ref DOM: foto 678 + 84 + tekst 600] */  /* [ref: foto 604/1440] */
.v2-ms-hero-beeld{ position:relative; align-self:start; height:clamp(400px,53.06vw,764px); }   /* [ref DOM: 678 x 764 vanaf de paginatop] */
.v2-ms-hero-beeld img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; border-radius:0 0 60px 0; }  /* [ref DOM: foto zelf rechtsonder 60 rond] */
.v2-ms-hero-geel{
  position:absolute; z-index:2; right:0; top:clamp(62px,8.6vw,124px);  /* [ref: volledig op de foto, rechterrand gelijk met de fotorand, top 124] */
  width:clamp(73px,10.16vw,146px); height:clamp(322px,44.45vw,640px);  /* [ref: 146,25 breed, onderrand exact op de fotobodem (764)] */
  background:var(--gold,#F59E0B);
  border-radius:clamp(30px,4.17vw,60px) 0;   /* [ref DOM: 60px 0px - linksboven en rechtsonder rond] */
}
.v2-ms-hero-tekst{ padding:0; max-width:600px; }  /* [ref DOM: kolom exact 600] */
.v2-ms .v2-ms-hero-tekst h1{ font-size:clamp(36px,4.17vw,60px) !important;  /* [ref DOM: 60/72] */ line-height:1.2 !important; margin:0 0 30px; color:var(--brand-dark); }  /* [ref: 46; wint van de sitebrede h1-regel] */
.v2-ms .v2-ms-hero-tekst p{ font-size:21px; line-height:1.4; margin:0 0 32px; max-width:600px; }  /* [ref DOM: 21/29,4; knop 32 onder de tekst] */               /* [ref: 18/1,7 op 600] */
.v2-ms .v2-ms-hero-tekst .btn{/* [ref DOM: 158x53, radius 0 15, 18/700/25,2] */;}                                                                                                               /* [ref: Get Started, vlak en rechthoekig] */
@media (max-width:1023px){
  .v2-ms-hero-inner{ grid-template-columns:1fr; }
  .v2-ms-hero-beeld{ min-height:58vw; }
  .v2-ms-hero-geel{ width:9vw; height:38vw; top:12vw; right:0; border-radius:999px 0 0 999px; }
  .v2-ms-hero-tekst{ padding:24px 0 8px; }
}

/* 2. dienstenoverzicht [ref: 421, wit, watermerk links] */
.v2-ms-overzicht{ position:relative; background:#fff; overflow:hidden; text-align:center; }
.v2-ms-overzicht .v2-ms-eyebrow{ display:block; font-size:24px; font-weight:700; color:#737373; line-height:33.6px; margin-bottom:58px; }  /* [ref DOM: 24/700 grijs, 58 tot de statement] */
.v2-ms-overzicht h2{ font-size:33px; line-height:39.6px; font-weight:700; max-width:840px; margin:0 auto; color:#000; }  /* [ref DOM: 33/39,6 vet op 840, drie regels] */
.v2-ms-watermerk{ position:absolute; left:-3vw; top:50%; transform:translateY(-50%); width:14vw; opacity:.07; }

/* 3. accordeon links, beeld rechts met geel blok [ref: 646, gespiegelde hp-services] */
.v2-ms-acc{ background:#fff; position:relative; }
.v2-ms-acc-inner{ display:grid; grid-template-columns:minmax(0,1fr) 50vw; align-items:center; gap:clamp(24px,2.8vw,40px); }
.v2-ms-acc-lijst{ padding:116px 0 0 30px; max-width:645px; justify-self:start; align-self:start; width:100%; }  /* [ref DOM: x30, eerste rij op 116 van de sectietop] */
.v2-ms-acc-item{ border-bottom:1px solid #E1E1E1; }
.v2-ms-acc-kop{
  appearance:none; background:none; border:0; width:100%; min-height:86px;          /* [ref DOM: rijpitch 87] */
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  font-family:var(--font-kop); letter-spacing:normal; font-size:27px; font-weight:700; color:#000; line-height:37.8px;  /* [ref DOM: 27/700 in de brede sans] */
  cursor:pointer; text-align:left; padding:8px 2px;
}
.v2-ms-acc-item .v2-mm-tabplus{ width:20px; height:20px; color:var(--bronze); }
.v2-ms-acc-item p{ margin:0 0 20px; font-size:18px; line-height:25.2px; display:none; }  /* [ref: 18/25,2] */
.v2-ms-acc-item.is-open p{ display:block; }
.v2-ms-acc-item.is-open .v2-mm-tabplus::after{ opacity:0; }
.v2-ms-acc-beeld{ position:relative; align-self:stretch; min-height:min(45vw,646px); }
.v2-ms-acc-beeld img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; border-radius:0 0 0 60px; }
.v2-ms-acc-geel{ position:absolute; z-index:2; right:0; top:calc(-1 * clamp(34px,4.65vw,67px)); width:clamp(140px,19.5vw,281px); height:clamp(66px,9.24vw,133px); background:var(--gold,#F59E0B); border-radius:0 0 0 28px; }  /* [ref gemeten: 281x133 op x1159, top 67 boven de foto, radius 28] */
.v2-ms-acc-streep{ position:absolute; z-index:1; left:-105px; top:0; width:calc(105px + 100%); height:3px; background:var(--gold,#F59E0B); }  /* [ref gemeten op 1440 EN 1920: vaste 105px voor de foto, doorlopend tot de schermrand, onder het gele blok (z boven de foto, onder het blok)] */
@media (max-width:1023px){
  .v2-ms-acc-inner{ grid-template-columns:1fr; }
  .v2-ms-acc-beeld{ min-height:58vw; order:-1; }
  .v2-ms-acc-lijst{ padding:0 clamp(14px,4.4vw,20px); justify-self:stretch; max-width:none; }
}

/* 4. meer informatie [ref: 984, #F8FAFC, traanplaatstrook onderaan] */
.v2-ms-info{ background:#F8FAFC; position:relative; border-radius:0 0 60px 60px; }  /* [ref DOM: beide onderhoeken 60] */
.v2-ms-info h2{ font-size:clamp(44px,5.2vw,75px); line-height:1.2; font-weight:700; margin:0 0 75px; color:#000; }  /* [ref DOM: 75/90, 75 tot rij 1] */
.v2-ms-info-rij{ display:grid; grid-template-columns:285px 1fr; gap:71px; align-items:start; padding:0; margin:0 0 75px; }
.v2-ms-info-rij + .v2-ms-info-rij{ border-top:1px solid #E1E1E1; padding-top:75px; }  /* [ref gemeten: lijn rgb(225) op y2427, volle wrapbreedte, 75 boven en onder] */
.v2-ms-info-rij:last-child{ margin-bottom:75px; }  /* [ref DOM: ook 75 onder de laatste rij] */
.v2-ms-info-rij img{ width:285px; height:236px; object-fit:cover; border-radius:0 37.5px; }  /* [ref DOM: 285x236, radius 0 37,5] */
.v2-ms-info-rij h3{ font-size:clamp(24px,2.29vw,33px); line-height:1.2; font-weight:700; margin:14px 0 20px; color:#000; }  /* [ref DOM: 33/39,6] */
.v2-ms-info-rij p{ margin:0; font-size:21px; line-height:29.4px; }  /* [ref DOM: 21/29,4] */
.v2-ms-info::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:clamp(34px,3.8vw,55px);
  background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='25' height='29' viewBox='0 0 25 29'><g stroke='%23E0E0E0' stroke-width='3.2' stroke-linecap='round'><path d='M1.6 1.6L12.4 12.4'/><path d='M14.6 26.4L25.4 15.6'/><path d='M-10.4 26.4L0.4 15.6'/></g></svg>");
  background-size:25px 29px;                       /* [ref: traanplaattegel 25, lijnen E0E0E0 vol dekkend] */
  border-radius:0 0 60px 60px; opacity:1;
}
@media (max-width:1023px){ .v2-ms-info-rij{ grid-template-columns:96px 1fr; } .v2-ms-info-rij img{ width:96px; height:76px; } }


/* Zwarte secties: koppen ALTIJD wit; de sitebrede kopregel wint anders op
   specificiteit (bekende valkuil, zelfde als bij .v2-cta-kop). */
.v2-ms-proj .v2-ms-proj-kop h2, .v2-ms-proj h2{ color:#fff !important; }
.v2-ms-awards h2{ color:#fff !important; }
.v2-ms-awards .v2-ms-zegel span{ color:#fff !important; display:inline-block; min-height:63px; }  /* [ref: prijsnamen over 3 regels] */
/* Sectiehoogtes exact naar de referentiemeting (421/984/941/763/1096/850) */
.v2-ms-hero{ padding-bottom:60px; }
/* koppen op de dienstpagina's volgen het kop-token, net als op over-ons
   [ref: alle koppen in dezelfde brede sans, in de donkere merkkleur - niet in
   de condensed display-letter en niet in de afwijkende #3a444c] */
.v2-ms h2, .v2-ms h3, .v2-ms h4, .v2-ms .v2-ms-kop{
  font-family:var(--font-kop); letter-spacing:normal; color:var(--kop-zwart) !important;
}                                   /* [ref DOM: pb 60, totaal 824] */
.v2-ms-overzicht{ padding:60px 0 150px; }                             /* [ref DOM: pt 60, pb 150] */
.v2-ms-acc{ padding:0; }                                              /* [ref DOM: foto flush aan de sectietop, h 646] */
.v2-ms-info{ padding:60px 0; }  /* [ref DOM: pt 60, pb 60, h 984] */
.v2-ms-os{ padding:clamp(48px,6.25vw,90px) 0; }                       /* [ref: 941] */
.v2-ms-certs{ padding:clamp(52px,6.9vw,100px) 0; }                    /* [ref: 763] */
.v2-ms-proj{ padding:clamp(52px,6.9vw,100px) 0; }                     /* [ref: 1096] */
.v2-ms-awards{ padding:clamp(48px,6.25vw,90px) 0; }                   /* [ref: 850] */
.v2-ms-kb{ padding:clamp(52px,6.9vw,100px) 0; }                       /* [ref: featured] */

/* 5. overige diensten [ref DOM: kop 75 links, kaarten 822 met beeld 307x374 rechts] */
.v2-ms-os{ background:#fff; padding:60px 0; }
.v2-ms-os h2{ font-size:clamp(44px,5.2vw,75px); line-height:1.2; font-weight:700; text-align:left; margin:0 0 116px; color:#000; }  /* [ref: 116 tot de kaarten] */
.v2-ms-os-spoor{ display:flex; gap:48px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:8px; }
.v2-ms-oskaart{ flex:0 0 clamp(320px,57vw,822px); scroll-snap-align:start; background:#F4F4F4;
  border-radius:0 0 40px 0; padding:48px; display:grid; min-height:530px;   /* [ref: kaart 530 hoog] */
  grid-template-columns:minmax(0,1fr) clamp(160px,21.3vw,307px); gap:16px 48px; align-items:start; }
.v2-ms-osster{ width:44px; height:44px; border-radius:50%; background:var(--gold,#F59E0B);
  display:flex; align-items:center; justify-content:center; color:#fff; font-size:18px; grid-column:1; }
.v2-ms-oskaart h3{ font-size:clamp(24px,2.29vw,33px); line-height:1.2; font-weight:700; margin:10px 0 16px; color:#000; }
.v2-ms-oskaart p{ font-size:18px; line-height:25.2px; margin:0 0 22px; }
.v2-ms-oskaart .btn{display:inline-block;}
.v2-ms-oskaart img{ width:100%; aspect-ratio:307/374; object-fit:cover; border-radius:0 37.5px; grid-column:2; grid-row:1 / span 2; margin-top:14px; }  /* [ref: beeld naast ster en tekst, start 62 van de kaarttop] */
.v2-ms-os-teller{ display:flex; align-items:center; justify-content:flex-end; gap:14px;
  font-size:21px; color:#000; margin-top:43px; }  /* [ref: teller 57 onder de kaartrand] */
/* 6+8. zegels en prijzen [ref DOM: 123x123 op kolommen van 427, kop 60/72 gecentreerd] */
.v2-ms-certs{ background:#fff; text-align:center; padding:60px 0; }
.v2-ms-certs h2, .v2-ms-awards h2{ font-size:clamp(38px,4.17vw,60px); line-height:1.2; font-weight:700; margin:0 0 clamp(60px,10.4vw,150px); }
.v2-ms-zegels{ display:flex; overflow-x:auto; scroll-snap-type:x mandatory; }  /* [ref: slider, 4e kolom aangesneden] */
.v2-ms-zegel{ flex:0 0 clamp(300px,29.65vw,427px); scroll-snap-align:start; padding:0 20px 75px; position:relative; }
.v2-ms-zegel::after{ content:""; position:absolute; right:0; top:0; bottom:0; width:1px; background:#E1E1E1; }
  /* [ref gemeten: lijn NA elke kolom op x492/919/1346, rgb(225); als pseudo omdat een oude sitebrede regel border-right !important doodt] */

.v2-ms-zegel img, .v2-ms-zegel svg{ width:123px; height:123px; margin:0 auto 40px; display:block; border-radius:50%; background:rgba(127,127,127,.14); }  /* [ref: gevulde cirkel 123] */
.v2-ms-zegel span{ font-size:18px; font-weight:700; color:#000; }
.v2-ms-voortgang{ position:relative; height:1px; background:#E5E5E5; margin-top:150px; }  /* [ref: ~150 onder de rij] */
.v2-ms-voortgang i{ position:absolute; left:6%; top:50%; width:15px; height:15px; margin-top:-7.5px;
  border:1.5px solid var(--bronze); border-radius:50%; background:#fff; }
.v2-ms-voortgang i::after{ content:""; position:absolute; inset:3.5px; background:var(--bronze); border-radius:50%; }
.v2-ms-awards{ background:#000; color:#fff; text-align:center; padding:60px 0; position:relative; }
.v2-ms-awards::before{
  content:""; position:absolute; left:5%; right:5%; top:72px; height:140px;
  background-image:var(--v2-traanplaat-fel); background-size:var(--v2-tegel);
  opacity:.22;                                     /* [ref gemeten: band 1300x140 achter de kop, grijs 51-70 op zwart] */
}
.v2-ms-awards > *{ position:relative; }
.v2-ms-awards h2{ color:#fff !important; }
.v2-ms-awards .v2-ms-zegel::after{ background:#737373; }  /* [ref gemeten: rgb(115) op zwart] */
.v2-ms-awards .v2-ms-zegel span{ color:#fff !important; display:inline-block; min-height:63px; }  /* [ref: prijsnamen over 3 regels] */
.v2-ms-awards .v2-ms-voortgang{ background:rgba(255,255,255,.16); }
.v2-ms-awards .v2-ms-voortgang i{ background:#000; }
@media (max-width:1023px){ .v2-ms-zegels{ grid-template-columns:1fr; } .v2-ms-zegel{ border-left:0; border-top:1px solid #E5E5E5; } .v2-ms-zegel:first-child{ border-top:0; } }
/* 7. gerelateerde projecten [ref DOM: zwart, pt 105 pb 30, kaarten 609 met beeld 609x414] */
.v2-ms-proj{ background:#000; color:#fff; position:relative; padding:105px 0 30px; }
.v2-ms-proj::before{ content:""; position:absolute; right:0; top:0; width:31vw; height:60%;
  background-image:var(--v2-traanplaat-fel); background-size:var(--v2-tegel); opacity:.2;
  background-attachment:scroll; }
  /* [ref gemeten per band: EEN begrensd blok rechts, x994-1440 (446 breed), van de
     sectietop tot de onderrand van de fotorij (y4579-5237 = 60%); zichtbaar boven
     de foto's en door de tussenruimtes; de rest van de sectie is egaal zwart] */
.v2-ms-proj .v2-ms-wrap{ position:relative; }
.v2-ms-proj-kop{ display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:49px; }
.v2-ms-proj-kop h2{ font-size:clamp(44px,5.2vw,75px); line-height:1.2; color:#fff !important; margin:0; }
.v2-ms-proj-kop .btn{ border:1px solid #fff; background:transparent; color:#fff;
  border-radius:0 15px; padding:13.9px 25px; font-size:18px; font-weight:700; line-height:25.2px; margin-top:19px; }
.v2-ms-proj-spoor{ display:flex; gap:55px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:8px; }
.v2-ms-projkaart{ flex:0 0 clamp(300px,42.3vw,609px); scroll-snap-align:start; }
.v2-ms-projkaart img{ width:100%; aspect-ratio:609/414; object-fit:cover; display:block; border-radius:0 37.5px; }  /* [ref DOM: wrapper 0px 37,5px, overflow hidden] */
.v2-ms-projkaart h3{ font-size:27px; line-height:29.7px; font-weight:700; margin:34px 0 22px; color:#fff; }
.v2-ms-projrij{ display:flex; justify-content:space-between; font-size:15px; padding:19px 0; border-top:1px solid #E1E1E1; }  /* [ref: rgb(225), 1px, rijpitch 64] */
.v2-ms-projrij:last-of-type{ border-bottom:1px solid #E1E1E1; }  /* [ref: ook een lijn onder de laatste rij] */
.v2-ms-projrij b{ font-weight:400; color:rgba(255,255,255,.6); }
.v2-ms-projkaart .btn{ margin-top:22px; background:var(--bronze); color:#fff; border-radius:0 15px;
  padding:13.9px 25px; font-size:18px; font-weight:700; line-height:25.2px; display:inline-block; }
/* [uitlijnregel CHECKLIST]: in een slider-spoor is elke kaart een flexkolom:
   titelblok minimaal 2 regels hoog, knop altijd onderaan uitgelijnd. Zo staan
   knoppen en lijnen gelijk bij titels van 1 of 2 regels; een uitzonderlijk
   lange titel rekt alle kaarten in het spoor mee (align-items:stretch). */
.v2-ms-proj-spoor .v2-ms-projkaart{ display:flex; flex-direction:column; }
.v2-ms-proj-spoor .v2-ms-projkaart h3{ min-height:calc(2 * 29.7px); }
.v2-ms-proj-spoor .v2-ms-projkaart .btn{ margin-top:auto; align-self:flex-start; }
.v2-ms-proj-spoor .v2-ms-projrij:last-of-type{ margin-bottom:22px; }
.v2-ms-proj .v2-ms-voortgang{ background:rgba(255,255,255,.16); margin-top:130px; }
.v2-ms-proj .v2-ms-voortgang i{ background:#000; }

/* 9. kennisbank uitgelicht [ref DOM: zigzag 604/604 gap 37, beelden 604x552, kop 135] */
.v2-ms-kb{ background:#fff; padding:60px 0 105px; }
.v2-ms-kb-zigzag{ display:grid; grid-template-columns:1fr 1fr; gap:0 37px; align-items:start; }
.v2-ms-kb-kol-r{ padding-top:0; }
.v2-ms-kb-intro h2{ font-size:clamp(64px,9.375vw,135px); line-height:1; font-weight:700; margin:0 0 38px; color:#000; }
.v2-ms-kb-intro{ margin-bottom:67px; }
.v2-ms-kbkaart{ margin-bottom:141px; }
.v2-ms-kb-kol > .v2-ms-kbkaart:last-child{ margin-bottom:0; }
.v2-ms-kbkaart img{ width:100%; aspect-ratio:604/552; object-fit:cover; display:block; }
.v2-ms-kbkaart h3{ font-size:27px; line-height:29.7px; font-weight:700; margin:34px 0 22px; color:#000; }
.v2-ms-kbkaart p{ font-size:18px; line-height:25.2px; margin:0 0 22px; }
.v2-ms-kbvoet{ display:flex; align-items:center; justify-content:space-between; gap:16px; }
.btn.v2-ms-kbknop{display:inline-block;}
.v2-ms-kbmeta{ font-size:18px; font-weight:700; color:#000; }
@media (max-width:1023px){ .v2-ms-kb-zigzag{ grid-template-columns:1fr; } .v2-ms-kbkaart{ margin-bottom:60px; } }


/* ============ MARKTSEGMENTEN MOBIEL [ref DOM 390, gemeten 17-08] ============ */
@media (max-width:1023px){
  .v2-ms-wrap{ padding:0 21px; }                                   /* [ref: marge 21] */
  .v2-ms-hero-inner{ grid-template-columns:1fr; gap:0; }
  .v2-ms-hero-beeld{ order:-1; height:112.6vw; min-height:0; }     /* [ref: 390x439] */
  .v2-ms-hero-beeld img{ border-radius:0 0 22.6px 0; }             /* [ref] */
  .v2-ms-hero-geel{ width:21.5vw; height:70vw; top:42.3vw; right:0;
    border-radius:clamp(12px,4.1vw,16px) 0 clamp(12px,4.1vw,16px) 0; }  /* [ref: 84x273, onder flush] */
  .v2-ms-hero-tekst{ padding:37px 17px 0; max-width:none; }
  .v2-ms .v2-ms-hero-tekst h1{ font-size:34px !important; line-height:1.2 !important; margin-bottom:17px; }
  .v2-ms .v2-ms-hero-tekst p{ font-size:16.5px; line-height:1.6; margin-bottom:23px; }/* leeggemaakt, vorm komt uit tokens-referentie.css: .v2-ms .v2-ms-hero-tekst .btn */
  .v2-ms-hero{ padding-bottom:42px; }                              /* [ref: 41,75] */
  .v2-ms-overzicht{ padding:42px 0 95px; }
  .v2-ms-overzicht .v2-ms-eyebrow{ font-size:18.6px; margin-bottom:46px; }
  .v2-ms-overzicht h2{ font-size:23px; line-height:1.44; max-width:347px; }
  .v2-ms-acc-inner{ grid-template-columns:1fr; gap:0; }
  .v2-ms-acc-beeld{ order:-1; min-height:94.6vw; }                 /* [ref: 390x369] */
  .v2-ms-acc-beeld img{ border-radius:0; }
  .v2-ms-acc-geel{ width:41vw; height:8.5vw; top:-4vw; border-radius:0 0 0 16px; }  /* [ref mobiel: 160 breed] */
  .v2-ms-acc-streep{ display:none; }                               /* [ref mobiel: geen losse streep zichtbaar] */
  .v2-ms-acc-lijst{ padding:43px 21px 40px; max-width:none; }      /* [ref: eerste rij 64 na foto] */
  .v2-ms-acc-kop{ font-size:16.9px; line-height:1.5; min-height:82px; }  /* [ref: 16,9/700, pitch 83] */
  .v2-ms-acc-item p{ font-size:16.5px; }
  .v2-ms-info{ padding:42px 0; border-radius:0 0 30px 30px; }
  .v2-ms-info h2{ font-size:42.6px; margin-bottom:26px; }          /* [ref: 42,6] */
  .v2-ms-info-rij{ grid-template-columns:1fr; gap:24px; margin:0 0 60px; }
  .v2-ms-info-rij img{ width:100%; height:auto; aspect-ratio:348/288; border-radius:0 21.3px; }  /* [ref: 348x288] */
  .v2-ms-info-rij h3{ font-size:23px; margin:0 0 13px; }
  .v2-ms-info-rij p{ font-size:16.5px; line-height:1.5; }
  .v2-ms-info-rij:last-child{ margin-bottom:20px; }
  .v2-ms-os{ padding:42px 0; }
  .v2-ms-os h2{ font-size:42.6px; margin-bottom:65px; }
  .v2-ms-oskaart{ flex:0 0 78.5vw; grid-template-columns:1fr; padding:22px; min-height:0; gap:12px; }  /* [ref: kaart ~306, beeld boven] */
  .v2-ms-oskaart img{ grid-column:1; grid-row:auto; margin-top:0; width:100%; aspect-ratio:262/148; border-radius:0 21.3px; }  /* [ref: 262x148] */
  .v2-ms-oskaart h3{ font-size:23px; margin:6px 0 10px; }
  .v2-ms-oskaart p{ font-size:16.5px; line-height:1.55; margin-bottom:18px; }
  .v2-ms-os-teller{ font-size:17px; margin-top:26px; }
  .v2-ms-certs{ padding:42px 0; }
  .v2-ms-certs h2, .v2-ms-awards h2{ font-size:34.1px; margin-bottom:60px; }  /* [ref: 34,1] */
  .v2-ms-zegel{ flex:0 0 80vw; scroll-snap-align:center; padding:0 20px 45px; border:0; }
  .v2-ms-voortgang{ margin-top:60px; }
  .v2-ms-proj{ padding:60px 0 30px; }
  .v2-ms-proj-kop{ flex-direction:column; align-items:flex-start; margin-bottom:32px; }
  .v2-ms-proj-kop h2{ font-size:42.6px; }
  .v2-ms-projkaart{ flex:0 0 84vw; }
  .v2-ms-projkaart h3{ font-size:22px; margin:22px 0 14px; }
  .v2-ms-proj .v2-ms-voortgang{ margin-top:16px; }
  .v2-ms-awards{ padding:42px 0; }
  .v2-ms-awards .v2-ms-zegel span{ min-height:0; }
  .v2-ms-kb{ padding:42px 0 60px; }
  .v2-ms-kb-intro h2{ font-size:56px; margin-bottom:24px; }
  .v2-ms-kb-intro{ margin-bottom:48px; }
  .v2-ms-kbkaart{ margin-bottom:40px; }
  .v2-ms-kbkaart h3{ font-size:22px; margin:20px 0 12px; }
  .v2-ms-kbkaart p{ font-size:16.5px; }
  .v2-ms-kbvoet{ flex-wrap:wrap; }
  .v2-ms-kb-intro h2{ font-size:44.2px; margin-bottom:21px; }   /* [ref mobiel: 44,2 op 1 regel] */
  .v2-ms-kb-intro h2 br{ display:none; }
  .v2-ms-kb-intro .v2-ms-kbknop, .v2-ms-proj-kop .btn{display:block; width:100%; text-align:center; margin-top:0;}   /* [ref: knop 348x57 vol breed] */
  .v2-ms-kbkaart img{ aspect-ratio:348/191; }                    /* [ref mobiel: 348x191 gerenderd] */
  .v2-ms-kbkaart h3{ font-size:22.6px; margin:21px 0 14px; }
  .v2-ms-kbvoet{ flex-direction:column-reverse; align-items:flex-start; gap:12px; }  /* [ref: meta boven de knop] */
  .v2-ms-kbmeta{ font-size:12.5px; }
  .v2-ms-kbkaart .v2-ms-kbknop{width:auto; display:inline-block;}
  .v2-ms-projkaart{ flex:0 0 73.3vw; }                           /* [ref: kaart 286] */
  .v2-ms-proj-spoor{ gap:20px; }
  .v2-ms-projkaart h3{ font-size:22.6px; }
}


@media (max-width:1023px){
  .v2-ms-acc-geel{ border-radius:0 0 0 16px; }
  .v2-ms-acc-beeld::after{ width:58%; height:2px; }
}


/* gedeeld sleepcomponent: eigen cursor uit, snap los tijdens het slepen */
.v2-sleep{ cursor:none; }
.v2-sleep.is-slepen{ scroll-snap-type:none; }
@media (hover:none){ .v2-sleep{ cursor:auto; } }
/* Sliders lopen als de referentie door tot de schermranden: kaarten steken
   aan beide zijden deels in beeld; de inhoud lijnt uit op de wrap (1245). */
.v2-ms-os-spoor, .v2-ms-proj-spoor, .v2-ms-certs .v2-ms-zegels, .v2-ms-awards .v2-ms-zegels{
  width:100vw; margin-left:calc(50% - 50vw);
  padding-left:max(20px, calc(50vw - 622.5px));
  padding-right:max(20px, calc(50vw - 622.5px));
  scroll-padding-left:max(20px, calc(50vw - 622.5px));
}

@media (max-width:1023px){ .v2-ms-zegel::after{ display:none; } }

/* ============================================================
   PROJECTENOVERZICHT [ref: /projects/, gemeten 17-08-2026]
   Kop gecentreerd, filterbalk 4-cel met scheiders, gegroepeerd
   grid met de GEDEELDE projectkaart (v2-ms-projkaart, wit thema).
   ============================================================ */
.v2-pj-kop{ background:#fff; text-align:center; padding:66px 0 60px; }   /* [ref: sectie 385] */
.v2-pj-kop h1{ font-size:clamp(48px,6.67vw,96px); line-height:1.1; font-weight:700; color:#000; margin:0 0 18px; }
.v2-pj-kop p{ font-size:21px; font-weight:700; color:#000; margin:0; }
.v2-pj{ background:#fff; padding:0 0 287px; }  /* [ref: 287 tussen laatste knop en callout-top, cirkel op 101] */
.v2-pj-zoek{ display:flex; justify-content:flex-end; align-items:center; gap:10px; padding:14px 0; }
.v2-pj-zoek label{ font-size:18px; color:#000; }
.v2-pj-zoek input{ width:166px; height:37px; border:0; border-bottom:1px solid #9a9a9a; font-size:15px; padding:4px 6px; background:transparent; }  /* [ref: 166x37, onderlijn] */
.v2-pj-zoek button{ width:48px; height:37px; background:var(--bronze); color:#fff; border:0; border-radius:6px; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.v2-pj-filters{ display:flex; border-top:1px solid #DEDEDE; border-bottom:1px solid #DEDEDE; }  /* [ref: lijnen boven en onder de balk] */
.v2-pj-filter{ position:relative; flex:1 1 0; }
.v2-pj-filter > button{
  width:100%; height:68px; background:#fff; border:0; border-right:1px solid #DEDEDE;  /* [ref: cel 311x68, scheider DEDEDE] */
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  font-size:18px; color:var(--bronze); padding:0 22px; cursor:pointer; text-align:left;
}
.v2-pj-filter:last-child > button{ border-right:0; }
.v2-pj-filter b{ font-weight:700; }
.v2-pj-filter .v2-mm-tabplus{ width:16px; height:16px; color:var(--bronze); }
.v2-pj-filter.is-open .v2-mm-tabplus::after{ opacity:0; }
.v2-pj-opties{
  position:absolute; z-index:20; left:0; top:100%; min-width:100%; background:#fff;
  box-shadow:0 0 15px rgba(0,0,0,.08); display:none;
}
.v2-pj-filter.is-open .v2-pj-opties{ display:block; }
.v2-pj-opties{ box-shadow:0 6px 12px rgba(0,0,0,.1); padding:6px 0 10px; }   /* [ref: 311 breed, schaduw 0 6 12 op 10 procent] */
.v2-pj-wis{ display:block; width:100%; text-align:left; background:none; border:0; cursor:pointer;
  font-size:12px; color:#000; padding:6px 18px; }   /* [ref: Clear selection 12px, geen onderstreping] */
.v2-pj-optie{ display:flex; align-items:center; gap:10px; min-height:35px; padding:2px 18px;
  font-size:18px; color:#000; cursor:pointer; }                                 /* [ref: rij 35, 18px] */
.v2-pj-optie:hover{ background:rgba(0,0,0,.03); }
.v2-pj-optie input{ position:absolute; opacity:0; pointer-events:none; }
.v2-pj-optie i{ width:16px; height:16px; border:1.5px solid #9a9a9a; border-radius:3px; flex:0 0 auto; position:relative; background:#fff; }
.v2-pj-optie input:checked + i{ background:var(--bronze); border-color:var(--bronze); }
.v2-pj-optie input:checked + i::after{ content:""; position:absolute; left:4px; top:1px; width:5px; height:9px;
  border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg); }
.v2-pj-groep{ position:relative; padding-top:37px; }                      /* [ref: groepkop 37 na de balk] */
.v2-pj-groep h2{ font-size:clamp(38px,4.17vw,60px); line-height:1.2; font-weight:700; color:#000 !important; margin:0 0 45px; }
.v2-pj-aantal{ position:absolute; right:0; top:24px; font-size:clamp(64px,8.3vw,120px); line-height:1; font-weight:700; color:rgba(0,0,0,.06); pointer-events:none; }  /* [ref: groot vaag aantal rechts] */
/* [ref: gefilterde weergave /projects/?project-type=9, gemeten 18-08 op 6 breedtes.
   390: 1 kolom, gap 26; 768: 1 kolom, gap 29, foto max 609; 1280: 2 kolommen,
   gap 38, foto vult de kaart; 1440/1920: 2 kolommen, gap 41, kaart 602, foto
   602x409 (verhouding 609:414). Boven 1920 schaalt de ref met rem mee; onze
   wrap blijft 1245 (bewuste afwijking, zelfde als elders in de template).
   Gefilterd en ongefilterd delen EXACT dit grid; alleen het aantal kaarten
   verschilt, nooit de weergave.] */
.v2-pj-grid{ display:grid; grid-template-columns:1fr 1fr; gap:41px; margin-bottom:0; }
.v2-pj .v2-ms-projkaart{ margin-bottom:0; padding-right:0; }
/* [uitlijnregel CHECKLIST]: binnen een rij delen de kaarten hun rijtracks via
   subgrid (foto/titel/rij/rij/knop = 5 tracks). Het titelblok krijgt zo de
   hoogte van de langste titel in DIE rij en lijnen, gegevensregels en knoppen
   staan bij elke kaart op exact dezelfde hoogte, hoe lang de titel ook is. */
.v2-pj-grid > .v2-ms-projkaart{ display:grid; grid-template-rows:subgrid; grid-row:span 5;
  row-gap:0; align-content:start; }
.v2-pj-grid > .v2-ms-projkaart .btn{ justify-self:start; align-self:start; width:fit-content; }
/* [vullingsregel CHECKLIST]: nooit een halve rij. Bij een oneven aantal
   zichtbare kaarten in een groep spant de laatste kaart de volle breedte,
   in de vormtaal van de ref-ongefilterde rijen: foto op kolombreedte 602,
   lijnen en gegevensregels over de hele wrap. Gezet door de generator en
   dynamisch herzet door de filter-JS. */
.v2-pj-grid > .v2-ms-projkaart.is-vol{ grid-column:1 / -1; }
.v2-pj-grid > .v2-ms-projkaart.is-vol img{ max-width:602px; }
@media (max-width:1024px){
  .v2-pj-grid > .v2-ms-projkaart.is-vol img{ max-width:609px; }
}
@media (max-width:640px){
  .v2-pj-grid > .v2-ms-projkaart.is-vol img{ max-width:none; }
}
.v2-pj .v2-ms-projkaart img{ width:100%; max-width:none; height:auto; aspect-ratio:609/414; object-fit:cover; }
@media (max-width:1285px){ .v2-pj-grid{ gap:38px; } }
@media (max-width:1024px){
  .v2-pj-grid{ grid-template-columns:1fr; gap:29px; }
  .v2-pj .v2-ms-projkaart img{ max-width:609px; }  /* [ref 768: kaart 722, foto 609] */
}
@media (max-width:640px){
  .v2-pj-grid{ gap:26px; }                          /* [ref 390: gap 26 */
  .v2-pj .v2-ms-projkaart img{ max-width:none; }    /*  en de foto vult de kaart] */
}
.v2-pj .v2-ms-projkaart{ flex:none; }
.v2-pj .v2-ms-projkaart h3{ color:#000; }
.v2-pj .v2-ms-projrij b{ color:rgba(0,0,0,.55); }
.v2-pj .v2-ms-projrij{ border-color:#E1E1E1; color:#000; }
.v2-pj-leeg{ padding:60px 0; text-align:center; font-size:18px; color:#444; display:none; }
@media (max-width:1023px){
  .v2-pj-kop{ padding:40px 0 32px; }
  .v2-pj-kop p{ font-size:16.5px; }
  .v2-pj-filters{ flex-direction:column; }
  .v2-pj-filter > button{ border-right:0; border-bottom:1px solid #DEDEDE; height:56px; }
  .v2-pj-aantal{ font-size:64px; }
  .v2-pj-zoek{ justify-content:flex-start; }
}

/* [ref]: alle projectfoto's dragen de 0/37,5-hoeken, ook in de homepage-carousel */
.v2-cs img, .v2-sl-kaart img{ border-radius:0 37.5px; }

/* ============================================================
   VARIANT 2 - PROJECTDETAIL v2 (sjabloon), gescoped onder .v2-pd2
   zodat de overige detailpagina's onaangeraakt blijven.
   Gemeten aan randoco.com/project/st-george-place/ 18-08-2026,
   1440x1000: hero 662 (pad 150/60), galerij 793 (pad 105/105),
   rijen 899 (pad 0/105). Grijs vlak #F8FAFC x=763->rand over de
   drie secties, hoek linksonder 60, traanplaat in de onderste 65%
   plus een smalle strook rechts in de hero (x>=1107). Bewuste
   afwijking (precedent marktsegmenten-ronde): exacte ref-hoogtes
   in plaats van 100svh-centrering.
   ============================================================ */
.v2-pd2-boven{ position:relative; }
.v2-pd2-boven::before{ content:""; position:absolute; top:0; bottom:0; right:0;
  left:calc(50% + 43px);                       /* [ref: vlak vanaf x=763 op 1440] */
  background:#F8FAFC; border-radius:0 0 0 60px; z-index:0; }
.v2-pd2-boven::after{ content:""; position:absolute; bottom:0; height:65%; right:0;
  left:calc(50% + 43px);                       /* [ref: patroon in de onderste 65%] */
  background-image:var(--v2-traanplaat); background-size:25px 29px;
  opacity:.55; border-radius:0 0 0 60px; z-index:0; pointer-events:none; }
.v2-pd2-boven > *{ position:relative; z-index:1; }
.v2-pd2 .v2-pd-hero{ position:relative; padding:150px 0 60px; min-height:0; background:none; }
.v2-pd2 .v2-pd-hero::after{ content:""; position:absolute; top:0; bottom:0; right:0;
  left:calc(50% + 387px);                      /* [ref: strook x>=1107 in de hero] */
  background-image:var(--v2-traanplaat); background-size:25px 29px; opacity:.55; pointer-events:none; }
.v2-pd2-hero-grid{ display:grid; grid-template-columns:1fr 465px; gap:41px;
  align-items:stretch; position:relative; z-index:1; }   /* [ref: compositie op x=878, steekt 4px voorbij de wrap zoals de ref] */
.v2-pd2-tekst{ align-self:center; }
.v2-pd2 .v2-pd-eyebrow{ display:block; margin:0 0 22.5px; font-size:18px; line-height:25.2px;
  font-weight:700; color:var(--bronze); }      /* [ref: term 18/700, accentkleur, mb 22,5] */
.v2-pd2 h1{ font-size:clamp(42.6px,5.21vw,75px); line-height:1.2; font-weight:700;
  color:#000; margin:0; }                      /* [ref: 75/90/700 zwart] */
.v2-pd2-plaats{ display:block; margin:30px 0 0; font-size:24px; line-height:28.8px;
  font-weight:700; color:#000; }               /* [ref: location 24/28,8/700, mt 30] */
/* cirkelcompositie: grijze linkerhelft + zwarte rechterhelft + ronde foto erop
   [ref: wrapper 469x452, helften 234x452, foto 328 op offset 70/68] */
.v2-pd2-cirkel{ position:relative; width:469px; height:452px; }
.v2-pd2-c-grijs{ position:absolute; left:0; top:0; width:234px; height:452px;
  background:#EFEFEF url("../img/textuur-beton.webp") center/cover;
  border-radius:452px 0 0 452px; }   /* [ref: decorbeeld met betontextuur, geen egale kleur] */
.v2-pd2-c-zwart{ position:absolute; left:234px; top:0; width:234px; height:452px;
  background:#000; border-radius:0 452px 452px 0; }
.v2-pd2-c-foto{ position:absolute; left:70px; top:68px; width:328px; height:328px;
  border-radius:50%; object-fit:cover; }
/* galerij: bestaande dia's; sectie op ref-hoogte, voet als bij de referentie */
.v2-pd2 .v2-pd-gal{ padding:105px 0; min-height:0; background:none; }
.v2-pd2 .v2-pd-gal-voet{ display:flex; align-items:center; gap:0;
  width:100%; max-width:1245px; margin-inline:auto;
  padding:42px 0 0; }                          /* [ref: balk-top 1314 = dia-onder 1272 + 42] */
.v2-pd2 .v2-car-bar{ flex:1 1 auto; margin:0 34px 0 0; }   /* [ref: balk x=98 b=1020, teller x=1152] */
.v2-pd2-pijl{ appearance:none; background:none; border:0; cursor:pointer; padding:0;
  color:#000; display:inline-flex; align-items:center; }   /* [ref: prev 6 breed, gaten 27] */
.v2-pd2-pijl svg{ display:block; }
.v2-pd2-pijl[disabled]{ opacity:.35; cursor:default; }
.v2-pd2 .v2-pd-teller{ flex:0 0 auto; font-size:21px; line-height:29.4px; color:#000;
  font-variant-numeric:tabular-nums; margin:0 26px; }      /* [ref: 21px "01 / 18", gaten 27] */
/* rijen: links kop + tekst (495), rechts gegevenskaart in het vlak (375 op x=878) */
.v2-pd2 .v2-pd-rijen{ padding:0 0 356px; min-height:0; background:none;
  justify-content:flex-start; }                /* [ref: content-einde -> sectie-einde 356: 100 vrij
                                                  boven de sectiefoto (die 255 boven de volgende sectie
                                                  uitsteekt) + de overlapzone; schaalt met de inhoud] */
.v2-pd2-rij{ display:grid; grid-template-columns:495px 375px; column-gap:285px;
  justify-content:start; }                     /* [ref: links x=98 b=495, kaart x=878 b=375] */
.v2-pd2-rij h2{ font-size:60px; line-height:72px; font-weight:700; color:#000;
  margin:0 0 108px 0; }                        /* [ref: 60/72, kop->tekst 108] */
.v2-pd2-links p{ font-size:18px; line-height:25.2px; color:#000; margin:0 0 39px; }
.v2-pd2-links p:last-child{ margin-bottom:0; } /* [ref: p-afstand 39] */
.v2-pd2-links h2 + p{ margin-top:-0px; }
.v2-pd2-label{ display:block; font-size:18px; line-height:25.2px; font-weight:700;
  color:#737373; margin:0; }                   /* [ref: label op de sectiestart, grijs 18/700] */
.v2-pd2-getal{ display:block; font-size:75px; line-height:90px; font-weight:700; color:#000;
  margin-top:138px; }                          /* [ref: label-einde -> getal 138] */
.v2-pd2-info{ margin-top:9px; border-top:1px solid #E1E1E1; border-bottom:1px solid #E1E1E1;
  padding:24px 0 47px; }                       /* [ref: lijn 9 na het getal, pad 24/47, lijnen 1px E1E1E1] */
.v2-pd2-info p{ font-size:18px; line-height:25.2px; color:#000; margin:31px 0 0; }  /* [ref: label -> tekst 31] */
/* ingezette diensten op de detailpagina: gecentreerde kop 132 onder het vlak,
   F7F7F7-achtergrond met de fullwidth sectiefoto [ref: foto 1440x694 begint
   255 boven de sectie, loopt ACHTER het grijze vlak door (het vlak rondt er
   overheen af) en vervaagt in de onderste 60% naar F7F7F7]. */
.v2-pd2-boven{ z-index:2; }                      /* vlak + patroon boven de sectiefoto */
.v2-pd2 .v2-ms-os{ padding-top:132px; position:relative; background:#F8FAFC; }
.v2-pd2 .v2-ms-os h2{ text-align:center; margin-bottom:127px; }  /* [ref: kop-einde -> kaarten 127] */
.v2-pd2 .v2-ms-os .v2-ms-wrap{ position:relative; z-index:1; }
.v2-pd2-os-foto{ position:absolute; left:0; right:0; top:max(-255px, -17.71vw);
  height:min(48.19vw, 694px); z-index:0; pointer-events:none; }
.v2-pd2-os-foto img{ width:100%; height:100%; object-fit:cover; display:block; }
.v2-pd2-os-foto::after{ content:""; position:absolute; left:0; right:0; top:40%; height:60%;
  background:linear-gradient(rgba(247,247,247,0), #F8FAFC); }  /* [ref: fade 416 van 694] */
@media (max-width:1285px){
  .v2-pd2-hero-grid{ grid-template-columns:1fr clamp(240px,36vw,469px); gap:24px; }
  .v2-pd2-cirkel{ width:100%; aspect-ratio:469/452; height:auto; }
  .v2-pd2-c-grijs,.v2-pd2-c-zwart{ width:50%; height:100%; }
  .v2-pd2-c-zwart{ left:50%; }
  .v2-pd2-c-foto{ left:15%; top:15%; width:70%; height:70%; }
  .v2-pd2-rij{ grid-template-columns:minmax(0,495px) minmax(220px,375px); column-gap:clamp(40px,10vw,285px); }
}
@media (max-width:1023px){
  /* [ref 390: alles onder elkaar; vlak = smalle strook achter de cirkelkop] */
  .v2-pd2-boven::before,.v2-pd2-boven::after,.v2-pd2 .v2-pd-hero::after{ display:none; }
  .v2-pd2 .v2-pd-hero{ padding:96px 0 42px; }
  .v2-pd2-hero-grid{ grid-template-columns:1fr; gap:28px; }
  .v2-pd2-cirkel{ position:relative; width:51vw; max-width:220px; margin:0 auto; }  /* [ref 390: compositie ~200 breed] */
  .v2-pd2-strook{ display:block; position:absolute; left:50%; transform:translateX(-50%);
    top:8%; height:26%; width:100vw; background:#F8FAFC;
    background-image:var(--v2-traanplaat); background-size:25px 29px; z-index:-1; }
  .v2-pd2 h1{ font-size:clamp(34px,9vw,42.6px); }
  .v2-pd2-plaats{ font-size:18px; line-height:1.3; margin-top:16px; }
  .v2-pd2 .v2-pd-eyebrow{ font-size:15px; margin-bottom:12px; }
  .v2-pd2 .v2-pd-gal{ padding:63px 0; }
  .v2-pd2 .v2-pd-teller{ font-size:16px; margin:0 8px; }
  .v2-pd2 .v2-car-bar{ margin-right:14px; }
  .v2-pd2 .v2-pd-rijen{ padding:0 0 63px; min-height:0; }
  .v2-pd2-rij{ grid-template-columns:1fr; column-gap:0; row-gap:0; }
  .v2-pd2-rij h2{ font-size:clamp(30px,8.7vw,34px); line-height:1.2; margin-bottom:24px; }
  .v2-pd2-label{ margin:34px 0 0; }
  .v2-pd2-getal{ font-size:44px; line-height:1.2; margin-top:20px; }  /* [ref 390: label -> getal 20] */
  .v2-pd2-info{ padding:18px 0 28px; margin-top:12px; }
  .v2-pd2 .v2-ms-os{ padding-top:56px; }
  .v2-pd2 .v2-ms-os h2{ margin-bottom:48px; }
}
/* desktop: geen mobiele strook */
@media (min-width:1024px){ .v2-pd2-strook{ display:none; } }

/* pijlknoppen bij de os-teller: zelfde tekenstijl als de statische pijl */
.v2-ms-os-pijl{ appearance:none; background:none; border:0; cursor:pointer; padding:2px 6px;
  color:inherit; font-size:inherit; line-height:1; display:inline-flex; align-items:center; }
.v2-ms-os-pijl[disabled]{ opacity:.35; cursor:default; }

/* ============================================================
   VARIANT 2 - OVER ONS (v2-au), naar randoco.com/about-us/
   Gemeten 19-08-2026 op 1440x1000 en 390. Gescoped onder .v2-au
   zodat geen andere pagina wordt geraakt. Bewuste afwijking
   (precedent): exacte ref-hoogtes i.p.v. 100svh-centrering.
   ============================================================ */
/* 1. hero: zwart, fullbleed foto met donkere overlay en fades [ref: 1354, pad 229,6] */
.v2-au-hero{ position:relative; background:#000; overflow:hidden;
  padding:min(calc(10.5vw + 78.4px), 280px) 0;
  min-height:100svh; }
  /* [ref-formule gemeten op 6 formaten: pad 119,35/390 - 212,8/1280 - 229,6/1440 -
     280/1920+, symmetrisch; kop staat op de padding, niet gecentreerd.
     min-height:100svh is onze vaste regel: eerste scherm toont ALLEEN de hero] */
.v2-au-hero-foto{ position:absolute; inset:0; z-index:0; }
.v2-au-hero-foto img{ width:100%; height:100%; object-fit:cover; display:block;
  filter:brightness(.75); }
  /* Gemeten 21-08 achter de introalinea (1440, y=675, b=420): ref komt uit op
     rgb(92,84,79), lum 85, contrast 2.9:1 tegen de witte tekst; wij stonden op
     rgb(129,129,129), lum 129, contrast 1.9:1. De ref heeft daar geen extra
     overlaylaag, hun beeld is simpelweg donkerder. Omdat de klantfoto in een
     template onbekend is, dimmen we het beeld tot hetzelfde niveau in plaats
     van op een toevallig donkere foto te rekenen. 85/129 = .66 */
.v2-au-hero-foto::before{ content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(rgb(20,20,20), rgba(20,20,20,0)); }
  /* [ref: donkere overlay van boven, volle hoogte in procenten] */
.v2-au-hero-foto::after{ content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(rgba(255,255,255,0) 35%, rgb(225,225,225) 100%); }
  /* [ref: witte vervaging: transparant tot 35%, naar rgb(225) op 100% - schaalt met de hero] */
.v2-au-hero .v2-ms-wrap{ position:relative; z-index:2; }
.v2-au-hero h1{ font-family:var(--font-kop); line-height:1;
  font-size:min(calc(8.75vw + 9px), 135px);
  font-weight:700; color:#fff !important; text-align:center; margin:0 auto; max-width:840px; }
  /* [ref-formule: 121/1280 - 135/1440 - 135/1920, cap 135; naamregel = 2x] */
.v2-au-hero h1 .v2-au-naam{ display:block; overflow-wrap:anywhere; }
  /* [ref: naamregel ZELFDE fontgrootte als de kopregel (135), wrapt binnen 840;
     h=270 bij de ref is twee regels. Een te lang los woord (token) breekt af
     binnen de kolom in plaats van te krimpen of uit beeld te lopen] */
@media (max-width:767px){
  .v2-au-hero h1{ font-size:11.83vw; }   /* [ref 390: 46,125px] */
}
.v2-au-hero-tekst{ width:420px; margin-left:calc(50% - 22px); margin-top:40px; }  /* [ref: x=720, b=420] */
.v2-au-hero-tekst p{ font-size:18px; line-height:25.2px; color:#fff; margin:0 0 14px; }
.v2-au-hero-tekst .btn{ margin-top:26px; }
/* 2. waarden: zwart vlak links met patroon en compositie, tekstkolom rechts [ref: 920] */
.v2-au-waarden{ position:relative; min-height:920px; padding:98px 0; }
.v2-au-waarden::before{ content:""; position:absolute; left:0; top:0; bottom:-270px;
  width:calc(50% - 12px); background:#000; z-index:0; }
  /* [ref: vlak 708 breed, 1190 hoog = 270 voorbij de sectie; de visiefoto's steken erin] */
.v2-au-waarden::after{ content:""; position:absolute; top:0; bottom:-270px;
  left:calc(25% - 6px); width:calc(25% - 6px);
  background-image:var(--v2-traanplaat-wit-band); background-size:25px 29px; z-index:0; }
  /* [ref-pixelmeting: lijnen tot ~rgb(29) op zwart, stdev ~32]
     [ref: patroonband = de RECHTERhelft van het vlak (x=354-708), volle hoogte incl. overloop;
     hij bedekt de rechterhelft van de betoncirkel en maakt zo de halve schijf] */
.v2-au-waarden .v2-ms-wrap{ position:static; }
  /* [static: zo positioneert .v2-au-links op de SECTIE en valt de kolom exact
     samen met het zwarte vlak; de z-index verhuist naar de kolommen] */
.v2-au-waarden-grid{ display:grid; grid-template-columns:1fr 1fr; column-gap:100px; }
.v2-au-links{ position:absolute; left:0; top:98px; width:calc(50% - 12px); z-index:1; }
  /* [de linkerkolom beslaat exact het zwarte vlak, zodat kop en compositie er
     op ELKE breedte zuiver op centreren - vaste marges liepen op tussenbreedtes
     (901-1244) naar rechts weg] */
.v2-au-rechts{ grid-column:2; position:relative; z-index:1; }
.v2-au h2, .v2-au h3{ font-family:var(--font-kop); letter-spacing:normal; }
  /* [ref: alle about-us-koppen letter-spacing normal, niet de .02em van het h-token] */
.v2-au-waarden h2{ font-size:60px; line-height:72px; font-weight:700; color:#fff !important;
  margin:0 0 75px; text-align:center; }
  /* wit op zwart; !important wegens de kop-kleurcascade. Kop gecentreerd op het
     vlak (wens Dikkie 20-08, bewuste afwijking van de ref die links uitlijnt) */
.v2-au-comp{ position:relative; width:340px; height:340px; margin:0 auto; }
  /* [ref: betonFOTO 340 rond op x=184 (centrum = vlakmidden); de patroonband bedekt de
     rechterhelft. Wij clippen de linkerhelft direct: zelfde beeld.] */
.v2-au-comp-beton{ position:absolute; left:0; top:0; width:170px; height:340px;
  overflow:hidden; display:block; }
.v2-au-comp-beton img{ width:340px; height:340px; border-radius:50%; object-fit:cover;
  display:block; max-width:none; }
.v2-au-comp-bol{ position:absolute; left:85px; top:85px; width:170px; height:170px;
  border-radius:50%; background:var(--bronze); }
  /* [ref pixelmeting: bol d168-170, CONCENTRISCH met de betonschijf; centrum =
     de platte rand, dus de bol steekt 85 voorbij de rand] */
.v2-au-comp-lijn{ position:absolute; left:42.5px; top:42.5px; width:255px; height:255px;
  border:1px solid #fff; border-radius:50%; box-sizing:border-box; }
  /* [ref: witte cirkel d255, zelfde centrum als de bol (exact concentrisch),
     ring van 42,5 rondom; valt links grotendeels binnen de schijf] */
.v2-au-rechts h3{ font-size:32px; line-height:1.25; font-weight:700; color:#000; margin:0 0 24px; }
.v2-au-rechts .v2-au-intro{ font-size:24px; line-height:1.35; color:#000; margin:0 0 28px; }
.v2-au-rechts p{ font-size:18px; line-height:25.2px; color:#000; margin:0 0 15px; width:413px; max-width:100%; }
.v2-au-rechts p a, .v2-au-rechts p b{ color:var(--bronze); font-weight:400; }
/* 3. visie-slider [ref: kaart 1046, foto 1046x488 radius 0/37,5, kop 45 op inset 36] */
.v2-au-visie{ padding:30px 0 60px; position:relative; z-index:1; }
  /* [ref: de fotorij steekt 240 in het doorlopende zwarte vlak van de waarden-sectie] */
.v2-au-visie .v2-sl-spoor{ display:flex; gap:44px; overflow-x:auto; scroll-snap-type:x mandatory;
  padding-left:max(21px, calc((100vw - 1245px)/2)); padding-right:max(21px, calc((100vw - 1245px)/2));
  scroll-padding-left:max(21px, calc((100vw - 1245px)/2)); scrollbar-width:none; cursor:grab; }
.v2-au-visie .v2-sl-spoor::-webkit-scrollbar{ display:none; }
.v2-au-vkaart{ flex:0 0 min(1046px, 86vw); scroll-snap-align:start; position:relative; }
.v2-au-vkaart img{ width:100%; aspect-ratio:1046/488; object-fit:cover; display:block; border-radius:0 37.5px; }
.v2-au-vster{ position:absolute; right:38px; top:38px; width:86px; height:86px; border-radius:50%;
  background:var(--gold, #f0a500); color:#fff; display:flex; align-items:center; justify-content:center;
  font-size:26px; }                                             /* [ref: gele ster-badge 86 rechtsboven] */
.v2-au-vkaart-voet{ display:grid; grid-template-columns:400px 1fr; column-gap:70px; padding:82px 36px 0; }
.v2-au-vkaart-voet h3{ font-size:45px; line-height:54px; font-weight:700; color:#000; margin:0; }
.v2-au-vkaart-voet p{ font-size:18px; line-height:25.2px; color:#000; margin:6px 0 0; max-width:370px; }
.v2-au-visie .v2-car-bar{ max-width:1245px; margin:56px auto 0; }
/* 4. tijdlijn [ref: vlak F7F7F7 rechts vanaf x=720, hoek linksonder 60, patroon x>=1030;
   jaartal 120/700 accent; foto 473 rond; as y=+694 met jaren per 5, pitch 165] */
.v2-au-tijd{ position:relative; padding:60px 0 105px; }
.v2-au-tijd::before{ content:""; position:absolute; right:0; top:0; bottom:0; left:50%;
  background:#F8FAFC; border-radius:0 0 0 60px; z-index:0; }
.v2-au-tijd::after{ content:""; position:absolute; right:0; top:0; bottom:0; left:calc(50% + 310px);
  background-image:var(--v2-traanplaat-band); background-size:25px 29px;
  border-radius:0 0 0 60px; z-index:0; }
  /* [ref: band vanaf x=1030-1035 tot de rand, volle hoogte, lijnen ~rgb(223)] */
.v2-au-tijd .v2-ms-wrap{ position:relative; z-index:1; }
.v2-au-tijd-kop{ display:flex; justify-content:space-between; align-items:flex-start; }
.v2-au-tijd-jaar{ font-size:120px; line-height:1.1; font-weight:700; color:var(--accent-lijn);
  display:inline-block; max-width:380px; white-space:nowrap; }
  /* [ref: 120/700 #0F172A, b=267 bij vier cijfers; langere inhoud schaalt via JS] */
.v2-au-tijd-label{ font-size:24px; font-weight:700; color:#000; margin-top:49px;
  white-space:nowrap; position:relative; z-index:1; }   /* [ref: 24/700, x=1210] */
.v2-au-tijd-midden{ position:relative; margin-top:-60px; }
.v2-au-tijd-beeld{ position:relative; width:473px; height:473px; margin:0 auto; }
.v2-au-tijd-beeld img{ width:100%; height:100%; object-fit:cover; border-radius:50%; display:block; }
.v2-au-tijd-beeld::before{ content:""; position:absolute; inset:-96px; border:1px solid #E8E8E8;
  border-radius:50%; pointer-events:none; }   /* [ref: grote cirkel d=665, 1px rgb(232)] */
.v2-au-tijd-pijl{ appearance:none; background:none; border:0; cursor:pointer; color:var(--accent-lijn);
  position:absolute; top:50%; transform:translateY(-50%); width:386px; height:60px;
  display:flex; align-items:center; gap:0; padding:0; z-index:2; }
  /* [ref: knop 386 breed; chevron 8x12 stroke 4 + lijn 311x2, beide #0F172A] */
.v2-au-tijd-pijl[data-r="-1"]{ left:0; }
.v2-au-tijd-pijl[data-r="1"]{ right:0; justify-content:flex-end; }
.v2-au-pijllijn{ display:block; width:311px; height:2px; background:var(--accent-lijn); }
.v2-au-tijd-pijl svg{ display:block; width:8px; height:12px; max-width:none; flex:0 0 auto; margin:0 4px; }
.v2-au-tijd-pijl[disabled]{ opacity:1; cursor:default; }   /* [ref: geen gedimde staat] */
/* as [ref: label 24/700 op y=0, lijnsegmenten 1px #E1E1E1 op y=51, stip wit 15
   met 3px zwarte rand OP de lijn; actief 36 wit met 3px accentrand + dot 7,5] */
.v2-au-tijd-as{ position:relative; margin-top:66px; height:87px; }
.v2-au-tijd-as::before{ content:""; position:absolute; left:0; right:0; top:51px; height:1px; background:#E1E1E1; }
.v2-au-tijd-stap{ appearance:none; background:none; border:0; cursor:pointer; position:absolute; top:0;
  transform:translateX(-50%); text-align:center; padding:0;
  font-size:24px; line-height:34px; font-weight:700; color:#737373; }
.v2-au-tijd-stap.is-eerste{ transform:none; text-align:left; }
.v2-au-tijd-stap.is-laatste{ transform:translateX(-100%); text-align:right; }
.v2-au-tijd-stap b{ display:block; font-weight:700; white-space:nowrap; }
.v2-au-stip{ position:absolute; left:50%; top:51px; width:15px; height:15px; margin:-7.5px 0 0 -7.5px;
  background:#fff; border:3px solid #000; border-radius:50%; box-sizing:border-box; }
.v2-au-tijd-stap.is-eerste .v2-au-stip{ left:26px; }
.v2-au-tijd-stap.is-laatste .v2-au-stip{ left:auto; right:26px; margin-right:-7.5px; }
.v2-au-tijd-stap.is-merk{ cursor:default; }
.v2-au-tijd-stap.is-actief{ color:var(--accent-lijn); }
.v2-au-tijd-stap.is-actief .v2-au-stip{ width:36px; height:36px; margin:-18px 0 0 -18px;
  border:3px solid var(--accent-lijn); }
.v2-au-tijd-stap.is-actief.is-eerste .v2-au-stip{ margin-left:0; left:8px; }
.v2-au-tijd-stap.is-actief.is-laatste .v2-au-stip{ margin-right:-18px; }
.v2-au-tijd-stap.is-actief .v2-au-stip::after{ content:""; position:absolute; left:50%; top:50%;
  width:7.5px; height:7.5px; margin:-3.75px 0 0 -3.75px; background:var(--accent-lijn); border-radius:50%; }
.v2-au-tijd-info{ margin-top:76px; max-width:590px; }
.v2-au-tijd-info h3{ font-size:32px; line-height:1.25; font-weight:700; color:#000; margin:0 0 22px; }
.v2-au-tijd-info p{ font-size:18px; line-height:25.2px; color:#000; margin:0; }
/* 5. cijfers [ref: fullbleed foto met witte fade boven, kop 75 gecentreerd,
   F7F7F7-kaart radius 37,5 met verticale lijnen 1px #DADADA] */
.v2-au-cijfers{ position:relative; padding:105px 0; overflow:hidden; }
.v2-au-cijfers-foto{ position:absolute; inset:0; bottom:247px; z-index:0; }
  /* [ref: de foto stopt 142px BOVEN de kaart-onderrand (kaart 348 steekt uit op
     wit); kaart-onder = sectie-onder - 105 padding, dus foto-bottom = 247] */
.v2-au-cijfers-foto img{ width:100%; height:100%; object-fit:cover; opacity:.35; display:block; }
.v2-au-cijfers-foto::before{ content:""; position:absolute; left:0; right:0; top:0; height:300px;
  background:linear-gradient(#fff, transparent); z-index:1; }
.v2-au-cijfers .v2-ms-wrap{ position:relative; z-index:2; }
.v2-au-cijfers h2{ font-size:75px; line-height:90px; font-weight:700; color:#000; text-align:center;
  max-width:840px; margin:0 auto 88px; }
.v2-au-cijfers-kaart{ background:#F8FAFC; border-radius:0 45px; display:grid;
  grid-template-columns:repeat(3, 1fr); padding:112px 0; }
  /* [ref: kaart 348 hoog bij echte inhoud (75px-getal + label)] */
  /* [ref: kaart 1245x348, radius 0/45, drie gelijke kolommen] */
.v2-au-cijfer{ text-align:center; padding:0 30px; }
.v2-au-cijfer + .v2-au-cijfer{ border-left:1px solid #E1E1E1 !important; }
  /* [ref: lijn rgb(225); !important wegens de globale border-reset op section/div/article] */
.v2-au-cijfer b{ display:block; font-size:75px; line-height:1.2; font-weight:700; color:#000;
  white-space:nowrap; }   /* [ref: 75/90 op EEN regel; een token dat niet past
  schaalt via het fit-blok in v2-header.js, en breekt dus nooit de kaart] */
.v2-au-cijfer span{ display:block; margin-top:12px; font-size:18px; color:#737373; }  /* [ref: 18] */
/* 6b. prijzen [ref about-us: WITTE sectie, kop 60 zwart gecentreerd, slider met
   kolommen 395, verticale lijnen rgb(225), rond beeld 123, titel 24/700 zwart] */
.v2-au-awards{ padding:88px 0 56px; background:#fff; }
.v2-au-awards h2{ font-size:60px; line-height:72px; font-weight:700; color:#000 !important;
  text-align:center; margin:0 0 88px; }   /* !important wegens de generieke h2-kleurregel */
.v2-au-awards .v2-sl-spoor{ display:flex; overflow-x:auto; scroll-snap-type:x mandatory;
  scrollbar-width:none; cursor:grab; border-top:1px solid #E1E1E1; }
.v2-au-awards .v2-sl-spoor::-webkit-scrollbar{ display:none; }
.v2-au-prijs{ flex:0 0 395px; scroll-snap-align:start; border-right:1px solid #E1E1E1 !important;
  min-height:448px; padding:70px 28px 40px; text-align:center; }
.v2-au-prijs svg, .v2-au-prijs img{ width:123px; height:123px; border-radius:50%; display:block; margin:0 auto; }
.v2-au-prijs span{ display:block; margin:60px auto 0; font-size:24px; line-height:1.25;
  font-weight:700; color:#000; max-width:338px; }
.v2-au-awards .v2-car-bar{ max-width:1245px; margin:56px auto 0; }
/* 7. maatschappelijk [ref: zwart vlak fullwidth met patroonband en radius onder,
   geel vlak, foto 450 (0/45) eroverheen, subkop + ster + tekst] */
.v2-au-maat{ position:relative; padding:105px 0 0; }
.v2-au-maat-zwart{ position:absolute; left:0; right:0; top:0; height:608px; background:#000;
  border-radius:0 0 37.5px 37.5px; z-index:0; overflow:hidden; }
  /* [ref: zwart vlak 608 hoog op 1440; geel en patroon blijven BINNEN de rand] */
.v2-au-maat-zwart::after{ content:""; position:absolute; left:90px; right:90px; top:308px; bottom:0;
  background-image:var(--v2-traanplaat-wit-band); background-size:25px 29px; }
  /* [ref: band x=90-1350, vanaf y=308 tot de onderrand] */
.v2-au-maat-geel{ position:absolute; left:calc(50% - 375px); width:750px; top:503px; height:105px;
  background:var(--gold, #f0a500); border-radius:37.5px 37.5px 0 0; z-index:1; }
  /* [ref: 750 breed, 105 zichtbaar, onderrand EXACT gelijk met de zwarte rand] */
.v2-au-maat .v2-ms-wrap{ position:relative; z-index:2; }
.v2-au-maat h2{ font-size:75px; line-height:90px; font-weight:700; color:#fff !important; text-align:center; margin:0 0 109px; }
.v2-au-maat-foto{ display:block; width:450px; height:450px; object-fit:cover; border-radius:0 45px;
  margin:0 auto; }
.v2-au-maat h3{ font-size:32px; font-weight:700; color:#000; text-align:center; margin:52px 0 0; }
.v2-au-maat-rij{ display:flex; align-items:flex-start; gap:96px; justify-content:center; margin-top:78px; }
.v2-au-maat-ster{ flex:0 0 86px; width:86px; height:86px; border-radius:50%;
  background:var(--gold, #f0a500); color:#fff; display:flex; align-items:center; justify-content:center; font-size:26px; }
.v2-au-maat-rij p{ font-size:18px; line-height:25.2px; color:#000; margin:0; max-width:623px; }
/* 8. team [ref: kop 135/700 gecentreerd, kaart 514, ronde foto 371 op accentcirkel,
   verticale lijnen tussen kaarten, naam 32 gecentreerd, functie 16 grijs] */
.v2-au-team{ padding:60px 0 0; }
.v2-au-team h2{ font-size:clamp(54px,9.4vw,135px); line-height:1; font-weight:700; color:#000 !important;
  text-align:center; margin:0 0 90px; }   /* !important wegens de generieke h2-kleurregel met !important */
.v2-au-team .v2-sl-spoor{ display:flex; overflow-x:auto; scroll-snap-type:x mandatory;
  scrollbar-width:none; cursor:grab; border-top:1px solid #E1E1E1; }
.v2-au-team .v2-sl-spoor::-webkit-scrollbar{ display:none; }
.v2-au-lid{ flex:0 0 514px; scroll-snap-align:start; border-right:1px solid #E1E1E1 !important;
  padding:69px 0 90px; text-align:center; }
.v2-au-lid img{ width:371px; height:371px; border-radius:50%; object-fit:cover; display:block;
  margin:0 auto; background:var(--bronze); }
.v2-au-lid h3{ font-size:45px; font-weight:700; color:#000; margin:66px 0 0; }  /* [ref: naam 45/700] */
.v2-au-lid p{ font-size:18px; color:#000; margin:26px 0 0; }  /* [ref: functie 18] */
.v2-au-team .v2-car-bar{ max-width:1245px; margin:56px auto 84px; }
  /* [ref: ruimte tussen de balk en het zwarte vacaturevlak] */
/* 9. vacatures [ref: zwart vlak links met patroon, geel vlak, foto 623x531
   (0 0 0 37,5), kop 60/700 wit, tekstkolom rechts 555 + knop] */
.v2-au-vac{ position:relative; padding:97px 0 0; min-height:1029px; }
.v2-au-vac-zwart{ position:absolute; left:0; top:0; bottom:0; width:50%; background:#000;
  border-radius:0 0 60px 0; z-index:0; }
  /* [ref: zwart loopt van de linkerrand DOOR tot de gele balk (x=721 op 1440 =
     50%), volle hoogte tot onder, met de ronde hoek 60 rechtsonder] */
.v2-au-vac-zwart::after{ content:""; position:absolute; inset:0;
  background-image:var(--v2-traanplaat-wit-band); background-size:25px 29px;
  border-radius:inherit; }
  /* [ref: patroon over het zwarte vlak, zichtbare dekking (lijnen ~rgb(29))] */
.v2-au-vac-zwart::before{ content:""; position:absolute; left:57.5%; right:0;
  top:901px; bottom:0; background:#000; border-radius:0 0 60px 0; z-index:1; }
  /* [ref-pixelscan: onder de foto (y=901) is het vlak rechts van x=415 (57,5%)
     EFFEN zwart tot de rondo; het patroon loopt daar alleen links door] */
.v2-au-vac-geel{ position:absolute; left:calc(50% - 130px); width:130px; top:0; height:611px;
  background:var(--gold, #f0a500); border-radius:0 0 0 30px; z-index:2; }
  /* [ref: het geel ligt OVER de foto - de rechterbovenhoek van de foto valt eronder] */
  /* [ref: geel 130 breed, 611 hoog, rechterrand exact op de zwarte rand,
     alleen linksonder 30 rond] */
.v2-au-vac .v2-ms-wrap{ position:relative; z-index:1; }
.v2-au-vac-grid{ display:grid; grid-template-columns:1fr 555px; column-gap:100px; }
.v2-au-vac h2{ font-size:60px; line-height:84px; font-weight:700; color:#fff !important; margin:0; max-width:443px; }
.v2-au-vac-foto{ display:block; width:623px; max-width:none; height:531px; object-fit:cover;
  border-radius:0 0 0 37.5px; margin-top:105px; position:relative; z-index:1; }
  /* [max-width:none: de foto steekt bewust uit de 590-kolom tot de zwarte rand] */
  /* [ref: foto y=371 (padding 97 + kop 168 + 105); rechterrand 98+623=721 =
     EXACT de zwarte/gele rand - de wrap is 1245, dus dit klopt op elk formaat
     boven 1245] */
@media (min-width:1024px) and (max-width:1244px){
  .v2-au-vac-foto{ width:calc(50vw - 20px); height:auto; aspect-ratio:623/531; }
  /* [smalle desktops: wrap-marge krimpt; foto blijft binnen de zwarte rand] */
}
.v2-au-vac-tekst p{ font-size:18px; line-height:25.2px; color:#000; margin:0 0 15px; }
.v2-au-vac-tekst .btn{ margin-top:22px; }

/* over-ons-variant van de vestigingensectie [ref about-us 1440: compact, geen
   intro; teller met kale chevron en lange lijnpijl i.p.v. de ronde knoppen] */
.v2-au-loc .v2-loc-pijl{ background:none; border:0; border-radius:0; width:auto; height:auto;
  display:flex; align-items:center; gap:6px; padding:6px 0; }
.v2-au-loc .v2-loc-pijl:hover{ background:none; }
.v2-au-loc .v2-loc-next{ flex:0 0 auto; width:78px; }   /* [ref: lange pijl ~78] */
.v2-au-loc .v2-loc-next .v2-loc-lijn{ display:block; flex:1 1 auto; height:2px; background:#fff; }
@media (min-width:1024px){
  .v2-au-loc{ --lt:1vw; }
  /* [ref about-us schaalt NIET op schermhoogte: kop 75, cirkel 203, pad 120
     op 1440 ook bij een 900-hoog venster; de svh-klem is homepage-vormtaal] */
  .v2-au-loc .v2-loc-scrollbaan, .v2-au-loc.is-schuifbaar .v2-loc-scrollbaan{ display:none; }
  /* [ref about-us: geen scrollbaan; de is-schuifbaar-regel van de JS wint anders op specificiteit] */
}
.v2-au-loc{ background:#fff; }
  /* [ref: de sectie is WIT - met de F7-achtergrond stond er een zichtbare lijn
     op de overgang naar de volgende (witte) sectie] */
.v2-au-loc .v2-loc-fotos::after{
  background:linear-gradient(rgba(255,255,255,0) 50%, #fff 100%); }
  /* [ref-fade: de foto lost onderaan op in zuiver WIT (geen F7-grijs), zodat de
     stad wegvalt en het patroon van de volgende sectie er naadloos in doorloopt] */
.v2-au-loc .v2-loc-kartel{ display:none; }   /* [ref about-us: geen kartelvorm op de foto] */
@media (min-width:1024px){
  .v2-au-loc, .v2-au-loc .v2-loc-paneel, .v2-au-loc .v2-loc-beeld{ min-height:0; }
  /* [ref: sectie is 834, content-bepaald - niet schermvullend zoals de homepage] */
  .v2-au-loc .v2-loc-paneel{ padding:120px 81px; justify-content:flex-start; }
  /* [ref: kop op y=120, inhoud van boven opgebouwd - niet gecentreerd] */
  .v2-au-loc .v2-loc-cirkelrand{ margin-bottom:48px; }
  /* [ref: 48 lucht tussen de cirkels en de vestigingsgegevens] */
  .v2-au-loc .v2-loc-fotos, .v2-au-loc .v2-loc-foto{ height:100%; }
  /* [ref: de foto vult de hele kolom en eindigt op de paneelonderrand,
     met de witte fade eroverheen] */
}


/* Kennisbank-blok: EEN component voor ALLE pagina's waar het staat (homepage,
   dienstenoverzicht, alle dienstpagina's, over-ons - NL en EN).
   [ref /resources/-blok: kop 135 in de donkere merkkleur, LIGT BOVEN de
   kaartfoto's (een lang woord schuift eroverheen en verdwijnt er nooit achter),
   en de accentlijn is een strakke streep naast de eerste regel] */
.hp-res .v2-res-kop{ font-size:clamp(30px, 9.375vw, 135px); line-height:1;
  color:var(--brand-dark) !important; position:relative; z-index:3; }
  /* [z boven de kaarten: ref-gedrag. Zonder dit kapt de eerste kaartfoto het
     laatste woord van de kop af - dat was op alle pagina's behalve over-ons] */
.hp-res .v2-res-tand{ clip-path:none; height:3px; background:var(--gold, #F59E0B);
  margin:0 0 0 38px; width:min(210px, calc(14.6vw - 24px)); }
  /* [gemeten 21-08: ref-woord eindigt op x375, streep loopt 413..623: gat 38,
     lengte 210, hoogte 3. Bij ons stond het gat op 14 en plakte de streep
     tegen de laatste letter. De 14 kwam van de angst dat 37,5 de streep bij
     langere NL-woorden naar een eigen regel duwt; dat vangt de krimpende
     breedte nu op in plaats van de marge. */
@media (max-width:1023px){
  .hp-res .v2-res-kop{ font-size:clamp(30px, 11.3vw, 52px); }
  .hp-res .v2-res-tand{ display:none; }   /* [ref: lijn vervalt op mobiel] */
}
/* ankerdoelen van het Over ons-menu: de sectie start net onder de vaste header */
#waarden, #historie, #erkenningen, #team, #vacatures, #locaties{ scroll-margin-top:90px; }
/* 10. callout [ref: fullbleed foto 1470, kop 135 zwart, alinea 18/700 wit, knop] */
.v2-au-callout{ position:relative; min-height:1470px; padding:205px 0 195px; overflow:hidden; background:#F8FAFC; }
  /* [ref: kop op y=205] */
.v2-au-callout-foto{ position:absolute; inset:0; z-index:0; }
.v2-au-callout-foto img{ width:100%; height:100%; object-fit:cover; display:block; }
.v2-au-callout .v2-ms-wrap{ position:relative; z-index:1; }
.v2-au-callout h2{ font-size:clamp(54px,9.4vw,135px); line-height:1; font-weight:700; color:#000 !important;
  margin:0; max-width:698px; }
  /* [ref: ZWART op een lichte foto; !important wegens de generieke h2-kleurregel] */
html[lang="nl"] .v2-au-callout h2{ max-width:715px; }
  /* [gemeten: "voor U aan" = 698px op 135px Arial - met 715 valt de NL-kop net als
     de ref in DRIE regels die de breedte vullen] */
.v2-au-callout p{ font-size:18px; line-height:25.2px; font-weight:700; color:#000; margin:40px 0 0;
  max-width:417px; }   /* [ref: zwarte tekst, alinea 417 breed] */
.v2-au-callout .btn{ margin-top:61px; }
@media (min-width:1921px){
  .v2-au-hero h1{ font-size:min(7.03vw, 180px); max-width:8.75em; }
  /* [ref: 180 op 2560 EN op 3840 - de kop capt op 180px] */
}
/* mobiel */
@media (max-width:1023px){
  .v2-au-hero-tekst{ width:auto; margin-left:0; }
  .v2-au-waarden{ min-height:0; padding:56px 0; }
  .v2-au-links{ position:static; width:auto; }
  .v2-au-rechts{ grid-column:auto; }   /* een kolom: geen vaste kolomtoewijzing */
  .v2-au-waarden::before{ width:100%; bottom:auto; height:520px; }
  .v2-au-waarden::after{ left:50%; right:0; width:auto; bottom:auto; height:520px; }
  .v2-au-waarden-grid{ grid-template-columns:1fr; row-gap:390px; }
  .v2-au-waarden h2{ margin:0 0 60px; }
  .v2-au-comp{ margin:0 auto; width:260px; height:260px; }
  .v2-au-comp-beton{ width:130px; height:260px; }
  .v2-au-comp-beton img{ width:260px; height:260px; }
  .v2-au-comp-bol{ left:65px; top:65px; width:130px; height:130px; }
  .v2-au-comp-lijn{ left:32.5px; top:32.5px; width:195px; height:195px; }
  .v2-au-vkaart-voet{ grid-template-columns:1fr; row-gap:14px; padding:36px 8px 0; }
  .v2-au-vkaart-voet h3{ font-size:30px; line-height:1.2; }
  .v2-au-tijd::before,.v2-au-tijd::after{ left:0; border-radius:0; }
  .v2-au-tijd-jaar{ font-size:64px; }
  .v2-au-tijd-midden{ margin-top:16px; }
  .v2-au-tijd-beeld{ width:min(70vw,300px); height:min(70vw,300px); }
  .v2-au-tijd-beeld::before{ inset:-40px; }
  .v2-au-tijd-pijl{ width:40px; }
  .v2-au-pijllijn{ width:26px; }
  .v2-au-tijd-as{ height:70px; }
  .v2-au-tijd-as::before{ top:42px; }
  .v2-au-tijd-stap{ font-size:15px; line-height:24px; }
  .v2-au-stip{ top:42px; width:11px; height:11px; margin:-5.5px 0 0 -5.5px; border-width:2px; }
  .v2-au-tijd-stap.is-eerste .v2-au-stip{ left:18px; }
  .v2-au-tijd-stap.is-laatste .v2-au-stip{ right:18px; margin-right:-5.5px; }
  .v2-au-tijd-stap.is-actief .v2-au-stip{ width:24px; height:24px; margin:-12px 0 0 -12px; }
  .v2-au-tijd-stap.is-actief.is-laatste .v2-au-stip{ margin-right:-12px; }
  .v2-au-cijfers h2{ font-size:38px; line-height:1.2; margin-bottom:48px; }
  .v2-au-cijfers-kaart{ grid-template-columns:1fr; padding:40px 0; }
  .v2-au-cijfer{ padding:26px 20px; }
  .v2-au-cijfer + .v2-au-cijfer{ border-left:0 !important; border-top:1px solid #E1E1E1; }
  .v2-au-cijfer b{ font-size:43px; line-height:1.2; }   /* [ref 390: 42,6] */
  .v2-au-cijfers-kaart{ border-radius:0 22px; }         /* [ref 390: 0/21,75] */
  .v2-au-cijfers-foto{ bottom:180px; }
  .v2-au-maat h2{ font-size:43px; line-height:1.15; margin-bottom:60px; }   /* [ref 390: 42,6] */
  .v2-au-maat-zwart{ height:420px; }
  .v2-au-maat-zwart::after{ left:20px; right:20px; top:200px; }
  .v2-au-maat-zwart::after{ left:20px; right:20px; top:180px; }
  .v2-au-maat-geel{ left:8%; width:84%; top:340px; height:80px; }
  /* [onderrand gelijk met het zwarte vlak, zoals op desktop] */
  .v2-au-maat-foto{ width:min(80vw,340px); height:min(80vw,340px); }
  .v2-au-maat-rij{ flex-direction:column; align-items:center; gap:28px; margin-top:40px; }
  .v2-au-vac{ min-height:0; padding:56px 0 0; }
  .v2-au-vac-zwart{ width:100%; bottom:auto; height:380px; border-radius:0; }
  .v2-au-vac-zwart::before{ display:none; }   /* mobiel: geen effen dekvlak */
  .v2-au-vac-geel{ display:none; }
  .v2-au-vac-grid{ grid-template-columns:1fr; row-gap:40px; }
  .v2-au-vac h2{ font-size:34px; line-height:1.25; }
  .v2-au-vac-foto{ width:100%; height:auto; aspect-ratio:623/531; margin-top:40px; }
  .v2-au-lid{ flex:0 0 68vw; }
  .v2-au-lid img{ width:min(50vw,195px); height:min(50vw,195px); }   /* [ref 390: foto 195] */
  .v2-au-lid h3{ font-size:26px; }                                   /* [ref 390: naam 25,6] */
  .v2-au-awards h2{ font-size:34px; line-height:1.2; margin-bottom:44px; }
  .v2-au-prijs{ flex:0 0 205px; min-height:0; padding:40px 18px 32px; }  /* [ref 390: kolom 205] */
  .v2-au-prijs svg, .v2-au-prijs img{ width:90px; height:90px; }
  .v2-au-prijs span{ font-size:20px; margin-top:32px; }                  /* [ref 390: titel 20,5] */
  .v2-au-callout{ min-height:0; padding:90px 0; }
  .v2-au-callout h2{ font-size:61px; }   /* [ref 390: 61,4] */
}

/* [regel: eerste scherm = alleen de hero] dienst-hero viewportvullend; hier
   onderaan geplaatst omdat de eerdere plaatsing niet door de parser kwam */
/* [de schermvullende dienstpagina-hero is teruggedraaid (Dikkie 20-08): de
   referentie is 824 hoog en de flex-variant liet de inner-grid krimpen] */
  /* (0,2,1): wint van de bekende '.v2-ms section{min-height:0}'-valkuil */
h1{ font-family:var(--font-kop); letter-spacing:normal; }


/* ---------- zwevende knoppen: nooit over de primaire CTA in het eerste scherm
   De vaste knoppen (WhatsApp/telefoon rechts, "Aanvraag doen" links) staan op
   elke pagina [DPS-regel], maar bovenaan de pagina vielen ze op smalle schermen
   precies over de hero-CTA, die daardoor NIET klikbaar was (gemeten op de
   dienstenpagina). Ze verschijnen nu zodra de bezoeker begint te scrollen. */
.wa-widget, .agbot-launch{
  transition:opacity .3s var(--ease), transform .3s var(--ease), visibility .3s;
}
html.v2-top .wa-widget, html.v2-top .agbot:not(.is-open), html.v2-top .agbot-launch, html.v2-top .agbot-launch.dps-cta-gold{
  opacity:0 !important; visibility:hidden !important; transform:translateY(12px); pointer-events:none;
}
  /* !important omdat .dps-cta-gold zelf visibility/opacity met !important forceert
     (regel tegen doffe CTA's); zonder dit bleef de chatbotknop bovenaan staan */
@media (prefers-reduced-motion: reduce){
  .wa-widget, .agbot-launch{ transition:none; }
}


/* ---------- hero-typografie exact op de referentie (20-08-2026) -------------
   Gemeten op randoco.com (1440): kop Arial 60/54 met letter-spacing -3px en
   <strong> op 700, alinea Arial 18/25,2, knop Arial 18/700 met padding
   12/22,5 en radius 0/15 (158x53). De eyebrow-pill is uit de hero verwijderd:
   de referentie heeft hem niet. */
.hp-hero-slider .hp-hs-title{
  font-family:var(--font-kop) !important;
  font-size:60px !important; line-height:54px !important;
  letter-spacing:-3px !important; font-weight:700 !important;
  max-width:446px !important;                       /* [ref: kolom 446] */
}
.hp-hero-slider .hp-hs-desc{
  font-family:var(--font-kop) !important;
  font-size:18px !important; line-height:25.2px !important; letter-spacing:normal !important;
  max-width:446px !important;
  margin:15px 0 34px !important;                    /* [ref: 15 onder de kop, 34 boven de knop] */
}
.hp-hero-slider .hp-hs-btn{font-family:var(--font-kop) !important; text-transform:none !important; box-sizing:border-box !important;}                                                   /* [ref: knophoogte exact 53] */
@media (max-width:1023px){
  /* [ref 390 gemeten: kop 34,1/30,69 met ls -2,0875; alinea 14,4375/20,2125;
     knop 20,175/28,245 met hoogte 57] */
  .hp-hero-slider .hp-hs-title{
    font-size:34.1px !important; line-height:30.69px !important;
    letter-spacing:-2.0875px !important; max-width:none !important;
  }
  .hp-hero-slider .hp-hs-desc{
    font-size:14.4375px !important; line-height:20.2125px !important; max-width:none !important;
  }/* leeggemaakt, vorm komt uit tokens-referentie.css: .hp-hero-slider .hp-hs-btn */
  /* [ref 390: de hero-tekst staat LINKS op x=21, niet gecentreerd] */
  .hp-hero-slider .hp-hs-static-content{
    text-align:left !important; align-items:flex-start !important;
    padding-left:0 !important; padding-right:0 !important;
  }   /* de container heeft al een buitenmarge van 21 [ref-inspring] */
  .hp-hero-slider .hp-hs-title,
  .hp-hero-slider .hp-hs-desc,
  .hp-hero-slider .hp-hs-btn{
    text-align:left !important; margin-left:0 !important; margin-right:0 !important;
    align-self:flex-start !important;
  }
}


/* ============================================================================
   TYPOGRAFIE SITEBREED OP DE REFERENTIE (20-08-2026)
   Gemeten op randoco.com: ALLE koppen staan in dezelfde brede sans (Arial-stack)
   in PUUR ZWART, zonder extra letterafstand. Onze koppen stonden in de smalle
   condensed letter en in twee grijstinten (#0F172A en #3a444c) - vandaar de
   "grijszwarte" indruk. Deze regels staan bewust als laatste blok zodat ze de
   oudere sitebrede kopregels overschrijven.
   ========================================================================= */
:root{ --kop-zwart:#000; }
h1, h2, h3, h4, h5, h6,
.kop-xxl, .v2-res-kop, .v2-ms-kop, .hp-hs-title{
  font-family:var(--font-kop) !important;
  letter-spacing:normal !important;
  color:var(--kop-zwart) !important;
}
/* de oudere !important-regel die koppen #3a444c gaf, wordt hierdoor gedekt */
h2, .section-header h2, .hp-waarom-head h2, .hpgr-head h2{
  color:var(--kop-zwart) !important;
}
/* koppen op donkere vlakken blijven wit */
.v2-au-hero h1, .v2-kb-hero h1, .v2-au-waarden h2, .v2-au-maat h2,
.v2-ms-awards h2, .hp-cta h2, .v2-cta h2, .v2-au-vac h2, .v2-gh h1,
.v2-loc-kop, .v2-locaties h2.v2-loc-kop{
  color:#fff !important;
}
  /* LET OP: de homepage-hero-kop staat op de WITTE rechterhelft, niet op de
     foto - die hoort zwart (ref) en mag hier NIET in staan. */
/* uitzonderingen die op wit staan en dus zwart horen te zijn */
.v2-au-callout h2, .v2-au-team h2, .v2-au-awards h2, .hp-res .v2-res-kop,
.v2-ms .v2-ms-hero-tekst h1, .v2-pj-kop h1, .v2-kbl-kop,
.v2-pd-hero h1, .v2-pd2 .v2-pd-hero h1{
  color:var(--kop-zwart) !important;
}


/* De zwevende "Aanvraag doen"-knop linksonder vervalt op mobiel (besluit Dikkie
   20-08-2026): de referentie heeft hem niet en het component is uitgefaseerd.
   Op mobiel blijven alleen ons hamburgermenu, de telefoonknop en WhatsApp. */
@media (max-width:1023px){
  .agbot, .agbot-launch{ display:none !important; }
}


/* ============================================================================
   LOPENDE TEKST, KNOPPEN EN RESTKLEUREN OP DE REFERENTIE (20-08-2026)
   Gemeten profiel van randoco.com: ALLE tekst in de Arial-stack, alinea's op
   18px (intro's 21px), knoppen met hoekradius 0/15, en koppen uitsluitend puur
   zwart of wit - geen grijstinten. Laatste blok, zodat het de oudere regels
   overschrijft.
   ========================================================================= */
body, p, li, dd, dt, td, th, label, input, textarea, select, button,
.btn, a, span, strong, em, small, figcaption, blockquote{
  font-family:var(--font-kop);
}
p, li{ font-size:18px; }                       /* [ref: hoofdmaat 18] */
.v2-intro, .lead, .v2-pkop-intro, .v2-ms-intro{ font-size:21px; }/* leeggemaakt, vorm komt uit tokens-referentie.css: /* [ref: intro 21] */ /* knoppen: overal dezelfde hoek als d */
/* uitzonderingen die rond horen te blijven (iconen, sociale knoppen, dots) */
.v2-si, .v2-car-dot, .v2-loc-cirkel, .nav-bel, .wa-widget a, .tel-btn,
.v2-au-maat-ster, .v2-mm-tabplus, .v2-kbh-pijl, .v2-au-tijd-stap,
.v2-loc-cirkel img, .nav-lang-btn{
  border-radius:50% !important;
}
/* geen grijstinten meer op koppen: alles zwart, behalve op donkere vlakken */
h1, h2, h3, h4, h5, h6{ color:var(--kop-zwart) !important; }
/* ...en meteen daarna weer wit waar de sectie donker is (volgorde is cruciaal:
   deze regels MOETEN na de zwart-regel staan, anders worden ze overschreven) */
/* .v2-testi h2 is uit deze lijst: de testimonialsectie is naar de
   referentie wit geworden en de kop stond wit op wit, onzichtbaar naast
   "Testimonials" in dik zwart bij de ref. */
.v2-au-hero h1, .v2-kb-hero h1, .v2-au-waarden h2, .v2-au-maat h2,
.v2-ms-awards h2, .hp-cta h2, .v2-cta h2, .v2-au-vac h2, .v2-gh h1,
.v2-loc-kop, .v2-locaties h2.v2-loc-kop, .v2-kbh-kaart strong,
.v2-au-lid h3, .v2-ms-zegel span{
  color:#fff !important;
}
.hp-testi h2, .v2-testi h2, .v2-testi-kop{ color:rgb(0,0,0) !important; }
/* de social-kop staat op WIT: zwart (de eerdere regel maakte hem wit-op-wit) */
.hp-social h2, .v2-social h2, .v2-social-kop{ color:var(--kop-zwart) !important; }


/* Kleinkapitalen op koppen (.v2-kop-kk) vervallen: de referentie schrijft haar
   koppen in gewone letters. [gemeten: font-variant normal op alle ref-koppen] */
.v2-kop-kk, h1.v2-kop-kk, h2.v2-kop-kk, .kop-xxl.v2-kop-kk{
  font-variant:normal !important; font-variant-caps:normal !important;
}


/* ============================================================================
   REGIMEWISSEL 20-08-2026: de REFERENTIE (randoco.com) wint van elke eigen
   huisregel. Dit blok haalt weg wat wij hebben en de referentie niet, en zet
   de gemeten referentiewaarden ervoor in de plaats.
   ========================================================================= */

/* 1. ALLE zwevende knoppen vervallen (WhatsApp, telefoon, Aanvraag) op elke
      breedte - de referentie heeft er geen enkele. */
.wa-widget, .agbot, .agbot-launch, .sticky-cta, .wa-btn-wrap{
  display:none !important;
}

/* 2. Geen gekleurde woorden in koppen: de referentie-hero is volledig zwart. */
h1 em, h2 em, h3 em, .hp-hs-title em, .hp-hs-title strong,
.v2-res-kop em, .kop-xxl em{
  color:inherit !important; font-style:normal !important;
}

/* 3. Knoppen: de gemeten referentieknop.
      [ref "Get Started" 1440: 158x53, bg #0F172A, radius 0/15,
       padding 12/22,5, Arial 18/700 wit] */
:root{ --ref-blauw:#0F172A; }
.btn, a.btn, button.btn, .btn-primary, .hp-hs-btn, .of-submit, .lp-submit,
.v2-loc-route, .v2-res-cta{
  background:var(--ref-blauw) !important;
  background-image:none !important;
  color:#fff !important;
  border-radius:0 15px !important;
  padding:12px 22.5px !important;
  min-height:53px !important;
  font-family:var(--font-kop) !important;
  font-size:18px !important; line-height:25.2px !important; font-weight:700 !important;
  box-shadow:none !important; letter-spacing:normal !important;
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
}
.btn:hover, a.btn:hover, button.btn:hover, .btn-primary:hover, .hp-hs-btn:hover{
  background:#1E293B !important; transform:none !important;
}
/* outline-variant blijft bestaan maar in de referentiekleur */
.v2-btn-outline, .btn-ghost{
  background:transparent !important; color:var(--ref-blauw) !important;
  border:1px solid var(--ref-blauw) !important;
}

/* 4. Geen eyebrow-pills, geen groene vinkjes, geen extra badges. */
.hp-hs-eyebrow, .eyebrow, .v2-eyebrow, .v2-pill{ display:none !important; }




/* ---------------------------------------------------------------------------
   MOBIELE HEADER = gemeten referentie (390)
   header 64 | logo x21 44br | telefoon 41x41 #0F172A op x273 |
   hamburger 40x40 op x329 met TWEE lijnen 40x2 in #0F172A, y26 en y36.
   Geen pill-balk, geen vlagknop en geen sociale iconen in de balk.
   ------------------------------------------------------------------------ */
@media (max-width:1023px){
  .nav-inner{ height:64px !important; padding:0 21px !important; align-items:center !important; }
  /* Het logo blijft het logo. Hier stond een regel die op mobiel het echte
     logobestand verborg en in plaats daarvan de favicon toonde op 44x44. Dat
     gaf een oranje huisje op een zwart vierkant in de hoek, half buiten beeld.
     De referentie toont op 390 gewoon zijn eigen logo: x=21, y=10, 43.5 breed
     en 42.6 hoog. Ons logo is 180x44 en dus liggend; dat schaalt op dezelfde
     hoogte mee met een breedte die uit de verhouding volgt, want vervormen of
     bijsnijden is geen optie. */
  .nav-logo{ width:auto !important; height:42.6px !important; }
  .nav-logo img{ height:42.6px !important; width:auto !important; }
  .nav-logo .logo-favicon{ display:none !important; }
  .nav-cta{
    background:none !important; background-color:transparent !important;
    /* De pill had ook een rand: 1px solid rgba(255,255,255,.18). Die bleef staan
       toen de vulling wegging, en tekende een lichte rechthoek om de telefoon
       en de hamburger heen. Op een foto valt dat op als een halfweggehaald
       kader. De referentie heeft daar niets: header transparant, telefoonknop
       en hamburger los. */
    border:0 !important;
    border-radius:0 !important; box-shadow:none !important;
    padding:0 !important; gap:16px !important; height:41px !important;
  }
  .nav-lang, .nav-social, .nav-bel-tekst{ display:none !important; }
  .nav-bel{ width:41px !important; height:41px !important; padding:0 !important; }
  .nav-bel-cirkel{
    width:41px !important; height:41px !important; border-radius:50% !important;
    background:#0F172A !important; color:#fff !important;
  }
  .nav-bel-cirkel svg{ width:17px !important; height:17px !important; }
  .nav, header.nav{ height:64px !important; min-height:64px !important; padding:0 !important; }
  .nav-cta .nav-burger, .nav-burger{
    width:40px !important; height:40px !important;
    background:none !important; background-color:transparent !important;
    border:0 !important; outline:0 !important;
    border-radius:0 !important; box-shadow:none !important;
  }
  .nav-cta .nav-burger span, .nav-burger span{ background:transparent !important; width:40px !important; }
  .nav-cta .nav-burger span::before, .nav-cta .nav-burger span::after,
  .nav-burger span::before, .nav-burger span::after{
    width:40px !important; height:2px !important; background:#0F172A !important;
  }
  .nav-burger span::before{ top:-5px !important; }
  .nav-burger span::after{ top:5px !important; }
}


/* Mobiele hero: foto begint op y=0 en loopt ONDER de transparante header door
   [ref 390: foto y=0, hoogte 309 = 79,23vw; onze padding-top van 56 duwde hem
   omlaag waardoor er een witte balk boven stond] */
@media (max-width:1023px){
  .hp-hero-slider{ padding-top:0 !important; }
  .hp-hero-slides{ height:79.23vw !important; }
}


/* Tekst OP een foto is wit [ref: projectkaart-titel en -plaats rgb(255,255,255)].
   De sitebrede zwart-regel maakte deze titels zwart, waardoor ze wegvielen
   tegen het beeld. */
/* Wit is hier uitsluitend voor tekst die OP een foto ligt (de overlay in
   .project-meta en de uitgelichte herokaart). De brede lijst hiervoor sloeg
   ook .v2-cs en alle .project-card-spans plat, en de projecttitels in de
   slider (die naast de kaart op wit staan, ref: zwart 27/700 met de locatie
   in rgb(115,115,115)) werden daardoor wit op wit: onzichtbaar. */
.project-card .project-meta h1, .project-card .project-meta h2,
.project-card .project-meta h3, .project-card .project-meta h4,
.project-card .project-meta p, .project-card .project-meta span,
.project-card .project-meta strong,
.v2-hero-featured .project-meta h3, .v2-hero-featured .project-meta p,
.v2-hero-featured .project-meta span,
.v2-pj-kaart-over h3, .v2-pj-kaart-over span,
.v2-loc-item .v2-loc-naam, .v2-loc-item .v2-loc-contact,
.v2-kbh-kaart strong, .v2-kbh-kaart span,
.v2-au-lid h3, .v2-au-lid p{
  color:#fff !important;
}
/* De slidertekst naast de kaarten, op de gemeten ref-waarden. */
.v2-cs-title{ color:rgb(0,0,0) !important; font-size:27px !important; font-weight:700 !important; }
.v2-cs-cat{ color:rgb(0,0,0) !important; font-size:18px !important; font-weight:400 !important; }
.v2-cs-loc{ color:rgb(115,115,115) !important; font-size:18px !important; }

/* [REGIME: referentie wint] Zichtbare kruimelpaden bestaan niet op randoco.com,
   op geen enkele pagina en op geen enkele breedte. Gemeten 21-08: selector
   [class*=breadcrumb] levert 0 treffers op /bid-on-a-project/ en /about-us/.
   Daarmee vervalt het element hier ook. De BreadcrumbList in de JSON-LD blijft
   staan; die is functioneel en valt onder wat van ons blijft.
   Loste tegelijk 46 leesbaarheidsmeldingen op: --bronze-light rgb(61,162,242)
   haalde op foto-hero's 1.6:1 en op de kennisbankkaarten 1.7:1. */
.breadcrumb, .v2-kruimel{ display:none !important; }

/* [REGIME: referentie wint] Het gele accent. Gemeten op randoco.com (1440,
   volledige pagina uitgescrold): elk geel vlak op de referentie is
   #F59E0B. Bij ons was dat rgb(230,191,0), en dat kwam nergens uit een
   token: --gold werd op geen enkele plek gedefinieerd, dus alle 14 regels met
   var(--gold,#F59E0B) vielen terug op hun eigen fallback. Daarmee stond de
   kleur veertien keer los in de code. Nu een keer op :root, zodat er een echt
   token achter zit. --gold-dark is dezelfde tint op 88% helderheid. */
:root{ --gold:#F59E0B; --gold-dark:#d89400; }
