/* ===========================================================================
   Visual builder -- frontend
   ---------------------------------------------------------------------------
   Alles staat onder .bs (builder section), los van het oude skel-grid uit
   style4.css/skel.css. Zo kan deze stylesheet nooit bestaande pagina's raken.
   Zie docs/visual-builder.md.
   =========================================================================== */

:root {
	/* Palet -- overgenomen uit css/mrreset.css, de huidige huisstijl. */
	--bs-gold:       #cc9966;
	--bs-gold-light: #e3be99;
	--bs-sand:       #e5dbd7;
	--bs-white:      #ffffff;
	--bs-grey:       #7c8081;
	--bs-dark:       #2b2d2f;
	--bs-darker:     #1c2021;

	/* Afstandsschaal tussen secties. */
	--bs-sp-none:   0rem;
	--bs-sp-small:  1.5rem;
	--bs-sp-normal: 3.5rem;
	--bs-sp-large:  5.5rem;
	--bs-sp-xlarge: 8rem;

	/* WhatsApp-icoon voor .bs__button--whatsapp, als masker zodat het de
	   kleur van de knop volgt. */
	--bs-whatsapp: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.47 14.38c-.3-.15-1.76-.87-2.03-.97-.27-.1-.47-.15-.67.15-.2.3-.77.97-.94 1.17-.17.2-.35.22-.64.07-.3-.15-1.12-.41-2.13-1.32-.79-.7-1.32-1.57-1.47-1.87-.15-.3-.02-.46.13-.61.13-.13.3-.35.45-.52.15-.18.2-.3.3-.5.1-.2.05-.37-.02-.52-.07-.15-.67-1.62-.92-2.21-.24-.58-.48-.5-.67-.51h-.57c-.2 0-.52.07-.79.37-.27.3-1.04 1.02-1.04 2.48 0 1.47 1.06 2.88 1.21 3.08.15.2 2.09 3.34 5.08 4.55.71.29 1.26.46 1.69.59.71.22 1.36.19 1.87.12.57-.09 1.76-.72 2.01-1.41.25-.7.25-1.29.17-1.42-.07-.12-.27-.2-.57-.35zM12.05 21.8h-.01a9.75 9.75 0 0 1-4.96-1.36l-.36-.21-3.69.97.99-3.6-.23-.37a9.73 9.73 0 0 1-1.49-5.19c0-5.38 4.38-9.76 9.77-9.76a9.7 9.7 0 0 1 6.9 2.86 9.68 9.68 0 0 1 2.86 6.9c0 5.39-4.39 9.76-9.78 9.76zM12.05 0h-.01C5.4 0 0 5.4 0 12.04c0 2.12.55 4.2 1.6 6.03L0 24l6.09-1.6a12 12 0 0 0 5.95 1.56h.01c6.64 0 12.04-5.4 12.04-12.04A11.96 11.96 0 0 0 12.05 0z'/%3E%3C/svg%3E");

	--bs-container: 1180px;
	--bs-gap:       2.5rem;
	--bs-radius:    3px;

	/*  Ruimte onder een kop. Bewust in rem en niet in em: css/mrreset.css zet
	    `h2 { font-size: 1.1em }`, dus koppen zijn hier maar iets groter dan de
	    lopende tekst en valt een marge in em onverwacht klein uit.

	    Let op bij het bijstellen: rem rekent vanaf de <html>-grootte (16 px),
	    terwijl de lopende tekst op 15pt (20 px) staat. 1rem is hier dus 16 px,
	    niet 20. Onderstaande waarden komen neer op 32 px onder een sectietitel
	    en 24 px onder een kop in een tekstblok. */
	--bs-title-gap:   2rem;     /* onder een sectietitel        -> 32 px */
	--bs-heading-gap: 1.5rem;   /* onder een kop in een blok    -> 24 px */
	--bs-item-gap:    0.75rem;  /* onder een kopje in een kaart -> 12 px */
}

@media screen and (max-width: 736px) {
	:root {
		--bs-sp-small:  1rem;
		--bs-sp-normal: 2.25rem;
		--bs-sp-large:  3.25rem;
		--bs-sp-xlarge: 4.5rem;
		--bs-gap:       1.75rem;
	}
}

/* ---------------------------------------------------------------------------
   Sectie: de buitenkant
   --------------------------------------------------------------------------- */

