/* =========================================================
   Teulings Onderhoud – topbar, navbar, hero, sectie 2
   Waarden 1:1 overgenomen van teulingsonderhoud.nl (1440px)
   ========================================================= */

:root{
  --topbar:    #3475bf;   /* topbar achtergrond    rgb(52,117,191) */
  --blue:      #2356e7;   /* accentblauw (hover)   rgb(35,86,231)  */
  --ink:       #13283c;   /* body tekst            rgb(19,40,60)   */
  --orange:    #fc7f03;   /* primaire knop         rgb(252,127,3)  */
  --green:     #2fb16d;   /* groene balk           rgb(47,177,109) */
  --light:     #f1f1f1;   /* tekst op donker       rgb(241,241,241)*/
  --container: 1320px;
}

*,*::before,*::after{ box-sizing:border-box; }

html{ -webkit-text-size-adjust:100%; }

body{
  margin:0;
  font-family:Poppins,sans-serif;
  font-size:16px;
  font-weight:500;
  line-height:1.6;
  color:var(--ink);
  background:#fff;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

img{ max-width:100%; height:auto; display:block; }
a{ color:var(--ink); text-decoration:none; }
ul{ margin:0 0 1.3em; padding:0; }
p{ margin:0 0 1.3em; }
h1,h2,h4{ margin:0; font-weight:600; color:var(--ink); }

.container{
  width:100%;
  max-width:var(--container);
  margin:0 auto;
  padding:0 15px;
}
.flex-row{ display:flex; align-items:center; }
.flex-col{ position:relative; }
.flex-left{ margin-right:auto; }
.flex-right{ margin-left:auto; }
.fill{ position:absolute; inset:0; }
.text-center{ text-align:center; }
.mobile-only{ display:none; }

/* ---------- knoppen ---------- */
.button{
  display:inline-block;
  position:relative;
  margin:0 14px 14px 0;
  padding:7px 30px;
  border:0;
  border-radius:99px;
  font-family:Poppins,sans-serif;
  font-size:14px;
  font-weight:600;
  line-height:33.6px;
  letter-spacing:.42px;
  text-align:center;
  color:#fff;
  background-color:var(--orange);
  max-width:100%;
  cursor:pointer;
  transition:opacity .2s, transform .2s, box-shadow .2s;
}
.button span{ display:block; }
.button.primary{ background-color:var(--ink); }
.button:hover{ opacity:.9; box-shadow:0 5px 12px rgba(0,0,0,.18); }

/* =========================================================
   TOP BAR  (0 → 40px)
   ========================================================= */
#top-bar{
  position:relative;
  display:flex;
  align-items:center;
  height:40px;
  background-color:var(--topbar);
}
#top-bar .container{ display:flex; align-items:center; justify-content:space-between; }

#top-bar .nav{
  display:flex;
  align-items:center;
  list-style:none;
  margin:0;
  padding:0;
}
#top-bar .nav-right{ justify-content:flex-end; }
#top-bar .nav > li{ position:relative; display:flex; align-items:center; margin:0 .7em; }
#top-bar .nav > li:first-child{ margin-left:0; }
#top-bar .nav > li:last-child{ margin-right:0; }

#top-bar .nav a{
  display:inline-flex;
  align-items:center;
  padding:5px 0;
  font-size:12.8px;
  font-weight:400;
  line-height:1.6;
  color:rgba(255,255,255,.8);
  transition:color .2s;
}
/* alleen de contactlinks zijn 'nav-uppercase' -> extra letterspacing */
#top-bar .header-contact a{ letter-spacing:.256px; }
#top-bar .nav a:hover{ color:#fff; }

/* scheidingsstreepjes tussen de items */
#top-bar .nav-divided > li + li > a::after{
  content:"";
  position:absolute;
  top:50%;
  left:-1em;
  width:1px;
  height:15px;
  margin-top:-7px;
  border-left:1px solid rgba(255,255,255,.2);
}

/* icoontjes in de topbar */
#top-bar .icon{
  display:block;
  width:18px;
  height:21.1875px;
  margin-right:5px;
  background-repeat:no-repeat;
  background-position:0 0;
  background-size:18px 18px;
  flex:0 0 auto;
}
#top-bar .icon-mail { background-image:url(../icons/mail.svg); }
#top-bar .icon-phone{ background-image:url(../icons/phone.svg); }

/* =========================================================
   MASTHEAD / NAVBAR  (40 → 150px)
   ========================================================= */
#header{ position:relative; z-index:30; }
.header-wrapper{ position:relative; }

#masthead{
  position:relative;
  height:110px;
  background:#fff;
}
#masthead .header-inner{ height:110px; }

#logo{
  width:auto;
  margin-right:30px;
  flex:0 0 auto;
  line-height:1;
}
#logo a{ display:block; }
#logo img{
  width:auto;
  height:94px;      /* + 8px marge boven/onder = 110px kophoogte */
  padding:8px 0;
  box-sizing:content-box;
}

.header-nav-main{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  list-style:none;
  margin:0;
  padding:0;
}
.header-nav-main > li{ position:relative; margin:0 13px; }
.header-nav-main > li:last-child{ margin-right:0; }

.header-nav-main > li > a.nav-top-link{
  display:inline-flex;
  align-items:center;
  padding:10px 0;
  font-size:14.4px;
  font-weight:500;
  line-height:16px;
  letter-spacing:.288px;
  color:var(--ink);
  transition:color .2s;
}
.header-nav-main > li.active > a.nav-top-link{ color:#000; }
.header-nav-main > li > a.nav-top-link:hover{ color:var(--blue); }

.header-nav-main .icon-angle-down{
  display:block;
  width:10.5781px;
  height:19.1875px;
  margin-left:3.2px;
  opacity:.6;
  background-repeat:no-repeat;
  background-position:0 0;
  background-size:10.5781px 19.1875px;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10.58 19.19'%3E%3Cpath d='M0.95 7.35 L5.29 11 L9.63 7.35' fill='none' stroke='%2313283c' stroke-width='1.5'/%3E%3C/svg%3E");
}

.header-nav-main .header-button-1{ margin-left:13px; margin-right:0; }
.header-nav-main .header-button-1 .button{ margin:0; }

/* dropdown */
.header-nav-main .sub-menu{
  position:absolute;
  top:100%;
  left:-15px;
  z-index:40;
  width:260px;
  margin:0;
  padding:20px;
  list-style:none;
  background:#fff;
  border-radius:10px;
  box-shadow:1px 1px 15px rgba(0,0,0,.15);
  opacity:0;
  visibility:hidden;
  transform:translateY(-6px);
  transition:opacity .2s, transform .2s, visibility .2s;
}
.header-nav-main > li.has-dropdown:hover > .sub-menu{
  opacity:1; visibility:visible; transform:translateY(0);
}
.header-nav-main .sub-menu > li{ padding:0 10px; }
.header-nav-main .sub-menu > li > a{
  display:block;
  padding:10px 0;
  border-bottom:1px solid #ececec;
  font-size:16px;
  font-weight:500;
  line-height:20.8px;
  color:rgba(102,102,102,.85);
  transition:color .2s;
}
.header-nav-main .sub-menu > li:last-child > a{ border-bottom:0; }
.header-nav-main .sub-menu > li > a:hover{ color:var(--ink); }

/* hamburger (alleen mobiel) */
.nav-icon{
  width:26px; height:20px;
  display:flex; flex-direction:column; justify-content:space-between;
  padding:0; border:0; background:none; cursor:pointer;
}
.nav-icon span{ display:block; height:2px; background:var(--ink); border-radius:2px; }

/* sticky gedrag (sticky-jump, zoals het origineel) */
body.sticky-on #masthead{
  position:fixed;
  top:0; left:0; right:0;
  z-index:50;
  box-shadow:0 0 10px rgba(0,0,0,.1);
  animation:stickyJump .3s;
}
@keyframes stickyJump{ from{ transform:translateY(-100%);} to{ transform:translateY(0);} }

