/* ===========================================================================
   Body Matrix Rotterdam, Katendrecht
   Zwart/wit zoals het merk, gallerie-ritme: papier en inkt wisselen elkaar af,
   de passe-partout van de opening keert terug bij het team, en een dunne
   maatvoering (hairlines + mono-indexen) loopt door de hele pagina.
   =========================================================================== */

:root {
  --inkt: #0b0b0c;
  --inkt-op: #141417;
  --papier: #efeeec;
  --papier-diep: #e3e1dc;
  --wit: #ffffff;

  --tekst-licht: rgba(255, 255, 255, .74);
  --tekst-zwak: rgba(255, 255, 255, .56);
  --tekst-donker: rgba(16, 16, 18, .78);
  --tekst-donker-zwak: rgba(16, 16, 18, .64);

  --lijn: rgba(255, 255, 255, .16);
  --lijn-fijn: rgba(255, 255, 255, .09);

  --kantlijn: clamp(1.1rem, 4.2vw, 4rem);
  --maat: 1460px;
  --ritme: clamp(3.6rem, 7.4vw, 7rem);

  --opening-achtergrond: #0b0b0c;
  --opening-passe: #efeeec;
  --opening-demping: .55;

  --veer: cubic-bezier(.2, .7, .2, 1);
}

/* ---- basis ------------------------------------------------------------- */

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

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

body {
  margin: 0;
  background: var(--inkt);
  color: var(--wit);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  font-size: clamp(1rem, .96rem + .2vw, 1.0625rem);
  line-height: 1.6;
  font-synthesis-weight: none;
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}

[id] { scroll-margin-top: clamp(4.5rem, 9vh, 6rem); }

img {
  max-width: 100%;
  height: auto;
  display: block;
}

a { color: inherit; }

h1, h2, h3, h4 {
  margin: 0;
  font-weight: 800;
  font-stretch: 112%;
  line-height: .96;
  letter-spacing: -.022em;
}

p { margin: 0; }
ol, ul { margin: 0; padding: 0; list-style: none; }

::selection { background: var(--wit); color: var(--inkt); }

:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

.overslaan {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 300;
  background: var(--wit);
  color: var(--inkt);
  padding: .7rem 1.1rem;
  font: 500 .8rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
}
.overslaan:focus { left: .6rem; top: .6rem; }

.wrap {
  width: 100%;
  max-width: var(--maat);
  margin: 0 auto;
  padding-inline: var(--kantlijn);
}

/* ---- vlakken: papier en inkt ------------------------------------------- */

.vlak {
  position: relative;
  padding-block: var(--ritme);
}

.vlak--inkt {
  background: var(--inkt);
  color: var(--wit);
}

.vlak--papier {
  background: var(--papier);
  color: #101012;
  --lijn: rgba(16, 16, 18, .17);
  --lijn-fijn: rgba(16, 16, 18, .1);
  --tekst-licht: var(--tekst-donker);
  --tekst-zwak: var(--tekst-donker-zwak);
}

/* het motief: de maatlijnen van de matrix, heel licht achter de inhoud */
.raster::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: repeating-linear-gradient(to right, var(--lijn-fijn) 0 1px, transparent 1px calc(100% / 6));
  opacity: .9;
}
.raster > * { position: relative; }

/* ---- typografie -------------------------------------------------------- */

.oog {
  font: 500 .72rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--tekst-zwak);
  margin-bottom: clamp(1rem, 2vw, 1.6rem);
}

.titel {
  font-size: clamp(2.1rem, 1.1rem + 3.5vw, 4.4rem);
  text-wrap: balance;
}

.lood {
  max-width: 46ch;
  margin-top: clamp(1.1rem, 2vw, 1.6rem);
  color: var(--tekst-licht);
  font-size: clamp(1.02rem, .97rem + .26vw, 1.2rem);
}

.bijschrift {
  font: 400 .74rem/1.4 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .04em;
  color: var(--tekst-donker-zwak);
}
.bijschrift--licht { color: rgba(255, 255, 255, .56); }

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

