/* ============================================================
   HETT Veranda — stylesheet
   Gebaseerd op design_handoff_hett_veranda/tokens.css (richting 2a, definitief).

   Het ontwerp gebruikt inline styles; die zijn hier omgezet naar componentklassen.
   Reden: inline styles zijn niet te thematiseren, niet te overschrijven en niet te
   onderhouden. Alle waarden komen letterlijk uit het tokenbestand.
   ============================================================ */

/* ---------------------------------------------------------- tokens */

:root {
  --hett-orange: #FF7300;
  --hett-orange-hover: #E56700;
  --hett-orange-text: #C24E00;

  --hett-ink: #14161A;
  --hett-ink-2: #23262B;
  --hett-ink-3: #2C2F35;
  --hett-body: #4A4E57;
  --hett-muted: #7A7E88;
  --hett-line: #ECE8E2;
  --hett-line-strong: #D9D5CF;
  --hett-line-input: #E4E0DA;
  --hett-surface: #FAFAF8;
  --hett-surface-2: #F4F3F0;
  --hett-sand: #FFF4EA;
  --hett-tint: #FFF7F0;
  --hett-photo-bg: #E9E4DD;

  --hett-on-dark: #FFFFFF;
  --hett-on-dark-body: #B7BAC1;
  --hett-on-dark-muted: #9AA0AA;
  --hett-on-dark-line: #262A31;

  --hett-star: #FFB400;

  --font-sans: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;

  --fs-hero: 50px;      --lh-hero: 1.05;  --ls-hero: -0.035em;
  --fs-hero-mark: 43px; --lh-hero-mark: 1.07;
  --fs-h1-page: 38px;   --lh-h1-page: 1.12;
  --fs-h2: 31px;        --lh-h2: 1.20;    --ls-h2: -0.03em;
  --fs-h2-sm: 29px;
  --fs-h3: 23px;        --lh-h3: 1.25;
  --fs-h4: 20px;        --lh-h4: 1.30;
  --fs-eyebrow: 14px;   --ls-eyebrow: 0.12em;
  --fs-eyebrow-sec: 13px; --ls-eyebrow-sec: 0.16em;
  --fs-lead: 18px;      --lh-lead: 1.60;
  --fs-intro: 18px;     --lh-intro: 1.70;
  --fs-body: 17px;      --lh-body: 1.6;
  --fs-ui: 16px;
  --fs-meta: 15px;      --lh-meta: 1.55;
  --fs-fine: 13px;

  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px; --sp-4: 16px; --sp-5: 20px;
  --sp-6: 24px; --sp-7: 28px; --sp-8: 32px; --sp-9: 36px; --sp-10: 44px;
  --sp-11: 52px; --sp-12: 64px; --sp-13: 84px; --sp-14: 88px;

  --page-x: 36px;
  --page-x-mobile: 16px;
  --section-y: 68px;
  --section-y-mobile: 34px;
  --panel-pad: clamp(20px, 4vw, 44px);
  --grid-gap: 22px;
  --grid-gap-wide: 44px;

  --r-hero: 20px;
  --r-panel: 20px;
  --r-card: 16px;
  --r-media: 14px;
  --r-media-lg: 18px;
  --r-input: 12px;
  --r-btn-square: 14px;
  --r-pill: 999px;

  --shadow-menu: 0 14px 40px rgba(20, 22, 26, .10);

  --ease: cubic-bezier(.2, 0, .2, 1);
  --dur-fast: 150ms;
  --dur: 200ms;

  --content-max: 1440px;

  /* Hoogte van de menubalk. Staat als variabele omdat de hero er precies
     zoveel bovenruimte bij krijgt als de balk eroverheen ligt. */
  --hett-navhoogte: 102px;
}

@media (max-width: 640px) {
  :root {
    --fs-hero: 38px;
    --fs-hero-mark: 32px;
    --fs-h1-page: 30px;
    --fs-h2: 26px;
    --fs-h2-sm: 24px;
    --fs-h3: 21px;
    --fs-h4: 19px;
    --fs-lead: 17px;
    --fs-intro: 16px;
    --fs-body: 16px;
    --page-x: var(--page-x-mobile);
    --section-y: var(--section-y-mobile);
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}

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

/* Eén element dat over de rand steekt maakt het document breder dan het scherm, en
   een telefoon zoomt dan uit om alles te laten passen — de pagina lijkt ineens
   verkleind. `clip` snijdt dat af zonder een scrollcontainer te maken; met
   `hidden` zou position: sticky in de header het niet meer doen. */
html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}
html,
body {
	overflow-x: clip;
	max-width: 100%;
}

/* Zonder border-box lopen knoppen met width:100% plus padding buiten hun kolom.
   Hello Elementor zet dit zelf niet op alles, dus binnen onze eigen scope wel. */
.hett,
.hett *,
.hett *::before,
.hett *::after { box-sizing: border-box; }

.hett-scope,
body.hett {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--hett-body);
  background: #fff;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* :where() houdt de specificiteit op nul. Zonder dat wint `.hett a` van
   `.hett-btn--light` en `.hett h1` van `.hett-hero__title`, met witte tekst op een
   witte knop en een donkere kop op een donker paneel tot gevolg. */
.hett :where(h1, h2, h3, h4) { color: var(--hett-ink); font-weight: 800; margin: 0; }
.hett :where(p) { margin: 0; }
.hett :where(a) { color: inherit; text-decoration: none; }
.hett :where(img) { max-width: 100%; height: auto; display: block; }

.hett-wrap {
  max-width: var(--content-max);
  margin-inline: auto;
  padding-inline: var(--page-x);
}

.hett-section { padding-block: var(--section-y); }
.hett-section--tight { padding-block: calc(var(--section-y) * .6); }

.hett-eyebrow {
  font-size: var(--fs-eyebrow);
  font-weight: 800;
  line-height: 1;
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--hett-orange);
}

.hett-eyebrow--sec {
  font-size: var(--fs-eyebrow-sec);
  font-weight: 700;
  letter-spacing: var(--ls-eyebrow-sec);
  color: var(--hett-muted);
}

.hett-h1 { font-size: var(--fs-h1-page); line-height: var(--lh-h1-page); letter-spacing: -.035em; text-wrap: pretty; }
.hett-h2 { font-size: var(--fs-h2); line-height: var(--lh-h2); letter-spacing: var(--ls-h2); text-wrap: pretty; }
.hett-h3 { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: -.02em; }
.hett-h4 { font-size: var(--fs-h4); line-height: var(--lh-h4); letter-spacing: -.02em; }
.hett-intro { font-size: var(--fs-intro); line-height: var(--lh-intro); color: var(--hett-body); max-width: 62ch; }
.hett-lead { font-size: var(--fs-lead); line-height: var(--lh-lead); font-weight: 500; }
.hett-meta { font-size: var(--fs-meta); line-height: var(--lh-meta); font-weight: 500; color: var(--hett-muted); }
.hett-fine { font-size: var(--fs-fine); font-weight: 600; color: var(--hett-muted); }

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

.hett-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 15px 26px;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  font: 700 var(--fs-ui)/1 var(--font-sans);
  cursor: pointer;
  transition: background-color var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease);
}

.hett-btn--primary { background: var(--hett-orange); color: #fff; }
.hett-btn--primary:hover { background: var(--hett-orange-hover); color: #fff; }

.hett-btn--dark { background: var(--hett-ink); color: #fff; }
.hett-btn--dark:hover { background: #000; color: #fff; }

.hett-btn--light { background: #fff; color: var(--hett-ink); }
.hett-btn--light:hover { background: var(--hett-surface); }

.hett-btn--outline { background: transparent; border-color: var(--hett-line-strong); color: var(--hett-ink); }
.hett-btn--outline:hover { border-color: var(--hett-ink); }

.hett-btn--on-dark { background: transparent; border-color: rgba(255,255,255,.28); color: #fff; }
.hett-btn--on-dark:hover { background: rgba(255,255,255,.10); }

.hett-btn--square { border-radius: var(--r-btn-square); }
.hett-btn--block { display: flex; width: 100%; padding-inline: 15px; }

.hett-btn:focus-visible,
.hett-link:focus-visible {
  outline: 3px solid var(--hett-orange);
  outline-offset: 2px;
}

.hett-link { font: 700 var(--fs-ui)/1 var(--font-sans); color: var(--hett-ink); transition: color var(--dur) var(--ease); }
.hett-link:hover { color: var(--hett-orange); }

/* ---------------------------------------------------------- topbalk */

/* De z-index staat hoger dan die van de header eronder, en niet zomaar: de
   header heeft `position: relative; z-index: 40` en maakt daarmee een eigen
   stapelcontext. De topbalk stond in de gewone stroom, dus alles wat daarin
   uitklapt — de taalwissel — werd door de header overschilderd, hoe hoog de
   z-index van dat uitklapmenu zelf ook stond. Die telt namelijk alleen mee
   binnen zijn eigen context. Elkaar overlappen doen ze verder nooit: tegen de
   tijd dat de sticky header vastklikt is de topbalk het scherm al uit. */
.hett-topbar {
  position: relative;
  z-index: 50;
  border-bottom: 1px solid var(--hett-line);
  background: #fff;
  font-size: var(--fs-meta);
}

/* ----------------------------------------------------------- taalbalk

   "Diese Seite gibt es auch auf Deutsch." Boven de topbalk, in de gewone
   stroom, alleen voor wie een andere taal in zijn browser heeft staan.

   Waarom bovenaan en niet zwevend onderin: onderin zit op een telefoon al de
   actiebalk, en zwevend zou hij over het toestemmingsvenster van Complianz
   heen of eronder vallen. Boven de pagina duwt hij alles netjes één strook
   naar beneden, en omdat het scriptje dat hem tevoorschijn haalt direct onder
   de markup staat gebeurt dat vóór de eerste tekening — er verspringt niets.

   Oranje tint en geen inkt: het is een aanbod, geen waarschuwing. */
.hett-taalbalk {
  display: block;
  background: var(--hett-tint);
  border-bottom: 1px solid rgba(255, 115, 0, .22);
  font-size: var(--fs-meta);
  color: var(--hett-ink);
}

/* Zonder deze regel wint `display: block` hierboven van het hidden-attribuut en
   staan alle drie de balken tegelijk in beeld. */
.hett-taalbalk[hidden] { display: none; }

.hett-taalbalk__inner {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  min-height: 46px;
  padding-block: 8px;
}
.hett-taalbalk__vlag { display: flex; flex: none; }
.hett-taalbalk__tekst { font-weight: 600; min-width: 0; }

.hett-taalbalk__knop {
  display: inline-flex;
  align-items: center;
  flex: none;
  min-height: 32px;
  padding: 6px 14px;
  border-radius: var(--r-pill);
  background: var(--hett-orange);
  color: #fff;
  font-weight: 700;
  white-space: nowrap;
  transition: background var(--dur) var(--ease);
}
.hett-taalbalk__knop:hover { background: var(--hett-orange-hover); color: #fff; }
.hett-taalbalk__knop:focus-visible { outline: 2px solid var(--hett-ink); outline-offset: 2px; }

/* Het kruisje staat rechts en duwt zichzelf daarheen, zodat de tekst en de knop
   bij elkaar blijven staan ook als de balk breder is dan ze nodig hebben. */
.hett-taalbalk__sluit {
  margin-inline-start: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 32px;
  height: 32px;
  /* Zonder deze regel tekent de browser zijn eigen `2px outset` om de knop en
     krijgt het kruisje een grijze ring die harder roept dan de oranje knop
     ernaast. Hello Elementor haalt hem meestal weg, maar daar wil je niet van
     afhangen. */
  border: 0;
  cursor: pointer;
  border-radius: var(--r-pill);
  color: var(--hett-muted);
  transition: color var(--dur) var(--ease), background var(--dur) var(--ease);
}

@media (max-width: 700px) {
  /* Op een telefoon past de zin niet naast de knop. Dan de zin op de eerste
     regel met het kruisje erachter, en de knop eronder over de volle breedte —
     daar hoef je niet naar te mikken. */
  .hett-taalbalk__inner {
    flex-wrap: wrap;
    row-gap: 8px;
    padding-block: 8px;
    min-height: 0;
  }
  /* flex-basis 0 en niet auto: met auto claimt de zin zijn volle tekstbreedte,
     duwt hij het kruisje naar de volgende regel en wordt de balk een blok van
     136 pixels. Zo krimpt hij mee en staat het kruisje ernaast. */
  .hett-taalbalk__tekst { flex: 1 1 0; min-width: 0; line-height: 1.35; }
  .hett-taalbalk__sluit { order: 1; }
  .hett-taalbalk__knop { order: 2; flex: 1 0 100%; justify-content: center; min-height: 42px; }
}

/* De USP's staan links, de reviews en de contactpictogrammen rechts.

   Het rechterblok stond hier absoluut, zodat de USP-rij niet zou meeschuiven
   met de breedte ervan. Dat werkte tot er drie dingen bij kwamen — de
   contactpictogrammen, het cijfer vóór de sterren en een langer reviewaantal —
   en toen bleek waar absoluut positioneren altijd op stukloopt: het blok neemt
   geen ruimte in, dus de USP-rij weet niet dat het er is en schuift er gewoon
   onderdoor. Vanaf 1280 px las je "Levertijd 5 tot 10 werkdag24 reviews".

   Nu staat alles in de normale stroom en duwt het rechterblok zichzelf met
   `margin-inline-start: auto` naar de rand. Overlappen kan dan niet meer; wat
   wél kan is dat het te krap wordt, en dat vangen de twee breekpunten verderop
   op door de laatste USP's weg te laten. Die getallen zijn gemeten, niet
   gegokt: drie USP's passen vanaf 1350, twee vanaf 1070. */
.hett-topbar__inner {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: var(--sp-6);
  min-height: 46px;
  padding-block: 8px;
  flex-wrap: nowrap;
}

.hett-topbar__right {
  margin-inline-start: auto;
}

/* Vangnet voor een USP-tekst die langer wordt dan waar de breekpunten op
   gemeten zijn: dan wordt de laatste afgeknipt in plaats van dat de balk twee
   regels hoog wordt of de tekst alsnog onder het cijfer doorschuift. */
.hett-topbar .hett-ticker {
  flex: 0 1 auto;
  min-width: 0;
  flex-wrap: nowrap;
  overflow: hidden;
}

@media (max-width: 1360px) {
  .hett-topbar .hett-ticker__item:nth-child(n+3) { display: none; }
}

@media (max-width: 1120px) {
  .hett-topbar .hett-ticker__item:nth-child(n+2) { display: none; }
}

.hett-topbar__list { display: flex; gap: var(--sp-6); flex-wrap: wrap; margin: 0; padding: 0; list-style: none; }
.hett-topbar__item { display: flex; align-items: center; gap: 8px; color: var(--hett-body); font-weight: 500; }
.hett-topbar__check { color: var(--hett-orange); flex: none; }
.hett-topbar__right { display: flex; align-items: center; gap: var(--sp-5); flex-wrap: wrap; min-width: 0; }
.hett-topbar__stars { color: var(--hett-star); letter-spacing: 1px; }

/* De beoordeling gaat naar het Google-profiel. Sterren en cijfer zitten in één
   anker, zodat er één raakvlak is en niet twee kleintjes naast elkaar. */
.hett-topbar__score {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 8px;
  margin: -4px -8px;
  border-radius: var(--r-pill);
  transition: background var(--dur) var(--ease);
}
.hett-topbar__score:hover { background: var(--hett-surface-2); }
.hett-topbar__score:hover .hett-topbar__reviews { color: var(--hett-orange-text); }
.hett-topbar__score:focus-visible { outline: 2px solid var(--hett-orange); outline-offset: 2px; }

/* Hello Elementor levert deze klasse zelf ook, maar daar wil je niet van
   afhangen: zonder deze regel staat de toelichting voor schermlezers gewoon
   zichtbaar in de balk. */
.hett .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.hett-topbar__reviews { font-weight: 700; color: var(--hett-ink); }

/* Het cijfer staat voor de sterren, zoals Google het zelf ook zet: eerst het
   getal, dan het beeld dat het herhaalt. Beide komen uit de Places-API zodra de
   plaats-id staat — een getal dat je met de hand bijhoudt klopt precies één dag. */
.hett-topbar__cijfer { font-weight: 800; color: var(--hett-ink); }

/* Showroom, e-mail en telefoon als pictogram, rechts in de balk.

   Alleen het icoon en geen tekst: de topbalk is één regel hoog, en een adres
   plus een e-mailadres plus een nummer maakt die regel op een laptop al vol —
   dan verspringt de rest. Wie de tekst er toch bij wil zet de schakelaar om in
   Elementor. De uitleg voor een schermlezer staat er altijd bij; een svg zonder
   tekst is voor die bezoeker een lege link.

   De streep links scheidt ze van de beoordeling. Zonder die streep lezen het
   cijfer en de drie iconen als één groepje, en dat zijn het niet. */
.hett-topbar__contact {
  display: flex;
  align-items: center;
  gap: 2px;
  padding-inline-start: var(--sp-4);
  border-inline-start: 1px solid var(--hett-line);
}
.hett-topbar__ico {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 32px;
  padding: 6px 8px;
  border-radius: var(--r-pill);
  color: var(--hett-muted);
  transition: color var(--dur) var(--ease), background var(--dur) var(--ease);
}
.hett-topbar__ico svg { flex: none; }
a.hett-topbar__ico:hover { color: var(--hett-orange-text); background: var(--hett-surface-2); }
a.hett-topbar__ico:focus-visible { outline: 2px solid var(--hett-orange); outline-offset: 2px; }
.hett-topbar__icotekst { display: none; }
.hett-topbar__contact--tekst .hett-topbar__icotekst {
  display: inline;
  font-weight: 600;
  color: var(--hett-body);
}
.hett-topbar__contact--tekst a.hett-topbar__ico:hover .hett-topbar__icotekst { color: var(--hett-orange-text); }

/* De talenrij onderin het uitschuifmenu.

   Zie de toelichting in de header-widget: een uitklapper die onderaan een
   schuifbaar paneel opent valt buiten beeld, en met drie talen kost de rij
   evenveel ruimte als de knop die ze zou verbergen.

   Vlag plus landcode en niet de hele taalnaam: op een telefoon van 390 pixels
   houdt elk vakje zo'n zeventig pixels tekstruimte over, en "Nederlands" past
   daar niet in zonder af te kappen. De volle naam staat er wel, onzichtbaar,
   voor wie het scherm niet ziet. */
.hett-langrij { display: flex; gap: 8px; padding-top: 4px; }
.hett-langrij__item {
  flex: 1 1 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 0;
  min-height: 44px;
  padding: 8px 10px;
  border: 1px solid var(--hett-line);
  border-radius: var(--r-input);
  font-weight: 700;
  font-size: 14px;
  color: var(--hett-body);
}
.hett-langrij__item svg,
.hett-langrij__item img { flex: none; }
.hett-langrij__code { letter-spacing: .04em; }
.hett-langrij__item.is-active {
  border-color: var(--hett-orange);
  background: var(--hett-tint);
  color: var(--hett-orange-text);
}

/* De oude, uitgeklapte talenrij is vervangen door de uitklapper verderop in dit
   bestand. Wat hier stond zette elke link in hoofdletters — ook de taalnamen in
   het menu — en is daarom weg. */

/* ---------------------------------------------------------- header */

.hett-header { background: #fff; border-bottom: 1px solid var(--hett-line); position: relative; z-index: 40; }
.hett-header--sticky { position: sticky; top: 0; }
.hett-header__inner { display: flex; align-items: center; gap: var(--sp-8); min-height: var(--hett-navhoogte); }

.hett-logo { font: 800 22px/1 var(--font-sans); color: var(--hett-ink); letter-spacing: -.03em; flex: none; }
.hett-logo span { font-weight: 400; }
.hett-logo img { height: 38px; width: auto; max-width: 100%; }

.hett-nav { display: flex; align-items: center; gap: var(--sp-6); margin-inline-start: var(--sp-4); }
.hett-nav__link {
  position: relative;
  padding-block: 6px;
  font: 700 var(--fs-ui)/1.2 var(--font-sans);
  color: var(--hett-ink);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.hett-nav__link::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -2px;
  height: 2px;
  background: var(--hett-orange);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--dur) var(--ease);
}
.hett-nav__link:hover::after,
.hett-nav__item.is-current > .hett-nav__link::after { transform: scaleX(1); }

.hett-nav__item { position: relative; }

/* Onzichtbare brug tussen het menu-item en de uitklapper.
   Zonder dit valt de muis door de tussenruimte en sluit het menu voordat je een
   subitem kunt aanklikken. De brug hoort bij het item, niet bij het menu — dan
   blijft het uitklapmenu zelf één schoon wit paneel. */
.hett-nav__item--has-sub::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  height: 26px;
  display: none;
}

.hett-nav__item--has-sub:hover::after,
.hett-nav__item--has-sub.is-open::after { display: block; }

.hett-nav__sub {
  position: absolute;
  top: calc(100% + 26px);
  left: -18px;
  min-width: 250px;
  padding: 10px;
  background: #fff;
  border: 1px solid var(--hett-line);
  border-radius: var(--r-panel);
  box-shadow: var(--shadow-menu);
  display: none;
  margin: 0;
  list-style: none;
  z-index: 50;
}

.hett-nav__item.is-open > .hett-nav__sub { display: block; }

.hett-nav__sub a {
  display: block;
  padding: 11px 14px;
  border-radius: 12px;
  font-weight: 600;
  color: var(--hett-ink);
  white-space: nowrap;
}

.hett-nav__sub a:hover { background: var(--hett-surface); }

.hett-header__actions { margin-inline-start: auto; display: flex; align-items: center; gap: var(--sp-4); }

.hett-burger {
  display: none;
  width: 46px; height: 46px;
  align-items: center; justify-content: center;
  border: 1px solid var(--hett-line-strong);
  border-radius: 12px;
  background: #fff;
  color: var(--hett-ink);
  cursor: pointer;
}

.hett-drawer { position: fixed; inset: 0; z-index: 60; display: none; }
.hett-drawer.is-open { display: block; }
.hett-drawer__scrim { position: absolute; inset: 0; background: rgba(20,22,26,.5); }
.hett-drawer__panel {
  position: absolute; inset-block: 0; inset-inline-start: 0;
  width: min(86%, 380px);
  background: #fff;
  display: flex; flex-direction: column;
  overflow-y: auto;
}
.hett-drawer__head { display: flex; align-items: center; justify-content: space-between; padding: 18px var(--page-x-mobile); border-bottom: 1px solid var(--hett-line); }
.hett-drawer__nav { padding: 8px 0; }
.hett-drawer__nav a { display: flex; align-items: center; justify-content: space-between; padding: 16px var(--page-x-mobile); font: 700 17px/1.3 var(--font-sans); color: var(--hett-ink); border-bottom: 1px solid var(--hett-line); }
.hett-drawer__foot { margin-top: auto; padding: 20px var(--page-x-mobile) 28px; display: grid; gap: 10px; }

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

.hett-hero { padding: 0 28px; }
.hett-hero__panel {
  position: relative;
  border-radius: var(--r-hero);
  background: var(--hett-ink-3);
  color: #fff;
  overflow: hidden;
  min-height: 560px;
  display: flex;
  align-items: center;
}
.hett-hero__media { position: absolute; inset: 0; }
.hett-hero__media img { width: 100%; height: 100%; object-fit: cover; }
.hett-hero__scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(20,22,26,.82) 0%, rgba(20,22,26,.62) 45%, rgba(20,22,26,.25) 100%); }
.hett-hero__body { position: relative; padding: var(--panel-pad); max-width: 640px; }
.hett-hero__title { font-size: var(--fs-hero); line-height: var(--lh-hero); letter-spacing: var(--ls-hero); color: #fff; margin: 14px 0 0; text-wrap: pretty; }
.hett-hero__mark {
  display: inline-block;
  margin-top: 10px;
  padding: 6px 16px 9px;
  border-radius: var(--r-btn-square);
  background: var(--hett-orange);
  color: #fff;
  font-size: var(--fs-hero-mark);
  line-height: var(--lh-hero-mark);
  letter-spacing: var(--ls-hero);
}
.hett-hero__lead { margin: 26px 0 0; color: rgba(255,255,255,.88); max-width: 46ch; }
.hett-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }

/* ----------------------------------------------------- sociaal bewijs

   Een rijtje klantfoto's, het cijfer ernaast, de belofte eronder. Het staat
   onder de knoppen en niet erboven: eerst wat je kunt doen, dan de reden om
   het te doen.

   De foto's overlappen elkaar met een witte rand ertussen. Die rand is geen
   versiering maar het enige wat drie donkere pasfoto's op een donkere hero uit
   elkaar houdt — zonder die rand wordt het één vlek.

   Het blok leeft standaard op inkt (de hero), maar de kleuren staan als eigen
   variabelen zodat hij het elders op wit ook doet. */
.hett-proof {
  --hett-proof-tekst: rgba(255, 255, 255, .92);
  --hett-proof-rand: rgba(255, 255, 255, .92);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  margin-top: var(--sp-7);
}
.hett-proof__rij { display: flex; align-items: center; gap: 12px; }
.hett-proof__fotos { display: flex; }
.hett-proof__foto {
  width: 38px;
  height: 38px;
  flex: none;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--hett-proof-rand);
  background: var(--hett-surface-2);
}
.hett-proof__foto + .hett-proof__foto { margin-inline-start: -12px; }
.hett-proof__cijfer {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 800;
  font-size: 16px;
  color: var(--hett-star);
  line-height: 1;
}
.hett-proof__cijfer svg { flex: none; }
.hett-proof__tekst {
  font-size: var(--fs-meta);
  font-weight: 600;
  color: var(--hett-proof-tekst);
}

/* Op wit: de rand om de foto's mag dan geen wit zijn, want dan zie je hem niet,
   en de tekst is gewone bodytekst. */
.hett-section--wit .hett-proof,
.hett-prose .hett-proof {
  --hett-proof-tekst: var(--hett-body);
  --hett-proof-rand: #fff;
}

.hett-hero__note { position: absolute; right: var(--panel-pad); bottom: 20px; max-width: 30ch; text-align: right; font-size: 11px; line-height: 1.4; font-weight: 600; color: rgba(255,255,255,.42); }

/* ---------------------------------------------------------- usp-strip */

.hett-usps { border-bottom: 1px solid var(--hett-line); }
.hett-usps__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: var(--grid-gap); padding-block: var(--sp-7); }
.hett-usp { display: flex; gap: 14px; }
.hett-usp__icon { color: var(--hett-orange); flex: none; margin-top: 2px; }
.hett-usp__title { font: 700 var(--fs-ui)/1.35 var(--font-sans); color: var(--hett-ink); }
.hett-usp__sub { font-size: var(--fs-meta); line-height: 1.45; color: var(--hett-muted); margin-top: 3px; }

/* ---------------------------------------------------------- sectiekop */

.hett-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--sp-8); flex-wrap: wrap; margin-bottom: var(--sp-8); }
.hett-head__text { max-width: 66ch; }
.hett-head__text .hett-intro { margin-top: 10px; }