/* =========================================================
   HERO BANNER  (150 → 850px)
   ========================================================= */
.banner{
  position:relative;
  width:100%;
  padding-top:700px;   /* hoogte van de banner */
}
.banner-inner{ position:absolute; inset:0; }
.banner-bg{ overflow:hidden; }
.banner .bg{
  background-image:url(../img/hero.jpg);
  background-size:cover;
  background-position:50% 30%;   /* staande foto: dit kadert op de horizon en de schoorstenen */
  background-repeat:no-repeat;
}
.banner .overlay{
  position:absolute;
  inset:0;
  background-color:rgba(0,0,0,.523);
}

.banner-layers{
  position:absolute;
  top:0; bottom:0; left:0; right:0;
  margin:0 auto;
}

.text-box{ position:absolute; }
.text-box-content{ position:relative; }
.text-inner{ position:relative; }

/* -- links: koptekst, intro, reviews -- */
.hero-left{
  width:44%;
  left:5%;
  top:50%;
  transform:translateY(-50%);
}
.hero-left .text-box-content.dark,
.hero-left .text-box-content.dark p{ color:var(--light); }

.h1-home{ line-height:.75; }
.h1-home h1{
  margin:10.64px 0;
  font-size:53.2px;
  font-weight:600;
  line-height:53.2px;
  text-align:left;
  color:#fff;
}
.hero-left p{
  margin:16px 0;
  font-size:16px;
  font-weight:500;
  line-height:25.6px;
  text-align:left;
  color:var(--light);
}
/* -- rechts: witte offertekaart -- */
.hero-card{
  width:36%;
  right:5%;
  bottom:5%;
}
.hero-card .text-box-content{
  background-color:#fff;
  border-radius:10px;
}
.hero-card .text-inner{ padding:35px 35px 65px; }

.card-title h4{
  margin:10.8px 0;
  font-size:18px;
  font-weight:600;
  line-height:28.8px;
  color:var(--ink);
}

.card-list ul{
  margin:0 0 17.68px;
  font-size:13.6px;
  line-height:21.75px;
  list-style:none;
}
.card-list li{
  margin:0 0 8.16px 2px;
  padding:0 0 0 40px;
  background-image:url(../icons/check.svg);
  background-repeat:no-repeat;
  background-position:0 50%;
  color:var(--ink);
}
.card-list li strong{ font-weight:700; }

/* -- offerteformulier in de kaart -- */
.quote-form{ margin:0; }
.quote-form .field-row{ display:flex; gap:12px; margin-bottom:12px; }
.quote-form .field-row:last-child{ margin-bottom:0; flex-direction:column; gap:8px; }

.quote-form label{
  font-size:14px;
  font-weight:600;
  line-height:1.4;
  color:var(--ink);
}

.site-form input[type="text"],
.site-form input[type="tel"],
.site-form input[type="email"],
.site-form textarea{
  flex:1 1 0;
  min-width:0;
  width:100%;
  padding:11px 15px;
  border:1px solid #dde2e8;
  border-radius:8px;
  background:#fff;
  font-family:Poppins,sans-serif;
  font-size:14px;
  font-weight:500;
  line-height:1.5;
  color:var(--ink);
  transition:border-color .15s, box-shadow .15s;
}
.site-form textarea{ resize:vertical; min-height:96px; }

.site-form input::placeholder,
.site-form textarea::placeholder{
  color:rgba(19,40,60,.45);
  font-weight:500;
}

.site-form input:focus,
.site-form textarea:focus{
  outline:none;
  border-color:var(--topbar);
  box-shadow:0 0 0 3px rgba(52,117,191,.15);
}

.gap-element{ display:block; clear:both; }

.stack{ display:flex; }
.stack-row{ flex-direction:row; align-items:center; }
.stack-row > * + *{ margin-left:.75rem; }
.hero-card .team-img{ width:30%; flex:0 0 30%; }
.hero-card .stack p{ margin:0; font-size:16px; line-height:25.6px; color:var(--ink); }

/* -- groene balk onder de kaart -- */
.hero-greenbar{
  width:36%;
  right:5%;
  bottom:0;
}
.hero-greenbar .text-box-content{ background-color:var(--green); }
.hero-greenbar .text-inner{ padding:5px 35px; }
.hero-greenbar p{
  margin:12px 0;
  font-size:12px;
  line-height:19.2px;
  text-align:center;
  color:#fff;
}

/* =========================================================
   USP-STRIP  (850 → 965px)
   ========================================================= */
.usp-spacer{ height:30px; }

.usp-strip{ position:relative; }
.usp-strip .section-content{ position:relative; }
.usp-strip .row{
  display:flex;
  width:100%;
  max-width:var(--container);
  margin:0 auto;
}
.usp-strip .col{ width:100%; padding:0 15px; }
.usp-strip .col-inner{ padding-top:40px; }
.usp-strip .stack-row{ justify-content:space-between; align-items:stretch; }
.usp-strip .stack-row > * + *{ margin-left:3.5rem; }
.usp-strip ul{ margin:0; list-style:none; }
.usp-strip li{
  margin:0 0 9.6px 2px;
  padding:0 0 0 40px;
  font-size:16px;
  line-height:25.6px;
  background-image:url(../icons/check.svg);
  background-repeat:no-repeat;
  background-position:0 50%;
}
.usp-strip li strong{ font-weight:700; }

.gap-80{ padding-top:80px; }

/* =========================================================
   SECTIE 2 – "Dakwerkzaamheden van hoogwaardig niveau"
   ========================================================= */
#section-2{
  display:flex;
  align-items:center;
  width:100%;
  max-width:var(--container);
  margin:0 auto;
}
#section-2 .col{
  position:relative;
  flex:0 0 50%;
  max-width:50%;
  padding:0 15px 30px;
}
#section-2 .col-text .col-inner{ padding:0 80px 0 0; }

.sec2-title h2{
  margin:0 0 19.2px;
  font-size:38.4px;
  font-weight:600;
  line-height:49.92px;
  text-align:left;
  color:var(--ink);
}
#section-2 .col-text p{
  margin:0 0 20.8px;
  font-size:16px;
  font-weight:500;
  line-height:25.6px;
}
#section-2 .col-text ul{
  margin:0 0 20.8px;
  padding:0;
  list-style:disc;
}
#section-2 .col-text li{
  margin:0 0 9.6px 20.8px;
  font-size:16px;
  line-height:25.6px;
}
#section-2 .col-text p a,
#section-2 .col-text li a{ color:inherit; }
#section-2 .col-text p a:hover,
#section-2 .col-text li a:hover{ color:var(--blue); }

.sec2-img{ width:100%; margin:0 auto; }
.sec2-img .img-inner{
  overflow:hidden;
  border-radius:16px;
}
.sec2-img img{ width:100%; height:auto; display:block; }

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width:1439px){
  .container,.usp-strip .row,#section-2{ max-width:1320px; }
}

@media (max-width:1100px){
  .header-nav-main > li{ margin:0 8px; }
  .h1-home h1{ font-size:44px; line-height:46px; }
  .sec2-title h2{ font-size:32px; line-height:42px; }
  #section-2 .col-text .col-inner{ padding-right:40px; }
}

