.elementor-kit-6{--e-global-color-primary:#2B5D42;--e-global-color-secondary:#CCBA78;--e-global-color-text:#2E2E2E;--e-global-color-accent:#0D0D0D;--e-global-color-bone:#F2F1ED;--e-global-color-papier:#FBFAF7;--e-global-color-steenvlak:#E6E3DB;--e-global-color-nacht:#0D0D0D;--e-global-color-nacht-op:#1C1C1C;--e-global-color-groen-licht:#35704F;--e-global-color-groen-sluier:rgba(43,93,66,0.10);--e-global-color-geel-zacht:#DDD0A0;--e-global-color-steen:#5F5F5F;--e-global-color-mist:#AFAFAF;--e-global-color-lijn:rgba(13,13,13,0.10);--e-global-color-lijn-sterk:rgba(13,13,13,0.18);--e-global-color-lijn-zacht:rgba(13,13,13,0.06);--e-global-color-wit:#FFFFFF;--e-global-typography-primary-font-family:"Syne";--e-global-typography-primary-font-size:38px;--e-global-typography-primary-font-weight:700;--e-global-typography-primary-text-transform:uppercase;--e-global-typography-primary-line-height:1.1em;--e-global-typography-primary-letter-spacing:-0.01em;--e-global-typography-secondary-font-family:"Syne";--e-global-typography-secondary-font-size:21px;--e-global-typography-secondary-font-weight:700;--e-global-typography-secondary-text-transform:uppercase;--e-global-typography-secondary-line-height:1.2em;--e-global-typography-secondary-letter-spacing:-0.005em;--e-global-typography-text-font-family:"Inter";--e-global-typography-text-font-size:17px;--e-global-typography-text-font-weight:300;--e-global-typography-text-line-height:1.7em;--e-global-typography-accent-font-family:"Inter";--e-global-typography-accent-font-size:11px;--e-global-typography-accent-font-weight:600;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-accent-line-height:1.2em;--e-global-typography-accent-letter-spacing:0.24em;--e-global-typography-display-font-family:"Pathway Gothic One";--e-global-typography-display-font-size:132px;--e-global-typography-display-font-weight:400;--e-global-typography-display-text-transform:uppercase;--e-global-typography-display-line-height:0.92em;--e-global-typography-display-letter-spacing:0.005em;--e-global-typography-h1-font-family:"Pathway Gothic One";--e-global-typography-h1-font-size:88px;--e-global-typography-h1-font-weight:400;--e-global-typography-h1-text-transform:uppercase;--e-global-typography-h1-line-height:0.96em;--e-global-typography-h1-letter-spacing:0.005em;--e-global-typography-h4-font-family:"Syne";--e-global-typography-h4-font-size:16px;--e-global-typography-h4-font-weight:700;--e-global-typography-h4-text-transform:uppercase;--e-global-typography-h4-line-height:1.3em;--e-global-typography-h4-letter-spacing:0.02em;--e-global-typography-lead-font-family:"Inter";--e-global-typography-lead-font-size:20px;--e-global-typography-lead-font-weight:300;--e-global-typography-lead-line-height:1.6em;--e-global-typography-body-klein-font-family:"Inter";--e-global-typography-body-klein-font-size:15px;--e-global-typography-body-klein-font-weight:300;--e-global-typography-body-klein-line-height:1.6em;--e-global-typography-micro-font-family:"Inter";--e-global-typography-micro-font-size:10.5px;--e-global-typography-micro-font-weight:600;--e-global-typography-micro-text-transform:uppercase;--e-global-typography-micro-line-height:1.2em;--e-global-typography-micro-letter-spacing:0.18em;--e-global-typography-stat-font-family:"Pathway Gothic One";--e-global-typography-stat-font-size:72px;--e-global-typography-stat-font-weight:400;--e-global-typography-stat-text-transform:uppercase;--e-global-typography-stat-line-height:0.9em;--e-global-typography-stat-letter-spacing:0.01em;--e-global-typography-cijfer-font-family:"Pathway Gothic One";--e-global-typography-cijfer-font-size:150px;--e-global-typography-cijfer-font-weight:400;--e-global-typography-cijfer-line-height:0.85em;--e-global-typography-cijfer-letter-spacing:0.01em;--e-global-typography-citaat-font-family:"Syne";--e-global-typography-citaat-font-size:30px;--e-global-typography-citaat-font-weight:700;--e-global-typography-citaat-text-transform:uppercase;--e-global-typography-citaat-line-height:1.25em;--e-global-typography-citaat-letter-spacing:-0.01em;--e-global-typography-bijschrift-font-family:"Inter";--e-global-typography-bijschrift-font-size:13px;--e-global-typography-bijschrift-font-weight:400;--e-global-typography-bijschrift-line-height:1.5em;--e-global-typography-hoofdstuk-font-family:"Syne";--e-global-typography-hoofdstuk-font-size:13px;--e-global-typography-hoofdstuk-font-weight:700;--e-global-typography-hoofdstuk-text-transform:uppercase;--e-global-typography-hoofdstuk-line-height:1em;--e-global-typography-hoofdstuk-letter-spacing:0.1em;--e-global-typography-knop-font-family:"Inter";--e-global-typography-knop-font-size:13px;--e-global-typography-knop-font-weight:600;--e-global-typography-knop-text-transform:uppercase;--e-global-typography-knop-line-height:1em;--e-global-typography-knop-letter-spacing:0.14em;--e-global-typography-nav-font-family:"Inter";--e-global-typography-nav-font-size:13px;--e-global-typography-nav-font-weight:600;--e-global-typography-nav-text-transform:uppercase;--e-global-typography-nav-line-height:1em;--e-global-typography-nav-letter-spacing:0.12em;--e-global-typography-prijs-font-family:"Pathway Gothic One";--e-global-typography-prijs-font-size:30px;--e-global-typography-prijs-font-weight:400;--e-global-typography-prijs-line-height:1em;--e-global-typography-prijs-letter-spacing:0.01em;background-color:var( --e-global-color-steenvlak );color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );}.elementor-kit-6 button,.elementor-kit-6 input[type="button"],.elementor-kit-6 input[type="submit"],.elementor-kit-6 .elementor-button{background-color:var( --e-global-color-primary );font-family:"Inter", sans-serif;font-size:13px;font-weight:600;text-transform:uppercase;line-height:1em;letter-spacing:0.14em;color:var( --e-global-color-bone );border-style:solid;border-width:1px 1px 1px 1px;border-color:var( --e-global-color-primary );border-radius:999px 999px 999px 999px;padding:18px 32px 18px 32px;}.elementor-kit-6 button:hover,.elementor-kit-6 button:focus,.elementor-kit-6 input[type="button"]:hover,.elementor-kit-6 input[type="button"]:focus,.elementor-kit-6 input[type="submit"]:hover,.elementor-kit-6 input[type="submit"]:focus,.elementor-kit-6 .elementor-button:hover,.elementor-kit-6 .elementor-button:focus{background-color:var( --e-global-color-accent );color:var( --e-global-color-secondary );}.elementor-kit-6 e-page-transition{background-color:#FFBC7D;}.elementor-kit-6 a{color:var( --e-global-color-primary );}.elementor-kit-6 a:hover{color:var( --e-global-color-accent );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1320px;}.e-con{--container-max-width:1320px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-kit-6{--e-global-typography-primary-font-size:32px;--e-global-typography-secondary-font-size:20px;--e-global-typography-display-font-size:84px;--e-global-typography-h1-font-size:60px;font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-6{--e-global-typography-primary-font-size:25px;--e-global-typography-secondary-font-size:18px;--e-global-typography-text-font-size:16px;--e-global-typography-accent-font-size:11px;--e-global-typography-display-font-size:34px;--e-global-typography-h1-font-size:30px;--e-global-typography-h4-font-size:15px;--e-global-typography-lead-font-size:17px;--e-global-typography-body-klein-font-size:14px;--e-global-typography-micro-font-size:10.5px;--e-global-typography-stat-font-size:38px;--e-global-typography-cijfer-font-size:60px;--e-global-typography-citaat-font-size:19px;--e-global-typography-bijschrift-font-size:13px;--e-global-typography-hoofdstuk-font-size:13px;--e-global-typography-knop-font-size:13px;--e-global-typography-nav-font-size:15px;--e-global-typography-prijs-font-size:26px;font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );}.elementor-kit-6 button,.elementor-kit-6 input[type="button"],.elementor-kit-6 input[type="submit"],.elementor-kit-6 .elementor-button{font-size:15px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* Hungry Cyclist — gedragslaag.
   Hier staat alleen wat een Elementor-widget zelf niet kan uitdrukken: de
   gouden lijn, het patroon, states, sticky gedrag, afkappen op regels en
   toegankelijkheid. Kleur, typografie en ruimte horen NIET hier maar in de
   widget-instellingen, zodat ze via de globals bewerkbaar blijven.

   De drie merkletters (Pathway Gothic One, Syne, Inter) staan alle drie in
   Elementor's eigen fontlijst en worden dus door Elementor geladen. Er is hier
   geen @import nodig. */

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

html { scroll-behavior: smooth; }

/* De pagina ligt als een blok op een iets donkerder vlak: elke sectie springt
   in en de eerste en laatste ronden af. Tussen de secties wordt niet afgerond,
   anders ontstaan er wiggen achtergrond die eruitzien als happen uit de rand. */



/* Kan niet in Elementor: bij een boxed container negeert Elementor de
   breedte-instelling, en 100% plus een marge van 20px steekt rechts buiten
   beeld. Marge, overflow en de rest staan wél in de sectie-instellingen. */
/* Twee klassen, want Elementor zet zelf max-width: min(100%, var(--width))
   met dezelfde specificiteit als één klasse plus een attribuut. */
.e-con.hc-sectie { max-width: calc(100% - 40px); transition: border-radius .35s cubic-bezier(.2, .7, .2, 1); }
@media (max-width: 767px) { .e-con.hc-sectie { max-width: calc(100% - 20px); } }

/* De sectie die op dit moment tegen de header aan ligt, krijgt ronde
   bovenhoeken. Daardoor lijkt elk blok onder de header door te schuiven in
   plaats van er hard tegenaan te botsen. De bewegingslaag zet de klasse. */
/* Twee klassen extra zodat deze regel wint van de eerste- en laatste-sectie
   regels hierboven; die hebben een hogere specificiteit door de pseudo-klasse. */
.elementor > .hc-sectie.is-onder-header {
  border-top-left-radius: 40px;
  border-top-right-radius: 40px;
}
@media (max-width: 767px) {
  .elementor > .hc-sectie.is-onder-header {
    border-top-left-radius: 26px; border-top-right-radius: 26px;
  }
}
.elementor > .hc-sectie:first-of-type:not(.hc-footer) { border-radius: 40px 40px 0 0; }
.hc-hero + .hc-sectie { margin-top: 0; }
.hc-hero + .hc-sectie { margin-top: -1px; }
/* De footer sluit de passe-partout af, dus de laatste sectie erboven blijft
   recht. Rondt die ook af, dan ontstaat er een knik tussen beide blokken. */
.elementor > .hc-sectie:last-of-type:not(.hc-footer) { border-radius: 0; }
@media (max-width: 767px) {
  .elementor > .hc-sectie:first-of-type:not(.hc-footer) { border-radius: 26px 26px 0 0; }
  .elementor > .hc-sectie:last-of-type:not(.hc-footer) { border-radius: 0; }
}

*, *::before, *::after { -webkit-tap-highlight-color: transparent; }

:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(43, 93, 66, .40);
  border-radius: 2px;
}

/* Cijfers zijn hier inhoud: prijzen, afstanden, hoogtemeters. */
.hc-cijfer, .hc-prijs, .hc-stat__waarde { font-variant-numeric: tabular-nums; }

/* Pathway Gothic One is smal en staat in kapitalen. Op displaygraad wordt de
   letterafstand daardoor krap; een fractie lucht houdt hem leesbaar. */
.hc-display .elementor-heading-title { word-spacing: .06em; }

/* Nooit een los woord op een eigen regel. De browser verdeelt de regels van
   een kop zo gelijkmatig mogelijk in plaats van pas te breken als het niet
   meer past. */
.hc-kop .elementor-heading-title,
.elementor-widget-heading .elementor-heading-title { text-wrap: balance; }

/* Een kop die op precies twee regels hoort te staan, breekt alleen op de
   <br>. Past een regel niet, dan schaalt de letter mee in plaats van dat er
   een derde regel bij komt. */
.hc-kop--twee-regels .elementor-heading-title {
  text-wrap: balance;
  font-size: min(var(--e-global-typography-display-font-size), 9.4vw);
}

/* Geen cursief. Het merk heeft zijn nadruk al in het woordmerk zitten; een
   cursief woord in een kop is een truc die je overal ziet en die niets zegt.
   Koppen zijn dus vlak, in een kleur, en de hierarchie komt uit de graad. */
.hc-kop em, .hc-kop i { font-style: normal; color: inherit; }

/* ---------------------------------------------------------------- de gouden lijn */

/* Het merkelement uit de brandguide: een gouden wegmarkering die achter de
   tekst door lijkt te lopen. Hier als kop-aanhef en als sectiescheiding. */
.hc-lijn::before {
  content: ""; position: absolute; left: 0; top: .62em;
  width: 100vw; max-width: 100vw; height: 2px;
  background: var(--e-global-color-secondary);
  transform: translateX(calc(-100% - 20px));
  pointer-events: none;
}
.hc-lijn--rechts::before { left: auto; right: 0; transform: translateX(calc(100% + 20px)); }

/* Losse gouden regel, volle breedte van de container. */

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

.hc-btn .elementor-button {
  transition: background-color .15s ease, color .15s ease,
              border-color .15s ease, transform .15s ease;
  white-space: nowrap;
  /* Een knop mag zijn kolom nooit uit lopen. Op /kalender/ stond "Zet me op de
     wachtlijst" 298px breed in een kolom van 234 en werd hij afgekapt, ook op
     desktop. Past het label niet, dan gaat nowrap eraf en breekt hij; dat is
     lelijker dan één regel maar leesbaarder dan een halve knop. */
  max-width: 100%;
}

.hc-btn .elementor-button:active { transform: translateY(1px); }
.hc-btn--pijl .elementor-button-icon { transition: transform .15s ease; }
.hc-btn--pijl .elementor-button:hover .elementor-button-icon { transform: translateX(4px); }


/* De tekstlink: alleen de gouden onderlijn op hover blijft css, een
   randkleur per zijde in hover kent de knopwidget niet. */
.hc-btn.hc-link .elementor-button { border-bottom: 1px solid transparent; }
.hc-btn.hc-link .elementor-button:hover { border-bottom-color: var(--e-global-color-secondary); }

/* ---------------------------------------------------------------- kaarten */

/* Hoogte, overflow, schaduw en de beweging omhoog bij hover staan in de
   containerinstellingen van de kaart (build/reiskaart.py); gelijke hoogte in
   een rij komt van equal_height op het loop-grid; de beeldhoogte en object-fit
   uit de afbeeldingswidget. Wat hier overblijft kan Elementor niet: een hover
   op de kaart die een kind laat bewegen (beeld, pijl), en een streep die
   binnenloopt. */
.hc-kaart__beeld img { transition: transform 1s cubic-bezier(.2,.7,.2,1); }
.hc-kaart:hover .hc-kaart__beeld img { transform: scale(1.05); }
.hc-kaart__pijl .elementor-heading-title { transition: transform .18s ease; display: inline-block; }
/* "Vraag aan →" is breder dan "Bekijk →" en stak in een smalle kolom buiten de
   kaart. De prijskolom mag krimpen, de pijl blijft op één regel, en wordt het
   echt te krap dan zakt hij een regel. */
.hc-kaart__voet { flex-wrap: wrap; }
.hc-kaart__voet > .e-con { min-width: 0; }
.hc-kaart__pijl .elementor-heading-title { white-space: nowrap; }
.hc-kaart:hover .hc-kaart__pijl .elementor-heading-title { transform: translateX(4px); }

/* Een gouden streep die vanaf de onderrand van de kaart binnenkomt. */
.hc-kaart::after {
  content: ""; position: absolute; left: 0; bottom: 0; height: 2px; width: 0;
  background: var(--e-global-color-secondary); transition: width .4s ease;
}
.hc-kaart:hover::after { width: 100%; }

/* Een tekst-widget met een dynamische tag rendert de tekst rechtstreeks in de
   widget-div, zonder tussenlaag. De afkapping moet dus ook op het element
   zelf kunnen aangrijpen, niet alleen op een kind. */