/* ---------------------------------------------------------- productkaarten */

.hett-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: var(--grid-gap); }
.hett-card { display: flex; flex-direction: column; }
.hett-card__media {
  aspect-ratio: 3 / 2;
  border-radius: var(--r-media);
  background: var(--hett-photo-bg);
  overflow: hidden;
  position: relative;
}
.hett-card__media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.hett-card__ph {
  position: absolute;
  inset-inline-start: 14px;
  inset-block-end: 14px;
  max-width: calc(100% - 28px);
  font: 600 11px/1.4 var(--font-sans);
  color: #8A857C;
}
.hett-card__body { padding-top: var(--sp-5); display: flex; flex-direction: column; flex: 1; }
.hett-card__title { margin-bottom: 6px; }
.hett-card__text { font-size: var(--fs-ui); line-height: 1.55; color: var(--hett-body); margin-bottom: var(--sp-4); }
.hett-card__cta { margin-top: auto; }
.hett-card__fine { margin-top: 9px; text-align: center; }

/* ---------------------------------------------------------- montage-duo */

.hett-duo { background: #fff; }
.hett-duo__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: var(--grid-gap); }
.hett-duo__card { border-radius: var(--r-panel); padding: var(--sp-5); background: #fff; border: 1px solid var(--hett-line); }
.hett-duo__card--dark { border-color: transparent; }
.hett-duo__card--dark { background: var(--hett-ink); color: var(--hett-on-dark-body); }
.hett-duo__card--dark .hett-h3 { color: #fff; }
.hett-duo__media { aspect-ratio: 16 / 9; border-radius: var(--r-media); background: var(--hett-photo-bg); overflow: hidden; position: relative; }
.hett-duo__card--dark .hett-duo__media { background: var(--hett-ink-2); }
.hett-duo__media img { width: 100%; height: 100%; object-fit: cover; }
.hett-duo__head { max-width: 640px; margin-bottom: var(--sp-8); }
.hett-duo__head .hett-intro { margin-top: 14px; }
.hett-duo__body { padding: var(--sp-6) 6px 6px; }
.hett-duo__text { margin: 12px 0 var(--sp-6); font-size: var(--fs-ui); line-height: 1.6; }

/* ---------------------------------------------------------- reviews */

.hett-reviews__head { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-6); margin-bottom: var(--sp-8); flex-wrap: wrap; }
.hett-reviews__title { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.hett-reviews__count { font-size: var(--fs-meta); font-weight: 600; color: var(--hett-muted); }
.hett-reviews__nav { display: flex; gap: 10px; }
.hett-reviews__btn { width: 44px; height: 44px; border-radius: var(--r-pill); border: 1px solid var(--hett-line-strong); background: #fff; color: var(--hett-ink); cursor: pointer; display: grid; place-items: center; }
.hett-reviews__btn:hover { border-color: var(--hett-ink); }
.hett-reviews__btn[disabled] { opacity: .35; cursor: default; }
.hett-reviews__track { display: flex; gap: var(--grid-gap); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 4px; }
.hett-reviews__track::-webkit-scrollbar { display: none; }
.hett-review { flex: 0 0 clamp(280px, 31%, 430px); scroll-snap-align: start; border: 1px solid var(--hett-line); border-radius: var(--r-card); padding: var(--sp-6); background: #fff; }
.hett-review__stars { color: var(--hett-star); letter-spacing: 2px; margin-bottom: 12px; }
.hett-review__quote { font-size: var(--fs-ui); line-height: 1.6; color: var(--hett-ink); margin: 0 0 var(--sp-5); }
.hett-review__name { font-weight: 700; color: var(--hett-ink); }
.hett-review__meta { font-size: var(--fs-meta); color: var(--hett-muted); }

/* ------------------------------------------- reviews van Google

   Het logo is geen versiering maar de bron. Daarom staat het twee keer: in de
   kop bij het gemiddelde, en klein op elke kaart. Zonder dat verschilt een
   opgehaalde beoordeling in niets van een zelf ingetypte, en dat is precies het
   verschil waar het om gaat. */

.hett-google { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.hett-google__mark { flex: none; display: block; }
.hett-google__score { font: 800 20px/1 var(--font-sans); color: var(--hett-ink); letter-spacing: -.02em; }
.hett-google .hett-link { margin-inline-start: 4px; }

.hett-review--google { display: flex; flex-direction: column; }
.hett-review__top { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.hett-review__top > div { min-width: 0; }
.hett-review__avatar {
	flex: none;
	width: 44px;
	height: 44px;
	border-radius: var(--r-pill);
	object-fit: cover;
	background: var(--hett-surface-2);
}
.hett-review__avatar--letter {
	display: grid;
	place-items: center;
	font: 700 17px/1 var(--font-sans);
	color: var(--hett-muted);
}
.hett-review__source { margin-inline-start: auto; flex: none; display: block; }
.hett-review--google .hett-review__name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hett-review--google .hett-review__quote { margin-bottom: 0; }

/* ---------------------------------------------------------- faq */

.hett-faq__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); gap: var(--grid-gap-wide); }
.hett-faq__list { border-top: 1px solid var(--hett-line); }
.hett-faq__item { border-bottom: 1px solid var(--hett-line); }
.hett-faq__q {
  width: 100%;
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-5);
  padding: var(--sp-6) 0;
  background: none; border: 0; cursor: pointer; text-align: start;
  font: 700 var(--fs-h4)/1.35 var(--font-sans);
  color: var(--hett-ink);
}
.hett-faq__sign { flex: none; width: 34px; height: 34px; border-radius: var(--r-pill); background: var(--hett-surface-2); display: grid; place-items: center; transition: background-color var(--dur) var(--ease), transform var(--dur) var(--ease); }
.hett-faq__item.is-open .hett-faq__sign { background: var(--hett-orange); color: #fff; transform: rotate(180deg); }
.hett-faq__a { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--dur) var(--ease); }
.hett-faq__item.is-open .hett-faq__a { grid-template-rows: 1fr; }
.hett-faq__a > div { overflow: hidden; }
.hett-faq__a p { padding-bottom: var(--sp-6); font-size: var(--fs-ui); line-height: 1.7; color: var(--hett-body); max-width: 62ch; }

/* ---------------------------------------------------------- projecten */

.hett-projects { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: var(--grid-gap); }
.hett-project__media { aspect-ratio: 4 / 3; border-radius: var(--r-card); background: var(--hett-photo-bg); overflow: hidden; position: relative; }
.hett-project__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 500ms var(--ease); }
.hett-project:hover .hett-project__media img { transform: scale(1.04); }
.hett-project__title { margin-top: 14px; font: 700 18px/1.35 var(--font-sans); color: var(--hett-ink); }
.hett-project__meta { font-size: var(--fs-meta); color: var(--hett-muted); margin-top: 2px; }

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

.hett-cta { padding-inline: 28px; }
.hett-cta__panel { border-radius: var(--r-panel); background: var(--hett-ink); color: var(--hett-on-dark-body); padding: var(--panel-pad); display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: var(--grid-gap-wide); align-items: center; }
.hett-cta__title { color: #fff; font-size: var(--fs-h2); line-height: 1.15; letter-spacing: -.03em; margin-bottom: 12px; max-width: 24ch; }
.hett-cta__text { max-width: 52ch; font-size: var(--fs-ui); line-height: 1.65; }
/* De knoppenkolom mag niet meegroeien met het scherm. Op een breed scherm werd
   een knop van achthonderd pixels breed één streep tekst met een halve meter
   ruimte eromheen — dat leest niet meer als een knop. */
.hett-cta__actions { display: grid; gap: 12px; justify-items: stretch; width: 100%; max-width: 380px; margin-inline-start: auto; }
.hett-cta__actions .hett-btn { justify-content: center; }

/* ---------------------------------------------------------- paginakop */

.hett-pagehead { padding: 68px 0 0; }
.hett-pagehead__inner { max-width: 1000px; }
.hett-pagehead .hett-eyebrow { margin-bottom: 18px; display: block; }
.hett-pagehead .hett-h1 { margin-bottom: 14px; }

.hett-crumbs { display: flex; align-items: center; gap: 8px; font: 600 13px/1.5 var(--font-sans); color: var(--hett-muted); margin-bottom: 18px; flex-wrap: wrap; }
.hett-crumbs a { color: var(--hett-muted); }
.hett-crumbs a:hover { color: var(--hett-ink); }
.hett-crumbs [aria-current] { color: var(--hett-ink); }

/* ---------------------------------------------------------- configurator */

/* De geruststellende regels boven de configurator.

   Stonden met alleen een marge eronder tegen de bovenkant van hun witte vlak
   aan: ruimte eronder, niets erboven. Nu symmetrisch, zodat de rij midden in
   de band staat in plaats van eraan te hangen. */
.hett-configintro {
  display: flex;
  align-items: center;
  gap: var(--grid-gap);
  flex-wrap: wrap;
  padding-block: var(--sp-5);
  margin-bottom: var(--sp-5);
}
.hett-configintro__item { display: flex; align-items: center; gap: 10px; font: 600 var(--fs-ui)/1.4 var(--font-sans); color: var(--hett-ink); }
.hett-configintro__dot { width: 28px; height: 28px; border-radius: var(--r-pill); background: var(--hett-surface-2); display: grid; place-items: center; font: 800 13px/1 var(--font-sans); flex: none; }

.hett-embed { border-top: 1px solid var(--hett-line); border-bottom: 1px solid var(--hett-line); background: var(--hett-surface); }
.hett-embed iframe { display: block; width: 100%; border: 0; }

.hett-helpgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: var(--grid-gap); }
.hett-help { border-top: 1px solid var(--hett-line); padding-top: var(--sp-6); }
.hett-help .hett-h4 { margin-bottom: 8px; }
.hett-help p { font-size: var(--fs-ui); line-height: 1.6; margin-bottom: var(--sp-4); }

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

.hett-form__step { border-top: 1px solid var(--hett-line); padding-top: var(--sp-6); margin-bottom: var(--sp-10); }
.hett-form__steptitle { font: 800 var(--fs-h4)/1.3 var(--font-sans); color: var(--hett-ink); margin-bottom: var(--sp-5); }
.hett-form__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: var(--sp-5); }
.hett-field { display: grid; gap: 7px; }
.hett-field label { font: 700 var(--fs-meta)/1.3 var(--font-sans); color: var(--hett-ink); }
.hett-field input,
.hett-field select,
.hett-field textarea {
  font: 400 var(--fs-ui)/1.5 var(--font-sans);
  color: var(--hett-ink);
  background: #fff;
  border: 1px solid var(--hett-line-input);
  border-radius: var(--r-input);
  padding: 13px 14px;
  width: 100%;
  transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.hett-field input:focus,
.hett-field select:focus,
.hett-field textarea:focus {
  outline: none;
  border-color: var(--hett-orange);
  box-shadow: 0 0 0 3px rgba(255,115,0,.16);
}
.hett-field__hint { font-size: var(--fs-fine); color: var(--hett-muted); }

.hett-choice { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); gap: 12px; }
.hett-choice label {
  border: 1px solid var(--hett-line-input);
  border-radius: var(--r-input);
  padding: 14px 16px;
  cursor: pointer;
  font: 600 var(--fs-ui)/1.4 var(--font-sans);
  color: var(--hett-ink);
  transition: border-color var(--dur) var(--ease), background-color var(--dur) var(--ease);
}
.hett-choice input { position: absolute; opacity: 0; pointer-events: none; }
.hett-choice input:checked + label,
.hett-choice label:has(input:checked) { border-color: var(--hett-orange); background: var(--hett-tint); }

/* ---------------------------------------------------------- footer */

.hett-footer { background: var(--hett-ink); color: var(--hett-on-dark-body); padding-block: var(--sp-13) var(--sp-10); }
.hett-footer a { color: var(--hett-on-dark-body); }
.hett-footer a:hover { color: #fff; }
/* Flex in plaats van grid met auto-fit. auto-fit maakt tracks op basis van de
   beschikbare ruimte, niet op basis van het aantal kolommen: als een menu
   ontbrak stond de contactkolom ineens midden in de footer. Met flex neemt een
   ontbrekende kolom simpelweg geen ruimte in. */
.hett-footer__grid { display: flex; flex-wrap: wrap; gap: var(--grid-gap-wide); }
.hett-footer__grid > * { flex: 1 1 150px; min-width: 0; }
.hett-footer__grid > :first-child { flex: 1 1 300px; }
.hett-footer__logo { font: 800 22px/1 var(--font-sans); color: #fff; letter-spacing: -.03em; }
.hett-footer__logo span { font-weight: 400; }
.hett-footer__logoimg { height: 34px; width: auto; max-width: 100%; }
.hett-footer__about { margin-top: 14px; font-size: var(--fs-meta); line-height: 1.65; color: var(--hett-on-dark-muted); max-width: 40ch; }
.hett-footer__title { font: 700 var(--fs-meta)/1 var(--font-sans); color: #fff; text-transform: uppercase; letter-spacing: .1em; margin-bottom: var(--sp-5); }
.hett-footer__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 11px; font-size: var(--fs-ui); }

/* De contactkolom met iconen. Het icoon staat in een eigen kolom, zodat een
   regel die afbreekt — een showroomregel met een plaatsnaam erachter — netjes
   onder de tekst doorloopt en niet onder het pictogram. */
.hett-footer__list--contact { gap: 13px; }
.hett-footer__list--contact li {
	display: grid;
	grid-template-columns: 22px minmax(0, 1fr);
	align-items: start;
	gap: 10px;
}
.hett-footer__icon { color: var(--hett-orange); display: flex; justify-content: center; padding-top: 2px; }
.hett-footer__bottom { margin-top: var(--sp-12); padding-top: var(--sp-6); border-top: 1px solid var(--hett-on-dark-line); display: flex; justify-content: space-between; gap: var(--sp-6); flex-wrap: wrap; font-size: var(--fs-meta); color: var(--hett-on-dark-muted); }

/* ---------------------------------------------------------- vrije tekst */

.hett-prose { font-size: var(--fs-body); line-height: var(--lh-body); color: var(--hett-body); }
.hett-prose > :first-child { margin-top: 0; }
.hett-prose > :last-child { margin-bottom: 0; }
.hett-prose h2 { font-size: var(--fs-h2); line-height: var(--lh-h2); letter-spacing: var(--ls-h2); margin: var(--sp-9) 0 var(--sp-3); }
.hett-prose h3 { font-size: var(--fs-h3); line-height: var(--lh-h3); margin: var(--sp-7) 0 var(--sp-2); }
.hett-prose h4 { font-size: var(--fs-h4); margin: var(--sp-7) 0 var(--sp-2); }
.hett-prose p { margin: 0 0 var(--sp-4); }
.hett-prose ul, .hett-prose ol { margin: 0 0 var(--sp-5); padding-inline-start: 22px; }
.hett-prose li { margin: 7px 0; }
/* Ook in een tekstblok op volle breedte blijven de regels leesbaar: alleen
   tabellen en beeld mogen de hele kolom gebruiken, lopende tekst niet. */
.hett-prose > p, .hett-prose > ul, .hett-prose > ol, .hett-prose > h3, .hett-prose > h4, .hett-prose > blockquote { max-width: 72ch; }
.hett-prose a { color: var(--hett-orange-text); text-decoration: underline; text-underline-offset: 3px; }
.hett-prose strong { color: var(--hett-ink); font-weight: 700; }
.hett-prose hr { border: 0; border-top: 1px solid var(--hett-line); margin: var(--sp-10) 0; }
.hett-prose table { width: 100%; border-collapse: collapse; margin: 0 0 var(--sp-6); font-size: var(--fs-ui); }
.hett-prose th, .hett-prose td { text-align: start; padding: 12px 14px; border-bottom: 1px solid var(--hett-line); }
.hett-prose th { color: var(--hett-ink); font-weight: 700; }
.hett-prose blockquote { margin: var(--sp-6) 0; padding: var(--sp-5) var(--sp-6); background: var(--hett-tint); border-radius: var(--r-card); color: var(--hett-ink); font-weight: 600; }

/* Een tabel met meer dan twee kolommen past niet op een telefoon. In plaats van
   de tekst onleesbaar klein te maken, laten we de tabel zelf zijwaarts scrollen. */
@media (max-width: 640px) {
	.hett-prose table { display: block; width: 100%; overflow-x: auto; font-size: 15px; }
	.hett-prose th, .hett-prose td { padding: 10px 12px; }
}
.hett-prose img { border-radius: var(--r-media); }

/* ---------------------------------------------------------- terug naar boven */

.hett-totop {
  position: fixed; inset-block-end: 28px; inset-inline-end: 28px;
  width: 50px; height: 50px;
  border: 0; border-radius: var(--r-pill);
  background: var(--hett-ink); color: #fff;
  display: grid; place-items: center;
  cursor: pointer; z-index: 45;
  opacity: 0; transform: translateY(12px); pointer-events: none;
  transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease), background-color var(--dur) var(--ease);
}
.hett-totop.is-visible { opacity: 1; transform: none; pointer-events: auto; }
.hett-totop:hover { background: var(--hett-orange); }

/* ---------------------------------------------------------- responsive */

@media (max-width: 1024px) {
  .hett-faq__grid { grid-template-columns: 1fr; }
  .hett-cta__panel { grid-template-columns: 1fr; }
  /* Eén kolom: dan hoort de knoppenrij links te beginnen, niet rechts uitgelijnd. */
  .hett-cta__actions { margin-inline-start: 0; max-width: 440px; }
  .hett-footer__grid > * { flex-basis: 40%; }
}

@media (max-width: 900px) {
  .hett-nav { display: none; }
  .hett-burger { display: flex; }
  /* Onder de 900px past er naast het hamburgermenu en het mandje geen knop
     meer bij. Allebei de knoppen staan onderin de uitschuiflade. */
  .hett-header__actions .hett-btn--primary,
  .hett-header__actions .hett-header__cta2 { display: none; }
}

/* De showroomknop verdwijnt als eerste: tussen 900 en 1180px is er wel plek
   voor één knop naast het menu, maar niet voor twee. De offerteknop is dan de
   belangrijkste van de twee. */
@media (max-width: 1180px) {
  .hett-header__cta2 { display: none; }
}

@media (max-width: 640px) {
  .hett-hero { padding-inline: var(--page-x-mobile); }
  .hett-hero__panel { min-height: 0; }
  .hett-hero__note { display: none; }
  .hett-hero__actions .hett-btn { width: 100%; }
  .hett-proof { margin-top: var(--sp-6); }
  .hett-proof__foto { width: 34px; height: 34px; }
  .hett-cta { padding-inline: var(--page-x-mobile); }
  .hett-footer__grid { gap: var(--sp-9); }
  .hett-footer__grid > *, .hett-footer__grid > :first-child { flex-basis: 100%; }
  .hett-topbar__list .hett-topbar__item:nth-child(n+2) { display: none; }
  .hett-review { flex-basis: 84%; }

}

/* ---------------------------------------------------------- Elementor Pro formulier */

.elementor-field-group .elementor-field-label { font: 700 var(--fs-meta)/1.3 var(--font-sans); color: var(--hett-ink); margin-bottom: 7px; }
.elementor-field-group .elementor-field-textual {
  font: 400 var(--fs-ui)/1.5 var(--font-sans);
  color: var(--hett-ink);
  border: 1px solid var(--hett-line-input);
  border-radius: var(--r-input);
  padding: 13px 14px;
  background: #fff;
}
.elementor-field-group .elementor-field-textual:focus { border-color: var(--hett-orange); box-shadow: 0 0 0 3px rgba(255,115,0,.16); outline: none; }
.elementor-form .elementor-button {
  background: var(--hett-orange); color: #fff;
  border-radius: var(--r-pill);
  font: 700 var(--fs-ui)/1 var(--font-sans);
  padding: 15px 26px;
}
.elementor-form .elementor-button:hover { background: var(--hett-orange-hover); }

/* ============================================================
   Aanvullingen — ronde 2
   ============================================================ */

/* ---------------------------------------------------- USP-carrousel */

/* ------------------------------------------------------------
   De USP's in de topbalk

   Op een breed scherm staan ze gewoon naast elkaar: er is plek voor alle drie,
   en dan is roteren alleen maar onrustig — je leest er twee half en mist er
   één. Pas als het niet meer past gaat hij lopen, en dat is op een telefoon.

   Eén stuk markup voor allebei: op desktop staan de items in de normale stroom,
   onder 900px vallen ze op elkaar en neemt de rotatie het over. De JS kijkt naar
   dezelfde grens en laat de rotatie op desktop achterwege.
   ============================================================ */

.hett-ticker {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 10px var(--sp-7);
  min-width: 0;
}

.hett-ticker__item {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--hett-body);
  font-weight: 500;
  white-space: nowrap;
}

.hett-ticker__check { color: var(--hett-orange); flex: none; }

/* De strook onder het menu bestaat alleen op een telefoon; op een breed scherm
   staan de USP's in de topbalk en zou dit ze een tweede keer tonen. */
.hett-uspbar { display: none; }

@media (max-width: 900px) {
  /* Boven blijft alleen waar mensen op afgaan: het cijfer links, de drie
     contactpictogrammen rechts. De taalwissel is hier weg — die stond met een
     uitklapper in een balk van veertig pixels en is verhuisd naar de onderkant
     van het uitschuifmenu, waar wel ruimte is om hem uit te schrijven. */
  .hett-topbar .hett-ticker { display: none; }
  .hett-topbar .hett-lang { display: none; }
  .hett-topbar__inner { justify-content: center; min-height: 40px; }
  .hett-topbar__right {
    position: static;
    transform: none;
    width: 100%;
    justify-content: space-between;
    flex-wrap: nowrap;
    gap: var(--sp-3);
  }
  .hett-topbar__contact {
    border-inline-start: 0;
    padding-inline-start: 0;
    margin-inline-end: -8px;
  }
  .hett-topbar__contact--tekst .hett-topbar__icotekst { display: none; }

  /* De strook onder het menu is eruit. Hij kostte eenenveertig pixels boven
     aan elk scherm om één belofte te herhalen die verderop toch al staat, en
     op een telefoon is dat precies de ruimte waar het beeld hoort te beginnen.
     De opmaak blijft hieronder staan voor als hij ooit terugkomt. */

  .hett-ticker {
    position: relative;
    display: block;
    overflow: hidden;
    height: 22px;
    flex: 0 1 420px;
  }
  .hett-ticker__item {
    position: absolute;
    inset: 0;
    justify-content: center;
    opacity: 0;
    transform: translateY(100%);
    transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease);
  }
  .hett-ticker__item.is-active { opacity: 1; transform: none; }
  .hett-ticker__item.is-leaving { opacity: 0; transform: translateY(-100%); }
}