.knop {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: .92rem 1.5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font: 500 .82rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .09em;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color .35s var(--veer), color .35s var(--veer), transform .35s var(--veer), border-color .35s var(--veer);
}

.knop--vol {
  background: var(--wit);
  color: var(--inkt);
  border-color: var(--wit);
}
.knop--vol:hover { transform: translateY(-2px); background: transparent; color: var(--wit); border-color: var(--wit); }

.knop--lijn {
  background: transparent;
  color: inherit;
  border-color: rgba(255, 255, 255, .42);
}
.knop--lijn:hover {
  transform: translateY(-2px);
  background: var(--wit);
  color: var(--inkt);
  border-color: var(--wit);
}

.knop--klein { padding: .68rem 1.05rem; font-size: .74rem; }
.knop--breed { width: 100%; margin-top: .4rem; }

/* ---- kopbalk ----------------------------------------------------------- */

.kop {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 200;
  background: var(--inkt);
  border-bottom: 1px solid var(--lijn-fijn);
}

.kop__binnen {
  display: flex;
  align-items: center;
  gap: clamp(1rem, 3vw, 2.5rem);
  width: 100%;
  max-width: var(--maat);
  margin: 0 auto;
  padding: .7rem var(--kantlijn);
}

.kop__merk { flex: 0 0 auto; display: block; }
.kop__merk img { width: auto; height: 30px; }

.kop__nav {
  display: flex;
  align-items: center;
  gap: clamp(1rem, 2.1vw, 2.1rem);
  margin-right: auto;
  font: 500 .76rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.kop__nav a {
  position: relative;
  color: var(--tekst-licht);
  text-decoration: none;
  padding-block: .4rem;
  transition: color .3s var(--veer);
}
.kop__nav a::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform .4s var(--veer);
}
.kop__nav a:hover { color: var(--wit); }
.kop__nav a:hover::after { transform: scaleX(1); }
.kop__nav-tel { display: none; }

.kop__acties {
  display: flex;
  align-items: center;
  gap: clamp(.6rem, 1.4vw, 1.2rem);
  margin-left: auto;
}

.kop__tel {
  font: 400 .78rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .04em;
  color: var(--tekst-licht);
  text-decoration: none;
  white-space: nowrap;
}
.kop__tel:hover { color: var(--wit); }

.kop__schakel {
  display: none;
  width: 42px;
  height: 36px;
  padding: 0;
  background: none;
  border: 0;
  cursor: pointer;
  position: relative;
}
.kop__schakel span {
  position: absolute;
  left: 8px;
  right: 8px;
  height: 1.5px;
  background: var(--wit);
  transition: transform .4s var(--veer), opacity .3s var(--veer);
}
.kop__schakel span:first-child { top: 14px; }
.kop__schakel span:last-child { top: 21px; }
.kop__schakel[aria-expanded="true"] span:first-child { transform: translateY(3.5px) rotate(45deg); }
.kop__schakel[aria-expanded="true"] span:last-child { transform: translateY(-3.5px) rotate(-45deg); }

/* ---- de opening: museumlabel op de lijst ------------------------------- */

.opening__kop {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 0 var(--kantlijn) clamp(2.2rem, 5svh, 3.4rem);
  color: #101012;
}

.opening__naam {
  font-size: clamp(2.3rem, 1rem + 3.6vw, 4.5rem);
  letter-spacing: -.03em;
  font-stretch: 116%;
  font-weight: 800;
}

.opening__regel {
  max-width: 64ch;
  margin-top: clamp(.6rem, 1.2vw, .95rem);
  font: 400 clamp(.82rem, .78rem + .18vw, .95rem)/1.5 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  color: rgba(16, 16, 18, .72);
}