/*  css/mrreset.css zet `#main { padding: 3em 0 }` én `body.index #main
    { padding-top: 1.5em }`. Op een builder-pagina bepaalt elke sectie zelf zijn
    afstand boven en onder, dus die ruimte levert alleen een donkere strook op
    tussen het menu en de eerste sectie, en boven de footer.

    De selector hieronder moet zwaarder wegen dan `body.index #main` (1,1,1);
    met `.builder-page` erbij komt hij op (1,2,0) en wint hij. `#main.builder-main`
    alleen (1,1,0) was niet genoeg -- dan bleef de bovenruimte staan. */
.builder-page #main.builder-main {
	padding: 0;
}

.builder-main {
	overflow-x: hidden;
}

/* Eigen box-model binnen de secties. De site zet border-box alleen in
   css/skel.css, en die wordt met JavaScript aan uitsluitend via <noscript>
   geladen -- daarbuiten geldt dus content-box. Door het hier zelf te zetten
   rekenen de componenten altijd hetzelfde, met of zonder JavaScript, en blijft
   het beperkt tot de builder. */
.bs,
.bs *,
.bs *::before,
.bs *::after {
	box-sizing: border-box;
}

.bs {
	position: relative;
	background-repeat: no-repeat;
	background-position: center center;
	background-size: cover;
}

/* Ruimte voor de vaste menubalk bij het springen naar een anker.
   `header#new-header` staat op `position: fixed` en is 60px hoog, vanaf 1024px
   127px (zie de padding-top van #skel-layers-wrapper in mrreset.css). Zonder
   deze regel schuift het doel onder die balk: na het versturen van een
   formulier landt de bezoeker dan op de bevestiging die achter het menu zit.
   Verandert de hoogte van het menu, dan moeten deze waarden mee. */
.bs,
.bs__signup {
	scroll-margin-top: 76px;
}

@media screen and (min-width: 1024px) {
	.bs,
	.bs__signup {
		scroll-margin-top: 151px;
	}
}

/*  css/mrreset.css zet `body { color: white !important }` én
    `body { background: #2b2d2f !important }`: de site is van zichzelf donker
    met witte tekst. Een sectie krijgt daarom serverside altijd één van deze
    twee klassen, nooit geen van beide:

      .bs--ondark   donkere eigen achtergrond, of geen achtergrond (dan schijnt
                    de donkere pagina erdoorheen)  -> lichte tekst
      .bs--onlight  lichte eigen achtergrond                       -> donkere tekst

    Zonder zo'n klasse zou de tekst wit blijven en op een licht vlak verdwijnen.
    Zie builder::isDark() en docs/visual-builder.md. */
.bs--onlight {
	color: var(--bs-dark);
}

.bs__inner {
	max-width: var(--bs-container);
	margin: 0 auto;
	padding-left: 1.5rem;
	padding-right: 1.5rem;
}

.bs--w-full > .bs__inner {
	max-width: none;
}

/* Afstand boven */
.bs--pt-none   { padding-top: var(--bs-sp-none); }
.bs--pt-small  { padding-top: var(--bs-sp-small); }
.bs--pt-normal { padding-top: var(--bs-sp-normal); }
.bs--pt-large  { padding-top: var(--bs-sp-large); }
.bs--pt-xlarge { padding-top: var(--bs-sp-xlarge); }

/* Afstand onder */
.bs--pb-none   { padding-bottom: var(--bs-sp-none); }
.bs--pb-small  { padding-bottom: var(--bs-sp-small); }
.bs--pb-normal { padding-bottom: var(--bs-sp-normal); }
.bs--pb-large  { padding-bottom: var(--bs-sp-large); }
.bs--pb-xlarge { padding-bottom: var(--bs-sp-xlarge); }

/* Donkere achtergrond: tekst wordt licht. Wordt serverside gezet op basis
   van de helderheid van de gekozen kleur, dus ook bij een eigen hex. */
.bs--ondark,
.bs--ondark .bs__title,
.bs--ondark .bs__herotitle,
.bs--ondark .bs__herosub,
.bs--ondark .bs__columntitle,
.bs--ondark .bs__eventname,
.bs--ondark .bs__quotename,
.bs--ondark .bs__faqquestion,
.bs--ondark .bs__rich,
.bs--ondark .bs__rich h2,
.bs--ondark .bs__rich h3,
.bs--ondark .bs__rich h4,
.bs--ondark .bs__rich h5,
.bs--ondark .bs__rich h6 {
	color: var(--bs-white);
}

