:root {
  --inkt: #15201c;
  --inkt-zacht: #4b5b54;
  --lijn: #d9e4dd;
  --lijn-sterk: #c3d2c9;
  --vlak: #f2f7f4;
  --vlak-2: #e5efe9;
  --accent: #0b5d4e;
  --accent-donker: #084034;
  --accent-licht: #d7ebe3;
  --bel: #c2410c;
  --bel-donker: #9a3412;
  --goud: #d98b00;
  --wit: #fff;
  --breedte: 76rem;
  --radius: 14px;
  --radius-klein: 9px;
  --schaduw: 0 1px 2px rgba(16, 40, 32, .06), 0 10px 28px rgba(16, 40, 32, .09);
  --kop-hoogte: 4.4rem;
}

* { box-sizing: border-box; }

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

body {
  margin: 0;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--inkt);
  background: var(--wit);
  overflow-x: hidden;
}

main { display: block; }

h1, h2, h3 { line-height: 1.22; margin: 2rem 0 .6rem; font-weight: 750; letter-spacing: -.012em; }
h1 { font-size: clamp(1.85rem, 1.25rem + 2.1vw, 2.65rem); }
h2 { font-size: clamp(1.35rem, 1.1rem + 1vw, 1.75rem); }
h3 { font-size: 1.12rem; }
p, li { margin: 0 0 .9rem; }
img { max-width: 100%; }

a { color: var(--accent); text-underline-offset: .18em; }
a:hover { color: var(--accent-donker); }
a:focus-visible, button:focus-visible, select:focus-visible {
  outline: 3px solid var(--bel);
  outline-offset: 2px;
  border-radius: 4px;
}

.overslaan {
  position: absolute; left: -9999px;
  background: var(--inkt); color: var(--wit);
  padding: .6rem 1rem; z-index: 100;
}
.overslaan:focus { left: .5rem; top: .5rem; }

/* ------------------------------------------------------------------ kop */

.kop {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255, 255, 255, .97);
  border-bottom: 1px solid var(--lijn);
  box-shadow: 0 2px 10px rgba(16, 40, 32, .04);
}
.kop-binnen {
  max-width: var(--breedte); margin: 0 auto; padding: .6rem 1rem;
  display: flex; align-items: center; gap: 1.4rem; flex-wrap: nowrap;
  min-height: var(--kop-hoogte);
}
.merk {
  display: flex; align-items: center; gap: .55rem; flex: 0 0 auto;
  text-decoration: none; color: var(--accent); line-height: 1.1;
}
.merkteken { width: 2.4rem; height: 2rem; flex: 0 0 auto; }
.merknaam {
  display: flex; flex-direction: column; line-height: 1.1;
  font-size: .78rem; color: var(--inkt-zacht); letter-spacing: .01em; white-space: nowrap;
}
.merknaam strong {
  font-size: 1.12rem; color: var(--accent); letter-spacing: .03em; text-transform: uppercase;
}

.hoofdnav { margin-left: auto; }
.hoofdnav ul {
  display: flex; gap: 1.35rem; list-style: none; margin: 0; padding: 0;
  white-space: nowrap; align-items: center;
}
.hoofdnav li { margin: 0; }
.hoofdnav a {
  color: var(--inkt); font-weight: 550; text-decoration: none; font-size: .97rem;
  padding: .3rem 0; border-bottom: 2px solid transparent;
}
.hoofdnav a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.hoofdnav .menu-offerte { display: none; }

.kop-acties { display: flex; align-items: center; gap: .6rem; flex: 0 0 auto; }
.nav-bel, .nav-offerte {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .55rem .95rem; border-radius: 999px;
  font-weight: 700; font-size: .95rem; text-decoration: none; white-space: nowrap;
}
.nav-bel { background: var(--bel); color: var(--wit); }
.nav-bel:hover { background: var(--bel-donker); color: var(--wit); }
.nav-bel svg { width: 1rem; height: 1rem; fill: currentColor; }
.nav-bel-kort { display: none; }
.nav-offerte { background: var(--accent); color: var(--wit); }
.nav-offerte:hover { background: var(--accent-donker); color: var(--wit); }

