@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 650;
  font-display: swap;
  src: url(/site/fonts/inter-latin.woff2) format("woff2");
}
:root {
  color-scheme: light;
  --tekst: #16181d;
  --zacht: #5b616e;
  --licht: #8a909b;
  --lijn: #e4e6ea;
  --vlak: #f7f7f8;
  --wit: #ffffff;
  --groen: #265C4A;
  --groen-donker: #1F4A3C;
  --groen-licht: #f1f7f4;
  --groen-lijn: #cfe0d9;
  --mint: #9fdcc2;
  --breed: 1120px;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--wit);
  color: var(--tekst);
  font: 17px/1.6 "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  font-feature-settings: "cv11", "ss01";
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; }
img, svg { display: block; max-width: 100%; }
.wrap { max-width: var(--breed); margin: 0 auto; padding: 0 24px; }

/* Kop */
.kop { border-bottom: 1px solid var(--lijn); background: rgba(255,255,255,.92); position: sticky; top: 0; z-index: 10; backdrop-filter: saturate(1.2) blur(8px); }
.kop .wrap { display: flex; align-items: center; gap: 32px; height: 68px; }
.merk { display: flex; align-items: center; gap: 10px; font-weight: 600; letter-spacing: -0.01em; text-decoration: none; font-size: 17px; }
.merk svg { width: 26px; height: 26px; }
.nav { display: flex; gap: 24px; font-size: 15px; color: var(--zacht); }
.nav a { text-decoration: none; }
.nav a:hover, .nav a[aria-current] { color: var(--tekst); }
.acties { margin-left: auto; display: flex; align-items: center; gap: 16px; font-size: 15px; }
.acties .inlog { text-decoration: none; color: var(--zacht); }
.acties .inlog:hover { color: var(--tekst); }
.knop { transition: background-color .2s, border-color .2s, transform .2s; display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 44px; padding: 0 20px; border-radius: 8px; background: var(--groen); color: var(--wit); text-decoration: none; font-weight: 500; font-size: 15px; border: 1px solid var(--groen); white-space: nowrap; cursor: pointer; font-family: inherit; }
.knop:hover { background: var(--groen-donker); border-color: var(--groen-donker); transform: translateY(-1px); }
.knop.licht { background: var(--wit); color: var(--tekst); border-color: var(--lijn); }
.knop.licht:hover { border-color: var(--groen); background: var(--wit); }
.knop.wit { background: var(--wit); color: var(--groen); border-color: var(--wit); }
.knop.wit:hover { background: #e8f2ee; border-color: #e8f2ee; }
.knop.rand { background: transparent; color: var(--wit); border-color: rgba(255,255,255,.4); }
.knop.rand:hover { background: rgba(255,255,255,.08); border-color: var(--wit); }
.acties .knop { height: 38px; padding: 0 16px; font-size: 14px; }
.menu { display: none; margin-left: auto; }
.menu summary { list-style: none; cursor: pointer; padding: 8px; margin-right: -8px; }
.menu summary::-webkit-details-marker { display: none; }
.menu-lijst { position: absolute; left: 0; right: 0; top: 68px; background: var(--wit); border-bottom: 1px solid var(--lijn); padding: 8px 24px 24px; }
.menu-lijst a { display: block; padding: 12px 0; text-decoration: none; border-bottom: 1px solid var(--lijn); }
.menu-lijst .knop { margin-top: 20px; width: 100%; border-bottom: 0; color: var(--wit); }

/* Held */
.held { padding: 96px 0 72px; }
.held .wrap { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 64px; align-items: center; }
.boven { font-size: 14px; color: var(--zacht); margin: 0 0 20px; letter-spacing: 0.01em; }
h1 { font-size: clamp(38px, 5.4vw, 60px); line-height: 1.04; letter-spacing: -0.035em; font-weight: 600; margin: 0; }
.inleiding { font-size: 20px; line-height: 1.55; color: var(--zacht); margin: 28px 0 0; max-width: 34em; }
.knoppen { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 40px; }
.klok { width: 100%; max-width: 420px; justify-self: end; margin: 0; }

/* Pagina-kop voor subpagina's */
.paginakop { padding: 88px 0 48px; border-bottom: 1px solid var(--groen-lijn); background: var(--groen-licht); }
.paginakop h1 { font-size: clamp(34px, 4.4vw, 50px); max-width: 16em; }
.paginakop .inleiding { margin-top: 20px; }

/* Secties */
section { padding: 88px 0; }
section + section { border-top: 1px solid var(--lijn); }
h2 { font-size: clamp(28px, 3.2vw, 38px); line-height: 1.12; letter-spacing: -0.025em; font-weight: 600; margin: 0 0 16px; max-width: 20em; }
h3 { font-size: 19px; line-height: 1.3; letter-spacing: -0.01em; font-weight: 600; margin: 0 0 10px; }
.sectie-inleiding { color: var(--zacht); font-size: 18px; max-width: 36em; margin: 0 0 48px; }
.raster { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--lijn); border: 1px solid var(--lijn); border-radius: 12px; overflow: hidden; }
.raster.drie { grid-template-columns: repeat(3, 1fr); }
.blok { background: var(--wit); padding: 36px; position: relative; transition: background-color .3s; }
.blok::after { content: ""; position: absolute; left: 0; top: 0; right: 0; height: 2px; background: var(--groen); transform: scaleX(0); transform-origin: left; transition: transform .45s cubic-bezier(.2,.7,.2,1); }
.blok:hover { background: #fbfdfc; }
.blok:hover::after { transform: scaleX(1); }
.blok:hover .teken { transform: translateY(-3px); }
.blok p { margin: 0; color: var(--zacht); font-size: 16px; }
.blok .teken { width: 36px; height: 36px; margin-bottom: 24px; color: var(--groen); transition: transform .4s cubic-bezier(.2,.7,.2,1); }
.twee { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: start; }
.twee p { color: var(--zacht); margin: 0 0 16px; }
.stappen { list-style: none; margin: 0; padding: 0; counter-reset: stap; }
.stappen li { display: grid; grid-template-columns: 64px 1fr; gap: 24px; padding: 36px 0; border-top: 1px solid var(--lijn); counter-increment: stap; }
.stappen li:last-child { border-bottom: 1px solid var(--lijn); }
.stappen li::before { content: "0" counter(stap); font-size: 15px; color: var(--groen); font-weight: 600; font-variant-numeric: tabular-nums; padding-top: 3px; }
.stappen p { margin: 0; color: var(--zacht); max-width: 36em; }
.lijst { list-style: none; margin: 0; padding: 0; }
.lijst li { padding: 14px 0 14px 28px; border-top: 1px solid var(--lijn); position: relative; color: var(--zacht); }
.lijst li::before { content: ""; position: absolute; left: 4px; top: 25px; width: 8px; height: 1.5px; background: var(--groen); }
.lijst li strong { color: var(--tekst); font-weight: 600; }
.vlak { background: var(--vlak); }
.slot { text-align: left; }
.slot .wrap { display: flex; justify-content: space-between; align-items: center; gap: 32px; }
.slot h2 { margin: 0 0 8px; }
.slot p { margin: 0; color: var(--zacht); max-width: 32em; }
.tekst { max-width: 44em; }
.tekst h2 { font-size: 24px; margin-top: 48px; }
.tekst h2:first-child { margin-top: 0; }
.tekst p, .tekst li { color: var(--zacht); }

/* Formulier inloggen */
.werkplek { display: flex; align-items: stretch; max-width: 520px; border: 1px solid var(--lijn); border-radius: 8px; overflow: hidden; background: var(--wit); }
.werkplek input { flex: 1; min-width: 0; border: 0; padding: 0 16px; font: inherit; font-size: 17px; height: 52px; color: var(--tekst); outline: none; text-align: right; }
.werkplek span { display: flex; align-items: center; padding-right: 16px; color: var(--zacht); }
.werkplek:focus-within { border-color: var(--groen); }
.melding { color: var(--zacht); font-size: 15px; margin-top: 12px; min-height: 1.5em; }

/* Voet */
.voet { border-top: 1px solid var(--lijn); padding: 40px 0 56px; font-size: 14px; color: var(--zacht); }
.voet .wrap { display: flex; flex-wrap: wrap; gap: 16px 32px; justify-content: space-between; }
.voet nav { display: flex; flex-wrap: wrap; gap: 24px; }
.voet a { text-decoration: none; }
.voet a:hover { color: var(--tekst); }


a { text-decoration-color: var(--groen-lijn); text-underline-offset: 3px; }
main a:not(.knop) { color: var(--groen); }
main a:not(.knop):hover { text-decoration-color: var(--groen); }

/* Groene vlakken */
.groen { background: var(--groen); color: var(--wit); border: 0 !important; }
.groen + section { border-top: 0; }
.held.groen .inleiding { color: rgba(255,255,255,.8); }
.held.groen .boven { color: rgba(255,255,255,.75); display: flex; align-items: center; gap: 10px; }
.held.groen .boven::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--mint); box-shadow: 0 0 0 0 rgba(159,220,194,.6); animation: baken 2.4s ease-out infinite; }
.slot.groen h2 { color: var(--wit); }
.slot.groen p { color: rgba(255,255,255,.8); }

