@charset "UTF-8";
/* WC Plus — single-product (summary/gallery/header). Lean, tokens-gedreven, Bootstrap-vrij.
   Structuur + defaults; het (starter)theme heeft volledige vrijheid via template-overrides. */

/* Layout: gallery + summary naast elkaar staat bij "2-koloms productlayout" verderop (floats 48/48; met
   wcp_single_product_sticky_gallery een raster). Hier stond een tweede, grid-opzet die altijd verloor van die
   latere regel met dezelfde specificiteit — weggehaald (#121). */

/* Heading. */
.wcp-product-heading__title {
	margin: 0 0 1rem;
}

/* Gallery. */
.woocommerce-gallery-wrapper {
	position: relative;
}
.gallery-inner {
	position: relative;
}

/* WooCommerce kleurt prijzen binnen div.product olijfgroen (#958e09) en zet ze op
   1.25em — ook de kaarten van gerelateerde producten en de accessoires op de
   productpagina. Zelfde selector, wij laden later. */
.woocommerce div.product p.price,
.woocommerce div.product span.price {
	color: var(--wcp-color-dark);
	font-size: inherit;
}

/* Summary. */
.wcp-product-summary__inner > * + * {
	margin-top: 1rem;
}

/* Merklogo rechts naast de prijs (wcp_add_brand_logo_at_price, zoals v1). Stond tot 2.2.0
   rechtsboven in de kop; de titel moest daar 9rem voor vrijhouden en brak over twee regels. */
.wcp-product-price {
	position: relative;
}
.wcp-product-price:has(.wcp-product-brand) {
	padding-right: 9rem;
}
/* Vaste doos: een absoluut geplaatste inline-flex zonder breedte krimpt tot 0 zodra
   de afbeelding max-width: 100% heeft (kringverwijzing), en merklogo's zijn SVG's
   met width="1" height="1". */
.wcp-product-brand {
	position: absolute;
	top: 50%;
	right: 0;
	transform: translateY(-50%);
	display: flex;
	align-items: center;
	justify-content: flex-end;
	width: 8rem;
	height: 2.5rem;
}
.wcp-product-brand img {
	display: block;
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}
/* De titel in de samenvatting is een h1, maar geen pagina-hero: thema's zetten h1 vaak
   op 3-4rem en dan neemt de titel de halve kolom in. Hier de maat van een productkop. */
.wcp-product-summary__title {
	margin: 0;
	font-size: clamp(1.375rem, 1rem + 1vw, 1.75rem);
	line-height: 1.2;
}
/* Kopmeta in de samenvatting (titel in de summary): dezelfde flex-rij als .wcp-product-heading__meta,
   zodat artikelnummer, kopattributen en merk naast elkaar staan en pas wrappen als het niet past. */
.wcp-product-summary__details,
.product-details {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.25rem 0.75rem;
	font-size: var(--wcp-font-size-sm);
}
.wcp-product-summary__details .wcp-product-header__row,
.product-details .wcp-product-header__row {
	color: var(--wcp-color-muted);
	font-size: var(--wcp-font-size-sm);
}
/* Streepje tussen de kopregels (rating | artikelnummer | attribuut | merk): absoluut in de 0.75rem-gap
   vóór elke kopregel die op een ander item volgt. Wrapt de rij (mobiel), dan valt het streepje van het
   eerste item op de nieuwe regel buiten de container en knipt overflow:hidden het weg. */
.wcp-product-heading__meta,
.wcp-product-summary__details,
.product-details { overflow: hidden; }
.wcp-product-header__row { position: relative; }
.wcp-product-heading__meta > * + .wcp-product-header__row::before,
.wcp-product-summary__details > * + .wcp-product-header__row::before,
.product-details > * + .wcp-product-header__row::before {
	content: "|";
	position: absolute;
	inset: 0 100% 0 auto;
	width: 0.75rem;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--wcp-color-border);
}
.wcp-product-price .price {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.25rem 0.6rem;
	font-size: 1.5rem;
	font-weight: var(--wcp-font-weight-bold);
	line-height: 1.2;
}
/* Oude en nieuwe prijs op één regel; de oude kleiner en gedempt. */
.wcp-product-price .price del {
	order: 1;
	color: var(--wcp-color-muted);
	font-size: 1rem;
	font-weight: var(--wcp-font-weight-normal);
	opacity: 1;
}
.wcp-product-price .price ins {
	order: 0;
	background: none;
	text-decoration: none;
}
/* wcp_add_break_to_price() zet een <br> achter </del>; hier is dat een leeg flex-item vóór de nieuwe prijs, waardoor de
   gap als witruimte vóór het bedrag kwam (#215). Oud en nieuw staan hier toch al via order op één regel. */
.wcp-product-price .price br {
	display: none;
}
/* Prijs per eenheid (wcp-unit-price, .piece-price) op een eigen, gedempte regel ónder bedrag + oude prijs — stond
   ertussen ("24,95 incl. Btw · 6,24 per stuk · ~~34,95~~") en las de adviesprijs als prijs per stuk. */
.wcp-product-price .price .piece-price {
	order: 2;
	flex: 0 0 100%;
	font-size: var(--wcp-font-size-sm);
	font-weight: var(--wcp-font-weight-normal);
	color: var(--wcp-color-muted);
}
/* "Vanaf" is een aanduiding, geen tweede prijs. Zonder eigen opmaak erft hij de 28px vet van
   het prijsblok en staat hij náást het bedrag; de flexrij breekt hem dan af en het leest als
   twee losse dingen. Klein en gedempt op een eigen regel erboven, zoals v1. */
.wcp-product-price .price .from-price {
	flex: 0 0 100%;
	font-size: var(--wcp-font-size-sm);
	font-weight: var(--wcp-font-weight-normal);
	color: var(--wcp-color-muted);
	line-height: 1.2;
}

/* ── Variatiekeuzes als blok in plaats van WooCommerce' tabel ──
   WC zet elke keuze in een tabelrij met het label in een eigen kolom (gecentreerd, 16px vet).
   Een attribuutswitch (wcp-product-attribute-switch) zet het label gewoon links boven de
   knoppen. Naast elkaar op één productpagina leest dat als twee verschillende
   besturingselementen, terwijl de knoppen zelf identiek zijn. Zelfde opbouw dus.
   flex: 0 0 100% omdat het formulier een flexrij is met gap: de tabel moet een volle regel
   pakken, anders krimpt hij en schuift hij 12px op.

   Gescoped op form.variations_form en niet op form.cart: add-ons die zelf een form.cart in de
   productpagina zetten (wcp-combi-deal rendert er een per deal, met dezelfde .variations-tabel
   per kaart) kregen die 100% anders ook, en dan loopt hun kaartfooter uit de kaart. */
.woocommerce div.product form.variations_form .variations {
	display: block;
	flex: 0 0 100%;
	width: 100%;
	margin: 0 0 1rem;
}
.woocommerce div.product form.variations_form .variations tbody,
.woocommerce div.product form.variations_form .variations tr,
.woocommerce div.product form.variations_form .variations th,
.woocommerce div.product form.variations_form .variations td {
	display: block;
	width: auto;
	text-align: left;
	padding: 0;
}
.woocommerce div.product form.variations_form .variations th.label {
	font-size: var(--wcp-font-size-sm);
	font-weight: var(--wcp-font-weight-semibold);
	line-height: 1.3;
	color: var(--wcp-color-dark);
	margin-bottom: 0.5rem;
}
.woocommerce div.product form.variations_form .variations th.label label { display: inline-flex; align-items: center; gap: 0.35rem; margin: 0; }
/* Uitleg-icoon naast het label: gedempt en kleiner, niet zwaarder dan het label zelf. */
.woocommerce div.product form.variations_form .variations th.label [data-wcp-dialog] { color: var(--wcp-color-muted); font-size: 0.875em; cursor: pointer; }
.woocommerce div.product form.variations_form .variations th.label [data-wcp-dialog]:hover { color: var(--wcp-color-primary); }
.woocommerce div.product form.variations_form .variations tr + tr { margin-top: 1.1rem; }
.wcp-product-price .price .screen-reader-text { position: absolute; }
.woocommerce-product-details__short-description {
	font-size: 0.9375rem;
	line-height: 1.6;
}
/* Koppen in de korte omschrijving zijn tussenkopjes, geen sectiekoppen: thema's zetten
   h2 vaak op 2rem of meer en dan domineert de kop de samenvatting. */
.woocommerce-product-details__short-description h2,
.woocommerce-product-details__short-description h3,
.woocommerce-product-details__short-description h4 {
	margin: 0 0 0.35rem;
	font-size: 1.125rem;
	line-height: 1.3;
}
.woocommerce-product-details__short-description > :last-child { margin-bottom: 0; }


/* Reviews (lean default; was Bootstrap row/col/card). Sterren via icon-font (theme-asset). */