.opening__knoppen {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .7rem;
  margin-top: clamp(1rem, 2.2vw, 1.5rem);
}
.opening__kop .knop--vol {
  background: #101012;
  color: var(--papier);
  border-color: #101012;
}
.opening__kop .knop--vol:hover { background: transparent; color: #101012; }
.opening__kop .knop--lijn { color: #101012; border-color: rgba(16, 16, 18, .4); }
.opening__kop .knop--lijn:hover { background: #101012; color: var(--papier); border-color: #101012; }

.opening__slot { padding: 0 var(--kantlijn) clamp(2.6rem, 7svh, 4.6rem); }

.opening__slotzin {
  max-width: 54ch;
  margin: 0 auto;
  text-align: center;
  color: var(--wit);
  font: 500 clamp(.84rem, .78rem + .34vw, 1.12rem)/1.6 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .04em;
  text-shadow: 0 1px 24px rgba(0, 0, 0, .6);
}

/* De wenk staat als zaalkaartje rechtsonder op de lijst, niet onder het
   museumlabel: daar staan de knoppen. */
.opening .opening__wenk {
  left: auto;
  right: var(--kantlijn);
  bottom: 1.6rem;
  transform: none;
  flex-direction: row;
  align-items: center;
  gap: .6rem;
  color: rgba(16, 16, 18, .6);
}
.wenk__woord {
  font: 500 .66rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .24em;
  text-transform: uppercase;
}
.wenk__streep {
  width: 46px;
  height: 1px;
  background: currentColor;
  opacity: .55;
}

/* ---- 01 aanpak --------------------------------------------------------- */

.aanpak { padding-bottom: clamp(3rem, 6vw, 5rem); }

.aanpak__grid {
  display: grid;
  gap: clamp(2.2rem, 4vw, 3.6rem);
}

.pijlers {
  margin-top: clamp(2.2rem, 4vw, 3.4rem);
  border-top: 1px solid var(--lijn);
}

.pijler {
  display: grid;
  grid-template-columns: 3.4rem 1fr;
  gap: .4rem clamp(.8rem, 2vw, 1.6rem);
  padding-block: clamp(1.1rem, 2vw, 1.5rem);
  border-bottom: 1px solid var(--lijn);
}

.pijler__nr {
  grid-row: span 2;
  font: 400 .76rem/1.4 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  color: var(--tekst-zwak);
  letter-spacing: .08em;
}

.pijler__kop {
  font-size: clamp(1.05rem, 1rem + .35vw, 1.35rem);
  letter-spacing: -.01em;
}

.pijler__tekst {
  color: var(--tekst-licht);
  max-width: 44ch;
}

.aanpak__beeld {
  position: relative;
  z-index: 2;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .7rem;
}

.aanpak__beeld .bijschrift {
  order: -1;
  padding-bottom: .55rem;
  border-bottom: 1px solid var(--lijn);
}

.aanpak__beeld img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: 50% 40%;
}

/* ---- 02 proces --------------------------------------------------------- */

.proces { padding-top: clamp(3.4rem, 7vw, 6rem); }

.proces__kop { max-width: 34ch; }

.stappen {
  display: grid;
  gap: 0;
  margin-top: clamp(2.4rem, 5vw, 4rem);
  border-top: 1px solid var(--lijn);
}

.stap {
  padding-block: clamp(1.2rem, 2.2vw, 1.7rem);
  border-bottom: 1px solid var(--lijn);
  display: grid;
  grid-template-columns: 3.4rem 1fr;
  gap: .35rem clamp(.8rem, 2vw, 1.6rem);
  transition: background-color .4s var(--veer);
}

.stap__nr {
  grid-row: span 2;
  font: 400 .76rem/1.4 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  color: var(--tekst-zwak);
  letter-spacing: .08em;
}

.stap__kop {
  font-size: clamp(1.05rem, 1rem + .4vw, 1.4rem);
  text-transform: uppercase;
  letter-spacing: -.005em;
}

.stap__tekst { color: var(--tekst-licht); max-width: 42ch; }

/* ---- statement: full bleed -------------------------------------------- */

.statement {
  position: relative;
  min-height: clamp(26rem, 62svh, 40rem);
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--inkt);
}

.statement__foto {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 42%;
}

.statement__laag {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(to top, rgba(8, 8, 9, .86) 0%, rgba(8, 8, 9, .3) 46%, rgba(8, 8, 9, .5) 100%);
}

.statement__binnen {
  position: relative;
  padding-block: clamp(2.4rem, 6vw, 4.4rem);
}

.statement__zin {
  font-family: inherit;
  font-weight: 800;
  font-stretch: 112%;
  line-height: .94;
  letter-spacing: -.028em;
  font-size: clamp(2rem, 1rem + 4.4vw, 5rem);
  max-width: 20ch;
}

/* ---- 03 aanbod --------------------------------------------------------- */

.aanbod__kop {
  display: grid;
  gap: clamp(1rem, 2.4vw, 2rem);
}
.lood--rechts { margin-top: 0; }

.rijen {
  margin-top: clamp(2.6rem, 5vw, 4.2rem);
  border-top: 1px solid var(--lijn);
}

.rij {
  display: grid;
  gap: clamp(1rem, 2.4vw, 2rem);
  padding-block: clamp(1.8rem, 3.4vw, 2.8rem);
  border-bottom: 1px solid var(--lijn);
  transition: background-color .5s var(--veer);
}
.rij:hover { background: rgba(255, 255, 255, .028); }
.rij:hover .rij__nr { color: var(--wit); }

.rij__nr {
  font: 400 .76rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .08em;
  color: var(--tekst-zwak);
  margin-bottom: .9rem;
  transition: color .35s var(--veer);
}

.rij__kop {
  font-size: clamp(1.5rem, 1.1rem + 1.5vw, 2.4rem);
  text-transform: uppercase;
}

.rij__meta {
  margin-top: .6rem;
  font: 400 .78rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .08em;
  color: var(--tekst-zwak);
}

.rij__link {
  display: inline-block;
  margin-top: 1.1rem;
  font: 500 .76rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .12em;
  text-transform: uppercase;
  text-decoration: none;
  padding-bottom: .3rem;
  border-bottom: 1px solid var(--lijn);
  transition: border-color .35s var(--veer), color .35s var(--veer);
}
.rij__link:hover { border-color: currentColor; }

.rij__inhoud {
  display: grid;
  gap: clamp(1.4rem, 2.6vw, 2.4rem);
}

.les__kop {
  font-size: 1.02rem;
  text-transform: uppercase;
  letter-spacing: .02em;
  margin-bottom: .55rem;
}

.les__claim {
  font-size: clamp(1.05rem, 1rem + .5vw, 1.35rem);
  font-weight: 600;
  line-height: 1.3;
  margin-bottom: .7rem;
  letter-spacing: -.01em;
}

.les__tekst { color: var(--tekst-licht); max-width: 62ch; }

/* ---- de band ----------------------------------------------------------- */

.band {
  background: var(--papier);
  color: #101012;
  border-block: 1px solid rgba(16, 16, 18, .14);
  overflow: hidden;
  padding-block: clamp(.9rem, 1.8vw, 1.4rem);
}

.band__spoor {
  display: flex;
  width: max-content;
  gap: 2.5rem;
  animation: schuiven 44s linear infinite;
}

.band__zin {
  font: 500 clamp(.9rem, .84rem + .4vw, 1.3rem)/1.3 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .02em;
  white-space: nowrap;
}

@keyframes schuiven {
  from { transform: translateX(0); }
  to { transform: translateX(calc(-100% / 3 - .833rem)); }
}

/* ---- 04 het team ------------------------------------------------------- */

.team__kop {
  display: grid;
  gap: clamp(1rem, 2.4vw, 2rem);
}

.coaches {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(1.4rem, 3vw, 2.6rem) clamp(1rem, 2.4vw, 2rem);
  margin-top: clamp(2.4rem, 5vw, 4rem);
}

.coach__lijst {
  background: var(--wit);
  padding: clamp(.5rem, 1.1vw, .85rem);
  box-shadow: 0 1px 0 rgba(16, 16, 18, .12), 0 18px 40px -28px rgba(16, 16, 18, .5);
  transition: transform .55s var(--veer), box-shadow .55s var(--veer);
}

.coach:hover .coach__lijst {
  transform: translateY(-5px);
  box-shadow: 0 1px 0 rgba(16, 16, 18, .14), 0 26px 50px -26px rgba(16, 16, 18, .55);
}

.coach__lijst img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  object-position: 50% 22%;
  filter: grayscale(1) contrast(1.04);
  transition: filter .6s var(--veer);
}
.coach:hover .coach__lijst img { filter: grayscale(0) contrast(1); }