.bs--ondark .bs__faqitem {
	border-bottom-color: rgba(255, 255, 255, 0.25);
}

.bs--ondark .bs__event {
	border-color: rgba(255, 255, 255, 0.25);
}

.bs--ondark .bs__rich a {
	color: var(--bs-gold-light);
}

/* ---------------------------------------------------------------------------
   Achtergrondfoto en -video
   ---------------------------------------------------------------------------
   Een sectie met beeld erachter bestaat uit drie lagen: de video of foto
   onderop, daarover een verloop dat de tekst leesbaar houdt, en bovenop de
   inhoud. De sluier is een verloop en geen egale waas: onderaan donkerder,
   bovenin lichter, zodat je de foto nog ziet terwijl de tekst leesbaar blijft.
   --------------------------------------------------------------------------- */

.bs--media > .bs__inner {
	position: relative;
	z-index: 2;
}

.bs__bgvideo {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: 0;
	pointer-events: none;
}

.bs__overlay {
	position: absolute;
	top: 0; right: 0; bottom: 0; left: 0;
	z-index: 1;
	pointer-events: none;
}

.bs__overlay--light {
	background: linear-gradient(to bottom, rgba(28, 32, 33, 0.15), rgba(28, 32, 33, 0.45));
}

.bs__overlay--medium {
	background: linear-gradient(to bottom, rgba(28, 32, 33, 0.35), rgba(28, 32, 33, 0.65));
}

.bs__overlay--strong {
	background: linear-gradient(to bottom, rgba(28, 32, 33, 0.6), rgba(28, 32, 33, 0.85));
}

/*  Geen bewegend beeld voor wie daar last van heeft. De poster blijft staan,
    dus de sectie ziet er nog hetzelfde uit. */
@media (prefers-reduced-motion: reduce) {
	.bs__bgvideo { display: none; }
}

/*  Op een telefoon geen video downloaden: dat kost al gauw enkele megabytes aan
    mobiele data voor iets dat puur decoratief is. De achtergrondfoto -- die ook
    de poster is -- neemt het over. */
@media screen and (max-width: 736px) {
	.bs__bgvideo { display: none; }
}

/* ---------------------------------------------------------------------------
   Tekst
   --------------------------------------------------------------------------- */

.bs__title {
	margin: 0 0 var(--bs-title-gap);
	font-size: 1.5em;
	line-height: 1.25;
}

.bs__rich {
	line-height: 1.65;
}

.bs__rich > *:first-child { margin-top: 0; }
.bs__rich > *:last-child  { margin-bottom: 0; }

.bs__rich h2,
.bs__rich h3,
.bs__rich h4,
.bs__rich h5,
.bs__rich h6 {
	margin: 1.75em 0 var(--bs-heading-gap);
	line-height: 1.25;
}

/*  Eigen koppenschaal. css/mrreset.css zet h2 op 1.1em en h3 op 0.9em, en geeft
    h4 t/m h6 helemaal geen grootte -- die bleven dus op 1em staan. Een h3 was
    daardoor kleiner dan een gewone alinea, en de h4 hieronder was met 1.15em
    zelfs groter dan een h2. Deze schaal loopt weer op volgorde, en blijft dicht
    bij de ingetogen stijl van de site. */
.bs__rich h2 { font-size: 1.5em; }
.bs__rich h3 { font-size: 1.25em; }
.bs__rich h4 { font-size: 1.1em; }
.bs__rich h5 { font-size: 1em; }
.bs__rich h6 { font-size: 0.9em; text-transform: uppercase; letter-spacing: 0.06em; }

.bs__rich p {
	margin: 0 0 1.1em;
}

.bs__rich ul,
.bs__rich ol {
	margin: 0 0 1.1em;
	padding-left: 1.4em;
}

.bs__rich li {
	margin-bottom: 0.35em;
}

/* De editor wikkelt de inhoud van een lijstitem in een alinea. Die mag geen
   eigen ruimte innemen, anders staan lijsten veel te ruim. */
