/**
 * Dutch Balance — pdp.css
 *
 * Afgesplitst uit extra.css op 12-09-2026 (CSS per template). Alleen regels
 * waarvan elke selector aantoonbaar op één pagina-type voorkomt; alles wat op
 * meerdere plekken gebruikt wordt staat nog in extra.css. Laadt NA extra.css,
 * zie inc/enqueue.php. Volgorde en @media-groepen zijn uit extra.css overgenomen.
 */

/* PDP — betaalmethodes onder de USP-lijst. Hergebruikt de cart-badge-classes
   (db-cart-payments-label / db-cart-payment-icons / db-pay-icon); alleen eigen
   spacing + scheidingslijn onder de USP's, analoog aan .db-cart-trust. */
.db-pdp-payments {
	margin-top: 1.25rem;
	padding-top: 1.25rem;
	border-top: 1px solid var(--db-border-subtle);
}

.db-pdp {
	max-width: 100% !important;
}

/* HERO LAYOUT — 50/50 met 4rem gap (matched live) */
.db-pdp-hero {
	gap: 4rem !important;
}

@media (min-width: 768px) {
	.db-pdp-gallery-col {
		position: sticky;
		top: 110px; /* header-hoogte + 20px adem */
		align-self: flex-start;
	}
}

.db-pdp-gallery-col .woocommerce-product-gallery,
.db-pdp-gallery .woocommerce-product-gallery {
	margin: 0 !important;
	opacity: 1 !important; /* WC inline-style zet opacity:0 voor JS-init dat niet runt zonder WC-frontend.js */
	width: 100% !important;
	max-width: 100%;
	overflow: hidden; /* clip de carousel-track (400% wide) zodat alleen actieve slide zichtbaar is */
}

/* WC zoom-trigger (magnifier-icoon linksboven): subtieler stylen — werkt nu
   met WC frontend.js + photoswipe. Klik = lightbox. */
.db-pdp-gallery .woocommerce-product-gallery__trigger,
.db-pdp-gallery-col .woocommerce-product-gallery__trigger {
	position: absolute;
	top: 1rem;
	right: 1rem;
	z-index: 3;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: white;
	box-shadow: var(--db-shadow-soft);
	display: flex;
	align-items: center;
	justify-content: center;
	text-indent: -9999px;
	overflow: hidden;
	color: var(--wp--preset--color--forest);
	transition: background 150ms;
}

.db-pdp-gallery .woocommerce-product-gallery__trigger::before,
.db-pdp-gallery-col .woocommerce-product-gallery__trigger::before {
	content: '';
	position: absolute;
	inset: 0;
	background: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%232D4A3E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3Cline x1='11' y1='8' x2='11' y2='14'/%3E%3Cline x1='8' y1='11' x2='14' y2='11'/%3E%3C/svg%3E") center/18px no-repeat;
}

.db-pdp-gallery .woocommerce-product-gallery__trigger:hover {
	background: var(--wp--preset--color--cream);
}

/* Placeholder-state als product geen featured image heeft */
.db-pdp-gallery-col .woocommerce-product-gallery--without-images,
.db-pdp-gallery .woocommerce-product-gallery--without-images {
	background: var(--wp--preset--color--cream);
	border-radius: var(--db-radius-2xl);
	aspect-ratio: 1/1;
	display: flex;
	align-items: center;
	justify-content: center;
	max-width: 600px;
}

.db-pdp-gallery-col .woocommerce-product-gallery--without-images img,
.db-pdp-gallery .woocommerce-product-gallery--without-images img {
	max-width: 60%;
	max-height: 60%;
	opacity: 0.4;
}

.db-pdp-gallery .woocommerce-product-gallery__image,
.db-pdp-gallery-col .woocommerce-product-gallery__image {
	background: var(--wp--preset--color--cream);
	border-radius: var(--db-radius-2xl);
	overflow: hidden;
	aspect-ratio: 1/1;
	position: relative;
}

.db-pdp-gallery .woocommerce-product-gallery__image img,
.db-pdp-gallery-col .woocommerce-product-gallery__image img {
	mix-blend-mode: multiply;
	width: 100%;
	height: 100%;
	object-fit: contain;
	padding: 1.5rem;
	display: block;
	border-radius: 0 !important;
	box-sizing: border-box; /* Anders telt padding bovenop width:100% en steekt img uit cushion */
	cursor: default;
	transition: none;
}

/* jquery.zoom plakt een .zoomImg op de slide bij hover — zichtbaar als
   "transparant uitvergroot product". Theme-support uit én script-dequeue
   blijken niet genoeg (WC laadt 'm via slider-dependency), dus CSS-hide. */
.db-pdp-gallery img.zoomImg,
.db-pdp-gallery-col img.zoomImg,
.woocommerce-product-gallery .zoomImg {
	display: none !important;
	opacity: 0 !important;
}

.db-pdp-gallery .woocommerce-product-gallery__image:hover img,
.db-pdp-gallery-col .woocommerce-product-gallery__image:hover img {
	/* WC-defaults voor hover-zoom uitschakelen — pass 2 krijgt eigen lightbox-trigger */
	transform: none !important;
	opacity: 1 !important;
}