.coach__naam {
  margin-top: 1rem;
  font-size: clamp(1.1rem, 1rem + .5vw, 1.45rem);
  text-transform: uppercase;
}

.coach__rol {
  margin-top: .3rem;
  font: 400 .76rem/1.4 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .08em;
  color: var(--tekst-donker-zwak);
}

/* ---- scharnier: papier naar inkt --------------------------------------- */

.scharnier {
  background: linear-gradient(to bottom, var(--papier) 0 38%, var(--inkt) 38% 100%);
  padding-block: 0 clamp(2.4rem, 5vw, 4rem);
}

.scharnier__figuur {
  width: min(100% - 2 * var(--kantlijn), 1080px);
  margin: 0 auto;
  display: grid;
  gap: .7rem;
}

.scharnier__figuur img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

/* ---- 05 de ruimte ------------------------------------------------------ */

.ruimte__kop {
  display: grid;
  gap: clamp(1rem, 2.4vw, 2rem);
}

.mozaiek {
  margin-top: clamp(2.2rem, 4.6vw, 3.6rem);
  column-gap: clamp(.9rem, 2vw, 1.6rem);
}

.tegel {
  margin: 0 0 clamp(1.4rem, 2.6vw, 2.2rem);
  break-inside: avoid;
}

.tegel .bijschrift { margin-top: .85rem; }