/* ---------------------------------------------------- taalwissel */

.hett-lang { position: relative; display: inline-flex; }

.hett-lang__toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  border: 1px solid var(--hett-line);
  border-radius: var(--r-pill);
  background: #fff;
  color: var(--hett-ink);
  font: 700 var(--fs-fine)/1 var(--font-sans);
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color var(--dur) var(--ease);
}

.hett-lang__toggle:hover { border-color: var(--hett-line-strong); }
.hett-lang__chevron { transition: transform var(--dur) var(--ease); }
.hett-lang.is-open .hett-lang__chevron { transform: rotate(180deg); }

.hett-flag {
  width: 20px;
  height: 14px;
  border-radius: 3px;
  flex: none;
  display: block;
  box-shadow: inset 0 0 0 1px rgba(20, 22, 26, .10);
}

.hett-lang__menu {
  position: absolute;
  top: calc(100% + 8px);
  inset-inline-end: 0;
  min-width: 190px;
  padding: 8px;
  margin: 0;
  list-style: none;
  background: #fff;
  border: 1px solid var(--hett-line);
  border-radius: var(--r-panel);
  box-shadow: var(--shadow-menu);
  display: none;
  z-index: 60;
}

.hett-lang.is-open .hett-lang__menu { display: block; }

.hett-lang__menu a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border-radius: 10px;
  font: 600 var(--fs-meta)/1.2 var(--font-sans);
  color: var(--hett-ink);
}

.hett-lang__menu a:hover { background: var(--hett-surface); }
.hett-lang__menu .is-active { background: var(--hett-tint); }

/* ---------------------------------------------------- FAQ volle breedte */

.hett-faq--full .hett-faq__grid { display: block; }
.hett-faq--full .hett-faq__list { max-width: 900px; margin-inline: auto; }
/* margin-inline neemt twee waarden als start en eind, niet als horizontaal en
   verticaal. `auto var(--sp-10)` duwde de kop dus naar rechts in plaats van hem
   te centreren met ruimte eronder. */
.hett-faq--full .hett-faq__head { max-width: 900px; margin-inline: auto; margin-block-end: var(--sp-10); }

.hett-faq__groups { display: grid; gap: var(--sp-12); }
.hett-faq__grouptitle {
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -.02em;
  margin-bottom: var(--sp-4);
}

/* ---------------------------------------------------- blogkaarten */

.hett-posts { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: var(--grid-gap); }

.hett-post {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--hett-line);
  border-radius: var(--r-card);
  overflow: hidden;
  background: #fff;
  transition: border-color var(--dur) var(--ease);
}

.hett-post:hover { border-color: var(--hett-line-strong); }
.hett-post__media { aspect-ratio: 16 / 10; background: var(--hett-photo-bg); overflow: hidden; position: relative; }
.hett-post__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 500ms var(--ease); }
.hett-post:hover .hett-post__media img { transform: scale(1.04); }
.hett-post__body { padding: var(--sp-6); display: flex; flex-direction: column; flex: 1; }
.hett-post__meta { display: flex; align-items: center; gap: var(--sp-4); font-size: var(--fs-fine); color: var(--hett-muted); margin-bottom: var(--sp-3); }
.hett-post__meta span { display: inline-flex; align-items: center; gap: 6px; }
.hett-post__meta svg { color: var(--hett-orange); }
.hett-post__title { font: 800 var(--fs-h4)/1.3 var(--font-sans); letter-spacing: -.02em; color: var(--hett-ink); margin-bottom: 8px; }
.hett-post__excerpt { font-size: var(--fs-ui); line-height: 1.6; color: var(--hett-body); flex: 1; }
.hett-post__more { margin-top: var(--sp-5); font: 700 var(--fs-ui)/1 var(--font-sans); color: var(--hett-ink); display: inline-flex; align-items: center; gap: 8px; }
.hett-post:hover .hett-post__more { color: var(--hett-orange); }
.hett-post__badge {
  align-self: flex-start;
  margin-bottom: var(--sp-3);
  padding: 5px 11px;
  border-radius: var(--r-pill);
  background: var(--hett-tint);
  color: var(--hett-orange-text);
  font: 700 11px/1 var(--font-sans);
  text-transform: uppercase;
  letter-spacing: .08em;
}

/* ---------------------------------------------------- stappenplan */

.hett-steps { display: grid; gap: var(--sp-6); counter-reset: hett-step; }

.hett-step {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: var(--sp-6);
  align-items: start;
  padding-bottom: var(--sp-6);
  border-bottom: 1px solid var(--hett-line);
}

.hett-step:last-child { border-bottom: 0; padding-bottom: 0; }

.hett-step__num {
  width: 56px;
  height: 56px;
  border-radius: var(--r-pill);
  background: var(--hett-ink);
  color: #fff;
  display: grid;
  place-items: center;
  font: 800 20px/1 var(--font-sans);
  flex: none;
}

.hett-step--accent .hett-step__num { background: var(--hett-orange); }
.hett-step__title { font: 800 var(--fs-h4)/1.3 var(--font-sans); letter-spacing: -.02em; color: var(--hett-ink); margin-bottom: 6px; }
.hett-step__text { font-size: var(--fs-ui); line-height: 1.65; color: var(--hett-body); }

/* ---------------------------------------------------- infopaneel */

.hett-panel {
  border-radius: var(--r-panel);
  padding: var(--panel-pad);
  background: var(--hett-surface);
}