@media (min-width: 768px) {
	.db-pdp-gallery .woocommerce-product-gallery__image img {
		padding: 2.5rem;
	}
}

/* WC's flexslider regelt zelf welke slide actief is via classes + transforms.
   Geen eigen display:none nodig. */

/* "Aanbieding!"-hoekbadge top-left van image — ROOD (--db-sale-badge, bewuste
   B9-uitzondering: Valentijn vindt rood mooier bij aanbiedingen, 2026-07-05; haalt
   WCAG 4.72:1). Sale-PRIJZEN blijven wél forest (B9). Klein. */
.db-pdp-gallery .onsale,
.db-pdp-gallery-col .onsale {
	position: absolute !important;
	top: 1rem !important;
	left: 1rem !important;
	background: var(--db-sale-badge) !important;
	color: var(--wp--preset--color--cream) !important;
	font-size: 10px !important;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	padding: 5px 12px !important;
	border-radius: var(--db-radius) !important;
	min-height: auto !important;
	min-width: auto !important;
	line-height: 1;
	margin: 0 !important;
	z-index: 2;
}

/* Thumbnail grid 4-koloms onder main image — elk vakje 1:1 vierkant */
.db-pdp-gallery .flex-control-thumbs,
.db-pdp-gallery-col .flex-control-thumbs {
	display: grid !important;
	grid-template-columns: repeat(4, 1fr);
	gap: 0.75rem;
	margin: 1rem 0 0 0;
	padding: 0;
	list-style: none;
	width: 100%;
	float: none;
}

.db-pdp-gallery .flex-control-thumbs li {
	width: auto !important;
	margin: 0 !important;
	list-style: none;
	aspect-ratio: 1/1;
	background: var(--wp--preset--color--cream);
	border-radius: var(--db-radius-lg);
	border: 2px solid transparent;
	box-sizing: border-box;
	cursor: pointer;
	overflow: hidden;
	transition: border-color 150ms;
}

.db-pdp-gallery .flex-control-thumbs img {
	width: 100% !important;
	height: 100% !important;
	object-fit: contain;
	padding: 0.5rem;
	box-sizing: border-box;
	transition: opacity 150ms;
	opacity: 0.7;
	mix-blend-mode: multiply;
	display: block;
}

.db-pdp-gallery .flex-control-thumbs li:hover img,
.db-pdp-gallery .flex-control-thumbs img.flex-active,
.db-pdp-gallery .flex-control-thumbs img:hover {
	opacity: 1;
}

.db-pdp-gallery .flex-control-thumbs li:has(.flex-active) {
	border-color: var(--wp--preset--color--forest);
}

/* BUYBOX */
.db-pdp-buybox {
	padding-top: 0;
}

.db-pdp-eyebrow,
.db-pdp-eyebrow a {
	font-weight: 600 !important;
	color: var(--wp--preset--color--teal) !important;
	text-decoration: none !important;
	display: block;
	/* Niet aanklikbaar — breadcrumbs dekt al de category-link, eyebrow is puur label */
	pointer-events: none;
	cursor: default;
}

.db-pdp-title {
	font-family: var(--wp--preset--font-family--heading) !important;
	font-size: clamp(1.875rem, 3.6vw, 2.375rem) !important;
	font-weight: 400 !important;
	line-height: 1.15 !important;
	color: var(--wp--preset--color--forest) !important;
	letter-spacing: -0.005em;
}

.db-rating-sep {
	margin: 0 0.4rem;
	opacity: 0.5;
}

/* Price — 32px forest, sale-styling met Bespaar-badge via ::after */
.db-pdp-price,
.db-pdp-price .price,
.db-pdp-price .wc-block-components-product-price {
	font-family: var(--wp--preset--font-family--body);
	font-size: 32px !important;
	font-weight: 600;
	color: var(--wp--preset--color--forest) !important;
	line-height: 1;
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
	flex-wrap: wrap;
}

.db-pdp-price .wc-block-components-product-price__regular,
.db-pdp-price del,
.db-pdp-price del .amount {
	color: var(--wp--preset--color--text-muted) !important;
	text-decoration: line-through;
	font-size: 18px !important;
	font-weight: 400;
	text-decoration-thickness: 1px;
}

.db-pdp-price .wc-block-components-product-price__value,
.db-pdp-price ins,
.db-pdp-price ins .amount {
	color: var(--wp--preset--color--forest) !important;
	background: transparent !important;
	text-decoration: none;
	font-weight: 600;
}

/* ===== Custom PDP-blocks ===== */

/* KeySpecs / Highlights — checklist met Lucide-checks */
.db-pdp-keyspecs {
	list-style: none;
	padding: 0;
	margin: 0 0 1.5rem 0;
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.5rem;
}

/* Fallback-modus (WC attrs): 2 koloms zodat tabel-achtige data compact past */
.db-pdp-keyspecs:not(.db-pdp-keyspecs--highlights) {
	gap: 0.5rem;
}

