:root{
  --muur:#F4F6F8; --wit:#FFFFFF; --inkt:#1C2430; --grijs:#5A6472;
  --paneel:#D9DDE2; --geel:#FFC20E; --blauw:#2457A6; --rood:#C8312B; --wa:#25D366;
  --breed:1200px; --r:10px; --pad:clamp(1rem,4vw,2rem);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--muur);color:var(--inkt);font:400 1.0625rem/1.6 "Barlow",system-ui,-apple-system,"Segoe UI",sans-serif;overflow-x:hidden}
h1,h2,h3{font-family:"Barlow Condensed","Arial Narrow",sans-serif;font-weight:700;line-height:1.05;margin:0 0 .5em}
h1{font-size:clamp(2.4rem,6vw,4.25rem);letter-spacing:-.01em}
h2{font-size:clamp(1.6rem,3.2vw,2.4rem)}
h3{font-size:1.35rem;font-weight:600}
p{margin:0 0 1em;max-width:62ch}
a{color:var(--blauw)}
svg{flex-shrink:0}
.groot{font-size:clamp(1.05rem,1.6vw,1.2rem);color:var(--grijs)}
:focus-visible{outline:3px solid var(--blauw);outline-offset:3px}
.skip{position:absolute;left:-999px;top:0;background:var(--geel);padding:.5rem 1rem;z-index:30}
.skip:focus{left:1rem}