.hett-panel--sand { background: #fff; border: 1px solid var(--hett-line); }
.hett-panel--dark { background: var(--hett-ink); color: var(--hett-on-dark-body); }
.hett-panel--dark :where(h2, h3, h4) { color: #fff; }
.hett-panel--outline { background: #fff; border: 1px solid var(--hett-line); }

.hett-split { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr)); gap: var(--grid-gap-wide); align-items: start; }

/* ---------------------------------------------------- lijst met vinkjes */

.hett-checklist { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.hett-checklist li { display: flex; gap: 12px; align-items: flex-start; font-size: var(--fs-ui); line-height: 1.55; color: var(--hett-ink); }
.hett-checklist svg { color: var(--hett-orange); flex: none; margin-top: 3px; }

@media (max-width: 640px) {
  .hett-step { grid-template-columns: 44px minmax(0, 1fr); gap: var(--sp-4); }
  .hett-step__num { width: 44px; height: 44px; font-size: 17px; }
}

/* ============================================================
   Knoppen beschermen tegen thema- en Elementor-stijlen

   Hello Elementor en de meeste Elementor-kits geven een kale <button> een eigen
   achtergrondkleur, en een afwijkende kleur op :hover, :focus en :active. Die
   regels zijn specifieker dan een enkele klasse, dus ze wonnen van onze eigen
   opmaak: een geopende FAQ-vraag en de geopende taalwissel kregen daardoor de
   accentkleur van het kit als achtergrond.

   Onze knoppen zijn geen formulierknoppen; ze bepalen hun uiterlijk zelf. Daarom
   staat de achtergrond hier expliciet, in alle toestanden en met een selector die
   het van `button:focus` wint.
   ============================================================ */

.hett button.hett-faq__q,
.hett button.hett-faq__q:hover,
.hett button.hett-faq__q:focus,
.hett button.hett-faq__q:active {
	background: none;
	color: var(--hett-ink);
	border: 0;
	box-shadow: none;
	text-shadow: none;
	font: 700 var(--fs-h4)/1.35 var(--font-sans);
	white-space: normal;
	text-align: start;
}

/* ------------------------------------------------------------
   Een vraag die niet past, gaat naar de volgende regel

   De vraag staat in een flexregel naast het plusteken. Een flexitem krijgt van
   zichzelf `min-width: auto` en weigert daarmee smaller te worden dan zijn
   langste woord; komt daar een themaregel met `white-space: nowrap` of een
   groter lettertype overheen, dan schuift de tekst het scherm uit. Sinds
   `overflow-x: clip` op body wordt hij daar afgesneden, wat het erger maakt:
   dan is er niet eens meer naartoe te scrollen.

   Vandaar alle drie: hij mag krimpen, hij moet afbreken, en een woord dat zelfs
   dan niet past breekt middenin af in plaats van over de rand te steken.
   ============================================================ */

.hett .hett-faq__q > span:first-child {
	min-width: 0;
	white-space: normal;
	overflow-wrap: anywhere;
	hyphens: auto;
}

.hett button.hett-cartbtn,
.hett button.hett-cartbtn:hover,
.hett button.hett-cartbtn:focus,
.hett button.hett-cartbtn:active,
.hett button.hett-cartpanel__close,
.hett button.hett-cartpanel__close:hover,
.hett button.hett-cartpanel__close:focus,
.hett button.hett-cartpanel__close:active,
.hett button.hett-shop__duim,
.hett button.hett-shop__duim:hover,
.hett button.hett-shop__duim:focus,
.hett button.hett-shop__duim:active,
.hett button.hett-shop__info,
.hett button.hett-shop__info:hover,
.hett button.hett-shop__info:focus,
.hett button.hett-shop__info:active,
.hett button.hett-lang__toggle,
.hett button.hett-lang__toggle:hover,
.hett button.hett-lang__toggle:focus,
.hett button.hett-lang__toggle:active,
.hett button.hett-burger,
.hett button.hett-burger:hover,
.hett button.hett-burger:focus,
.hett button.hett-burger:active,
.hett button.hett-reviews__btn,
.hett button.hett-reviews__btn:hover,
.hett button.hett-reviews__btn:focus,
.hett button.hett-reviews__btn:active {
	background: #fff;
	color: var(--hett-ink);
	box-shadow: none;
	text-shadow: none;
}

/* Het kruisje op de taalbalk staat op de oranje tint en niet op wit — een wit
   vlakje in een gekleurde strook ziet eruit als een gat. Alle vier de toestanden,
   want het blok hierboven zou anders bij de eerste aanraking wit terugzetten. */
.hett button.hett-taalbalk__sluit,
.hett button.hett-taalbalk__sluit:hover,
.hett button.hett-taalbalk__sluit:focus,
.hett button.hett-taalbalk__sluit:active {
	background: transparent;
	color: var(--hett-muted);
	box-shadow: none;
	text-shadow: none;
}
.hett button.hett-taalbalk__sluit:hover,
.hett button.hett-taalbalk__sluit:focus,
.hett button.hett-taalbalk__sluit:active {
	background: rgba(255, 115, 0, .12);
	color: var(--hett-ink);
}

/* ============================================================
   KNOPPEN DIE ALLEEN EEN PICTOGRAM BEVATTEN
   ------------------------------------------------------------
   Zelfde oorzaak als het blok hierboven, ander gevolg. Hello Elementor geeft
   elke <button> een binnenmarge van 8px 16px. Onze pictogramknoppen hebben een
   vaste maat en centreren met place-items, en dat centreert binnen het
   *inhoudsvak* — dus binnen de 44 pixels min 32 pixels marge links en rechts.
   Het pictogram schoof daardoor twaalf pixels naar rechts, en bij de knop naar
   boven vier.

   Vandaar één regel voor alle knoppen die niets anders dan een pictogram
   bevatten. **Een nieuwe pictogramknop hoort hier ook in.** Knoppen met tekst
   ernaast blijven erbuiten: daar is de marge juist wat je wil.
   ============================================================ */

.hett button.hett-cartbtn,
.hett button.hett-cartpanel__close,
.hett button.hett-totop,
.hett button.hett-reviews__btn,
.hett button.hett-burger,
.hett button.hett-shop__duim,
.hett button.hett-shop__info,
.hett button.hett-taalbalk__sluit,
button.hett-lb__close.hett-lb__close,
button.hett-lb__nav.hett-lb__nav {
	padding: 0;
	line-height: 1;
}

button.hett-totop,
button.hett-totop:focus,
button.hett-totop:active {
	background: var(--hett-ink);
	color: #fff;
	box-shadow: none;
}
button.hett-totop:hover { background: var(--hett-orange); color: #fff; }

/* Toetsenbordgebruikers moeten wél zien waar ze zijn. */
.hett button:focus-visible,
.hett a:focus-visible {
	outline: 2px solid var(--hett-orange);
	outline-offset: 3px;
}

/* ---------------------------------------------------- blok als witte kaart */

.hett-section--soft { background: var(--hett-surface); }

.hett-cardblock {
	background: #fff;
	border-radius: var(--r-panel-lg, 28px);
	padding: clamp(24px, 4vw, 56px);
}

/* Grijze aanloop vóór de titel, zoals "Slimglass — Expert in ...". */
.hett-lead-in { color: var(--hett-muted); }

.hett-btn__arrow { display: inline-flex; margin-inline-start: 10px; transition: transform var(--dur) var(--ease); }
.hett-btn:hover .hett-btn__arrow { transform: translateX(3px); }

@media (max-width: 640px) {
	.hett-cardblock { padding: 22px; border-radius: var(--r-card); }
}

/* ---------------------------------------------- sectieachtergronden

   Een productpagina van dertien secties op één witte achtergrond leest als een
   lange lap. Met een paar zachte vlakken krijgt de pagina ritme en zie je waar
   een blok begint en eindigt. */

.hett-section--soft { background: var(--hett-surface); }
.hett-section--sand { background: #fff; }

/* ------------------------------------------- kaart met kenmerken

   Voor "welke uitvoering kies je". Daar is een foto van drie bijna identieke
   producten niet informatief; de kenmerken en de vanaf-prijs zijn dat wel. */

/* Drie op een rij, ook bij vijf uitvoeringen: met foto erbij wordt een kaart van
   235px te smal om iets te laten zien. Vijf kaarten worden dus 3 + 2. */
.hett-cards--spec { grid-template-columns: repeat(auto-fit, minmax(min(100%, 330px), 1fr)); }

/* Titel met het maatbereik ernaast. Het bereik is waar iemand op zoekt: eerst
   meten, dan kijken welke uitvoering daarbij hoort. */
.hett-card__row { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); flex-wrap: wrap; }
.hett-card__range {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	flex: none;
	padding: 7px 14px;
	border-radius: var(--r-pill);
	background: var(--hett-tint);
	color: var(--hett-ink);
	font: 700 var(--fs-fine)/1 var(--font-sans);
	white-space: nowrap;
}
.hett-card__range svg { color: var(--hett-orange); }

/* Wat er standaard bij zit, apart gezet in een eigen vlak. Zo is in één blik te
   zien dat glas, rails en profielen in de prijs zitten — dat is precies de vraag
   bij een product dat je zelf samenstelt. */
.hett-card__incl {
	position: relative;
	margin-bottom: var(--sp-5);
	padding: var(--sp-5);
	border-radius: var(--r-card);
	background: var(--hett-surface);
}
.hett-card__incltag {
	position: absolute;
	top: var(--sp-4);
	inset-inline-end: var(--sp-4);
	padding: 5px 10px;
	border-radius: var(--r-pill);
	background: #fff;
	color: var(--hett-muted);
	font: 700 11px/1 var(--font-sans);
	letter-spacing: .04em;
}
.hett-card__incl .hett-checklist { gap: 9px; }
.hett-card__incl .hett-checklist li { font-size: var(--fs-meta); }

/* Op een gewone productkaart hoeft de prijs geen eigen vlak met lijn erboven;
   daar is het één regel vlak boven de knop. */
.hett-card:not(.hett-card--spec) .hett-card__price--flat {
	margin-top: auto;
	margin-bottom: var(--sp-4);
	padding-top: 0;
	border-top: 0;
	font-size: var(--fs-h4);
}

.hett-card__note {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 12px;
	font: 600 var(--fs-fine)/1.4 var(--font-sans);
	color: var(--hett-muted);
}
.hett-card__note svg { color: var(--hett-orange); flex: none; }

.hett-card--spec {
	background: #fff;
	border: 1px solid var(--hett-line);
	border-radius: var(--r-panel);
	padding: var(--sp-7);
}
.hett-card--spec .hett-card__media { border-radius: var(--r-card); margin-bottom: var(--sp-5); }
.hett-card--spec .hett-card__body { padding-top: 0; }
.hett-card--spec .hett-card__title { margin-bottom: 10px; }
.hett-card--spec .hett-card__text { margin-bottom: var(--sp-5); }

.hett-card__specs { margin-bottom: var(--sp-5); }
.hett-card__specs li { font-size: var(--fs-meta); }

/* De kenmerkenlijst rekt op, zodat prijs en knop bij kaarten met verschillend
   lange teksten toch op dezelfde hoogte eindigen. Twee keer margin-top: auto in
   dezelfde kolom werkt niet: alleen de eerste krijgt de vrije ruimte. */
/* Alleen het inclusief-vlak krijgt de vrije ruimte. Zou de knop óók margin-top:
   auto houden, dan zweeft de prijs mee omhoog en liggen de scheidingslijnen bij
   kaarten met verschillend lange teksten niet op één hoogte. */
.hett-card--spec .hett-card__incl { margin-top: auto; }
.hett-card--spec .hett-card__cta { margin-top: 0; }

.hett-card__price {
	font: 800 var(--fs-h3)/1 var(--font-sans);
	color: var(--hett-orange-text);
	letter-spacing: -.02em;
	margin-bottom: var(--sp-5);
	padding-top: var(--sp-5);
	border-top: 1px solid var(--hett-line);
}

/* Op een zachte achtergrond mag de rand weg; de witte kaart is dan al genoeg. */
.hett-section--soft .hett-card--spec,
.hett-section--sand .hett-card--spec { border-color: transparent; }

/* ------------------------------------------- fotovlak zonder foto

   Zolang de foto's er niet zijn staat er een leeg vlak. Een streeppatroon plus
   een cameranotitie leest als "hier komt beeld" in plaats van als een fout. */

.hett-media__frame {
	border-radius: var(--r-media-lg);
	background: var(--hett-photo-bg);
	overflow: hidden;
	position: relative;
}
.hett-media__frame img { display: block; width: 100%; height: 100%; object-fit: cover; }

.hett-card__media:not(:has(img)),
.hett-project__media:not(:has(img)),
.hett-post__media:not(:has(img)),
.hett-duo__media:not(:has(img)),
.hett-media__frame:not(:has(img)) {
	background-image: repeating-linear-gradient(
		135deg,
		rgba(20, 22, 26, .035) 0 10px,
		transparent 10px 20px
	);
}

/* ---------------------------------------------------- paginatitelbalk

   Als band met een onderlijn, zodat elke pagina behalve de homepage duidelijk
   begint. Dezelfde opmaak geldt voor de automatische balk op blogartikelen,
   projecten, archieven, zoekresultaten en de 404. */

.hett-pagehead--bar {
	background: var(--hett-surface);
	border-bottom: 1px solid var(--hett-line);
	padding-block: 40px 32px;
	margin-bottom: 0;
}

/* ---------------------------------------------------- video en downloads */

.hett-resources {
	display: grid;
	grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
	gap: var(--grid-gap-wide);
	align-items: start;
}

.hett-video {
	position: relative;
	aspect-ratio: 16 / 9;
	border-radius: var(--r-media-lg);
	overflow: hidden;
	background: var(--hett-photo-bg);
}
.hett-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.hett-video__btn {
	position: absolute;
	inset: 0;
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	display: grid;
	place-items: center;
}
.hett-video__btn img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hett-video__play {
	position: relative;
	width: 74px;
	height: 74px;
	border-radius: var(--r-pill);
	background: var(--hett-orange);
	color: #fff;
	display: grid;
	place-items: center;
	padding-inline-start: 5px;
	transition: transform var(--dur) var(--ease), background-color var(--dur) var(--ease);
}
.hett-video__btn:hover .hett-video__play { transform: scale(1.07); background: var(--hett-orange-hover); }
.hett-video__caption { margin-top: var(--sp-4); font-size: var(--fs-meta); font-weight: 600; color: var(--hett-muted); }

.hett-files { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.hett-file a,
.hett-file__soon {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 14px 16px;
	border-radius: var(--r-card);
	background: #fff;
	border: 1px solid var(--hett-line);
	transition: border-color var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.hett-file a:hover { border-color: var(--hett-ink); transform: translateY(-1px); }
.hett-file__soon { opacity: .6; }
.hett-file__icon { flex: none; color: var(--hett-orange); display: grid; place-items: center; }
.hett-file__text { flex: 1; min-width: 0; }
.hett-file__title { display: block; font: 700 var(--fs-ui)/1.3 var(--font-sans); color: var(--hett-ink); }
.hett-file__meta { display: block; font-size: var(--fs-fine); font-weight: 600; color: var(--hett-muted); margin-top: 3px; }
.hett-file__arrow { flex: none; color: var(--hett-muted); }

/* ---------------------------------------------------- doorlopende reviews

   Met scroll-snap zou de band bij elke kaart blijven haken; die staat dus uit
   zodra hij vanzelf loopt. De maskering laat de kaarten aan beide zijden
   vervagen in plaats van hard afgesneden te worden. */

.hett-reviews--loop .hett-reviews__track {
	scroll-snap-type: none;
	scroll-behavior: auto;
	mask-image: linear-gradient(90deg, transparent, #000 40px, #000 calc(100% - 40px), transparent);
}
.hett-reviews--loop .hett-review { scroll-snap-align: none; }

/* ---------------------------------------------------- projectdetail */

.hett-project__hero {
	border-radius: var(--r-hero);
	overflow: hidden;
	background: var(--hett-photo-bg);
	aspect-ratio: 16 / 9;
}
.hett-project__hero img { width: 100%; height: 100%; object-fit: cover; }

.hett-project__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
	gap: var(--grid-gap-wide);
	align-items: start;
}
.hett-project__meta { position: sticky; top: 110px; }

.hett-speclist { margin: 0; display: grid; gap: 14px; }
.hett-speclist > div { display: flex; justify-content: space-between; gap: var(--sp-4); padding-bottom: 14px; border-bottom: 1px solid var(--hett-line); }
.hett-speclist > div:last-child { border-bottom: 0; padding-bottom: 0; }
.hett-speclist dt { font-size: var(--fs-meta); color: var(--hett-muted); margin: 0; }
.hett-speclist dd { font-size: var(--fs-meta); font-weight: 700; color: var(--hett-ink); margin: 0; text-align: end; }

.hett-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: var(--grid-gap); }
.hett-gallery__item { display: block; aspect-ratio: 3 / 2; border-radius: var(--r-media); overflow: hidden; background: var(--hett-photo-bg); }
.hett-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--dur) var(--ease); }
.hett-gallery__item:hover img { transform: scale(1.03); }

@media (max-width: 1000px) {
	.hett-resources,
	.hett-project__grid { grid-template-columns: 1fr; }
	.hett-project__meta { position: static; }
}

/* ---------------------------------------------------- meethulp */

.hett-meet {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
	gap: var(--grid-gap-wide);
	align-items: center;
}

.hett-meet__field { margin-top: var(--sp-8); }
.hett-meet__label { display: block; font: 700 var(--fs-meta)/1 var(--font-sans); color: var(--hett-ink); margin-bottom: 10px; }
.hett-meet__row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

.hett-meet__input {
	flex: 1 1 160px;
	min-width: 0;
	padding: 14px 16px;
	border: 1px solid var(--hett-line-input);
	border-radius: var(--r-input);
	background: #fff;
	font: 700 var(--fs-h4)/1.2 var(--font-sans);
	color: var(--hett-ink);
}
.hett-meet__input:focus { outline: 2px solid var(--hett-orange); outline-offset: 1px; border-color: transparent; }
.hett-meet__unit { font: 700 var(--fs-ui)/1 var(--font-sans); color: var(--hett-muted); }

.hett-meet__out { min-height: 260px; display: grid; }

.hett-meet__empty {
	display: grid;
	place-items: center;
	align-content: center;
	gap: 12px;
	padding: var(--sp-9);
	border: 1px dashed var(--hett-line-strong);
	border-radius: var(--r-panel);
	color: var(--hett-muted);
	text-align: center;
}
.hett-meet__empty svg { color: var(--hett-line-strong); }
.hett-meet__empty p { font-size: var(--fs-meta); max-width: 30ch; }

.hett-meet__card {
	position: relative;
	padding: var(--sp-8);
	border-radius: var(--r-panel);
	background: #fff;
	border: 1px solid var(--hett-line);
}
.hett-meet__badge {
	position: absolute;
	top: var(--sp-6);
	inset-inline-end: var(--sp-6);
	padding: 7px 14px;
	border-radius: var(--r-pill);
	background: var(--hett-tint);
	color: var(--hett-ink);
	font: 700 var(--fs-fine)/1 var(--font-sans);
}
.hett-meet__card .hett-speclist { margin: var(--sp-6) 0 var(--sp-7); }
.hett-meet__msg { font-size: var(--fs-ui); line-height: 1.6; color: var(--hett-body); margin-bottom: var(--sp-6); }
.hett-meet__note { margin-top: var(--sp-6); max-width: 70ch; }

/* ---------------------------------------------------- actiebalk op mobiel

   Op een telefoon staan de knoppen bovenaan en onderaan de pagina, en daartussen
   scrol je twee meter. Deze balk houdt bellen, WhatsApp en de offerte binnen
   duimbereik. Alleen op smalle schermen, want op desktop is er geen probleem. */

.hett-mobilebar { display: none; }

@media (max-width: 900px) {
	.hett-mobilebar {
		position: fixed;
		inset-inline: 0;
		inset-block-end: 0;
		z-index: 60;
		display: grid;
		grid-template-columns: auto auto minmax(0, 1fr);
		gap: 8px;
		padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
		background: rgba(255, 255, 255, .96);
		backdrop-filter: blur(8px);
		border-top: 1px solid var(--hett-line);
	}

	.hett-mobilebar__icon {
		width: 48px;
		height: 48px;
		border-radius: var(--r-btn-square);
		border: 1px solid var(--hett-line-strong);
		background: #fff;
		color: var(--hett-ink);
		display: grid;
		place-items: center;
	}
	.hett-mobilebar__main { padding-block: 0; height: 48px; }

	/* De knop terug naar boven zou hier bovenop komen te staan. */
	.hett-totop { inset-block-end: 84px; width: 44px; height: 44px; }

	/* Ruimte onder de footer, anders dekt de balk de laatste regel af. */
	body.hett { padding-bottom: 70px; }
}

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

.hett-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-4) var(--sp-5); margin-bottom: var(--sp-5); }
.hett-field { margin: 0 0 var(--sp-5); display: block; }
.hett-fields .hett-field { margin-bottom: 0; }
.hett-fields > .hett-field:not(.hett-field--half) { grid-column: 1 / -1; }

.hett-field label {
	display: block;
	margin-bottom: 8px;
	font: 700 var(--fs-meta)/1 var(--font-sans);
	color: var(--hett-ink);
}
.hett-field label span { color: var(--hett-orange); }

.hett-field input,
.hett-field select,
.hett-field textarea {
	width: 100%;
	padding: 13px 15px;
	border: 1px solid var(--hett-line-input);
	border-radius: var(--r-input);
	background: #fff;
	font: 500 var(--fs-ui)/1.5 var(--font-sans);
	color: var(--hett-ink);
}
.hett-field textarea { resize: vertical; min-height: 120px; }
.hett-field input:focus,
.hett-field select:focus,
.hett-field textarea:focus {
	outline: 2px solid var(--hett-orange);
	outline-offset: 1px;
	border-color: transparent;
}
.hett-field input::placeholder,
.hett-field textarea::placeholder { color: var(--hett-muted); }

.hett-check { display: flex; gap: 12px; align-items: flex-start; margin: var(--sp-6) 0 var(--sp-7); }
.hett-check input { margin-top: 3px; width: 18px; height: 18px; accent-color: var(--hett-orange); flex: none; }
.hett-check label { font-size: var(--fs-meta); line-height: 1.55; color: var(--hett-body); }
.hett-check a { color: var(--hett-orange-text); text-decoration: underline; text-underline-offset: 3px; }

/* Het vangveld voor bots hoort onzichtbaar te zijn, maar niet via display:none —
   sommige bots slaan verborgen velden juist over. */