@media (min-width: 641px) {
	.db-pdp-keyspecs:not(.db-pdp-keyspecs--highlights) {
		grid-template-columns: 1fr 1fr;
	}
}

/* Highlights-modus: 1 kolom, compact onder elkaar */
.db-pdp-keyspecs--highlights {
	gap: 0.35rem;
}

.db-pdp-keyspecs li {
	display: flex;
	align-items: flex-start;
	gap: 0.6rem;
	font-size: 14px;
	line-height: 1.5;
	color: var(--wp--preset--color--charcoal-soft);
	margin: 0;
}

.db-pdp-keyspecs li svg {
	margin-top: 0.25rem;
	flex-shrink: 0;
	color: var(--wp--preset--color--teal);
}

.db-pdp-keyspecs li strong {
	color: var(--wp--preset--color--forest);
	font-weight: 500;
}

/* StockIndicator — pulsing dot in drie staten */
.db-stock {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 0.75rem 0;
}

.db-stock-dot {
	position: relative;
	display: inline-flex;
	width: 8px;
	height: 8px;
}

.db-stock-dot::after {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: 50%;
}

.db-stock-in .db-stock-dot::after { background: var(--wp--preset--color--sage); }

.db-stock-out .db-stock-dot::after { background: var(--db-sale); }

.db-stock-backorder .db-stock-dot::after { background: var(--wp--preset--color--goal-energie); }

.db-stock-ping {
	position: absolute;
	inset: 0;
	border-radius: 50%;
	background: var(--wp--preset--color--sage);
	opacity: 0.75;
	animation: db-stock-ping 1.4s cubic-bezier(0, 0, 0.2, 1) infinite;
}

.db-stock-label {
	font-size: 13px;
	font-weight: 500;
}

.db-stock-in .db-stock-label { color: var(--wp--preset--color--forest); }

.db-stock-out .db-stock-label { color: var(--db-sale); }

.db-stock-backorder .db-stock-label { color: var(--wp--preset--color--goal-energie); }

@media (prefers-reduced-motion: reduce) {
	.db-stock-ping { animation: none; }
}

/* Volume Pricing Table — compact, geen kolom-headers (Martijn-stijl) */
.db-volume-pricing-heading {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	color: var(--wp--preset--color--forest) !important;
}

.db-volume-pricing {
	margin: 0 0 1.5rem 0;
	padding: 0.5rem 1rem;
	background: var(--wp--preset--color--cream);
	border-radius: var(--db-radius-lg);
	border: 1px solid var(--db-border-subtle);
}

.db-volume-pricing-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 13px;
}

.db-volume-pricing-table tbody td,
.db-volume-pricing-table tbody th {
	padding: 0.55rem 0;
	color: var(--wp--preset--color--charcoal-soft);
	border-bottom: 1px solid var(--db-border-subtle);
	vertical-align: middle;
	text-align: left; /* reset th-default (center) — de range-cel is nu een th scope=row */
}

.db-volume-pricing-table tbody tr:last-child td,
.db-volume-pricing-table tbody tr:last-child th {
	border-bottom: 0;
}

.db-volume-col-range {
	width: 38%;
	font-weight: 500;
	color: var(--wp--preset--color--forest);
}

.db-volume-col-badge {
	width: 22%;
	text-align: left;
}

.db-volume-col-price {
	text-align: right;
	white-space: nowrap;
}

.db-volume-col-price del {
	color: var(--wp--preset--color--text-muted);
	font-size: 11px;
	margin-right: 0.4rem;
	text-decoration: line-through;
	font-weight: 400;
}

.db-volume-col-price strong {
	color: var(--wp--preset--color--forest);
	font-weight: 600;
}

.db-volume-col-price del .amount,
.db-volume-col-price del .woocommerce-Price-amount {
	color: var(--wp--preset--color--text-muted) !important;
	font-size: 11px !important;
}

.db-volume-col-price strong .amount,
.db-volume-col-price strong .woocommerce-Price-amount {
	color: var(--wp--preset--color--forest) !important;
	font-size: 14px !important;
}

.db-volume-badge {
	display: inline-flex;
	align-items: center;
	padding: 2px 8px;
	background: var(--wp--preset--color--teal);
	color: var(--wp--preset--color--cream);
	border-radius: 999px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.02em;
}

.db-volume-row-default {
	/* Subtiele de-emphasis van de basisrij (1 stuk) t.o.v. de kortingsstaffels.
	   0.7 dimde de tekst onder WCAG AA (effectief ~3,7:1); 0.85 haalt ~5,3:1 en houdt
	   nog een lichte demping. Meer dempen kan niet samen met AA op een lichte bg. */
	opacity: 0.85;
}

/* ===== PDP REVIEWS-SECTIE (Martijn's stijl — onder beschrijving, niet in tab) ===== */
.db-pdp-reviews {
	background: #ffffff;
	/* Top 4rem zodat de "merged witte zone" (reviews + related) consistent 4rem ademruimte heeft
	   bovenaan. Midden = 2rem (reviews-bottom) + 2rem (related-top) = 4rem. Bottom van related = 4rem. */
	padding: 4rem 1.5rem 2rem;
}