.bs__rich li > p {
	margin: 0;
}

.bs__rich a {
	color: var(--bs-gold);
	text-decoration: underline;
}

.bs__rich a:hover {
	color: var(--bs-gold-light);
}

.bs__rich blockquote {
	margin: 1.5em 0;
	padding: 0.25em 0 0.25em 1.25em;
	border-left: 3px solid var(--bs-gold);
	font-style: italic;
}

.bs__rich hr {
	margin: 2em 0;
	border: 0;
	border-top: 1px solid rgba(124, 128, 129, 0.35);
}

.bs__rich img {
	max-width: 100%;
	height: auto;
}

/* Tabellen. Op smalle schermen schuiven ze horizontaal in plaats van de
   layout op te rekken. */
.bs__rich table {
	width: 100%;
	margin: 0 0 1.5em;
	border-collapse: collapse;
	display: block;
	overflow-x: auto;
}

@media screen and (min-width: 737px) {
	.bs__rich table { display: table; }
}

.bs__rich th,
.bs__rich td {
	padding: 0.6em 0.85em;
	border: 1px solid rgba(124, 128, 129, 0.3);
	text-align: left;
	vertical-align: top;
}

.bs__rich th {
	background: rgba(229, 219, 215, 0.5);
	font-weight: 600;
}

.bs--ondark .bs__rich th {
	background: rgba(255, 255, 255, 0.08);
}

/* Kleine letter. Voor een disclaimer of een verantwoording onderaan een
   pagina: dezelfde tekst, kleiner en rustiger, in een eigen kader. */
.bs--text.bs--v-small .bs__rich {
	max-width: 62rem;
	margin: 0 auto;
	padding: 1.5rem 1.75rem;
	border: 1px solid rgba(124, 128, 129, 0.35);
	border-radius: var(--bs-radius);
	color: var(--bs-grey);
	font-size: 0.88em;
	line-height: 1.6;
}

.bs--text.bs--v-small .bs__rich h2,
.bs--text.bs--v-small .bs__rich h3 {
	margin-top: 1.25em;
	font-size: 1.05em;
	color: var(--bs-dark);
}

/* De kleine-letterregels hierboven zijn zwaarder dan `.bs--ondark .bs__rich`,
   dus op een donkere sectie moeten ze een eigen tegenhanger krijgen. Anders
   staat er grijs op donker en donker op donker. */
.bs--ondark.bs--text.bs--v-small .bs__rich {
	color: rgba(255, 255, 255, 0.75);
}

.bs--ondark.bs--text.bs--v-small .bs__rich h2,
.bs--ondark.bs--text.bs--v-small .bs__rich h3 {
	color: var(--bs-white);
}

.bs--text.bs--v-small .bs__rich > *:first-child { margin-top: 0; }

.bs--ondark.bs--v-small .bs__rich {
	border-color: rgba(255, 255, 255, 0.25);
	color: rgba(255, 255, 255, 0.8);
}

/* ---------------------------------------------------------------------------
   Knoppen
   --------------------------------------------------------------------------- */