@media (max-width:849px){
  .mobile-only{ display:block; }
  .header-nav-main,#top-bar .top-bar-nav{ display:none; }
  #top-bar .container{ justify-content:center; }
  #top-bar .flex-left{ margin:0 auto; }

  .banner{ padding-top:0; }
  .banner-inner{ position:relative; }
  .banner-bg{ position:absolute; }
  .banner-layers{ position:relative; padding:60px 15px; }
  /* zelfde linker-/rechterlijn als de tekst in sectie 2 */
  .hero-left,.hero-card,.hero-greenbar{
    position:relative;
    width:100%;
    left:auto; right:auto; top:auto; bottom:auto;
    transform:none;
    margin:0 auto;
  }
  .hero-card{ margin-top:40px; }
  .hero-card .text-inner{ padding:25px 25px 45px; }
  .quote-form .field-row{ flex-direction:column; gap:12px; }
  .hero-greenbar .text-inner{ padding:10px 35px 5px; }

  /* mobiele typografie – zelfde schaal als het origineel */
  #masthead,#masthead .header-inner{ height:80px; }
  #logo img{ height:66px; padding:7px 0; }
  .h1-home h1{ font-size:26px; line-height:31px; }
  .sec2-title h2{ font-size:28.8px; line-height:37.44px; }

  /* USP-strip alleen op desktop tonen */
  .usp-spacer,
  .usp-strip{ display:none; }

  #section-2{ flex-direction:column; }
  #section-2 .col{ flex:0 0 100%; max-width:100%; }
  #section-2 .col-text .col-inner{ padding:0; }
}

/* =========================================================
   SECTIE 3 – DIENSTEN
   ========================================================= */
.diensten{
  margin-top:80px;
  scroll-margin-top:130px;   /* zodat de plakkende kop de titel niet afdekt */
  padding:80px 0 130px;   /* extra wit onderaan, vóór de grijze band */
  background:#fff;
}

.diensten-titel{
  margin:0 0 16px;
  padding:0 15px;
  font-size:38.4px;
  font-weight:600;
  line-height:49.92px;
  color:var(--ink);
}

.diensten-intro{
  max-width:610px;
  margin:0 0 44px;
  padding:0 15px;
  font-size:16px;
  font-weight:500;
  line-height:25.6px;
  color:var(--ink);
}

.dienst-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:30px;
  padding:0 15px;
}

.dienst-card{
  display:block;
  padding:32px;
  border-radius:14px;
  background:#eff2f5;
  color:var(--ink);
  transition:transform .25s ease, box-shadow .25s ease, background-color .25s ease;
}

.dienst-icon{
  display:flex;
  align-items:center;
  justify-content:center;
  width:48px;
  height:48px;
  border-radius:12px;
  background:#fff;
  color:var(--ink);
  transition:background-color .25s ease, color .25s ease;
}
.dienst-icon svg{ width:23px; height:23px; }

.dienst-card h3{
  margin:22px 0 10px;
  font-size:18px;
  font-weight:600;
  line-height:1.4;
  color:var(--ink);
}

.dienst-card p{
  margin:0 0 18px;
  font-size:15px;
  font-weight:500;
  line-height:1.6;
  color:#5b6b7c;
}

.dienst-link{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:14px;
  font-weight:600;
  letter-spacing:.2px;
  color:var(--orange);
}
.dienst-link svg{
  width:16px;
  height:16px;
  transition:transform .25s ease;
}

/* hover */
.dienst-card:hover{
  transform:translateY(-4px);
  background:#fff;
  box-shadow:0 2px 4px rgba(19,40,60,.05), 0 14px 32px rgba(19,40,60,.12);
}
.dienst-card:hover .dienst-icon{
  background:rgba(52,117,191,.14);
  color:var(--topbar);
}
.dienst-card:hover .dienst-link svg{ transform:translateX(4px); }

.dienst-card:focus-visible{
  outline:2px solid var(--topbar);
  outline-offset:3px;
}

@media (prefers-reduced-motion:reduce){
  .dienst-card,.dienst-icon,.dienst-link svg{ transition:none; }
  .dienst-card:hover{ transform:none; }   /* kleur en schaduw blijven wel */
  .dienst-card:hover .dienst-link svg{ transform:none; }
}

@media (max-width:1099px){
  .dienst-grid{ grid-template-columns:repeat(2,1fr); }
}

@media (max-width:849px){
  .diensten{ margin-top:60px; padding:60px 0 90px; }
  .diensten-titel{ font-size:28.8px; line-height:37.44px; margin-bottom:12px; }
  .diensten-intro{ margin-bottom:30px; }
}

@media (max-width:699px){
  .dienst-grid{ grid-template-columns:1fr; gap:20px; }
  .dienst-card{ padding:26px; }
}

/* =========================================================
   SECTIE 4 – WAAROM BOYKE DAKWERKEN
   ========================================================= */
.waarom{
  padding:80px 0 90px;
  background:#eff2f5;
  color:var(--ink);
}

/* --- cijferrij --- */
.waarom-cijfers{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:30px;
  padding:0 15px;
}
.cijfer{ display:flex; flex-direction:column; gap:10px; }

.cijfer-groot{
  display:flex;
  align-items:center;
  height:47px;            /* gelijke hoogte, zodat alle labels op één lijn staan */
  font-size:44px;
  font-weight:700;
  line-height:1.05;
  letter-spacing:-.5px;
  color:var(--orange);
}
.cijfer-vink svg{ width:auto; height:31px; }

.cijfer-label{
  font-size:15px;
  font-weight:500;
  line-height:1.5;
  color:#5b6b7c;
}

.waarom-lijn{
  height:1px;
  margin:56px 15px 60px;
  background:#dbe2e9;
}

/* --- onderste blok --- */
.waarom-body{
  display:grid;
  grid-template-columns:minmax(0,5fr) minmax(0,6fr);
  gap:80px;
  padding:0 15px;
}

.sectie-label{
  display:flex;
  align-items:center;
  gap:14px;
  margin:0 0 18px;
  font-size:12.5px;
  font-weight:600;
  letter-spacing:1.6px;
  text-transform:uppercase;
  color:var(--orange);
}
.sectie-label .streep{
  width:34px;
  height:2px;
  background:var(--orange);
  flex:0 0 auto;
}

.waarom-tekst h2{
  margin:0 0 20px;
  font-size:38.4px;
  font-weight:600;
  line-height:49.92px;
  color:var(--ink);
}
.waarom-intro{
  max-width:460px;
  margin:0;
  font-size:16px;
  font-weight:500;
  line-height:25.6px;
  color:#5b6b7c;
}

/* --- puntenlijst --- */
.waarom-lijst{
  margin:0;
  padding:0;
  list-style:none;
}
.waarom-lijst li{
  display:flex;
  gap:18px;
  padding:22px 0;
  border-bottom:1px solid #dde4ea;
}
.waarom-lijst li:first-child{ padding-top:4px; }
.waarom-lijst li:last-child{ border-bottom:0; padding-bottom:0; }

.waarom-check{
  display:flex;
  align-items:center;
  justify-content:center;
  width:26px;
  height:26px;
  margin-top:2px;
  border-radius:50%;
  background:rgba(47,177,109,.16);
  color:var(--green);
  flex:0 0 auto;
}
.waarom-check svg{ width:14px; height:14px; }