.db-pdp-reviews-inner {
	max-width: 1300px; /* in lijn met PDP-hero + tabs container */
	margin: 0 auto;
}

.db-pdp-reviews-header {
	display: flex;
	justify-content: space-between;
	align-items: flex-end; /* h2 onderkant gelijk met onderkant score-stack — past bij sectie-h2 zoals 'Klanten kochten ook' */
	gap: 2rem;
	flex-wrap: wrap;
	margin-bottom: 1.75rem;
}

.db-pdp-reviews-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.625rem, 3vw, 2rem);
	font-weight: 400;
	color: var(--wp--preset--color--forest);
	margin: 0;
}

.db-pdp-reviews-score {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 0.25rem;
}

.db-pdp-reviews-avg {
	font-family: var(--wp--preset--font-family--body);
	font-size: 1.25rem;
	font-weight: 600;
	color: var(--wp--preset--color--forest);
	line-height: 1;
	margin-bottom: 0.35rem; /* extra ademruimte tussen cijfer en sterren */
}

.db-pdp-reviews-stars-wrap {
	color: var(--wp--preset--color--goal-energie);
	display: inline-flex;
}

.db-pdp-reviews-count {
	font-size: 12px;
	color: var(--wp--preset--color--text-muted);
}

/* Stars helper */
.db-stars {
	display: inline-flex;
	gap: 2px;
	color: var(--wp--preset--color--goal-energie);
}

/* Reviews-list — 2 koloms grid op desktop */
.db-pdp-reviews-list {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.25rem;
}

@media (min-width: 768px) {
	.db-pdp-reviews-list {
		grid-template-columns: repeat(2, 1fr);
		gap: 1.5rem;
	}
}

@media (max-width: 767px) {
	.db-pdp-reviews-list {
		display: flex;
		max-width: calc(100vw - 48px); /* sitebrede carousel-standaard: cap tegen shrink-wrap */
		grid-template-columns: none;
		gap: 1rem;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		/* Géén negatieve bleed: lijst start bij de wrapper-rand. De peek van de
		   volgende kaart blijft binnen de wrapper (geclipt op de rechter wrapper-
		   rand) → uitgelijnd MÉT swipe-signaal dat er meer reviews zijn. */
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	.db-pdp-reviews-list::-webkit-scrollbar {
		display: none;
	}

	.db-pdp-reviews-list > .db-pdp-review {
		/* Sitebrede carousel-standaard: kaart = container − 48px → 48px peek, max 360. */
		flex: 0 0 calc(100% - 48px);
		max-width: 360px;
		scroll-snap-align: start;
	}
}

@media (min-width: 768px) {
	.db-pdp-reviews-list > .db-pdp-review.is-page-hidden {
		display: none;
	}

	/* Hogere specificiteit dan de sitebrede .db-pagination{justify-content:center}
	   (die staat later in het bestand) → rechts uitgelijnd op desktop. */
	.db-pdp-reviews .db-reviews-pagination {
		justify-content: flex-end;
	}
}

.db-reviews-pagination {
	margin-top: 1.5rem;
}

.db-reviews-pagination button {
	font: inherit;
	cursor: pointer;
}

.db-reviews-pagination button.page-numbers:not(.current) {
	background: transparent;
}

.db-reviews-pagination [disabled] {
	opacity: 0.4;
	cursor: default;
	pointer-events: none;
}

@media (max-width: 767px) {
	.db-pdp-reviews .db-reviews-pagination { display: none; }
}

/* Footer: "Schrijf zelf een review"-knop links, paginering rechts, op één lijn.
   Bij een geopend review-formulier gaat de knop-kolom vol-breed (form eronder). */
.db-pdp-reviews-footer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
	margin-top: 2rem;
}

.db-pdp-reviews-footer .db-pdp-review-form-cta-wrap {
	margin-top: 0;
	flex: 0 1 auto;
}

.db-pdp-reviews-footer .db-reviews-pagination {
	margin-top: 0;
	margin-left: auto; /* naar rechts, ook als 'ie alleen staat */
	flex: 0 1 auto;
}

.db-pdp-reviews-footer:has(.db-pdp-review-form-toggle[open]) .db-pdp-review-form-cta-wrap {
	flex-basis: 100%; /* form open → volle breedte, netjes onder de knop-regel */
}

/* ── PDP — voorraad-notificatie ("mail mij zodra weer op voorraad", uitverkocht) ── */
.db-stock-notify {
	margin-top: 1.25rem;
	padding: 1.25rem;
	background: var(--wp--preset--color--cream);
	border: 1px solid var(--db-border-subtle);
	border-radius: var(--db-radius);
}

.db-stock-notify-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.15rem;
	color: var(--wp--preset--color--forest);
	margin: 0 0 0.35rem;
}

.db-stock-notify-text {
	font-size: 14px;
	line-height: 1.6;
	color: var(--wp--preset--color--charcoal-soft);
	margin: 0 0 1rem;
}