.menuknop {
  display: none; align-items: center; gap: .5rem;
  background: var(--wit); color: var(--inkt);
  border: 1px solid var(--lijn-sterk); border-radius: 999px;
  padding: .5rem .85rem; font: inherit; font-size: .95rem; font-weight: 650; cursor: pointer;
}
.menu-streep, .menu-streep::before, .menu-streep::after {
  display: block; width: 1.1rem; height: 2px; background: currentColor;
  border-radius: 2px; position: relative; transition: transform .2s, background .2s;
}
.menu-streep::before, .menu-streep::after { content: ""; position: absolute; left: 0; }
.menu-streep::before { top: -6px; }
.menu-streep::after { top: 6px; }
.kop.open .menu-streep { background: transparent; }
.kop.open .menu-streep::before { transform: translateY(6px) rotate(45deg); }
.kop.open .menu-streep::after { transform: translateY(-6px) rotate(-45deg); }

/* beoordeling */
.score {
  display: inline-flex; align-items: center; gap: .3rem;
  font-size: .9rem; color: var(--inkt); white-space: nowrap; line-height: 1;
}
.kop .score {
  padding: .4rem .7rem; border: 1px solid var(--lijn); border-radius: 999px; background: var(--wit);
}
.sterren { display: inline-flex; gap: 1px; }
.ster { width: .92rem; height: .92rem; fill: var(--goud); }
.score strong { font-weight: 750; }
.score-aantal { color: var(--inkt-zacht); }
.score-aantal::before { content: "\00b7"; margin: 0 .35rem 0 .1rem; }

/* in de kop alleen de sterren en het cijfer; het aantal staat in de hero */
.kop .score-aantal { display: none; }
@media (max-width: 80rem) {
  .kop .score { display: none; }
  .hoofdnav ul { gap: 1.1rem; }
}

/* mobiel: hamburgermenu */
@media (max-width: 68rem) {
  .menuknop { display: inline-flex; }
  .kop-acties { margin-left: auto; }
  .nav-offerte { display: none; }
  .hoofdnav {
    display: none; position: absolute; left: 0; right: 0; top: 100%;
    background: var(--wit); border-bottom: 1px solid var(--lijn);
    box-shadow: 0 16px 30px rgba(16, 40, 32, .12);
    max-height: calc(100vh - var(--kop-hoogte)); overflow-y: auto;
  }
  .kop.open .hoofdnav { display: block; }
  .hoofdnav ul {
    flex-direction: column; align-items: stretch; gap: 0;
    padding: .4rem 1rem 1.1rem; max-width: var(--breedte); margin: 0 auto;
  }
  .hoofdnav a {
    display: block; padding: .9rem .2rem; font-size: 1.08rem;
    border-bottom: 1px solid var(--lijn);
  }
  .hoofdnav a:hover { border-bottom-color: var(--lijn); }
  .hoofdnav .menu-offerte { display: block; margin-top: .9rem; }
  .hoofdnav .menu-offerte a {
    background: var(--accent); color: var(--wit); border: 0;
    border-radius: 999px; text-align: center; font-weight: 700;
  }
}
@media (max-width: 30rem) {
  .kop-binnen { gap: .6rem; padding-inline: .75rem; }
  .merkteken { width: 2rem; height: 1.7rem; }
  .merknaam { font-size: .7rem; }
  .merknaam strong { font-size: .98rem; }
  .nav-bel-lang { display: none; }
  .nav-bel-kort { display: inline; }
  .nav-bel { padding: .5rem .8rem; }
  .menu-label { display: none; }
  .menuknop { padding: .55rem .7rem; }
}

/* ------------------------------------------------------------------ opbouw */