.waarom-lijst h3{
  margin:0 0 5px;
  font-size:16px;
  font-weight:600;
  line-height:1.5;
  color:var(--ink);
}
.waarom-lijst p{
  margin:0;
  font-size:15px;
  font-weight:500;
  line-height:1.6;
  color:#5b6b7c;
}

@media (max-width:1099px){
  .waarom-body{ gap:50px; }
  .waarom-tekst h2{ font-size:32px; line-height:42px; }
}

@media (max-width:849px){
  .waarom{ padding:60px 0 66px; }
  .waarom-body{ grid-template-columns:1fr; gap:36px; }
  .waarom-lijn{ margin:44px 15px 44px; }
  .waarom-tekst h2{ font-size:28.8px; line-height:37.44px; }
  .waarom-intro{ max-width:none; }
}

@media (max-width:699px){
  .waarom-cijfers{ grid-template-columns:repeat(2,1fr); gap:28px 20px; }
  .cijfer-groot{ font-size:36px; height:40px; }
  .cijfer-vink svg{ width:auto; height:25px; }
}

/* =========================================================
   SECTIE 5 – WERKGEBIED
   ========================================================= */
.werkgebied{
  padding:90px 0 100px;
  background:#fff;
}

.werkgebied-body{
  display:grid;
  grid-template-columns:minmax(0,5fr) minmax(0,6fr);
  gap:80px;
  align-items:center;
  padding:0 15px;
}

.werkgebied-tekst h2{
  margin:0 0 20px;
  font-size:38.4px;
  font-weight:600;
  line-height:49.92px;
  color:var(--ink);
}

.werkgebied-intro{
  max-width:520px;
  margin:0 0 30px;
  font-size:16px;
  font-weight:500;
  line-height:25.6px;
  color:#5b6b7c;
}