.db-stock-notify-row {
	display: flex;
	gap: 0.5rem;
}

.db-stock-notify-row input[type="email"] {
	flex: 1 1 auto;
	min-width: 0;
	padding: 0.75rem 1rem;
	border: 1px solid var(--db-border-input);
	border-radius: var(--db-radius-input-shape);
	background: #fff;
	font-family: var(--wp--preset--font-family--body);
	font-size: 14px;
	color: var(--wp--preset--color--charcoal);
}

.db-stock-notify-row input[type="email"]:focus {
	outline: none;
	border-color: var(--wp--preset--color--teal);
}

.db-stock-notify-row button {
	flex: 0 0 auto;
	background: var(--wp--preset--color--forest);
	color: var(--wp--preset--color--cream);
	border: 0;
	border-radius: var(--db-radius-input-shape);
	padding: 0.75rem 1.25rem;
	font-family: var(--wp--preset--font-family--body);
	font-size: 14px;
	font-weight: 500;
	cursor: pointer;
	white-space: nowrap;
	transition: background 150ms ease;
}

.db-stock-notify-row button:hover {
	background: var(--wp--preset--color--forest-deep, #1E3529);
}

.db-stock-notify-row button:disabled {
	opacity: 0.6;
	cursor: default;
}

.db-stock-notify-privacy {
	font-size: 12px;
	color: var(--wp--preset--color--text-muted);
	margin: 0.75rem 0 0;
}

@media (max-width: 480px) {
	.db-stock-notify-row { flex-direction: column; }

	.db-stock-notify-row button { width: 100%; }
}

.db-pdp-review {
	box-sizing: border-box; /* anders telt de 1.5rem padding bovenop max-width → kaart 48px te breed in de carousel → peek verdwijnt */
	background: var(--wp--preset--color--warm-white);
	border: 1px solid var(--db-border-subtle);
	border-radius: var(--db-radius-lg); /* 12px — Martijn's rounded-xl */
	padding: 1.5rem;
	transition: box-shadow 300ms ease;
}

.db-pdp-review:hover {
	box-shadow: var(--db-shadow-md, 0 4px 16px var(--db-border-subtle));
}

.db-pdp-review-head {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	margin-bottom: 0.9rem;
}

.db-pdp-review-avatar {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	color: white;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 13px;
	font-weight: 600;
	flex-shrink: 0;
}

.db-pdp-review-meta {
	flex: 1;
	min-width: 0;
}

.db-pdp-review-author {
	display: block;
	font-size: 14px;
	font-weight: 500;
	color: var(--wp--preset--color--forest);
}

.db-pdp-review-date {
	display: block;
	font-size: 12px;
	color: var(--wp--preset--color--text-muted);
	margin-top: 2px;
}

.db-pdp-review-verified {
	color: var(--wp--preset--color--teal);
	font-weight: 500;
}

.db-pdp-review-head .db-stars {
	margin-top: 2px;
}

.db-pdp-review-text {
	font-size: 14px;
	line-height: 1.65;
	color: var(--wp--preset--color--charcoal-soft);
}

.db-pdp-review-text p {
	margin: 0;
}

.db-pdp-review-text p + p {
	margin-top: 0.65rem;
}

.db-pdp-reviews--empty .db-pdp-reviews-empty-head {
	padding-bottom: 1.25rem;
	margin-bottom: 1.5rem;
	border-bottom: 1px solid var(--db-border-subtle);
}

.db-pdp-reviews--empty .db-pdp-reviews-empty-text {
	color: var(--wp--preset--color--text-muted);
	font-size: 15px;
	margin: 0.4rem 0 0 0;
}

/* Review-form CTA — compacte pill-button, links uitgelijnd onder de lijst */
.db-pdp-review-form-cta-wrap {
	margin-top: 2rem;
	text-align: left;
}

.db-pdp-review-form-toggle {
	display: block;
	text-align: left; /* form-content links uitgelijnd binnen geopend toggle */
	max-width: 100%;
}

.db-pdp-review-form-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.65rem 1.4rem;
	background: transparent;
	border: 1px solid var(--wp--preset--color--forest);
	border-radius: 999px;
	font-size: 13px;
	font-weight: 500;
	color: var(--wp--preset--color--forest);
	cursor: pointer;
	list-style: none;
	transition: background 150ms, color 150ms;
}

.db-pdp-review-form-cta::-webkit-details-marker { display: none; }

.db-pdp-review-form-cta:hover {
	background: var(--wp--preset--color--forest);
	color: white;
}

.db-pdp-review-form-toggle[open] .db-pdp-review-form-cta {
	background: var(--wp--preset--color--forest);
	color: white;
}

.db-pdp-review-form-toggle .db-pdp-review-form-wrap {
	margin-top: 1.25rem;
	padding: 1.5rem;
	background: var(--wp--preset--color--cream);
	border-radius: var(--db-radius-lg);
	width: 100%;
}

/* Review-form zelf (native WC comment_form) — minimal styling */
.db-pdp-review-form {
	font-family: var(--wp--preset--font-family--body);
	font-size: 14px;
	color: var(--wp--preset--color--charcoal);
}