.opbouw {
  max-width: var(--breedte); margin: 0 auto; padding: 1.25rem 1rem 0;
  display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.5rem;
}
.romp { min-width: 0; }
.romp > section, .romp > aside { margin: 2.6rem 0; }
.romp > section:first-child { margin-top: .5rem; }
.romp > section > h2:first-child { margin-top: 0; }

@media (min-width: 64rem) {
  .opbouw {
    grid-template-columns: minmax(0, 1fr) 22.5rem;
    column-gap: 2.5rem; align-items: start; padding-top: 1.75rem;
  }
  .hero { grid-column: 1; grid-row: 1; }
  .zij {
    grid-column: 2; grid-row: 1 / span 2;
    position: sticky; top: calc(var(--kop-hoogte) + 1rem);
  }
  .romp { grid-column: 1; grid-row: 2; }
}
@media (min-width: 64rem) and (max-height: 50rem) {
  .zij { position: static; }
}

.smal { max-width: 50rem; margin: 0 auto; padding: 1.5rem 1rem 1rem; }

/* ------------------------------------------------------------------ hero */

.hero {
  display: grid; gap: 1.25rem;
  background: linear-gradient(155deg, var(--vlak) 0%, var(--wit) 75%);
  border: 1px solid var(--lijn); border-radius: var(--radius);
  padding: 1.25rem;
}
@media (min-width: 46rem) {
  .hero { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); padding: 1.75rem; align-items: start; }
}
.hero h1 { margin: .55rem 0 .75rem; }
.hero-bewijs {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: .35rem .9rem;
  font-size: .9rem; color: var(--inkt-zacht);
}
.hero-bewijs li { margin: 0; display: flex; align-items: center; }
.intro { font-size: 1.07rem; color: var(--inkt); margin-bottom: 1rem; }
.hero-foto { margin: 0; }
.hero-foto img {
  display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover;
  border-radius: var(--radius-klein); box-shadow: var(--schaduw);
}
.hero-foto figcaption { font-size: .85rem; color: var(--inkt-zacht); margin-top: .45rem; }
@media (max-width: 45.99rem) {
  .hero { padding: 1rem; }
  .intro { font-size: 1rem; }
  .hero-foto img { aspect-ratio: 16 / 10; }
}

.voordelen, .vinklijst { list-style: none; padding: 0; margin: 1rem 0; }
.voordelen li, .vinklijst li { position: relative; padding-left: 1.85rem; margin: .45rem 0; }
.voordelen li { font-weight: 650; }
.voordelen li::before, .vinklijst li::before {
  content: ""; position: absolute; left: .1rem; top: .3em;
  width: 1.15rem; height: 1.15rem; border-radius: 50%; background: var(--accent-licht);
}
.voordelen li::after, .vinklijst li::after {
  content: ""; position: absolute; left: .52rem; top: calc(.3em + .2rem);
  width: .32rem; height: .6rem; border: solid var(--accent); border-width: 0 2.5px 2.5px 0;
  transform: rotate(45deg);
}

.microcopy { font-size: .88rem; color: var(--inkt-zacht); margin: -.2rem 0 0; }

/* ------------------------------------------------------------------ knoppen */

.knoppen { display: flex; flex-wrap: wrap; gap: .7rem; margin: 1.2rem 0; }
.knop {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .85rem 1.4rem; border-radius: 999px; border: 0;
  font-family: inherit; font-size: 1rem; font-weight: 700; line-height: 1.2;
  text-decoration: none; cursor: pointer;
  transition: background-color .15s, transform .15s, box-shadow .15s;
}
.knop:hover { transform: translateY(-1px); }
.knop svg { width: 1.05rem; height: 1.05rem; fill: currentColor; flex: 0 0 auto; }
.knop-bel { background: var(--bel); color: var(--wit); box-shadow: 0 4px 14px rgba(194, 65, 12, .25); }
.knop-bel:hover { background: var(--bel-donker); color: var(--wit); }
.knop-offerte { background: var(--accent); color: var(--wit); box-shadow: 0 4px 14px rgba(11, 93, 78, .25); }
.knop-offerte:hover { background: var(--accent-donker); color: var(--wit); }
.knop-kaart { background: var(--vlak); color: var(--inkt); border: 1px solid var(--lijn); }
.knop-breed { width: 100%; }
@media (prefers-reduced-motion: reduce) {
  .knop { transition: none; }
  .knop:hover { transform: none; }
}