/* --- plaatsnamen --- */
.plaatsen{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.plaats{
  display:inline-flex;
  align-items:center;
  padding:9px 18px;
  border:1px solid #dde4ea;
  border-radius:99px;
  background:#fff;
  font-size:14.5px;
  font-weight:500;
  line-height:1.4;
  color:var(--ink);
  transition:border-color .2s ease, color .2s ease, background-color .2s ease;
}
.plaats:hover{
  border-color:var(--topbar);
  background:rgba(52,117,191,.06);
  color:var(--topbar);
}
.plaats:focus-visible{
  outline:2px solid var(--topbar);
  outline-offset:2px;
}

/* --- beeld --- */
.werkgebied-beeld img{
  width:100%;
  height:auto;
  border-radius:16px;
  display:block;
}

@media (prefers-reduced-motion:reduce){
  .plaats{ transition:none; }
}

@media (max-width:1099px){
  .werkgebied-body{ gap:50px; }
  .werkgebied-tekst h2{ font-size:32px; line-height:42px; }
}

@media (max-width:849px){
  .werkgebied{ padding:64px 0 70px; }
  .werkgebied-body{ grid-template-columns:1fr; gap:36px; }
  .werkgebied-tekst h2{ font-size:28.8px; line-height:37.44px; }
  .werkgebied-intro{ max-width:none; }
}

/* =========================================================
   SECTIE 6 – OVER ONS
   ========================================================= */
.over-ons{
  padding:90px 0 100px;
  background:var(--ink);
  color:#fff;
}

.over-inner{
  max-width:780px;
  margin:0 auto;
  padding:0 15px;
  text-align:center;
}

/* het labeltje staat hier gecentreerd i.p.v. links */
.over-inner .sectie-label{ justify-content:center; }

.over-inner h2{
  margin:0 0 22px;
  font-size:38.4px;
  font-weight:600;
  line-height:49.92px;
  color:#fff;
}

.over-inner p{
  margin:0 0 20px;
  font-size:16px;
  font-weight:500;
  line-height:25.6px;
  color:rgba(255,255,255,.75);
}
.over-inner p:last-of-type{ margin-bottom:34px; }

.over-knoppen{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:14px;
}
.over-knoppen .button{ margin:0; }

/* lichte knop, voor op een donkere ondergrond */
.button.licht{
  background:transparent;
  border:2px solid rgba(255,255,255,.35);
  padding:5px 28px;          /* 2px rand gecompenseerd, zelfde hoogte als de oranje knop */
  color:#fff;
}
.button.licht:hover{
  border-color:#fff;
  background:rgba(255,255,255,.08);
  box-shadow:none;
  opacity:1;
}

@media (max-width:849px){
  .over-ons{ padding:64px 0 70px; }
  .over-inner h2{ font-size:28.8px; line-height:37.44px; }
}

@media (max-width:479px){
  .over-knoppen{ flex-direction:column; }
  .over-knoppen .button{ width:100%; }
}

/* =========================================================
   SECTIE 6 – REVIEWS
   ========================================================= */
.reviews{
  padding:90px 0 100px;
  background:#eff2f5;
}

.reviews-kop{
  max-width:640px;
  margin:0 auto 44px;
  padding:0 15px;
  text-align:center;
}
.reviews-kop .sectie-label{ justify-content:center; }

.reviews-kop h2{
  margin:0 0 16px;
  font-size:38.4px;
  font-weight:600;
  line-height:49.92px;
  color:var(--ink);
}

.reviews-score{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  margin:0;
  font-size:15px;
  font-weight:500;
  color:#5b6b7c;
}

/* sterren */
.sterren{
  display:inline-flex;
  gap:3px;
  color:var(--orange);
}
.sterren svg{ width:17px; height:17px; }

/* kaarten: één review staat gecentreerd, drie vullen de rij */
.review-grid{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:30px;
  padding:0 15px;
}

.review{
  flex:0 1 400px;
  display:flex;
  flex-direction:column;
  gap:16px;
  margin:0;
  padding:32px;
  border-radius:14px;
  background:#fff;
  box-shadow:0 1px 2px rgba(19,40,60,.04), 0 6px 20px rgba(19,40,60,.05);
}

.review blockquote{
  margin:0;
  font-size:16px;
  font-weight:500;
  line-height:26px;
  color:var(--ink);
}
.review blockquote::before{ content:"\201C"; }
.review blockquote::after{ content:"\201D"; }

.review figcaption{
  margin-top:auto;
  font-size:14.5px;
  font-weight:600;
  color:#5b6b7c;
}

@media (max-width:849px){
  .reviews{ padding:64px 0 70px; }
  .reviews-kop{ margin-bottom:32px; }
  .reviews-kop h2{ font-size:28.8px; line-height:37.44px; }
}

@media (max-width:699px){
  .review-grid{ gap:20px; }
  .review{ flex:1 1 100%; padding:26px; }
}

/* =========================================================
   SECTIE 8 – VEELGESTELDE VRAGEN
   ========================================================= */
.faq{
  padding:90px 0 100px;
  background:#fff;
}

.faq-kop{
  max-width:640px;
  margin:0 auto 44px;
  padding:0 15px;
  text-align:center;
}
.faq-kop .sectie-label{ justify-content:center; }

.faq-kop h2{
  margin:0;
  font-size:38.4px;
  font-weight:600;
  line-height:49.92px;
  color:var(--ink);
}

.faq-lijst{
  max-width:820px;
  margin:0 auto;
  padding:0 15px;
}

.faq-item{
  border-bottom:1px solid #dde4ea;
}
.faq-item:first-child{ border-top:1px solid #dde4ea; }

.faq-item summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:22px 2px;
  cursor:pointer;
  list-style:none;          /* standaard driehoekje weg */
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary:focus-visible{
  outline:2px solid var(--topbar);
  outline-offset:3px;
  border-radius:4px;
}

.faq-vraag{
  font-size:17px;
  font-weight:600;
  line-height:1.5;
  color:var(--ink);
  transition:color .2s ease;
}
.faq-item summary:hover .faq-vraag{ color:var(--topbar); }

/* plusje dat een minnetje wordt */
.faq-plus{
  position:relative;
  width:16px;
  height:16px;
  flex:0 0 auto;
}
.faq-plus::before,
.faq-plus::after{
  content:"";
  position:absolute;
  top:50%;
  left:0;
  width:16px;
  height:2px;
  margin-top:-1px;
  border-radius:1px;
  background:var(--orange);
  transition:transform .25s ease, opacity .25s ease;
}
.faq-plus::after{ transform:rotate(90deg); }
.faq-item[open] .faq-plus::after{ transform:rotate(0deg); }

.faq-antwoord{
  padding:0 46px 24px 2px;
}
.faq-antwoord p{
  margin:0;
  font-size:16px;
  font-weight:500;
  line-height:25.6px;
  color:#5b6b7c;
}
.faq-item[open] .faq-antwoord{
  animation:faqOpen .25s ease;
}
@keyframes faqOpen{
  from{ opacity:0; transform:translateY(-6px); }
  to{ opacity:1; transform:translateY(0); }
}

@media (prefers-reduced-motion:reduce){
  .faq-plus::before,.faq-plus::after,.faq-vraag{ transition:none; }
  .faq-item[open] .faq-antwoord{ animation:none; }
}

@media (max-width:849px){
  .faq{ padding:64px 0 70px; }
  .faq-kop{ margin-bottom:32px; }
  .faq-kop h2{ font-size:28.8px; line-height:37.44px; }
  .faq-vraag{ font-size:16px; }
  .faq-antwoord{ padding-right:24px; }
}

/* =========================================================
   SECTIE 9 – CONTACT
   ========================================================= */
.contact{
  padding:90px 0 100px;
  background:var(--ink);
  color:#fff;
}

.contact-body{
  display:grid;
  grid-template-columns:minmax(0,5fr) minmax(0,6fr);
  gap:80px;
  align-items:start;
  padding:0 15px;
}

.contact-tekst h2{
  margin:0 0 20px;
  font-size:38.4px;
  font-weight:600;
  line-height:49.92px;
  color:#fff;
}
.contact-intro{
  max-width:460px;
  margin:0 0 30px;
  font-size:16px;
  font-weight:500;
  line-height:25.6px;
  color:rgba(255,255,255,.75);
}

.contact-knoppen{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  margin-bottom:40px;
}
.contact-knoppen .button{ margin:0; }
.contact-tel span,
.versturen span{
  display:inline-flex;
  align-items:center;
  gap:10px;
}
.contact-tel svg,
.versturen svg{ width:17px; height:17px; }

.button.whatsapp{ background:var(--green); }

/* --- gegevensrijen --- */
.contact-gegevens{
  margin:0;
  padding:0;
  list-style:none;
  border-top:1px solid rgba(255,255,255,.12);
}
.contact-gegevens li{
  display:flex;
  align-items:center;
  gap:16px;
  padding:16px 0;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.contact-icoon{
  display:flex;
  align-items:center;
  justify-content:center;
  width:38px;
  height:38px;
  border-radius:10px;
  background:rgba(255,255,255,.08);
  color:var(--orange);
  flex:0 0 auto;
}
.contact-icoon svg{ width:19px; height:19px; }
.contact-soort{
  display:block;
  font-size:13.5px;
  font-weight:500;
  color:rgba(255,255,255,.6);
}
.contact-waarde{
  display:block;
  font-size:16px;
  font-weight:600;
  color:#fff;
}

/* --- witte formulierkaart --- */
.contact-kaart{
  padding:34px;
  border-radius:14px;
  background:#fff;
}

.contact-form .veld-rij{
  display:flex;
  gap:14px;
}
.contact-form .veld{
  flex:1 1 0;
  min-width:0;
  margin-bottom:16px;
}
.contact-form label{
  display:block;
  margin-bottom:7px;
  font-size:12.5px;
  font-weight:600;
  letter-spacing:.8px;
  text-transform:uppercase;
  color:var(--ink);
}
.contact-form .verplicht{ color:var(--orange); }
.contact-form .optioneel{
  font-weight:500;
  letter-spacing:.4px;
  text-transform:none;
  color:#8a97a4;
}

/* akkoordvinkje */
.akkoord{
  display:flex !important;
  align-items:flex-start;
  gap:11px;
  margin:4px 0 22px;
  font-size:14px;
  font-weight:500;
  line-height:1.55;
  letter-spacing:0 !important;
  text-transform:none !important;
  color:#5b6b7c !important;
  cursor:pointer;
}
.akkoord input{
  width:17px;
  height:17px;
  margin-top:2px;
  accent-color:var(--topbar);
  flex:0 0 auto;
  cursor:pointer;
}
.akkoord a{ color:var(--topbar); text-decoration:underline; }

.versturen{
  display:block;
  width:100%;
  margin:0;
  cursor:pointer;
}
.contact-noot{
  margin:14px 0 0;
  font-size:13px;
  font-weight:500;
  line-height:1.5;
  text-align:center;
  color:#8a97a4;
}

@media (max-width:1099px){
  .contact-body{ gap:50px; }
  .contact-tekst h2{ font-size:32px; line-height:42px; }
}

@media (max-width:849px){
  .contact{ padding:64px 0 70px; }
  .contact-body{ grid-template-columns:1fr; gap:40px; }
  .contact-tekst h2{ font-size:28.8px; line-height:37.44px; }
  .contact-intro{ max-width:none; }
  .contact-kaart{ padding:26px; }
}

@media (max-width:479px){
  .contact-form .veld-rij{ flex-direction:column; gap:0; }
  .contact-knoppen .button{ width:100%; text-align:center; }
  .contact-tel span,.versturen span{ justify-content:center; }
}

/* =========================================================
   DIENSTENPAGINA
   ========================================================= */
.paginakop{
  padding:44px 0 0;          /* geen ruimte onder: het formulier sluit aan op de volgende sectie */
  background:var(--ink);
  color:#fff;
}
.paginakop .container{ max-width:var(--container); }

.kruimelpad{
  margin:0 0 34px;
  padding:0;
  font-size:13.5px;
  font-weight:500;
  color:rgba(255,255,255,.6);
}
.kruimelpad ol{ display:flex; flex-wrap:wrap; gap:8px; margin:0; padding:0; list-style:none; }
.kruimelpad li{ display:flex; align-items:center; gap:8px; }
.kruimelpad li + li::before{ content:"/"; color:rgba(255,255,255,.3); }
.kruimelpad a{ color:rgba(255,255,255,.72); }
.kruimelpad a:hover{ color:#fff; text-decoration:underline; }
.kruimelpad [aria-current]{ color:#fff; }

.paginakop h1{
  max-width:760px;
  margin:0 0 20px;
  font-size:53.2px;
  font-weight:600;
  line-height:1.08;
  color:#fff;
}
.paginakop-intro{
  max-width:660px;
  margin:0 0 32px;
  font-size:17px;
  font-weight:500;
  line-height:28px;
  color:rgba(255,255,255,.78);
}
.paginakop-knoppen{ display:flex; flex-wrap:wrap; gap:14px; }
.paginakop-knoppen .button{ margin:0; }

/* tekstblok */
.inhoud{
  padding:90px 0;
  background:#fff;
}
.inhoud .container{ max-width:var(--container); }
/* smalle kolom lopende tekst (privacyverklaring): links uitgelijnd met de kop,
   want over de volle 1320px leest een alinea niet prettig */
.inhoud-smal{ max-width:820px; }
.inhoud-smal > :first-child{ margin-top:0; }

.inhoud h2{
  margin:0 0 20px;
  font-size:32px;
  font-weight:600;
  line-height:42px;
  color:var(--ink);
}
.inhoud h3{
  margin:34px 0 10px;
  font-size:19px;
  font-weight:600;
  line-height:1.5;
  color:var(--ink);
}
.inhoud p{
  margin:0 0 20px;
  font-size:16px;
  font-weight:500;
  line-height:26px;
  color:#5b6b7c;
}
.inhoud ul{ margin:0 0 20px; padding-left:22px; }
.inhoud li{
  margin-bottom:9px;
  font-size:16px;
  font-weight:500;
  line-height:26px;
  color:#5b6b7c;
}
.inhoud p a,
.inhoud li a{ color:var(--topbar); text-decoration:underline; }
.inhoud p a:hover,
.inhoud li a:hover{ color:var(--ink); }

/* materiaalkaarten */
.materialen{
  padding:90px 0;
  background:#eff2f5;
}
.materialen-kop{ max-width:700px; margin:0 0 40px; padding:0 15px; }
.materialen-kop h2{
  margin:0 0 16px;
  font-size:32px;
  font-weight:600;
  line-height:42px;
  color:var(--ink);
}
.materialen-kop p{
  margin:0;
  font-size:16px;
  font-weight:500;
  line-height:25.6px;
  color:#5b6b7c;
}
.materiaal-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:24px;
  padding:0 15px;
}
.materiaal{
  padding:28px;
  border-radius:14px;
  background:#fff;
}
.materiaal h3{
  margin:0 0 10px;
  font-size:18px;
  font-weight:600;
  line-height:1.4;
  color:var(--ink);
}
.materiaal p{
  margin:0;
  font-size:15px;
  font-weight:500;
  line-height:24px;
  color:#5b6b7c;
}

@media (max-width:1099px){
  .paginakop h1{ font-size:42px; }
  .materiaal-grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:849px){
  .paginakop{ padding:30px 0 0; }
  .paginakop h1{ font-size:32px; }
  .inhoud,.materialen{ padding:60px 0; }
  .inhoud h2,.materialen-kop h2{ font-size:26px; line-height:36px; }
}
@media (max-width:599px){
  .materiaal-grid{ grid-template-columns:1fr; }
}

/* tekst links, fotoplek rechts (dienstenpagina) */
.inhoud-body{
  display:grid;
  grid-template-columns:minmax(0,6fr) minmax(0,5fr);
  gap:70px;
  align-items:start;
  padding:0 15px;
}
.inhoud-body .inhoud-tekst > :first-child{ margin-top:0; }

.foto-plek{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:12px;
  aspect-ratio:4 / 5;
  border:1px dashed #c4cfd9;
  border-radius:16px;
  background:#eff2f5;
  color:#8a97a4;
}
.foto-plek svg{ width:40px; height:40px; }
.foto-plek span{
  font-size:14px;
  font-weight:500;
  letter-spacing:.3px;
}

@media (max-width:1099px){
  .inhoud-body{ gap:44px; }
}
@media (max-width:849px){
  .inhoud-body{ grid-template-columns:1fr; gap:36px; }
  .foto-plek{ aspect-ratio:4 / 3; }
}

/* --- offerteformulier in de kop van een dienstenpagina --- */
.paginakop-body{
  display:grid;
  grid-template-columns:minmax(0,6fr) minmax(0,5fr);
  gap:70px;
  align-items:start;
}

/* de kaart is op de homepage absoluut gepositioneerd; hier staat hij gewoon in de kolom */
.paginakop .hero-card,
.paginakop .hero-greenbar{
  position:static;
  width:auto;
  right:auto;
  bottom:auto;
  transform:none;
}
.paginakop .hero-card .text-box-content{ border-radius:10px 10px 0 0; }
.paginakop .hero-greenbar .text-box-content{ border-radius:0 0 10px 10px; }
.paginakop .hero-card .text-inner{ padding:32px 32px 30px; }
.paginakop .hero-greenbar .text-inner{ padding:5px 32px; }

@media (max-width:1099px){
  .paginakop-body{ gap:44px; }
}
@media (max-width:849px){
  .paginakop-body{ grid-template-columns:1fr; gap:36px; }
  .paginakop .hero-card .text-inner{ padding:26px 26px 24px; }
  .paginakop .hero-greenbar .text-inner{ padding:5px 26px; }
}

/* --- uitgelicht tekstblok op een dienstenpagina --- */
.uitgelicht{
  padding:80px 0 90px;
  background:#eff2f5;
}
.uitgelicht-inner{
  max-width:820px;
  padding:0 15px;
}
.uitgelicht h2{
  margin:0 0 20px;
  font-size:32px;
  font-weight:600;
  line-height:42px;
  color:var(--ink);
}
.uitgelicht p{
  margin:0 0 20px;
  font-size:16px;
  font-weight:500;
  line-height:26px;
  color:#5b6b7c;
}
.uitgelicht ul{ margin:0 0 20px; padding-left:22px; }
.uitgelicht li{
  margin-bottom:9px;
  font-size:16px;
  font-weight:500;
  line-height:26px;
  color:#5b6b7c;
}
.uitgelicht p a,
.uitgelicht li a{ color:var(--topbar); text-decoration:underline; }
.uitgelicht .button{ margin:8px 0 0; color:#fff; text-decoration:none; }

@media (max-width:849px){
  .uitgelicht{ padding:60px 0 66px; }
  .uitgelicht h2{ font-size:26px; line-height:36px; }
}

/* =========================================================
   OVER ONS-PAGINA
   ========================================================= */

/* een paginakop zonder offerteformulier heeft wel ruimte aan de onderkant nodig:
   op een dienstenpagina vult het formulier die ruimte op */
.paginakop.zonder-formulier{ padding:44px 0 72px; }

/* genummerde stap, verder dezelfde kaart als .materiaal */
.stap-nummer{
  display:flex;
  align-items:center;
  justify-content:center;
  width:34px;
  height:34px;
  margin:0 0 16px;
  border-radius:50%;
  background:var(--orange);
  font-size:15px;
  font-weight:600;
  line-height:1;
  color:#fff;
}

@media (max-width:849px){
  .paginakop.zonder-formulier{ padding:30px 0 52px; }
}

/* =========================================================
   CONTACTPAGINA
   ========================================================= */

/* paginakop met foto erachter in plaats van een egale ondergrond */
.paginakop.met-foto{ position:relative; overflow:hidden; }
.paginakop.met-foto::before{
  content:"";
  position:absolute;
  inset:0;
  background-image:var(--kopfoto);
  background-position:var(--kopfoto-positie, 50% 38%);
  background-size:cover;
  background-repeat:no-repeat;
}
/* donkere laag over de foto. Standaard hoort bij een kop mét offerteformulier:
   overal ongeveer even donker, want rechts staat de witte kaart. */
.paginakop.met-foto::after{
  content:"";
  position:absolute;
  inset:0;
  background:var(--kop-overlay, linear-gradient(90deg,
    rgba(19,40,60,.86) 0%, rgba(19,40,60,.82) 45%, rgba(19,40,60,.78) 100%));
}
/* zonder formulier loopt de tekst door tot rechts, dus daar mag de laag maar
   beperkt oplichten - anders zakt de intro-tekst onder 4,5:1 */
.paginakop.met-foto.zonder-formulier::after{
  background:var(--kop-overlay, linear-gradient(90deg,
    rgba(19,40,60,.95) 0%, rgba(19,40,60,.92) 42%, rgba(19,40,60,.80) 100%));
}

/* de inhoud moet boven de foto en de donkere laag staan */
.paginakop.met-foto > .container{ position:relative; z-index:1; }
.paginakop-intro strong{ font-weight:600; color:#fff; }
/* een link erft standaard de donkere tekstkleur; op de foto is dat onleesbaar */
.paginakop-intro a{ color:#fff; text-decoration:underline; text-underline-offset:2px; }
.paginakop-intro a:hover{ color:var(--orange); }

/* welke foto bij welke kop hoort; de klasse zit op de foto, niet op de pagina,
   zodat dezelfde foto op meerdere plekken te gebruiken is */
.paginakop.kopfoto-steiger{
  --kopfoto:url(../img/sectie2.jpg);   /* dakdekker op een hoogwerker */
  --kopfoto-positie:50% 38%;
}
.paginakop.kopfoto-plat-dak-vents{
  --kopfoto:url(../img/platte-daken.jpg);   /* plat dak met ontluchtingen en dakdekker */
  --kopfoto-positie:50% 38%;
}
.paginakop.kopfoto-schoorsteen-sierkap{
  --kopfoto:url(../img/dakinspectie.jpg);   /* schoorsteen met sierkap op een plat dak */
  --kopfoto-positie:50% 20%;
}
.paginakop.kopfoto-pannendak{
  --kopfoto:url(../img/pannendak.jpg);   /* pannendak van bovenaf */
  --kopfoto-positie:50% 45%;
}
.paginakop.kopfoto-loodwerk{
  --kopfoto:url(../img/loodwerk-dakrand.jpg);   /* zink- en loodwerk langs een dakrand */
  --kopfoto-positie:50% 42%;
}
.paginakop.kopfoto-dakkapellen{
  --kopfoto:url(../img/werkgebied.webp);   /* hout hijsen bij dakkapellen */
  --kopfoto-positie:50% 46%;
}
.paginakop.kopfoto-dakrand{
  --kopfoto:url(../img/dakrand-plat.jpg);   /* dakrand met opstand */
  --kopfoto-positie:50% 46%;
}
.paginakop.kopfoto-lichtkoepel{
  --kopfoto:url(../img/lichtkoepel.jpg);   /* plat dak met schoorstenen en lichtkoepel */
  --kopfoto-positie:50% 42%;
}
.paginakop.kopfoto-bedrijfsdak{
  --kopfoto:url(../img/bedrijfsdak.jpg);   /* plat dak van een bedrijfspand */
  --kopfoto-positie:50% 45%;
}
.paginakop.kopfoto-hoogwerker{
  --kopfoto:url(../img/schoorsteen-hoogwerker.jpg);   /* schoorsteen met loodwerk, hoogwerker ernaast */
  --kopfoto-positie:50% 38%;
}
.paginakop.kopfoto-schoorsteen-plat{
  --kopfoto:url(../img/schoorsteen-plat.jpg);   /* schoorsteen met sierkap, liggend */
  --kopfoto-positie:50% 35%;
}
.paginakop.kopfoto-bitumen{
  --kopfoto:url(../img/hero.jpg);   /* bitumen dak met schoorstenen */
  --kopfoto-positie:50% 32%;
}
.paginakop.kopfoto-ontluchting{
  --kopfoto:url(../img/plat-dak-ontluchting.jpg);   /* plat dak met ontluchtingen */
  --kopfoto-positie:50% 45%;
}

/* gegevenskaarten */
.gegevens{
  padding:90px 0;
  background:#fff;
}
.gegevens .container{ max-width:var(--container); }
.gegevens-kop{ margin:0 0 40px; padding:0 15px; }
.gegevens-kop h2{
  margin:0;
  font-size:44px;
  font-weight:600;
  line-height:1.15;
  color:var(--ink);
}
.gegeven-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:24px;
  padding:0 15px;
}
.gegeven{
  padding:28px;
  border:1px solid #e2e8ee;
  border-radius:14px;
  background:#fff;
}
.gegeven-icoon{
  display:flex;
  align-items:center;
  justify-content:center;
  width:44px;
  height:44px;
  margin:0 0 26px;
  border-radius:12px;
  background:#eff2f5;
  color:var(--ink);
}
.gegeven-icoon svg{ width:21px; height:21px; }
.gegeven h3{
  margin:0 0 8px;
  font-size:17px;
  font-weight:600;
  line-height:1.4;
  color:var(--ink);
}
.gegeven p{
  margin:0;
  font-size:15px;
  font-weight:500;
  line-height:24px;
  color:#5b6b7c;
}
.gegeven a{
  color:var(--topbar);
  font-weight:600;
}
.gegeven a:hover{ text-decoration:underline; }

@media (max-width:1099px){
  .gegevens-kop h2{ font-size:36px; }
  .gegeven-grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:849px){
  .gegevens{ padding:60px 0; }
  .gegevens-kop h2{ font-size:30px; }
  .paginakop.met-foto::after{
    background:var(--kop-overlay-mobiel,
      linear-gradient(90deg, rgba(19,40,60,.94) 0%, rgba(19,40,60,.88) 100%));
  }
}
@media (max-width:599px){
  .gegeven-grid{ grid-template-columns:1fr; }
}

/* =========================================================
   WERKGEBIEDPAGINA
   ========================================================= */

/* dezelfde kaart als .materiaal, maar aanklikbaar */
a.materiaal{
  display:block;
  transition:transform .2s, box-shadow .2s;
}
a.materiaal:hover{
  transform:translateY(-4px);
  box-shadow:0 12px 24px rgba(19,40,60,.10);
}
a.materiaal .materiaal-link{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin-top:14px;
  font-size:14px;
  font-weight:600;
  color:var(--orange);
}
a.materiaal .materiaal-link svg{
  width:15px;
  height:15px;
  transition:transform .2s;
}
a.materiaal:hover .materiaal-link svg{ transform:translateX(4px); }

/* negen dienstenkaarten staan het mooist in 3x3 in plaats van 4+4+1 */
.materiaal-grid.drie{ grid-template-columns:repeat(3,1fr); }

@media (max-width:1099px){
  .materiaal-grid.drie{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:599px){
  .materiaal-grid.drie{ grid-template-columns:1fr; }
}

/* vervolgtekst onder het tekst/foto-blok, over de volle breedte van de kolom */
.inhoud-vervolg{
  max-width:820px;
  margin:56px 0 0;
  padding:0 15px;
}
.inhoud-vervolg > :first-child{ margin-top:0; }

/* echte foto in plaats van de placeholder */
.inhoud-foto img{
  width:100%;
  aspect-ratio:4 / 5;
  object-fit:cover;
  border-radius:16px;
}

@media (max-width:849px){
  .inhoud-vervolg{ margin-top:40px; }
  .inhoud-foto img{ aspect-ratio:4 / 3; }
}

/* link in de werkgebied-intro op de homepage */
.werkgebied-intro a{ color:var(--topbar); text-decoration:underline; }
.werkgebied-intro a:hover{ color:var(--ink); }

/* =========================================================
   FOOTER
   ========================================================= */
.site-footer{
  padding:70px 0 28px;
  background:#0f2233;          /* een tint donkerder dan de contactsectie */
  color:rgba(255,255,255,.72);
  font-size:15px;
  line-height:25px;
}
.site-footer .container{ max-width:var(--container); }

.footer-body{
  display:grid;
  grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));
  gap:56px;
  padding:0 15px 50px;
}

.footer-merk img{
  height:74px;
  width:auto;
  margin:0 0 22px;
  /* het logo is donkerblauw; op deze ondergrond wordt het wit gemaakt */
  filter:brightness(0) invert(1);
  opacity:.92;
}
.footer-merk p{
  max-width:340px;
  margin:0 0 24px;
  color:rgba(255,255,255,.62);
}
.footer-merk .button{ margin:0; }

.footer-kop{
  margin:0 0 18px;
  font-size:13px;
  font-weight:600;
  letter-spacing:1.4px;
  text-transform:uppercase;
  color:#fff;
}

.footer-kolom ul{
  margin:0;
  padding:0;
  list-style:none;
}
.footer-kolom li{ margin-bottom:9px; }
.footer-kolom a{
  color:rgba(255,255,255,.72);
  transition:color .15s;
}
.footer-kolom a:hover{ color:#fff; text-decoration:underline; }
.footer-alle{ font-weight:600; color:var(--orange) !important; }
.footer-alle:hover{ color:var(--orange) !important; }

.footer-contact li{ margin-bottom:16px; }
.footer-soort{
  display:block;
  font-size:12.5px;
  color:rgba(255,255,255,.45);
}

.footer-onder{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin:0 15px;
  padding-top:26px;
  border-top:1px solid rgba(255,255,255,.10);
  font-size:14px;
  color:rgba(255,255,255,.5);
}
.footer-onder p{ margin:0; }
.footer-onder ul{
  display:flex;
  flex-wrap:wrap;
  gap:22px;
  margin:0;
  padding:0;
  list-style:none;
}
.footer-onder a{ color:rgba(255,255,255,.5); }
.footer-onder a:hover{ color:#fff; text-decoration:underline; }

@media (max-width:1099px){
  .footer-body{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:44px; }
}
@media (max-width:849px){
  .site-footer{ padding:56px 0 24px; }
  .footer-body{ padding-bottom:40px; }
}
@media (max-width:599px){
  .footer-body{ grid-template-columns:1fr; gap:36px; }
  .footer-onder{ flex-direction:column; align-items:flex-start; }
}

/* de dienstenkaarten van de homepage, hergebruikt op de overzichtspagina:
   daar staat de sectie direct onder de paginakop en is de extra ruimte niet nodig */
.diensten.overzicht{
  margin-top:0;
  padding:80px 0 90px;
}
@media (max-width:849px){
  .diensten.overzicht{ padding:60px 0 66px; }
}

/* het offerteformulier is een ankerdoel voor de knop in de navbar;
   de plakkende kop mag de bovenkant van de kaart niet afdekken */
#offerte{ scroll-margin-top:130px; }

/* =========================================================
   MOBIEL MENU  (< 850px)
   ========================================================= */

/* de uitklapknop bij "Diensten" wordt door main.js toegevoegd en is alleen mobiel nodig */
.sub-toggle{ display:none; }

/* hamburger wordt een kruisje zodra het menu open staat */
.nav-icon span{ transition:transform .2s, opacity .2s; }
body.menu-open .nav-icon span:nth-child(1){ transform:translateY(9px) rotate(45deg); }
body.menu-open .nav-icon span:nth-child(2){ opacity:0; }
body.menu-open .nav-icon span:nth-child(3){ transform:translateY(-9px) rotate(-45deg); }

@media (max-width:849px){
  /* het menu hangt onder de kop; absoluut t.o.v. #masthead, zodat het meebeweegt
     met de plakkende kop. Daarvoor mag de kolom eromheen niet gepositioneerd zijn. */
  #masthead .flex-col.flex-right{ position:static; }

  .header-nav-main{
    display:block;
    position:absolute;
    top:100%;
    left:0;
    right:0;
    z-index:60;
    /* topbar (40px) + kop (80px): zo past het paneel altijd binnen het scherm,
       ook wanneer de kop nog niet plakt */
    max-height:calc(100vh - 120px);
    max-height:calc(100dvh - 120px);
    overflow-y:auto;
    overscroll-behavior:contain;
    margin:0;
    padding:6px 20px 26px;
    background:#fff;
    border-top:1px solid #e6ebf0;
    box-shadow:0 18px 30px rgba(19,40,60,.16);
    opacity:0;
    visibility:hidden;
    transform:translateY(-10px);
    transition:opacity .22s, transform .22s, visibility .22s;
  }
  body.menu-open .header-nav-main{
    opacity:1;
    visibility:visible;
    transform:translateY(0);
  }
  body.menu-open{ overflow:hidden; }

  .header-nav-main > li{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    justify-content:space-between;
    margin:0;
    border-bottom:1px solid #eef2f6;
  }
  .header-nav-main > li > a.nav-top-link{
    flex:1 1 auto;
    padding:15px 0;
    font-size:16px;
    line-height:22px;
  }
  .header-nav-main > li.active > a.nav-top-link{ color:var(--topbar); font-weight:600; }
  .header-nav-main .icon-angle-down{ display:none; }

  /* uitklapknop met pijltje */
  .sub-toggle{
    display:flex;
    align-items:center;
    justify-content:center;
    width:44px;
    height:44px;
    flex:0 0 auto;
    padding:0;
    border:0;
    background:none;
    cursor:pointer;
  }
  .sub-toggle::before{
    content:"";
    width:10px;
    height:10px;
    border-right:2px solid var(--ink);
    border-bottom:2px solid var(--ink);
    transform:translateY(-2px) rotate(45deg);
    transition:transform .2s;
  }
  .header-nav-main > li.open > .sub-toggle::before{ transform:translateY(2px) rotate(-135deg); }

  /* submenu staat in de lijst zelf in plaats van in een zwevend kaartje */
  .header-nav-main .sub-menu{
    position:static;
    display:none;
    width:auto;
    flex:0 0 100%;
    margin:0;
    padding:0 0 10px 14px;
    background:none;
    border-radius:0;
    box-shadow:none;
    opacity:1;
    visibility:visible;
    transform:none;
    transition:none;
  }
  .header-nav-main > li.open > .sub-menu{ display:block; }
  .header-nav-main .sub-menu > li{ padding:0; }
  .header-nav-main .sub-menu > li > a{ padding:11px 0; font-size:15px; }

  /* de offerteknop onderaan, over de volle breedte */
  .header-nav-main .header-button-1{
    display:block;
    margin:18px 0 0;
    border-bottom:0;
  }
  .header-nav-main .header-button-1 .button{
    display:block;
    width:100%;
    text-align:center;
  }
}

/* Met "Werkgebied" erbij telt de balk zes items plus de offerteknop. Tussen het
   mobiele omslagpunt (850px) en ongeveer 1000px moet dat krapper, anders loopt de
   kop buiten het scherm. */
@media (max-width:1023px){
  .header-nav-main > li{ margin:0 5px; }
  .header-nav-main > li > a.nav-top-link{
    font-size:13.5px;
    letter-spacing:.2px;
  }
  .header-nav-main .icon-angle-down{ margin-left:2px; }
  .header-nav-main .header-button-1{ margin-left:8px; }
  .header-nav-main .header-button-1 .button{
    padding:7px 18px;
    font-size:13px;
    letter-spacing:.3px;
  }
}

/* liggende foto in een tekstblok: minder hoog dan de standaard 4/5 */
.inhoud-foto.breed img{ aspect-ratio:4 / 3; }