.bs__buttons {
	margin: 1.5em 0 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

/*  Zelfde vorm als `.button` in css/mrreset.css, zodat een knop uit de builder
    niet uit de toon valt naast de knoppen op de rest van de site: kapitalen,
    zwaar gezet, ruime letterafstand, rechte hoeken en een minimumbreedte.
    Overgenomen waarden: font-size 0.8em, font-weight 900, letter-spacing 2px,
    min-width 10em, padding 0.75em. */
.bs__button {
	display: inline-block;
	min-width: 10em;
	padding: 0.75em 1.4em;
	border: 1px solid var(--bs-gold);
	border-radius: 0;

	/*  font-family en cursor staan hier voor de verzendknop van het formulier.
	    Die is een <button>, en zo'n element erft van zichzelf geen lettertype:
	    het pakt dat van de browser. css/mrreset.css zet het lettertype op
	    `body, input, select, textarea` -- button staat daar niet bij, dus zonder
	    deze regel staat de knop in een ander font dan alle <a>-knoppen. */
	font-family: inherit;
	font-size: 0.8em;
	font-weight: 900;
	letter-spacing: 2px;
	line-height: 1.4;
	text-align: center;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.bs__button--solid {
	background: var(--bs-gold);
	color: var(--bs-white);
}

.bs__button--solid:hover {
	background: var(--bs-gold-light);
	border-color: var(--bs-gold-light);
	color: var(--bs-white);
}

/*  De omlijnde knop op een lichte sectie: goud op zand haalt maar 1,8:1 en is
    dan niet te lezen. De rand blijft goud -- dat is de herkenbare vorm -- maar
    de letters worden donker. Op een donkere sectie blijft hij goud, precies
    zoals elders op de site. */
.bs--onlight .bs__button--outline {
	color: var(--bs-dark);
}

.bs--onlight .bs__button--outline:hover {
	background: var(--bs-gold);
	color: var(--bs-white);
}

.bs__button--outline {
	background: transparent;
	color: var(--bs-gold);
}

.bs__button--outline:hover {
	background: var(--bs-gold);
	color: var(--bs-white);
}

.bs--ondark .bs__button--outline {
	border-color: var(--bs-gold);
	color: var(--bs-gold);
}

.bs--ondark .bs__button--outline:hover {
	background: var(--bs-gold);
	color: var(--bs-white);
}

/* WhatsApp-knop. Herkenbaar groen in plaats van het goud van het palet, want
   die kleur is nu juist waar mensen op klikken. Het icoon zit als SVG in de
   CSS, zodat er geen extra bestand mee hoeft. */
.bs__button--whatsapp {
	display: inline-flex;
	align-items: center;
	gap: 0.6em;
	background: #25d366;
	border-color: #25d366;
	color: #ffffff;
}

.bs__button--whatsapp::before {
	content: '';
	flex: 0 0 auto;
	width: 1.15em;
	height: 1.15em;
	background: currentColor;
	-webkit-mask: var(--bs-whatsapp) center / contain no-repeat;
	mask: var(--bs-whatsapp) center / contain no-repeat;
}

.bs__button--whatsapp:hover {
	background: #1ebe5b;
	border-color: #1ebe5b;
	color: #ffffff;
}

.bs--ondark .bs__button--whatsapp {
	color: #ffffff;
}

/*  Een <button> erft van zichzelf geen lettertype; dat wordt in .bs__button
    hierboven met `font-family: inherit` geregeld, samen met cursor en appearance.

    Zet hier nooit `font: inherit` neer. Die shorthand neemt óók grootte, gewicht
    en regelhoogte mee, en omdat `button.bs__button` zwaarder weegt (0,1,1) dan
    `.bs__button` (0,1,0) wist dat de hele knopopmaak uit: de verzendknop van het
    formulier stond daardoor in de grootte en het gewicht van de lopende tekst.
    text-transform en letter-spacing horen niet bij die shorthand -- vandaar dat
    zo'n knop wél in kapitalen stond en tóch uit de toon viel. */

button.bs__button[disabled] {
	cursor: default;
	opacity: 0.65;
}

/* ---------------------------------------------------------------------------
   Tekst + afbeelding
   --------------------------------------------------------------------------- */

.bs__split {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--bs-gap);
	align-items: center;
}

.bs__media img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--bs-radius);
}

/*  De variant `right` wordt niet meer met `order` omgedraaid: de renderer zet de
    kolommen al in de juiste volgorde in de HTML. Daardoor klopt de volgorde op
    een smal scherm vanzelf -- staat de afbeelding op desktop rechts, dan komt de
    tekst er op mobiel boven -- en loopt de tabvolgorde gelijk met wat je ziet. */

/* Zonder afbeelding neemt de tekst de volle breedte. De serverside renderer
   laat de mediakolom dan helemaal weg, zodat hier geen :has() nodig is. */
.bs__split--single {
	grid-template-columns: 1fr;
}

@media screen and (max-width: 736px) {
	.bs__split {
		grid-template-columns: 1fr;
	}
}

/*  Een SVG staat in de pagina zelf en is dus geen <img>. Hij moet daarom apart
    dezelfde maat krijgen als een afbeelding op die plek, anders valt hij terug
    op de eigen afmeting uit het bestand. Kleur komt via `currentColor` uit de
    sectie -- daarom staat hij ín de pagina en niet in een <img>. */
.bs__svg {
	display: block;
	width: 100%;
	height: auto;
	color: inherit;
}