.hett-honey { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.hett-formerror {
	margin-bottom: var(--sp-6);
	padding: 14px 18px;
	border-radius: var(--r-card);
	background: var(--hett-tint);
	border: 1px solid var(--hett-orange);
	color: var(--hett-ink);
	font-size: var(--fs-ui);
	font-weight: 600;
}

.hett-formdone {
	padding: var(--panel-pad);
	border-radius: var(--r-panel);
	background: #fff;
	border: 1px solid var(--hett-line);
}
.hett-formdone__icon {
	display: grid;
	place-items: center;
	width: 56px;
	height: 56px;
	border-radius: var(--r-pill);
	background: var(--hett-orange);
	color: #fff;
	margin-bottom: var(--sp-5);
}
.hett-formdone p { margin-top: 14px; font-size: var(--fs-ui); line-height: 1.65; color: var(--hett-body); }

@media (max-width: 640px) {
	.hett-fields { grid-template-columns: 1fr; }
	.hett-fields > .hett-field { grid-column: 1 / -1; }
}

/* ---------------------------------------------------- topbalk op een telefoon

   Daar is geen ruimte voor een absoluut gepositioneerd rechterblok, en ook niet
   voor het woord "NL" naast de vlag: het vlaggetje zegt hetzelfde in een derde
   van de ruimte. */

@media (max-width: 640px) {
	.hett-topbar__inner {
		justify-content: center;
		min-height: 0;
		padding-block: 8px;
		gap: var(--sp-3);
	}
	.hett-topbar__right {
		position: static;
		transform: none;
		gap: var(--sp-3);
	}
	/* Alleen in de balk. In het uitschuifmenu staat de taal voluit — daar is de
	   ruimte er wel, en "Nederlands" leest nu eenmaal beter dan een vlaggetje. */
	.hett-topbar .hett-lang__code { display: none; }
	.hett-topbar .hett-lang__toggle { padding: 6px 8px; gap: 6px; }
	.hett-topbar__score { gap: 6px; }
	.hett-topbar__ico { padding: 6px; }
}

/* ---------------------------------------------------- lightbox

   Projecten zijn puur beeld: geen omschrijving, geen eigen pagina. Een klik
   opent de foto groot, met pijltjes en Escape. */

.hett-gallery__item { position: relative; }
.hett-gallery__zoom {
	position: absolute;
	inset-block-end: 10px;
	inset-inline-end: 10px;
	width: 36px;
	height: 36px;
	border-radius: var(--r-pill);
	background: rgba(255, 255, 255, .92);
	color: var(--hett-ink);
	display: grid;
	place-items: center;
	opacity: 0;
	transition: opacity var(--dur) var(--ease);
}
.hett-gallery__item:hover .hett-gallery__zoom,
.hett-gallery__item:focus-visible .hett-gallery__zoom { opacity: 1; }

.hett-lb {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: none;
	place-items: center;
	padding: clamp(16px, 5vw, 56px);
	background: rgba(12, 13, 15, .92);
	backdrop-filter: blur(2px);
}
.hett-lb.is-open { display: grid; }

.hett-lb__frame { margin: 0; display: grid; justify-items: center; gap: 14px; max-width: 100%; }
.hett-lb__frame img {
	max-width: min(1400px, 92vw);
	max-height: 78vh;
	width: auto;
	border-radius: var(--r-media-lg);
	object-fit: contain;
}
.hett-lb__count { font: 600 var(--fs-meta)/1 var(--font-sans); color: rgba(255, 255, 255, .7); }

.hett-lb__close,
.hett-lb__nav {
	position: absolute;
	display: grid;
	place-items: center;
	border: 0;
	border-radius: var(--r-pill);
	background: rgba(255, 255, 255, .12);
	color: #fff;
	cursor: pointer;
	line-height: 1;
}
.hett-lb__close { top: 18px; inset-inline-end: 18px; width: 46px; height: 46px; font-size: 30px; }
.hett-lb__nav { top: 50%; transform: translateY(-50%); width: 52px; height: 52px; font-size: 34px; }
.hett-lb__nav--prev { inset-inline-start: 14px; }
.hett-lb__nav--next { inset-inline-end: 14px; }
.hett-lb__close:hover,
.hett-lb__nav:hover { background: rgba(255, 255, 255, .22); }
.hett-lb__close:focus-visible,
.hett-lb__nav:focus-visible { outline: 2px solid var(--hett-orange); outline-offset: 3px; }

@media (max-width: 640px) {
	.hett-lb__nav { width: 44px; height: 44px; font-size: 28px; }
	.hett-lb__frame img { max-height: 70vh; }
}

/* ---------------------------------------------------- faq op een telefoon

   Moet ná het knoppenblok hierboven staan: dat zet `font:` als shorthand, en een
   shorthand met dezelfde specificiteit die later staat wint. Een vraag van vier
   regels leest niet meer als een vraag, dus iets kleiner en met minder lucht
   tussen de tekst en het plusteken. */

@media (max-width: 640px) {
	.hett .hett-faq__q,
	.hett button.hett-faq__q {
		font-size: 17px;
		gap: var(--sp-4);
		padding-block: var(--sp-5);
	}
	.hett .hett-faq__sign { width: 30px; height: 30px; }
}


/* ==============================================================
   Shopconfigurator

   Links de stappen, rechts een paneel dat meeloopt. Dat paneel is het hele
   punt: zolang het bedrag in beeld blijft terwijl je kiest, blijf je kiezen.
   Verdwijnt het naar beneden, dan ga je scrollen om te kijken wat iets kost en
   ben je de configurator kwijt.

   Op een telefoon kan een meelopend paneel niet — het zou het halve scherm
   opeten. Daar zakt het naar onder de stappen en plakt alleen de balk met het
   totaal en de knop onderaan.
   ============================================================== */

.hett-shop__head { max-width: 640px; margin-bottom: var(--sp-9); }
.hett-shop__head .hett-eyebrow { display: block; margin-bottom: 14px; }
.hett-shop__head .hett-intro { margin-top: 16px; }

.hett-shop__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(300px, 380px);
	gap: var(--grid-gap-wide);
	align-items: start;
}

.hett-shop__velden { display: grid; gap: var(--sp-7); min-width: 0; }

/* Blokken in plaats van genummerde stappen. Een nummer belooft een volgorde
   waaraan je je moet houden, en die is er niet: je mag net zo goed eerst het
   glas kiezen. De uitvoering heb je al gekozen door op een kaart te klikken. */

.hett-shop__blok {
	border: 1px solid var(--hett-line);
	border-radius: var(--r-card);
	padding: var(--sp-7);
	background: #fff;
	min-width: 0;
}
.hett-shop__bloktitel { font: 800 var(--fs-h4)/1.3 var(--font-sans); letter-spacing: -.02em; color: var(--hett-ink); margin-bottom: 8px; }
.hett-shop__uitleg { font-size: var(--fs-fine); line-height: 1.55; color: var(--hett-muted); }
.hett-shop__blok .hett-shop__maten,
.hett-shop__blok .hett-shop__glas,
.hett-shop__blok .hett-shop__extras { margin-top: var(--sp-6); }

/* --- het glas --- */

.hett-shop__glas { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); gap: 14px; margin-top: var(--sp-5); }
.hett-shop__profile { position: relative; display: block; cursor: pointer; }
.hett-shop__profile input { position: absolute; opacity: 0; pointer-events: none; }
.hett-shop__profilebody {
	display: block;
	height: 100%;
	border: 1.5px solid var(--hett-line);
	border-radius: var(--r-media);
	padding: var(--sp-5);
	transition: border-color var(--dur) var(--ease), background-color var(--dur) var(--ease);
}
.hett-shop__profile:hover .hett-shop__profilebody { border-color: var(--hett-line-strong); }
.hett-shop__profile input:checked + .hett-shop__profilebody { border-color: var(--hett-orange); background: var(--hett-surface); }
.hett-shop__profile input:focus-visible + .hett-shop__profilebody { outline: 2px solid var(--hett-orange); outline-offset: 2px; }
.hett-shop__profilename { display: block; font: 800 var(--fs-ui)/1.3 var(--font-sans); color: var(--hett-ink); }
.hett-shop__profiletext { display: block; margin-top: 6px; font-size: var(--fs-fine); line-height: 1.55; color: var(--hett-body); }
.hett-shop__profileprijs { display: block; margin-top: 10px; font: 800 var(--fs-ui)/1 var(--font-sans); color: var(--hett-orange); letter-spacing: -.02em; min-height: 1em; }

/* --- de uitkomst: welke uitvoering wordt het ---

   Dit is het antwoord op de vraag waarmee iemand op deze pagina komt. Daarom
   niet als regeltje onder een veld maar als eigen vlak, met het aantal groot
   ernaast. */

.hett-shop__uitkomst {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-top: var(--sp-6);
	padding: 14px 16px;
	border-radius: var(--r-media);
	background: var(--hett-surface);
}
.hett-shop__uitkomstnr {
	flex: none;
	width: 40px;
	height: 40px;
	border-radius: var(--r-pill);
	background: var(--hett-orange);
	color: #fff;
	display: grid;
	place-items: center;
	font: 800 18px/1 var(--font-sans);
}
.hett-shop__uitkomsttekst { font-size: var(--fs-fine); line-height: 1.5; color: var(--hett-ink); }

/* --- maten --- */

.hett-shop__maten { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); gap: 14px; }
/* Onder elkaar. Naast elkaar in een kolom van veertig procent knijpt de
   keuzelijst zo ver dicht dat "267 cm tot 275 cm (3 × 93 cm)" wordt afgekapt bij
   "(3 ×" — en juist het stuk tussen haakjes is waar je op kiest. */
.hett-shop--pdp .hett-shop__maten { grid-template-columns: 1fr; }
.hett-shop__maat { display: block; }
.hett-shop__label { display: block; font: 700 var(--fs-meta)/1.3 var(--font-sans); color: var(--hett-ink); margin-bottom: 7px; }
.hett-shop__input {
	display: flex;
	align-items: center;
	border: 1.5px solid var(--hett-line);
	border-radius: var(--r-media);
	background: #fff;
	overflow: hidden;
}
.hett-shop__input:focus-within { border-color: var(--hett-orange); }
.hett-shop__input input {
	flex: 1;
	min-width: 0;
	border: 0;
	background: none;
	padding: 13px 14px;
	font: 700 var(--fs-ui)/1.2 var(--font-sans);
	color: var(--hett-ink);
}
.hett-shop__input input:focus { outline: none; }

/* De pijltjes van een getalveld staan hier in de weg: ze duwen de eenheid weg,
   verschillen per browser en niemand stelt 4200 mm in met stapjes van tien. */
.hett-shop__input input::-webkit-outer-spin-button,
.hett-shop__input input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.hett-shop__input input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
.hett-shop__eenheid { flex: none; padding-inline-end: 14px; font: 600 var(--fs-meta)/1 var(--font-sans); color: var(--hett-muted); }
.hett-shop__input--klein { max-width: 160px; }
.hett-shop__grens { display: block; margin-top: 7px; font-size: var(--fs-fine); font-weight: 600; color: var(--hett-muted); }
.hett-shop__paneel { margin-top: var(--sp-5); font-size: var(--fs-fine); line-height: 1.55; color: var(--hett-body); }

/* --- de extra's --- */

.hett-shop__extras { display: grid; gap: 10px; margin-top: var(--sp-5); }

.hett-shop__extra {
	border: 1.5px solid var(--hett-line);
	border-radius: var(--r-media);
	padding: 14px 16px;
	transition: border-color var(--dur) var(--ease), background-color var(--dur) var(--ease);
}
.hett-shop__extra[hidden] { display: none; }
.hett-shop__extra .hett-shop__uitleg { display: block; margin-top: 4px; }
.hett-shop__extra .hett-shop__input { margin-top: 12px; }