/* Klok */
.klok svg { overflow: visible; }
.k-vlak { fill: rgba(255,255,255,.06); stroke: rgba(255,255,255,.2); }
.k-binnen { fill: rgba(255,255,255,.05); stroke: rgba(255,255,255,.2); }
.k-streep { stroke: rgba(255,255,255,.35); stroke-width: 1.2; }
.k-label { fill: rgba(255,255,255,.6); font-size: 13px; font-family: inherit; }
.k-team { fill: var(--groen); stroke: rgba(255,255,255,.85); stroke-width: 1.6; transition: fill .6s; }
.k-team.aan { fill: var(--mint); stroke: var(--mint); }
.k-halo { fill: none; stroke: var(--mint); stroke-width: 1.5; opacity: 0; transform-box: fill-box; transform-origin: center; }
.k-halo.aan { animation: halo 2.4s ease-out infinite; }
.k-ai { fill: #d6efe4; transform-box: fill-box; transform-origin: center; animation: puls 3.6s ease-in-out infinite; animation-delay: calc(var(--i) * -0.15s); }
.k-signaal { stroke: var(--mint); stroke-width: 2; stroke-linecap: round; stroke-dasharray: 4 46; animation: stroom 3.2s linear infinite; animation-delay: calc(var(--i) * -0.55s); }
.k-signaal:nth-of-type(even) { animation-direction: reverse; }
.k-wijzer { transition: transform 1s; }
.k-wijzer line { stroke: rgba(255,255,255,.5); stroke-width: 1.5; }
.k-wijzer circle { fill: var(--wit); }
.k-groot { fill: var(--wit); font-size: 30px; font-weight: 600; letter-spacing: -1px; font-family: inherit; }
.k-klein { fill: rgba(255,255,255,.7); font-size: 13px; font-family: inherit; font-variant-numeric: tabular-nums; }
.legenda { display: flex; gap: 24px; justify-content: center; font-size: 14px; color: rgba(255,255,255,.8); margin-top: 20px; }
.legenda span { display: flex; align-items: center; gap: 8px; }
.l-team { fill: none; stroke: var(--wit); stroke-width: 1.5; }
.l-ai { fill: #d6efe4; }

/* Overdracht */
.overdracht { margin: 40px 0 0; max-width: 460px; }
.o-pad { fill: none; stroke: var(--groen-lijn); stroke-width: 1.5; stroke-dasharray: 2 6; }
.o-stip { fill: var(--groen); offset-rotate: 0deg; animation: reis 4.8s cubic-bezier(.45,0,.55,1) infinite; animation-delay: calc(var(--i) * -1.6s); }
.o-team { fill: var(--wit); stroke: var(--groen); stroke-width: 1.5; }
.o-ai { fill: var(--groen); }
.o-tekst { fill: var(--tekst); font-size: 14px; font-weight: 500; font-family: inherit; }
.o-licht { fill: var(--wit); }
.o-label { fill: var(--licht); font-size: 13px; font-family: inherit; }

/* Levende beelden */
.beeld { position: relative; width: 100%; }
.beeld canvas { display: block; }
.held { position: relative; overflow: hidden; }
.held > .wrap { position: relative; z-index: 1; }
.beeld-netwerk { position: absolute; inset: 0; height: auto; z-index: 0; }
/* Sluier achter de tekst: wit op groen blijft leesbaar boven het netwerk */
.beeld-netwerk::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(38,92,74,.9) 0%, rgba(38,92,74,.88) 48%, rgba(38,92,74,0) 62%); }
.beeld-kaarten { height: 268px; margin: 0 0 48px; }
.beeld-dagnacht { height: 230px; margin-top: 56px; }
.beeld-logboek { height: 320px; margin-top: 48px; }
.beeld-flow { height: 190px; margin-bottom: 40px; }
.beeld-vakken { height: 420px; }
.vakken-band { padding: 48px 0 24px; }