.db-pdp-review-form label {
	display: block;
	font-weight: 500;
	font-size: 13px;
	color: var(--wp--preset--color--charcoal-soft);
	margin-bottom: 0.4rem;
}

.db-pdp-review-form p {
	margin: 0 0 1rem 0;
}

.db-pdp-review-form input[type="text"],
.db-pdp-review-form input[type="email"],
.db-pdp-review-form input[type="url"],
.db-pdp-review-form textarea,
.db-pdp-review-form select {
	width: 100%;
	padding: 0.7rem 0.85rem;
	border: 1px solid var(--db-border-input);
	border-radius: var(--db-radius);
	background: white;
	font-family: inherit;
	font-size: 14px;
	color: var(--wp--preset--color--charcoal);
	transition: border-color 150ms;
	box-sizing: border-box;
}

.db-pdp-review-form input:focus,
.db-pdp-review-form textarea:focus,
.db-pdp-review-form select:focus {
	outline: none;
	border-color: var(--wp--preset--color--forest);
}

.db-pdp-review-form textarea {
	resize: vertical;
	min-height: 110px;
}

.db-pdp-review-form .form-submit {
	margin: 0;
}

.db-pdp-review-form .submit,
.db-pdp-review-form button[type="submit"] {
	background: var(--wp--preset--color--forest);
	color: white;
	border: none;
	padding: 0.75rem 1.5rem;
	border-radius: var(--db-radius);
	font-family: inherit;
	font-size: 14px;
	font-weight: 500;
	cursor: pointer;
	transition: background 150ms;
}

.db-pdp-review-form .submit:hover,
.db-pdp-review-form button[type="submit"]:hover {
	background: var(--wp--preset--color--forest-deep);
}

.db-pdp-review-form .comment-form-rating select {
	max-width: 280px;
}

/* WC's frontend.js injecteert óók een .stars-element vóór het rating-select.
   Normaal verbergt WC z'n eigen CSS de tekst en toont sterren-als-bg-image,
   maar wij dequeue-en WC default CSS dus de naked tekst ("1 van de 5 sterren")
   staat bloot. We tonen onze eigen widget — die van WC verbergen. */
.db-pdp-review-form .stars {
	display: none !important;
}

/* Interactieve star-rating-input — wordt door pdp.js geïnit op de hidden <select> */
.db-star-rating-input {
	display: inline-flex;
	gap: 2px;
	margin: 0.2rem 0 0;
}

.db-star-rating-star {
	background: transparent;
	border: 0;
	padding: 4px;
	cursor: pointer;
	color: var(--wp--preset--color--text-muted);
	line-height: 0;
	transition: color 100ms;
	border-radius: 4px;
}

.db-star-rating-star:hover,
.db-star-rating-star:focus-visible {
	color: var(--wp--preset--color--goal-energie);
	outline: none;
}

.db-star-rating-star:focus-visible {
	box-shadow: 0 0 0 2px rgba(196, 125, 58, 0.3);
}

.db-pdp-review-form .comment-notes,
.db-pdp-review-form .logged-in-as {
	font-size: 13px;
	color: var(--wp--preset--color--text-muted);
}

/* Cookies-consent: checkbox + label naast elkaar (overrult default block-label) */
.db-pdp-review-form .comment-form-cookies-consent {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 13px;
}

.db-pdp-review-form .comment-form-cookies-consent input[type="checkbox"] {
	width: auto;
	margin: 0;
	flex-shrink: 0;
}

.db-pdp-review-form .comment-form-cookies-consent label {
	display: inline;
	margin: 0;
	font-weight: 400;
	color: var(--wp--preset--color--charcoal-soft);
}

.db-pdp-reviews-closed {
	color: var(--wp--preset--color--text-muted);
	font-size: 14px;
}

.db-pdp-review-form-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.25rem;
	font-weight: 500;
	color: var(--wp--preset--color--forest);
	margin: 0 0 1rem 0;
}

/* USP-lijst onder add-to-cart — 2x2 grid op desktop, 1 kolom op mobile.
   Geen cream-blok / border — plat. */
.db-pdp-usps {
	list-style: none;
	padding: 0;
	margin: 1.5rem 0;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0.55rem 1.25rem;
	background: transparent;
	border: 0;
}

@media (max-width: 640px) {
	.db-pdp-usps {
		grid-template-columns: 1fr;
	}
}

.db-pdp-usps li {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	font-size: 13px;
	color: var(--wp--preset--color--charcoal-soft);
	margin: 0;
	padding: 0;
}

.db-pdp-usps svg {
	color: var(--wp--preset--color--teal);
	flex-shrink: 0;
	opacity: 0.9;
}

.db-pdp-usps a {
	color: var(--wp--preset--color--forest);
	text-decoration: none;
	transition: color 150ms;
}