/* knoppen */
.knoppen{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}
.knop{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.8rem 1.3rem;border-radius:6px;font-weight:600;text-decoration:none;border:2px solid transparent;transition:background .15s;white-space:nowrap}
.knop svg{width:18px;height:18px}
.knop--geel{background:var(--geel);color:var(--inkt)}
.knop--geel:hover{background:#FFD24D}
.knop--donker{background:var(--inkt);color:var(--wit)}
.knop--donker:hover{background:#2C3848}
.knop--lijn{border-color:var(--inkt);color:var(--inkt)}
.knop--lijn:hover{background:var(--wit)}
.knop--wa{background:var(--wa);color:#0B3D1E}
.knop--wa:hover{background:#3BE07A}

/* topbalk */
.topbalk{background:var(--inkt);color:#C9D0DA;font-size:.9rem}
.topbalk__binnen{max-width:var(--breed);margin:auto;padding:.45rem var(--pad);display:flex;justify-content:space-between;gap:1rem}
.topbalk a{color:var(--geel);text-decoration:none}
.topbalk a:hover{text-decoration:underline}
.topbalk__rechts{display:flex;gap:1.5rem}

/* header */
.kop{background:var(--wit);border-bottom:3px solid var(--geel);position:sticky;top:0;z-index:15;box-shadow:0 6px 16px -12px rgba(28,36,48,.35)}
.kop__binnen{max-width:var(--breed);margin:auto;padding:.75rem var(--pad);display:flex;align-items:center;justify-content:space-between;gap:1rem;position:relative}
.logo{white-space:nowrap;display:flex;align-items:center;gap:.65rem;text-decoration:none;color:var(--inkt);font:600 1.65rem/1 "Barlow Condensed",sans-serif}
.logo svg{width:42px;height:42px}
.logo b{font-weight:700}
.logo small{display:block;font:500 .78rem/1.2 "Barlow",sans-serif;color:var(--grijs);margin-top:.2rem}
.logo--licht{color:var(--wit)}
.menu{display:flex;align-items:center;gap:.35rem}
.menu a:not(.knop){color:var(--inkt);text-decoration:none;font-weight:600;padding:.55rem .9rem;border-radius:6px}
.menu a:not(.knop):hover{background:var(--muur)}
.menu a[aria-current]{background:var(--inkt);color:var(--wit)}
.menu .knop{margin-left:.6rem}
.menuknop{display:none;align-items:center;gap:.55rem;background:var(--inkt);color:var(--wit);border:0;border-radius:6px;padding:.6rem .9rem;font:inherit;font-weight:600;cursor:pointer}
.hamburger,.hamburger::before,.hamburger::after{display:block;width:18px;height:2px;background:currentColor;position:relative;transition:transform .2s}
.hamburger::before,.hamburger::after{content:"";position:absolute;left:0}
.hamburger::before{top:-6px}.hamburger::after{top:6px}
.menuknop[aria-expanded="true"] .hamburger{background:transparent}
.menuknop[aria-expanded="true"] .hamburger::before{transform:translateY(6px) rotate(45deg)}
.menuknop[aria-expanded="true"] .hamburger::after{transform:translateY(-6px) rotate(-45deg)}

/* hero */
.held{max-width:var(--breed);margin:auto;padding:clamp(2.5rem,6vw,4.5rem) var(--pad);display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(2rem,5vw,3.5rem);align-items:center}

/* meterkast */
.kast{background:var(--paneel);border-radius:14px;padding:clamp(.8rem,2vw,1.4rem);box-shadow:inset 0 0 0 1px #C4C9D0,0 18px 40px -24px rgba(28,36,48,.45);display:grid;gap:1.2rem}
.kast__rij{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;background:linear-gradient(#AEB4BC,#AEB4BC) center 38%/100% 10px no-repeat;padding:.4rem 0}
.groep{display:flex;flex-direction:column;align-items:center;gap:.55rem;text-decoration:none;color:var(--inkt)}
.schakelaar{position:relative;width:100%;max-width:64px;aspect-ratio:1/1.9;background:var(--wit);border-radius:4px;box-shadow:inset 0 0 0 1px #CDD2D8,0 2px 0 #B9BFC6}
.schakelaar::before{content:"";position:absolute;left:28%;right:28%;top:18%;bottom:18%;background:#EEF0F3;border-radius:3px;box-shadow:inset 0 1px 2px rgba(0,0,0,.15)}
.schakelaar i{position:absolute;left:30%;right:30%;height:30%;top:20%;background:var(--inkt);border-radius:3px;transition:background .18s}
.groep:hover .schakelaar i,.groep:focus-visible .schakelaar i{background:var(--blauw)}
.groep--storing .schakelaar i{background:var(--geel)}
.etiket{background:var(--wit);border:1px solid #C4C9D0;border-radius:3px;padding:.15rem .35rem;font:600 .82rem/1.15 "Barlow Condensed",sans-serif;text-align:center;min-height:2.4em;display:flex;align-items:center;justify-content:center;max-width:100%;}
.led{position:absolute;left:50%;top:6%;width:9px;height:9px;margin-left:-4.5px;border-radius:50%;background:#2FB35A;box-shadow:0 0 6px #2FB35A;transition:background .2s,box-shadow .2s}
.groep.alarm .led{background:#E0332B;box-shadow:0 0 10px 2px #E0332B;animation:knipper .5s steps(2) infinite}
.groep.alarm .etiket{border-color:#E0332B;color:#B3261E}
@keyframes knipper{50%{opacity:.35}}

/* Stedin-balk */
.stedin{background:var(--geel)}
.stedin__binnen{max-width:var(--breed);margin:auto;padding:1.8rem var(--pad);display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}
.stedin h2{font-size:1.6rem;margin:0 0 .2rem}
.stedin p{margin:0}

/* blokken */
.blok{max-width:var(--breed);margin:auto;padding:clamp(2.5rem,6vw,4rem) var(--pad)}
.tweeluik{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,3rem);margin-bottom:2rem}
.lijst{list-style:none;padding:0;margin:0}
.lijst li{padding:.55rem 0 .55rem 1.6rem;border-bottom:1px solid var(--paneel);position:relative}
.lijst li::before{content:"";position:absolute;left:0;top:1.05rem;width:.7rem;height:.7rem;background:var(--geel);clip-path:polygon(60% 0,0 60%,45% 60%,35% 100%,100% 38%,55% 38%)}

/* paginakop (subpagina's) */
.paginakop{background:var(--inkt);color:var(--wit);background-image:linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px);background-size:32px 32px}
.paginakop__binnen{max-width:var(--breed);margin:auto;padding:clamp(2.5rem,6vw,4rem) var(--pad);display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(2rem,5vw,3.5rem);align-items:center}
.paginakop__binnen--enkel{grid-template-columns:1fr}
.paginakop .groot{color:#C9D0DA}
.paginakop .knoppen{margin-bottom:0}
.eerst{background:var(--wit);color:var(--inkt);border-radius:var(--r);padding:1.6rem 1.6rem 1.2rem;border-top:6px solid var(--geel)}
.eerst h2{font-size:1.6rem}
.eerst ol{margin:0;padding:0;list-style:none;counter-reset:e}
.eerst li{counter-increment:e;position:relative;padding:0 0 .9rem 2.4rem}
.eerst li::before{content:counter(e);position:absolute;left:0;top:0;width:1.7rem;height:1.7rem;border-radius:50%;background:var(--inkt);color:var(--geel);display:grid;place-items:center;font:700 .95rem "Barlow Condensed",sans-serif}

/* diensten */
.groepkop{margin-top:.5rem;padding-bottom:.4rem;border-bottom:3px solid var(--geel);display:inline-block}
.diensten{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:1rem;margin:1.2rem 0 3rem}
.dienst{display:flex;gap:1rem;background:var(--wit);border:1px solid var(--paneel);border-radius:var(--r);padding:1.3rem;scroll-margin-top:7rem}
.dienst h3{margin-bottom:.3rem}
.dienst p{color:var(--grijs);margin:0;font-size:1rem}
.dienst__ico{width:46px;height:46px;border-radius:8px;background:var(--inkt);display:grid;place-items:center;flex-shrink:0}
.dienst__ico svg{width:24px;height:24px;fill:none;stroke:var(--geel);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.dienst:target{border-color:var(--geel);box-shadow:0 0 0 3px var(--geel)}

.stappen{list-style:none;counter-reset:s;padding:0;margin:0;border-left:3px solid var(--geel)}
.stappen li{counter-increment:s;padding:0 0 1.4rem 1.6rem;position:relative}
.stappen li::before{content:counter(s);position:absolute;left:-1.05rem;top:-.1rem;width:1.8rem;height:1.8rem;border-radius:50%;background:var(--inkt);color:var(--geel);display:grid;place-items:center;font:700 1rem "Barlow Condensed",sans-serif}
.stappen p{margin:0;color:var(--grijs)}

/* balk */
.balk{background:var(--inkt);color:var(--wit)}
.balk__binnen{max-width:var(--breed);margin:auto;padding:3rem var(--pad);display:grid;grid-template-columns:1fr auto;gap:.2rem 2rem;align-items:center}
.balk h2{margin:0}
.balk p{grid-column:1;color:#C9D0DA;margin:0}
.balk .knop{grid-column:2;grid-row:1/3}

/* contact */
.gegevens dl{display:grid;grid-template-columns:auto 1fr;gap:.8rem 1.5rem;margin:0}
.gegevens dt{font-weight:600}
.gegevens dd{margin:0;overflow-wrap:anywhere}
.gegevens small{color:var(--grijs)}
.formulier{background:var(--wit);padding:clamp(1.2rem,4vw,2rem);border-radius:var(--r);border:1px solid var(--paneel);display:grid;gap:1rem;min-width:0}
.formulier label{display:grid;gap:.3rem;font-weight:500}
.formulier input,.formulier select,.formulier textarea{font:inherit;font-size:16px;padding:.65rem .8rem;border:1px solid #B9BFC6;border-radius:6px;background:var(--wit);color:var(--inkt);width:100%}
.formulier button{justify-self:start;cursor:pointer;font:inherit;font-weight:600}
.verborgen{position:absolute;left:-9999px}
.melding{padding:.8rem 1rem;border-radius:6px;margin:0}
.melding--ok{background:#E3F2E6;color:#1D5B2A}
.melding--fout{background:#FBE5E3;color:#8A211C}

/* footer */
.voet{background:#141B25;color:#C9D0DA}
.voet__cta{background:var(--geel);color:var(--inkt)}
.voet__cta-binnen{max-width:var(--breed);margin:auto;padding:1.4rem var(--pad);display:flex;align-items:center;justify-content:space-between;gap:1rem 2rem;flex-wrap:wrap}
.voet__cta p{margin:0;font-size:1.15rem}
.voet__cta .knoppen{margin:0}
.voet__binnen{max-width:var(--breed);margin:auto;padding:3.5rem var(--pad) 2rem;display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:2.5rem}
.voet h2{font-size:1.2rem;color:var(--wit);margin-bottom:.6rem}
.voet p{line-height:1.9}
.voet a{color:#C9D0DA;text-decoration:none}
.voet a:hover{color:var(--geel)}
.voet .logo{margin-bottom:1rem}
.voet .logo:hover{color:var(--wit)}
.voet small{color:#8B95A3}
.voet__onder{max-width:var(--breed);margin:auto;padding:1.2rem var(--pad);border-top:1px solid #2A3442;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem;font-size:.9rem;color:#8B95A3}
.voet__onder a{color:var(--geel)}

/* zwevende knoppen */
.zwevend{position:fixed;right:1rem;bottom:1rem;bottom:max(1rem,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:.6rem;z-index:20}
.zwevend__knop{display:flex;align-items:center;gap:.5rem;padding:.7rem 1rem .7rem .8rem;border-radius:999px;font-weight:600;text-decoration:none;box-shadow:0 6px 18px -6px rgba(28,36,48,.5)}
.zwevend__knop svg{width:22px;height:22px}
.zwevend__knop--wa{background:var(--wa);color:#fff}
.zwevend__knop--bel{background:var(--geel);color:var(--inkt)}

/* ===== Laptop klein ===== */
@media (max-width:1100px){
  .menu a:not(.knop){padding:.5rem .6rem}
  .voet__binnen{grid-template-columns:1fr 1fr}
}
/* ===== Menu naar hamburger (laptop klein / iPad) ===== */
@media (max-width:1180px){
  .menuknop{display:inline-flex}
  .menu{display:none;position:absolute;left:0;right:0;top:100%;background:var(--wit);flex-direction:column;align-items:stretch;padding:.75rem var(--pad) 1.25rem;border-bottom:3px solid var(--geel);gap:.25rem;box-shadow:0 14px 24px -16px rgba(28,36,48,.4)}
  .menu.open{display:flex}
  .menu a:not(.knop){padding:.8rem 1rem;font-size:1.1rem}
  .menu .knop{margin:.5rem 0 0}
}
/* ===== Tablet / iPad ===== */
@media (max-width:960px){
  .held{grid-template-columns:1fr}
  .kast{max-width:640px}
  .paginakop__binnen{grid-template-columns:1fr}
  .eerst{max-width:620px}
}
/* ===== Mobiel groot ===== */
@media (max-width:720px){
  .tweeluik{grid-template-columns:1fr}
  .balk__binnen{grid-template-columns:1fr}
  .balk .knop{grid-column:1;grid-row:auto;justify-self:start;margin-top:1rem}
  .topbalk__links{display:none}
  .topbalk__binnen{justify-content:center}
}
/* ===== Mobiel ===== */
@media (max-width:560px){
  .logo{font-size:1.4rem}
  .logo svg{width:36px;height:36px}
  .logo small{display:none}
  .knoppen .knop{flex:1 1 100%}
  .voet__binnen{grid-template-columns:1fr;gap:1.8rem}
  .voet__cta .knoppen{width:100%}
  .kast__rij{gap:2px}
  .etiket{font-size:.68rem;padding:.1rem .2rem}
  .led{width:7px;height:7px;margin-left:-3.5px}
  .zwevend__knop span{display:none}
  .zwevend__knop{padding:.85rem;border-radius:50%}
  .dienst{padding:1.1rem}
  .gegevens dl{grid-template-columns:1fr;gap:.1rem}
  .gegevens dd{margin-bottom:.7rem}
}
@media (max-width:560px){
  .kast{padding:.7rem .5rem}
  .etiket{font-size:.62rem;letter-spacing:-.01em;padding:.1rem .15rem;width:calc(100% + 2px)}
}
@media (max-width:360px){
  .etiket{font-size:.56rem}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;scroll-behavior:auto!important}
  .groep.alarm .led{animation:none}
}
.voet .knop--wa{color:#0B3D1E}
.voet .knop--donker,.voet .knop--donker:hover{color:var(--wit)}

/* zwevende knoppen verbergen zodra de footer in beeld is */
.zwevend{transition:opacity .25s,transform .25s}
.zwevend.weg{opacity:0;transform:translateY(20px);pointer-events:none}

/* Offerte */
.knop--offerte{border-color:var(--inkt);color:var(--inkt);margin-left:.4rem}
.knop--offerte:hover,.knop--offerte[aria-current]{background:var(--inkt);color:var(--wit)}
.menu .knop--bel{margin-left:.4rem}
.knop--wit{background:var(--wit);color:var(--inkt);border-color:var(--wit)}
.knop--wit:hover{background:var(--muur)}
.voet .knop--wit{color:var(--inkt)}
.formulier--breed{max-width:860px}
.velden{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.veld--2{grid-column:span 2}
.veld--vol{grid-column:1/-1}
.optioneel{font-weight:400;color:var(--grijs)}
.upload input{padding:.9rem;border:2px dashed #B9BFC6;background:var(--muur);cursor:pointer}
@media (max-width:1100px){.menu .knop--offerte{padding:.7rem .9rem}}
@media (max-width:1180px){.menu .knop--offerte,.menu .knop--bel{margin:.5rem 0 0}}
@media (max-width:640px){
  .velden{grid-template-columns:1fr 1fr}
  .veld--2{grid-column:1/-1}
}
@media (max-width:420px){
  .velden{grid-template-columns:1fr}
  .veld--2,.veld--vol{grid-column:auto}
}
.offerte-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,2.5rem);align-items:start}
.formulier--breed{max-width:none}
.eerst--licht{position:sticky;top:7rem;border:1px solid var(--paneel)}
.eerst--licht .knoppen{margin:.5rem 0 1rem}
.klein{font-size:.95rem;color:var(--grijs);margin:0}
@media (max-width:960px){.offerte-grid{grid-template-columns:1fr}.eerst--licht{position:static}}