.hc-clamp-2,
.hc-clamp-2 :where(p, .elementor-heading-title),
.hc-clamp-2 > .elementor-widget-container {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
.hc-clamp-3,
.hc-clamp-3 :where(p, .elementor-heading-title),
.hc-clamp-3 > .elementor-widget-container {
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
  overflow: hidden;
}

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

.hc-hero > .hc-hero__beeld {
  position: absolute; inset: 0; z-index: 0; margin: 0; padding: 0;
  width: 100%; height: 100%;
}
.hc-hero > .hc-hero__beeld .elementor-widget-container,
.hc-hero > .hc-hero__beeld figure,
.hc-hero > .hc-hero__beeld a { height: 100%; }
.hc-hero > .hc-hero__beeld img {
  width: 100%; height: 100%; object-fit: cover; object-position: 50% 45%; display: block;
}
@media (max-width: 767px) { .hc-hero > .hc-hero__beeld img { object-position: 58% 50%; } }

.hc-hero__sluier {
  position: absolute; inset: 0; z-index: 1; pointer-events: none;
  /* Geen sluier over de foto zelf: de header staat nu op een eigen band, dus
     de bovenkant hoeft niet donker. Alleen onderaan loopt het beeld dicht in
     de kleur van de sectie eronder, zodat de tekst leesbaar blijft en de foto
     in de content overloopt in plaats van tegen een rand te botsen. */
  background: linear-gradient(180deg,
    rgba(13, 13, 13,0) 0%, rgba(13, 13, 13,0) 42%,
    rgba(13, 13, 13,.34) 66%, rgba(13, 13, 13,.88) 90%, #0D0D0D 100%);
}

@media (prefers-reduced-motion: no-preference) {
  .hc-hero__beeld img { animation: hc-kenburns 26s ease-out forwards; }
}
@keyframes hc-kenburns { from { transform: scale(1.03); } to { transform: scale(1.11); } }

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

/* De header staat boven de hero, niet eroverheen. Een transparante balk over
   een foto geeft altijd ergens een contrastprobleem — bij een lichte lucht
   valt de navigatie weg — en de brandguide schrijft voor dat het logo zwart
   of wit is en niet ergens tussenin. Een eigen band lost dat in een keer op. */


:root { --hc-header: 88px; }
@media (max-width: 767px) { :root { --hc-header: 68px; } }

.hc-header {
  background-color: var(--e-global-color-bone);
  border-bottom: 1px solid rgba(13, 13, 13, .10);
  transition: box-shadow .25s ease;
}

/* De header staat vast bovenaan, dus een sprong naar een anker legt de kop van
   het doel er precies achter. Bij de secties viel dat niet op omdat hun eigen
   bovenmarge groter is dan de header; bij de blokken van "Kies je reisvorm"
   wel, en dat zijn juist de ankers uit de klantfeedback: de kaart "Naar de
   individuele reis" landde op een kop die niet te zien was. Gemeten met
   build/pw/anker.js. */
.hc-sectie[id], .hc-vormblok[id], [id="inbegrepen"], [id="reisvorm"] {
  scroll-margin-top: calc(var(--hc-header) + 20px);
}
.hc-header.elementor-sticky--effects {
  background-color: rgba(242, 241, 237, .94);
  backdrop-filter: blur(16px) saturate(140%);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  box-shadow: 0 10px 30px -22px rgba(13, 13, 13, .45);
}

/* ---------------------------------------------------------------- op donker */

.hc-footer a, .hc-op-donker a { color: var(--e-global-color-bone); }
.hc-footer a:hover, .hc-op-donker a:hover { color: var(--e-global-color-secondary); }
.hc-footer .elementor-item-active { color: var(--e-global-color-secondary) !important; }
/* In de footer alleen een kleurwissel op hover. Een onderlijn maakt een
   kolom met tien links onrustig. */
.hc-footer a { transition: color .15s ease; border-bottom: 0; }
.hc-footer a:hover { border-bottom: 0; }
.hc-footer .elementor-item::after,
.hc-footer .elementor-item::before { display: none; }

/* ---------------------------------------------------------------- cijferstrip */

/* Geen scheidingslijntjes tussen de feiten: het label boven de waarde
   groepeert al genoeg, en de streepjes maken de strook onrustig. */

/* ---------------------------------------------------------------- citaat */


/* ------------------------------------------------- fietsroute als decor */

.hc-route > *:not(.hc-route__svg) { position: relative; z-index: 1; }
.hc-route__svg {
  position: absolute; inset: 0; width: 100%; height: 100%;
  z-index: 0; pointer-events: none;
}
.hc-route__pad {
  fill: none;
  stroke: rgba(204, 186, 120, .38);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-dasharray: 1;
  transition: stroke-dashoffset 2.6s cubic-bezier(.35, 0, .2, 1);
}

/* Knoppen onderaan een kaart, ongeacht hoeveel tekst erboven staat. */

/* ---------------------------------------------------------------- binnenkomst */

/* Elementen schuiven rustig in beeld. De vertraging per element wordt door de
   bewegingslaag gezet, zodat een rij kaarten na elkaar binnenkomt in plaats
   van tegelijk. Zonder JavaScript blijft alles gewoon staan. */
@media (prefers-reduced-motion: no-preference) {
  .hc-js .hc-onthul {
    opacity: 0; transform: translateY(22px);
    transition: opacity .75s cubic-bezier(.2,.7,.2,1),
                transform .75s cubic-bezier(.2,.7,.2,1);
    will-change: opacity, transform;
  }
  .hc-js .hc-onthul.is-zichtbaar { opacity: 1; transform: none; will-change: auto; }
}
/* In de editor staat alles gewoon in beeld, wat de bewegingslaag ook doet. */
.elementor-editor-active .hc-onthul,
.elementor-editor-active .hc-boekbalk {
  opacity: 1 !important; transform: none !important; transition: none !important;
}

/* ---------------------------------------------------------------- rust */

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

/* ------------------------------------------------- kaart op een patroon */




/* Geen horizontale scrollbalk, wat er ook gebeurt. */
html, body { overflow-x: clip; }

/* ------------------------------------------------- megamenu */

/* De widget levert zijn eigen opmaak zonder besturingen voor kleur en
   typografie. Die CSS laadt na de kit, dus hier staat de class dubbel: dat
   verhoogt de specificiteit zonder !important. */
.hc-mega.hc-mega .e-n-menu-title-text {
  font-family: var(--e-global-typography-nav-font-family), sans-serif;
  font-size: var(--e-global-typography-nav-font-size);
  font-weight: var(--e-global-typography-nav-font-weight);
  letter-spacing: var(--e-global-typography-nav-letter-spacing);
  line-height: 1;
  text-transform: uppercase;
  color: var(--e-global-color-accent);
  transition: color .15s ease;
  white-space: nowrap;
}
/* Niets in de header mag krimpen: krimpt de navigatie, dan schuiven de items
   onder de actieknop; krimpt de knop, dan verdwijnt hij helemaal. Elementor's
   eigen flex-instellingen op een container gelden voor de kinderen, niet voor
   de container zelf, dus dat wordt hier gezet. */

/* Elementor geeft twee kinderen van een flexcontainer standaard elk de helft.
   De header heeft echter een smal logo en een brede rechterkant, dus die
   verdeling moet expliciet. */
.hc-header .hc-btn .elementor-button { white-space: nowrap; }
.hc-mega.hc-mega .e-n-menu,
.hc-mega.hc-mega .e-n-menu-wrapper { flex: 0 0 auto; }
.hc-mega.hc-mega .e-n-menu-heading { flex-wrap: nowrap; gap: 0; flex: 0 0 auto; }
.hc-mega.hc-mega .e-n-menu-item { flex: 0 0 auto; }
.hc-mega.hc-mega .e-n-menu-title { padding: 0; position: relative; }
.hc-mega.hc-mega .e-n-menu-title-container { padding: 10px 13px; }
@media (max-width: 1200px) {
  .hc-mega.hc-mega .e-n-menu-title-container { padding-inline: 9px; }
}

.hc-mega.hc-mega .e-n-menu-title::after {
  content: ""; position: absolute; left: 13px; right: 100%; bottom: 2px; height: 2px;
  background: var(--e-global-color-secondary); transition: right .22s ease;
}
.hc-mega.hc-mega .e-n-menu-item:hover .e-n-menu-title::after { right: 13px; }
.hc-mega.hc-mega .e-n-menu-dropdown-icon { color: inherit; padding: 0 2px 0 0; }
.hc-mega.hc-mega .e-n-menu-dropdown-icon svg { fill: currentColor; width: 9px; height: 9px; }

/* De navigatie staat altijd op een lichte band, dus altijd in inkt. */
.hc-mega.hc-mega .e-n-menu-item:hover .e-n-menu-title-text {
  color: var(--e-global-color-primary);
}

/* Het menu-item mag geen positioneringscontext zijn, want dan hangt het
   paneel aan dat ene item. Nu hangt het aan de header en lijnt het rechts uit
   met de actieknop. */
/* Elementor positioneert het paneel met inline JavaScript over de volle
   vensterbreedte. Daar valt niet tegenop te sturen, dus het wordt ook niet
   geprobeerd: de strook blijft breed en onzichtbaar, en het zichtbare paneel
   binnenin krijgt een eigen breedte en schuift naar rechts, tot onder de
   actieknop. Dat is dezelfde uitkomst zonder gevecht met de widget. */
.hc-header .hc-mega.hc-mega .e-n-menu-content { background: transparent; }
.hc-header .hc-mega.hc-mega .e-n-menu-content > .e-con {
  /* Elementor schrijft de breedte en de positie inline weg als
     `width: var(--width); position: var(--position); left: 0`. Een gewone
     width-regel komt daar niet langs, hoe specifiek ook — de variabele wel.
     Met static valt het paneel terug in de kolom van de strook, en dan doet
     margin-left: auto gewoon zijn werk. */
  --width: min(920px, calc(100vw - 96px));
  --position: static;
  max-width: none;
  margin-left: auto;
  /* Lijnt uit op de rechterrand van de pagina-container, niet op een vaste
     marge: anders staat het paneel net naast het raster eronder. */
  margin-right: max(48px, calc((100vw - 1320px) / 2));
  background-color: var(--e-global-color-bone);
  border-top: 2px solid var(--e-global-color-secondary);
  border-radius: 0 0 24px 24px;
  box-shadow: 0 26px 56px -30px rgba(13, 13, 13, .32);
}


/* De reisregels in het paneel. */
.hc-menukaart { transition: background-color .18s ease; position: relative; }
.hc-menukaart .e-con, .hc-menukaart .hc-menukaart__link,
.hc-menukaart .hc-menukaart__link .elementor-widget-container { position: static; }
.hc-menukaart__link a { text-decoration: none; color: inherit; }
.hc-menukaart:hover { background-color: rgba(43, 93, 66, .07); }
.hc-menukaart__titel .elementor-heading-title {
  transition: color .15s ease;
  overflow-wrap: normal; word-break: normal; hyphens: none;
  font-size: 15px; line-height: 1.15;
}
.hc-menukaart:hover .hc-menukaart__titel .elementor-heading-title {
  color: var(--e-global-color-secondary);
}


/* Geen horizontale scrollbalk, wat er ook gebeurt. */
html, body { overflow-x: clip; }

/* ------------------------------------------------- megamenu */

/* De widget levert zijn eigen opmaak zonder besturingen voor kleur en
   typografie, dus die komen hier uit de globals. */
.hc-mega .e-n-menu-title-text {
  font-family: var(--e-global-typography-nav-font-family), sans-serif;
  font-size: var(--e-global-typography-nav-font-size);
  font-weight: var(--e-global-typography-nav-font-weight);
  letter-spacing: var(--e-global-typography-nav-letter-spacing);
  text-transform: uppercase;
  color: var(--e-global-color-accent);
  transition: color .15s ease;
  white-space: nowrap;
}
.hc-mega .e-n-menu-title { position: relative; }
.hc-mega .e-n-menu-title-container { padding: 8px 12px; }
.hc-mega .e-n-menu-title::after {
  content: ""; position: absolute; left: 12px; right: 100%; bottom: 2px; height: 2px;
  background: var(--e-global-color-secondary); transition: right .22s ease;
}
.hc-mega .e-n-menu-item:hover .e-n-menu-title::after { right: 12px; }
.hc-mega .e-n-menu-dropdown-icon svg { fill: currentColor; width: 9px; height: 9px; }
.hc-mega .e-n-menu-dropdown-icon { color: inherit; }
.hc-mega .e-n-menu-heading { gap: 2px; flex-wrap: nowrap; }
.hc-mega .e-n-menu-item { flex: 0 0 auto; }

/* Reisnamen breken nooit middenin een woord; liever een smallere letter. */
.hc-menukaart__titel .elementor-heading-title {
  overflow-wrap: normal; word-break: normal; hyphens: none;
  font-size: 15px; line-height: 1.15;
}
@media (max-width: 1200px) {
  .hc-mega .e-n-menu-title-container { padding-inline: 8px; }
}

body.home .hc-mega .e-n-menu-title-text,
body.single-reis .hc-mega .e-n-menu-title-text { color: var(--e-global-color-bone); }
body.home .elementor-sticky--effects .hc-mega .e-n-menu-title-text,
body.single-reis .elementor-sticky--effects .hc-mega .e-n-menu-title-text {
  color: var(--e-global-color-accent);
}

/* Het paneel zelf: donker, met de gouden lijn erboven als merkelement. */
.hc-mega .e-n-menu-content > .e-con {
  background-color: var(--e-global-color-accent);
  border-top: 2px solid var(--e-global-color-secondary);
  box-shadow: 0 28px 60px -32px rgba(13, 13, 13, .55);
}

/* De reisregels in het paneel. */
.hc-menukaart { transition: background-color .18s ease; position: relative; }
.hc-menukaart__link a { text-decoration: none; color: inherit; }
.hc-menukaart:hover { background-color: rgba(43, 93, 66, .07); }
.hc-menukaart__titel .elementor-heading-title { transition: color .15s ease; }
.hc-menukaart:hover .hc-menukaart__titel .elementor-heading-title {
  color: var(--e-global-color-secondary);
}

/* Onder de tabletgrens wordt het een uitklapbare lijst; dan hoort het paneel
   niet meer over de pagina te liggen maar mee te schuiven. */

/* ------------------------------------------------- kaart klikbaar */

/* Een container met een dynamische link rendert geen <a> op deze versie van
   Elementor. De link zit daarom op de kop en wordt hier over de hele kaart
   uitgerekt, zodat de kaart als geheel klikbaar is en de kop toch de
   toegankelijke linktekst blijft. */
.hc-kaart__link a { text-decoration: none; color: inherit; }
/* Elementor zet elke container en widget op position: relative. Het klikvlak
   van de link (::after met inset 0) zou dan alleen de kop bedekken; de
   tussenliggende lagen moeten los, zodat het vlak de kaart wordt. Gemeten
   met Playwright: zonder deze regel is alleen de titel klikbaar. */
.hc-kaart .hc-kaart__inhoud,
.hc-kaart .hc-kaart__inhoud > .e-con,
.hc-kaart .hc-kaart__link,
.hc-kaart .hc-kaart__link .elementor-widget-container { position: static; }
/* De reisvormkaarten op de homepage hebben één knop; de hele kaart wordt dat
   klikvlak, zoals bij de reiskaart. */
.hc-vormkaart .e-con, .hc-vormkaart .elementor-widget,
.hc-vormkaart .elementor-widget-container, .hc-vormkaart .elementor-button-wrapper,
.hc-vormkaart .elementor-button { position: static; }

/* Prijs per reisvorm: bij een leeg veld rendert de kopwidget helemaal geen
   .elementor-heading-title, en dan gaat de hele regel met icoon weg. */
.hc-prijsregel:not(:has(.elementor-heading-title)) { display: none; }

/* Uitleg boven het aanvraagformulier voor wie een groepsreis zocht. */
.hc-vormuitleg {
  margin: 0 0 22px; padding: 14px 18px;
  border-left: 3px solid var(--e-global-color-primary);
  background: var(--e-global-color-papier);
  font-size: 15px; line-height: 1.55; color: var(--e-global-color-text);
}
.hc-vormuitleg a { color: var(--e-global-color-primary); text-decoration: underline; }

/* Alleen voor wie voorleest: uit beeld, maar wel in de voorleesvolgorde.
   Niet display:none en niet visibility:hidden, want dan slaat de schermlezer
   het over. */
.hc-voorlezer {
  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;
}

/* De reisvormen in het megamenu: kleine iconen onder de reisnaam. */
.hc-menukaart__vormen .elementor-heading-title { line-height: 1; }
.hc-vormiconen { display: inline-flex; gap: 8px; align-items: center; }
.hc-vormicoon { display: inline-flex; color: var(--e-global-color-primary); }
.hc-vormicoon svg { width: 13px; height: 13px; fill: currentColor; display: block; }

/* ------------------------------------------------- merkiconen als decor */

/* De twee iconen uit de brandguide, groot over de achtergrond. Ze liggen
   achter de inhoud, reageren niet op de muis en zijn puur decoratief; daarom
   staan ze op aria-hidden via pointer-events en dragen ze geen betekenis die
   in de tekst ontbreekt. */
.hc-decor {
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
  overflow: hidden;
}
/* De sectie die het decor draagt, moet het kunnen positioneren en afsnijden. */
.hc-sectie:has(> .hc-decor) { position: relative; overflow: hidden; }
.hc-sectie:has(> .hc-decor) > *:not(.hc-decor) { position: relative; z-index: 1; }

/* ------------------------------------------------- halve sectie met beeld */

/* Een sectie in twee gelijke helften, waarvan er een volledig door beeld
   wordt gevuld. De sectie heeft daarom geen eigen padding; die zit in de
   tekstkolom. Het beeld rekt mee met de hoogte van de tekst ernaast. */
.hc-halfbeeld,
.hc-halfbeeld > .elementor-widget-container,
.hc-halfbeeld figure,
.hc-halfbeeld a { height: 100%; display: block; }
.hc-halfbeeld img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  min-height: 420px;
}
@media (max-width: 767px) {
  .hc-halfbeeld img { min-height: 280px; height: 280px; }
}


/* ------------------------------------------------- hoekig, op een na */

/* Het merk is hoekig: een italiek woordmerk met een rechte gouden lijn.
   Ronde hoeken horen daar alleen bij de passe-partout — het blok waarin de
   hele pagina ligt. Alles daarbinnen is recht: kaarten, panelen, beelden.
   Knoppen houden hun pilvorm, want dat is een aanwijzing dat je erop kunt
   drukken en geen hoekbehandeling van een vlak. */
.elementor .e-con:not(.hc-sectie),
.elementor .elementor-widget img,
.elementor .elementor-widget figure,
.hc-kaart, .hc-kaart img,
.hc-vormkaart,
.hc-menukaart, .hc-menukaart__beeld img,
.hc-pijler__beeld img, .hc-dag__beeld img, .hc-halfbeeld img {
  border-radius: 0;
}

/* De passe-partout houdt zijn ronding: de eerste en laatste sectie, de
   sectie die op dit moment tegen de header ligt, en de footer. */
.elementor > .hc-sectie:first-of-type:not(.hc-footer) { border-radius: 40px 40px 0 0; }
/* De footer sluit de passe-partout af, dus de laatste sectie erboven blijft
   recht. Rondt die ook af, dan ontstaat er een knik tussen beide blokken. */
.elementor > .hc-sectie:last-of-type:not(.hc-footer) { border-radius: 0; }
.elementor > .hc-sectie.is-onder-header {
  border-top-left-radius: 40px; border-top-right-radius: 40px;
}
@media (max-width: 767px) {
  .elementor > .hc-sectie:first-of-type:not(.hc-footer) { border-radius: 26px 26px 0 0; }
  .elementor > .hc-sectie:last-of-type:not(.hc-footer) { border-radius: 0; }
  .elementor > .hc-sectie.is-onder-header {
    border-top-left-radius: 26px; border-top-right-radius: 26px;
  }
}


/* De footer telt mee als blok onder de header: op een korte pagina staat hij
   daar direct tegenaan en hoort die hoek net zo rond te zijn als bij een
   gewone sectie. */
.hc-footer.is-onder-header {
  border-top-left-radius: 40px; border-top-right-radius: 40px;
}
@media (max-width: 767px) {
  .hc-footer.is-onder-header {
    border-top-left-radius: 26px; border-top-right-radius: 26px;
  }
}


/* ------------------------------------------------- juridische links */

/* De nav-menu-widget negeert zijn eigen instelling voor de ruimte tussen
   items, waardoor de labels aan elkaar plakken. Hier met een gap, zodat het
   ook netjes afbreekt op smalle schermen. */
.hc-juridisch .elementor-nav-menu {
  display: flex; flex-wrap: wrap; gap: 8px 28px;
}
.hc-juridisch .elementor-nav-menu > li > a { padding-inline: 0; }

/* ------------------------------------------------- nieuwsbrief in de footer */

/* Tekst boven, veld eronder. Naast elkaar wordt het veld op een breed scherm
   een losse eilandje rechts, en op tablet valt het alsnog onder de tekst. */
.hc-nieuwsbrief .elementor-form { display: flex; gap: 12px; flex-wrap: wrap; }
.hc-nieuwsbrief .elementor-field-group { flex: 1 1 260px; }
.hc-nieuwsbrief .elementor-field-group.elementor-field-type-submit { flex: 0 0 auto; }

/* ------------------------------------------------- boekbalk */

/* Loopt onderaan mee zodra de bezoeker voorbij de hero is. Verborgen tot de
   bewegingslaag hem vrijgeeft, en helemaal uit bij wie beweging heeft afgezet
   krijgt hij geen animatie maar staat hij er meteen. */
.hc-boekbalk {
  position: fixed; left: 20px; right: 20px; bottom: 20px; z-index: 90;
  width: auto; max-width: calc(100% - 40px);
  box-shadow: 0 18px 44px -22px rgba(13, 13, 13, .55);
  border-top: 2px solid var(--e-global-color-secondary);
  opacity: 0; transform: translateY(120%); pointer-events: none;
  transition: opacity .3s ease, transform .35s cubic-bezier(.2, .7, .2, 1);
}
.hc-boekbalk.is-zichtbaar { opacity: 1; transform: none; pointer-events: auto; }
@media (max-width: 767px) {
  .hc-boekbalk { left: 10px; right: 10px; bottom: 10px; max-width: calc(100% - 20px); }
  .hc-boekbalk .hc-prijs .elementor-heading-title { font-size: 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .hc-boekbalk { transition: none; }
}

/* Review met een gouden streep ernaast in plaats van een kader. */

/* De hero-tekst staat op een foto die per reis anders is; op een licht deel
   valt vooral de kleine regel weg. Een zachte schaduw houdt hem leesbaar
   zonder dat er een donker vlak overheen hoeft. */
.hc-hero__inhoud .elementor-heading-title,
.hc-hero__inhoud .elementor-widget-text-editor {
  text-shadow: 0 1px 18px rgba(13, 13, 13, .45);
}
.hc-hero__inhoud .hc-btn .elementor-button { text-shadow: none; }

/* ------------------------------------------------- header op mobiel */

/* Onder de tabletgrens: logo links, hamburger rechts, verder niets. De
   actieknop verdwijnt daar, want hij herhaalt het eerste item in het menu en
   dwingt de balk anders op twee regels. */

/* De displaykop moet op smal binnen twee regels blijven. De kit zet de graad
   met een eigen regel, dus deze heeft een klasse extra nodig om te winnen. */
/* Vier klassen diep, want de paginaspecifieke regel van Elementor zet de
   graad met dezelfde specificiteit en laadt later. */
.hc-hero__inhoud .hc-kop.hc-kop--twee-regels .elementor-heading-title {
  font-size: min(var(--e-global-typography-display-font-size), 8.4vw);
}
@media (min-width: 1025px) {
  .hc-hero__inhoud .hc-kop.hc-kop--twee-regels .elementor-heading-title {
    font-size: var(--e-global-typography-display-font-size);
  }
}

/* ------------------------------------------------- mobiel menu */

/* De eigen hamburger vervangt die van de megamenu-widget. Boven de tabletgrens
   is hij er niet, daaronder is hij het enige navigatie-element. */

/* Het paneel zelf. De sluitknop van de popup: de kit kleurt elke <a> groen en
   de popup-instelling close_button_color komt daar niet doorheen. */
.hc-popup-menu .dialog-close-button { color: var(--e-global-color-bone); }
.hc-mobielmenu__nav .elementor-nav-menu a.elementor-item {
  border-bottom: 1px solid rgba(204, 186, 120, .16);
}

/* Het paneel lijnt links uit, net als de rest van de site. */
.hc-mobielmenu__nav .elementor-nav-menu { align-items: flex-start; }
.hc-mobielmenu__nav .elementor-nav-menu a.elementor-item { justify-content: flex-start; }

/* Logo links, net als de rest van het paneel. */

/* De reizen staan onder Reizen; in een paneel horen ze gewoon zichtbaar te
   zijn in plaats van achter een uitklap. */

/* ------------------------------------------------- WooCommerce */

/* WooCommerce levert zijn eigen opmaak mee: paarse knoppen, systeemletters en
   een eigen tabbladenbalk. Die staat los van de kit, dus hier wordt hij in de
   huisstijl getrokken. Wat via een Elementor-widget loopt erft de globals al;
   dit is voor alles wat WooCommerce zelf rendert. */

.woocommerce button.button,
.woocommerce a.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce button.button.alt,
.woocommerce a.button.alt,
.woocommerce input.button.alt {
  background-color: var(--e-global-color-primary);
  color: var(--e-global-color-bone);
  border: 1px solid var(--e-global-color-primary);
  border-radius: 999px;
  font-family: var(--e-global-typography-knop-font-family), sans-serif;
  font-size: var(--e-global-typography-knop-font-size);
  font-weight: var(--e-global-typography-knop-font-weight);
  letter-spacing: var(--e-global-typography-knop-letter-spacing);
  text-transform: uppercase;
  padding: 18px 32px;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.woocommerce button.button:hover,
.woocommerce a.button:hover,
.woocommerce input.button:hover,
.woocommerce button.button.alt:hover,
.woocommerce a.button.alt:hover {
  background-color: var(--e-global-color-accent);
  border-color: var(--e-global-color-accent);
  color: var(--e-global-color-secondary);
}
.woocommerce button.button:disabled,
.woocommerce button.button.alt:disabled {
  background-color: rgba(43, 93, 66, .35);
  border-color: transparent; color: var(--e-global-color-bone);
}

.woocommerce div.product .product_title {
  font-family: var(--e-global-typography-h1-font-family), sans-serif;
  font-size: var(--e-global-typography-h1-font-size);
  font-weight: var(--e-global-typography-h1-font-weight);
  line-height: var(--e-global-typography-h1-line-height);
  letter-spacing: var(--e-global-typography-h1-letter-spacing);
  text-transform: var(--e-global-typography-h1-text-transform);
  color: var(--e-global-color-accent);
}
.woocommerce div.product p.price,
.woocommerce div.product span.price,
.woocommerce ul.products li.product .price {
  font-family: var(--e-global-typography-prijs-font-family), sans-serif;
  font-size: var(--e-global-typography-prijs-font-size);
  font-weight: var(--e-global-typography-prijs-font-weight);
  color: var(--e-global-color-accent);
  font-variant-numeric: tabular-nums;
}

.woocommerce div.product .woocommerce-tabs ul.tabs { padding-left: 0; }
.woocommerce div.product .woocommerce-tabs ul.tabs::before { border-bottom-color: var(--e-global-color-lijn); }
.woocommerce div.product .woocommerce-tabs ul.tabs li {
  background: transparent; border: 0; border-radius: 0;
  border-bottom: 2px solid transparent; margin: 0 24px 0 0; padding: 0 0 10px;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li a {
  font-family: var(--e-global-typography-micro-font-family), sans-serif;
  font-size: var(--e-global-typography-micro-font-size);
  font-weight: var(--e-global-typography-micro-font-weight);
  letter-spacing: var(--e-global-typography-micro-letter-spacing);
  text-transform: uppercase;
  color: var(--e-global-color-steen); padding: 0;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active {
  border-bottom-color: var(--e-global-color-secondary);
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { color: var(--e-global-color-accent); }

.woocommerce table.shop_attributes th,
.woocommerce table.shop_table th { color: var(--e-global-color-accent); }
.woocommerce table.shop_attributes td { font-style: normal; }
.woocommerce .woocommerce-breadcrumb {
  font-family: var(--e-global-typography-micro-font-family), sans-serif;
  font-size: var(--e-global-typography-micro-font-size);
  letter-spacing: var(--e-global-typography-micro-letter-spacing);
  text-transform: uppercase;
  color: var(--e-global-color-steen);
}
.woocommerce .woocommerce-breadcrumb a { color: var(--e-global-color-primary); }

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce div.product form.cart select {
  border: 1px solid var(--e-global-color-lijn-sterk);
  border-radius: 999px; padding: 12px 18px;
  background: var(--e-global-color-papier);
  color: var(--e-global-color-accent);
  font-family: var(--e-global-typography-text-font-family), sans-serif;
}
.woocommerce .quantity .qty {
  border: 1px solid var(--e-global-color-lijn-sterk);
  border-radius: 999px; padding: 12px 8px;
  background: var(--e-global-color-papier);
}
.woocommerce .woocommerce-message,
.woocommerce .woocommerce-info {
  border-top-color: var(--e-global-color-primary);
  background: var(--e-global-color-papier);
}
.woocommerce .woocommerce-message::before,
.woocommerce .woocommerce-info::before { color: var(--e-global-color-primary); }

/* ------------------------------------------------- boekingsformulier */

/* Een formulier van achttien velden voelt als werk. In vier stappen met een
   voortgangsbalk voelt het als iets afmaken. Dit is de opmaak van die stappen;
   de logica is Elementor's eigen multistep. */
.hc-boekform .e-form__indicators {
  margin-bottom: 40px; gap: 0;
}
.hc-boekform .e-form__indicators__indicator {
  color: var(--e-global-color-steen);
  font-family: var(--e-global-typography-micro-font-family), sans-serif;
  font-size: var(--e-global-typography-micro-font-size);
  letter-spacing: var(--e-global-typography-micro-letter-spacing);
  text-transform: uppercase;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--e-global-color-lijn);
  transition: color .2s ease, border-color .2s ease;
}
.hc-boekform .e-form__indicators__indicator--state-inactive { opacity: .6; }
.hc-boekform .e-form__indicators__indicator--state-active,
.hc-boekform .e-form__indicators__indicator--state-completed {
  color: var(--e-global-color-accent);
  border-bottom-color: var(--e-global-color-secondary);
  opacity: 1;
}
.hc-boekform .e-form__indicators__indicator__number {
  font-family: var(--e-global-typography-prijs-font-family), sans-serif;
  font-size: 20px; margin-right: 8px;
}

.hc-boekform .elementor-field-group > label {
  font-family: var(--e-global-typography-micro-font-family), sans-serif;
  font-size: var(--e-global-typography-micro-font-size);
  letter-spacing: var(--e-global-typography-micro-letter-spacing);
  text-transform: uppercase;
  color: var(--e-global-color-steen);
  margin-bottom: 8px;
}
.hc-boekform .elementor-field-textual {
  border: 1px solid var(--e-global-color-lijn-sterk);
  background: var(--e-global-color-papier);
  color: var(--e-global-color-accent);
  border-radius: 999px; padding: 15px 20px; min-height: 52px;
}
.hc-boekform textarea.elementor-field-textual { border-radius: 16px; }
.hc-boekform .elementor-field-textual:focus {
  border-color: var(--e-global-color-primary);
  box-shadow: 0 0 0 3px rgba(43, 93, 66, .18);
}
.hc-boekform .elementor-field-description {
  font-size: 13px; color: var(--e-global-color-steen); margin-top: 6px;
}
.hc-boekform .e-form__buttons { gap: 12px; margin-top: 16px; }
.hc-boekform .elementor-message {
  border-radius: 0; padding: 16px 20px;
  font-family: var(--e-global-typography-text-font-family), sans-serif;
}
.hc-boekform .elementor-message-success {
  background: var(--e-global-color-groen-sluier);
  color: var(--e-global-color-primary);
}
@media (max-width: 767px) {
  .hc-boekform .e-form__indicators { flex-wrap: wrap; gap: 8px 16px; }
  .hc-boekform .e-form__indicators__indicator { border-bottom-width: 2px; }
}

/* De staplabels staan naast elkaar en mogen niet in losse woorden vallen. */
.hc-boekform .e-form__indicators__indicator { white-space: nowrap; }
.hc-boekform .e-form__indicators__indicator__label { white-space: nowrap; }
@media (max-width: 600px) {
  .hc-boekform .e-form__indicators__indicator__label { display: none; }
}

/* ------------------------------------------------- reizigers */

/* Een kop boven elk reizigersblok, zodat het formulier leest als een lijst
   mensen en niet als veertig velden. De tekst staat in css omdat een
   formulier geen koppen kent; het is opmaak, geen inhoud. */
.hc-boekform .hc-verborgen { display: none !important; }
.hc-boekform .hc-reiziger-groep__start { margin-top: 34px; position: relative; }
.hc-boekform .hc-reiziger-groep__start::before {
  position: absolute; top: -26px; left: 0;
  font-family: var(--e-global-typography-h4-font-family), sans-serif;
  font-size: var(--e-global-typography-h4-font-size);
  font-weight: var(--e-global-typography-h4-font-weight);
  letter-spacing: var(--e-global-typography-h4-letter-spacing);
  text-transform: uppercase;
  color: var(--e-global-color-accent);
}
.hc-boekform .hc-reiziger-groep--1.hc-reiziger-groep__start::before { content: "Reiziger 1"; }
.hc-boekform .hc-reiziger-groep--2.hc-reiziger-groep__start::before { content: "Reiziger 2"; }
.hc-boekform .hc-reiziger-groep--3.hc-reiziger-groep__start::before { content: "Reiziger 3"; }
.hc-boekform .hc-reiziger-groep--4.hc-reiziger-groep__start::before { content: "Reiziger 4"; }
.hc-boekform .hc-reiziger-groep--5.hc-reiziger-groep__start::before { content: "Reiziger 5"; }
.hc-boekform .hc-reiziger-groep--6.hc-reiziger-groep__start::before { content: "Reiziger 6"; }
.hc-boekform .hc-reiziger-groep--7.hc-reiziger-groep__start::before { content: "Reiziger 7"; }
.hc-boekform .hc-reiziger-groep--8.hc-reiziger-groep__start::before { content: "Reiziger 8"; }

.hc-reizigers-acties {
  display: flex; flex-wrap: wrap; gap: 12px; width: 100%; margin: 22px 0 6px;
}
.hc-reiziger-knop {
  background: transparent;
  border: 1px solid var(--e-global-color-lijn-sterk);
  border-radius: 999px;
  padding: 12px 22px;
  font-family: var(--e-global-typography-knop-font-family), sans-serif;
  font-size: 12px; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--e-global-color-accent);
  cursor: pointer;
  transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
.hc-reiziger-knop::before { content: "+"; margin-right: 8px; font-size: 15px; }
.hc-reiziger-knop--minder::before { content: "\2212"; }
.hc-reiziger-knop:hover {
  background: var(--e-global-color-accent);
  border-color: var(--e-global-color-accent);
  color: var(--e-global-color-secondary);
}
.hc-reiziger-knop[hidden] { display: none; }


/* ------------------------------------------------- korte regels */

/* Een losse regel van een paar woorden hoort niet af te breken. In een
   flexrij krimpt zo'n kolom anders tot de smalste maat en valt de zin in
   tweeen. Op smal mag hij wel gewoon meelopen. */
.hc-eenregel { flex: 0 0 auto; }
.hc-eenregel :where(p, .elementor-heading-title) { white-space: nowrap; }
@media (max-width: 900px) {
  .hc-eenregel { flex: 1 1 100%; }
  .hc-eenregel :where(p, .elementor-heading-title) { white-space: normal; }
}


/* ------------------------------------------------- megamenu, woordafbreking */

/* De reisnamen in het paneel braken middenin een woord omdat de kolom smal is
   en Elementor's eigen regel woordafbreking toestaat. Twee klassen diep zodat
   deze wint. */
.hc-mega.hc-mega .hc-menukaart__titel .elementor-heading-title,
.hc-mega.hc-mega .hc-menukaart .elementor-heading-title {
  overflow-wrap: normal;
  word-break: keep-all;
  hyphens: none;
  -webkit-hyphens: none;
}
/* "Drielandenweekend" is een woord van zeventien tekens. Bij 16px past het
   niet in de kolom en breekt het middenin. keep-all helpt daar niet: dat geldt
   alleen voor Chinees, Japans en Koreaans. De letter moet dus kleiner, en het
   miniatuur smaller zodat er meer ruimte overblijft. */
.hc-mega.hc-mega .hc-menukaart .hc-menukaart__titel .elementor-heading-title {
  font-size: 13px;
  line-height: 1.3;
  letter-spacing: 0;
  white-space: nowrap;
}


/* ------------------------------------------------- mobiel menu, paneel */

/* Elementor geeft een uitklapmenu zijn eigen dropdownstijl: elf pixels met
   ruime letterafstand, bedoeld voor een lijstje onder een balk. In een paneel
   op een telefoon is dat onleesbaar en breken de reisnamen in drieen. Alles
   hieronder brengt het terug naar iets wat je met een duim kunt raken. */
.hc-mobielmenu__nav,
.hc-mobielmenu__nav .elementor-nav-menu,
.hc-mobielmenu__nav .elementor-nav-menu > li { width: 100%; }

.hc-mobielmenu__nav .elementor-nav-menu > li > a.elementor-item {
  font-family: var(--e-global-typography-secondary-font-family), sans-serif;
  font-size: 20px;
  font-weight: var(--e-global-typography-secondary-font-weight);
  letter-spacing: 0;
  text-transform: uppercase;
  color: var(--e-global-color-bone);
  padding: 16px 0;
  border-bottom: 1px solid rgba(204, 186, 120, .16);
  white-space: nowrap;
}

/* De reizen staan open onder Reizen; een uitklap in een paneel is een klik te
   veel. Ze staan iets ingesprongen met een gouden streep ernaast. */
.hc-mobielmenu__nav .elementor-nav-menu ul.sub-menu {
  display: block !important;
  position: static !important;
  width: 100%;
  background: transparent; box-shadow: none;
  margin: 6px 0 10px;
  padding: 0 0 0 16px;
  border-left: 2px solid rgba(204, 186, 120, .28);
}
.hc-mobielmenu__nav .elementor-nav-menu ul.sub-menu li { width: 100%; }
/* Een klasse extra: Elementor zet de dropdownstijl met een even specifieke
   regel die later laadt, dus zonder dit blijven de reisnamen in kapitalen met
   ruime letterafstand staan en breken ze alsnog. */
.hc-mobielmenu .hc-mobielmenu__nav .elementor-nav-menu ul.sub-menu a.elementor-sub-item {
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: 0;
  text-transform: none;
  color: var(--e-global-color-bone);
  padding: 9px 0;
  border-bottom: 0;
  white-space: nowrap;
}
.hc-mobielmenu .hc-mobielmenu__nav .elementor-nav-menu ul.sub-menu a.elementor-sub-item:hover,
.hc-mobielmenu .hc-mobielmenu__nav .elementor-nav-menu ul.sub-menu a.elementor-sub-item.elementor-item-active {
  color: var(--e-global-color-secondary);
}

.hc-mobielmenu__nav .elementor-nav-menu .sub-arrow { display: none; }


/* ------------------------------------------------- zwevende plug-inknoppen */
/* De toegankelijkheidswidget van Elementor hangt een knop van 44px vast in de
   rechteronderhoek, op elke pagina, met z-index 2147483645. Samen met de
   cookieknop stonden er twee losse iconen permanent over het ontwerp heen.
   De knop zit in een shadow root en is van buitenaf niet te bereiken; het
   gastelement #ea11y-root staat wel gewoon in de pagina.

   Let op: hiermee verdwijnt ook het voorleesmenu van die widget. De site zelf
   voldoet aan de contrasteisen en werkt met toetsenbordbediening, en zoomen
   doet de browser. Terugzetten is een regel weghalen, of de widget uitzetten
   in wp-admin bij Elementor > Accessibility. */
#ea11y-root { display: none !important; }


/* ------------------------------------------------- tekstkleur op HC Groen */
/* Mist en Goud zijn de gedempte kleuren van het donkere register en zijn
   afgestemd op Nacht: 8.07:1 en 9.75:1. Op HC Groen zakken diezelfde twee naar
   3.27:1 en 3.95:1, onder de drempel voor lopende tekst. Dat raakte de intro
   van de sectie individuele reizen, de eyebrow erboven en de naam onder elke
   review — gemeten met build/pw/contrast.js.

   De variabelen worden hier alleen op de tekstdragers zelf herschreven, niet
   op de sectie. Daarmee blijft de goudkleur van een vlak, een knoprand of een
   icoon ongemoeid; alleen wat gelezen moet worden gaat naar Goud licht, dat op
   groen 4.95:1 haalt en verder dezelfde kleur is. */
.hc-op-groen .elementor-heading-title,
.hc-op-groen .elementor-widget-text-editor,
.hc-op-groen .elementor-widget-text-editor p,
.hc-op-groen .elementor-widget-text-editor li,
.hc-op-groen .elementor-icon-list-text {
  --e-global-color-mist: var(--e-global-color-geel-zacht, #DDD0A0);
  --e-global-color-secondary: var(--e-global-color-geel-zacht, #DDD0A0);
}

/* ------------------------------------------------- nieuwsbrief in de footer */
/* Het formulier stond op de paginatekstkleur (#2E2E2E) en dus op 1.54:1 tegen
   de zwarte footer: het label was aanwezig en onleesbaar. Het veld zelf is wit,
   de tekst erin hoort dus donker te zijn; het label en de hulptekst eromheen
   staan op Mist. */
.hc-form--donker .elementor-field-group > label,
.hc-form--donker .elementor-field-subgroup label,
.hc-form--donker .elementor-field-description {
  color: var(--e-global-color-mist);
}
.hc-form--donker input,
.hc-form--donker textarea,
.hc-form--donker select {
  color: var(--e-global-color-accent);
}
.hc-form--donker input::placeholder,
.hc-form--donker textarea::placeholder {
  color: var(--e-global-color-steen);
  opacity: 1;
}

/* ------------------------------------------- klikvlak van een kalenderregel */
/* De reiskaart, de blogkaart en de reisvormkaart zijn over hun hele vlak
   klikbaar; de kalenderregel was dat niet en reageerde alleen op de knop
   rechts. Zelfde constructie als bij .hc-kaart: de knop krijgt een uitgerekte
   ::after en de lagen ertussen gaan los van position: relative, anders bedekt
   het vlak alleen de knop zelf. Een uitverkochte regel heeft geen knop en
   blijft dus terecht onklikbaar. Nagemeten met build/pw/klik.js. */
.hc-vertrek { position: relative; }
.hc-vertrek .e-con, .hc-vertrek .e-con-inner, .hc-vertrek .elementor-widget,
.hc-vertrek .elementor-widget-container, .hc-vertrek .elementor-button-wrapper,
.hc-vertrek .hc-vertrek__boek .elementor-button { position: static; }

/* ------------------------------------------------- verborgen waardedragers */
/* Een dynamic tag past niet in het attributenveld van een container, dus de
   vertrekpagina zet de reisnaam en het vertreklabel in een gewone widget die
   hier onzichtbaar wordt. De bewegingslaag leest ze uit om het
   aanvraagformulier op die pagina alvast in te vullen. */
.hc-drager { display: none !important; }


/* ============================================================ hercontrole 17 sep */

/* -------------------------------------------------- focus op een donker vlak */
/* De focusring is een groene gloed. Op gebroken wit werkt dat; op Nacht haalt
   hij 1,11:1 en op HC Groen 2,75:1, en WCAG 1.4.11 vraagt 3:1. Wie met het
   toetsenbord door de meelopende balk of de voettekst loopt zag dus niet waar
   hij stond. Op die vlakken wordt de ring licht. */
.hc-op-donker :where(a, button, input, select, textarea, [tabindex]):focus-visible,
.hc-boekbalk :where(a, button, input, select, textarea, [tabindex]):focus-visible,
.hc-footer :where(a, button, input, select, textarea, [tabindex]):focus-visible {
  box-shadow: 0 0 0 3px rgba(242, 241, 237, .85);
}

/* -------------------------------------------------- knoplabels op een klein scherm */
/* "Vraag deze reis individueel aan" is 366px breed in een kolom van 322px, en
   met white-space: nowrap valt de rechterrand buiten het scherm: de knop wordt
   afgekapt en de afgeronde hoek weggesneden. Onder de 768px mag een lang label
   dus over twee regels. De kortere labels raakt dit niet. */
/* Tot en met het tabletbreekpunt, niet alleen op mobiel. Op 768px liep dit mis
   op zeven pagina's: "Zet me op de wachtlijst" 75px buiten beeld, "Bekijk alle
   vertrekdata" 71px, "Vraag een individuele reis aan" 64px, en in de kaarten
   op /aanbod/ en de homepage werd "Bekijk →" afgekapt tot "BEKIJK" zonder pijl.
   Alles door één regel: white-space: nowrap op de knop. */
@media (max-width: 1024px) {
  .hc-btn .elementor-button,
  .hc-link .elementor-button {
    white-space: normal;
    max-width: 100%;
    text-align: center;
  }
  .hc-link .elementor-button { text-align: left; }
  .hc-btn .elementor-button-content-wrapper { flex-wrap: nowrap; }
}

/* -------------------------------------------------- de winkelwagenknop op mobiel */
/* Het aantalveld en de knop stonden naast elkaar in een rij van 390px; de knop
   liep er 43px uit en las als "Toevoegen aan winkelwag". Onder elkaar past het. */
@media (max-width: 767px) {
  .hc-product__kopen form.cart { flex-wrap: wrap; gap: 12px; }
  .hc-product__kopen form.cart .quantity { flex: 0 0 auto; }
  .hc-product__kopen form.cart .single_add_to_cart_button {
    flex: 1 1 100%;
    width: 100%;
    white-space: normal;
  }
}

/* -------------------------------------------------- de stappenbalk */
/* De labels stonden onder de 600px op display: none. Wat overbleef waren vier
   genummerde bolletjes zonder betekenis: je zag hoeveel stappen er waren, maar
   niet welke. Ze staan nu onder het cijfer, klein en afgebroken waar nodig. */
@media (max-width: 600px) {
  .hc-boekform .e-form__indicators__indicator__label {
    display: block;
    white-space: normal;
    font-size: 11px;
    line-height: 1.2;
    text-align: center;
  }
  .hc-boekform .e-form__indicators__indicator { white-space: normal; }
}
/* De inactieve stappen stonden op opacity .6 over Steen, effectief 2,39:1.
   Een stap die je nog moet doen mag gedempt zijn, niet onleesbaar. */
.hc-boekform .e-form__indicators__indicator { opacity: 1; }
.hc-boekform .e-form__indicators__indicator:not(.e-form__indicators__indicator--state-active):not(.e-form__indicators__indicator--state-completed)
  .e-form__indicators__indicator__label { color: var(--e-global-color-steen); }

/* -------------------------------------------------- uitverkochte vertrekken */
/* De kaart stond als geheel op opacity .62, waardoor de knoptekst op 3,69:1
   uitkwam terwijl de knop gewoon klikbaar is: de uitzondering voor
   uitgeschakelde bediening geldt dan niet. En er stond nergens dát het vertrek
   vol zit; je zag alleen een vage kaart. */
.hc-woo-archief li.product.outofstock { opacity: 1; }
.hc-woo-archief li.product.outofstock .hc-kaart__beeld,
.hc-woo-archief li.product.outofstock img { opacity: .55; }
.hc-woo-archief li.product.outofstock > a::after,
.hc-woo-archief li.product.outofstock::after {
  content: "Uitverkocht";
  display: inline-block;
  margin-top: 8px;
  padding: 3px 10px;
  font-family: var(--e-global-typography-accent-font-family), sans-serif;
  font-size: 10.5px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--e-global-color-bone);
  background: var(--e-global-color-steen);
  border-radius: 999px;
}
.hc-woo-archief li.product.outofstock > a::after { content: none; }

/* -------------------------------------------------- de balk op een klein scherm */
/* 152px van 844px op de reisvormpagina's en 197px op de keuzepagina's, ofwel
   18 tot 23 procent van het scherm, permanent. De reisnaam kan eruit: die staat
   in de kop van de pagina waar je op staat. */
@media (max-width: 767px) {
  .hc-boekbalk #hc-reis-boekbalk-titel,
  .hc-boekbalk .hc-boekbalk__titel { display: none; }
  .hc-boekbalk > .e-con-inner > .e-con:first-child > .elementor-widget-heading:first-child {
    display: none;
  }
  .hc-boekbalk { padding-top: 10px; padding-bottom: 10px; }
}

/* -------------------------------------------------- de keuzekaart per reisvorm */
/* "Hoe wil je deze reis doen?" is de kern van de reispagina, en daar was alleen
   de tekstlink onderaan klikbaar. Zelfde constructie als bij .hc-kaart en
   .hc-vormkaart: de knop krijgt een uitgerekte ::after en de lagen ertussen
   gaan los van position: relative, anders bedekt het vlak alleen de knop. */
.hc-keuzekaart { position: relative; }
.hc-keuzekaart .e-con, .hc-keuzekaart .e-con-inner,
.hc-keuzekaart .elementor-widget, .hc-keuzekaart .elementor-widget-container,
.hc-keuzekaart .elementor-button-wrapper,
.hc-keuzekaart .hc-btn .elementor-button { position: static; }
/* Het hele vlak reageert nu, dus ook de aanwijzer en de hover horen bij de
   kaart en niet alleen bij de link. */
.hc-keuzekaart { cursor: pointer; transition: border-color .15s ease, transform .15s ease; }
.hc-keuzekaart:hover { border-color: var(--e-global-color-primary); }
.hc-keuzekaart:hover .hc-btn--pijl .elementor-button-icon { transform: translateX(4px); }

/* -------------------------------------------------- cijfers in de stappenbalk */
/* Een afgeronde stap krijgt een gevulde cirkel in Nacht, maar het cijfer erin
   bleef Nacht: zwart op zwart, contrast 1.00, dus je zag alleen een donkere
   stip en wist niet meer welke stap je gehad had. Gemeten met
   build/pw/stapnummers.js. */
.hc-boekform .e-form__indicators__indicator--state-completed .e-form__indicators__indicator__number,
.hc-boekform .e-form__indicators__indicator--state-completed .e-form__indicators__indicator__icon {
  color: var(--e-global-color-bone);
}


/* -------------------------------------------------- klikvlak van een kaart */
/* Het klikvlak zelf zit in design/beweging.js (kaartklik). De css-oplossing met
   een uitgerekte ::after leek te werken maar leverde geen kliks af; wat hier
   overblijft is de aanwijzer, zodat het vlak er ook klikbaar uitziet. */
.hc-klikbaar { cursor: pointer; }

/* ============================================ mobiele controle 17 september */

@media (max-width: 767px) {
  /* De productkaarten op /shop/ liepen 36px buiten hun container. Omdat html en
     body op overflow-x: clip staan werd dat stuk afgeknipt in plaats van
     scrollbaar: je zag een kaart met een afgesneden rechterrand en geen manier
     om erbij te komen. WooCommerce rekent de kaartbreedte zelf uit met een
     negatieve marge die hier niet opgaat. */
  /* Niet op .hc-woo-archief: die klasse staat op de widget van de vertrekpagina
     en niet op het archief van /shop/, en daar zat de fout juist. De ul is wel
     322 breed, het is de li die op de eigen rasterbreedte van WooCommerce blijft
     staan en 382 wordt. */
  /* De ul is een raster van Elementor (.elementor-grid, columns-4) en de li is
     dus een rasteritem: width op het item doet niets zolang de kolom zelf 382
     breed blijft. Op een scherm van 390 past er een kolom. */
  /* Elementor legt hier een raster neer waarvan de kolom 382px breed blijft in
     een container van 322: de kaart werd 36px afgesneden en omdat html en body
     op overflow-x: clip staan viel dat stuk gewoon weg. De kolombreedte
     overschrijven lukte niet, die wordt dieper gezet dan een uitroepteken hier
     wint. Op een scherm van 390 past er toch maar een kaart naast elkaar, dus
     het raster gaat eruit en de kaarten staan onder elkaar. */
  .elementor .woocommerce ul.products {
    margin-right: 0;
    margin-left: 0;
    display: block !important;
  }
  .elementor .woocommerce ul.products li.product {
    width: 100% !important;
    margin-right: 0 !important;
    margin-left: 0 !important;
    float: none !important;
    clear: both;
    margin-bottom: 24px !important;
  }

  /* Raakvlakken. De menuregels in de voettekst waren 36px hoog en raakten
     elkaar zonder tussenruimte; de juridische regels onderaan waren 13px. De
     eis is 44px, of een vrij vlak van 44 om het midden. De tekst blijft waar
     hij staat, alleen het aanraakbare vlak groeit. */
  /* De voettekst is een theme-sjabloon; Elementor zet er zijn eigen
     .elementor-location-footer omheen en onze eigen klasse zit dieper. */
  /* Elementor zet de padding van een menuregel zelf met een .elementor-kit-6 die even
     zwaar weegt en later laadt, vandaar het uitroepteken. */
  .elementor-location-footer .elementor-nav-menu a.elementor-item {
    padding-top: 12px !important;
    padding-bottom: 12px !important;
  }
  .hc-juridisch .elementor-nav-menu a.elementor-item {
    padding-top: 16px !important;
    padding-bottom: 16px !important;
  }
  .hc-juridisch .elementor-nav-menu { row-gap: 4px; }

  /* De hamburgerknop was 26x26. Er is ruimte omheen, dus hij haalde de norm,
     maar een knop die het hele menu opent mag zelf raakbaar zijn. */
  .hc-burger a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
  }

  /* De stappenbalk viel uiteen in vier regels van samen 377px, bijna de helft
     van het scherm, en stap 1 stond uit de lijn: een smaller vak, het cijfer
     27px naar links en als enige een label over twee regels. Vier gelijke
     vakken naast elkaar, en de labels eronder. */
  .hc-boekform .e-form__indicators {
    display: flex;
    flex-wrap: nowrap;
    gap: 6px;
    align-items: flex-start;
  }
  .hc-boekform .e-form__indicators__indicator {
    flex: 1 1 0;
    min-width: 0;
    text-align: center;
    padding: 0;
  }
  .hc-boekform .e-form__indicators__indicator__number {
    margin: 0 auto;
  }
  .hc-boekform .e-form__indicators__indicator__label {
    font-size: 10px;
    letter-spacing: .06em;
    line-height: 1.25;
    hyphens: auto;
  }
  .hc-boekform .e-form__indicators__indicator__separator { display: none; }
}

/* Hetzelfde raster loopt op tablet uit de container: de kolom blijft 478px in
   een breedte van 668. Daar passen er twee naast elkaar, dus flex in plaats van
   het raster, met dezelfde reden als hierboven: de kolombreedte zelf is niet te
   overschrijven. */
@media (min-width: 768px) and (max-width: 1024px) {
  .elementor .woocommerce ul.products {
    display: flex !important;
    flex-wrap: wrap;
    gap: 24px;
    margin-right: 0;
    margin-left: 0;
  }
  .elementor .woocommerce ul.products li.product {
    width: calc(50% - 12px) !important;
    margin: 0 !important;
    float: none !important;
  }
}


/* ------------------------------------------- tabletcontrole 17 september */

@media (min-width: 768px) and (max-width: 1024px) {
  /* "Wat is inbegrepen" hield twee kolommen aan binnen een halve kolom: 138px
     per kolom, regels van één woord. Op tablet is er ruimte voor één. */
  .hc-sectie[id="inbegrepen"] .elementor-grid,
  .hc-sectie[id="inbegrepen"] [class*="elementor-grid-"] {
    grid-template-columns: 1fr !important;
  }
  .hc-sectie[id="inbegrepen"] > .e-con-inner > .e-con { flex-wrap: wrap; }
}

/* De meelopende balk staat vast onderaan en dekt daar de onderste strook van de
   pagina af: op tablet ving hij kliks op waar een keuzekaart nog doorliep. De
   pagina krijgt onderaan evenveel ruimte terug als de balk hoog is, zodat je
   overal onderlangs kunt scrollen. */
body:has(.hc-boekbalk) { padding-bottom: 96px; }
@media (max-width: 767px) { body:has(.hc-boekbalk) { padding-bottom: 150px; } }

/* De winkelwagenknop stak 10px buiten zijn kolom: padding plus breedte telden
   bij elkaar op. */
.elementor .elementor-element.hc-woo .cart button.single_add_to_cart_button,
.elementor .elementor-element.hc-woo .single_add_to_cart_button { box-sizing: border-box; }



/* ------------------------------------------- klikvlakken, 17 september laat */
/* De uitgerekte ::after op de link in een kaart is overal weggehaald. Hij
   maakte de kaart niet klikbaar (dat doet kaartklik() in design/beweging.js)
   maar lag wel over de tekst, en dat had twee gevolgen: in geen enkele kaart
   was tekst met de muis te selecteren, en slepen over die tekst begon een
   linksleep in plaats van een selectie. Bij loslaten was er dan geen selectie,
   dus de uitzondering in kaartklik() sloeg niet aan en de kaart navigeerde weg
   terwijl de bezoeker alleen tekst wilde meenemen. Gemeten op /, op
   /reis/fietsreis-toscane/ en op /reis/fietsweekend-klassiekers/. */

/* Het nieuwsbriefveld in de voettekst kreeg bij focus alleen een schaduw van
   1.01 tegen het witte veld en een rand van 1.49 tegen het donkere vlak. WCAG
   1.4.11 vraagt 3:1, en elk ander focuspunt op de site haalt dat wel. */
.hc-form--donker input:focus,
.hc-form--donker input:focus-visible,
.hc-form--donker textarea:focus {
  outline: none;
  /* Goud op Nacht haalt 9.75:1, ruim boven de 3:1 van WCAG 1.4.11. De ring
     eromheen moet met een uitroepteken: Elementor zet op dit veld zijn eigen
     box-shadow en die wint anders. */
  border-color: var(--e-global-color-secondary);
  box-shadow: 0 0 0 3px rgba(242, 241, 237, .85) !important;
}



/* ===== aanbod.css ===== */
/* Hungry Cyclist — aanvulling voor /aanbod/: de filterchips boven de reizen.

   Wordt door build/site_css.py als Custom CSS in de kit gezet, samen met
   design/site.css en de andere aanvullingen. De chips komen uit de widget
   `taxonomy-filter` in build/archief.py.

   WAAROM CSS: deze widget tekent zijn chips met eigen Elementor-variabelen
   (--e-filter-*) en die staan standaard op het plugin-grijs #69727d met een
   bijna-zwart #0c0d0e voor de actieve staat. Kleur, vorm en uitlijning zijn
   hier dus geen widgetinstelling; ze worden hieronder op de globals uit Site
   Settings gezet. Wat de widget wél kan besturen — de typografie — staat in
   build/archief.py en verwijst daar naar HC / Knop.

   WAAROM DE DUBBELE CLASS: elke .elementor-kit-6 hieronder draagt naast .hc-filter ook
   .elementor-widget-taxonomy-filter. De plugin zet zijn eigen waarden met
   precies dezelfde specificiteit (.elementor-widget-taxonomy-filter en
   .elementor-widget-taxonomy-filter .e-filter-item) en widget-loop-filter.css
   wordt ná de Custom CSS van de kit ingeladen. Bij gelijke specificiteit wint
   dan het laatste blad, en dat is de plugin. Met de tweede class ligt het
   verschil vast in plaats van in de volgorde van de <link>-tags. Dezelfde
   ingreep als bij het formulier in paginas.css.

   De vorm is de pill-knop uit design/componenten.md §1.2: rust transparant met
   een lijn, hover op Zandvlak met een groene lijn. De ingedrukte chip krijgt
   het vlak van de primaire knop op licht (Inkt met Gebroken wit en een groene
   rand), niet een goud vlak: geel is op deze site een merkteken en nooit een
   vlak, en goud op groen haalt met 3.9:1 de contrasteis niet. */

.hc-filter.elementor-widget-taxonomy-filter {
  --e-filter-normal-text-color: var(--e-global-color-text);
  --e-filter-hover-text-color: var(--e-global-color-primary);
  --e-filter-active-text-color: var(--e-global-color-bone);
  --e-filter-space-between: 10px;
  /* De widget centreert zijn rij standaard. De kop, het raster en de rest van
     de pagina staan links, dus de chips ook. */
  --e-filter-justify-content: flex-start;
}

.hc-filter.elementor-widget-taxonomy-filter .e-filter-item {
  /* De plugin zet de chip op content-box (--e-filter-item-box-sizing:
     initial). Met een min-hoogte erbij telt de padding daar bovenop en wordt
     een chip van 44 px er een van 70. */
  box-sizing: border-box;
  padding: 12px 20px;
  min-height: 44px;              /* aanraakdoel */
  border-style: solid;
  border-color: var(--e-global-color-lijn-sterk);
  border-radius: 999px;
  transition: background-color .15s ease, border-color .15s ease,
              color .15s ease;
}

.hc-filter.elementor-widget-taxonomy-filter .e-filter-item:hover:not([aria-pressed="true"]) {
  background-color: var(--e-global-color-steenvlak);
  border-color: var(--e-global-color-primary);
}

.hc-filter.elementor-widget-taxonomy-filter .e-filter-item[aria-pressed="true"] {
  background-color: var(--e-global-color-accent);
  border-color: var(--e-global-color-primary);
}

/* Levert een reisvorm niets op, dan zet het raster daar een regel neer. Die
   staat standaard gecentreerd in het bijna-zwart #1f2124 van de plugin. Op dit
   moment heeft elke reisvorm reizen, dus hij is niet te zien; hij hoort alleen
   niet te verschijnen in een kleur die niet van de site is. Het is meteen waar
   de CSS-id van het raster voor dient. Het wachten tijdens het wisselen regelt
   Elementor zelf, met een pulserende dekking op .e-loading-overlay. */
#hc-reizen.elementor-widget-loop-grid {
  --e-loop-nothing-found-message-color: var(--e-global-color-steen);
  --e-loop-nothing-found-message-align: start;
}



/* ===== blog.css ===== */
/* Hungry Cyclist — aanvulling voor de blogsectie.

   Alleen regels die een Elementor-widget zelf niet kan uitdrukken. Kleur,
   typografie en verticale ruimte staan in de widget-instellingen, niet hier.
   Samen te voegen met design/site.css; zolang dat niet gebeurd is hangt
   build/blog.py dit blok achter de custom CSS van de kit, zodat de sectie nu
   al klopt. */

/* ---------------------------------------------------------------- blogkaart */

/* De image-widget kent geen beeldverhouding. Zonder deze regel bepaalt de
   originele foto de hoogte van de kaart en staan drie kaarten naast elkaar
   niet op één lijn: de pici-foto is bijna vierkant, de strade-foto staand.
   3:2 is de verhouding waarin een landschapsfoto het minst verliest. */
.hc-blogkaart__beeld img {
  transition: transform .9s cubic-bezier(.2, .7, .2, 1);
}

/* De samenvatting komt uit de dynamic tag post-excerpt en die levert kale
   tekst zonder <p>. De regel .hc-clamp-2 in site.css mikt op die <p> en grijpt
   hier dus niet; deze doet hetzelfde op de widget zelf. */
.hc-blogkaart__lede {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Twee instellingen die deze Elementor-versie wel opslaat maar niet uitvoert:
   `height: 100%` op een container komt terug als `--height: auto`, en
   `flex_grow` schrijft Elementor over met zijn eigen `--flex-grow: 0` op een
   .elementor-kit-6 die specifieker is dan wat wij hier kunnen halen. Zonder deze twee
   regels worden drie kaarten naast elkaar niet even hoog en staan hun pijlen
   niet op één lijn. `margin-top: auto` doet hetzelfde als flex-grow en botst
   nergens mee, want op de voet staat geen marge-instelling. */

/* Eén link per kaart, met de titel als leesbare naam, maar het hele vlak
   klikbaar. Een container met een dynamische link rendert op deze installatie
   geen <a> (de reiskaart heeft daardoor geen klikbare kaart), dus de link zit
   op de kop en wordt hier over de kaart heen gerekt. Elementor zet elk element
   op `position: relative`, dus de tussenliggende elementen moeten los, anders
   dekt het klikvlak alleen de kop. */
.hc-blogkaart { position: relative; }
.hc-blogkaart__tekst, .hc-blogkaart__titel { position: static; }
.hc-blogkaart__titel a { color: inherit; text-decoration: none; }
.hc-blogkaart__titel a::after { content: ""; position: absolute; inset: 0; z-index: 1; }

/* De focusring hoort op de hele kaart, niet op de koptekst alleen. */
.hc-blogkaart__titel a:focus-visible { outline: none; }
.hc-blogkaart:focus-within {
  outline: 3px solid var(--e-global-color-primary);
  outline-offset: 6px;
}

/* De blogkaart heeft bewust geen doos om zich heen (zie build/BLOG.md), dus
   ook geen kaartschaduw bij hover. Wat blijft is de trage inzoom op het beeld
   en de pijl die vooruit stapt: dezelfde taal als de reiskaart, ander
   materiaal. */
.hc-blogkaart:hover .hc-blogkaart__beeld img { transform: scale(1.04); }

.hc-blogkaart__pijl .elementor-heading-title {
  display: inline-block;
  transition: transform .15s ease;
}
.hc-blogkaart:hover .hc-blogkaart__pijl .elementor-heading-title {
  transform: translateX(4px);
}

/* ---------------------------------------------------------------- bericht */

/* Dezelfde reden als bij de kaart: de drie uitgelichte afbeeldingen hebben
   drie verschillende verhoudingen en de hero mag niet per artikel een andere
   hoogte krijgen. 4:5 staand, want het beeld staat naast een tekstkolom die
   eronder uitlijnt. */
.hc-bericht__beeld img {
  aspect-ratio: 4 / 5;
  object-fit: cover;
  width: 100%;
  display: block;
  border-radius: 0;  /* hoekig: alleen de passe-partout rondt af */
}

/* Twee beelden in de artikelen bestaan alleen nog als miniatuur op de oude
   site (191x255 en 300x225 px). Opgerekt naar leesbreedte worden dat blokken
   pixels, dus ze blijven klein. De image-widget kan alleen een percentage,
   geen maximum in px. */



/* ===== faq-reviews.css ===== */
/* Hungry Cyclist — aanvullingen voor /faq/ en /klantenreviews/.

   Deze regels staan hier en niet in design/site.css omdat site.css gedeeld is
   met parallel werk. Ze worden door build/faq_reviews.py in de paginainstelling
   `custom_css` van juist die twee pagina's gezet, dus ze laden nergens anders.

   Alles wat hier kleur of typografie aanraakt doet dat via een globale
   variabele uit Site Settings (--e-global-color-*, --e-global-typography-*),
   nooit via een losse waarde. Een merkwijziging werkt dus gewoon door.
   Bij elk blok staat waarom het niet met widget-instellingen kon. */


/* ===================================================== hele zinnen */

/* WAAROM CSS: de globale tekststijlen h4, primary en citaat staan in Site
   Settings op text-transform: uppercase. Dat werkt voor een label van een
   woord (ALGEMEEN, FRANK V.) maar niet voor een vraag van twaalf woorden of
   een citaat van twee regels; die worden dan onleesbaar en schreeuwerig.
   Alleen de transform gaat hier terug naar none. Letter, gewicht, grootte en
   kleur blijven van de globals, dus een wijziging in Site Settings werkt
   gewoon door. Staat de globale stijl niet op uppercase, dan doet deze regel
   niets. Een eigen tekststijl aanmaken kan niet: de kit is gedeeld met
   parallel werk en design/tokens.json mag niet aangeraakt worden. */
/* De .elementor-kit-6s zijn expres lang. Elementor schrijft de globale tekststijl per
   element weg als `.elementor-<id> .elementor-element.elementor-element-<id>`,
   drie klassen diep, en bij een loop-item staat die regel in een <style> in de
   body, dus na dit bestand. Alleen meer klassen wint daarvan, en dat kan
   zonder !important: `.elementor` staat op elke Elementor-wortel. */
.elementor .elementor-element.hc-zin.elementor-widget,
.elementor .elementor-element.hc-zin.elementor-widget .elementor-heading-title,
.elementor .elementor-element.hc-zin.elementor-widget .elementor-widget-container,
.hc-faq .e-n-accordion-item-title-text { text-transform: none; }


/* ================================================================ FAQ */

/* WAAROM CSS: de widget `nested-accordion` publiceert geen Elementor-besturing
   voor titelkleur, iconkleur, randen of titelgrootte. Hij leest die uit eigen
   CSS-variabelen (--n-accordion-*). Empirisch getest op deze staging: van
   vijftien kandidaat-besturingsnamen (title_normal_color, header_title_color,
   accordion_normal_title_color, icon_color, ...) emitteert er geen enkele CSS;
   alleen `accordion_padding`, `content_padding`, `title_typography_typography`
   en `accordion_item_title_*` doen dat wel, en die staan dan ook in de
   widget-instellingen. De rest kan niet anders dan hier. */
.hc-faq .elementor-widget-n-accordion {
  --n-accordion-title-normal-color: var(--e-global-color-accent);
  --n-accordion-title-hover-color:  var(--e-global-color-primary);
  --n-accordion-title-active-color: var(--e-global-color-primary);
  --n-accordion-icon-normal-color:  var(--e-global-color-steen);
  --n-accordion-icon-hover-color:   var(--e-global-color-primary);
  --n-accordion-icon-active-color:  var(--e-global-color-primary);
  --n-accordion-title-font-size:    var(--e-global-typography-h4-font-size);
  --n-accordion-title-justify-content: space-between;
  --n-accordion-title-icon-order: 1;   /* plus/min rechts, vraag links */
  --n-accordion-border-width: 0px;
  --n-accordion-icon-size: 13px;
  --n-accordion-icon-gap: 0 28px;
}

/* De widget geeft de titelkop zelf geen flex-grow (de plugin verwijst daar naar
   een variabele van een ander widget), waardoor space-between niets doet. */
.hc-faq .e-n-accordion-item-title-header { flex: 1 1 auto; }
.hc-faq .e-n-accordion-item-title { transition: color .15s ease; }
.hc-faq .e-n-accordion-item-title-text { padding-right: 16px; }

.hc-faq .elementor-widget-theme-post-content p + p { margin-top: .85em; }

/* WAAROM CSS: Elementor kent geen positie-sticky op een container; zijn eigen
   sticky is een JS-effect dat naar position:fixed schakelt en daarmee uit de
   twee-kolomsrij valt. Een leesbalk naast een lijst van 33 vragen hoort mee te
   lopen, dus hier de gewone CSS-variant. */
.hc-faq-rail { position: sticky; top: 136px; align-self: flex-start; }

/* De gedeelde sectieklasse staat in design/site.css op `overflow: hidden`.
   Dat maakt van elke sectie een scrollcontainer, en een sticky kind plakt dan
   aan die container in plaats van aan het venster: de balk blijft gewoon
   staan. `overflow: clip` knipt precies hetzelfde af maar maakt geen
   scrollcontainer, dus alleen deze ene sectie schakelt om. */
.hc-faq.hc-sectie { overflow: clip; }

.hc-faq-rail .elementor-icon-list-item a {
  border-bottom: 1px solid transparent;
  transition: color .15s ease, border-color .15s ease;
}
.hc-faq-rail .elementor-icon-list-item a:hover {
  border-bottom-color: var(--e-global-color-secondary);
}

/* Onder 768px is de balk geen balk meer maar een rij chips boven de vragen.
   Dat is de expliciete stapeling die de bouwgids vraagt. */
@media (max-width: 767px) {
  .hc-faq-rail { position: static; }
  .hc-faq-rail .elementor-icon-list-items {
    display: flex; flex-wrap: wrap; gap: 8px;
  }
  .hc-faq-rail .elementor-icon-list-item {
    border: 1px solid var(--e-global-color-lijn-sterk);
    border-radius: 0;  /* hoekig: alleen de passe-partout rondt af */
    padding: 6px 12px !important;
  }
}

/* De laatste vraag van een categorie sluit met dezelfde haarlijn als waarmee
   elke vraag begint; anders eindigt de groep in het niets. Een loop-item kan
   geen :last-child-regel meekrijgen via widget-instellingen. */
.hc-faq-groep .elementor-loop-container > :last-child .hc-faq-item {
  border-bottom: 1px solid var(--e-global-color-lijn);
}


/* ============================================================= REVIEWS */

/* WAAROM CSS: een loop-grid legt een CSS-grid neer met gelijke rijhoogtes.
   Zesendertig meningen van vier tot tweehonderd woorden in gelijke vakken is
   precies het raster dat hier verboden is. Kolomstroom geeft ze hun eigen
   hoogte zonder JS, zonder kaart en zonder afkappen. Elementor heeft hier wel
   een masonry-schakelaar voor, maar die werkt met JavaScript en laat de lijst
   bij uitgeschakeld script als een raster achter. */
.hc-reviews .elementor-widget-loop-grid .elementor-loop-container {
  display: block;
  column-count: 3;
  column-gap: 56px;
}
.hc-reviews .elementor-widget-loop-grid .elementor-loop-container > * {
  break-inside: avoid;
  page-break-inside: avoid;
  margin-bottom: 44px;
}
@media (max-width: 1024px) {
  .hc-reviews .elementor-widget-loop-grid .elementor-loop-container { column-count: 2; column-gap: 40px; }
}
@media (max-width: 767px) {
  .hc-reviews .elementor-widget-loop-grid .elementor-loop-container { column-count: 1; }
  .hc-reviews .elementor-widget-loop-grid .elementor-loop-container > * { margin-bottom: 32px; }
}

.hc-reviews .elementor-widget-theme-post-content p + p { margin-top: .8em; }

/* Het gele streepje boven het uitgelichte citaat. Geel is op deze site een
   teken en nooit een vlak, dus het is een lijn en geen achtergrond. Een
   divider-widget zou hier een extra element in de loop-item-template kosten
   dat per review meeschaalt; dit hoort bij de sectie, niet bij de review. */
.hc-citaat-links::before {
  content: ""; display: block; width: 56px; height: 2px;
  background: var(--e-global-color-secondary);
  margin-bottom: 30px;
}

/* WAAROM CSS: de pijlen van image-carousel hebben geen globale kleurbesturing
   die op __globals__ aansluit; ze erven anders het Elementor-blauw. */
.hc-fotostrip .elementor-swiper-button {
  color: var(--e-global-color-accent);
  background: var(--e-global-color-papier);
  border-radius: 999px;
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 10px 24px -16px rgba(19, 34, 26, .5);
}
.hc-fotostrip .swiper-slide img {
  border-radius: 0;  /* hoekig: alleen de passe-partout rondt af */   /* het kaartradius-systeem, ook op een beeldvlak */
  display: block;
}



/* ===== kalender.css ===== */
/* Hungry Cyclist — aanvulling voor /kalender/ en de webshoppagina's.

   build/site_css.py hangt dit blok achter design/site.css in de Custom CSS van
   de kit. Elke regel hieronder staat er omdat een Elementor-widget er geen
   besturing voor heeft, of omdat WooCommerce zijn eigen opmaak meebrengt die
   naast de huisstijl valt. Kleur en typografie die wél instelbaar zijn, staan
   in de widget en verwijzen naar een global; die vind je hier dus niet terug.

   Waar hier toch kleur staat, is dat altijd een var(--e-global-color-*) uit
   Site Settings. Er staat geen enkele losse waarde in dit bestand, ook niet
   voor de WooCommerce-onderdelen, zodat een merkwijziging in Site Settings
   ook de winkelwagen meeneemt. */


/* ============================================================== kalender */

/* WAAROM CSS: de kalender is een loop-grid met één kolom. Elke regel moet
   binnen die kolom drie blokken naast elkaar zetten — datum, reis, prijs —
   en die verhouding is geen widget-instelling maar een grid-definitie.
   Een flexrij zou het ook doen, maar dan lopen de datums van de dertien
   regels niet onder elkaar uit omdat "September 2026" breder is dan
   "Mei 2026". Een vaste eerste kolom houdt ze op één lijn, en dat is precies
   wat een kalender leesbaar maakt. */
.hc-vertrek {
  display: grid;
  grid-template-columns: 168px 1fr;
  align-items: center;
  column-gap: 28px;
  border-bottom: 1px solid var(--e-global-color-lijn);
}

/* De loop-grid zet zelf geen scheiding tussen de items, en de rand hierboven
   zit op het item. De laatste regel krijgt er dus een te veel; die haalt de
   sectie-onderkant weg. */
.hc-vertrekken .elementor-grid > :last-child .hc-vertrek { border-bottom: 0; }

/* WAAROM CSS: de hele regel moet klikbaar zijn, niet alleen de drie woorden
   van de knop. Dezelfde ingreep als .hc-kaart__link in site.css: het anker van
   de knop wordt over de regel uitgerekt. Dat het anker van de knop is en niet
   van de datum is opzet: een uitverkocht vertrek heeft geen knop en is dus ook
   niet klikbaar, want er valt niets te boeken. */
.hc-vertrek { position: relative; }
.hc-vertrek__boek a::after {
  content: "";
  position: absolute;
  inset: 0;
}
/* Dezelfde reden als bij .hc-kaart__link in site.css: de lagen tussen regel
   en knop staan van Elementor op relative en houden het klikvlak klein. */
.hc-vertrek .e-con, .hc-vertrek .hc-vertrek__boek,
.hc-vertrek .hc-vertrek__boek .elementor-widget-container,
.hc-vertrek .hc-vertrek__boek .elementor-button-wrapper { position: static; }

.hc-vertrek__datum { min-width: 0; }
.hc-vertrek__rechts { justify-self: end; }

/* WAAROM CSS: dit is de kern van de voorraadweergave. Prijs plus boekknop en
   het woord "Uitverkocht" staan allebei als echte widget in het loop-item;
   WooCommerce zet zelf `instock` of `outofstock` als klasse op de wortel van
   dat item. Deze twee regels laten er precies één zien. De voorraadstatus
   staat daardoor maar op één plek — in WooCommerce — en er is geen overgetypt
   label dat veroudert zodra Ken een vertrek sluit. Elementor kent geen
   voorwaardelijke zichtbaarheid, dus dit kan niet in de widget. */
/* Een vertrek dat al onderweg is. beweging.js zet de klasse op de regel zodra
   de startdatum voorbij is en haalt de boekknop weg; hier verbleekt de regel
   zodat je in één oogopslag ziet wat er nog te kiezen valt. Niet met
   pointer-events:none: er valt niets meer te klikken. */
.hc-vertrek__vertrokken { display: none; }
.hc-vertrek--vertrokken .hc-vertrek__vertrokken { display: block; }
.hc-vertrek--vertrokken { opacity: .5; }
.hc-vertrek--vertrokken .hc-vertrek__prijs,
.hc-vertrek--vertrokken .hc-vertrek__uitverkocht { display: none; }

.hc-vertrek__uitverkocht { display: none; }
.outofstock .hc-vertrek__uitverkocht,
.hc-vertrek--vol .hc-vertrek__uitverkocht { display: block; }
.outofstock .hc-vertrek__prijs,
.outofstock .hc-vertrek__boek,
.hc-vertrek--vol .hc-vertrek__prijs,
.hc-vertrek--vol .hc-vertrek__boek { display: none; }

/* De prijsklasse van een variabel product is "€ 2.349,00 - € 3.199,00" en die
   mag niet halverwege afbreken; dan lijkt het twee losse bedragen.
   (De .screen-reader-text die WooCommerce erbij zet is al door de
   WooCommerce-stylesheet zelf weggeklipt, dus daar staat hier niets over.) */
.hc-vertrek__prijs .elementor-heading-title { white-space: nowrap; }

/* De vertrekken staan gegroepeerd per reis. Elke groep is een eigen loop-grid
   over zijn eigen productcategorie; de kop erboven is de naam van de reis en
   linkt naar de reispagina. De ruimte tussen kop en eerste regel moet klein
   zijn, anders lijkt de kop bij de groep erboven te horen. */
.hc-vertrekgroep__titel { margin-bottom: 2px; }
.hc-vertrekgroep__titel a { text-decoration: none; color: inherit; }
.hc-vertrekgroep__titel a:hover { color: var(--e-global-color-primary); }

/* De bovenste regel van een groep krijgt ook een lijn, zodat de groep als
   blok leest en niet als een kop met een losse opsomming eronder. */
.hc-vertrekgroep .elementor-grid > :first-child .hc-vertrek {
  border-top: 1px solid var(--e-global-color-lijn);
}

/* ------------------------------------------------------------- 767px */

/* Op mobiel is er geen ruimte voor drie kolommen naast elkaar. De regel wordt
   een blok: datum boven, reis eronder, prijs en knop onderaan links. De
   `justify-self: end` van de rechterkolom moet expliciet terug, anders blijft
   de knop rechts hangen terwijl de rest links staat. */
@media (max-width: 767px) {
  .hc-vertrek {
    grid-template-columns: 1fr;
    row-gap: 12px;
    align-items: start;
  }
  .hc-vertrek__rechts {
    justify-self: start;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 16px;
  }
}


/* ============================================================ webshop */

/* De vier webshoppagina's zijn de boekingsstap, geen etalage. WooCommerce
   brengt zijn eigen knoppen, tabellen en velden mee; die staan hier op de
   globals van de kit gezet zodat ze niet als een tweede huisstijl naast de
   site staan. Alles gaat via var(--e-global-*), dus er is geen tweede
   waarheid over de merkkleuren. */

/* De .elementor-kit-6s zijn expres lang. Elementor Pro laadt per WooCommerce-widget een
   eigen stylesheet (widget-woocommerce-cart.min.css en zijn broertjes) en die
   zet de knoppen op zijn eigen blauw met .elementor-kit-6s van vier klassen diep, in
   een bestand dat ná de Custom CSS van de kit laadt. Een kortere .elementor-kit-6
   verliest daar stil van: de knop blijft dan #5BC0DE. Vier klassen plus een
   elementnaam wint zonder !important. */
.elementor .elementor-element.hc-woo .woocommerce a.button,
.elementor .elementor-element.hc-woo .woocommerce button.button,
.elementor .elementor-element.hc-woo .woocommerce input.button,
.elementor .elementor-element.hc-woo .woocommerce a.checkout-button,
.elementor .elementor-element.hc-woo .woocommerce input[type="submit"],
.elementor .elementor-element.hc-woo .woocommerce button[type="submit"] {
  background: var(--e-global-color-primary);
  color: var(--e-global-color-wit);
  border: 1px solid var(--e-global-color-primary);
  border-radius: 0;
  font-family: var(--e-global-typography-knop-font-family), sans-serif;
  font-size: var(--e-global-typography-knop-font-size);
  font-weight: var(--e-global-typography-knop-font-weight);
  letter-spacing: var(--e-global-typography-knop-letter-spacing);
  text-transform: var(--e-global-typography-knop-text-transform);
}

/* "Winkelwagen bijwerken" en "Verder winkelen" zijn secundair: ze horen niet
   even zwaar te wegen als "Doorgaan naar kassa". WooCommerce zet die eerste
   bovendien op disabled tot je een aantal wijzigt; die grijze staat komt van
   WooCommerce zelf en blijft staan, want een uitgeschakelde knop die eruitziet
   als een werkende knop is erger dan een grijze. */
.elementor .elementor-element.hc-woo .woocommerce button.button[name="update_cart"],
.elementor .elementor-element.hc-woo .woocommerce a.button.wc-backward {
  background: transparent;
  color: var(--e-global-color-primary);
}

/* "Toevoegen aan winkelwagen" en "Plaats bestelling" hebben allebei een eigen
   Elementor-stylesheet die ze op een eigen kleur zet: #7F54B3 paars op de
   vertrekpagina, #5BC0DE blauw op het afrekenen. Die .elementor-kit-6s gaan vier
   klassen diep en bij place_order staan er bovendien twee id's in, dus daar is
   een id in de .elementor-kit-6 nodig om te winnen. Zonder dit blok staat er een
   paarse knop op de productpagina; dat is precies wat er gemeld werd. */
.elementor .elementor-element.hc-woo .cart button.single_add_to_cart_button,
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment #place_order {
  /* Gemeten op de knop "Volgende" van .hc-boekform: Nacht met een groene rand,
     witte tekst, Inter 13px/600 met 1.82px letterafstand, pilvorm, 51px hoog,
     over de volle breedte van het blok. Dit is dezelfde handeling in dezelfde
     kolom, dus dezelfde knop. */
  display: block;
  width: 100%;
  background: var(--e-global-color-accent);
  color: var(--e-global-color-wit);
  border: 1px solid var(--e-global-color-primary);
  border-radius: 999px;
  padding: 18px 32px;
  min-height: 51px;
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 1.82px;
  text-transform: uppercase;
  text-align: center;
}

/* Dezelfde ingreep voor /mijn-account/. De widget woocommerce-my-account
   heeft weer een eigen stylesheet, met .elementor-kit-6s die via
   `.e-my-account-tab:not(...)` op vijf klassen uitkomen. Zes klassen plus een
   elementnaam wint daarvan. Zonder dit blok staat er een blauwe inlogknop met
   afgeronde hoeken in een grijs veld. */
.elementor .elementor-element.hc-woo .e-my-account-tab .woocommerce .login button.button,
.elementor .elementor-element.hc-woo .e-my-account-tab .woocommerce form button.button,
.elementor .elementor-element.hc-woo .e-my-account-tab .woocommerce a.button {
  background: var(--e-global-color-primary);
  color: var(--e-global-color-wit);
  border: 1px solid var(--e-global-color-primary);
  border-radius: 0;
  font-family: var(--e-global-typography-knop-font-family), sans-serif;
  font-size: var(--e-global-typography-knop-font-size);
  font-weight: var(--e-global-typography-knop-font-weight);
  letter-spacing: var(--e-global-typography-knop-letter-spacing);
  text-transform: var(--e-global-typography-knop-text-transform);
}
.elementor .elementor-element.hc-woo .e-my-account-tab .woocommerce .form-row input.input-text,
.elementor .elementor-element.hc-woo .e-my-account-tab .woocommerce .form-row select,
.elementor .elementor-element.hc-woo .e-my-account-tab .woocommerce .form-row textarea {
  background: var(--e-global-color-wit);
  border: 1px solid var(--e-global-color-lijn-sterk);
  border-radius: 0;
  color: var(--e-global-color-text);
}

/* De velden van het afrekenen staan in hun eigen widget-stylesheet op een
   lichtgrijze vulling met een rand van `currentcolor`. Op bone leest dat als
   een uitgeschakeld veld. Vijf klassen diep om erlangs te komen. */
.elementor .elementor-element.hc-woo .woocommerce #customer_details .form-row .input-text,
.elementor .elementor-element.hc-woo .woocommerce #customer_details .form-row select,
.elementor .elementor-element.hc-woo .woocommerce #customer_details .form-row textarea,
.elementor .elementor-element.hc-woo .woocommerce #order_review .input-text {
  background: var(--e-global-color-wit);
  border: 1px solid var(--e-global-color-lijn-sterk);
  border-radius: 0;
  color: var(--e-global-color-text);
}

.hc-woo table.shop_table,
.hc-woo table.shop_table td,
.hc-woo table.shop_table th {
  border-color: var(--e-global-color-lijn);
  border-radius: 0;
}
.hc-woo table.shop_table th {
  font-family: var(--e-global-typography-micro-font-family), sans-serif;
  font-size: var(--e-global-typography-micro-font-size);
  letter-spacing: var(--e-global-typography-micro-letter-spacing);
  text-transform: var(--e-global-typography-micro-text-transform);
  color: var(--e-global-color-steen);
}

.hc-woo input[type="text"],
.hc-woo input[type="email"],
.hc-woo input[type="tel"],
.hc-woo input[type="password"],
.hc-woo textarea,
.hc-woo select,
.hc-woo .select2-selection {
  border: 1px solid var(--e-global-color-lijn-sterk);
  border-radius: 0;
  background: var(--e-global-color-wit);
  color: var(--e-global-color-text);
}

.hc-woo .price,
.hc-woo .woocommerce-Price-amount,
.hc-woo .amount {
  color: var(--e-global-color-accent);
  font-variant-numeric: tabular-nums;
}

/* De meldingenbalk van WooCommerce heeft van zichzelf een grijze balk met een
   gekleurde bovenrand. Op bone valt die weg; deze regel geeft hem de groene
   lijn van de huisstijl zodat "product toegevoegd" ook echt opvalt. */
.hc-woo-meldingen .woocommerce-message,
.hc-woo-meldingen .woocommerce-info,
.hc-woo .woocommerce-message,
.hc-woo .woocommerce-info {
  background: var(--e-global-color-papier);
  border-top-color: var(--e-global-color-primary);
  color: var(--e-global-color-text);
}
.hc-woo-meldingen .woocommerce-error,
.hc-woo .woocommerce-error {
  background: var(--e-global-color-papier);
  color: var(--e-global-color-text);
}

/* ------------------------------------------------------- productarchief */

/* WAAROM CSS: de widget woocommerce-archive-products publiceert wel een
   kolomaantal maar geen beeldverhouding, en de bronbeelden lopen van
   1152x1536 (staand) tot 2560x1707 (liggend). Zonder deze regel staan drie
   kaarten naast elkaar met drie verschillende hoogtes. 3:2 is dezelfde
   verhouding als de reiskaart en de blogkaart gebruiken. */
.hc-woo-archief ul.products li.product img {
  aspect-ratio: 3 / 2;
  object-fit: cover;
  width: 100%;
  display: block;
}
.hc-woo-archief ul.products li.product {
  border: 1px solid var(--e-global-color-lijn);
  background: var(--e-global-color-papier);
  padding-bottom: 18px;
}
.hc-woo-archief ul.products li.product .woocommerce-loop-product__title,
.hc-woo-archief ul.products li.product .price,
.hc-woo-archief ul.products li.product .button {
  margin-left: 18px;
  margin-right: 18px;
}
.hc-woo-archief ul.products li.product .woocommerce-loop-product__title {
  font-family: var(--e-global-typography-secondary-font-family), sans-serif;
  color: var(--e-global-color-accent);
}

/* Een uitverkocht vertrek hoort in het archief herkenbaar te zijn zonder dat
   je de kaart open hoeft te klikken. WooCommerce zet de klasse al; alleen de
   weergave ontbrak. */
.hc-woo-archief ul.products li.product.outofstock { opacity: .62; }

@media (max-width: 767px) {
  .hc-woo table.shop_table,
  .hc-woo table.shop_table tbody,
  .hc-woo table.shop_table tr,
  .hc-woo table.shop_table td { display: block; width: 100%; }
  .hc-woo table.shop_table thead { display: none; }
  .hc-woo table.shop_table td { text-align: left; }
  .hc-woo .col2-set .col-1,
  .hc-woo .col2-set .col-2 { width: 100%; float: none; }
}


/* ======================================================= vertrekpagina */

/* De pagina van één vertrek: beeld links, boeken rechts. De widget
   woocommerce-product-images kent geen breedte-instelling die zich naar de
   flexrij voegt, dus de verhouding tussen de twee kolommen staat hier. */

/* Kan niet in Elementor: een container heeft geen min-width. Zonder deze regel
   kan de boekingskolom niet smaller worden dan de WooCommerce-variantentabel
   en valt hij onder het beeld. */
.hc-product__kolommen > .hc-product__boeking { min-width: 0; }
/* De kruimelwidget kent alleen een linkkleur; het scheidingsteken en het
   huidige item volgen anders de bodykleur. */
.hc-kruimels { color: var(--e-global-color-steen); }

/* Zelfde 3:2 als de reiskaart en de blogkaart. De bronbeelden lopen van
   staand naar liggend; zonder deze regel bepaalt de foto de hoogte van de
   halve pagina. De passe-partout is de enige plek op de site met een radius
   en die staat al in site.css; hier komt er dus geen bij. */
.hc-product__beeld img.wp-post-image {
  aspect-ratio: 3 / 2;
  object-fit: cover;
  width: 100%;
  height: auto;
  display: block;
}

/* De vergrootglas-overlay van WooCommerce legt een kopie van het origineel
   over het beeld heen. Zodra het beeld bijgesneden is klopt die kopie niet
   meer met wat eronder staat en springt de foto onder de muis. Erger: die
   kopie is het onbewerkte origineel, tot 1920 px breed, en op mobiel steekt
   hij daarmee buiten de viewport uit. Op een boekingspagina heeft inzoomen op
   een landschapsfoto geen functie.

   Hier staat wél een !important, en dat is het enige in dit bestand. De
   zoom-plugin van WooCommerce zet zijn maten als inline stijl op het element,
   en tegen een inline stijl wint geen enkele .elementor-kit-6. De overlay staat
   bovendien altijd op opacity 0 tot je er met de muis overheen gaat, dus er
   verdwijnt niets zichtbaars. */
.hc-product__beeld .woocommerce-product-gallery__trigger { display: none; }
.hc-product__beeld img.zoomImg { display: none !important; }
.hc-product__beeld .woocommerce-product-gallery__image { overflow: hidden; }

/* De kruimelpaden van WooCommerce staan van zichzelf strak tegen de kop aan
   en gebruiken de standaard linkkleur. */

/* De variantkeuzes (Kamertype, of Fiets en Kamervoorkeur) komen uit een
   WooCommerce-tabel zonder eigen opmaak. Op dezelfde pagina staat verderop het
   aanvraagformulier, en daar is een keuzeveld een pil met het label erboven.
   Twee soorten keuzevelden onder elkaar op één pagina leest als twee sites, dus
   de tabel wordt hier tot blokken uitgevouwen en krijgt precies de vorm van
   .hc-boekform: label erboven in de micro-stijl, veld eronder over de volle
   breedte, dezelfde rand, dezelfde radius en dezelfde focusring. */
.hc-product__kopen table.variations,
.hc-product__kopen table.variations tbody,
.hc-product__kopen table.variations tr,
.hc-product__kopen table.variations th,
.hc-product__kopen table.variations td {
  display: block;
  width: 100%;
  padding: 0;
  border: 0;
}
.hc-product__kopen table.variations tr + tr { margin-top: 18px; }
/* De tabelopmaak van het thema zet een streepkleur op de cellen; met de tabel
   uitgevouwen tot blokken werd dat een grijze balk achter het eerste label. */
.hc-product__kopen table.variations,
.hc-product__kopen table.variations tr,
.hc-product__kopen table.variations th,
.hc-product__kopen table.variations td { background: none; }
/* Letterlijk de waarden die .hc-boekform op dezelfde pagina rendert, gemeten
   met build/pw/: Inter 17px/300, letterafstand 3.06px, tekstkleur, uppercase.
   Niet de micro-stijl: die is kleiner en staat op Steen, en dan staan er twee
   soorten labels boven twee soorten velden op één pagina. */
.hc-product__kopen table.variations th.label {
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 17px;
  font-weight: 300;
  line-height: 1.7;
  letter-spacing: 3.06px;
  text-transform: uppercase;
  color: var(--e-global-color-text);
  margin-bottom: 8px;
  text-align: left;
  /* 29px, net als het label in het formulier: 17px maal 1.7. Een th erft
     anders de regelhoogte van de tabel en wordt vijf pixels hoger. */
  height: 29px;
}
.hc-product__kopen table.variations th.label label {
  line-height: 29px;
  display: block;
}
.hc-product__kopen table.variations th.label label { margin: 0; font-weight: inherit; }
.elementor .elementor-element.hc-woo .woocommerce table.variations select,
.elementor .elementor-element.hc-woo .cart table.variations select {
  width: 100%;
  min-width: 0;
  /* Gemeten op .hc-boekform: 61px hoog, wit, pilvorm, rand rgba(13, 13, 13,.18),
     padding 15px 20px, Inter 17px/300 in de tekstkleur. */
  height: 61px;
  min-height: 61px;
  border: 1px solid rgba(13, 13, 13, .18);
  border-radius: 999px;
  background-color: var(--e-global-color-wit);
  color: var(--e-global-color-text);
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 17px;
  font-weight: 300;
  /* Zelfde padding als in het formulier. De pijl zit niet in het veld maar in
     de cel eromheen, precies zoals Elementor hem in .elementor-select-wrapper
     zet; anders zou het veld rechts 24px meer padding hebben dan zijn
     tegenhanger twee secties lager. */
  padding: 15px 20px;
  /* Belangrijk: het thema zet hier zijn eigen appearance terug en dan staat de
     eigen pijl van de browser er nog naast die van ons. */
  appearance: none !important;
  -webkit-appearance: none !important;
}
/* De pijl hoort op de hoogte van het veld te staan, niet in het midden van de
   cel: die cel is hoger zodra "Wissen" eronder verschijnt. */
.hc-product__kopen table.variations td.value { position: relative; }
.hc-product__kopen table.variations td.value::after {
  content: "";
  position: absolute;
  right: 20px;
  top: 28px;
  width: 10px;
  height: 6px;
  background: var(--e-global-color-text);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  pointer-events: none;
}
.elementor .elementor-element.hc-woo .woocommerce table.variations select:focus,
.elementor .elementor-element.hc-woo .cart table.variations select:focus {
  outline: none;
  border-color: var(--e-global-color-primary);
  box-shadow: 0 0 0 3px rgba(43, 93, 66, .18);
}
/* "Wissen" verschijnt pas zodra er een variant gekozen is, als kale link onder
   de tabel. Dezelfde maat en kleur als de hulptekst onder een formulierveld. */
.hc-product__kopen .reset_variations {
  display: inline-block;
  margin-top: 10px;
  font-size: 13px;
  color: var(--e-global-color-steen);
}
.hc-product__kopen .reset_variations:hover { color: var(--e-global-color-primary); }

/* De knop is de primaire knop van de site, net als "Verstuur mijn aanvraag"
   onderaan het formulier: groen vlak, gebroken wit, pilvorm. WooCommerce zet
   hier van zichzelf een thema-knop neer. */
/* Vorm en kleur van deze knop staan hierboven, bij het blok dat de eigen
   stylesheet van de Elementor-widget overschrijft. Hier staat alleen wat daar
   nog niet bij hoorde. */
.elementor .elementor-element.hc-woo .single_add_to_cart_button {
  transition: background-color .15s ease, border-color .15s ease;
}
.elementor .elementor-element.hc-woo .single_add_to_cart_button:hover {
  background-color: var(--e-global-color-primary);
  border-color: var(--e-global-color-primary);
  color: var(--e-global-color-wit);
}
/* Zolang er geen variant gekozen is staat de knop uit. WooCommerce zet hem dan
   op opacity .5, en wit op groen zakt daarmee naar 3,22:1. Uitgeschakelde
   bediening is van de contrasteis uitgezonderd, maar dit is de hoofdknop van de
   pagina en die hoort leesbaar te blijven; hij is gedempt via de kleur zelf. */
.elementor .elementor-element.hc-woo .single_add_to_cart_button.disabled,
.elementor .elementor-element.hc-woo .single_add_to_cart_button:disabled {
  opacity: 1;
  background-color: var(--e-global-color-steenvlak);
  border-color: var(--e-global-color-lijn-sterk);
  color: var(--e-global-color-steen);
  cursor: not-allowed;
}
/* Het aantalveld ernaast krijgt dezelfde hoogte en dezelfde rand, anders staat
   er een vierkant blokje naast een pil. */
.elementor .elementor-element.hc-woo .quantity input.qty {
  height: 61px;
  min-height: 61px;
  width: 100%;
  border: 1px solid rgba(13, 13, 13, .18);
  border-radius: 999px;
  background: var(--e-global-color-wit);
  color: var(--e-global-color-text);
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 17px;
  font-weight: 300;
  padding: 15px 20px;
  text-align: left;
}
/* Het aantalveld en de knop naast elkaar. Expliciet flex: het formulier van
   WooCommerce is van zichzelf een blok, en zonder dit deed flex-wrap in de
   mobiele regel niets en liep de knop 45px buiten het scherm. */
/* Bij een variabel product zitten het aantalveld en de knop niet los in het
   formulier maar samen in .woocommerce-variation-add-to-cart, en dát is de
   flexcontainer. Op form.cart wrappen heeft dus geen effect: de knop kreeg wel
   flex-basis 100%, maar begon naast het aantalveld en liep 45px buiten beeld. */
/* Onder elkaar, niet naast elkaar: in het boekingsformulier staat er ook geen
   veld naast de knop, en de knop loopt daar over de volle breedte. */
.elementor .elementor-element.hc-woo form.cart,
.elementor .elementor-element.hc-woo .woocommerce-variation-add-to-cart {
  display: block !important;
}
.elementor .elementor-element.hc-woo .quantity {
  display: block;
  width: 100%;
  max-width: none;
  margin-bottom: 14px;
}
/* Hier stond een label "Met hoeveel personen" boven het aantalveld, uit de tijd
   dat dat veld nog zichtbaar op de vertrekpagina stond. Het koopblok staat daar
   inmiddels buiten beeld, en de regel gold voor elke .hc-woo: op /winkelwagen/
   verscheen datzelfde label boven het aantal van elke regel, naast de kolomkop
   "Aantal" die er al stond. Weg dus. */
/* Op een klein scherm onder elkaar, en dan als blok en niet als flexrij: met
   flex bleef de knop op dezelfde regel beginnen als het aantalveld en liep hij
   er rechts uit. Blok is hier eenvoudiger en doet precies wat het moet. */
@media (max-width: 767px) {
  /* De omhulling moet ook mee. Blijft die een flexrij zonder wrap, dan krimpt
     de knop als flex-item gewoon terug naar 182px, hoe hard width: 100% er ook
     staat: bij een flex-item is de gebruikte breedte het resultaat van flexen,
     niet van width. */
  .elementor .elementor-element.hc-woo form.cart,
  .elementor .elementor-element.hc-woo .woocommerce-variation-add-to-cart {
    display: block !important;
  }
  .elementor .elementor-element.hc-woo .quantity { display: block; margin-bottom: 12px; }
  .elementor .elementor-element.hc-woo .quantity input.qty { width: 100%; }
  /* De widget-stylesheet van Elementor zet hier een eigen breedte neer die
     ondanks een zwaardere .elementor-kit-6 wint, omdat de custom CSS uit Site Settings
     eerder in de pagina staat dan de stylesheet van de widget. Dit is de enige
     plek in dit bestand waar !important nodig is; zonder deze regel bleef de
     knop 181px breed in een kolom van 322 en liep hij 45px buiten beeld. */
  .elementor .elementor-element.hc-woo button.single_add_to_cart_button {
    display: block !important;
    width: 100% !important;
    max-width: 100%;
    white-space: normal;
    padding-left: 20px;
    padding-right: 20px;
  }
}

/* De prijs van een variabel product is een bereik tot je een variant kiest;
   daarna vervangt WooCommerce hem door één bedrag in .woocommerce-variation.
   Beide moeten dezelfde maat hebben, anders springt de pagina. */
.hc-product__prijs .price,
.hc-product__kopen .woocommerce-variation-price .price {
  font-family: var(--e-global-typography-prijs-font-family), sans-serif;
  font-size: var(--e-global-typography-prijs-font-size);
  font-weight: var(--e-global-typography-prijs-font-weight);
  letter-spacing: var(--e-global-typography-prijs-letter-spacing);
  color: var(--e-global-color-accent);
  font-variant-numeric: tabular-nums;
}

/* De "Andere vertrekken" komen uit woocommerce-product-related en die widget
   zet zelf een kop boven het raster ("Gerelateerde producten"). Er staat al
   een kop van ons boven de sectie; twee koppen boven elkaar is een fout. */
.hc-woo .related > h2,
.hc-woo .related > .elementor-heading-title { display: none; }

@media (max-width: 767px) {
  /* De twee kolommen worden onder elkaar gezet door Elementor zelf, met
     flex-direction: column. In een kolom betekent de uitlijning `flex-start`
     van de rij ineens horizontaal, en dan krimpt elk kind tot de breedte van
     zijn inhoud. De productgalerij heeft geen eigen breedte, dus die kromp tot
     nul en het beeld verdween. Vandaar dat de uitlijning hier expliciet terug
     naar stretch gaat en de breedte erbij staat. */
  /* De tabel staat sinds de stijlgelijktrekking al op alle schermen in
     blokken; hier blijft alleen wat echt mobiel is. */
  .hc-product__kopen form.cart .quantity input.qty { width: 100%; }
}

/* De melding die verschijnt als het aanvraagformulier de gekozen opties niet
   op dit vertrek kan leggen, bijvoorbeeld een gravelfiets bij een vertrek dat
   er geen aanbiedt. Zelfde vorm als de meldingen van WooCommerce eronder. */
.hc-koppelmelding {
  margin: 0 0 16px;
  padding: 14px 20px;
  border-left: 3px solid var(--e-global-color-primary);
  background: var(--e-global-color-groen-sluier);
  color: var(--e-global-color-accent);
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 15px;
  line-height: 1.5;
}

/* Uit beeld, niet weg. Het koopblok van WooCommerce is de motor onder het
   aanvraagformulier: dat zet de keuzelijsten hier en verstuurt dit formulier,
   zodat Woo zelf de variant, de prijs en de voorraad uitrekent. De bezoeker
   ziet alleen het formulier. display:none kan niet, want dan berekent
   WooCommerce de variant niet meer en blijft de knop uitgeschakeld. */
.hc-uitbeeld {
  position: absolute !important;
  left: -10000px !important;
  top: 0;
  width: 600px;
  pointer-events: none;
}

/* Op een vertrekpagina staan de reis, de reisvorm en het vertrek al vast: ze
   staan in de kop, in de kruimels en in de url. Ze bleven als drie ingevulde
   keuzelijsten in stap 1 staan, en dan vraagt het formulier drie keer iets wat
   de bezoeker net heeft aangeklikt. De velden blijven in de html en blijven
   ingevuld, want de mail en de koppeling met de winkelwagen lezen ze allebei;
   ze zijn alleen niet meer te zien. */
.hc-vertrekaanvraag .elementor-field-group-reis,
.hc-vertrekaanvraag .elementor-field-group-vorm,
.hc-vertrekaanvraag .elementor-field-group-vertrek { display: none; }
/* Blijft over: met hoeveel reizigers. Dat veld mag dan de volle breedte. */
.hc-vertrekaanvraag .elementor-field-group-personen { width: 100%; }

/* ------------------------------------------- overzicht van de aanvraag */
/* Staat op /winkelwagen/ en /afrekenen/ boven de regels, gevuld uit wat de
   bezoeker in het aanvraagformulier heeft opgegeven. */
.hc-overzicht {
  margin: 0 0 32px;
  padding: 28px 32px;
  background: var(--e-global-color-papier);
  border: 1px solid var(--e-global-color-lijn);
  /* Op /afrekenen/ staat het blok in de widget van Elementor, en die zet
     Roboto op alles wat geen eigen letter heeft. */
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  color: var(--e-global-color-text);
}
.hc-overzicht h2 {
  font-family: var(--e-global-typography-secondary-font-family), sans-serif;
  font-size: var(--e-global-typography-secondary-font-size);
  letter-spacing: var(--e-global-typography-secondary-letter-spacing);
  text-transform: var(--e-global-typography-secondary-text-transform);
  color: var(--e-global-color-accent);
  margin: 0 0 18px;
}
.hc-overzicht dl {
  display: grid;
  grid-template-columns: minmax(180px, 30%) 1fr;
  gap: 8px 24px;
  margin: 0;
}
.hc-overzicht dt {
  font-family: var(--e-global-typography-micro-font-family), sans-serif;
  font-size: var(--e-global-typography-micro-font-size);
  letter-spacing: var(--e-global-typography-micro-letter-spacing);
  text-transform: uppercase;
  color: var(--e-global-color-steen);
  align-self: baseline;
}
.hc-overzicht dd {
  margin: 0;
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 16px;
  color: var(--e-global-color-accent);
}
.hc-overzicht__voet {
  margin: 20px 0 0;
  font-size: 14px;
  color: var(--e-global-color-steen);
}
@media (max-width: 767px) {
  .hc-overzicht { padding: 22px 20px; }
  .hc-overzicht dl { grid-template-columns: 1fr; gap: 2px 0; }
  .hc-overzicht dd { margin-bottom: 12px; }
}

/* De melding "toegevoegd aan je winkelwagen" stond strak tegen de h1 aan. */
.woocommerce-notices-wrapper, .hc-woo-meldingen { margin-top: 8px; }

/* Het slot op het aantal in de winkelwagen. */
.hc-aantalslot {
  margin: 16px 0 0;
  padding: 12px 18px;
  border-left: 3px solid var(--e-global-color-primary);
  background: var(--e-global-color-groen-sluier);
  font-size: 14px;
  line-height: 1.5;
  color: var(--e-global-color-accent);
}
.hc-aantalslot--fout {
  border-left-color: var(--e-global-color-secondary);
  background: rgba(204, 186, 120, .18);
}
.hc-uit { opacity: .5; cursor: not-allowed; }
/* Een alleen-lezen aantal hoort er ook zo uit te zien. */
.woocommerce-cart-form input.qty[readonly] {
  background: var(--e-global-color-steenvlak);
  color: var(--e-global-color-steen);
  cursor: default;
}


/* ============================================================ afrekenen */

/* De kassa hoort er hetzelfde uit te zien als het boekingsformulier: dezelfde
   handeling, dezelfde velden. Hij stond op de standaard van Elementor —
   Roboto in de koppen, vierkante velden van 51px, een grijs landveld en een
   blauwe link — en voelde daardoor als een andere website.

   Alles hier is gemeten op .hc-boekform: 61px hoog, pilvorm, wit, een rand
   van lijn-sterk, Inter 17px/300; labels in 11px/600 hoofdletters met 3.06px
   letterafstand. Een id in de .elementor-kit-6, want de widget-stylesheet van
   Elementor laadt ná de kit en gebruikt zelf .elementor-kit-6s van vijf klassen. */

.elementor .elementor-element.hc-woo .woocommerce-checkout h3,
.elementor .elementor-element.hc-woo .woocommerce-checkout #order_review_heading,
.elementor .elementor-element.hc-woo .e-checkout__container h3 {
  font-family: var(--e-global-typography-h4-font-family), sans-serif;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--e-global-color-accent);
  margin: 0 0 22px;
}

.elementor .elementor-element.hc-woo .woocommerce-checkout .form-row label,
.elementor .elementor-element.hc-woo .woocommerce-checkout #order_comments_field label {
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 3.06px;
  text-transform: uppercase;
  line-height: 1.7;
  color: var(--e-global-color-text);
  margin-bottom: 8px;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout .form-row label .required {
  color: var(--e-global-color-primary);
  text-decoration: none;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout .form-row label .optional {
  text-transform: none;
  letter-spacing: 0;
  font-weight: 300;
  color: var(--e-global-color-steen);
}

.elementor .elementor-element.hc-woo .woocommerce #customer_details .form-row .input-text,
.elementor .elementor-element.hc-woo .woocommerce #customer_details .form-row select,
.elementor .elementor-element.hc-woo .woocommerce #customer_details .select2-container .select2-selection--single,
.elementor .elementor-element.hc-woo .woocommerce .woocommerce-checkout #order_comments,
.elementor .elementor-element.hc-woo .woocommerce .checkout_coupon .input-text {
  height: 61px;
  min-height: 61px;
  padding: 0 24px;
  border: 1px solid var(--e-global-color-lijn-sterk);
  border-radius: 999px;
  background: var(--e-global-color-wit);
  color: var(--e-global-color-text);
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 17px;
  font-weight: 300;
  line-height: 59px;
  box-shadow: none;
}
/* Een tekstvak van vier regels in pilvorm wordt een worst. Dezelfde rand,
   een ronding die bij een blok past. */
.elementor .elementor-element.hc-woo .woocommerce .woocommerce-checkout #order_comments,
.elementor .elementor-element.hc-woo .woocommerce #customer_details .form-row textarea {
  height: auto;
  min-height: 120px;
  padding: 16px 24px;
  border-radius: 26px;
  line-height: 1.6;
}
/* Het landveld is een select2. Zijn tekst en pijl staan in eigen elementen. */
.elementor .elementor-element.hc-woo .woocommerce #customer_details .select2-selection--single .select2-selection__rendered {
  line-height: 59px;
  padding: 0;
  color: var(--e-global-color-text);
}
.elementor .elementor-element.hc-woo .woocommerce #customer_details .select2-selection--single .select2-selection__arrow {
  height: 59px;
  right: 18px;
}
.elementor .elementor-element.hc-woo .woocommerce #customer_details .form-row .input-text:focus,
.elementor .elementor-element.hc-woo .woocommerce .woocommerce-checkout #order_comments:focus {
  border-color: var(--e-global-color-primary);
  outline: 2px solid var(--e-global-color-primary);
  outline-offset: 2px;
}
.elementor .elementor-element.hc-woo .woocommerce #customer_details .form-row .input-text::placeholder,
.elementor .elementor-element.hc-woo .woocommerce .woocommerce-checkout #order_comments::placeholder {
  color: var(--e-global-color-steen);
  opacity: 1;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout .form-row { margin-bottom: 18px; }