.db-pdp-usps a:hover {
	color: var(--wp--preset--color--teal);
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* ===== PDP TABS (eigen block dutch-balance/pdp-tabs) ===== */
.db-pdp-tabs {
	margin: 0;
}

.db-pdp-tabs-nav {
	display: flex;
	gap: 0;
	border-bottom: 1px solid var(--db-border-subtle);
	margin: 0 0 2rem 0;
	/* Niet wrappen maar horizontaal scrollen als de tabs niet passen (mobiel). */
	flex-wrap: nowrap;
	overflow-x: auto;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}

.db-pdp-tabs-nav::-webkit-scrollbar {
	display: none;
}

.db-pdp-tab {
	background: transparent;
	border: 0;
	border-bottom: 2px solid transparent;
	padding: 0.9rem 1.4rem;
	font-family: var(--wp--preset--font-family--body);
	font-size: 14px;
	font-weight: 500;
	color: var(--wp--preset--color--text-muted);
	cursor: pointer;
	margin-bottom: -1px;
	transition: color 150ms, border-color 150ms;
	text-decoration: none; /* voor <a> anchor-variant */
	display: inline-block;
	flex: 0 0 auto; /* niet krimpen → scrollen i.p.v. samenpersen/wrappen */
	white-space: nowrap;
}

.db-pdp-tab:hover {
	color: var(--wp--preset--color--charcoal-soft);
}

.db-pdp-tab[aria-selected="true"] {
	color: var(--wp--preset--color--forest);
	border-bottom-color: var(--wp--preset--color--forest);
}

.db-pdp-tab:focus-visible {
	outline: 2px solid var(--wp--preset--color--teal);
	outline-offset: 4px;
	border-radius: 4px;
}

/* Panels */
.db-pdp-tab-panel {
	max-width: 800px;
}

.db-pdp-tab-panel[hidden] {
	display: none;
}

/* Eigenschappen — spec-tabel */
.db-pdp-specs {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
}

.db-pdp-specs tr {
	border-bottom: 1px solid var(--db-border-subtle);
}

.db-pdp-specs tr:first-child {
	border-top: 0; /* tegen eventuele default WP table-border */
}

.db-pdp-specs tr:last-child {
	border-bottom: 0;
}

.db-pdp-specs th,
.db-pdp-specs td {
	padding: 0.7rem 1rem 0.7rem 0;
	text-align: left;
	vertical-align: top;
	font-weight: 400;
}

/* Eerste rij flush met panel-top — gelijke startpositie als beschrijving-tab */
.db-pdp-specs tr:first-child th,
.db-pdp-specs tr:first-child td {
	padding-top: 0;
}

.db-pdp-specs th {
	font-weight: 500;
	color: var(--wp--preset--color--forest);
	width: 40%;
}

.db-pdp-specs td {
	color: var(--wp--preset--color--charcoal-soft);
}

/* Beoordelingen — review-list binnen tab */
.db-pdp-tab-panel .db-pdp-reviews-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1.5rem;
	flex-wrap: wrap;
	padding-bottom: 1rem;
	margin-bottom: 1.5rem;
	border-bottom: 1px solid var(--db-border-subtle);
}

.db-pdp-tab-panel .db-pdp-reviews-sub {
	font-size: 14px;
	color: var(--wp--preset--color--text-muted);
	margin: 0;
	font-weight: 300;
}

.db-pdp-tab-panel .db-pdp-reviews-score {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
}

.db-pdp-tab-panel .db-pdp-reviews-avg {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.5rem;
	font-weight: 500;
	color: var(--wp--preset--color--forest);
}

/* ===== PRODUCT DETAILS (tabs) ===== */
.db-pdp-details {
	max-width: 100% !important;
}

/* ===== RELATED PRODUCTS (eigen block dutch-balance/pdp-related) ===== */
.db-pdp-related {
	max-width: 100% !important;
}

.db-pdp-related-title {
	font-family: var(--wp--preset--font-family--heading) !important;
	font-size: clamp(1.5rem, 3vw, 2rem) !important;
	font-weight: 400 !important;
	color: var(--wp--preset--color--forest) !important;
	letter-spacing: -0.005em;
}

.db-pdp-related-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1.5rem;
}