/* In beeld komen: vanuit een zichtbare rusttoestand */
.js .reveal { opacity: .35; transform: translateY(14px); transition: opacity .8s cubic-bezier(.2,.7,.2,1) var(--d, 0ms), transform .8s cubic-bezier(.2,.7,.2,1) var(--d, 0ms); }
.js .reveal.in { opacity: 1; transform: none; }

@keyframes puls { 0%, 100% { opacity: .5; transform: scale(.85); } 50% { opacity: 1; transform: scale(1.25); } }
@keyframes halo { 0% { opacity: .9; transform: scale(1); } 100% { opacity: 0; transform: scale(3.2); } }
@keyframes stroom { to { stroke-dashoffset: -50; } }
@keyframes reis { 0% { offset-distance: 0%; opacity: 0; } 12% { opacity: 1; } 88% { opacity: 1; } 100% { offset-distance: 100%; opacity: 0; } }
@keyframes baken { 0% { box-shadow: 0 0 0 0 rgba(159,220,194,.6); } 100% { box-shadow: 0 0 0 10px rgba(159,220,194,0); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .o-stip { display: none; }
  .k-signaal { stroke-dasharray: none; opacity: .35; }
  .js .reveal { opacity: 1; transform: none; }
}

@media (max-width: 960px) {
  .nav, .acties { display: none; }
  .menu { display: block; }
  .held { padding: 56px 0 48px; }
  .held .wrap { grid-template-columns: 1fr; gap: 40px; }
  .twee { grid-template-columns: 1fr; gap: 8px; }
  .overdracht { margin: 24px 0 24px; }
  .beeld-netwerk::after { background: linear-gradient(180deg, rgba(38,92,74,.9) 0%, rgba(38,92,74,.88) 58%, rgba(38,92,74,0) 70%); }
  .beeld-kaarten { height: 236px; margin-bottom: 32px; }
  .beeld-dagnacht { height: 210px; margin-top: 32px; }
  .beeld-logboek { height: 400px; margin-top: 32px; }
  .beeld-flow { height: 340px; }
  .beeld-vakken { height: 360px; }
  .klok { justify-self: start; max-width: 300px; }
  .raster, .raster.drie { grid-template-columns: 1fr; }
  section { padding: 64px 0; }
  .paginakop { padding: 56px 0 36px; }
  .slot .wrap { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 480px) {
  .wrap { padding: 0 20px; }
  body { font-size: 16px; }
  .inleiding { font-size: 18px; }
  .blok { padding: 28px 24px; }
  .knoppen .knop { flex: 1 1 100%; }
  .stappen li { grid-template-columns: 1fr; gap: 8px; padding: 28px 0; }
}

.prijzen { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.pakket { border: 1px solid var(--lijn); border-radius: 14px; padding: 28px 24px; display: flex; flex-direction: column; gap: 14px; }
.pakket h2 { margin: 0; font-size: 20px; }
.pakket .bedrag { margin: 0; font-size: 36px; font-weight: 600; color: var(--tekst); }
.pakket .bedrag span { font-size: 15px; font-weight: 400; color: var(--zacht); }
.pakket .knop { align-self: flex-start; }
.klein { font-size: 14px; color: var(--zacht); margin-top: 18px; }