.bs__quotephoto .bs__svg {
	width: 52px;
	height: 52px;
}

/*  Een icoon in een kolom is geen foto: op volle kolombreedte wordt hij enorm.
    Alleen hier begrensd, zodat een SVG die als losse afbeelding gebruikt wordt
    -- een illustratie of schema -- wél groot mag blijven. */
.bs__columnmedia .bs__svg {
	max-width: 80px;
}

/* ---------------------------------------------------------------------------
   Hero
   --------------------------------------------------------------------------- */

.bs__hero {
	max-width: 44rem;
}

.bs--v-center .bs__hero {
	max-width: 46rem;
	margin: 0 auto;
	text-align: center;
}

.bs--v-center .bs__buttons {
	justify-content: center;
}

.bs__herotitle {
	margin: 0 0 0.5em;
	font-size: 2.6em;
	line-height: 1.1;
}

.bs__herosub {
	margin: 0;
	font-size: 1.2em;
	line-height: 1.5;
}

@media screen and (max-width: 736px) {
	.bs__herotitle { font-size: 1.9em; }
	.bs__herosub   { font-size: 1.05em; }
}

/* ---------------------------------------------------------------------------
   Afbeelding en video
   --------------------------------------------------------------------------- */

.bs__figure {
	margin: 0;
}

.bs__figuremedia {
	display: block;
}

.bs__figure img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--bs-radius);
}

.bs--w-full .bs__figure img {
	border-radius: 0;
}

.bs__caption {
	margin-top: var(--bs-item-gap);
	color: var(--bs-grey);
	font-size: 0.9em;
}

.bs--ondark .bs__caption {
	color: rgba(255, 255, 255, 0.7);
}

.bs__video {
	position: relative;
	padding-top: 56.25%;          /* 16:9 */
	border-radius: var(--bs-radius);
	overflow: hidden;
	background: var(--bs-darker);
}

.bs__video iframe {
	position: absolute;
	top: 0; left: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

/* ---------------------------------------------------------------------------
   CTA-balk
   --------------------------------------------------------------------------- */

.bs__cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--bs-gap);
}

.bs__ctatext { flex: 1 1 20rem; }

.bs__ctatext .bs__title { margin-bottom: var(--bs-title-gap); }

.bs__ctabuttons { flex: 0 0 auto; }

.bs__ctabuttons .bs__buttons { margin: 0; }

.bs--v-center .bs__cta {
	flex-direction: column;
	text-align: center;
}

/* In een kolom werkt de flex-basis van .bs__ctatext als hóógte, niet als
   breedte. Zonder deze regel staat er 20rem lucht tussen de tekst en de
   knoppen. */
.bs--v-center .bs__ctatext {
	flex: 0 1 auto;
	max-width: 46rem;
}

.bs--v-center .bs__cta > * {
	width: 100%;
}

.bs--v-center .bs__cta .bs__buttons { justify-content: center; }

/* ---------------------------------------------------------------------------
   Kolommen / USP's
   --------------------------------------------------------------------------- */

.bs__title--centered {
	margin-bottom: calc(var(--bs-title-gap) * 1.25);
	text-align: center;
}

.bs__columns {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--bs-gap);
}

.bs--v-2 .bs__columns { grid-template-columns: repeat(2, 1fr); }
.bs--v-4 .bs__columns { grid-template-columns: repeat(4, 1fr); }

.bs__columnmedia {
	margin-bottom: 1em;
}

.bs__columnmedia img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--bs-radius);
}

.bs__columntitle {
	margin: 0 0 var(--bs-item-gap);
	font-size: 1.15em;
	line-height: 1.3;
}

@media screen and (max-width: 980px) {
	.bs__columns,
	.bs--v-4 .bs__columns { grid-template-columns: repeat(2, 1fr); }
}