@media (max-width: 1023px) {
	.db-pdp-related-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 767px) {
	/* Related = horizontale swipe-carousel i.p.v. grid (volgende kaart peekt). */
	.db-pdp-related-grid {
		display: flex;
		max-width: calc(100vw - 48px); /* sitebrede carousel-standaard: cap tegen shrink-wrap */
		grid-template-columns: none;
		gap: 1rem;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		/* Géén bleed: start bij de wrapper-rand, peek blijft binnen de wrapper
		   (identiek aan de reviews-carousel — één handschrift). */
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	.db-pdp-related-grid::-webkit-scrollbar {
		display: none;
	}

	.db-pdp-related-grid > .db-shop-card {
		/* Zelfde vaste peek (~48px) als de reviews-carousel. */
		flex: 0 0 calc(100% - 48px);
		max-width: 360px;
		scroll-snap-align: start;
	}
}

@media (max-width: 1023px) {
	.db-pdp-hero { gap: 2rem !important; }
}

@media (max-width: 767px) {
	.db-pdp-hero { flex-direction: column !important; }

	.db-pdp-gallery-col,
	.db-pdp-buybox {
		flex-basis: 100% !important;
		width: 100% !important;
	}

	/* WC-fallback-grid (.products) — onze eigen grid is nu een carousel (zie boven). */
	.db-pdp-related .products { grid-template-columns: repeat(2, 1fr) !important; }

	/* Titelgroep (eyebrow+titel+rating) staat op mobiel bóven de gallery (JS).
	   Eigen marges van de elementen behouden (geen block-gap-dubbeling). */
	.db-pdp-titlegroup > * {
		margin-block-start: 0;
	}

	/* Voorraad-pill op één regel houden i.p.v. "verzonden" naar een 2e regel laten
	   breken. 12px past tot 375px; nowrap voorkomt breuk op nóg smallere schermen. */
	.db-pdp-buybox .db-stock-label {
		white-space: nowrap;
		font-size: 12px;
	}
}

@media (max-width: 480px) {
	.db-pdp-title { font-size: 1.625rem !important; }

	.db-pdp-related .products { grid-template-columns: 1fr !important; }
}

/* ===== FIX 2026-07-01: PDP-eyebrow styling (verhuisd van inline post-terms) ===== */
.db-pdp-eyebrow,
.db-pdp-eyebrow a {
	font-size: 11px !important;
	text-transform: uppercase !important;
	letter-spacing: 0.16em !important;
	margin: 0 0 0.35rem !important;
}

/* ===== FIX 2026-07-01: PDP buybox-ritme =====
   Titel-cluster (eyebrow/titel/rating) plakte met 0px tegen de beschrijving.
   24px adem eronder = zelfde ritme als boven/onder de keyspecs (USP-lijst). */
.db-pdp-titlegroup {
	margin-bottom: 24px !important;
}

@media (max-width: 767px) {
	.db-pdp-titlegroup {
		margin-bottom: 0 !important;
	}
}

/* ===== FIX PDP titelgroep-ritme — rating niet tegen de titel plakken =====
   De rating had margin-top:-4px (gap titel->rating ~3px, veel krapper dan
   eyebrow->titel ~6px). Negatieve marge weg zodat de 3 items gelijk ademen. */
.db-pdp-titlegroup .db-rating {
	margin-top: 2px !important;
}

@media (min-width: 768px) {
	.db-pdp-review-form-toggle .db-pdp-review-form-wrap { width: calc(50% - 0.75rem); }
}

/* review-form-wrap box-sizing: padding meetellen zodat calc-breedte == review-kaart */
.db-pdp-review-form-toggle .db-pdp-review-form-wrap { box-sizing: border-box; }

/* ── PDP — sticky mobiele koopbalk (UX-lijst 2026-07-14) ──
   Meelopende "In winkelmand" onderaan, alleen mobiel. Verschijnt zodra de
   inline-koopknop uit beeld is (JS: initStickyCta). De knop submit het echte
   add-to-cart-form → cart.js doet AJAX + toast + teller. */
.db-pdp-sticky-cta {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 150;
	display: none;
	align-items: center;
	gap: 1rem;
	padding: 0.7rem 1.5rem;
	padding-bottom: calc( 0.7rem + env( safe-area-inset-bottom, 0px ) );
	background: #fff;
	border-top: 1px solid var(--db-border-subtle);
	box-shadow: 0 -4px 20px rgba( 0, 0, 0, 0.08 );
	transform: translateY( 110% );
	transition: transform 0.28s ease;
}

@media (max-width: 1023px) {
	.db-pdp-sticky-cta { display: flex; }

	/* Toast optillen zodat 'ie niet achter de balk valt. */
	body.db-has-sticky-cta .db-toast-root {
		bottom: calc( 4.75rem + env( safe-area-inset-bottom, 0px ) );
	}
}

.db-sticky-cta-info {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 4px;
	min-width: 0;
	flex: 1 1 auto;
	line-height: 1.25;
}

.db-sticky-cta-title {
	font-size: 12px;
	color: var(--wp--preset--color--charcoal-soft);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.db-sticky-cta-price {
	font-family: var(--wp--preset--font-family--body);
	font-size: 1.1rem;
	font-weight: 600;
	color: var(--wp--preset--color--forest);
}

.db-sticky-cta-price del {
	color: var(--wp--preset--color--text-muted);
	font-weight: 400;
	font-size: 0.8em;
	margin-right: 0.35em;
}

.db-sticky-cta-price ins {
	text-decoration: none;
}

.db-sticky-cta-btn {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	background: var(--wp--preset--color--forest);
	color: var(--wp--preset--color--cream);
	border: 0;
	padding: 0.85rem 1.5rem;
	border-radius: var(--db-radius-lg);
	font-family: var(--wp--preset--font-family--body);
	font-size: 14px;
	font-weight: 500;
	white-space: nowrap;
	cursor: pointer;
}

.db-sticky-cta-btn svg {
	width: 18px;
	height: 18px;
	flex: 0 0 auto;
}