/* ------------------------------------------------------------------ zijbalk */

.zij { scroll-margin-top: calc(var(--kop-hoogte) + 1rem); }
.zij-kaart {
  background: var(--wit); border: 1px solid var(--lijn); border-top: 5px solid var(--accent);
  border-radius: var(--radius); box-shadow: var(--schaduw); padding: 1.15rem 1.15rem 1rem;
}
.zij-kop { font-size: 1.35rem; font-weight: 800; margin: 0; letter-spacing: -.01em; line-height: 1.2; }
.zij-sub { color: var(--inkt-zacht); font-size: .9rem; margin: .2rem 0 .75rem; line-height: 1.4; }
.keuze-melding {
  background: var(--accent-licht); color: var(--accent-donker); font-weight: 650;
  font-size: .92rem; border-radius: var(--radius-klein); padding: .55rem .75rem; margin: 0 0 .8rem;
}
.zij-of {
  display: flex; align-items: center; gap: .6rem;
  color: var(--inkt-zacht); font-size: .85rem; margin: .7rem 0 .5rem;
}
.zij-of::before, .zij-of::after { content: ""; flex: 1; height: 1px; background: var(--lijn); }
.zij-bel { margin: 0; }
.zij-uren { font-size: .82rem; color: var(--inkt-zacht); text-align: center; margin: .5rem 0 0; }

/* ------------------------------------------------------------------ formulier */

.formulier p { margin: 0 0 .55rem; }
.formulier .rij { display: grid; grid-template-columns: 1fr 1fr; gap: 0 .6rem; }
@media (max-width: 22rem) { .formulier .rij { grid-template-columns: 1fr; } }
.formulier label { display: block; font-weight: 650; font-size: .88rem; margin-bottom: .2rem; }
.optioneel { font-weight: 400; color: var(--inkt-zacht); }
.formulier input, .formulier select, .formulier textarea {
  width: 100%; padding: .55rem .7rem; font: inherit; font-size: 1rem;
  border: 1px solid var(--lijn-sterk); border-radius: var(--radius-klein);
  background: var(--wit); color: var(--inkt);
}
.formulier textarea { resize: vertical; }
.formulier input:focus, .formulier select:focus, .formulier textarea:focus {
  outline: 3px solid var(--accent-licht); border-color: var(--accent);
}
.formulier .verstuur { margin-top: .75rem; }
.formulier-klein { font-size: .8rem; color: var(--inkt-zacht); line-height: 1.45; margin: .5rem 0 0; }

/* ------------------------------------------------------------------ inhoud */

.h2-seo {
  display: block; font-size: .76rem; font-weight: 700; letter-spacing: .07em;
  text-transform: uppercase; color: var(--accent); margin-bottom: .25rem;
}

.keuze-blok {
  background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--radius);
  padding: 1.35rem;
}
.keuzes {
  list-style: none; padding: 0; margin: 1rem 0 .8rem;
  display: grid; grid-template-columns: 1fr 1fr; gap: .65rem;
}
.keuzes li { margin: 0; }
.keuze {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
  height: 100%; background: var(--wit); color: var(--inkt);
  border: 2px solid var(--lijn); border-radius: var(--radius-klein);
  padding: .85rem 1rem; font-weight: 700; text-decoration: none; line-height: 1.3;
}
.keuze::after { content: "\2192"; color: var(--accent); font-weight: 800; }
.keuze:hover { border-color: var(--accent); color: var(--accent); }
.keuze-uitleg { font-size: .92rem; color: var(--inkt-zacht); margin: 0; }
@media (max-width: 26rem) { .keuzes { grid-template-columns: 1fr; } }