.tegel img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0), 0 0 0 7px rgba(255, 255, 255, 0);
  transition: box-shadow .55s var(--veer), transform .8s var(--veer);
}

/* dezelfde snijrand als de passe-partout van de opening */
.tegel:hover img {
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .32), 0 0 0 7px rgba(255, 255, 255, .07);
}

.tegel--hoog img { aspect-ratio: 4 / 5; }
.tegel--breed img { aspect-ratio: 16 / 10; }

/* ---- 06 intake + contact ----------------------------------------------- */

.intake__grid {
  display: grid;
  gap: clamp(2.4rem, 5vw, 4rem);
}

.intake__belofte {
  margin-top: 1rem;
  max-width: 44ch;
  color: var(--tekst-zwak);
}

.formulier {
  margin-top: clamp(2rem, 4vw, 3rem);
  max-width: 34rem;
}

.formulier__kop {
  font: 500 .74rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--tekst-zwak);
  padding-bottom: .9rem;
  border-bottom: 1px solid var(--lijn);
}

.veld { display: grid; gap: .35rem; padding-block: 1rem; border-bottom: 1px solid var(--lijn-fijn); }

.veld label {
  font: 400 .74rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--tekst-zwak);
}

.veld input,
.veld textarea {
  width: 100%;
  background: transparent;
  border: 0;
  padding: .25rem 0;
  color: var(--wit);
  font-family: inherit;
  font-size: 1.02rem;
  line-height: 1.5;
  resize: vertical;
}
.veld input:focus, .veld textarea:focus { outline: none; }
.veld:focus-within { border-color: var(--wit); }

.formulier__klein,
.formulier__demo {
  margin-top: .9rem;
  font: 400 .78rem/1.5 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  color: var(--tekst-zwak);
}
.formulier__demo { color: rgba(255, 255, 255, .55); }

.dank {
  margin-top: clamp(2rem, 4vw, 3rem);
  max-width: 34rem;
  padding: clamp(1.4rem, 3vw, 2.2rem);
  border: 1px solid var(--lijn);
}
.dank__kop { font-size: clamp(1.3rem, 1.1rem + .9vw, 1.9rem); text-transform: uppercase; }
.dank__tekst { margin-top: .8rem; color: var(--tekst-licht); }
.dank__demo { margin-top: .8rem; font: 400 .78rem/1.5 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace; color: var(--tekst-zwak); }
.dank .knop { margin-top: 1.4rem; }