.wcp-reviews { display: flex; flex-direction: column; gap: 2rem; }
.wcp-reviews__summary {
	display: flex;
	flex-wrap: wrap;
	gap: 2rem;
	align-items: center;
}
.wcp-reviews__score { display: flex; flex-direction: column; gap: 0.25rem; }
.wcp-reviews__average { font-size: 2.5rem; font-weight: var(--wcp-font-weight-bold); line-height: 1; }
.wcp-reviews__total { color: var(--wcp-color-muted); font-size: var(--wcp-font-size-sm); }
.wcp-reviews__bars { flex: 1 1 16rem; display: flex; flex-direction: column; gap: 0.25rem; }
.wcp-reviews__bar-row { display: flex; align-items: center; gap: 0.5rem; }
.wcp-reviews__bar-label { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 0.15rem; font-size: var(--wcp-font-size-sm); }
.wcp-reviews__bar-label .svg-icon__star { color: var(--wcp-color-rating, #f5a623); }
.wcp-reviews__bar { flex: 1 1 auto; height: 0.5rem; background: var(--wcp-color-border); border-radius: 999px; overflow: hidden; }
.wcp-reviews__bar-fill { display: block; height: 100%; background: var(--wcp-color-rating, #f5a623); }
.wcp-reviews__bar-count { flex: 0 0 2ch; text-align: right; font-size: var(--wcp-font-size-sm); color: var(--wcp-color-muted); }

.wcp-reviews__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
@media ( min-width: 48rem ) { .wcp-reviews__list { grid-template-columns: 1fr 1fr; } }
/* Reviews als slider (filter wcp_reviews_layout = 'slider', wcp-slider.js): één rij, native scroll met snap,
   drie kaarten op desktop en ruim één op mobiel; ronde pijlen rechtsonder (op touch alleen vegen). */
.wcp-reviews__slider { position: relative; }
.wcp-reviews__list.wcp-reviews__list--slider {
	grid-auto-flow: column;
	grid-template-columns: none;
	grid-auto-columns: 85%;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}
.wcp-reviews__list--slider::-webkit-scrollbar { display: none; }
.wcp-reviews__list--slider > li { scroll-snap-align: start; }
/* Tekst op drie regels: de kaarten in een rij zijn even hoog, en één lange review rekte anders de hele rij op.
   De volledige tekst staat in de pop-up. */
.wcp-reviews__list--slider .wcp-review__text {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
}
.wcp-reviews__list--slider .wcp-review { display: flex; flex-direction: column; }
.wcp-reviews__list--slider .wcp-review__meta { margin-top: auto; } /* naam + datum onderaan, gelijk in elke kaart */
@media ( min-width: 48rem ) { .wcp-reviews__list.wcp-reviews__list--slider { grid-auto-columns: calc( ( 100% - 1rem ) / 2 ); } }
@media ( min-width: 62rem ) { .wcp-reviews__list.wcp-reviews__list--slider { grid-auto-columns: calc( ( 100% - 2rem ) / 3 ); } }
.wcp-reviews__slider > .wcp-slider-buttons { justify-content: flex-end; margin-top: 0.75rem; }
/* Desktop (#218): zoals de oude Lijmkam-site. Bovenaan één regel met sterren, gemiddelde en aantal; daaronder de balken
   als smalle linkerkolom en de reviews (raster of slider, 2 kaarten) ernaast, bovenkant gelijk; review-knop rechts eronder.
   De samenvatting zelf is display:contents, zodat score en balken elk een eigen plek in het raster krijgen. Gesloten
   <dialog>s zijn display:none, dus geen rij. */
@media ( min-width: 62rem ) {
	.wcp-reviews:has( > .wcp-reviews__summary ) {
		display: grid;
		grid-template-columns: minmax( 16rem, 20rem ) minmax( 0, 1fr );
		gap: 1.25rem 3rem;
		align-items: start;
	}
	.wcp-reviews > .wcp-reviews__summary { display: contents; }
	.wcp-reviews > .wcp-reviews__summary .wcp-reviews__score {
		grid-column: 1 / -1;
		grid-row: 1;
		flex-direction: row;
		align-items: center;
		gap: 0.625rem;
	}
	.wcp-reviews > .wcp-reviews__summary .wcp-reviews__score .wcp-stars { order: -1; }
	.wcp-reviews > .wcp-reviews__summary .wcp-reviews__average { font-size: 1.125rem; }
	.wcp-reviews > .wcp-reviews__summary .wcp-reviews__average::after { content: "/5"; }
	.wcp-reviews > .wcp-reviews__summary .wcp-reviews__bars { grid-column: 1; grid-row: 2; flex: 0 0 auto; gap: 0.5rem; }
	.wcp-reviews:has( > .wcp-reviews__summary ) > :not( .wcp-reviews__summary ) { grid-column: 2; }
	.wcp-reviews:has( > .wcp-reviews__summary ) .wcp-reviews__list { grid-template-columns: 1fr 1fr; }
	.wcp-reviews:has( > .wcp-reviews__summary ) .wcp-reviews__list.wcp-reviews__list--slider { grid-template-columns: none; grid-auto-columns: calc( ( 100% - 1rem ) / 2 ); }
}
.wcp-reviews__slider .wcp-slider-btn {
	width: 2.5rem;
	height: 2.5rem;
	padding: 0;
	border-radius: 50%;
	background: var(--wcp-color-surface, #fff);
}
@media ( hover: none ) { .wcp-reviews__slider > .wcp-slider-buttons { display: none; } }
.wcp-review {
	border: 1px solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	padding: 1rem;
}
.wcp-review__head { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.4rem; }
.wcp-review__title { font-weight: var(--wcp-font-weight-medium); }
.wcp-review__text { margin: 0 0 0.5rem; }
.wcp-review__meta { display: flex; align-items: center; gap: 0.5rem; font-size: var(--wcp-font-size-sm); color: var(--wcp-color-muted); }
.wcp-review__verified { color: #1e7e34; }
/* Hele kaart klikbaar: onzichtbare knop over de kaart opent de volledige review in een <dialog>. */
.wcp-review { position: relative; transition: border-color 0.15s ease, box-shadow 0.15s ease; }
.wcp-review__open { position: absolute; inset: 0; width: 100%; padding: 0; border: 0; border-radius: inherit; background: transparent; cursor: pointer; }
.wcp-review__open:focus-visible { outline: 2px solid var(--wcp-color-primary); outline-offset: 2px; }
@media (hover: hover) {
	.wcp-review:has(.wcp-review__open:hover) { border-color: var(--wcp-color-primary); }
}
dialog.wcp-review-dialog { width: calc(100% - 2rem); max-width: 34rem; border-radius: var(--wcp-radius); }
.wcp-review-dialog .wcp-dialog__header { align-items: center; gap: 0.75rem; }
.wcp-review-dialog .wcp-dialog__header .wcp-stars { margin-inline-end: auto; }
.wcp-review-dialog .wcp-dialog__body { line-height: 1.65; }
.wcp-review-dialog .wcp-dialog__body > :last-child { margin-bottom: 0; }
.wcp-review-dialog__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.75rem; padding: 0 1.25rem 1.25rem; font-size: var(--wcp-font-size-sm); color: var(--wcp-color-muted); }
.wcp-review-dialog__meta .wcp-review__author { font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-text); }

.wcp-review-cta {
	border: 1px solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	padding: 1.25rem;
}
.wcp-review-cta__title { margin: 0 0 0.75rem; }

/* Review-formulier (WC-native comment_form met expliciete args — zie review-form.php). */
.wcp-review-cta .comment-form {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	max-width: 40rem;
}
.wcp-review-cta .comment-form > p,
.wcp-review-cta .comment-form .comment-form-rating { margin: 0; }
.wcp-review-cta .comment-form label {
	display: block;
	margin-bottom: 0.375rem;
	font-weight: var(--wcp-font-weight-medium);
	font-size: var(--wcp-font-size-sm);
}
.wcp-review-cta .comment-form input[type="text"],
.wcp-review-cta .comment-form input[type="email"],
.wcp-review-cta .comment-form textarea,
.wcp-review-cta .comment-form select {
	width: 100%;
	padding: 0.5rem 0.75rem;
	border: 1px solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	background: #fff;
	font: inherit;
}
.wcp-review-cta .comment-form input:focus,
.wcp-review-cta .comment-form textarea:focus,
.wcp-review-cta .comment-form select:focus {
	outline: 2px solid var(--wcp-color-primary);
	outline-offset: -1px;
}
.wcp-review-cta .comment-form select { max-width: 12rem; }
.wcp-review-cta .comment-form textarea { min-height: 7rem; resize: vertical; }
/* Cookies-consent: checkbox + label op één regel. */
.wcp-review-cta .comment-form-cookies-consent {
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
	font-size: var(--wcp-font-size-sm);
}
.wcp-review-cta .comment-form-cookies-consent input { margin-top: 0.2rem; }
.wcp-review-cta .comment-form-cookies-consent label {
	display: inline;
	margin: 0;
	font-weight: 400;
	font-size: inherit;
}
.wcp-review-cta .form-submit { margin: 0; }
/* WC's sterren-widget (JS vervangt de select door p.stars): kleur op de merk-accent. */
.wcp-review-cta p.stars a { color: var(--wcp-color-rating, #f5a623); }

/* Tabel in de productinhoud — één opmaak voor specificaties, maattabel (wcp-size-chart) en andere add-ons:
   klasse .wcp-table (eventueel in een .wcp-table-wrap die op een smal scherm horizontaal scrolt). Rijen met een
   lijn, om-en-om gekleurd; rijkop (th) iets zwaarder; een kopregel (thead) klein en vet. Was Bootstrap .table-striped. */
:is(.wcp-table, .wcp-specs) {
	width: 100%;
	/* separate (niet collapse): alleen zo krijgt de tabel zelf afgeronde hoeken als witte kaart */
	border-collapse: separate;
	border-spacing: 0;
	margin: 0 0 1rem;
	border: var(--wcp-border-width, 1px) solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	background: var(--wcp-color-surface);
	overflow: hidden;
	font-variant-numeric: tabular-nums;
}
:is(.wcp-table, .wcp-specs) :is(th, td) {
	padding: 0.85rem 1.5rem;
	border: 0;
	border-bottom: var(--wcp-border-width, 1px) solid var(--wcp-color-border);
	background: none;
	text-align: left;
	vertical-align: top;
}
:is(.wcp-table, .wcp-specs) tr:last-child > :is(th, td) { border-bottom: 0; }
:is(.wcp-table, .wcp-specs) thead tr:last-child > :is(th, td) { border-bottom: var(--wcp-border-width, 1px) solid var(--wcp-color-border); }
:is(.wcp-table, .wcp-specs) tbody th { font-weight: var(--wcp-font-weight-medium); }
/* Specificaties: label rustig, waarde nadrukkelijk (label · waarde). */
.wcp-specs tbody th { font-weight: var(--wcp-font-weight-normal, 400); color: color-mix(in srgb, var(--wcp-color-text) 80%, transparent); }
.wcp-specs tbody td { font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-text); }
:is(.wcp-table, .wcp-specs) thead th {
	font-size: var(--wcp-font-size-sm);
	font-weight: var(--wcp-font-weight-semibold, 600);
	color: var(--wcp-color-dark);
	vertical-align: bottom;
}
:is(.wcp-table, .wcp-specs) tbody tr:nth-child(even) { background: color-mix(in srgb, var(--wcp-color-light) 60%, var(--wcp-color-surface)); }
.wcp-specs th { width: 50%; } /* label · waarde: vaste labelkolom */
.wcp-table__empty { color: var(--wcp-color-muted); }
.wcp-table-wrap { max-width: 100%; margin: 0 0 1rem; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.wcp-table-wrap > .wcp-table { margin: 0; }
.wcp-table-wrap > .wcp-table :is(th, td) { white-space: nowrap; }
.wcp-specs__group-heading {
	display: block;
	margin: 1.25rem 0 0.5rem;
	font-size: 1rem;
}

/* Check/kruis-waarden (was Bootstrap .text-success/.text-danger). */
.wcp-icon--success {
	color: #1e7e34;
}
.wcp-icon--danger {
	color: #9b1c1c;
}

/* Uitleg help-icoon. */
.wcp-attr-help {
	cursor: pointer;
	color: var(--wcp-color-muted);
	margin-left: 0.25rem;
}
.wcp-attr-help:hover {
	color: var(--wcp-color-primary);
}

/* Attribuut-uitleg dialog (chrome bovenop wcp-ui .wcp-dialog). */
.wcp-attr-dialog {
	max-width: 32rem;
	width: calc(100% - 2rem);
	border-radius: var(--wcp-radius);
}
.wcp-dialog__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1rem 1.25rem;
	border-bottom: 1px solid var(--wcp-color-border);
}
.wcp-dialog__title {
	margin: 0;
	font-size: 1.125rem;
}
.wcp-dialog__body {
	padding: 1.25rem;
}
.wcp-dialog__close {
	border: 0;
	background: transparent;
	cursor: pointer;
	width: 1.75rem;
	height: 1.75rem;
	position: relative;
	flex: 0 0 auto;
}
.wcp-dialog__close::before,
.wcp-dialog__close::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 15%;
	width: 70%;
	height: 2px;
	background: currentColor;
}
.wcp-dialog__close::before { transform: rotate( 45deg ); }
.wcp-dialog__close::after  { transform: rotate( -45deg ); }

/* Voorraad (was Bootstrap .badge). */
.wcp-product-stock {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	flex-wrap: wrap;
}
/* Vinkje + vet label, scheidingsstreep, dan de verzendtekst (geen gevulde pill). */
.wcp-product-stock__label {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-size: var(--wcp-font-size-sm);
	font-weight: var(--wcp-font-weight-bold);
	color: var(--wcp-color-dark);
}
.wcp-product-stock__label > i { font-size: 1.15em; }
/* WC zet .woocommerce div.product .stock op olijfgroen (#958e09); zelfde selector, onze kleur. */
.woocommerce div.product .stock.wcp-product-stock__label { color: var(--wcp-color-dark); }
.woocommerce div.product .stock.wcp-product-stock__label.is-in-stock { color: var(--wcp-color-success); }
.woocommerce div.product .stock.wcp-product-stock__label.is-out-of-stock { color: var(--wcp-color-danger); }
.wcp-product-stock__text {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	color: var(--wcp-color-text);
	font-size: var(--wcp-font-size-sm);
}
.wcp-product-stock__text::before {
	content: "";
	width: 1px;
	height: 1.1em;
	background: var(--wcp-color-border);
}

/* ── P2: demo-pariteit productpagina ── */

/* heading-meta: rating + SKU onder de titel */
.wcp-product-heading { margin-bottom: 1rem; }
.wcp-product-heading__title { margin: 0 0 0.25rem; }
.wcp-product-heading__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
	font-size: var(--wcp-font-size-sm);
}
.wcp-product-heading__rating {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	text-decoration: none;
	color: var(--wcp-color-primary);
}
.wcp-product-heading__sku { color: var(--wcp-color-muted); }

/* add-to-cart met carticoon (demo-stijl) */
.single_add_to_cart_button:before {
	content: '';
	display: inline-block;
	width: 1.1em;
	height: 1.1em;
	margin-right: 0.5rem;
	vertical-align: -0.15em;
	mask-image: var(--wcp-icon-cart); /* zelfde icoon als de header */
	mask-size: contain;
	mask-repeat: no-repeat;
	mask-position: center;
	background-color: currentColor;
}

/* prijs-typografie + suffix */
.summary .price {
	font-size: 1.75rem;
	font-weight: var(--wcp-font-weight-bold);
	color: var(--wcp-color-dark);
}
.summary .price .woocommerce-price-suffix {
	font-size: var(--wcp-font-size-sm);
	font-weight: 400;
	color: var(--wcp-color-muted);
}

/* cart-rij: qty naast de knop */
form.cart {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 0.75rem;
}
/* WooCommerce core geeft form.cart een clearfix (.woocommerce div.product form.cart::before/::after
   { content:" "; display:table }, specificiteit 0,3,3) voor de oude float-layout; als flex-item telt
   zo'n pseudo-element gewoon mee als extra rij-item (display:table wordt op een flex-kind geblokt naar
   block, maar blijft wél een doos met een eigen gap ernaast) — de koopknop bleef daardoor steeds precies
   één gap-breedte binnen de rand hangen i.p.v.'m te raken. In een flex-rij is clearfix zinloos (geen
   floats meer om te clearen), dus hier uitzetten. Zelfde specificiteit als de core-regel nodig (en
   !important, voor de zekerheid ongeacht laadvolgorde). */
.woocommerce div.product form.cart::before,
.woocommerce div.product form.cart::after {
	content: none !important;
	display: none !important;
}
form.variations_form .woocommerce-variation { width: 100%; }
form.variations_form table.variations { width: 100%; }
/* Het variatie-select had nog geen enkele eigen styling — kale browser-default (rand
   #767676, vierkante hoeken, geen padding), terwijl WooCommerce core alleen het pijltje
   al vervangt. Zelfde specificiteit als die kern-regel nodig om het pijltje te overschrijven
   (.woocommerce div.product form.cart .variations select), anders wint de kern-regel op
   brontekst-volgorde. Eigen pijltje in dezelfde stijl als .wcp-select elders op de site. */
.woocommerce div.product form.cart .variations select,
.woocommerce div.product form.variations_form table.variations select {
	/* WooCommerce core geeft de select zelf min-width:75%/max-width:100%/display:inline-block
	   + margin-right:1em (ruimte voor een linkje ernaast, hier niet gebruikt) — de select bleef
	   daardoor letterlijk op 75% steken. Met de nieuwe rand/achtergrond hierboven viel dat
	   meteen op als een kaartje dat de rij niet vult, i.p.v. onopvallend bij de kale variant. */
	display: block;
	width: 100%;
	min-width: 100%;
	margin-right: 0;
	height: 2.875rem; /* = hoeveelheid-stepper en koopknop eronder */
	padding: 0 2.75rem 0 1rem;
	font-size: 1rem;
	border: 1px solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	background-color: var(--wcp-color-surface);
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23101820' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 1rem center;
	background-size: 0.75rem;
	transition: border-color 0.15s ease-in-out;
}
.woocommerce div.product form.cart .variations select:hover,
.woocommerce div.product form.variations_form table.variations select:hover {
	border-color: var(--wcp-color-dark);
}
.woocommerce div.product form.cart .variations select:focus-visible,
.woocommerce div.product form.variations_form table.variations select:focus-visible {
	outline: 2px solid var(--wcp-color-primary);
	outline-offset: 1px;
	border-color: var(--wcp-color-primary);
}
/* .reset_variations (WooCommerce core) staat altijd met visibility:hidden in de flow, zodat
   de lay-out niet springt zodra 'm zichtbaar wordt — dat ging op zolang het select naast dit
   linkje op dezelfde regel stond (display:inline-block, 75% breed). Nu het select block/100%
   breed is (hierboven), duwt display:inline het linkje naar zijn eigen regel: een kale,~60px
   lege strook tussen select en de aantal/knop-rij. Hier volledig uit de flow. */
.woocommerce div.product form.cart .reset_variations,
.woocommerce div.product form.variations_form .reset_variations {
	display: none !important; /* WooCommerce zet na een keuze een inline display */
}
/* De wrapper om prijs, staffel en knoppenrij is een flex-kind van het formulier en kromp naar
   zijn inhoud (318 van 528px): het staffelblok van wcp-bulk-prices werd nooit breder dan de
   knoppen, ook niet met flex: 1 1 100%. */
form.variations_form .single_variation_wrap { width: 100%; }
/* De koopknop vult de rest van de rij naast de aantalstepper; op zijn inhoudsbreedte bleef er
   (zeker op mobiel) rechts een gat over en las de rij als twee losse elementen. */
form.cart .single_add_to_cart_button {
	flex: 1 1 auto;
	justify-content: center;
}
/* Zelfde rij-opmaak als form.cart bij een enkelvoudig product: prijs en staffelblok op een eigen
   regel, aantal en knop ernaast met dezelfde tussenruimte. Als gewoon blok plakte de knoppenrij
   tegen het staffelblok van wcp-bulk-prices. */
form.variations_form .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 0.75rem;
}
form.variations_form .woocommerce-variation-add-to-cart > .woocommerce-variation { flex: 1 1 100%; }
/* De kopprijs (.wcp-product-price) toont de gekozen variatie (wcp-variations.js); het losse
   WooCommerce-prijsblok onder de swatches was daarmee de tweede prijs boven de staffel en de knop.
   Beschikbaarheid en omschrijving van de variatie blijven staan. */
form.variations_form .woocommerce-variation-price { display: none; }

/* gallery: badges-zone + zoom + flexslider-pijlen/thumbs */
.woocommerce-gallery-wrapper { position: relative; }
.woocommerce-gallery-wrapper .badges {
	position: absolute;
	left: 0.75rem;
	top: 0.75rem;
	z-index: 5;
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
	align-items: flex-start;
}
.woocommerce-product-gallery { position: relative; }
/* Lightbox-knop. Met theme-support 'wc-product-gallery-lightbox' + '-zoom' zet WooCommerce's
   single-product.js deze knop zelf in .woocommerce-product-gallery: emoji-fallback in een span,
   loep getekend met ::before/::after in hard zwart, positie top/right .5em bij font-size 2em,
   allemaal op .woocommerce div.product div.images … (0,4,0). Zonder lightbox-support rendert
   gallery.php dezelfde knop met een svg-icoon in .gallery-inner. Eén opmaak voor beide, op
   WooCommerce's specificiteit zodat positie en kleur ook voor zijn knop gelden. */
.woocommerce-product-gallery__trigger,
.woocommerce div.product div.images .woocommerce-product-gallery__trigger {
	position: absolute;
	right: 0.75rem;
	top: 0.75rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	background-color: #fff;
	border-radius: 50%;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
	color: var(--wcp-color-dark);
	font-size: 1rem;
	text-decoration: none;
}
.woocommerce-product-gallery__trigger > span { display: none; } /* WooCommerce's emoji-fallback */
.woocommerce div.product div.images .woocommerce-product-gallery__trigger::before { border-color: currentColor; }
.woocommerce div.product div.images .woocommerce-product-gallery__trigger::after { background: currentColor; }
.woocommerce-product-gallery .flex-direction-nav {
	list-style: none;
	margin: 0;
	padding: 0;
}
.woocommerce-product-gallery .flex-direction-nav a {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 5;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	background-color: #fff;
	border-radius: 50%;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
	color: var(--wcp-color-dark);
	font-size: 0;
	text-decoration: none;
}
.woocommerce-product-gallery .flex-direction-nav a:before {
	content: '';
	width: 1rem;
	height: 1rem;
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E");
	mask-size: contain;
	mask-repeat: no-repeat;
	mask-position: center;
	background-color: currentColor;
}
.woocommerce-product-gallery .flex-direction-nav .flex-next { right: 0.75rem; }
.woocommerce-product-gallery .flex-direction-nav .flex-prev { left: 0.75rem; }
.woocommerce-product-gallery .flex-direction-nav .flex-prev:before { transform: rotate(180deg); }
/* Thema's leggen de pijlenbalk soms over het hele beeld (om de pijlen te plaatsen): dan alleen de pijlen klikbaar, zodat
   een videospeler eronder bedienbaar blijft. */
.woocommerce-product-gallery .flex-direction-nav { pointer-events: none; }
.woocommerce-product-gallery .flex-direction-nav a { pointer-events: auto; }

/* Video zonder cookie-toestemming (Cookiebot, marketing): uitleg over de poster i.p.v. een lege speler (wcp-ui.js). */
.video__consent {
	position: absolute;
	inset: 0;
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	padding: 1.25rem;
	background: rgba(17, 24, 39, 0.84);
	color: #fff;
	font-size: var(--wcp-font-size-sm, 0.875rem);
	line-height: 1.45;
	text-align: center;
}
.video__consent p { max-width: 22rem; margin: 0; }
.video__consent-accept {
	padding: 0.6rem 1.1rem;
	border: 0;
	border-radius: 999px;
	background: var(--wcp-color-primary, #0a93d1);
	color: #fff;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
}
.video__consent a { color: #fff; text-decoration: underline; }

/* Video in de lightbox (PhotoSwipe, wcp-gallery.js): 16:9 binnen het scherm, zelfde facade als in de galerij. */
.wcp-pswp-video {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	padding: 3.5rem 1rem;
	box-sizing: border-box;
}
.wcp-pswp-video .video__frame {
	position: relative;
	width: min(100%, calc((100vh - 7rem) * 16 / 9));
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border-radius: 0.5rem;
	background: #000;
}
.wcp-pswp-video .video__poster { width: 100%; height: 100%; object-fit: cover; }
.wcp-pswp-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
/* Thumbs als schuifbare strook (#86): bij veel beelden (foto's + video-thumbs) geen tweede rij of
   overloop, maar horizontaal scrollen met scroll-snap en een verborgen scrollbalk. De actieve thumb
   wordt door wcp-gallery.js in beeld geschoven. Maten/kleuren van de thumbs zijn themawerk. */
.woocommerce-product-gallery .flex-control-thumbs {
	list-style: none;
	margin: 0.75rem 0 0;
	padding: 0;
	display: flex;
	gap: 0.5rem;
}
/* Op de specificiteit van WooCommerce-kern (`.woocommerce div.product div.images .flex-control-thumbs`
   zet overflow: hidden), anders is de strook niet met de hand te schuiven. */
.woocommerce div.product div.images .flex-control-thumbs,
.woocommerce-product-gallery ol.flex-control-thumbs {
	overflow-x: auto;
	overflow-y: hidden;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}
.woocommerce-product-gallery .flex-control-thumbs::-webkit-scrollbar { display: none; }
.woocommerce div.product div.images .flex-control-thumbs li {
	flex: 0 0 auto;
	width: auto;
	float: none;
	scroll-snap-align: start;
}
.woocommerce-product-gallery .flex-control-thumbs img {
	width: 4rem;
	height: 4rem;
	object-fit: cover;
	border: 1px solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	cursor: pointer;
	opacity: 0.6;
	transition: opacity 0.2s ease-in-out;
}
.woocommerce-product-gallery .flex-control-thumbs img:hover,
.woocommerce-product-gallery .flex-control-thumbs img.flex-active { opacity: 1; }

/* 2-koloms productlayout (gallery ~48% / summary ~48%) — expliciet, los van WC-theme-CSS */
.single-product div.product {
	display: block;
}
.single-product div.product .woocommerce-gallery-wrapper {
	float: left;
	width: 48%;
}
.single-product div.product .entry-summary,
.single-product div.product .summary {
	float: right;
	width: 48%;
}
.single-product div.product .woocommerce-product-gallery { width: 100%; }

/* Meescrollende galerijkolom (wcp_single_product_sticky_gallery): op desktop een raster met dezelfde
   48/48-verdeling i.p.v. floats, zodat de galerijkolom tot de onderkant van de samenvatting loopt en
   .gallery-inner daarbinnen sticky kan staan. wcp-sticky-sidebar.js zet .is-sticky en stelt `top` bij
   (begrensd tussen "onderkant op de onderkant van het scherm" en --wcp-gallery-sticky-top). */
@media ( min-width: 62rem ) {
	.single-product div.product:has(> .woocommerce-gallery-wrapper--sticky) {
		display: grid;
		grid-template-columns: 48% 48%;
		justify-content: space-between;
		align-items: start;
		gap: 0; /* kolomruimte via space-between; geen rijruimte: de secties eronder hebben hun eigen marge */
	}
	.single-product div.product:has(> .woocommerce-gallery-wrapper--sticky)::before,
	.single-product div.product:has(> .woocommerce-gallery-wrapper--sticky)::after { display: none; } /* clearfix zou een rastercel innemen */
	.single-product div.product:has(> .woocommerce-gallery-wrapper--sticky) > * { grid-column: 1 / -1; }
	.single-product div.product > .woocommerce-gallery-wrapper--sticky {
		grid-column: 1;
		grid-row: 1;
		align-self: stretch;
		float: none;
		width: auto;
	}
	.single-product div.product:has(> .woocommerce-gallery-wrapper--sticky) > .summary {
		grid-column: 2;
		grid-row: 1;
		float: none;
		width: auto;
		margin-bottom: 0; /* WC's 2em telde in het raster mee als extra rijhoogte */
	}
	.woocommerce-gallery-wrapper--sticky > .gallery-inner.is-sticky {
		position: sticky;
		top: var(--wcp-gallery-sticky-top, var(--wcp-sidebar-sticky-top, 1.5rem));
	}
}
.single-product div.product .woocommerce-product-gallery img {
	width: 100%;
	height: auto;
	border-radius: var(--wcp-radius);
}
@media (max-width: 47.99rem) {
	.single-product div.product .woocommerce-gallery-wrapper,
	.single-product div.product .entry-summary,
	.single-product div.product .summary {
		float: none;
		width: 100%;
	}
}

/* Galerij + samenvatting in een eigen rij (wcp_single_product_main_wrapper / _sticky_summary, #84): het raster zit op
   .wcp-product__main i.p.v. op div.product, zodat alles daaronder vanzelf de volle breedte heeft en een sticky
   samenvatting alleen binnen deze rij plakt. */
.wcp-product__main::after { content: ""; display: table; clear: both; } /* mobiel: floats (zie hierboven) insluiten */
@media ( min-width: 48rem ) {
	.wcp-product__main {
		display: grid;
		grid-template-columns: 48% 48%;
		justify-content: space-between;
		align-items: start;
		margin-bottom: 2em;
	}
	.wcp-product__main::after { display: none; }
	.single-product div.product .wcp-product__main > .woocommerce-gallery-wrapper,
	.single-product div.product .wcp-product__main > .summary {
		float: none;
		width: auto;
		margin-bottom: 0;
	}
	.wcp-product__main > .woocommerce-gallery-wrapper { grid-column: 1; }
	.wcp-product__main > .summary { grid-column: 2; }
	.wcp-product__main > .woocommerce-gallery-wrapper--sticky { align-self: stretch; }
	.wcp-product__main--sticky-summary > .summary {
		position: sticky;
		top: var(--wcp-summary-sticky-top, var(--wcp-sidebar-sticky-top, 1.5rem));
	}
}

/* WC-layout-css zet div.images op 48% + float — binnen onze wrapper moet de gallery
   de volle wrapper-breedte pakken (anders 48% × 48% = kwart-breedte foto's). */
.single-product div.product .woocommerce-gallery-wrapper div.images,
.single-product div.product .woocommerce-gallery-wrapper .woocommerce-product-gallery {
	width: 100% !important;
	float: none !important;
	margin-bottom: 0;
}

/* ── Attribuut-switch add-on (wcp-variation-switch): "Productinhoud"-knoppenswitch tussen
   losse producten met hetzelfde attribuut (bijv. formaat). De addon levert alleen HTML +
   een SCSS-partial die Bootstrap-mixins gebruikt (@include button-outline-variant) — die
   compileert niet mee in v2 (Bootstrap-vrij, geen SCSS-build meer), dus zonder deze regels
   renderen de knoppen volledig kaal. Zelfde pill-look/interactiepatroon als de rest van v2
   (border-radius var(--wcp-radius), actieve status gevuld met de merkkleur — vgl. de actieve
   checkout-stap), i.p.v. de Bootstrap-outline-stijl van de addon zelf. ── */
.attribute-variations { margin: 0 0 1rem; }
.attribute-variations label {
	display: block;
	margin: 0 0 0.5rem;
	font-weight: var(--wcp-font-weight-medium);
	font-size: var(--wcp-font-size-sm);
	color: var(--wcp-color-dark);
}
.attribute-variations .variations {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}
.attribute-variations .variations a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.35rem 0.75rem;
	border: var(--wcp-border-width) solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	font-size: var(--wcp-font-size-sm);
	font-weight: var(--wcp-font-weight-regular);
	color: var(--wcp-color-dark);
	text-decoration: none;
	line-height: 1.4;
	transition: border-color 0.15s ease, color 0.15s ease, background-color 0.15s ease;
}
.attribute-variations .variations a:hover {
	border-color: var(--wcp-color-dark);
}
/* Zelfde look als de variatie-swatches en de v2-add-on (.wcp-btn.is-active): donkere actieve staat (#95). */
.attribute-variations .variations a.active {
	background: var(--wcp-color-dark);
	border-color: var(--wcp-color-dark);
	color: var(--wcp-color-surface);
}

/* ── Extra accessoires add-on (wcp-additional-accessories): checkbox/radio dezelfde look als de
   checkout (zie cart.css) i.p.v. de kale Bootstrap .form-check-input, die zonder Bootstrap
   onbestyled blijft (net als de attribuut-switch hierboven levert deze addon alleen CSS voor
   de .images-variant-layout, niet voor het vakje/rondje zelf). ── */
.additional-accessories .form-check { display: flex; align-items: center; gap: 0.6rem; margin: 0 0 0.5rem; }
.additional-accessories .images .form-check { margin: 0; }
.additional-accessories .form-check-input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	display: inline-block;
	width: 1.35rem;
	height: 1.35rem;
	margin: 0;
	border: var(--wcp-border-width) solid var(--wcp-checkbox-border, var(--wcp-color-border));
	border-radius: 4px;
	background: #fff;
	cursor: pointer;
	flex-shrink: 0;
	position: relative;
}
.additional-accessories .images .form-check-input[type="checkbox"] { position: absolute; }
.additional-accessories .form-check-input[type="checkbox"]:checked {
	background: var(--wcp-color-primary);
	border-color: var(--wcp-color-primary);
}
.additional-accessories .form-check-input[type="checkbox"]:checked::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 47%;
	width: 0.3rem;
	height: 0.6rem;
	border: solid #fff;
	border-width: 0 2px 2px 0;
	transform: translate(-50%, -55%) rotate(45deg);
}
.additional-accessories .form-check-input[type="radio"] {
	appearance: none;
	-webkit-appearance: none;
	width: 1.2rem;
	height: 1.2rem;
	margin: 0;
	border: var(--wcp-border-width) solid var(--wcp-color-border);
	border-radius: 50%;
	background: #fff;
	cursor: pointer;
	flex-shrink: 0;
}
.additional-accessories .images .form-check-input[type="radio"] { position: absolute; }
.additional-accessories .form-check-input[type="radio"]:checked {
	border-color: var(--wcp-color-primary);
	background: var(--wcp-color-primary);
	box-shadow: inset 0 0 0 3px #fff;
}
.additional-accessories .form-check-input:focus-visible {
	outline: 2px solid var(--wcp-color-primary);
	outline-offset: 2px;
}
.additional-accessories .form-check-input:disabled { cursor: not-allowed; opacity: 0.5; }
.additional-accessories .form-check-label { cursor: pointer; }

/* Gegroepeerd product: basisopmaak van de lijst met uitvoeringen (#88, #93). WooCommerce zet een
   tabel met celranden en padding; hier rijen met een dunne lijn, aantal links op inhoudsbreedte,
   naam als keuzeregel (geen hyperlink-look) en prijs rechts op één regel. */
.woocommerce div.product form.cart .group_table {
	width: 100%;
	margin: 0 0 1rem;
	border: 0;
	border-collapse: collapse;
}
.woocommerce div.product form.cart .group_table tr { border-bottom: 1px solid var(--wcp-color-border); }
.woocommerce div.product form.cart .group_table tr:last-child { border-bottom: 0; }
.woocommerce div.product form.cart .group_table td {
	padding: 0.6rem 0;
	border: 0;
	vertical-align: middle;
	line-height: 1.4;
}
.woocommerce div.product form.cart .group_table td.woocommerce-grouped-product-list-item__quantity {
	width: 1%;
	white-space: nowrap;
	padding-right: 1rem;
}
.woocommerce div.product form.cart .group_table td.woocommerce-grouped-product-list-item__quantity .quantity { margin: 0; }
.woocommerce div.product form.cart .group_table td.woocommerce-grouped-product-list-item__label {
	width: auto;
	padding-right: 1rem;
}
.woocommerce div.product form.cart .group_table td.woocommerce-grouped-product-list-item__label label {
	display: block;
	margin: 0;
	font-weight: var(--wcp-font-weight-semibold);
}
.woocommerce div.product form.cart .group_table td.woocommerce-grouped-product-list-item__price {
	width: 1%;
	text-align: right;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
.woocommerce div.product form.cart .group_table td.woocommerce-grouped-product-list-item__price .price { display: block; }
.woocommerce div.product form.cart .group_table td.woocommerce-grouped-product-list-item__price del { margin-right: 0.25rem; color: var(--wcp-color-muted); }
.woocommerce div.product form.cart .group_table td.woocommerce-grouped-product-list-item__price .stock { font-size: var(--wcp-font-size-sm); margin: 0; }
.woocommerce-grouped-product-list-item__label a,
.woocommerce-grouped-product-list-item__short_label a {
	color: inherit;
	text-decoration: none;
	font-weight: var(--wcp-font-weight-semibold);
}
.woocommerce-grouped-product-list-item__label a:hover,
.woocommerce-grouped-product-list-item__short_label a:hover { color: var(--wcp-color-primary); }

/* ── "In this bundle" (WooCommerce Product Bundles, optioneel) ── */
form.cart.bundle_form { display: block; }
/* In de stijl van de rest van WC+ (winkelwagen, afrekenoverzicht): afgeronde kaart, rustige kop, fototegels. */
.wcp-bundle { border: var(--wcp-border-width) solid var(--wcp-color-border); border-radius: var(--wcp-radius); background: var(--wcp-color-surface); margin-bottom: 1.375rem; overflow: hidden; }
.wcp-bundle__head {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 1rem;
	flex-wrap: wrap;
	padding: 0.75rem 1rem;
	border-bottom: var(--wcp-border-width) solid var(--wcp-color-border);
}
.wcp-bundle__label { font-size: 1rem; font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
.wcp-bundle__meta { font-size: var(--wcp-font-size-sm); color: var(--wcp-color-muted); }
/* Specificiteit (0,3,1) i.p.v. kaal .bundled_product (0,1,0): moet minstens .single-product
   div.product (0,2,1, regel 614 hierboven) verslaan — .bundled_product draagt ook class
   "product" (WooCommerce Product Bundles' eigen markup), dus die regel matcht 'm ook en zette
   'm zonder dit terug naar display:block. */
.single-product div.product.bundled_product {
	display: grid;
	grid-template-columns: 3.6rem minmax(0, 1fr);
	gap: 0.85rem;
	align-items: center;
	padding: 0.75rem 1rem;
}
.bundled_product + .bundled_product { border-top: var(--wcp-border-width) solid var(--wcp-color-border); }
/* Zelfde specificiteitsprobleem als hierboven (0,3,1 vs. kaal 0,1,0), maar dan voor WooCommerce's eigen
   .woocommerce div.product div.images { width: 48%; float: left } (woocommerce-layout.css, specificiteit
   0,3,2 — .images is de gedeelde class die de plugin op .bundled_product_images meegeeft). Zonder deze
   hogere specificiteit (0,4,1) won díe regel alsnog: de "width: 5.5rem" hieronder werd dan zelf weer
   herschaald tot 48% van zijn eigen grid-kolom (~2,6rem) — vandaar dat #120/#122 de thumb telkens weer
   "te klein" vonden na een bump: het echte probleem was nooit de maat zelf, maar dat 'm nooit toekwam. */
.single-product div.product.bundled_product .bundled_product_images { margin: 0; float: none; width: 3.6rem; height: 3.6rem; min-width: 0; overflow: hidden; border: 1px solid var(--wcp-color-border); border-radius: calc(var(--wcp-radius) * 3 / 2.75); background: var(--wcp-color-surface); }
.bundled_product .bundled_product_images figure { margin: 0; width: 100%; height: 100%; }
.bundled_product .bundled_product_images img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: 100%;
	padding: 0.3rem;
	box-sizing: border-box;
	object-fit: contain; /* tegel zoals in winkelwagen/mini-cart: product heel in beeld */
	background: var(--wcp-color-surface);
}
/* De plugin zet de "View"-link ín de titel (h4 > titel-span + link-span). Met display: contents
   op de h4 worden titel, link, korte tekst en voorraad rasterkinderen van .details: tekst links,
   link rechts over alle rijen. */
.bundled_product .details { float: none; width: auto; padding: 0; min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 1rem; align-items: center; }
.bundled_product .bundled_product_title { display: contents; font-size: 0.95rem; font-weight: var(--wcp-font-weight-normal, 400); line-height: 1.4; color: var(--wcp-color-dark); }
.bundled_product .bundled_product_title .wcp-bundle__size,
.bundled_product .bundled_product_title .item_qty,
.bundled_product .bundled_product_title .item_suffix { font-style: normal; color: var(--wcp-color-muted); }
.bundled_product .bundled_product_title_inner { grid-column: 1; }
.bundled_product .bundled_product_title_link { grid-column: 2; grid-row: 1 / span 3; }
.bundled_product .bundled_product_excerpt { grid-column: 1; }
.bundled_product .bundled_product_excerpt p {
	margin: 0.25rem 0 0;
	font-size: 0.9375rem;
	color: var(--wcp-color-muted);
	overflow: hidden;
	display: -webkit-box;
	-webkit-line-clamp: 1;
	-webkit-box-orient: vertical;
}
.bundled_product .cart { grid-column: 1; }
.bundled_product p.stock { margin: 0.25rem 0 0; font-size: var(--wcp-font-size-sm); }
.bundled_product p.stock.in-stock { display: none; } /* bundelvoorraad staat al onder de knop; alleen afwijkingen tonen */
.bundled_product .quantity_hidden { display: none !important; }
.bundled_product .wcp-bundle__view { display: inline-flex; align-items: center; gap: 0.3rem; font-size: var(--wcp-font-size-sm); color: var(--wcp-color-muted); text-decoration: none; white-space: nowrap; }
.bundled_product .wcp-bundle__view::after { content: ''; width: 0.4em; height: 0.4em; border-right: 1.5px solid currentColor; border-top: 1.5px solid currentColor; transform: rotate(45deg); }
.bundled_product .wcp-bundle__view:hover { color: var(--wcp-color-primary); }
/* Prijs per onderdeel: bedrag vet, oude prijs gedempt doorgestreept (zoals in de winkelwagen). */
.bundled_product .bundled_item_cart_details .price { font-size: var(--wcp-font-size-sm); font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
.bundled_product .bundled_item_cart_details .price del { margin-right: 0.35rem; color: var(--wcp-color-muted); font-weight: 400; }
.bundled_product .bundled_item_cart_details .price ins { text-decoration: none; background: none; }
/* Optioneel onderdeel: "Toevoegen voor € 10,57" als nette checkbox-regel in de merkkleur. */
.bundled_product label.bundled_product_optional_checkbox { display: inline-flex; align-items: center; gap: 0.45rem; margin: 0.25rem 0 0; font-size: var(--wcp-font-size-sm); color: var(--wcp-color-text); cursor: pointer; }
.bundled_product label.bundled_product_optional_checkbox input[type="checkbox"] { width: 1.05rem; height: 1.05rem; margin: 0; accent-color: var(--wcp-color-primary); }
.bundled_product label.bundled_product_optional_checkbox { flex-wrap: wrap; }
/* Prijs op één regel naast "Toevoegen voor" (oud doorgestreept, nieuw vet): de prijs-HTML heeft een <br>
   tussen oude en nieuwe prijs en was een blok — dan hing de checkbox scheef naast twee regels. */
.bundled_product label.bundled_product_optional_checkbox .price { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0 0.35rem; font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
.bundled_product label.bundled_product_optional_checkbox .price br { display: none; }
.bundled_product label.bundled_product_optional_checkbox .price del { color: var(--wcp-color-muted); font-weight: 400; }
.bundled_product label.bundled_product_optional_checkbox .price ins { text-decoration: none; background: none; }
.bundled_product label.bundled_product_optional_checkbox .price .woocommerce-price-suffix { font-weight: 400; color: var(--wcp-color-muted); }
/* Totaal van Product Bundles bij de knop alleen als het meeverandert (optionele onderdelen); anders staat de
   prijs al in de samenvatting. */
form.bundle_form:not(:has(.bundled_product_optional_checkbox, table.variations, .bundled_qty:not([type="hidden"]))) .bundle_wrap .bundle_price { display: none !important; } /* plugin zet inline display:block */
/* Keuze nog niet compleet (knop .disabled): geen "0,00" als totaal, alleen de melding — als rustige WC+-regel. */
form.bundle_form .bundle_wrap:has(.bundle_add_to_cart_button.disabled) .bundle_price { display: none !important; }
form.bundle_form .bundle_error .woocommerce-info {
	display: block;
	margin: 0;
	padding: 0.65rem 0.85rem;
	border: 0;
	border-radius: var(--wcp-radius);
	background: var(--wcp-color-light);
	color: var(--wcp-color-text);
	font-size: var(--wcp-font-size-sm);
}
form.bundle_form .bundle_error .woocommerce-info::before { content: none; }
form.bundle_form .bundle_error ul { margin: 0; padding: 0; list-style: none; }
form.bundle_form .bundle_error .msg-source { font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
/* Variatiekeuze binnen een bundelonderdeel: label boven de keuze (zoals bij het samengestelde product). */
.bundled_product .cart table.variations,
.bundled_product .cart table.variations :is(tbody, tr, th, td) { display: block; width: auto; padding: 0; border: 0; background: none; }
.bundled_product .cart table.variations { margin: 0.4rem 0 0; }
.bundled_product .cart table.variations tr + tr { margin-top: 0.6rem; }
.bundled_product .cart table.variations .label { margin-bottom: 0.3rem; text-align: left; font-size: var(--wcp-font-size-sm); font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
.bundled_product .cart table.variations .label label { margin: 0; }
.bundled_product .cart table.variations abbr.required { border: 0; text-decoration: none; color: var(--wcp-color-danger); }
.single-product div.product.bundled_product:has(table.variations) { align-items: start; }
.bundled_product:has(table.variations) .bundled_product_title_link { align-self: start; }
form.bundle_form .bundle_wrap .bundle_price p.price { font-size: 1.35rem; font-weight: var(--wcp-font-weight-bold); color: var(--wcp-color-dark); }
form.bundle_form .bundle_wrap .bundle_price p.price del { margin-right: 0.4rem; color: var(--wcp-color-muted); font-size: 1rem; font-weight: 400; }
form.bundle_form .bundle_wrap .bundle_price p.price ins { text-decoration: none; background: none; }
.bundle_data .additional-accessories { margin-bottom: 0.75rem; } /* het bundelformulier is geen flex-rij, dus geen gap */
.bundle_wrap { display: flex; flex-direction: column; gap: 0.75rem; }
form.bundle_form .bundle_wrap .bundle_price p.price { margin: 0; }
.bundle_wrap .bundle_error:empty,
.bundle_wrap .bundle_availability:empty,
.bundle_wrap .bundle_price:empty { display: none; }
.bundle_wrap .bundle_button { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: stretch; }

/* ── Samengesteld product (WooCommerce Composite Products, optioneel) ──
   In de stijl van de bundel en de rest van WC+: per onderdeel een kaart met genummerde kop (zoals de stappen
   van de afrekenpagina), keuzelijst als WC+-veld, gekozen product als regel met fototegel. De dubbele titel
   (aria-kopie) en de labels "Beschikbare opties"/"Jouw keuze" alleen voor screenreaders. */
form.cart.composite_form { display: block; } /* geen flex-rij met gap (dubbele ruimte tussen de kaarten), zoals de bundel */
form.composite_form { counter-reset: wcp-component; }
form.composite_form .composite_component {
	counter-increment: wcp-component;
	box-sizing: border-box;
	width: 100%;
	float: none;
	margin: 0 0 0.875rem;
	padding: 1rem;
	border: var(--wcp-border-width) solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	background: var(--wcp-color-surface);
}
form.composite_form .component_title_wrapper .component_title {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	margin: 0 0 0.75rem;
	font-size: 1rem;
	font-weight: var(--wcp-font-weight-semibold, 600);
	line-height: 1.3;
	color: var(--wcp-color-dark);
}
form.composite_form .component_title_wrapper .component_title::before {
	content: counter(wcp-component);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: none;
	width: 1.6rem;
	height: 1.6rem;
	border-radius: 50%;
	background: var(--wcp-color-light);
	color: var(--wcp-color-primary);
	font-size: 0.8125rem;
	font-weight: var(--wcp-font-weight-bold);
	transition: background-color 0.2s, color 0.2s;
}
/* Onderdeel gekozen (en bij een variabel product ook de variatie): het nummer wordt een vinkje in de merkkleur,
   zoals een afgeronde stap. */
form.composite_form .composite_component:is(:has(.component_option_thumbnail.selected), :has(.component_option_radio_button.selected:not([data-val=""])), :has(select.component_options_select option:checked:not([value=""]))):not(:has(table.variations select option:checked[value=""])) .component_title_wrapper .component_title::before {
	content: '\2713';
	background: var(--wcp-color-primary);
	color: var(--wcp-color-surface);
}
form.composite_form .composite_component { position: relative; }
form.composite_form .wcp-component__tag {
	position: absolute;
	top: 1.15rem;
	right: 1rem;
	margin: 0;
	padding: 0.1rem 0.5rem;
	border-radius: 999px;
	background: var(--wcp-color-light);
	color: var(--wcp-color-muted);
	font-size: 0.75rem;
	font-weight: var(--wcp-font-weight-medium, 500);
	line-height: 1.5;
}
form.composite_form .composite_component:has(.wcp-component__tag) .component_title { padding-right: 5.5rem; }
form.composite_form .component_title .aria_title,
form.composite_form .component_section_title:not(.composited_product_title, .clear_component_options_wrapper) {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}
form.composite_form .component_description_wrapper:empty { display: none; }
form.composite_form .component_description { margin: -0.4rem 0 0.75rem; color: var(--wcp-color-muted); font-size: var(--wcp-font-size-sm); }
form.composite_form select.component_options_select {
	width: 100%;
	min-height: 2.75rem;
	padding: 0.5rem 0.85rem;
	border: 1px solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	background-color: var(--wcp-color-surface);
	color: var(--wcp-color-text);
	font: inherit;
}
form.composite_form select.component_options_select:focus-visible { border-color: var(--wcp-color-primary); outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--wcp-color-primary) 20%, transparent); }
/* Gekozen product: fototegel links, naam + prijs ernaast. */
form.composite_form .component_content { margin-top: 0.75rem; }
form.composite_form .component_content .summary_content {
	display: grid;
	grid-template-columns: 3.6rem minmax(0, 1fr);
	grid-template-rows: auto 1fr; /* de tegel (over twee rijen) rekt de titelrij niet op */
	gap: 0.15rem 0.85rem; /* het blok draagt ook class "product" en erfde daarmee de 2.5rem-gap van de productpagina */
	align-items: start; /* tegel bovenaan, ook naast een hoge variatietabel */
	float: none;
	width: auto;
	margin: 0;
}
form.composite_form .component_content .composited_product_title_wrapper { grid-column: 2; grid-row: 1; }
form.composite_form .component_content .composited_product_details_wrapper { display: contents; }
/* Specificiteit (0,5,3): WooCommerce' .woocommerce div.product div.images { width: 48%; float: left } (0,3,2)
   won anders — dan werd de tegel 48% van zijn eigen kolom (smal, hoog), zie ook de bundel hierboven. */
.woocommerce div.product form.composite_form .component_content div.composited_product_images,
form.composite_form .component_content .composited_product_images {
	grid-column: 1;
	grid-row: 1 / span 2;
	float: none;
	width: 3.6rem;
	height: 3.6rem;
	margin: 0;
	overflow: hidden;
	border: 1px solid var(--wcp-color-border);
	border-radius: calc(var(--wcp-radius) * 3 / 2.75);
	background: var(--wcp-color-surface);
}
form.composite_form .component_content .composited_product_images :is(figure, a) { display: block; width: 100%; height: 100%; margin: 0; }
form.composite_form .component_content .composited_product_images img { display: block; width: 100%; height: 100%; padding: 0.3rem; box-sizing: border-box; object-fit: contain; }
form.composite_form .component_content .composited_product_title { margin: 0; font-size: 0.95rem; font-weight: var(--wcp-font-weight-normal, 400); line-height: 1.35; color: var(--wcp-color-dark); }
form.composite_form .component_content .component_data { grid-column: 2; grid-row: 2; float: none; width: auto; padding: 0; }
form.composite_form .component_content .component_wrap { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0.75rem; }
form.composite_form .component_content .component_wrap .price { margin: 0; font-size: var(--wcp-font-size-sm); font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
form.composite_form .component_content .component_wrap .price del { margin-right: 0.35rem; color: var(--wcp-color-muted); font-weight: 400; }
form.composite_form .component_content .component_wrap .price ins { text-decoration: none; background: none; }
/* Vast aantal: de plugin verbergt het veld maar liet de knoppen staan (losse "– +"). */
form.composite_form .quantity.quantity_hidden { display: none !important; }
form.composite_form .component_content .reset_component_options,
form.composite_form .component_content .clear_component_options { display: inline-block; margin-top: 0.4rem; color: var(--wcp-color-muted); font-size: var(--wcp-font-size-sm); text-decoration: underline; text-underline-offset: 0.2em; }
form.composite_form .component_content .clear_component_options:hover { color: var(--wcp-color-primary); }
/* Omschrijving van het gekozen product: kort (twee regels), gedempt. */
form.composite_form .component_content :is(.composited_product_excerpt, .woocommerce-product-details__short-description, .component_data > p:not(.price):not(.stock)) {
	margin: 0.15rem 0 0.25rem;
	color: var(--wcp-color-muted);
	font-size: var(--wcp-font-size-sm);
	line-height: 1.45;
	overflow: hidden;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}
/* Bundel als onderdeel: de bundelkaart heeft zelf fototegels — geen losse tegel ernaast, volle breedte. */
form.composite_form .composite_component .wcp-bundle { margin: 0.75rem 0 0; }
form.composite_form .component_content .summary_content:has(.wcp-bundle) { grid-template-columns: minmax(0, 1fr); }
form.composite_form .component_content .summary_content:has(.wcp-bundle) .composited_product_images { display: none; }
form.composite_form .component_content .summary_content:has(.wcp-bundle) :is(.composited_product_title_wrapper, .component_data) { grid-column: 1; }
/* Keuzestijl "Thumbnails" (instelling per onderdeel): opties als fotokaarten in een raster, de hele kaart is
   klikbaar (de plugin luistert op de kaart; de losse "Kies"-knop is overbodig), gekozen kaart met rand en vinkje
   in de merkkleur. De kaart toont foto, naam en prijs al — de samenvatting eronder dan alleen nog voor wat er
   écht te kiezen valt (variatie, bundelinhoud, aantal, "Wis keuze"). */
form.composite_form .component_option_thumbnails_container {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(8.5rem, 1fr));
	gap: 0.6rem;
	margin: 0;
	padding: 0;
}
form.composite_form .component_option_thumbnails_container::before,
form.composite_form .component_option_thumbnails_container::after { content: none; } /* cp_clearfix: geen lege rastercellen */
form.composite_form .component_option_thumbnail_container { float: none; width: auto; margin: 0; padding: 0; }
form.composite_form .component_option_thumbnail_container.hidden { display: none; }
form.composite_form .component_option_thumbnail {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	height: 100%;
	box-sizing: border-box;
	padding: 0.5rem 0.5rem 0.65rem;
	border: 1px solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	background: var(--wcp-color-surface);
	cursor: pointer;
	transition: border-color 0.15s, box-shadow 0.15s, background-color 0.15s;
}
form.composite_form .component_option_thumbnail:hover { border-color: color-mix(in srgb, var(--wcp-color-primary) 45%, var(--wcp-color-border)); }
form.composite_form .component_option_thumbnail:focus-visible { outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--wcp-color-primary) 25%, transparent); }
form.composite_form .component_option_thumbnail.selected {
	border-color: var(--wcp-color-primary);
	box-shadow: inset 0 0 0 1px var(--wcp-color-primary);
	background: color-mix(in srgb, var(--wcp-color-primary) 4%, var(--wcp-color-surface));
}
form.composite_form .component_option_thumbnail.selected::after {
	content: '\2713';
	position: absolute;
	top: 0.4rem;
	right: 0.4rem;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 1.35rem;
	height: 1.35rem;
	border-radius: 50%;
	background: var(--wcp-color-primary);
	color: var(--wcp-color-surface);
	font-size: 0.75rem;
	font-weight: var(--wcp-font-weight-bold);
}
form.composite_form .component_option_thumbnail.disabled { opacity: 0.45; cursor: not-allowed; }
form.composite_form .component_option_thumbnail .thumbnail_image { margin: 0; float: none; width: auto; }
form.composite_form .component_option_thumbnail .thumbnail_image a { display: block; pointer-events: none; }
form.composite_form .component_option_thumbnail .thumbnail_image img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	padding: 0.25rem;
	box-sizing: border-box;
	object-fit: contain;
	border-radius: calc(var(--wcp-radius) * 3 / 4);
	background: var(--wcp-color-surface);
}
form.composite_form .component_option_thumbnail .thumbnail_description { display: flex; flex-direction: column; gap: 0.2rem; flex: 1; padding: 0 0.15rem; }
form.composite_form .component_option_thumbnail .thumbnail_title {
	font-size: var(--wcp-font-size-sm);
	line-height: 1.35;
	color: var(--wcp-color-dark);
	overflow: hidden;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}
form.composite_form .component_option_thumbnail .thumbnail_price { margin-top: auto; font-size: var(--wcp-font-size-sm); font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
form.composite_form .component_option_thumbnail .thumbnail_price del { margin-right: 0.3rem; color: var(--wcp-color-muted); font-weight: 400; }
form.composite_form .component_option_thumbnail .thumbnail_price ins { text-decoration: none; background: none; }
form.composite_form .component_option_thumbnail .thumbnail_price .woocommerce-price-suffix { display: none; } /* "incl. btw" staat bij het totaal */
form.composite_form .component_option_thumbnail .thumbnail_buttons { display: none; }
form.composite_form .options-style-thumbnails .component_content { margin-top: 0; }
form.composite_form .options-style-thumbnails .component_content .summary_content { display: block; }
form.composite_form .options-style-thumbnails .component_content :is(.composited_product_title, .composited_product_images, .component_wrap > .price, .composited_product_excerpt, .woocommerce-product-details__short-description, .component_data > p:not(.price):not(.stock), p.stock.in-stock) { display: none; }
form.composite_form .options-style-thumbnails .component_content :is(.wcp-bundle, table.variations, .wc-pao-addons-container, .quantity:not(.quantity_hidden)) { margin-top: 0.75rem; }
form.composite_form .options-style-thumbnails .component_content .clear_component_options_wrapper { margin: 0.6rem 0 0; text-align: right; }
form.composite_form .options-style-thumbnails .component_content .clear_component_options { margin: 0; }
form.composite_form .component_pagination:not(:has(.page-numbers li + li)) { display: none !important; }
/* Meer pagina's: alleen de paginanummers onder de kaarten, als kleine knopjes; "Pagina 1 van 2" en de kopie
   boven de kaarten niet. */
form.composite_form .component_pagination.top { display: none !important; }
form.composite_form .component_pagination { margin: 0.6rem 0 0; }
form.composite_form .component_pagination .woocommerce-result-count { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
form.composite_form .component_pagination .woocommerce-pagination { margin: 0; text-align: center; }
form.composite_form .component_pagination ul.page-numbers { display: inline-flex; gap: 0.3rem; margin: 0; padding: 0; border: 0; list-style: none; }
form.composite_form .component_pagination ul.page-numbers li { border: 0; float: none; }
form.composite_form .component_pagination .page-numbers :is(a, span).page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2rem;
	height: 2rem;
	padding: 0 0.5rem;
	border: 1px solid var(--wcp-color-border);
	border-radius: 999px;
	background: var(--wcp-color-surface);
	color: var(--wcp-color-text);
	font-size: var(--wcp-font-size-sm);
	line-height: 1;
	cursor: pointer;
}
form.composite_form .component_pagination .page-numbers .current { border-color: var(--wcp-color-primary); background: var(--wcp-color-primary); color: var(--wcp-color-surface); cursor: default; }
/* Mobiel: kaarten als compacte regels (fototegel links, naam + prijs ernaast, vinkje rechts) — drie tv's
   onder elkaar scannen beter dan een hoog raster van halve kaarten. */
@media (max-width: 575.98px) {
	form.composite_form .component_option_thumbnails_container { grid-template-columns: minmax(0, 1fr); gap: 0.5rem; }
	form.composite_form .component_option_thumbnail { flex-direction: row; align-items: center; gap: 0.75rem; padding: 0.45rem 2.6rem 0.45rem 0.45rem; }
	form.composite_form .component_option_thumbnail .thumbnail_image { flex: none; width: 4rem; }
	form.composite_form .component_option_thumbnail .thumbnail_image img { aspect-ratio: 1; }
	form.composite_form .component_option_thumbnail .thumbnail_description { padding: 0; }
	form.composite_form .component_option_thumbnail .thumbnail_price { margin-top: 0; }
	form.composite_form .component_option_thumbnail.selected::after { top: 50%; right: 0.75rem; transform: translateY(-50%); }
}

/* Keuzestijl "Radio buttons": opties als rustige keuzeregels, gekozen regel in de merkkleur. */
form.composite_form .component_option_radio_buttons_container { display: grid; gap: 0.5rem; margin: 0; padding: 0; }
form.composite_form .component_option_radio_buttons_container::before,
form.composite_form .component_option_radio_buttons_container::after { content: none; }
form.composite_form .component_option_radio_button_container { margin: 0; }
form.composite_form .component_option_radio_button_container.hidden { display: none; }
form.composite_form .component_option_radio_button {
	position: relative;
	display: flex;
	align-items: center;
	gap: 0.7rem;
	padding: 0.65rem 0.85rem;
	border: 1px solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	background: var(--wcp-color-surface);
	cursor: pointer;
}
form.composite_form .component_option_radio_button.selected { border-color: var(--wcp-color-primary); box-shadow: inset 0 0 0 1px var(--wcp-color-primary); }
form.composite_form .component_option_radio_button.disabled { opacity: 0.45; }
form.composite_form .component_option_radio_button input[type="radio"] { width: 1.05rem; height: 1.05rem; margin: 0; accent-color: var(--wcp-color-primary); }
form.composite_form .component_option_radio_button label.component_option_radio_button_select { position: absolute; inset: 0; margin: 0; cursor: pointer; } /* hele regel klikbaar */
form.composite_form .component_option_radio_button .radio_button_description { display: flex; flex: 1; flex-wrap: wrap; justify-content: space-between; gap: 0.25rem 0.75rem; font-size: 0.95rem; color: var(--wcp-color-dark); }
form.composite_form .component_option_radio_button .radio_button_price { font-size: var(--wcp-font-size-sm); font-weight: var(--wcp-font-weight-semibold, 600); }
form.composite_form .component_option_radio_buttons_fieldset { margin: 0; padding: 0; border: 0; }
form.composite_form .component_option_radio_buttons_fieldset > .select_label { display: none; }

/* Variatiekeuze binnen een onderdeel: label boven de keuze (rustiger in de smalle kaart dan twee kolommen waarin
   "Schoenmaat" afbreekt), sterretje zonder stippellijn. */
form.composite_form .component_content table.variations,
form.composite_form .component_content table.variations :is(tbody, tr, th, td) { display: block; width: auto; padding: 0; border: 0; background: none; }
form.composite_form .component_content table.variations { margin-bottom: 0; }
form.composite_form .component_content table.variations tr + tr { margin-top: 0.75rem; }
form.composite_form .component_content table.variations .label { margin-bottom: 0.35rem; text-align: left; font-size: var(--wcp-font-size-sm); font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
form.composite_form .component_content table.variations .label label { margin: 0; }
form.composite_form .component_content table.variations abbr.required { border: 0; text-decoration: none; color: var(--wcp-color-danger); }

/* Vast onderdeel (één optie, niets te kiezen): geen keuzelijst met één regel, alleen het product. */
form.composite_form .composite_component.static .component_options { display: none; }
form.composite_form .composite_component.static .component_content { margin-top: 0; }
/* Bundel als onderdeel: de prijs staat al op de kaart en in het totaal — het bundeltotaal eronder alleen als
   het meeverandert (optionele bundelonderdelen). */
form.composite_form .component_content:not(:has(.bundled_product_optional_checkbox)) .bundle_price { display: none !important; } /* plugin zet inline display:block */

/* Keuze nog niet compleet (de plugin zet de knop dan op .disabled; de melding blijft na het oplossen verborgen
   in de DOM staan, dus daar niet op afgaan): geen "0,00" als totaal, maar alleen de melding wat er nog ontbreekt — als rustige
   regel in de stijl van WC+ i.p.v. de blauwe WooCommerce-infobalk. */
form.composite_form .composite_wrap:has(.composite_add_to_cart_button.disabled) :is(.composite_price, .wcp-save, .wcp-cp-total__label) { display: none !important; }
form.composite_form .composite_message .woocommerce-info {
	display: block;
	margin: 0 0 0.75rem;
	padding: 0.65rem 0.85rem;
	border: 0;
	border-radius: var(--wcp-radius);
	background: var(--wcp-color-light);
	color: var(--wcp-color-text);
	font-size: var(--wcp-font-size-sm);
}
form.composite_form .composite_message .woocommerce-info::before { content: none; }
form.composite_form .composite_message ul { margin: 0; padding: 0; list-style: none; }
form.composite_form .composite_message li + li { margin-top: 0.25rem; }
form.composite_form .composite_message .msg-source { font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }

/* Totaal bij de knop (verandert met de keuzes). */
form.composite_form .composite_wrap .composite_price p.price { margin: 0 0 0.5rem; font-size: 1.35rem; font-weight: var(--wcp-font-weight-bold); color: var(--wcp-color-dark); }
form.composite_form .composite_wrap .composite_price p.price del { margin-right: 0.4rem; color: var(--wcp-color-muted); font-size: 1rem; font-weight: 400; }
form.composite_form .composite_wrap .composite_price p.price ins { text-decoration: none; background: none; }
.composite_wrap .composite_button { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: stretch; }
/* "Je bespaart € X" — onder het totaal van het samengestelde product (wcp-composite.js) en in de kop van de
   bundel. Groen label, zoals de besparing elders in WC+. */
.wcp-save {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	margin: 0;
	padding: 0.15rem 0.6rem;
	border-radius: 999px;
	background: var(--wcp-color-success-soft);
	color: var(--wcp-color-success);
	font-size: var(--wcp-font-size-sm);
	font-weight: var(--wcp-font-weight-semibold, 600);
	line-height: 1.5;
}
.wcp-save[hidden] { display: none; }
.composite_wrap .wcp-save { margin: -0.15rem 0 0.75rem; }
.wcp-bundle__head .wcp-save { margin-left: auto; }
.wcp-bundle__head:has(.wcp-save) .wcp-bundle__meta { flex: 1; }
/* Mobiel: label + aantal + besparing passen niet op één regel — besparing dan links op de volgende regel; bij
   "Bekijk" alleen het pijltje (de link heeft een aria-label met de productnaam), zodat de naam ruimte houdt. */
@media (max-width: 575.98px) {
	.wcp-bundle__head { justify-content: flex-start; gap: 0.35rem 0.75rem; }
	.wcp-bundle__head .wcp-save { margin-left: 0; }
	.wcp-bundle__head:has(.wcp-save) .wcp-bundle__meta { flex: none; }
	.bundled_product .wcp-bundle__view { font-size: 0; padding: 0.5rem 0.25rem; }
	.bundled_product .wcp-bundle__view::after { width: 0.45rem; height: 0.45rem; }
}


/* ── Configurator (wcp-composite.js) ── */

/* Laden na een keuze: geen spinner/wachtcursor midden over het formulier (de overlay van de plugin is al
   doorzichtig), wel directe terugkoppeling op de plek zelf — spinner in het vinkje van de gekozen kaart, prijzen
   dimmen tot de nieuwe totalen binnen zijn. Klikken blijft tijdens het laden geblokkeerd. Zelfde aanpak als
   de winkelwagen. */
form.composite_form .blockUI.blockOverlay { background: transparent !important; cursor: progress !important; }
form.composite_form .blockUI.blockOverlay::before { display: none !important; }
form.composite_form:has(.blockUI.blockOverlay) :is(.wcp-cp-summary__price, .composite_price, .wcp-save) { opacity: 0.4; transition: opacity 0.15s ease; }
form.composite_form:has(.blockUI.blockOverlay) .component_option_thumbnail.selected::after {
	content: '';
	box-sizing: border-box;
	border: 2px solid var(--wcp-color-surface);
	border-right-color: transparent;
	animation: wcp-cp-spin 0.7s linear infinite;
}
@media (max-width: 575.98px) {
	form.composite_form:has(.blockUI.blockOverlay) .component_option_thumbnail.selected::after { animation-name: wcp-cp-spin-mid; }
}
@keyframes wcp-cp-spin { to { transform: rotate(360deg); } }
@keyframes wcp-cp-spin-mid { from { transform: translateY(-50%) rotate(0deg); } to { transform: translateY(-50%) rotate(360deg); } }

/* Klik in de samenvatting → naar de stap; niet onder de vaste kop verdwijnen. */
form.composite_form .composite_component { scroll-margin-top: 6rem; }

/* "Geen …" bij een optioneel onderdeel: kaart met stippelrand en een doorgestreept rondje. */
form.composite_form .wcp-cp-none__card { border-style: dashed; }
form.composite_form .wcp-cp-none__card.selected { border-style: solid; }
form.composite_form .wcp-cp-none__icon {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
}
form.composite_form .wcp-cp-none__icon::before,
form.composite_form .wcp-cp-none__icon::after { content: ''; position: absolute; top: 50%; left: 50%; }
form.composite_form .wcp-cp-none__icon::before { width: 2rem; height: 2rem; margin: -1rem 0 0 -1rem; border: 2px solid var(--wcp-color-border); border-radius: 50%; box-sizing: border-box; }
form.composite_form .wcp-cp-none__icon::after { width: 2rem; height: 2px; margin: -1px 0 0 -1rem; background: var(--wcp-color-border); transform: rotate(-45deg); }
form.composite_form .wcp-cp-none__card .thumbnail_title { color: var(--wcp-color-muted); }
form.composite_form .wcp-cp-none__card.selected .thumbnail_title { color: var(--wcp-color-dark); }
form.composite_form .composite_component:has(.wcp-cp-none) .clear_component_options_wrapper { display: none; }
@media (max-width: 575.98px) {
	form.composite_form .wcp-cp-none__icon { aspect-ratio: 1; }
}

/* "Jouw samenstelling": overzicht + totaal + knop in één kaart, zoals het totaalblok van de winkelwagen. */
form.composite_form .wcp-cp-checkout {
	margin: 1.25rem 0 0;
	border: var(--wcp-border-width) solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	background: var(--wcp-color-surface);
	overflow: hidden;
}
form.composite_form .wcp-cp-summary__head {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 0.5rem 1rem;
	flex-wrap: wrap;
	padding: 0.85rem 1rem;
	border-bottom: var(--wcp-border-width) solid var(--wcp-color-border);
}
form.composite_form .wcp-cp-summary__title { font-size: 1rem; font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
form.composite_form .wcp-cp-summary__count { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--wcp-font-size-sm); color: var(--wcp-color-muted); }
form.composite_form .wcp-cp-checkout.is-complete .wcp-cp-summary__count { color: var(--wcp-color-success); }
form.composite_form .wcp-cp-checkout.is-complete .wcp-cp-summary__count::before { content: '\2713'; font-weight: var(--wcp-font-weight-bold); }
form.composite_form .wcp-cp-summary__list { margin: 0; padding: 0.35rem 0; list-style: none; }
form.composite_form .wcp-cp-summary__item { margin: 0; }
form.composite_form .wcp-cp-summary__link {
	display: grid;
	grid-template-columns: 2.75rem minmax(0, 1fr) auto auto;
	align-items: center;
	gap: 0.75rem;
	width: 100%;
	margin: 0;
	padding: 0.45rem 1rem;
	border: 0;
	border-radius: 0;
	background: none;
	color: inherit;
	font: inherit;
	text-align: left;
	cursor: pointer;
	transition: background-color 0.15s;
}
form.composite_form .wcp-cp-summary__link:hover { background: var(--wcp-color-light); }
/* Pijltje: de regel opent die stap (Stepped/Componentized) of scrolt ernaartoe. */
form.composite_form .wcp-cp-summary__link::after { content: ''; width: 0.4rem; height: 0.4rem; margin-right: 0.15rem; border-top: 1.5px solid var(--wcp-color-muted); border-right: 1.5px solid var(--wcp-color-muted); transform: rotate(45deg); }
form.composite_form .wcp-cp-summary__link:hover::after { border-color: var(--wcp-color-primary); }
form.composite_form .wcp-cp-summary__link:focus-visible { outline: 2px solid var(--wcp-color-primary); outline-offset: -2px; }
form.composite_form .wcp-cp-summary__thumb {
	display: block;
	width: 2.75rem;
	height: 2.75rem;
	overflow: hidden;
	box-sizing: border-box;
	border: 1px solid var(--wcp-color-border);
	border-radius: calc(var(--wcp-radius) * 3 / 2.75);
	background: var(--wcp-color-surface);
}
form.composite_form .wcp-cp-summary__thumb img { display: block; width: 100%; height: 100%; padding: 0.2rem; box-sizing: border-box; object-fit: contain; }
form.composite_form .wcp-cp-summary__item:is(.is-empty, .is-pending) .wcp-cp-summary__thumb { border-style: dashed; background: var(--wcp-color-light); }
form.composite_form .wcp-cp-summary__text { display: flex; flex-direction: column; min-width: 0; }
form.composite_form .wcp-cp-summary__step { font-size: 0.75rem; line-height: 1.4; color: var(--wcp-color-muted); }
form.composite_form .wcp-cp-summary__name { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; font-size: 0.9375rem; line-height: 1.35; color: var(--wcp-color-dark); }
form.composite_form .wcp-cp-summary__item.is-empty .wcp-cp-summary__name { color: var(--wcp-color-muted); }
form.composite_form .wcp-cp-summary__item.is-pending .wcp-cp-summary__name,
form.composite_form .wcp-cp-summary__hint { color: var(--wcp-color-warning); }
form.composite_form .wcp-cp-summary__price { font-size: var(--wcp-font-size-sm); font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); text-align: right; white-space: nowrap; }
form.composite_form .wcp-cp-summary__price del { margin-right: 0.3rem; color: var(--wcp-color-muted); font-weight: 400; }
form.composite_form .wcp-cp-summary__hint { font-weight: var(--wcp-font-weight-normal, 400); }
/* Totaal + besparing + knop onderin de kaart. */
form.composite_form .wcp-cp-checkout .composite_wrap {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: baseline;
	column-gap: 1rem;
	margin: 0;
	padding: 0.85rem 1rem 1rem;
	border-top: var(--wcp-border-width) solid var(--wcp-color-border);
}
form.composite_form .wcp-cp-checkout .composite_wrap > * { grid-column: 1 / -1; }
form.composite_form .wcp-cp-checkout .composite_wrap > .wcp-cp-total__label { grid-column: 1; font-size: 1rem; font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
form.composite_form .wcp-cp-checkout .composite_wrap > .composite_price { grid-column: 2; text-align: right; }
form.composite_form .wcp-cp-checkout .composite_wrap .composite_price p.price { margin: 0; }
form.composite_form .wcp-cp-checkout .composite_wrap > .wcp-save { justify-self: end; margin: 0.35rem 0 0; }
form.composite_form .wcp-cp-checkout .composite_wrap > .composite_message .woocommerce-info { margin: 0; }
form.composite_form .wcp-cp-checkout .composite_wrap > :is(.composite_message, .composite_availability):not(:empty) { margin-top: 0.75rem; }
form.composite_form .wcp-cp-checkout .composite_wrap > .composite_button { margin-top: 0.85rem; }
form.composite_form .wcp-cp-checkout .composite_wrap > .composite_button .single_add_to_cart_button { flex: 1; }
form.composite_form .wcp-cp-summary__item.is-empty .wcp-cp-summary__thumb { position: relative; }
form.composite_form .wcp-cp-summary__item.is-empty .wcp-cp-summary__thumb::before,
form.composite_form .wcp-cp-summary__item.is-empty .wcp-cp-summary__thumb::after { content: ''; position: absolute; top: 50%; left: 50%; }
form.composite_form .wcp-cp-summary__item.is-empty .wcp-cp-summary__thumb::before { width: 1.1rem; height: 1.1rem; margin: -0.55rem 0 0 -0.55rem; border: 1.5px solid var(--wcp-color-muted); border-radius: 50%; box-sizing: border-box; opacity: 0.5; }
form.composite_form .wcp-cp-summary__item.is-empty .wcp-cp-summary__thumb::after { width: 1.1rem; height: 1.5px; margin: -0.75px 0 0 -0.55rem; background: var(--wcp-color-muted); transform: rotate(-45deg); opacity: 0.5; }

/* ── Weergaves van Composite Products ── */

/* Stepped / Componentized (form.paged) en Progressive: de plugin nummert zelf (.step_index). Stepped toont één
   onderdeel per keer — onze teller telt verborgen onderdelen niet mee, dus daar het nummer van de plugin als bolletje
   (vinkje als gekozen); bij Progressive staan alle onderdelen er, daar blijft onze teller en vervalt het dubbele. */
form.composite_form.paged .component_title_wrapper .component_title::before { display: none; }
form.composite_form.progressive .component_title .step_index { display: none; }
form.composite_form.paged .component_title .step_index {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: none;
	width: 1.6rem;
	height: 1.6rem;
	margin-right: 0.6rem;
	border-radius: 50%;
	background: var(--wcp-color-light);
	color: var(--wcp-color-primary);
	font-size: 0.8125rem;
	font-weight: var(--wcp-font-weight-bold);
	vertical-align: middle;
}
form.composite_form.paged .component_title .component_title_text { display: inline-flex; align-items: center; }
form.composite_form.paged .composite_component:is(:has(.component_option_thumbnail.selected), :has(.component_option_radio_button.selected:not([data-val=""])), :has(select.component_options_select option:checked:not([value=""]))):not(:has(table.variations select option:checked[value=""])) .component_title .step_index {
	background: var(--wcp-color-primary);
	color: var(--wcp-color-surface);
	font-size: 0;
}
form.composite_form.paged .composite_component:is(:has(.component_option_thumbnail.selected), :has(.component_option_radio_button.selected:not([data-val=""])), :has(select.component_options_select option:checked:not([value=""]))):not(:has(table.variations select option:checked[value=""])) .component_title .step_index::before { content: '\2713'; font-size: 0.8125rem; }

/* Stepper (Stepped): nummer + titel per stap, huidige stap in de merkkleur, eerdere stappen klikbaar. */
form.composite_form .composite_pagination { margin: 0 0 1rem; }
form.composite_form .composite_pagination .pagination_elements { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0; padding: 0; list-style: none; }
form.composite_form .composite_pagination .pagination_element { margin: 0; }
form.composite_form .composite_pagination .element_inner {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	padding: 0.3rem 0.75rem 0.3rem 0.3rem;
	border: 1px solid var(--wcp-color-border);
	border-radius: 999px;
	background: var(--wcp-color-surface);
	font-size: var(--wcp-font-size-sm);
}
form.composite_form .composite_pagination .element_index {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.4rem;
	height: 1.4rem;
	border-radius: 50%;
	background: var(--wcp-color-light);
	color: var(--wcp-color-primary);
	font-size: 0.75rem;
	font-weight: var(--wcp-font-weight-bold);
}
form.composite_form .composite_pagination .element_link { color: var(--wcp-color-text); text-decoration: none; }
form.composite_form .composite_pagination .element_link:not(.inactive) { cursor: pointer; }
form.composite_form .composite_pagination .element_link:not(.inactive):hover { color: var(--wcp-color-primary); }
form.composite_form .composite_pagination .element_link.inactive { color: var(--wcp-color-muted); }
form.composite_form .composite_pagination .pagination_element_current .element_inner { border-color: var(--wcp-color-primary); }
form.composite_form .composite_pagination .pagination_element_current .element_index { background: var(--wcp-color-primary); color: var(--wcp-color-surface); }
form.composite_form .composite_pagination .pagination_element_current .element_link { color: var(--wcp-color-dark); font-weight: var(--wcp-font-weight-semibold, 600); }

/* Vorige / volgende stap als knoppen (onderaan; de kopie bovenaan vervalt). */
form.composite_form .composite_navigation.top { display: none; }
form.composite_form .composite_navigation.hidden { display: none; }
form.composite_form .composite_navigation { margin: 0.25rem 0 1rem; }
form.composite_form .composite_navigation_inner { display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; }
form.composite_form .composite_navigation .page_button {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	min-height: 2.75rem;
	padding: 0.5rem 1.1rem;
	border: 1px solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	background: var(--wcp-color-surface);
	color: var(--wcp-color-dark);
	font-weight: var(--wcp-font-weight-semibold, 600);
	text-decoration: none;
	cursor: pointer;
}
form.composite_form .composite_navigation .page_button.prev::before,
form.composite_form .composite_navigation .page_button.next::after { content: ''; width: 0.45em; height: 0.45em; border-top: 2px solid currentColor; border-right: 2px solid currentColor; }
form.composite_form .composite_navigation .page_button.prev::before { transform: rotate(-135deg); }
form.composite_form .composite_navigation .page_button.next::after { transform: rotate(45deg); }
form.composite_form .composite_navigation .page_button.next { margin-left: auto; border-color: var(--wcp-color-primary); background: var(--wcp-color-primary); color: var(--wcp-color-surface); }
form.composite_form .composite_navigation .page_button.next:hover { background: var(--wcp-color-primary-hover); }
form.composite_form .composite_navigation .page_button.invisible { visibility: hidden; }
form.composite_form .composite_navigation .page_button.inactive { opacity: 0.45; pointer-events: none; }

/* Stap-weergaves: "Jouw samenstelling" is het overzicht (klik = naar die stap) — het eigen overzicht van de plugin
   dubbelt daarmee en vervalt. */
form.composite_form.paged .composite_data:has(.wcp-cp-checkout) .composite_summary { display: none; }
form.composite_form.paged .wcp-cp-checkout { margin-top: 0; }

/* Progressive: de hele kop klapt open/dicht (de knop van de plugin over de kop), pijltje rechts; dichte stappen
   rustig gedimd. */
form.composite_form.progressive .component_title_wrapper .component_title { position: relative; cursor: pointer; padding-right: 2rem; }
form.composite_form.progressive .composite_component:has(.wcp-component__tag) .component_title { padding-right: 7.5rem; }
form.composite_form.progressive .component_title .component_title_button { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; padding: 0; border: 0; background: transparent; cursor: pointer; }
form.composite_form.progressive .component_title_toggled::after {
	content: '';
	position: absolute;
	top: 50%;
	right: 0.35rem;
	width: 0.5rem;
	height: 0.5rem;
	margin-top: -0.35rem;
	border-right: 2px solid var(--wcp-color-muted);
	border-bottom: 2px solid var(--wcp-color-muted);
	transform: rotate(45deg);
	transition: transform 0.2s ease;
	pointer-events: none;
}
form.composite_form.progressive .composite_component.open .component_title_toggled::after { transform: rotate(-135deg); margin-top: -0.1rem; }
form.composite_form.progressive .composite_component.closed .component_title_wrapper .component_title { margin-bottom: 0; }
form.composite_form.progressive .composite_component.closed:not(:hover) { background: color-mix(in srgb, var(--wcp-color-surface) 70%, var(--wcp-color-light)); }
form.composite_form.progressive .composite_component.blocked { opacity: 0.6; }
form.composite_form.progressive .wcp-component__tag { right: 3rem; } /* naast het pijltje */

/* ── Compact: bundel + samengesteld product strakker en compacter ──
   Overschrijft de ruimere maten hierboven (zelfde selectors, later in het bestand). */

/* Onderdeelkaarten: minder lucht, kleinere kop. */
form.composite_form .composite_component { margin-bottom: 0.6rem; padding: 0.85rem 0.9rem; }
form.composite_form .component_title_wrapper .component_title { margin-bottom: 0.6rem; font-size: 0.95rem; }
form.composite_form .component_title_wrapper .component_title::before,
form.composite_form.paged .component_title .step_index { width: 1.45rem; height: 1.45rem; font-size: 0.75rem; }
form.composite_form .wcp-component__tag { top: 0.95rem; right: 0.9rem; }

/* Fotokaarten als compacte regels op elke breedte (tegel links, naam + prijs, vinkje rechts) — twee kolommen
   zodra er ruimte is. Vier schoenen = twee lage rijen i.p.v. twee rijen hoge kaarten. */
form.composite_form .component_option_thumbnails_container { grid-template-columns: repeat(auto-fill, minmax(min(100%, 13.5rem), 1fr)); gap: 0.45rem; }
form.composite_form .component_option_thumbnail { flex-direction: row; align-items: center; gap: 0.6rem; padding: 0.35rem 2.3rem 0.35rem 0.35rem; }
form.composite_form .component_option_thumbnail .thumbnail_image { flex: none; width: 3.25rem; }
form.composite_form .component_option_thumbnail .thumbnail_image img { aspect-ratio: 1; padding: 0.15rem; }
form.composite_form .component_option_thumbnail .thumbnail_description { gap: 0.1rem; padding: 0; }
form.composite_form .component_option_thumbnail .thumbnail_title { font-size: 0.8125rem; line-height: 1.3; }
form.composite_form .component_option_thumbnail .thumbnail_price { margin-top: 0; font-size: 0.8125rem; }
form.composite_form .component_option_thumbnail.selected::after { top: 50%; right: 0.6rem; width: 1.2rem; height: 1.2rem; transform: translateY(-50%); font-size: 0.7rem; }
form.composite_form:has(.blockUI.blockOverlay) .component_option_thumbnail.selected::after { animation-name: wcp-cp-spin-mid; }
form.composite_form .wcp-cp-none__icon { aspect-ratio: 1; }
form.composite_form .wcp-cp-none__icon::before { width: 1.4rem; height: 1.4rem; margin: -0.7rem 0 0 -0.7rem; }
form.composite_form .wcp-cp-none__icon::after { width: 1.4rem; margin-left: -0.7rem; }

/* Keuzeregels (radio buttons) lager. */
form.composite_form .component_option_radio_buttons_container { gap: 0.4rem; }
form.composite_form .component_option_radio_button { padding: 0.45rem 0.75rem; }
form.composite_form .component_option_radio_button .radio_button_description { font-size: 0.875rem; }

/* Onder de keuzes alleen wat er nog te kiezen valt: geen herhaalde naam/prijs/foto (staat al op de kaart of
   regel) en geen productomschrijving (ook niet bij een vast onderdeel of bundelregel). */
form.composite_form .options-style-radios .component_content { margin-top: 0; }
form.composite_form .options-style-radios .component_content .summary_content { display: block; }
form.composite_form .options-style-radios .component_content :is(.composited_product_title, .composited_product_images, .component_wrap > .price, p.stock.in-stock) { display: none; }
form.composite_form .options-style-radios .component_content :is(.wcp-bundle, table.variations, .wc-pao-addons-container, .quantity:not(.quantity_hidden)) { margin-top: 0.6rem; }
form.composite_form .component_content :is(.composited_product_excerpt, .woocommerce-product-details__short-description, .component_data > p:not(.price):not(.stock)) { display: none; }
.bundled_product .bundled_product_excerpt { display: none; }
form.composite_form .options-style-thumbnails .component_content :is(.wcp-bundle, table.variations, .wc-pao-addons-container, .quantity:not(.quantity_hidden)) { margin-top: 0.6rem; }

/* Variatiekeuze: label links naast de keuze (desktop), compacte keuzelijsten. Mobiel blijft het label erboven. */
@media (min-width: 576px) {
	form.composite_form .component_content table.variations tbody,
	.bundled_product .cart table.variations tbody { display: grid; grid-template-columns: max-content minmax(0, 1fr); align-items: center; gap: 0.45rem 1rem; }
	form.composite_form .component_content table.variations tr,
	.bundled_product .cart table.variations tr { display: contents; }
	form.composite_form .component_content table.variations .label,
	.bundled_product .cart table.variations .label { margin: 0; }
}
:is(form.composite_form, form.bundle_form) table.variations select { min-height: 2.4rem; padding-top: 0.3rem; padding-bottom: 0.3rem; }

/* "Jouw samenstelling": lagere regels. */
form.composite_form .wcp-cp-summary__head { padding: 0.6rem 0.9rem; }
form.composite_form .wcp-cp-summary__list { padding: 0.2rem 0; }
form.composite_form .wcp-cp-summary__link { grid-template-columns: 2.25rem minmax(0, 1fr) auto auto; gap: 0.6rem; padding: 0.35rem 0.9rem; }
form.composite_form .wcp-cp-summary__thumb { width: 2.25rem; height: 2.25rem; }
form.composite_form .wcp-cp-summary__name { font-size: 0.875rem; }
form.composite_form .wcp-cp-summary__step { font-size: 0.7rem; }
form.composite_form .wcp-cp-checkout .composite_wrap { padding: 0.7rem 0.9rem 0.85rem; }
form.composite_form .wcp-cp-checkout .composite_wrap > .composite_button { margin-top: 0.7rem; }

/* Bundel: lagere regels, kleinere tegel. */
.wcp-bundle__head { padding: 0.6rem 0.85rem; }
.single-product div.product.bundled_product { grid-template-columns: 3rem minmax(0, 1fr); gap: 0.7rem; padding: 0.55rem 0.85rem; }
.single-product div.product.bundled_product .bundled_product_images { width: 3rem; height: 3rem; }
.bundled_product .bundled_product_title { font-size: 0.9rem; }

/* Gebruiksvriendelijk: klik op "Kies kleur, maat" (samenvatting of sticky balk) → het eerste lege veld licht kort op. */
.wcp-attention { border-radius: var(--wcp-radius-sm); animation: wcp-attention 1.6s ease; }
@keyframes wcp-attention {
	0%, 60% { background: color-mix(in srgb, var(--wcp-color-warning) 16%, transparent); box-shadow: 0 0 0 0.35rem color-mix(in srgb, var(--wcp-color-warning) 16%, transparent); }
	100% { background: transparent; box-shadow: 0 0 0 0.35rem transparent; }
}
form.composite_form .wcp-cp-summary__text .wcp-cp-summary__hint { margin-top: 0.1rem; font-size: 0.75rem; line-height: 1.35; } /* "Kies kleur, maat" onder de naam */
form.composite_form .wcp-cp-summary__item.is-pending .wcp-cp-summary__name { color: var(--wcp-color-dark); }
/* De algemene melding van de plugin ("Hoodie, Schoenen → Kies de productopties.") dubbelt met de regels erboven,
   die al precies zeggen wat er ontbreekt — alleen nog voor screenreaders (role=status blijft werken). */
form.composite_form .wcp-cp-checkout .composite_message { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; margin: 0 !important; }
/* Bundelregel: oude en nieuwe prijs op één regel (de prijs-HTML heeft een <br> ertussen) — regel twee i.p.v. drie
   regels hoog. */
.bundled_product .bundled_item_cart_details .price { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0 0.35rem; }
.bundled_product .bundled_item_cart_details .price br { display: none; }
.bundled_product .bundled_item_cart_details .price del { margin-right: 0; }
.bundled_product .bundled_item_cart_details .price .woocommerce-price-suffix { font-weight: 400; color: var(--wcp-color-muted); font-size: 0.8125rem; }

/* Bundel, weergave "Tabular" (Product Bundles: aantallen per product, bv. "Stel je fruitmand samen"): dezelfde compacte
   regels als de standaardweergave — tegel, naam + prijs, aantal rechts — i.p.v. een tabel met grote foto's.
   Kolomkoppen ("Product", "Aantal") alleen voor screenreaders. */
form.bundle_form.layout_tabular table.bundled_products { display: block; width: 100%; margin: 0; border: 0; border-collapse: collapse; }
form.bundle_form.layout_tabular table.bundled_products thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
form.bundle_form.layout_tabular table.bundled_products > tbody { display: block; } /* alleen de eigen tbody — niet die van een geneste variatietabel */
form.bundle_form.layout_tabular table.bundled_products tr.bundled_product {
	display: grid;
	grid-template-columns: 3rem minmax(0, 1fr) auto;
	align-items: center;
	gap: 0.7rem;
	padding: 0.55rem 0.85rem;
	border: 0;
	background: none;
}
form.bundle_form.layout_tabular table.bundled_products tr.bundled_product + tr.bundled_product { border-top: var(--wcp-border-width) solid var(--wcp-color-border); }
form.bundle_form.layout_tabular table.bundled_products > tbody > tr > td { display: block; margin: 0; padding: 0; border: 0; background: none; text-align: left; vertical-align: middle; }
form.bundle_form.layout_tabular .bundled_item_images_col .bundled_product_images { float: none; width: 3rem; height: 3rem; margin: 0; overflow: hidden; border: 1px solid var(--wcp-color-border); border-radius: calc(var(--wcp-radius) * 3 / 2.75); background: var(--wcp-color-surface); }
form.bundle_form.layout_tabular .bundled_item_images_col :is(figure, a) { display: block; width: 100%; height: 100%; margin: 0; }
form.bundle_form.layout_tabular .bundled_item_images_col img { display: block; width: 100%; height: 100%; padding: 0.2rem; box-sizing: border-box; object-fit: contain; }
form.bundle_form.layout_tabular .bundled_item_details_col .details { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 0.75rem; align-items: center; }
form.bundle_form.layout_tabular .bundled_item_details_col .bundled_product_title { display: contents; margin: 0; font-size: 0.9rem; font-weight: var(--wcp-font-weight-normal, 400); }
form.bundle_form.layout_tabular .bundled_item_details_col .bundled_item_cart_details { margin-top: 0.1rem; }
form.bundle_form.layout_tabular .bundled_item_qty_col .quantity { margin: 0; }
form.bundle_form.layout_tabular .bundled_item_qty_col .quantity input.qty { width: 2.5rem; min-height: 2.25rem; }
form.bundle_form.layout_tabular .bundled_item_qty_col .quantity :is(.minus, .plus) { width: 2rem; min-height: 2.25rem; }
/* Product met variaties in de tabel: keuze onder de naam, over de volle breedte van de regel. */
form.bundle_form.layout_tabular tr.bundled_product:has(table.variations) { align-items: start; }
@media (max-width: 575.98px) {
	form.bundle_form.layout_tabular table.bundled_products tr.bundled_product { grid-template-columns: 2.5rem minmax(0, 1fr) auto; gap: 0.6rem; padding: 0.5rem 0.75rem; }
	form.bundle_form.layout_tabular .bundled_item_images_col .bundled_product_images { width: 2.5rem; height: 2.5rem; }
	form.bundle_form.layout_tabular .bundled_item_details_col .details { grid-template-columns: minmax(0, 1fr); }
	form.bundle_form.layout_tabular .bundled_item_details_col .bundled_product_title_link { display: none; } /* foto/naam linken al; ruimte voor het aantal */
}
/* "per stuk" achter de stukprijs: rustig, zoals in de winkelwagen. */
.bundled_product .bundled_item_price_quantity { font-weight: 400; font-size: 0.8125rem; color: var(--wcp-color-muted); }
.bundled_product .bundled_item_cart_details p.stock.in-stock { display: none; }
/* Eenheid van de add-on (bv. "per stuk") staat er al: dan geen tweede "p/s" van Product Bundles. */
.bundled_product .price:has(.piece-price) .bundled_item_price_quantity { display: none; }
.bundled_product .price .piece-price { font-size: 0.8125rem; font-weight: 400; color: var(--wcp-color-muted); }
/* Melding per stap ("Kies de productopties om verder te gaan."): rustige regel in de waarschuwingstint i.p.v. de
   blauwe WooCommerce-infobalk met icoon. */
form.composite_form .component_message { margin: 0.6rem 0 0; }
form.composite_form .component_message .woocommerce-info {
	display: block;
	margin: 0;
	padding: 0.5rem 0.75rem;
	border: 0;
	border-radius: var(--wcp-radius);
	background: color-mix(in srgb, var(--wcp-color-warning) 9%, var(--wcp-color-surface));
	color: var(--wcp-color-text);
	font-size: var(--wcp-font-size-sm);
}
form.composite_form .component_message .woocommerce-info::before { content: none; }
form.composite_form .component_message ul { margin: 0; padding: 0; list-style: none; }
/* Mobiel: stepper als één scrollbare rij i.p.v. twee rijen pillen. */
@media (max-width: 575.98px) {
	form.composite_form .composite_pagination .pagination_elements { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: 0.1rem; }
	form.composite_form .composite_pagination .pagination_elements::-webkit-scrollbar { display: none; }
	form.composite_form .composite_pagination .pagination_element { flex: none; }
}

/* Keuzeregel (radio buttons): naam links, prijs rechts op dezelfde regel (zakte bij een lange naam onder de naam);
   "incl. btw" staat bij het totaal. */
form.composite_form .component_option_radio_button .radio_button_description { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 0.75rem; }
form.composite_form .component_option_radio_button .radio_button_price { white-space: nowrap; }
form.composite_form .component_option_radio_button .radio_button_price .woocommerce-price-suffix { display: none; }

/* Onder een gekozen variatie in de configurator (onderdeel of bundelregel): geen "50 op voorraad" (wel een afwijking
   zoals niet op voorraad/nabestelling), en de variatieprijs compact. */
:is(form.composite_form, .bundled_product) .woocommerce-variation-availability:has(.stock.in-stock) { display: none; }
:is(form.composite_form, .bundled_product) .woocommerce-variation-price { margin-top: 0.4rem; font-size: var(--wcp-font-size-sm); }

/* Gekozen naam-swatch (maat) in de configurator in de merkkleur, zoals de rest van de keuzes daar (kaarten, regels,
   vinkjes) — de add-on kleurt hem elders donker. */
:is(form.composite_form, .bundled_product) .variation-swatches > :not(.color):not(.image).active {
	border-color: var(--wcp-color-primary);
	background-color: var(--wcp-color-primary);
	color: var(--wcp-color-surface);
}
:is(form.composite_form, .bundled_product) .variation-swatches > :not(.color):not(.image):not(.active):hover {
	border-color: var(--wcp-color-primary);
	background-color: color-mix(in srgb, var(--wcp-color-primary) 8%, var(--wcp-color-surface));
	color: var(--wcp-color-dark);
}
/* "Wissen" (variatiekeuze) ook in de configurator weg, zoals op de productpagina en in de kaart: een andere keuze
   maken volstaat, en het kale linkje nam een eigen regel in. */
:is(form.composite_form, .bundled_product) :is(.reset_variations, .reset_variations_wrapper_fixed) { display: none !important; }

/* Variatiekeuze in een bundelregel: keuzelijst niet over de volle breedte van de regel. */
.bundled_product .cart table.variations select { width: 100%; max-width: 16rem; }

/* Bundel, weergave "Grid" (Product Bundles, bv. "Fruitmand groot"): de onderdelen zijn li.product in ul.products en
   kregen zo de opmaak van een productkaart (grote kaarten, veel witruimte). Zelfde liggende regels als de andere
   bundelweergaves: tegel links, naam + "Bekijk", keuze/aantal in de regel. */
.woocommerce form.bundle_form.layout_grid ul.bundled_products { display: block; margin: 0; padding: 0; list-style: none; }
.woocommerce form.bundle_form.layout_grid ul.bundled_products::before,
.woocommerce form.bundle_form.layout_grid ul.bundled_products::after { content: none; }
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product {
	display: grid;
	grid-template-columns: 3rem minmax(0, 1fr);
	align-items: center;
	gap: 0.7rem;
	float: none;
	width: auto;
	margin: 0;
	padding: 0.55rem 0.85rem;
	border: 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
	text-align: left;
}
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product + li.bundled_product { border-top: var(--wcp-border-width) solid var(--wcp-color-border); }
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product .bundled_product_images { float: none; width: 3rem; height: 3rem; margin: 0; overflow: hidden; border: 1px solid var(--wcp-color-border); border-radius: calc(var(--wcp-radius) * 3 / 2.75); background: var(--wcp-color-surface); }
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product .bundled_product_images :is(figure, a) { display: block; width: 100%; height: 100%; margin: 0; }
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product .bundled_product_images img { display: block; width: 100%; height: 100%; padding: 0.2rem; box-sizing: border-box; object-fit: contain; }
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product .details { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 0.75rem; width: auto; float: none; padding: 0; }
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product .bundled_product_title { display: contents; margin: 0; font-size: 0.9rem; font-weight: var(--wcp-font-weight-normal, 400); }
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product .bundled_product_title_link { grid-column: 2; grid-row: 1; }
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product .cart { grid-column: 1 / -1; }
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product table.variations { margin-top: 0.35rem; }
.woocommerce form.bundle_form.layout_grid ul.bundled_products li.bundled_product table.variations select { width: 100%; max-width: 16rem; }
/* De productpagina-select (.woocommerce div.product form.cart .variations select: min-width 100%, hoogte 3rem) gold
   ook binnen een bundelregel en negeerde zo de max-width — daar compact. */
.woocommerce div.product form.cart .bundled_product table.variations select,
.woocommerce div.product form.bundle_form .bundled_product table.variations select { min-width: 0; max-width: 16rem; height: 2.4rem; }

/* Bundelregel met variatiekeuze compact: klein, gedempt label naast een lagere keuzelijst, geen lege strook eronder
   (WooCommerce' .variations { margin-bottom: 1em } en de productpagina-select van 3rem/16px gaven de regel een eigen,
   veel zwaardere maatvoering dan de rest van de lijst). */
.woocommerce div.product form.bundle_form .bundled_product .cart table.variations { margin: 0.35rem 0 0; }
.woocommerce div.product form.bundle_form .bundled_product .cart table.variations tbody { gap: 0.4rem 0.6rem; }
.woocommerce div.product form.bundle_form .bundled_product .cart table.variations .label { padding: 0; font-size: 0.8125rem; font-weight: var(--wcp-font-weight-normal, 400); color: var(--wcp-color-muted); }
.woocommerce div.product form.bundle_form .bundled_product .cart table.variations .label label { font-weight: inherit; }
.woocommerce div.product form.bundle_form .bundled_product table.variations select { width: auto; min-width: 11rem; max-width: 100%; height: 2.1rem; min-height: 0; padding: 0 2rem 0 0.7rem; }
.woocommerce div.product form.bundle_form .bundled_product .bundled_item_cart_content { margin: 0; padding: 0; }
@media (min-width: 48rem) { /* onder 16px zoomt iOS in bij focus; alleen vanaf tablet kleiner */
	.woocommerce div.product form.bundle_form .bundled_product table.variations select { font-size: 0.875rem; }
}
/* Bundelregel met één variatiekeuze als keuzelijst: op de regel zelf, direct achter de naam ("Appel [Kies ras ▾]  Bekijk ›").
   Niet bij swatches (wcp-variation-swatches): een rij maattegels past niet naast een lange naam — die staat eronder.
   Het label staat dan als "Kies ras" in de keuzelijst (wcp_bundle_variation_placeholder) en blijft voor screenreaders.
   Op een telefoon blijft de keuzelijst eronder. */
@media (min-width: 576px) {
	/* Regel zelf (tabel- en rasterweergave) dan ook verticaal gecentreerd, zoals de regels zonder keuze. */
	.woocommerce div.product form.bundle_form .bundled_product:has(.cart table.variations tbody > tr:only-child):not(:has(.variation-swatches)),
	.woocommerce div.product form.bundle_form.layout_tabular tr.bundled_product:has(.cart table.variations tbody > tr:only-child):not(:has(.variation-swatches)) > td { align-items: center; vertical-align: middle; }
	.woocommerce div.product form.bundle_form .bundled_product:has(.cart table.variations tbody > tr:only-child):not(:has(.variation-swatches)) .details { align-self: center; }
	.woocommerce div.product form.bundle_form .bundled_product .details:has(.cart table.variations tbody > tr:only-child):not(:has(.variation-swatches)) { grid-template-columns: minmax(0, max-content) minmax(11rem, 1fr) auto; }
	.woocommerce div.product form.bundle_form .bundled_product .details:has(.cart table.variations tbody > tr:only-child):not(:has(.variation-swatches)) .bundled_product_title_inner { grid-column: 1; grid-row: 1; align-self: center; }
	.woocommerce div.product form.bundle_form .bundled_product .details:has(.cart table.variations tbody > tr:only-child):not(:has(.variation-swatches)) > .cart { grid-column: 2; grid-row: 1; }
	.woocommerce div.product form.bundle_form .bundled_product .details:has(.cart table.variations tbody > tr:only-child):not(:has(.variation-swatches)) .bundled_product_title_link { grid-column: 3; grid-row: 1; align-self: center; }
	.woocommerce div.product form.bundle_form .bundled_product .details:has(.cart table.variations tbody > tr:only-child):not(:has(.variation-swatches)) .cart table.variations { margin: 0; }
	.woocommerce div.product form.bundle_form .bundled_product .details:has(.cart table.variations tbody > tr:only-child):not(:has(.variation-swatches)) .cart table.variations tbody { display: block; }
	.woocommerce div.product form.bundle_form .bundled_product .details:has(.cart table.variations tbody > tr:only-child):not(:has(.variation-swatches)) .cart table.variations .label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}

/* Bundel met aantallen naar keuze: telbalk onder de kop (wcp-bundle.js) — "7 gekozen" links, de stand rechts
   ("Kies er nog 2" / "Haal er 14 weg" / "Nog 3 erbij mogelijk" / "Compleet"). Kleur volgt de stand. */
.wcp-bundle__size {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: baseline;
	gap: 0.4rem 0.75rem;
	padding: 0.6rem 1rem 0.7rem;
	border-bottom: var(--wcp-border-width) solid var(--wcp-color-border);
	font-size: var(--wcp-font-size-sm);
	--wcp-size-tone: var(--wcp-color-primary);
}
.wcp-bundle__size[data-wcp-state="ok"] { --wcp-size-tone: var(--wcp-color-success); }
.wcp-bundle__size[data-wcp-state="over"] { --wcp-size-tone: var(--wcp-color-danger); }
.wcp-bundle__size-bar { grid-column: 1 / -1; order: 3; height: 0.375rem; border-radius: 999px; background: var(--wcp-color-light); overflow: hidden; }
.wcp-bundle__size-bar > span { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--wcp-size-tone); transition: width 0.2s ease, background-color 0.2s ease; }
.wcp-bundle__size-count { font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-dark); }
.wcp-bundle__size-state { color: var(--wcp-size-tone); font-weight: var(--wcp-font-weight-semibold, 600); }
.wcp-bundle__size[data-wcp-state="ok"] .wcp-bundle__size-state::before { content: '✓ '; }
.wcp-bundle__size:not([data-wcp-state]) { display: none; } /* zonder JS geen lege balk */
/* Melding van Product Bundles onder de bundel: opdracht en stand ("Kies maximaal 10 stuks. Je hebt er nu 24.") met
   een spatie ertussen — de plugin plakt ze aan elkaar. */
form.bundle_form .bundle_error .bundled_items_selection_status::before { content: ' '; }

/* ── Productsamenvatting: rustige blokken ──
   Scheidingslijn onder de prijs (prijs = kop van de koopzone), en voorraad + levertijd + USP's samen in één
   witte kaart onder de koopknop (wcp_single_product_assurance_card). */
.summary .wcp-product-price { padding-bottom: 1.1rem; margin-bottom: 1.25rem; border-bottom: var(--wcp-border-width) solid var(--wcp-color-border); }
.wcp-product-assurance {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
	margin: 1.25rem 0 0;
	padding: 0.9rem 1.1rem;
	border: var(--wcp-border-width) solid var(--wcp-color-border);
	border-radius: var(--wcp-radius);
	background: var(--wcp-color-surface);
}
.wcp-product-assurance:empty { display: none; }
.wcp-product-assurance > .wcp-product-stock { margin: 0; }
.wcp-product-assurance .wcp-usps { margin: 0; }
.wcp-product-assurance .wcp-usps__list,
.wcp-product-assurance .wcp-usps__list--vertical { display: flex; flex-direction: column; gap: 0.45rem; margin: 0; padding: 0; border: 0; }
.wcp-product-assurance .wcp-usps__item { gap: 0.5rem; font-size: var(--wcp-font-size-sm); font-weight: var(--wcp-font-weight-normal, 400); color: var(--wcp-color-text); }
.wcp-product-assurance .wcp-usps__item strong { font-weight: inherit; }
/* Kleine vinkjes zoals de voorraadregel, geen getinte tegels (die horen bij het USP-overzicht in de checkout). */
.wcp-product-assurance .wcp-usps__list .wcp-usps__item > i { width: auto; height: auto; padding: 0; border-radius: 0; background: none; color: var(--wcp-color-primary); font-size: 1rem; }
/* Uit assortiment: vervangende producten op een eigen regel onder galerij en samenvatting (die floaten). */
.single-product div.product > .wcp-replacements { clear: both; padding-top: 2rem; }
/* Link rechts naast een variatielabel ("Maattabel" van wcp-size-chart, of een eigen add-on): klasse .wcp-attr-link. */
.woocommerce div.product form.variations_form .variations th.label label:has(.wcp-attr-link) { display: flex; width: 100%; }
.woocommerce div.product form.variations_form .variations th.label .wcp-attr-link { margin-left: auto; font-weight: var(--wcp-font-weight-semibold, 600); color: var(--wcp-color-primary); text-decoration: underline; text-underline-offset: 0.2em; }
.woocommerce div.product form.variations_form .variations th.label .wcp-attr-link:hover { color: var(--wcp-color-primary-hover); }

/* Galerij met thumbs links van de hoofdfoto (filter wcp_product_gallery_thumbs_position = 'left', vanaf 768px; op
   een telefoon blijft de strook eronder). Strook even hoog als de hoofdfoto (height 0 + min-height 100% telt niet
   mee voor de rijhoogte) en verticaal schuifbaar; pijlen en badges schuiven mee naar de fotokolom. Eén foto (geen
   thumbs-strook): gewoon de volle breedte, geen lege kolom. */
@media (min-width: 768px) {
	.woocommerce-gallery-wrapper--thumbs-left { --wcp-gallery-thumbs: 4.5rem; --wcp-gallery-gap: 0.75rem; }
	.woocommerce-gallery-wrapper--thumbs-left .woocommerce-product-gallery:has(> .flex-control-thumbs) { display: grid; grid-template-columns: var(--wcp-gallery-thumbs) minmax(0, 1fr); column-gap: var(--wcp-gallery-gap); }
	.woocommerce-gallery-wrapper--thumbs-left .woocommerce-product-gallery > .flex-viewport,
	.woocommerce-gallery-wrapper--thumbs-left .woocommerce-product-gallery > .woocommerce-product-gallery__wrapper { grid-column: 2; grid-row: 1; }
	.woocommerce div.product .woocommerce-gallery-wrapper--thumbs-left div.images .flex-control-thumbs,
	.woocommerce-gallery-wrapper--thumbs-left .woocommerce-product-gallery ol.flex-control-thumbs {
		grid-column: 1;
		grid-row: 1;
		flex-direction: column;
		height: 0;
		min-height: 100%;
		margin: 0;
		overflow-x: hidden;
		overflow-y: auto;
		scroll-snap-type: y mandatory;
	}
	.woocommerce-gallery-wrapper--thumbs-left .woocommerce-product-gallery .flex-control-thumbs img { width: 100%; height: auto; aspect-ratio: 1 / 1; }
	.woocommerce-gallery-wrapper--thumbs-left .woocommerce-product-gallery .flex-control-thumbs img.flex-active { border-color: var(--wcp-color-primary); }
	.woocommerce-gallery-wrapper--thumbs-left .woocommerce-product-gallery:has(> .flex-control-thumbs) .flex-direction-nav .flex-prev { left: calc(var(--wcp-gallery-thumbs) + var(--wcp-gallery-gap) + 0.75rem); }
	.woocommerce-gallery-wrapper--thumbs-left:has(.flex-control-thumbs) .badges { left: calc(var(--wcp-gallery-thumbs) + var(--wcp-gallery-gap) + 0.75rem); }
}
/* Telefoon: in de kaart staat de levertijd onder de voorraad — zonder het scheidingsstreepje dat dan los vooraan hing. */
@media (max-width: 575.98px) {
	.wcp-product-assurance .wcp-product-stock { flex-direction: column; align-items: flex-start; gap: 0.25rem; }
	.wcp-product-assurance .wcp-product-stock__text::before { display: none; }
}
.wcp-product-assurance .product-message { display: block; margin: 0; padding-top: 0.6rem; border-top: var(--wcp-border-width) solid var(--wcp-color-border); font-size: 0.8125rem; color: var(--wcp-color-muted); }
/* Voorraadkaart: USP's als rustige regels onder een scheidingslijn — normale tekst op formaat van de voorraadregel,
   vinkje op de regel uitgelijnd (stond lager en de tekst was vet en groter dan de rest van de kaart). */
.wcp-product-assurance .wcp-usps { padding-top: 0.75rem; border-top: var(--wcp-border-width) solid var(--wcp-color-border); }
.wcp-product-assurance .wcp-usps__list .wcp-usps__item { display: flex; align-items: center; gap: 0.55rem; margin: 0; line-height: 1.35; }
.wcp-product-assurance .wcp-usps__list .wcp-usps__item > i { flex: none; line-height: 1; font-size: 0.9rem; }
.wcp-product-assurance .wcp-usps__item :is(strong, span, p) { margin: 0; font-size: var(--wcp-font-size-sm); font-weight: var(--wcp-font-weight-normal, 400); color: var(--wcp-color-text); line-height: inherit; }

/* Vóór de initialisatie van de galerij (flexslider, pas na window.load) alleen de eerste foto: anders staan
   alle foto's onder elkaar — onzichtbaar maar mét hoogte — en springen titel en prijs bij de initialisatie
   omhoog (CLS). Na de initialisatie staat de wrapper in .flex-viewport, dan geldt deze regel niet meer. */
.woocommerce-product-gallery > .woocommerce-product-gallery__wrapper > :not(:first-child) { display: none; }
.wcp-pswp-video .video__play {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	text-decoration: none;
	background: rgba(0, 0, 0, 0.15);
}
.wcp-pswp-video .video__play i {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 4.5rem;
	height: 4.5rem;
	border-radius: 50%;
	background: var(--wcp-color-primary, #0a93d1);
	font-size: 2rem;
}