.kaarten { list-style: none; padding: 0; display: grid; gap: 1rem; margin: 1rem 0; }
@media (min-width: 40rem) { .kaarten { grid-template-columns: 1fr 1fr; } }
.kaarten li {
  border: 1px solid var(--lijn); border-radius: var(--radius); padding: 1.1rem 1.2rem;
  margin: 0; background: var(--wit); box-shadow: 0 1px 2px rgba(16, 40, 32, .05);
  transition: border-color .15s, box-shadow .15s;
}
.kaarten li:hover { border-color: var(--accent); box-shadow: var(--schaduw); }
.kaarten h2, .kaarten h3 { margin: .1rem 0 .45rem; font-size: 1.12rem; }
.kaarten h2 a, .kaarten h3 a { text-decoration: none; color: var(--inkt); }
.kaarten h2 a::after, .kaarten h3 a::after { content: " \2192"; color: var(--accent); }
.kaarten li:hover h2 a, .kaarten li:hover h3 a { color: var(--accent); }
.kaarten p { margin-bottom: .5rem; font-size: .97rem; }
.kaart-kort { color: var(--inkt-zacht); }

.redenen { list-style: none; padding: 0; display: grid; gap: 1rem; margin: 1rem 0; }
@media (min-width: 40rem) { .redenen { grid-template-columns: 1fr 1fr; } }
.redenen li {
  margin: 0; padding: 1.1rem 1.2rem; border-radius: var(--radius);
  background: var(--vlak); border: 1px solid var(--lijn);
}
.redenen h3 { margin-top: 0; }
.redenen p { margin: 0; font-size: .97rem; }

.stappen ol {
  list-style: none; counter-reset: stap; padding: 0; margin: 1rem 0;
  display: grid; gap: 1rem;
}
@media (min-width: 40rem) { .stappen ol { grid-template-columns: 1fr 1fr; } }
.stappen li {
  counter-increment: stap; position: relative; margin: 0;
  background: var(--wit); border: 1px solid var(--lijn); border-radius: var(--radius);
  padding: 1.1rem 1.15rem 1rem 3.7rem;
}
.stappen li::before {
  content: counter(stap); position: absolute; left: 1rem; top: 1rem;
  width: 2rem; height: 2rem; border-radius: 50%;
  background: var(--accent); color: var(--wit); font-weight: 800;
  display: grid; place-items: center; font-size: .95rem;
}
.stappen h3 { margin: .2rem 0 .35rem; }
.stappen p { margin: 0; font-size: .97rem; }

.tabel-wrap { overflow-x: auto; margin: 1rem 0 .4rem; }
.prijstabel {
  width: 100%; border-collapse: separate; border-spacing: 0; font-size: .97rem;
  border: 1px solid var(--lijn); border-radius: var(--radius-klein); overflow: hidden;
}
.prijstabel caption {
  caption-side: top; text-align: left; font-size: .86rem; color: var(--inkt-zacht);
  padding-bottom: .45rem;
}
.prijstabel th, .prijstabel td { padding: .7rem .85rem; text-align: left; border-bottom: 1px solid var(--lijn); }
.prijstabel tbody tr:last-child th, .prijstabel tbody tr:last-child td { border-bottom: 0; }
.prijstabel thead th { background: var(--accent); color: var(--wit); font-weight: 700; }
.prijstabel tbody th { font-weight: 600; }
.prijstabel tbody tr:nth-child(even) { background: var(--vlak); }
.prijstabel td { white-space: nowrap; }
.prijstabel td:nth-child(2) { font-weight: 750; color: var(--accent-donker); }
.tabel-noot { font-size: .88rem; color: var(--inkt-zacht); }

.vragen h2 { font-size: 1.2rem; margin: 1.8rem 0 .45rem; }
.vragen h2:first-child { margin-top: .4rem; }