.kaartje {
  display: grid;
  gap: clamp(1.6rem, 3vw, 2.2rem);
  align-content: start;
  border-top: 1px solid var(--lijn);
  padding-top: clamp(1.4rem, 3vw, 2rem);
}

.kaartje__blok { display: grid; gap: .3rem; justify-items: start; }

.kaartje__kop {
  font: 500 .72rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--tekst-zwak);
  margin-bottom: .55rem;
}

.kaartje__regel { color: var(--tekst-licht); }
.kaartje__regel--dun { color: var(--tekst-zwak); }

.kaartje__groot {
  font-size: clamp(1.25rem, 1.1rem + .8vw, 1.7rem);
  font-weight: 700;
  font-stretch: 110%;
  letter-spacing: -.015em;
  text-decoration: none;
  line-height: 1.2;
}
.kaartje__groot:hover { opacity: .75; }

.kaartje__link {
  margin-top: .5rem;
  font: 400 .84rem/1.4 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  color: var(--tekst-licht);
  text-decoration: none;
  border-bottom: 1px solid var(--lijn);
  padding-bottom: .22rem;
  transition: color .3s var(--veer), border-color .3s var(--veer);
}
.kaartje__link:hover { color: var(--wit); border-color: currentColor; }

.tijden {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .3rem 1.4rem;
  margin: 0;
  font: 400 .88rem/1.5 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
}
.tijden dt { color: var(--tekst-zwak); }
.tijden dd { margin: 0; color: var(--tekst-licht); }

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

.voet {
  background: var(--inkt);
  border-top: 1px solid var(--lijn-fijn);
  padding-top: clamp(2.6rem, 5vw, 4rem);
  padding-bottom: clamp(1.6rem, 3vw, 2.4rem);
}

.voet__grid {
  display: grid;
  gap: clamp(1.8rem, 4vw, 3rem);
  padding-bottom: clamp(2rem, 4vw, 3rem);
}

.voet__merk img { width: auto; height: 34px; }
.voet__zin { margin-top: 1.1rem; font-weight: 700; font-stretch: 108%; }
.voet__plaats { color: var(--tekst-zwak); font: 400 .82rem/1.5 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace; }

.voet__kolom { display: grid; gap: .25rem; justify-items: start; align-content: start; }

.voet__kop {
  font: 500 .7rem/1 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--tekst-zwak);
  margin-bottom: .7rem;
}

.voet__regel { color: var(--tekst-licht); font-size: .95rem; }

.voet__link {
  color: var(--tekst-licht);
  text-decoration: none;
  font-size: .95rem;
  transition: color .3s var(--veer);
}
.voet__link:hover { color: var(--wit); }

.voet__onder {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: .5rem 2rem;
  padding-top: clamp(1.2rem, 2.4vw, 1.8rem);
  border-top: 1px solid var(--lijn-fijn);
}

.voet__klein {
  font: 400 .76rem/1.5 ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;
  color: rgba(255, 255, 255, .56);
}

/* ===========================================================================
   Breder
   =========================================================================== */

@media (min-width: 700px) {
  .coaches { grid-template-columns: repeat(4, 1fr); }
  .coach:nth-child(even) { margin-top: clamp(1.4rem, 3vw, 3rem); }

  .mozaiek { columns: 2; }

  .rij__inhoud { grid-template-columns: repeat(2, 1fr); }
  .rij:nth-child(2) .rij__inhoud,
  .rij:nth-child(3) .rij__inhoud { grid-template-columns: minmax(0, 1fr); max-width: 62ch; }
}