.hett-shop__extra--check { display: flex; align-items: flex-start; gap: 12px; cursor: pointer; }
.hett-shop__extra--check:hover { border-color: var(--hett-line-strong); }
.hett-shop__extra--check input { position: absolute; opacity: 0; pointer-events: none; }
.hett-shop__vink {
	flex: none;
	width: 22px;
	height: 22px;
	margin-top: 1px;
	border: 1.5px solid var(--hett-line-strong);
	border-radius: 7px;
	display: grid;
	place-items: center;
	color: transparent;
	transition: background-color var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease);
}
.hett-shop__extra--check:has(input:checked) { border-color: var(--hett-orange); background: var(--hett-surface); }
.hett-shop__extra--check:has(input:checked) .hett-shop__vink { background: var(--hett-orange); border-color: var(--hett-orange); color: #fff; }
.hett-shop__extra--check:has(input:focus-visible) { outline: 2px solid var(--hett-orange); outline-offset: 2px; }
.hett-shop__extrabody { min-width: 0; flex: 1; }
.hett-shop__extrakop { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.hett-shop__extraprijs { flex: none; font: 700 var(--fs-meta)/1.3 var(--font-sans); color: var(--hett-orange); }

/* --- het paneel --- */

.hett-shop__panel { min-width: 0; }
.hett-shop__panelinner {
	position: sticky;
	top: calc(var(--header-h, 76px) + 16px);
	border: 1px solid var(--hett-line);
	border-radius: var(--r-card);
	padding: var(--sp-7);
	background: var(--hett-surface);
}
.hett-shop__paneltitle { font: 800 var(--fs-h4)/1.3 var(--font-sans); letter-spacing: -.02em; color: var(--hett-ink); margin-bottom: var(--sp-5); }

.hett-shop__regels { list-style: none; margin: 0 0 var(--sp-6); padding: 0; display: grid; gap: 9px; }
.hett-shop__regels li { display: flex; gap: 14px; justify-content: space-between; align-items: baseline; font-size: var(--fs-fine); line-height: 1.45; color: var(--hett-body); }
.hett-shop__regels li > span:first-child { min-width: 0; }
.hett-shop__regels li > span:last-child { flex: none; font-weight: 700; color: var(--hett-ink); }

/* Klopt de maat niet, dan klopt het bedrag ook niet. De regels blijven staan
   zodat je weet waar je was, maar ze zijn duidelijk niet het antwoord. */
.hett-shop__regels.is-fout { opacity: .35; }

.hett-shop__fouten { border-radius: var(--r-media); background: #FDECEA; padding: 12px 14px; margin-bottom: var(--sp-5); }
.hett-shop__fouten p { margin: 0; font-size: var(--fs-fine); line-height: 1.5; color: #8A2A20; }
.hett-shop__fouten p + p { margin-top: 6px; }

.hett-shop__totaal {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 14px;
	padding-top: var(--sp-5);
	border-top: 1px solid var(--hett-line-strong);
	font: 700 var(--fs-ui)/1.2 var(--font-sans);
	color: var(--hett-ink);
}
.hett-shop__totaal strong { font: 800 26px/1 var(--font-sans); letter-spacing: -.02em; color: var(--hett-orange); }
.hett-shop__btw { margin-top: 8px; font-size: var(--fs-fine); line-height: 1.5; color: var(--hett-muted); }
.hett-shop__geenprijs { margin-bottom: var(--sp-5); font-size: var(--fs-fine); line-height: 1.55; color: var(--hett-body); }

/* Een maat buiten het bereik is geen fout van de bezoeker maar een maat die we
   op maat maken. Dan hoort er een weg vooruit te staan, geen doodlopend
   foutmeldinkje. */
.hett-shop__buiten { margin-top: var(--sp-5); padding-top: var(--sp-5); border-top: 1px solid var(--hett-line); }
.hett-shop__buiten[hidden] { display: none; }
.hett-shop__buiten p { margin: 0 0 var(--sp-4); font-size: var(--fs-fine); line-height: 1.55; color: var(--hett-body); }
.hett-shop__buiten .hett-btn { width: 100%; justify-content: center; }

.hett-shop__submit { width: 100%; justify-content: center; margin-top: var(--sp-5); }
.hett-shop__submit[disabled] { opacity: .45; cursor: not-allowed; }

.hett-shop__zeker { list-style: none; margin: var(--sp-6) 0 0; padding: 0; display: grid; gap: 9px; }
.hett-shop__zeker li { display: flex; gap: 10px; align-items: flex-start; font-size: var(--fs-fine); line-height: 1.45; color: var(--hett-body); }
.hett-shop__zeker svg { flex: none; margin-top: 1px; color: var(--hett-orange); }
.hett-shop__hulp { margin-top: var(--sp-6); padding-top: var(--sp-5); border-top: 1px solid var(--hett-line); font-size: var(--fs-fine); line-height: 1.55; color: var(--hett-muted); }

/* ==============================================================
   Winkelwagen en afrekenen van WooCommerce

   Deze schermen komen uit WooCommerce zelf, dus we sturen hier alleen bij waar
   het onze eigen inhoud raakt.

   Het belangrijkste is de samenstelling onder de productnaam. WooCommerce zet
   die op één regel achter elkaar, met een schuine streep ertussen: "Uitvoering:
   5-rail / Opening: 4200 mm / Hoogte: 2400 mm / …". Dat is precies de
   informatie waarop iemand controleert of hij het juiste besteld heeft, en zo
   leest niemand het na. Dus: elk onderdeel op een eigen regel en de streepjes
   eruit. Die streepjes staan er als `aria-hidden`, dus wegnemen kost niets voor
   een schermlezer.
   ============================================================== */

.hett-cartsize { display: block; font-size: var(--fs-fine); font-weight: 600; color: var(--hett-muted); }

/* Een optie is sinds 2.18.0 een eigen regel, want het is een eigen product. Dat
   het bij een wand hoort moet je dan wel kunnen zien — anders leest de
   winkelwagen als vier losse bestellingen. */
.hett-cartbij {
	display: inline-block;
	margin-left: 8px;
	padding: 2px 8px;
	border-radius: 999px;
	background: var(--hett-surface);
	font-size: var(--fs-fine);
	font-weight: 700;
	color: var(--hett-muted);
	white-space: nowrap;
}
.hett-cartvast { font-weight: 700; color: var(--hett-muted); }

.wc-block-components-product-details {
	display: grid;
	gap: 4px;
	margin-top: 10px;
	padding-top: 10px;
	border-top: 1px solid var(--hett-line);
}
.wc-block-components-product-details > span { display: flex; gap: 8px; font-size: var(--fs-fine); line-height: 1.45; }
.wc-block-components-product-details > span > span[aria-hidden="true"] { display: none; }
.wc-block-components-product-details__name { flex: none; color: var(--hett-muted); font-weight: 600; }
.wc-block-components-product-details__value { color: var(--hett-ink); font-weight: 700; }

/* De productomschrijving staat bij elke regel opnieuw en zegt precies hetzelfde;
   de samenstelling eronder is het antwoord op dezelfde vraag, maar dan echt. */
.wc-block-components-product-metadata__description { display: none; }

/* De doorgaan-knop in de merkkleur, zodat de winkelwagen niet ineens een ander
   product lijkt. De rest van WooCommerce laten we met rust. */
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button {
	background: var(--hett-orange);
	color: #fff;
	border-radius: var(--r-pill);
	font: 700 var(--fs-ui)/1 var(--font-sans);
	text-decoration: none;
	padding: 16px 24px;
	min-height: 0;
}
.wc-block-cart__submit-button:hover,
.wc-block-cart__submit-button:focus,
.wc-block-cart__submit-button:active,
.wc-block-components-checkout-place-order-button:hover,
.wc-block-components-checkout-place-order-button:focus,
.wc-block-components-checkout-place-order-button:active { text-decoration: none; color: #fff; }
.wc-block-cart__submit-button:hover,
.wc-block-components-checkout-place-order-button:hover { background: var(--hett-orange-hover); }

/* --- de balk onderaan op een telefoon --- */

.hett-shop__bar { display: none; }

@media (max-width: 1000px) {
	.hett-shop__grid { grid-template-columns: 1fr; }
	.hett-shop__panelinner { position: static; }
}

@media (max-width: 900px) {
	.hett-shop__bar {
		position: fixed;
		inset-inline: 0;
		bottom: 0;
		z-index: 60;
		display: flex;
		align-items: center;
		gap: 14px;
		padding: 10px var(--page-x-mobile) calc(10px + env(safe-area-inset-bottom));
		background: #fff;
		border-top: 1px solid var(--hett-line);
		box-shadow: 0 -6px 24px rgba(20, 22, 26, .07);
	}
	.hett-shop__barprijs { flex: none; display: grid; gap: 2px; }
	.hett-shop__barprijs span { font: 600 var(--fs-fine)/1 var(--font-sans); color: var(--hett-muted); }
	.hett-shop__barprijs strong { font: 800 19px/1 var(--font-sans); letter-spacing: -.02em; color: var(--hett-ink); }
	.hett-shop__bar .hett-btn { flex: 1; justify-content: center; padding-inline: 14px; }

	/* Ruimte onder de pagina, anders ligt de balk over de footer. */
	body:has(.hett-shop__bar) { padding-bottom: 84px; }

	/* Eén balk onderaan. De algemene actiebalk met bellen en WhatsApp gaat
	   weg zodra de configurator zijn eigen balk heeft: twee balken over
	   elkaar is erger dan geen. */
	body:has(.hett-shop__bar) .hett-mobilebar { display: none; }
	body:has(.hett-shop__bar) .hett-totop { inset-block-end: 92px; }

	/* Het paneel toont het totaal dan dubbel. Onderaan is genoeg — maar alleen
	   als die balk er ook echt is: staat de shop uit, dan is de knop in het
	   paneel de enige die er is. */
	body:has(.hett-shop__bar) .hett-shop__panelinner .hett-shop__submit,
	body:has(.hett-shop__bar) .hett-shop__panelinner .hett-shop__totaal,
	body:has(.hett-shop__bar) .hett-shop__panelinner .hett-shop__btw { display: none; }
}

@media (max-width: 640px) {
	.hett-shop__blok { padding: var(--sp-6); }
}

/* ------------------------------------------------------------
   Het accent-item in de navigatie

   Eén item in het menu mag opvallen: de plek waar je meteen kunt afrekenen.
   In de merkkleur, en met een streep eronder die meegroeit op hover, zodat het
   als een link blijft lezen en niet als een tweede knop naast de offerteknop.
   De klasse komt uit het WordPress-menu (hett-accent), dus de klant kan hem
   zelf verplaatsen zonder code.
   ============================================================ */

.hett-nav__item--accent .hett-nav__link { color: var(--hett-orange); font-weight: 800; }
.hett-nav__item--accent .hett-nav__link:hover,
.hett-nav__item--accent.is-current .hett-nav__link { color: var(--hett-orange-hover); }
.hett-drawer__nav a.is-accent { color: var(--hett-orange); font-weight: 800; }


/* ==============================================================
   De winkelwagen: knop in de header en de zijbalk

   De knop staat vóór de offerteknop, niet erna: de offerte is de hoofdactie en
   hoort het laatst te staan, waar de blik eindigt. Het mandje is er voor wie al
   iets heeft samengesteld, en die weet waar hij het zoekt.

   Het cijfer verschijnt alleen als er iets in zit. Een mandje met een nul
   erbij vraagt aandacht voor het feit dat je nog niets hebt.
   ============================================================== */

.hett-cartbtn {
	position: relative;
	flex: none;
	width: 44px;
	height: 44px;
	border: 1px solid var(--hett-line-strong);
	border-radius: var(--r-pill);
	background: #fff;
	color: var(--hett-ink);
	display: grid;
	place-items: center;
	cursor: pointer;
	transition: border-color var(--dur) var(--ease);
}
.hett-cartbtn:hover { border-color: var(--hett-ink); }

.hett-cartbtn__count {
	position: absolute;
	top: -4px;
	inset-inline-end: -4px;
	min-width: 20px;
	height: 20px;
	padding: 0 5px;
	border-radius: var(--r-pill);
	background: var(--hett-orange);
	color: #fff;
	font: 800 11px/20px var(--font-sans);
	text-align: center;
	display: none;
}
.hett-cartbtn__count.is-vol { display: block; }

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

.hett-cartpanel { position: fixed; inset: 0; z-index: 70; }
.hett-cartpanel[hidden] { display: none; }
.hett-cartpanel__scrim { position: absolute; inset: 0; background: rgba(20, 22, 26, .5); }

.hett-cartpanel__body {
	position: absolute;
	inset-block: 0;
	inset-inline-end: 0;
	width: min(420px, 100%);
	background: #fff;
	display: flex;
	flex-direction: column;
	box-shadow: -18px 0 48px rgba(20, 22, 26, .18);
	animation: hett-cart-in 240ms var(--ease);
}

@keyframes hett-cart-in {
	from { transform: translateX(100%); }
	to { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
	.hett-cartpanel__body { animation: none; }
}

.hett-cartpanel__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding: 18px var(--sp-7);
	border-bottom: 1px solid var(--hett-line);
	flex: none;
}
.hett-cartpanel__title { font: 800 var(--fs-h4)/1.3 var(--font-sans); letter-spacing: -.02em; color: var(--hett-ink); margin: 0; }
.hett .hett-cartpanel__close,
.hett button.hett-cartpanel__close {
	flex: none;
	width: 40px;
	height: 40px;
	border: 0;
	border-radius: var(--r-pill);
	background: var(--hett-surface-2);
	color: var(--hett-ink);
	display: grid;
	place-items: center;
	cursor: pointer;
}
.hett button.hett-cartpanel__close:hover { background: var(--hett-line); }

.hett-cartpanel__inner { flex: 1; overflow-y: auto; padding: var(--sp-7); }
.hett-cartpanel__inner.is-laden { opacity: .5; pointer-events: none; }

/* De mini-cart van WooCommerce in onze opmaak. Hij levert een kale ul met
   li.woocommerce-mini-cart-item; de rest is van ons. */
.hett-cartpanel .woocommerce-mini-cart { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-5); }
/* Eén regel in de zijbalk.
 *
 * WooCommerce zet de naam, de samenstelling en de prijs los onder elkaar in een
 * <li>. Wij leggen er een raster overheen: foto links, alles wat je leest
 * rechts, en de prijs onderaan uitgelijnd met de rest. De samenstelling is
 * een <dl>; die staat van zichzelf op twee regels per waarde, wat de lijst twee
 * keer zo lang maakt als nodig. */

.hett-cartpanel .woocommerce-mini-cart-item {
	display: grid;
	grid-template-columns: 56px minmax(0, 1fr);
	column-gap: 14px;
	row-gap: 6px;
	align-items: start;
	padding: 0 0 var(--sp-5);
	margin: 0;
	border-bottom: 1px solid var(--hett-line);
	position: relative;
	list-style: none;
}
.hett-cartpanel .woocommerce-mini-cart-item::before,
.hett-cartpanel .woocommerce-mini-cart-item::after { display: none; }

.hett-cartpanel .woocommerce-mini-cart-item img {
	grid-column: 1;
	grid-row: 1 / span 3;
	width: 56px;
	height: 56px;
	object-fit: cover;
	border-radius: var(--r-media);
	background: var(--hett-photo-bg);
	margin: 0;
	float: none;
}
.hett-cartpanel .woocommerce-mini-cart-item a:not(.remove) {
	grid-column: 2;
	font: 700 var(--fs-meta)/1.35 var(--font-sans);
	color: var(--hett-ink);
	text-decoration: none;
	padding-inline-end: 32px;
}
.hett-cartpanel .woocommerce-mini-cart-item .variation {
	grid-column: 2;
	margin: 0;
	display: grid;
	grid-template-columns: minmax(0, auto) minmax(0, 1fr);
	column-gap: 8px;
	row-gap: 2px;
	font-size: var(--fs-fine);
	line-height: 1.45;
}
.hett-cartpanel .woocommerce-mini-cart-item .variation dt { grid-column: 1; margin: 0; color: var(--hett-muted); font-weight: 600; }
.hett-cartpanel .woocommerce-mini-cart-item .variation dd { grid-column: 2; margin: 0; color: var(--hett-ink); font-weight: 700; }
.hett-cartpanel .woocommerce-mini-cart-item .variation dd p { margin: 0; }

.hett-cartpanel .woocommerce-mini-cart-item .quantity {
	grid-column: 2;
	display: block;
	margin-top: 4px;
	font: 700 var(--fs-meta)/1.3 var(--font-sans);
	color: var(--hett-ink);
}
.hett-cartpanel .woocommerce-mini-cart-item .quantity .amount { color: var(--hett-ink); }

.hett-cartpanel .woocommerce-mini-cart-item a.remove {
	position: absolute;
	top: 0;
	inset-inline-end: 0;
	width: 26px;
	height: 26px;
	border-radius: var(--r-pill);
	background: var(--hett-surface-2);
	color: var(--hett-muted);
	font: 400 15px/26px var(--font-sans);
	text-align: center;
	text-decoration: none;
}
.hett-cartpanel .woocommerce-mini-cart-item a.remove:hover { background: var(--hett-orange); color: #fff; }

.hett-cartpanel .woocommerce-mini-cart__total {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 14px;
	margin: var(--sp-6) 0 var(--sp-5);
	padding-top: var(--sp-5);
	border-top: 1px solid var(--hett-line-strong);
	font: 700 var(--fs-ui)/1.2 var(--font-sans);
	color: var(--hett-ink);
}
.hett-cartpanel .woocommerce-mini-cart__total .amount { font: 800 22px/1 var(--font-sans); letter-spacing: -.02em; color: var(--hett-orange); }

.hett-cartpanel .woocommerce-mini-cart__buttons { display: grid; gap: 10px; margin: 0; }
.hett-cartpanel .woocommerce-mini-cart__buttons .button {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 14px 20px;
	border-radius: var(--r-pill);
	font: 700 var(--fs-meta)/1 var(--font-sans);
	text-decoration: none;
	border: 1px solid var(--hett-line-strong);
	color: var(--hett-ink);
	background: #fff;
}
.hett-cartpanel .woocommerce-mini-cart__buttons .checkout {
	background: var(--hett-orange);
	border-color: var(--hett-orange);
	color: #fff;
}
.hett-cartpanel .woocommerce-mini-cart__empty-message {
	margin: 0;
	font-size: var(--fs-ui);
	line-height: 1.6;
	color: var(--hett-muted);
}

body.hett-no-scroll { overflow: hidden; }


/* ==============================================================
   De productpagina van één uitvoering

   Galerij links, het koopblok rechts, de specificaties onder de galerij. Zo
   staat wat je moet beslissen aan één kant en wat je wil weten aan de andere,
   en hoef je niet tussen die twee heen en weer te scrollen.

   Het koopblok loopt mee tot de specificaties op zijn. Daarna mag het gerust
   uit beeld: wie zo ver gelezen heeft, scrollt terug omhoog of gebruikt de balk
   onderaan.
   ============================================================== */

.hett-shop--pdp .hett-shop__grid {
	grid-template-columns: minmax(0, 60fr) minmax(0, 40fr);
	gap: var(--grid-gap-wide);
	align-items: start;
}

/* Drie blokken in twee kolommen: de galerij met de specificaties links over de
   volle hoogte, rechts de velden met het totaal eronder. Zonder deze plaatsing
   valt het totaalblok als derde kind onder de galerij, en dan staat de
   bestelknop ineens onder de specificaties. */
.hett-shop--pdp .hett-shop__media  { grid-column: 1; grid-row: 1 / span 2; }
.hett-shop--pdp .hett-shop__velden { grid-column: 2; grid-row: 1; }
.hett-shop--pdp .hett-shop__panel  { grid-column: 2; grid-row: 2; }

.hett-shop--pdp .hett-shop__media { min-width: 0; display: grid; gap: var(--sp-8); align-content: start; }

/* Twee lagen over elkaar: helder ligt boven zolang er helder glas gekozen is,
   getint schuift eroverheen zodra je dat kiest. Beide staan al in de pagina, dus
   het wisselen kent geen laadmoment. */
.hett-shop__hoofdfoto--wissel .hett-shop__laag {
	position: absolute;
	inset: 0;
	display: block;
	opacity: 0;
	transition: opacity .18s var(--ease);
}
.hett-shop__hoofdfoto--wissel .hett-shop__laag.is-actief { opacity: 1; }
.hett-shop__laag img { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (prefers-reduced-motion: reduce) {
	.hett-shop__hoofdfoto--wissel .hett-shop__laag { transition: none; }
}

.hett-shop__hoofdfoto {
	aspect-ratio: 4 / 3;
	border-radius: var(--r-media-lg);
	background: var(--hett-photo-bg);
	overflow: hidden;
	position: relative;
}
.hett-shop__hoofdfoto img { display: block; width: 100%; height: 100%; object-fit: cover; }

.hett-shop__duimen { display: flex; gap: 12px; margin-top: 14px; flex-wrap: wrap; }
.hett-shop__duim {
	width: 84px;
	height: 64px;
	padding: 0;
	border: 1.5px solid var(--hett-line);
	border-radius: var(--r-media);
	overflow: hidden;
	background: var(--hett-photo-bg);
	cursor: pointer;
	transition: border-color var(--dur) var(--ease);
}
.hett-shop__duim img { display: block; width: 100%; height: 100%; object-fit: cover; }
.hett-shop__duim:hover { border-color: var(--hett-line-strong); }
.hett-shop__duim.is-actief { border-color: var(--hett-orange); }

/* --- de kop van het koopblok --- */

.hett-shop__kop { margin-bottom: var(--sp-7); }
.hett-shop__producttitel {
	font: 800 var(--fs-h2)/1.1 var(--font-sans);
	letter-spacing: -.03em;
	color: var(--hett-ink);
	margin: 0 0 12px;
}
.hett-shop__badge {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 7px 14px 7px 11px;
	border-radius: var(--r-pill);
	background: var(--hett-surface-2);
	font: 700 var(--fs-fine)/1 var(--font-sans);
	color: var(--hett-ink);
}
.hett-shop__badge svg { color: var(--hett-orange); }

.hett-shop__prijs { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin: var(--sp-6) 0 var(--sp-5); }
.hett-shop__prijs strong { font: 800 32px/1 var(--font-sans); letter-spacing: -.03em; color: var(--hett-orange); }
.hett-shop__prijsfijn { font-size: var(--fs-fine); color: var(--hett-muted); }

.hett-shop__leadvet { font: 700 var(--fs-ui)/1.5 var(--font-sans); color: var(--hett-ink); margin: 0 0 var(--sp-4); }
.hett-shop__lead { font-size: var(--fs-ui); line-height: 1.65; color: var(--hett-body); margin: 0 0 var(--sp-6); }

/* Het inclusief-vlak. De tag rechtsboven zegt in één woord waar het rijtje over
   gaat, zodat de regels zelf niet met "inclusief" hoeven te beginnen. */
.hett-shop__incl {
	position: relative;
	border: 1px solid var(--hett-line);
	border-radius: var(--r-media);
	background: var(--hett-surface);
	padding: var(--sp-5) var(--sp-6);
}
.hett-shop__incllabel {
	position: absolute;
	top: var(--sp-5);
	inset-inline-end: var(--sp-5);
	padding: 4px 10px;
	border-radius: var(--r-pill);
	background: #fff;
	border: 1px solid var(--hett-line);
	font: 700 11px/1 var(--font-sans);
	color: var(--hett-muted);
}
.hett-shop__incl ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.hett-shop__incl li { display: flex; gap: 10px; align-items: flex-start; font-size: var(--fs-fine); line-height: 1.45; color: var(--hett-ink); font-weight: 600; }
.hett-shop__incl svg { flex: none; margin-top: 1px; color: var(--hett-orange); }

.hett-shop__specs { border-top: 1px solid var(--hett-line); padding-top: var(--sp-7); }
.hett-shop__speclijst { margin: var(--sp-5) 0 0; display: grid; }
.hett-shop__speclijst > div {
	display: grid;
	grid-template-columns: minmax(0, 200px) minmax(0, 1fr);
	gap: 14px;
	padding: 13px 0;
	border-bottom: 1px solid var(--hett-line);
	font-size: var(--fs-fine);
	line-height: 1.5;
}
.hett-shop__speclijst dt { color: var(--hett-muted); font-weight: 600; }
.hett-shop__speclijst dd { margin: 0; color: var(--hett-ink); font-weight: 600; }

@media (max-width: 1000px) {
	.hett-shop--pdp .hett-shop__grid { grid-template-columns: 1fr; }
	.hett-shop--pdp .hett-shop__media,
	.hett-shop--pdp .hett-shop__velden,
	.hett-shop--pdp .hett-shop__panel { grid-column: 1; grid-row: auto; }
	/* De specificaties horen onder het bestellen, niet ertussen. */
	.hett-shop--pdp .hett-shop__media { display: contents; }
	.hett-shop--pdp .hett-shop__galerij { order: 1; }
	.hett-shop--pdp .hett-shop__velden { order: 2; }
	.hett-shop--pdp .hett-shop__panel { order: 3; }
	.hett-shop--pdp .hett-shop__specs { order: 4; }
	.hett-shop__speclijst > div { grid-template-columns: minmax(0, 140px) minmax(0, 1fr); }
}


/* ==============================================================
   Winkelwagen en afrekenen

   WooCommerce levert deze schermen als blokken met een eigen opmaak. We
   herschrijven ze niet — dat is dweilen — maar zetten de dingen recht die
   opvallen zodra je van onze pagina's hierheen komt: de typografie, de
   afrondingen, de invoervelden en de knoppen. De rest mag WooCommerce blijven
   doen.

   Eén ding is belangrijker dan het uiterlijk: dit is de plek waar iemand zijn
   adres invult en op betalen drukt. Alles wat hier onbekend aanvoelt kost een
   bestelling. Vandaar dezelfde velden, dezelfde knop en dezelfde oranje
   hoofdactie als op de rest van de site.
   ============================================================== */

.wp-block-woocommerce-cart,
.wp-block-woocommerce-checkout {
	font-family: var(--font-sans);
	color: var(--hett-body);
}

/* --- koppen --- */

.wc-block-components-title,
.wp-block-woocommerce-cart h1,
.wp-block-woocommerce-checkout h1 {
	font-family: var(--font-sans);
	font-weight: 800;
	letter-spacing: -.02em;
	color: var(--hett-ink);
}
.wc-block-cart__main > h1,
.wc-block-checkout__main > h1 { font-size: var(--fs-h2); line-height: 1.15; letter-spacing: -.03em; }

.wc-block-cart-items__header {
	font: 700 var(--fs-fine)/1 var(--font-sans);
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--hett-muted);
	border-bottom: 1px solid var(--hett-line);
}

.wc-block-cart-items__row { border-bottom: 1px solid var(--hett-line); }
/* De productnaam in de winkelwagen is een link, en het thema onderstreept elke
   link in de content. Een onderstreepte regel in een lijst met bedragen leest
   als "hier is iets mis". */
a.wc-block-components-product-name,
a.wc-block-components-product-name:hover,
a.wc-block-components-product-name:focus,
.wc-block-components-product-name { font: 700 var(--fs-ui)/1.35 var(--font-sans); color: var(--hett-ink); text-decoration: none; }
.wc-block-cart-item__image img { border-radius: var(--r-media); }

/* --- het totalenpaneel --- */

.wc-block-components-sidebar .wc-block-components-totals-wrapper,
.wc-block-components-sidebar .wp-block-woocommerce-cart-order-summary-block {
	border-radius: var(--r-card);
}
.wc-block-components-sidebar {
	background: var(--hett-surface);
	border: 1px solid var(--hett-line);
	border-radius: var(--r-card);
	padding: var(--sp-7);
}
.wc-block-components-totals-item { font-size: var(--fs-meta); color: var(--hett-body); }
.wc-block-components-totals-footer-item { font: 700 var(--fs-ui)/1.2 var(--font-sans); color: var(--hett-ink); }
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
	font: 800 26px/1 var(--font-sans);
	letter-spacing: -.02em;
	color: var(--hett-orange);
}

/* --- invoervelden --- */

.wc-block-components-text-input input[type="text"],
.wc-block-components-text-input input[type="email"],
.wc-block-components-text-input input[type="tel"],
.wc-block-components-text-input input[type="number"],
.wc-block-components-textarea,
.wc-block-components-combobox-control input,
.wc-blocks-components-select__select {
	border: 1.5px solid var(--hett-line);
	border-radius: var(--r-media);
	background: #fff;
	font: 600 var(--fs-ui)/1.3 var(--font-sans);
	color: var(--hett-ink);
	padding: 14px 16px;
}
.wc-block-components-text-input input:focus,
.wc-block-components-textarea:focus,
.wc-blocks-components-select__select:focus {
	border-color: var(--hett-orange);
	outline: none;
	box-shadow: none;
}
.wc-block-components-text-input label,
.wc-block-components-checkout-step__title {
	font-family: var(--font-sans);
	color: var(--hett-muted);
}

/* --- knoppen --- */

.wc-block-components-button:not(.is-link) {
	border-radius: var(--r-pill);
	font: 700 var(--fs-meta)/1 var(--font-sans);
	padding: 16px 26px;
	min-height: 0;
}
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button {
	background: var(--hett-orange);
	color: #fff;
	border: 0;
}
.wc-block-cart__submit-button:hover,
.wc-block-components-checkout-place-order-button:hover { background: var(--hett-orange-hover); color: #fff; }

/* De aantalknopjes: rond en rustig, in plaats van drie losse vierkantjes. */
.wc-block-components-quantity-selector {
	border: 1.5px solid var(--hett-line);
	border-radius: var(--r-pill);
	overflow: hidden;
}
.wc-block-components-quantity-selector::after { display: none; }
.wc-block-components-quantity-selector__input { font: 700 var(--fs-meta)/1 var(--font-sans); color: var(--hett-ink); }
.wc-block-components-quantity-selector__button { color: var(--hett-muted); }
.wc-block-components-quantity-selector__button:hover { color: var(--hett-ink); }

/* --- stappen bij het afrekenen --- */

.wc-block-checkout__form .wc-block-components-checkout-step {
	border: 1px solid var(--hett-line);
	border-radius: var(--r-card);
	padding: var(--sp-7);
	margin-bottom: var(--sp-6);
	background: #fff;
}
.wc-block-components-checkout-step__heading { margin-top: 0; }
.wc-block-components-checkout-step__title {
	font: 800 var(--fs-h4)/1.3 var(--font-sans);
	letter-spacing: -.02em;
	color: var(--hett-ink);
}

/* --- het overzicht naast het afrekenen ---

   De standaardkolom is te smal voor onze samenstelling: "5-rail schuifwand"
   brak dan middenin af. Breder maken kost niets, want links staat een formulier
   dat toch niet breder hoeft dan een regel of vijftig tekens. */

/* Alleen naast het formulier, niet erboven. Op een telefoon klapt het
   besteloverzicht boven de velden en dan duwt een minimumbreedte van 360 het
   blok achttien pixels breder dan de velder eronder — net genoeg om scheef te
   staan zonder dat je meteen ziet waarom. */
@media (min-width: 901px) {
	.wc-block-checkout__sidebar { min-width: 360px; }
}

/* Het besteloverzicht rechts is smal; zonder deze regels breekt de productnaam
   over drie regels en valt de samenstelling uit elkaar. */
.wc-block-components-order-summary-item__description .wc-block-components-product-name {
	display: block;
	font-size: var(--fs-meta);
	line-height: 1.3;
}
.wc-block-components-order-summary-item__image { width: 56px; }
.wc-block-components-order-summary-item__image img { border-radius: 10px; }
.wc-block-components-order-summary-item__quantity { font-size: 11px; }
.wc-block-components-sidebar .wc-block-components-product-details > span {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 6px;
	align-items: start;
}
.wc-block-components-sidebar .wc-block-components-product-details__name {
	hyphens: none;
	word-break: normal;
	overflow-wrap: normal;
	white-space: nowrap;
}

/* De stukprijs onder de naam herhaalt de regelprijs rechts: elke regel is er
   precies één. Twee keer hetzelfde bedrag leest als een fout. */
.wc-block-components-order-summary-item__individual-prices { display: none; }
.wc-block-components-order-summary__content { padding-inline: 0; }
.wc-block-components-order-summary-item__image { width: 52px; }
.wc-block-components-order-summary-item__image img { border-radius: var(--r-media); }

/* --- meldingen --- */

.wc-block-components-notice-banner {
	border-radius: var(--r-media);
	font-family: var(--font-sans);
	font-size: var(--fs-fine);
}


/* --- ruimte rondom: de winkelwagen en de checkout zijn geen Elementor-pagina's,
   dus ze krijgen hier de marges die de rest van de site van de sectiecontainer
   krijgt. Zonder dit schuift de kop onder de vaste header. --- */

body.woocommerce-page .site-main {
	max-width: 1368px;
	margin-inline: auto;
	padding-block: clamp(40px, 6vw, 88px);
	padding-inline: var(--sp-6);
}
body.woocommerce-page .site-main > .page-header { margin-bottom: var(--sp-7); }
body.woocommerce-page .site-main > .page-header .entry-title {
	font: 800 var(--fs-h2)/1.1 var(--font-sans);
	letter-spacing: -.03em;
	color: var(--hett-ink);
	margin: 0;
}
.wc-block-cart, .wc-block-checkout { margin-block: 0; }
.wc-block-cart__main > h1,
.wc-block-checkout__main > h1 { margin-top: 0; }

/* De doorgaan-knop is een <a>; Hello Elementor onderstreept elke link in de
   content. Deze staat achteraan zodat hij die regel wint. */
a.wc-block-cart__submit-button,
a.wc-block-cart__submit-button:hover,
a.wc-block-cart__submit-button:focus,
a.wc-block-cart__submit-button:active,
a.wc-block-components-checkout-place-order-button {
	text-decoration: none;
	color: #fff;
}


/* ==============================================================
   HET KOOPBLOK: MATEN, GLAS, KLEUR EN OPTIES
   --------------------------------------------------------------
   De maten waren twee velden in millimeters. Dat leest als precisie die er niet
   is: HETT voert vaste glasmaten, dus wat er werkelijk te kiezen valt is welke
   ruit bij je opening hoort. Een keuzelijst zegt dat rechtstreeks — "195 cm tot
   204 cm (2 × 103 cm)" — en scheelt de typefout van een factor tien waar een
   millimeterveld om vraagt.

   Glas en kleur zijn beeld geworden. Twee soorten glas beschreven in vier
   regels tekst dwingt tot lezen om een verschil te zien dat je in één oogopslag
   ziet zodra het naast elkaar ligt.
   ============================================================== */

/* --- keuzelijsten --- */

.hett-shop__select {
	position: relative;
	display: block;
	margin-top: 8px;
}
.hett-shop__select::after {
	content: "";
	position: absolute;
	right: 16px;
	top: 50%;
	width: 10px;
	height: 10px;
	margin-top: -7px;
	border-right: 2px solid var(--hett-muted);
	border-bottom: 2px solid var(--hett-muted);
	transform: rotate(45deg);
	pointer-events: none;
}
.hett-shop__select select {
	appearance: none;
	-webkit-appearance: none;
	width: 100%;
	padding: 14px 42px 14px 16px;
	border: 1px solid var(--hett-line);
	border-radius: var(--r-media);
	background: #fff;
	font: 700 var(--fs-ui)/1.3 var(--font-sans);
	color: var(--hett-ink);
	cursor: pointer;
}
.hett-shop__select select:hover { border-color: var(--hett-line-strong); }
.hett-shop__select select:focus { outline: none; border-color: var(--hett-orange); box-shadow: 0 0 0 3px rgba(255, 115, 0, .14); }
.hett-shop__maten { align-items: start; }

/* --- de kop van een blok, met wat er gekozen staat rechts --- */

.hett-shop__blokkop {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
}
.hett-shop__blokkop--tweede { margin-top: var(--sp-7); }
.hett-shop__blokkop .hett-shop__bloktitel { margin: 0; }
.hett-shop__gekozen {
	font-size: var(--fs-fine);
	font-weight: 700;
	color: var(--hett-muted);
	text-align: right;
}

/* --- glas als tegel --- */

.hett-shop__tegels { display: flex; flex-wrap: wrap; gap: 12px; margin-top: var(--sp-5); }
.hett-shop__tegel { position: relative; display: block; width: 88px; cursor: pointer; }
.hett-shop__tegel input { position: absolute; opacity: 0; pointer-events: none; }
.hett-shop__tegelvlak {
	position: relative;
	display: grid;
	place-items: center;
	aspect-ratio: 1;
	border: 2px solid var(--hett-line);
	border-radius: var(--r-media);
	background: #fff;
	overflow: hidden;
	transition: border-color .15s ease;
}
/* De render vult het vlak. Een binnenmarge maakt van de foto een plaatje in een
   lijstje, en bij vijf van die vlakjes onder elkaar leest dat als een tabel met
   pictogrammen in plaats van als een rij producten. */
.hett-shop__tegelvlak img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hett-shop__tegelvlak svg { width: 100%; height: 100%; object-fit: contain; padding: 8px; }
.hett-shop__tegel:hover .hett-shop__tegelvlak { border-color: var(--hett-line-strong); }
.hett-shop__tegel input:checked + .hett-shop__tegelvlak { border-color: var(--hett-orange); }
.hett-shop__tegel input:focus-visible + .hett-shop__tegelvlak { outline: 2px solid var(--hett-orange); outline-offset: 2px; }
.hett-shop__tegelvink {
	position: absolute;
	top: 5px;
	left: 5px;
	display: grid;
	place-items: center;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: var(--hett-orange);
	color: #fff;
	opacity: 0;
	transform: scale(.7);
	transition: opacity .12s ease, transform .12s ease;
}
.hett-shop__tegel input:checked + .hett-shop__tegelvlak .hett-shop__tegelvink { opacity: 1; transform: scale(1); }
.hett-shop__tegelnaam { display: block; margin-top: 8px; font: 700 var(--fs-fine)/1.3 var(--font-sans); color: var(--hett-ink); }
.hett-shop__tegelprijs { display: block; margin-top: 2px; font: 800 var(--fs-fine)/1.3 var(--font-sans); color: var(--hett-orange); min-height: 1em; }
.hett-shop__tegelmeer { display: block; font: 700 11px/1.4 var(--font-sans); color: var(--hett-muted); min-height: 1.4em; }

/* --- kleur als staal --- */

.hett-shop__stalen { display: flex; flex-wrap: wrap; gap: 12px; margin-top: var(--sp-5); }
.hett-shop__staal { position: relative; display: block; width: 88px; cursor: pointer; }
.hett-shop__staal input { position: absolute; opacity: 0; pointer-events: none; }
.hett-shop__staalvlak {
	position: relative;
	display: block;
	aspect-ratio: 1;
	border: 2px solid var(--hett-line);
	border-radius: var(--r-media);
	background: var(--staal, #ccc);
	transition: border-color .15s ease;
}
.hett-shop__staal:hover .hett-shop__staalvlak { border-color: var(--hett-line-strong); }
.hett-shop__staal input:checked + .hett-shop__staalvlak { border-color: var(--hett-orange); }
.hett-shop__staal input:focus-visible + .hett-shop__staalvlak { outline: 2px solid var(--hett-orange); outline-offset: 2px; }
.hett-shop__staalvink {
	position: absolute;
	top: 5px;
	left: 5px;
	display: grid;
	place-items: center;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: var(--hett-orange);
	color: #fff;
	opacity: 0;
	transform: scale(.7);
	transition: opacity .12s ease, transform .12s ease;
}
.hett-shop__staal input:checked + .hett-shop__staalvlak .hett-shop__staalvink { opacity: 1; transform: scale(1); }
.hett-shop__staalnaam { display: block; margin-top: 8px; font: 700 var(--fs-fine)/1.3 var(--font-sans); color: var(--hett-muted); }

/* --- opties als kaart met foto --- */

.hett-shop__opties { display: grid; gap: 10px; margin-top: var(--sp-5); }
.hett-shop__optie {
	position: relative;
	display: grid;
	grid-template-columns: 72px minmax(0, 1fr) auto;
	align-items: center;
	gap: 14px;
	padding: 12px 16px;
	border: 1px solid var(--hett-line);
	border-radius: var(--r-card);
	background: #fff;
	cursor: pointer;
	transition: border-color .15s ease, background .15s ease;
}
.hett-shop__optie[hidden] { display: none; }
.hett-shop__optie:hover { border-color: var(--hett-line-strong); }
.hett-shop__optie > input[type="checkbox"] { position: absolute; opacity: 0; pointer-events: none; }
.hett-shop__optie:has(input[type="checkbox"]:checked) { border-color: var(--hett-orange); background: var(--hett-surface); }
.hett-shop__optie:has(input[type="checkbox"]:focus-visible) { outline: 2px solid var(--hett-orange); outline-offset: 2px; }

.hett-shop__optiebeeld {
	position: relative;
	display: grid;
	place-items: center;
	width: 72px;
	aspect-ratio: 1;
	border-radius: var(--r-media);
	background: var(--hett-photo-bg);
	overflow: hidden;
}
.hett-shop__optiebeeld img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hett-shop__optieleeg { color: var(--hett-muted); opacity: .6; }
.hett-shop__optievink {
	position: absolute;
	top: 4px;
	left: 4px;
	display: grid;
	place-items: center;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: var(--hett-orange);
	color: #fff;
	opacity: 0;
	transform: scale(.7);
	transition: opacity .12s ease, transform .12s ease;
}
.hett-shop__optie:has(input[type="checkbox"]:checked) .hett-shop__optievink { opacity: 1; transform: scale(1); }

.hett-shop__optiebody { display: block; min-width: 0; }
.hett-shop__optienaam {
	display: flex;
	align-items: center;
	gap: 6px;
	font: 700 var(--fs-ui)/1.3 var(--font-sans);
	color: var(--hett-ink);
}
.hett-shop__optie-eenheid { display: block; margin-top: 2px; font-size: var(--fs-fine); color: var(--hett-muted); }
.hett-shop__optieuitleg { display: block; margin-top: 6px; font-size: var(--fs-fine); line-height: 1.55; color: var(--hett-body); }
/* [hidden] is een attribuut en verliest van een klasse met display, dus zonder
   deze regel staat elke toelichting toch open en is het knopje zinloos. */
.hett-shop__optieuitleg[hidden] { display: none; }
.hett-shop__optieprijs { font: 800 var(--fs-ui)/1 var(--font-sans); color: var(--hett-orange); letter-spacing: -.02em; white-space: nowrap; }

.hett .hett-shop__info,
.hett .hett-shop__info:hover,
.hett .hett-shop__info:focus,
.hett .hett-shop__info:active { background: transparent; box-shadow: none; }

.hett-shop__info {
	display: inline-grid;
	place-items: center;
	width: 20px;
	height: 20px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: var(--hett-muted);
	cursor: pointer;
}
.hett-shop__info:hover { color: var(--hett-orange); }

.hett-shop__optie--aantal .hett-shop__input { margin-top: 10px; }
.hett-shop__optie--aantal .hett-shop__input[hidden] { display: none; }

/* --- een verwijderde regel verdwijnt meteen uit de zijbalk --- */

.hett-cartpanel .woocommerce-mini-cart-item.is-weg {
	opacity: .35;
	pointer-events: none;
	transition: opacity .15s ease;
}
.hett-cartpanel__inner.is-laden { opacity: .6; transition: opacity .12s ease; }

/* --- op een smal scherm --- */

@media (max-width: 900px) {
	.hett-shop__tegel,
	.hett-shop__staal { width: 76px; }
	.hett-shop__optie { grid-template-columns: 56px minmax(0, 1fr) auto; gap: 12px; }
	.hett-shop__optiebeeld { width: 56px; }
}


/* ==============================================================
   BLOG, ZOEKEN EN DE 404
   --------------------------------------------------------------
   Deze vier paginatypes liepen door het kale sjabloon van Hello Elementor: geen
   marges, de titel tegen de header, en tekst over de volle schermbreedte. Een
   regel van elfhonderd pixels is niet te lezen — een mens raakt de volgende
   regel kwijt ergens voorbij de vijfenzeventig tekens — en juist deze pagina's
   zijn waar zoekverkeer binnenkomt.
   ============================================================== */

/* --- de kaarten op het overzicht en bij de zoekresultaten --- */

.hett-postgrid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
	gap: var(--grid-gap);
}

.hett-postkaart { min-width: 0; }
.hett-postkaart__link {
	display: flex;
	flex-direction: column;
	height: 100%;
	border: 1px solid var(--hett-line);
	border-radius: var(--r-card);
	background: #fff;
	overflow: hidden;
	text-decoration: none;
	transition: border-color .15s ease, transform .15s ease;
}
.hett-postkaart__link:hover { border-color: var(--hett-line-strong); transform: translateY(-2px); }
.hett-postkaart__link:focus-visible { outline: 2px solid var(--hett-orange); outline-offset: 3px; }

.hett-postkaart__beeld {
	display: block;
	aspect-ratio: 3 / 2;
	background: var(--hett-photo-bg);
	overflow: hidden;
}
.hett-postkaart__beeld img { display: block; width: 100%; height: 100%; object-fit: cover; }

.hett-postkaart__body { display: flex; flex-direction: column; gap: 8px; padding: var(--sp-6); flex: 1; }
.hett-postkaart__meta { font-size: var(--fs-fine); font-weight: 600; color: var(--hett-muted); }
.hett-postkaart__titel { font: 800 var(--fs-h4)/1.3 var(--font-sans); letter-spacing: -.02em; color: var(--hett-ink); }
.hett-postkaart__tekst { font-size: var(--fs-meta); line-height: 1.6; color: var(--hett-body); }
.hett-postkaart__meer {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-top: auto;
	padding-top: var(--sp-4);
	font: 700 var(--fs-meta)/1 var(--font-sans);
	color: var(--hett-orange);
}

/* --- het artikel zelf --- */

.hett-artikel__meta { font-size: var(--fs-fine); font-weight: 600; color: var(--hett-muted); margin: 0 0 var(--sp-6); }

.hett-artikel__beeld {
	margin: 0 0 var(--sp-9);
	border-radius: var(--r-media-lg);
	overflow: hidden;
	background: var(--hett-photo-bg);
	aspect-ratio: 16 / 9;
}
.hett-artikel__beeld img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* De leesbreedte. hett-prose zet hem al op de losse blokken; hier ook op het
   geheel, zodat een tabel of een afbeelding in de tekst niet ineens uitbreekt. */
.hett-artikel__body { max-width: 76ch; }

.hett-artikel__voet { margin-top: var(--sp-9); padding-top: var(--sp-6); border-top: 1px solid var(--hett-line); }
.hett-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font: 700 var(--fs-ui)/1 var(--font-sans);
	color: var(--hett-ink);
	text-decoration: none;
}
.hett-link:hover { color: var(--hett-orange); }
.hett-link__terug { transform: rotate(180deg); }

.hett-artikel__cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--sp-6);
	margin-top: var(--sp-9);
	padding: var(--sp-8);
	border-radius: var(--r-card);
	background: var(--hett-surface);
}
.hett-artikel__cta h2 { margin: 0 0 6px; }
.hett-artikel__cta p { margin: 0; max-width: 52ch; color: var(--hett-body); }
.hett-artikel__ctaknoppen { display: flex; flex-wrap: wrap; gap: 12px; }

/* --- zoeken --- */

.hett-zoek { display: flex; flex-wrap: wrap; gap: 10px; max-width: 560px; }
.hett-zoek__veld {
	flex: 1 1 220px;
	min-width: 0;
	padding: 14px 16px;
	border: 1px solid var(--hett-line);
	border-radius: var(--r-media);
	background: #fff;
	font: 500 var(--fs-ui)/1.3 var(--font-sans);
	color: var(--hett-ink);
}
.hett-zoek__veld:focus { outline: none; border-color: var(--hett-orange); box-shadow: 0 0 0 3px rgba(255, 115, 0, .14); }
.hett-zoek__knop { flex: none; }
.hett-zoekbalk { margin-bottom: var(--sp-8); }

/* --- paginering --- */

.hett-pagination, .pagination { margin-top: var(--sp-9); }
.hett-pagination .nav-links,
.pagination .nav-links { display: flex; flex-wrap: wrap; gap: 8px; }
.hett-pagination .page-numbers,
.pagination .page-numbers {
	display: grid;
	place-items: center;
	min-width: 42px;
	height: 42px;
	padding: 0 12px;
	border: 1px solid var(--hett-line);
	border-radius: var(--r-pill);
	font: 700 var(--fs-meta)/1 var(--font-sans);
	color: var(--hett-ink);
	text-decoration: none;
}
.hett-pagination .page-numbers:hover,
.pagination .page-numbers:hover { border-color: var(--hett-line-strong); }
.hett-pagination .page-numbers.current,
.pagination .page-numbers.current { background: var(--hett-ink); border-color: var(--hett-ink); color: #fff; }

/* --- de 404 --- */

.hett-leeg {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
	gap: var(--grid-gap);
	align-items: start;
}
.hett-leeg h2 { margin: 0 0 var(--sp-5); }
.hett-leeg__lijst { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.hett-leeg__lijst a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 14px 0;
	border-bottom: 1px solid var(--hett-line);
	font: 700 var(--fs-ui)/1.3 var(--font-sans);
	color: var(--hett-ink);
	text-decoration: none;
}
.hett-leeg__lijst a:hover { color: var(--hett-orange); }
.hett-leeg__lijst svg { flex: none; color: var(--hett-orange); }

@media (max-width: 700px) {
	.hett-artikel__cta { padding: var(--sp-6); }
	.hett-artikel__ctaknoppen .hett-btn { flex: 1 1 100%; justify-content: center; }
}


/* ==============================================================
   MOBIEL: WAT ER OP EEN TELEFOON MISGING
   --------------------------------------------------------------
   Nagelopen op een echte 390px-weergave. Alles hieronder is een gemeten
   probleem, geen smaakkwestie.
   ============================================================== */

@media (max-width: 900px) {

	/* --- 1. De winkelwagen stak 56 pixels buiten het scherm ---
	   WordPress geeft .alignwide een negatieve marge van 80 pixels om uit de
	   tekstkolom te breken. Binnen onze eigen container met 24 pixels marge
	   levert dat 56 pixels buiten beeld op: de productfoto hing half naast de
	   telefoon. Binnen deze pagina's is uitbreken zinloos — de container ís al
	   de volle breedte. */
	body.woocommerce-page .site-main .alignwide,
	body.woocommerce-page .site-main .alignfull {
		margin-inline: 0;
		max-width: 100%;
		width: auto;
	}

	/* --- 2. Twee tegenstrijdige knoppen onderaan de checkout ---
	   De actiebalk met "Offerte aanvragen" stond over de winkelwagen en de
	   afrekenpagina heen. Wie op het punt staat te betalen krijgt dan een knop
	   te zien die hem uit de bestelling trekt. Op die twee pagina's is er maar
	   één actie die telt. */
	body.woocommerce-cart .hett-mobilebar,
	body.woocommerce-checkout .hett-mobilebar,
	body.woocommerce-order-received .hett-mobilebar { display: none; }

	/* De winkelwagen heeft wél een eigen vaste knop onderaan — die van
	   WooCommerce zelf, 79 pixels hoog. Zonder ruimte eronder ligt hij over de
	   tweede regel van de bestelling heen. */
	body.woocommerce-cart.hett { padding-bottom: 100px; }
	body.woocommerce-checkout.hett,
	body.woocommerce-order-received.hett { padding-bottom: var(--sp-6); }

	/* --- 3. De knop terug naar boven lag over de tekst ---
	   Naast een balk onderaan is hij dubbelop: die balk staat er al en houdt de
	   belangrijkste actie binnen duimbereik. Twee zwevende knoppen over de tekst
	   heen is er één te veel. */
	body:has(.hett-shop__bar) .hett-totop,
	body.woocommerce-cart .hett-totop,
	body.woocommerce-checkout .hett-totop { display: none; }

	/* --- 4. De duimen van de galerij vielen op twee regels ---
	   Vier foto's van 84 pixels passen niet naast elkaar op 390. Afbreken naar
	   een tweede regel duwt het koopblok omlaag; schuiven kost geen hoogte en
	   is op een telefoon de vertrouwde beweging. */
	.hett-shop__duimen {
		flex-wrap: nowrap;
		overflow-x: auto;
		scroll-snap-type: x proximity;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		padding-bottom: 2px;
	}
	.hett-shop__duimen::-webkit-scrollbar { display: none; }
	.hett-shop__duim { flex: 0 0 auto; scroll-snap-align: start; }

	/* --- 5. Voetnootlinks van 21 pixels hoog ---
	   Te klein om te raken zonder te missen. Ze staan onder elkaar, dus er is
	   ruimte zat om ze op een fatsoenlijke hoogte te zetten. */
	.hett-footer__list li a,
	.hett-footer__contact li a {
		display: inline-flex;
		align-items: center;
		min-height: 40px;
	}
	/* Met hogere regels erin mag de tussenruimte kleiner: anders wordt de
	   footer op een telefoon een scrollsessie op zich. */
	.hett-footer__list { gap: 0; }

	/* --- 6. De taalwissel was 28 pixels hoog --- */
	.hett-lang__toggle { min-height: 40px; }
}

/* --- 7. De samenstelling in de winkelwagen werd platgeknepen ---
   "Inbouwbreedte: 267 cm tot 275 cm (3 × 93 cm)" liep over vier regels in een
   kolom van zeventig pixels breed, terwijl er rechts ruimte over was. Het label
   krijgt precies wat het nodig heeft, de waarde de rest. */
.wc-block-cart-item__wrap .wc-block-components-product-details > span,
.wc-block-components-order-summary-item__description .wc-block-components-product-details > span {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 6px;
	align-items: start;
}
.wc-block-cart-item__wrap .wc-block-components-product-details__name {
	white-space: nowrap;
	word-break: normal;
	overflow-wrap: normal;
	hyphens: none;
}

@media (max-width: 480px) {
	/* Onder de 480 past zelfs dat niet meer naast elkaar: dan het label boven
	   de waarde, want een afgekapte maat is erger dan een regel extra. */
	.wc-block-cart-item__wrap .wc-block-components-product-details > span {
		grid-template-columns: 1fr;
		gap: 0;
	}
	.wc-block-cart-item__wrap .wc-block-components-product-details__name {
		white-space: normal;
		font-size: var(--fs-fine);
	}
}

/* --- 8. Naam en prijs botsten in de optiekaarten ---
   Drie kolommen naast elkaar — foto, naam, prijs — passen op 390 pixels net
   niet. "Funderingskoker" liep dwars door "+ € 90,00" heen. Onder de 480 gaat
   de prijs daarom onder de naam staan: dezelfde kaart, één regel hoger. */
@media (max-width: 480px) {
	.hett-shop__optie {
		grid-template-columns: 56px minmax(0, 1fr);
		row-gap: 2px;
	}
	.hett-shop__optieprijs {
		grid-column: 2;
		font-size: var(--fs-meta);
	}
	.hett-shop__optienaam {
		flex-wrap: wrap;
		min-width: 0;
	}
}

/* ------------------------------------------------------- showroomafspraak */

.hett-afspraak { display: grid; gap: var(--sp-7); }
.hett-afspraak__intro { max-width: 62ch; }
.hett-afspraak__intro .hett-eyebrow { display: block; margin-bottom: 14px; }
.hett-afspraak__intro .hett-intro { margin-bottom: var(--sp-6); }
.hett-afspraak__knop { display: inline-flex; align-items: center; gap: 10px; }

.hett-afspraak__bellen { margin-top: var(--sp-4); font-size: var(--fs-meta); color: var(--hett-muted); }
.hett-afspraak__bellen a { color: var(--hett-orange-text); font-weight: 700; }

/* Het kader krijgt zijn hoogte van de widget en niet van de inhoud: het iframe
   van Calendly meldt zijn eigen hoogte niet, dus zonder vaste maat klapt het
   dicht tot nul en lijkt er niets te gebeuren na de klik. */
.hett-afspraak__kader {
	background: #fff;
	border: 1px solid var(--hett-line);
	border-radius: var(--r-panel);
	overflow: hidden;
}
.hett-afspraak__kader iframe { display: block; width: 100%; height: 100%; border: 0; }
.hett-afspraak__kader[hidden] { display: none; }

@media (max-width: 700px) {
	.hett-afspraak__kader { border-radius: var(--r-card); }
}

/* ------------------------------------------------- de configuratorpagina's

   Daar staat één ding op het scherm dat telt: het venster van Meetpiloot. Alles
   eromheen duwt dat naar beneden, en op een telefoon betekende dat scrollen
   voordat je iets kon kiezen. Vandaar: geen intro, geen band eromheen, en
   bovenaan minder lucht. De klasse komt van hett_body_class(). */

.hett-configuratorpagina .hett-pagehead--bar {
	background: #fff;
	border-bottom: 0;
	padding-block: 40px 24px;
}

.hett-configuratorpagina .hett-pagehead .hett-intro { display: none; }

@media (max-width: 700px) {
	.hett-configuratorpagina .hett-pagehead--bar { padding-block: 18px 14px; }
	.hett-configuratorpagina .hett-crumbs { margin-bottom: 8px; }
	.hett-configuratorpagina .hett-pagehead .hett-h1 { margin-bottom: 0; }
}

/* ================================================= menubalk over de fotohero

   De opzet van valkveranda.nl: de topbalk blijft een eigen strook bovenaan, en
   de menubalk daaronder ligt doorzichtig óver het beeld. Daarmee begint de foto
   meteen onder de topbalk in plaats van honderdtachtig pixels lager — op een
   telefoon scheelde dat het halve eerste scherm.

   De klasse komt van hett_body_class(); hett_is_fotohero() kijkt of er een
   hett-hero op de pagina staat. Op de binnenpagina's zonder fotohero verandert
   er niets: daar blijft de balk gewoon wit, want wit menu op een lichte
   titelbalk leest niemand. */

.hett-fotohero .hett-header {
	background: transparent;
	border-bottom: 0;
	/* Zijn eigen hoogte terugnemen, zodat de hero eronder doorloopt. Dit gaat
	   met een negatieve marge en niet met position:absolute: de balk staat in
	   een eigen Elementor-sjabloon boven de inhoud, en absoluut positioneren
	   hangt dan af van welk element daar toevallig omheen staat. */
	margin-bottom: calc(var(--hett-navhoogte) * -1);
	z-index: 45;
}

.hett-fotohero .hett-header .hett-nav__link { color: #fff; }
.hett-fotohero .hett-header .hett-nav__item--accent .hett-nav__link { color: var(--hett-orange); }

.hett-fotohero .hett-header .hett-btn--outline {
	color: #fff;
	border-color: rgba(255, 255, 255, .55);
}
.hett-fotohero .hett-header .hett-btn--outline:hover { border-color: #fff; }

/* Mandje en hamburger op de fotohero.
   *
   Allebei namen ze de witte achtergrond mee uit de gewone balk — wit icoon op
   een wit vlak, dus je zag alleen een cirkel met een cijfertje en een leeg
   vierkantje.

   Alle vier de toestanden staan er los bij, en dat is geen slordigheid: het
   beschermblok verderop in dit bestand zet `background: #fff` op
   `button.hett-burger:hover` en dergelijke. Noem je hier alleen de ruststand,
   dan springt de knop bij de eerste aanraking alsnog wit — en op een telefoon
   is aanraken precies wat er gebeurt. */
.hett-fotohero .hett-header .hett-cartbtn,
.hett-fotohero .hett-header .hett-cartbtn:hover,
.hett-fotohero .hett-header .hett-cartbtn:focus,
.hett-fotohero .hett-header .hett-cartbtn:active,
.hett-fotohero .hett-header .hett-burger,
.hett-fotohero .hett-header .hett-burger:hover,
.hett-fotohero .hett-header .hett-burger:focus,
.hett-fotohero .hett-header .hett-burger:active {
	background: transparent;
	color: #fff;
	border-color: rgba(255, 255, 255, .55);
}

.hett-fotohero .hett-header .hett-cartbtn:hover,
.hett-fotohero .hett-header .hett-burger:hover { border-color: #fff; }

.hett-logo__zwart { display: none; }

/* De hero zelf gaat van rand tot rand: een ingekaderd paneel met ronde hoeken
   laat de balk over een witte kier zweven, en dan klopt er niets van. */
.hett-fotohero .hett-hero { padding: 0; }
.hett-fotohero .hett-hero__panel { border-radius: 0; }

/* En de tekst zakt met de hoogte van de balk mee naar beneden, zodat hij er
   niet achter verdwijnt. */
/* De hero loopt van rand tot rand, maar de tekst erin hoort op dezelfde lijn
   te staan als alle andere inhoud. Zonder dit begint de kop op twintig pixels
   van de schermrand terwijl de rest van de pagina netjes in de kolom staat —
   en dat valt op een breed scherm meteen op. */
.hett-fotohero .hett-hero__body {
	max-width: var(--content-max);
	width: 100%;
	margin-inline: auto;
	padding-inline: var(--page-x);
	padding-block: calc(var(--panel-pad) + var(--hett-navhoogte)) var(--panel-pad);
}

.hett-fotohero .hett-hero__title,
.hett-fotohero .hett-hero__lead,
.hett-fotohero .hett-hero__actions { max-width: 660px; }

/* Voorbij de hero wordt de balk wit — een doorzichtige balk met witte letters
   over gewone inhoud is niet te lezen. De klasse komt van hett.js. */
.hett-fotohero .hett-header.is-vast {
	background: #fff;
	border-bottom: 1px solid var(--hett-line);
}
.hett-fotohero .hett-header.is-vast .hett-nav__link { color: var(--hett-ink); }
.hett-fotohero .hett-header.is-vast .hett-btn--outline {
	color: var(--hett-ink);
	border-color: var(--hett-line-strong);
}

/* En voorbij de hero alles weer terug, met dezelfde toestanden erbij. */
.hett-fotohero .hett-header.is-vast .hett-cartbtn,
.hett-fotohero .hett-header.is-vast .hett-cartbtn:hover,
.hett-fotohero .hett-header.is-vast .hett-cartbtn:focus,
.hett-fotohero .hett-header.is-vast .hett-cartbtn:active,
.hett-fotohero .hett-header.is-vast .hett-burger,
.hett-fotohero .hett-header.is-vast .hett-burger:hover,
.hett-fotohero .hett-header.is-vast .hett-burger:focus,
.hett-fotohero .hett-header.is-vast .hett-burger:active {
	background: #fff;
	color: var(--hett-ink);
	border-color: var(--hett-line-strong);
}
.hett-fotohero .hett-header.is-vast .hett-logo__wit { display: none; }
.hett-fotohero .hett-header.is-vast .hett-logo__zwart { display: block; }

@media (max-width: 900px) {
	:root { --hett-navhoogte: 64px; }

	/* De USP-strook onder het menu duwde de foto nog eens eenenveertig pixels
	   naar beneden. Op een telefoon is dat het verschil tussen een beeld dat je
	   ziet en een beeld waar je naartoe moet scrollen; de USP's staan verderop
	   op de pagina toch nog een keer. */
	.hett-fotohero .hett-uspbar { display: none; }

	.hett-fotohero .hett-hero__body { padding-inline: var(--page-x); }
}

/* ================================================================ brochure

   Donker paneel, de brochure ernaast, en de brochure steekt er bovenuit. Dat
   uitsteken is het punt: een omslag die netjes binnen het vlak blijft leest als
   een plaatje bij een tekst, een die eroverheen valt leest als iets dat je kunt
   oppakken.

   De ruimte die hij boven zich nodig heeft wordt hier gereserveerd door de
   sectie, niet weggenomen met een negatieve marge op het beeld. Dat laatste
   werkt tot iemand het blok een keer bovenaan een pagina zet, en dan valt de
   brochure over de sectie erboven heen. */

.hett-brochure__sectie { padding-block-start: calc(var(--section-y) + var(--hett-uitsteek, 120px)); }

.hett-brochure {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	align-items: center;
	gap: var(--sp-10);
	padding: var(--panel-pad);
	border-radius: var(--r-panel);
	background: var(--hett-ink-3);
	color: var(--hett-on-dark-body);
	/* Niet klippen: daar hangt het uitsteken van af. */
	overflow: visible;
}

.hett-brochure--ink { background: var(--hett-ink); }
.hett-brochure--oranje { background: var(--hett-orange); color: rgba(255, 255, 255, .92); }

.hett-brochure--rechts { grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr); }
.hett-brochure--rechts .hett-brochure__beeld { order: 2; }

.hett-brochure__beeld {
	/* De padding van het paneel telt mee, anders betekent de schuifregelaar op
	   120 in de praktijk 68: de marge werkt binnen het vlak, de bezoeker ziet
	   de afstand tot de rand. */
	margin-block-start: calc((var(--hett-uitsteek, 120px) + var(--panel-pad)) * -1);
	align-self: start;
	display: flex;
	justify-content: center;
}

/* Begrensd op hoogte en niet op breedte. Een staande omslag in een halve kolom
   van bijna zeshonderd pixels wordt anders zevenhonderd hoog, en dan bepaalt het
   plaatje de hoogte van het hele blok in plaats van de tekst. Een liggende
   mockup vult de kolom gewoon. */
.hett-brochure__beeld img {
	width: auto;
	max-width: 100%;
	max-height: clamp(260px, 30vw, 440px);
	height: auto;
}

.hett-brochure--schaduw .hett-brochure__beeld img { filter: drop-shadow(0 24px 40px rgba(20, 22, 26, .38)); }

.hett-brochure__tekst .hett-h2 { color: #fff; margin: 0 0 var(--sp-5); }
.hett-brochure__lead { margin: 0 0 var(--sp-7); max-width: 54ch; }
.hett-brochure--oranje .hett-brochure__tekst .hett-h2 { color: #fff; }

@media (max-width: 900px) {
	/* Naast elkaar past niet meer: de omslag wordt dan een postzegel en de tekst
	   een kolom van vier woorden breed. Onder elkaar, en het uitsteken halveert
	   — op een telefoon is honderdtwintig pixels boven het vlak een gat. */
	.hett-brochure,
	.hett-brochure--rechts { grid-template-columns: minmax(0, 1fr); gap: var(--sp-7); }
	.hett-brochure--rechts .hett-brochure__beeld { order: 0; }

	.hett-brochure__beeld { max-width: 320px; margin-inline: auto; }
	.hett-brochure__tekst { text-align: center; }
	.hett-brochure__lead { margin-inline: auto; }
}

/* ------------------------------------------------------ USP's als carrousel

   Op een telefoon stonden de vier USP's onder elkaar: een blok van vierhonderd
   pixels dat je voorbijscrolt zonder te lezen. Ze schuiven nu langs, zodat ze
   één regel hoog zijn en toch alle vier voorbijkomen.

   De kopieën achter de rij komen van hett.js; zonder dat tweede stel springt de
   band aan het eind zichtbaar terug naar het begin. */

.hett-usp[aria-hidden="true"] { display: none; }

@keyframes hett-uspsloop {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }
}

@media (max-width: 900px) {
	.hett-usps--loop .hett-wrap { overflow: hidden; padding-inline: 0; }

	.hett-usps--loop .hett-usps__grid {
		display: flex;
		width: max-content;
		gap: var(--sp-8);
		padding-block: var(--sp-7);
		padding-inline: var(--page-x);
		animation: hett-uspsloop 48s linear infinite;
	}

	.hett-usps--loop .hett-usp,
	.hett-usps--loop .hett-usp[aria-hidden="true"] {
		display: flex;
		width: 250px;
		flex: none;
	}

	/* Stilzetten zodra iemand hem aanraakt of er met de toetsenbordfocus in
	   komt — anders lees je halverwege een regel die wegschuift. */
	.hett-usps--loop:hover .hett-usps__grid,
	.hett-usps--loop:focus-within .hett-usps__grid { animation-play-state: paused; }
}

@media (prefers-reduced-motion: reduce) {
	.hett-usps--loop .hett-usps__grid { animation: none; }
}

/* ------------------------------------------------------- compacter op mobiel

   De paginatitelbalk was op een telefoon 419 pixels hoog: kruimelpad, bovenkopje,
   titel en een inleiding van bijna vijftig woorden, en dan begint de pagina pas.
   Wie op een productpagina binnenkomt heeft de titel in één oogopslag gelezen en
   wil door. */

@media (max-width: 700px) {
	.hett-pagehead--bar { padding-block: 26px 22px; }
	.hett-pagehead .hett-h1 { margin-bottom: 10px; }
	.hett-pagehead .hett-eyebrow { margin-bottom: 10px; }
	.hett-pagehead .hett-intro { font-size: 15px; }
	.hett-crumbs { margin-bottom: 10px; }
}