@media screen and (max-width: 620px) {
	.bs__columns,
	.bs--v-2 .bs__columns,
	.bs--v-4 .bs__columns { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------------------------
   Ervaringen / quotes
   --------------------------------------------------------------------------- */

.bs__quotes {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
	gap: var(--bs-gap);
}

/*  Een ervaring leest als een citaat, niet als een kaartje met tekst: een groot
    aanhalingsteken erboven, het citaat cursief, en onderaan een ondertekening
    met foto, naam en rol -- gescheiden door een dun lijntje. */
.bs__quote {
	position: relative;
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 3.25rem 1.75rem 1.75rem;
	border: 1px solid rgba(124, 128, 129, 0.22);
	border-radius: var(--bs-radius);
	background: rgba(229, 219, 215, 0.45);
}

.bs__quote::before {
	content: '\201C';                 /* het openende aanhalingsteken */
	position: absolute;
	top: 0.5rem;
	left: 1.4rem;
	color: var(--bs-gold);
	font-family: Georgia, "Times New Roman", serif;
	font-size: 4.5rem;
	line-height: 1;
	opacity: 0.45;
	pointer-events: none;
}

.bs--ondark .bs__quote {
	border-color: rgba(255, 255, 255, 0.2);
	background: rgba(255, 255, 255, 0.07);
}

.bs__quote blockquote {
	flex: 1 1 auto;
	margin: 0;
	padding: 0;
	border: 0;
	font-style: italic;
}

/* De ondertekening: foto naast de naam, met een scheidingslijntje erboven. */
.bs__quotefoot {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	margin-top: 1.5rem;
	padding-top: 1.25rem;
	border-top: 1px solid rgba(124, 128, 129, 0.25);
}

.bs--ondark .bs__quotefoot {
	border-top-color: rgba(255, 255, 255, 0.18);
}

.bs__quotephoto {
	flex: 0 0 auto;
}

.bs__quotephoto img {
	display: block;
	width: 52px;
	height: 52px;
	object-fit: cover;
	border-radius: 50%;
}

.bs__quotewho {
	min-width: 0;
	line-height: 1.35;
}

.bs__quotename {
	display: block;
	font-weight: 600;
}

.bs__quoterole {
	display: block;
	color: var(--bs-grey);
	font-size: 0.88em;
}

.bs__quoterole:empty { display: none; }

.bs--ondark .bs__quoterole { color: rgba(255, 255, 255, 0.7); }

/* ---------------------------------------------------------------------------
   FAQ
   --------------------------------------------------------------------------- */

.bs__faq {
	max-width: 48rem;
	margin: 0 auto;
}

.bs__faqitem {
	border-bottom: 1px solid rgba(124, 128, 129, 0.3);
}

.bs__faqquestion {
	position: relative;
	padding: 1em 2em 1em 0;
	font-weight: 600;
	list-style: none;
	cursor: pointer;
}

.bs__faqquestion::-webkit-details-marker { display: none; }

.bs__faqquestion::after {
	content: '+';
	position: absolute;
	right: 0.25em;
	top: 50%;
	transform: translateY(-50%);
	color: var(--bs-gold);
	font-size: 1.3em;
	line-height: 1;
}

.bs__faqitem[open] > .bs__faqquestion::after { content: '\2212'; }

.bs__faqanswer {
	padding: 0 0 1.25em;
}

/* ---------------------------------------------------------------------------
   Slideshow en agenda
   --------------------------------------------------------------------------- */

.bs__slideshow img { max-width: 100%; height: auto; }

.bs__events {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
	gap: var(--bs-gap);
}

.bs__event {
	display: flex;
	flex-direction: column;
	padding: 1.5rem;
	border: 1px solid rgba(124, 128, 129, 0.25);
	border-radius: var(--bs-radius);
}

.bs__eventdate {
	margin: 0 0 0.35em;
	color: var(--bs-gold);
	font-size: 0.9em;
	font-weight: 600;
	letter-spacing: 0.02em;
}

.bs__eventname {
	margin: 0 0 var(--bs-item-gap);
	font-size: 1.15em;
	line-height: 1.3;
}

.bs__eventlocation {
	margin: 0 0 0.6em;
	color: var(--bs-grey);
	font-size: 0.92em;
}

.bs--ondark .bs__eventlocation { color: rgba(255, 255, 255, 0.7); }

.bs__eventtext {
	margin: 0 0 0.5em;
}

.bs__event .bs__buttons {
	margin-top: auto;
	padding-top: 1em;
}

/* ---------------------------------------------------------------------------
   Aanmeldformulier
   --------------------------------------------------------------------------- */

.bs__signup {
	max-width: 46rem;
	margin: 0 auto;
	text-align: center;
}

.bs__signup .bs__rich {
	text-align: left;
}

.bs__form {
	margin: 2rem 0 0;
	padding: 1.75rem;
	background: rgba(255, 255, 255, 0.9);
	border: 1px solid rgba(124, 128, 129, 0.3);
	border-radius: var(--bs-radius);
	text-align: left;
}

.bs--ondark .bs__form {
	background: rgba(255, 255, 255, 0.07);
	border-color: rgba(255, 255, 255, 0.25);
}

.bs__formrow {
	margin-bottom: 1.1rem;
}

.bs__formlabel {
	display: block;
	margin-bottom: 0.35em;
	font-size: 0.92em;
	font-weight: 600;
}

.bs--ondark .bs__formlabel {
	color: var(--bs-white);
}

/* Eigen opmaak in plaats van die uit het oude skel-formulier, zodat deze
   velden niet meeveranderen met style4.css. */
.bs__forminput {
	display: block;
	width: 100%;
	box-sizing: border-box;
	padding: 0.7em 0.85em;
	background: var(--bs-white);
	border: 1px solid rgba(124, 128, 129, 0.55);
	border-radius: var(--bs-radius);
	font: inherit;
	color: var(--bs-dark);
	line-height: 1.3;
}

.bs__forminput:focus {
	outline: 0;
	border-color: var(--bs-gold);
	box-shadow: 0 0 0 3px rgba(204, 153, 102, 0.25);
}

.bs__formtextarea {
	min-height: 7rem;
	resize: vertical;
}

.bs__formcheckbox {
	display: flex;
	align-items: flex-start;
	gap: 0.6em;
	margin: 0 0 1.2rem;
	font-size: 0.92em;
	line-height: 1.5;
}

.bs__formcheckbox input {
	flex: 0 0 auto;
	margin: 0.2em 0 0;
}

.bs--ondark .bs__formcheckbox {
	color: var(--bs-white);
}

.bs__formcheck {
	margin-bottom: 1.2rem;
}

.bs__form .bs__buttons {
	margin: 0;
}

/* Het honeypot-veld. Uit beeld met positionering in plaats van display:none,
   want dat laatste zien bots juist en vullen ze dan niet in. */
.bs__formtrap {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.bs__formnote {
	margin-top: 1rem;
	color: var(--bs-grey);
	font-size: 0.86em;
	text-align: left;
}

.bs--ondark .bs__formnote {
	color: rgba(255, 255, 255, 0.75);
}

/* Terugkoppeling na het versturen. Een dekkende achtergrond en een randje,
   zodat de melding ook opvalt op een sectie die zelf al zandkleurig is. */
.bs__formmessage {
	margin: 1.5rem 0 0;
	padding: 1em 1.2em;
	border: 1px solid rgba(204, 153, 102, 0.55);
	border-left: 4px solid var(--bs-gold);
	border-radius: var(--bs-radius);
	background: var(--bs-white);
	color: var(--bs-dark);
	font-size: 1.05em;
	text-align: left;
}

.bs__formmessage--fout {
	border-color: rgba(179, 38, 30, 0.45);
	border-left-color: #b3261e;
	background: #fdf5f4;
}

/* ---------------------------------------------------------------------------
   De beheerbalk onderaan
   ---------------------------------------------------------------------------
   `.admin-bar` in css/mrreset.css staat op `position: fixed` maar heeft geen
   z-index. Zodra er op de pagina een element staat dat wél een z-index heeft --
   en dat hebben de lagen van een sectie met achtergrondbeeld -- schuift die
   balk eronder en is hij niet meer te zien of aan te klikken. Hier alleen
   rechtgezet voor builder-pagina's, zodat de rest van de site ongemoeid blijft.
   --------------------------------------------------------------------------- */

.builder-page .admin-bar {
	z-index: 100;
}

/* De balk ligt over de pagina heen; deze ruimte houdt de laatste sectie vrij. */
body.has-adminbar {
	padding-bottom: 50px;
}

/* ---------------------------------------------------------------------------
   Alleen zichtbaar in de builder
   --------------------------------------------------------------------------- */

.bs__todo {
	margin: 0;
	padding: 1.5rem;
	border: 1px dashed var(--bs-grey);
	border-radius: var(--bs-radius);
	color: var(--bs-grey);
	text-align: center;
}

.bs--hidden {
	opacity: 0.4;
}