/* De blokken van de kassa: dezelfde kaart als het overzicht erboven, zodat de
   pagina één geheel is en niet vier losse widgets op een rij. */
.elementor .elementor-element.hc-woo .e-checkout__container .e-checkout__column-inner > div,
.elementor .elementor-element.hc-woo .e-checkout__container .e-checkout__order_review,
.elementor .elementor-element.hc-woo .e-checkout__container .e-checkout__order_review-2,
.elementor .elementor-element.hc-woo .e-checkout__container .e-coupon-box,
.elementor .elementor-element.hc-woo .e-checkout__container .woocommerce-billing-fields,
.elementor .elementor-element.hc-woo .e-checkout__container .woocommerce-additional-fields {
  border-radius: 0;
  border-color: var(--e-global-color-lijn);
}

/* "Heb je een waardebon? Klik hier" stond in het blauw van de plug-in. */
.elementor .elementor-element.hc-woo .woocommerce-checkout .e-coupon-anchor-description a,
.elementor .elementor-element.hc-woo .woocommerce-form-coupon-toggle a,
.elementor .elementor-element.hc-woo .e-checkout__container a.showcoupon {
  color: var(--e-global-color-primary);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ------------------------------------------------------------ betalen */

/* De betaalmethoden stonden als losse regels tegen elkaar aan, met
   browserblauwe rondjes, de logo's van Mollie over elkaar in de hoek, en de
   bestelknop half over de laatste regel. Nu elk een eigen rij van minstens
   56px met het logo rechts, en ruimte voor de knop. */
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment {
  background: transparent;
  border-radius: 0;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment ul.payment_methods {
  padding: 0;
  margin: 0 0 24px;
  border: 0;
  list-style: none;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment ul.payment_methods li.wc_payment_method {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 14px;
  min-height: 56px;
  padding: 10px 18px;
  margin: 0 0 8px;
  border: 1px solid var(--e-global-color-lijn-sterk);
  border-radius: 999px;
  background: var(--e-global-color-wit);
  line-height: 1.4;
  cursor: pointer;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment ul.payment_methods li.wc_payment_method:has(input:checked) {
  border-color: var(--e-global-color-primary);
  box-shadow: inset 0 0 0 1px var(--e-global-color-primary);
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment ul.payment_methods li.wc_payment_method > input.input-radio {
  accent-color: var(--e-global-color-primary);
  width: 18px;
  height: 18px;
  margin: 0;
  flex: none;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment ul.payment_methods li.wc_payment_method > label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex: 1 1 0;
  min-width: 0;
  margin: 0;
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 16px;
  font-weight: 400;
  color: var(--e-global-color-accent);
  cursor: pointer;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment ul.payment_methods li.wc_payment_method > label img {
  float: none;
  order: 2;
  max-height: 26px;
  width: auto;
  margin: 0 0 0 auto;
  flex: none;
}
/* De uitleg onder een gekozen methode. Een eigen regel binnen de pil. */
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment div.payment_box {
  flex-basis: 100%;
  margin: 8px 0 4px 32px;
  padding: 0;
  background: transparent;
  color: var(--e-global-color-steen);
  font-size: 14px;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment div.payment_box::before { display: none; }
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment div.payment_box:empty { display: none; }
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment ul.payment_methods li.wc_payment_method:has(div.payment_box:not([style*="none"]) *) {
  border-radius: 26px;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment .place-order {
  padding: 0;
  margin: 0;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment .woocommerce-privacy-policy-text,
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment .woocommerce-terms-and-conditions-wrapper {
  font-size: 13px;
  line-height: 1.6;
  color: var(--e-global-color-steen);
  margin-bottom: 18px;
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #payment .woocommerce-privacy-policy-text a {
  color: var(--e-global-color-primary);
}

/* De besteloverzichtstabel: de reisnaam en de opties in de tekstletter, de
   bedragen in de cijfers van de site, zonder vet. */
.elementor .elementor-element.hc-woo .woocommerce-checkout #order_review .shop_table td.product-name {
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 15px;
  font-weight: 400;
  line-height: 1.5;
  color: var(--e-global-color-accent);
}
.elementor .elementor-element.hc-woo .woocommerce-checkout #order_review .shop_table .order-total .amount {
  font-family: var(--e-global-typography-prijs-font-family), sans-serif;
  font-size: 26px;
  font-weight: 400;
}

@media (max-width: 767px) {
  .elementor .elementor-element.hc-woo .woocommerce-checkout #payment ul.payment_methods li.wc_payment_method { padding: 10px 16px; }
  .elementor .elementor-element.hc-woo .woocommerce-checkout #payment ul.payment_methods li.wc_payment_method > label { font-size: 15px; }
}


/* ------------------------------------------------ doorsturen na verzenden */

/* Tussen verzenden en de winkelwagen zitten een paar seconden. Deze melding
   zegt wat er gebeurt en dat je niet weg moet klikken. Groen omlijnd zoals een
   gekozen betaalmethode: dit is de bevestiging dat het goed gaat. */
.hc-doorsturen {
  margin: 20px 0 0;
  padding: 22px 26px;
  border: 1px solid var(--e-global-color-primary);
  border-radius: 26px;
  background: var(--e-global-color-papier);
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  color: var(--e-global-color-text);
}
.hc-doorsturen__kop {
  margin: 0 0 6px;
  font-family: var(--e-global-typography-h4-font-family), sans-serif;
  font-size: 18px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .02em;
  color: var(--e-global-color-accent);
}
.hc-doorsturen__tekst { margin: 0 0 16px; font-size: 16px; line-height: 1.6; }
.hc-doorsturen__balk {
  height: 6px;
  border-radius: 999px;
  background: var(--e-global-color-groen-sluier);
  overflow: hidden;
}
.hc-doorsturen__balk span {
  display: block;
  height: 100%;
  width: 0;
  border-radius: inherit;
  background: var(--e-global-color-primary);
  transition: width .6s cubic-bezier(.2, .7, .2, 1);
}
.hc-doorsturen__stap {
  margin: 10px 0 0;
  font-size: 14px;
  color: var(--e-global-color-steen);
  min-height: 1.5em;
}
@media (prefers-reduced-motion: reduce) {
  .hc-doorsturen__balk span { transition: none; }
}


/* ------------------------------------------------------------ bedankpagina */

/* /afrekenen/order-received/ is dezelfde pagina als de kassa, en kreeg dus de
   titel "Afrekenen" en de standaard van WooCommerce: de bevestiging in klein
   grijs, koppen in Roboto, productlinks in plug-in-blauw. Het is de laatste
   pagina die een klant ziet; die hoort te zeggen dat het gelukt is. */
.woocommerce-order-received .elementor-widget-woocommerce-checkout-page .woocommerce-thankyou-order-received,
.woocommerce-order-received .woocommerce-notice--success.woocommerce-thankyou-order-received {
  font-family: var(--e-global-typography-h4-font-family), sans-serif;
  font-size: 22px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--e-global-color-accent);
  margin: 8px 0 22px;
}
.woocommerce-order-received ul.woocommerce-order-overview {
  display: flex;
  flex-wrap: wrap;
  gap: 18px 40px;
  margin: 0 0 40px;
  padding: 22px 26px;
  list-style: none;
  border: 1px solid var(--e-global-color-lijn);
  background: var(--e-global-color-papier);
}
.woocommerce-order-received ul.woocommerce-order-overview li {
  margin: 0;
  padding: 0;
  border: 0;
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 2.4px;
  text-transform: uppercase;
  color: var(--e-global-color-steen);
}
.woocommerce-order-received ul.woocommerce-order-overview li strong {
  display: block;
  margin-top: 6px;
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 17px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  color: var(--e-global-color-accent);
}
.woocommerce-order-received .woocommerce-order-details__title,
.woocommerce-order-received .woocommerce-column__title,
.woocommerce-order-received .woocommerce-customer-details h2,
.woocommerce-order-received .hc-bestelgegevens h2 {
  font-family: var(--e-global-typography-h4-font-family), sans-serif;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--e-global-color-accent);
  margin: 40px 0 18px;
}
.woocommerce-order-received .woocommerce-order-details,
.woocommerce-order-received .woocommerce-customer-details,
.woocommerce-order-received .woocommerce-order-details td,
.woocommerce-order-received .woocommerce-order-details th,
.woocommerce-order-received .woocommerce-customer-details address {
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  color: var(--e-global-color-text);
}
.woocommerce-order-received .woocommerce-order-details td.product-name a {
  color: var(--e-global-color-accent);
  text-decoration: none;
  font-weight: 400;
}
.woocommerce-order-received .woocommerce-order-details td.product-name a:hover {
  color: var(--e-global-color-primary);
  text-decoration: underline;
}

/* Het blok met de reizigers. In de mail draagt het eigen inline stijlen, want
   mailprogramma's lezen geen stylesheet; op de site gaan die hier opzij voor
   dezelfde opmaak als "Wat je hebt ingevuld" op de kassa. */
.hc-bestelgegevens {
  margin: 8px 0 0;
  padding: 28px 32px;
  border: 1px solid var(--e-global-color-lijn);
  background: var(--e-global-color-papier);
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  color: var(--e-global-color-text);
}
.hc-bestelgegevens h2 { margin-top: 0 !important; }
.hc-bestelgegevens h3 {
  margin: 22px 0 8px !important;
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 11px !important;
  font-weight: 600;
  letter-spacing: 2.4px;
  text-transform: uppercase;
  color: var(--e-global-color-primary);
}
.hc-bestelgegevens p { margin: 0 0 6px !important; font-size: 16px; }
.hc-bestelgegevens table,
.hc-bestelgegevens table tr,
.hc-bestelgegevens table th,
.hc-bestelgegevens table td {
  border: 0 !important;
  background: transparent !important;
}
.hc-bestelgegevens table { margin: 0 !important; }
.hc-bestelgegevens table th,
.hc-bestelgegevens table td {
  padding: 5px 16px 5px 0 !important;
  font-size: 15px;
  line-height: 1.5;
  vertical-align: top;
}
.hc-bestelgegevens table th { color: var(--e-global-color-steen); font-weight: 400 !important; width: 45%; }
.hc-bestelgegevens table td { color: var(--e-global-color-accent); }
.hc-bestelgegevens table tr + tr th,
.hc-bestelgegevens table tr + tr td { border-top: 1px solid var(--e-global-color-lijn-zacht) !important; }
@media (max-width: 767px) {
  .hc-bestelgegevens { padding: 22px 20px; }
  .hc-bestelgegevens table th { width: 50%; }
  .woocommerce-order-received ul.woocommerce-order-overview { gap: 14px 28px; }
}

/* Uitleg bij de kamers: verschijnt onder de reizigers als de indeling niet
   op tweetallen uitkomt, voordat er iets verstuurd wordt. */
.hc-kameruitleg {
  flex-basis: 100%;
  width: 100%;
  margin: 4px 0 18px;
  padding: 14px 20px;
  border-left: 3px solid var(--e-global-color-primary);
  background: var(--e-global-color-groen-sluier);
  color: var(--e-global-color-accent);
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 15px;
  line-height: 1.5;
}
.hc-kameruitleg[hidden] { display: none; }
/* De koppelmelding staat nu onder het formulier en niet meer erboven. */
.hc-koppelmelding { margin: 20px 0 0; }


/* ------------------------------------------- vertrekken live uit de webshop */

/* Een groep op /kalender/ zonder vertrek blijft uit beeld. Elke reis die als
   groepsreis bestaat heeft een groep klaarstaan; zodra Ken en Mark een vertrek
   invoeren, verschijnt hij vanzelf. */
.hc-vertrekgroep:not(:has(.e-loop-item)) { display: none; }

/* Op de reispagina: nog geen vertrek gepland. Het lege vak van de Loop-widget
   weg, de eigen alinea alleen als de lijst leeg is. */
.hc-vertrekken .e-loop-nothing-found-message { display: none; }
#vertrekdata:has(.e-loop-item) .hc-vertrekken-leeg { display: none; }
.hc-vertrekken-leeg p { margin: 0; }
.hc-vertrekken-leeg .elementor-widget-container {
  margin: 0;
  padding: 18px 22px;
  border-left: 3px solid var(--e-global-color-primary);
  background: var(--e-global-color-groen-sluier);
  color: var(--e-global-color-accent);
  font-family: var(--e-global-typography-text-font-family), sans-serif;
  font-size: 16px;
  line-height: 1.6;
}

/* "Nog 3 plaatsen": kort, in het groen, direct onder de datum. */
.hc-vertrek__plaatsen .elementor-heading-title { letter-spacing: 1.6px; }
.hc-vertrek__extra .elementor-heading-title { margin-top: 2px; }

/* Een vertrek dat al onderweg is en ook uitverkocht was, toonde beide
   woorden naast elkaar. Vertrokken zegt genoeg. Twee klassen diep plus het
   loop-item, want .outofstock .hc-vertrek__uitverkocht staat later en weegt
   evenveel. */
.e-loop-item .hc-vertrek.hc-vertrek--vertrokken .hc-vertrek__uitverkocht { display: none; }



/* ===== paginas.css ===== */
/* Hungry Cyclist — aanvullingen voor /over-ons/, /contact/,
   /reisgids-toscane/ en /reisgids-portugal/.

   Deze regels worden door build/paginas_over_contact.py als Custom CSS in de
   paginainstellingen van precies die vier pagina's gezet, niet in de kit. Zo
   blijft design/site.css (gedeeld met ander werk) onaangeraakt en lekt niets
   naar pagina's die het niet nodig hebben.

   Alles hieronder staat hier omdat de Elementor-widget er geen instelling voor
   heeft. Kleur en typografie die wél instelbaar zijn, staan in de widget en
   verwijzen naar de globals; die vind je hier dus niet terug. De enige hex in
   dit bestand is het foutrood #A23426 uit design/componenten.md §9: de kit kent
   geen rode globale kleur en tokens.json is gedeeld werk dat ik niet mocht
   uitbreiden. Overal waar er wél een globale kleur is, staat de variabele. */

/* ---------------------------------------------------------------- beeld

   De image-widget kent breedte, uitlijning en radius, maar geen bijsnij-
   verhouding en geen object-fit. Zonder die twee krijgen de portretten van Ken
   en Mark naast elkaar verschillende hoogtes (2048x1536 tegenover 1024x768) en
   springt het volle-breedte beeld mee met de hoogte van het origineel. */

.hc-beeld-3-2 img,
.hc-beeld-4-3 img {
  width: 100%;
  display: block;
  object-fit: cover;
}
.hc-beeld-3-2 img { aspect-ratio: 3 / 2; }
.hc-beeld-4-3 img { aspect-ratio: 4 / 3; }

.hc-beeld-breed img {
  width: 100%;
  display: block;
  object-fit: cover;
  height: clamp(260px, 44vw, 560px);
}

/* ---------------------------------------------------------------- sticky kolom

   Elementor Pro heeft alleen een sticky *motion effect*: JavaScript dat het
   element uit de flow tilt en het ook op mobiel laat plakken. Binnen een
   grid-cel breekt dat de kolom. `position: sticky` doet hetzelfde met één regel
   en valt vanzelf weg zodra het raster onder 1025px stapelt. */

@media (min-width: 1025px) {
  .hc-sticky {
    position: sticky;
    top: 104px;
    align-self: start;
  }
}

/* De kit maakt van elke sectie een afgerond blok met `overflow: hidden`
   (site.css, .hc-sectie). Daarmee wordt de sectie een scroll-container en doet
   position: sticky in een kolom niets meer — nagemeten: de kolom scrolde gewoon
   mee. `overflow: clip` knipt precies hetzelfde af maar maakt géén
   scroll-container, dus de sticky kolom werkt weer. Alleen op de secties die er
   een hebben. */
.hc-sectie:has(.hc-sticky) { overflow: clip; }

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

   Het form-widget van Elementor Pro heeft geen instelling voor de kleur van de
   placeholder, voor de focusrand, voor de foutkleur per veld, of voor de
   binnenruimte van een veld. Die vier staan in design/componenten.md §9 wél
   vastgelegd, dus ze moeten hier. */

/* De .elementor-kit-6s hieronder dragen bewust .elementor-widget-form mee. Elementor
   schrijft zijn eigen veldregels als `.elementor-<pagina> .elementor-element-<id>
   .elementor-field-group .elementor-field`; dat is vier klassen. Een .elementor-kit-6
   van twee klassen verliest daarvan, ook al staat hij later in het bestand.
   Nagemeten in de browser: zonder deze extra klasse bleef de foutmelding op
   17px staan en hield het foutveld zijn gewone rand. */

.hc-formulier.elementor-widget-form .elementor-field-group .elementor-field-textual {
  padding: 14px 16px;
  min-height: 48px;
}
.hc-formulier.elementor-widget-form .elementor-field-group textarea.elementor-field-textual {
  min-height: 140px;
  resize: vertical;
}

/* Steen is de gedempte tekstkleur uit de kit en haalt op Papier ruim AA.
   Bewust de globale variabele en geen hex, zodat de placeholder meebeweegt als
   de merkkleuren in Site Settings wijzigen. Firefox zet standaard opacity op de
   placeholder; die moet terug naar 1. */
.hc-formulier.elementor-widget-form .elementor-field-textual::placeholder {
  color: var(--e-global-color-steen);
  opacity: 1;
}

/* De randkleur van een veld schrijft Elementor als
   `… .elementor-field-group .elementor-field:not(.elementor-select-wrapper)`,
   zes klassen diep. Hover en focus moeten daar dus overheen; vandaar dezelfde
   :not() en de extra klasse. Nagemeten: met één klasse minder bleef de rand op
   rust staan. */
.hc-formulier.elementor-widget-form .elementor-field-group
  .elementor-field.elementor-field-textual:not(.elementor-select-wrapper):hover {
  border-color: var(--e-global-color-steen);
}
.hc-formulier.elementor-widget-form .elementor-field-group
  .elementor-field.elementor-field-textual:not(.elementor-select-wrapper):focus {
  outline: none;
  border-color: var(--e-global-color-primary);
  /* De focusring is 35% van de merkkleur (componenten.md). De kit heeft die
     tussenwaarde niet als globale kleur; color-mix haalt hem uit de globale
     kleur zelf, zodat er geen hex bij komt. Oudere browsers krijgen de
     terugvaloptie op de regel erboven. */
  box-shadow: 0 0 0 3px var(--e-global-color-groen-licht);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--e-global-color-primary) 35%, transparent);
}

/* Foutrood #A23426 uit componenten.md §9; de kit heeft geen rode globale kleur.
   6.6:1 op Papier. */
.hc-formulier.elementor-widget-form .elementor-message.elementor-message-danger,
.hc-formulier.elementor-widget-form .elementor-form-error {
  color: #A23426;
  font-size: 13px;
  line-height: 1.45;
  margin: 6px 0 0;
  display: block;
}
.hc-formulier.elementor-widget-form .elementor-field-group.elementor-error
  .elementor-field.elementor-field-textual {
  border-color: #A23426;
}

/* Het sterretje achter een verplicht label; Elementor zet er geen kleur op. */
.hc-formulier .elementor-mark-required .elementor-field-label::after {
  color: var(--e-global-color-primary);
  margin-left: 2px;
}

/* De succesmelding als blok, zoals componenten.md §9 hem beschrijft. Elementor
   kent alleen een tekstkleur voor deze melding, geen achtergrond of rand. */
.hc-formulier.elementor-widget-form .elementor-message.elementor-message-success {
  background: var(--e-global-color-groen-sluier);
  border: 1px solid var(--e-global-color-primary);
  border-radius: 0;  /* hoekig: alleen de passe-partout rondt af */
  padding: 14px 16px;
  font-size: 15px;
  line-height: 1.5;
  color: var(--e-global-color-primary);
}

/* ---------------------------------------------------------------- gegevenslijst

   Definitielijstjes (IBAN, KBO, documenten) staan in een text-editor. De
   widget heeft geen instelling om de bullets weg te halen of om de regels van
   een haarlijn te voorzien. */

.hc-gegevens ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.hc-gegevens li {
  padding: 10px 0;
  border-bottom: 1px solid var(--e-global-color-lijn);
}
.hc-gegevens li:last-child { border-bottom: 0; }/* End custom CSS */