.lijst-kolommen { list-style: none; padding: 0; display: grid; gap: .35rem 1rem; }
@media (min-width: 34rem) { .lijst-kolommen { grid-template-columns: 1fr 1fr; } }
@media (min-width: 54rem) { .lijst-kolommen { grid-template-columns: repeat(3, 1fr); } }
.lijst-kolommen li { margin: 0; }
.pc { color: var(--inkt-zacht); font-size: .88rem; }

.uren { display: grid; grid-template-columns: max-content 1fr; gap: .2rem 1.5rem; }
.uren dt { font-weight: 650; }
.uren dd { margin: 0; }

address { font-style: normal; line-height: 1.8; }

.lead { font-size: 1.1rem; color: var(--inkt-zacht); }

/* ------------------------------------------------------------------ cta */

.cta {
  background: linear-gradient(140deg, var(--accent) 0%, var(--accent-donker) 100%);
  color: var(--wit); border-radius: var(--radius); padding: 1.6rem 1.5rem 1.3rem;
}
.cta h2 { color: var(--wit); margin: 0 0 .5rem; }
.cta p { color: #dcefe8; }
.cta a:not(.knop) { color: var(--wit); }
.cta .knop-offerte { background: var(--wit); color: var(--accent-donker); box-shadow: none; }
.cta .knop-offerte:hover { background: var(--accent-licht); color: var(--accent-donker); }
.cta-klein { font-size: .88rem; margin: 0; }

/* ------------------------------------------------------------------ foto's */

.galerij figure { margin: 0 0 1rem; }
.galerij img {
  width: 100%; height: auto; display: block; border-radius: var(--radius-klein);
}
.galerij figcaption { font-size: .88rem; color: var(--inkt-zacht); margin-top: .4rem; }
@media (min-width: 36rem) {
  .galerij { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
  .galerij h2, .galerij > p { grid-column: 1 / -1; }
}
.werkfotos img { aspect-ratio: 4 / 3; object-fit: cover; }

.kaart iframe {
  width: 100%; height: 340px; border: 1px solid var(--lijn);
  border-radius: var(--radius-klein); display: block;
}

/* ------------------------------------------------------------------ voet */

.voet {
  margin-top: 3.5rem; padding: 2.4rem 0 1.4rem;
  background: var(--inkt); color: #cfdcd5; font-size: .95rem;
}
.voet > * { max-width: var(--breedte); margin-inline: auto; padding-inline: 1rem; }
.voet a { color: var(--wit); }
.voet h2 { color: var(--wit); font-size: 1.05rem; margin: 0 0 .7rem; }
.voet-raster { display: grid; gap: 1.8rem; }
@media (min-width: 52rem) { .voet-raster { grid-template-columns: 1.3fr 1fr 1.2fr; } }
.voetnav ul { list-style: none; padding: 0; margin: 0; }
.voet-hoofd li { margin: 0 0 .35rem; }
.voet-cta .knoppen { margin: .8rem 0 0; }
.voet-cta .knop { padding: .7rem 1.1rem; font-size: .95rem; }
.voetnav.klein { margin-top: 1.8rem; padding-top: 1.1rem; border-top: 1px solid rgba(255, 255, 255, .12); }
.voetnav.klein ul { display: flex; flex-wrap: wrap; gap: .4rem 1.2rem; }
.voetnav.klein li { margin: 0; }
.voetnav.klein a { color: #a9bbb2; font-size: .86rem; }
.copyright { color: #a9bbb2; font-size: .86rem; margin-top: .8rem; }

/* vaste balk op mobiel */
.belbalk { display: none; }
@media (max-width: 47.99rem) {
  .belbalk {
    display: grid; grid-template-columns: 1fr 1fr; gap: .5rem;
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
    padding: .55rem .75rem calc(.55rem + env(safe-area-inset-bottom));
    background: var(--wit); border-top: 1px solid var(--lijn);
    box-shadow: 0 -6px 18px rgba(16, 40, 32, .1);
  }
  .belbalk .knop { padding: .8rem .5rem; box-shadow: none; }
  body { padding-bottom: 4.6rem; }
}

@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}