@media (min-width: 1000px) {
  .aanpak__grid {
    grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr);
    align-items: start;
    gap: clamp(2.5rem, 5vw, 5rem);
  }

  .aanpak { padding-bottom: 0; }
  .aanpak__tekst { padding-bottom: var(--ritme); }

  /* de foto hangt met zijn onderkant door de kleurgrens heen, zodat papier en
     inkt in elkaar overlopen in plaats van op elkaar te stapelen */
  .aanpak__beeld {
    align-self: end;
    margin-bottom: calc(-1 * clamp(3rem, 6.5vw, 6rem));
  }
  .aanpak__beeld img { aspect-ratio: 3 / 4.3; }

  .proces { padding-top: clamp(4.5rem, 9vw, 8rem); }

  .stappen {
    grid-template-columns: repeat(4, 1fr);
    border-bottom: 1px solid var(--lijn);
  }
  .stap {
    border-bottom: 0;
    border-right: 1px solid var(--lijn);
    padding: clamp(1.4rem, 2.2vw, 2rem) clamp(1rem, 1.8vw, 1.6rem);
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
  }
  .stap:first-child { padding-left: 0; }
  .stap:last-child { border-right: 0; }
  .stap__nr { grid-row: auto; margin-bottom: 1.6rem; }
  .stap:hover { background: rgba(255, 255, 255, .03); }

  .aanbod__kop {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
    align-items: end;
    column-gap: clamp(2rem, 4vw, 4rem);
  }
  .aanbod__kop .oog { grid-column: 1 / -1; margin-bottom: 0; }
  .lood--rechts { max-width: 44ch; padding-bottom: .4rem; }

  .rij { grid-template-columns: minmax(0, .9fr) minmax(0, 2.1fr); column-gap: 0; }
  .rij__inhoud {
    border-left: 1px solid var(--lijn);
    padding-left: clamp(2rem, 4vw, 4rem);
  }
  .rij__kant { padding-right: clamp(1.5rem, 3vw, 3rem); }

  .team__kop,
  .ruimte__kop {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
    align-items: end;
    column-gap: clamp(2rem, 4vw, 4rem);
  }
  .team__kop .oog,
  .ruimte__kop .oog { grid-column: 1 / -1; margin-bottom: 0; }

  .intake__grid {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
    column-gap: clamp(3rem, 6vw, 6rem);
  }
  .kaartje { border-top: 0; padding-top: 0; padding-left: clamp(2rem, 4vw, 4rem); border-left: 1px solid var(--lijn); }

  .voet__grid { grid-template-columns: 1.5fr repeat(3, 1fr); }
}

/* ===========================================================================
   Smal
   =========================================================================== */

@media (max-width: 1099px) {
  .kop__tel { display: none; }
}

@media (max-width: 959px) {
  .kop__nav {
    position: fixed;
    inset: 0;
    z-index: 190;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    gap: 1.6rem;
    margin: 0;
    padding: 5rem var(--kantlijn) 3rem;
    background: var(--inkt);
    font-size: 1.1rem;
    letter-spacing: .08em;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity .4s var(--veer), transform .4s var(--veer), visibility .4s;
  }
  .kop__nav a { color: var(--wit); }
  .kop__nav-tel { display: block; font-size: .9rem; color: var(--tekst-licht); }
  .menu-open .kop__nav { opacity: 1; visibility: visible; transform: none; }
  .menu-open { overflow: hidden; }

  .kop__schakel { display: block; position: relative; z-index: 210; }
  .kop__tel { display: none; }
  .kop__binnen { padding-block: .55rem; }
  .kop__merk img { height: 26px; }
  .kop__merk, .kop__acties { position: relative; z-index: 200; }
}

@media (max-width: 699px) {
  .opening__kop { padding-bottom: clamp(3.2rem, 9svh, 5rem); }
  .opening__knoppen { flex-direction: column; align-items: stretch; width: min(100%, 22rem); }
  .opening__regel { font-size: .84rem; }
  .statement__zin { max-width: 14ch; }
  .tegel--breed img { aspect-ratio: 3 / 2; }
}

/* ===========================================================================
   Onthullen
   =========================================================================== */

.js [data-reveal],
.js [data-reveal-group] > * {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .8s var(--veer), transform .8s var(--veer);
}

.js [data-reveal].is-in,
.js [data-reveal-group].is-in > * {
  opacity: 1;
  transform: none;
}

.js [data-reveal-group] > * { transition-delay: calc(var(--i, 0) * 90ms); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js [data-reveal],
  .js [data-reveal-group] > * {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .band__spoor { animation: none; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
}
