/* Printerland v2.1 — product page (PDP). Tokens come from assets/v21.css (--v-*); rules in DESIGN.md.
   Markup: inc/v21-product.php (buybox + sections), inc/pdp-description-format.php (spec table).
   Older shop.css / style.css / v21.css PDP rules still load underneath; everything here
   is scoped to .single-product and wins on specificity or !important where they used it. */

.single-product { --pdp-field: #D5DCE6; }

/* ---------- Page grid ---------- */
.single-product div.product {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	column-gap: 48px;
	row-gap: 0 !important;
	align-items: start;
	margin-top: 4px;
}
.single-product div.product::before,
.single-product div.product::after { content: none !important; display: none !important; }
.single-product div.product > * { grid-column: 1 / -1; min-width: 0; }
.single-product.woocommerce div.product div.images,
.single-product.woocommerce div.product div.summary,
.single-product div.product .woocommerce-product-gallery,
.single-product div.product .summary {
	float: none !important;
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
}
.single-product div.product > .v21-pdp-media { grid-row: 2; position: relative; }
.single-product .v21-pdp-media > .onsale {
	position: absolute !important;
	top: 12px !important;
	left: 12px !important;
	z-index: 5;
	margin: 0 !important;
}
@media (min-width: 922px) {
	.single-product div.product { grid-template-columns: minmax(0, 1.2fr) minmax(360px, 1fr); }
	.single-product div.product > .v21-pdp-media { grid-column: 1; align-self: start; }
	.single-product div.product .summary { grid-column: 2; grid-row: 2; }
	.single-product .v21-pdp-media:has(ol.flex-control-thumbs) > .onsale { left: 102px !important; }
}
@media (min-width: 1200px) {
	.single-product div.product { column-gap: 64px; }
}

/* Breadcrumb spans the page */
.single-product .v21-pdp-crumbs {
	grid-row: 1;
	margin: 0 0 14px !important;
	font-size: 0.84rem;
	color: var(--v-muted);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.single-product .v21-pdp-crumbs a { color: var(--v-muted); text-decoration: none; }
.single-product .v21-pdp-crumbs a:hover { color: var(--v-accent); }

/* ---------- Gallery ---------- */
.single-product div.product .woocommerce-product-gallery {
	position: relative;
	padding: 0 !important;
	background: none !important;
	box-shadow: none !important;
	border-radius: 0 !important;
	overflow: visible !important;
	opacity: 1 !important;
}
.single-product .woocommerce-product-gallery .flex-viewport,
.single-product .woocommerce-product-gallery > .woocommerce-product-gallery__wrapper {
	border: 1px solid var(--v-line);
	border-radius: var(--v-radius);
	background: #fff;
	overflow: hidden;
}
.single-product .woocommerce-product-gallery__image a { display: block; }
.single-product .woocommerce-product-gallery__image img,
.single-product .woocommerce-product-gallery__wrapper img {
	display: block;
	width: 100% !important;
	height: auto !important;
	max-height: none !important;
	aspect-ratio: 1;
	object-fit: contain;
	background: #fff;
	border-radius: 0 !important;
	padding: 6%;
	box-sizing: border-box;
}
.single-product .woocommerce-product-gallery .zoomImg { padding: 0; background: #fff; }
.single-product .woocommerce-product-gallery__trigger {
	top: 12px !important;
	right: 12px !important;
	left: auto !important;
	width: 44px !important;
	height: 44px !important;
	border-radius: 10px !important;
	background: rgb(255 255 255 / 0.94) !important;
	border: 1px solid var(--v-line) !important;
	box-shadow: none !important;
	z-index: 4;
	display: flex !important;
	align-items: center;
	justify-content: center;
	font-size: 0 !important;
	text-indent: 0 !important;
}
.single-product .woocommerce-product-gallery__trigger:hover { border-color: #C9D2DE !important; }
.single-product .woocommerce-product-gallery__trigger > * { display: none !important; }
.single-product .woocommerce-product-gallery__trigger::before {
	content: '' !important;
	position: static !important;
	display: block !important;
	width: 20px !important;
	height: 20px !important;
	border: 0 !important;
	border-radius: 0 !important;
	transform: none !important;
	background: var(--v-navy) !important;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5M11 8v6M8 11h6'/%3E%3C/svg%3E") center / contain no-repeat;
	        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5M11 8v6M8 11h6'/%3E%3C/svg%3E") center / contain no-repeat;
}
.single-product .woocommerce-product-gallery__trigger::after { content: none !important; display: none !important; }

/* Thumbnail strip: horizontal scroller on phones, vertical rail on desktop */
.single-product .woocommerce-product-gallery ol.flex-control-thumbs {
	display: flex !important;
	gap: 8px;
	margin: 10px 0 0 !important;
	padding: 2px !important;
	list-style: none;
	overflow-x: auto;
	scrollbar-width: none;
	scroll-snap-type: x proximity;
}
.single-product .woocommerce-product-gallery ol.flex-control-thumbs::-webkit-scrollbar { display: none; }
.single-product .woocommerce-product-gallery ol.flex-control-thumbs li {
	flex: 0 0 64px;
	width: 64px !important;
	height: 64px;
	margin: 0 !important;
	float: none !important;
	scroll-snap-align: start;
}
.single-product .woocommerce-product-gallery ol.flex-control-thumbs li img {
	width: 100% !important;
	height: 100% !important;
	object-fit: contain;
	padding: 5px;
	box-sizing: border-box;
	background: #fff;
	border: 1px solid var(--v-line);
	border-radius: 8px;
	opacity: 1 !important;
	cursor: pointer;
	transition: border-color 0.15s ease;
}
.single-product .woocommerce-product-gallery ol.flex-control-thumbs li img:hover { border-color: #B9C3D2; }
.single-product .woocommerce-product-gallery ol.flex-control-thumbs li img.flex-active {
	border: 2px solid var(--v-navy);
	padding: 4px;
}
@media (min-width: 922px) {
	.single-product .woocommerce-product-gallery:has(ol.flex-control-thumbs) {
		display: grid !important;
		grid-template-columns: 76px minmax(0, 1fr);
		gap: 14px;
		align-items: start;
	}
	.single-product .woocommerce-product-gallery:has(ol.flex-control-thumbs) .flex-viewport { grid-column: 2; grid-row: 1; }
	.single-product .woocommerce-product-gallery ol.flex-control-thumbs {
		grid-column: 1;
		grid-row: 1;
		flex-direction: column;
		margin: 0 !important;
		max-height: 560px;
		overflow: auto;
		scroll-snap-type: y proximity;
	}
	.single-product .woocommerce-product-gallery ol.flex-control-thumbs li { flex-basis: 76px; width: 76px !important; height: 76px; }
	.single-product .woocommerce-product-gallery:has(ol.flex-control-thumbs) .woocommerce-product-gallery__trigger { right: 12px !important; }
}

/* ---------- Buybox ---------- */
.single-product .printerland-buybox {
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	background: none !important;
	margin: 0 !important;
	display: flex;
	flex-direction: column;
	gap: 0;
}
@media (max-width: 921px) {
	.single-product .printerland-buybox { margin-top: 18px !important; }
}
.v21-pdp-kicker {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 14px;
	margin: 0 0 6px !important;
	font-size: 0.85rem;
	color: var(--v-muted);
}
.v21-pdp-brand {
	font-weight: 700;
	color: var(--v-navy) !important;
	text-decoration: none;
}
a.v21-pdp-brand:hover { color: var(--v-accent) !important; }
.v21-pdp-sku { font-variant-numeric: tabular-nums; }
.single-product .printerland-buybox .product_title {
	margin: 0 0 14px !important;
	font-size: clamp(1.3rem, 3.4vw, 1.75rem) !important;
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.01em;
	color: var(--v-ink);
	text-wrap: balance;
}

/* Price block */
.v21-pdp-pricebox {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 12px;
	padding: 0 0 16px;
	border-bottom: 1px solid var(--v-line);
}
.single-product .printerland-buybox .v21-pdp-pricebox .price {
	display: flex !important;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 2px 12px;
	margin: 0 !important;
	font-size: clamp(1.75rem, 5vw, 2.1rem) !important;
	line-height: 1.1;
	font-weight: 800;
	color: var(--v-ink) !important;
	font-variant-numeric: tabular-nums;
}
.single-product .printerland-buybox .v21-pdp-pricebox .price ins { order: 1; text-decoration: none; color: var(--v-accent) !important; font-weight: 800; }
.single-product .printerland-buybox .v21-pdp-pricebox .price del {
	order: 2;
	font-size: 1.05rem !important;
	font-weight: 500;
	color: var(--v-muted) !important;
	opacity: 1;
}
.single-product .printerland-buybox .v21-pdp-pricebox .price del .amount { color: inherit; }
.v21-pdp-save {
	display: inline-flex;
	align-items: center;
	min-height: 28px;
	padding: 0 10px;
	border-radius: 8px;
	background: rgb(200 85 56 / 0.1);
	color: var(--v-accent-hover);
	font-size: 0.86rem;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}
.v21-pdp-stock {
	flex-basis: 100%;
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 2px 0 0 !important;
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--v-muted);
}
.v21-pdp-stock.is-in { color: var(--v-green); }
.v21-pdp-dot { width: 8px; height: 8px; border-radius: 50%; background: #9AA6B8; flex: none; }
.v21-pdp-stock.is-in .v21-pdp-dot { background: #2EA043; box-shadow: 0 0 0 3px rgb(46 160 67 / 0.16); }

/* Key specs */
.v21-pdp-keyspecs { padding: 14px 0 16px; border-bottom: 1px solid var(--v-line); }
.v21-pdp-keyspecs-title { margin: 0 0 8px !important; font-size: 0.95rem; font-weight: 700; color: var(--v-ink); }
.v21-pdp-keyspecs dl { margin: 0; display: grid; gap: 6px; }
.v21-pdp-keyspecs dl > div {
	display: grid !important;
	grid-template-columns: minmax(0, 13em) minmax(0, 1fr);
	gap: 12px;
	font-size: 0.9rem;
	line-height: 1.4;
}
.v21-pdp-keyspecs dt { color: var(--v-muted); font-weight: 400; margin: 0; }
.v21-pdp-keyspecs dd { color: var(--v-ink); font-weight: 500; margin: 0; text-align: left !important; }
.v21-pdp-keyspecs-more {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	min-height: 32px;
	margin-top: 6px;
	font-size: 0.88rem;
	font-weight: 600;
	color: var(--v-navy) !important;
	text-decoration: none;
}
.v21-pdp-keyspecs-more:hover { color: var(--v-accent) !important; }
.v21-pdp-keyspecs-more .ph-svg-icon { width: 16px; height: 16px; }

/* Actions */
.v21-pdp-buy {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 10px;
	padding: 18px 0;
}
.single-product .printerland-buybox .v21-pdp-buy .printerland-pdp-buy-now {
	flex: 1 1 100%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	max-width: none;
	min-height: 52px;
	height: auto;
	margin: 0 !important;
	padding: 0 20px;
	border: 0;
	border-radius: 10px;
	background: var(--v-accent) !important;
	color: #fff;
	font-size: 1.08rem;
	font-weight: 700;
	box-shadow: none;
	cursor: pointer;
	transition: background-color 0.15s ease, transform 0.1s ease;
}
.single-product .printerland-buybox .v21-pdp-buy .printerland-pdp-buy-now:hover { background: var(--v-accent-hover) !important; }
.single-product .printerland-buybox .v21-pdp-buy .printerland-pdp-buy-now:active { transform: translateY(1px); }
.single-product .printerland-buybox .v21-pdp-buy form.cart {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	flex-wrap: nowrap;
	align-items: stretch;
	gap: 10px;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
}
.single-product .printerland-buybox .v21-pdp-buy form.variations_form { flex-basis: 100%; flex-wrap: wrap; }
.single-product .printerland-buybox .v21-pdp-buy form.variations_form .single_variation_wrap { width: 100%; }
.single-product .printerland-buybox .v21-pdp-buy form.cart .single_add_to_cart_button.button {
	flex: 1 1 auto;
	min-width: 0;
	height: 48px;
	min-height: 48px;
	margin: 0 !important;
	padding: 0 16px !important;
	border-radius: 10px !important;
	background: #fff !important;
	border: 1.5px solid var(--v-navy) !important;
	color: var(--v-navy) !important;
	font-size: 0.98rem !important;
	font-weight: 700 !important;
	line-height: 1 !important;
	white-space: nowrap;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
}
.single-product .printerland-buybox .v21-pdp-buy form.cart .single_add_to_cart_button.button:hover { background: var(--v-panel) !important; }
.single-product .printerland-buybox .v21-pdp-buy form.cart .single_add_to_cart_button.loading { opacity: 0.7; }
.single-product .printerland-buybox .v21-pdp-buy form.cart .single_add_to_cart_button.added { border-color: var(--v-green) !important; color: var(--v-green) !important; }
.single-product .printerland-buybox .v21-pdp-buy form.cart .single_add_to_cart_button::after { display: none !important; }
.single-product .printerland-buybox .v21-pdp-buy form.cart .added_to_cart {
	display: inline-flex;
	align-items: center;
	padding: 0 4px;
	font-size: 0.88rem;
	font-weight: 600;
	color: var(--v-green);
	white-space: nowrap;
}

/* Quantity stepper */
.single-product .v21-pdp-buy .quantity { margin: 0 !important; flex: none; }
.single-product .v21-pdp-buy .quantity.ph-qty-stepper {
	display: inline-flex;
	align-items: stretch;
	height: 48px !important;
	border: 1px solid var(--pdp-field);
	border-radius: 10px;
	background: #fff;
	overflow: hidden;
}
.single-product .v21-pdp-buy .ph-qty-stepper .ph-qty-btn {
	width: 40px;
	height: 100%;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	color: var(--v-navy) !important;
	font-size: 1.25rem;
	font-weight: 500;
	line-height: 1;
	cursor: pointer;
	box-shadow: none !important;
}
.single-product .v21-pdp-buy .ph-qty-stepper .ph-qty-btn:hover { background: var(--v-panel) !important; }
.single-product .v21-pdp-buy .ph-qty-stepper .ph-qty-btn:disabled { color: #B9C3D2 !important; cursor: default; background: transparent !important; }
.single-product .v21-pdp-buy .ph-qty-stepper input.qty {
	width: 40px !important;
	height: 100% !important;
	min-height: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: #fff !important;
	color: var(--v-ink);
	font-size: 1rem;
	font-weight: 600;
	text-align: center;
	font-variant-numeric: tabular-nums;
	-moz-appearance: textfield;
	box-shadow: none !important;
}
.single-product .v21-pdp-buy .ph-qty-stepper input.qty::-webkit-outer-spin-button,
.single-product .v21-pdp-buy .ph-qty-stepper input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.single-product .v21-pdp-buy .ph-qty-stepper:focus-within { border-color: var(--v-navy); box-shadow: 0 0 0 3px rgb(34 54 84 / 0.15); }
.single-product .v21-pdp-buy .ph-qty-stepper input.qty:focus-visible { outline: none; }

/* Quiet wishlist / compare */
.single-product .v21-pdp-quiet {
	display: flex;
	gap: 8px;
	margin: 0 !important;
	flex: none;
}
.single-product .v21-pdp-quiet .ph-pdp-action {
	width: 48px;
	height: 48px;
	padding: 0 !important;
	border: 1px solid var(--v-line) !important;
	border-radius: 10px !important;
	background: #fff !important;
	color: var(--v-navy) !important;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.single-product .v21-pdp-quiet .ph-pdp-action:hover { background: var(--v-panel) !important; color: var(--v-accent) !important; }
.single-product .v21-pdp-quiet .ph-pdp-action.is-active { color: var(--v-accent) !important; border-color: rgb(200 85 56 / 0.45) !important; }
.single-product .v21-pdp-quiet .ph-pdp-action.is-active .ph-svg-icon-heart { fill: currentColor; }
.single-product .v21-pdp-quiet .ph-svg-icon { width: 20px; height: 20px; }

/* Out of stock */
.v21-pdp-oos-note { flex-basis: 100%; margin: 0 !important; font-size: 0.92rem; color: var(--v-text); }
.v21-pdp-oos-call {
	flex: 1 1 0;
	min-width: 0;
	white-space: nowrap;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 48px;
	padding: 0 18px;
	border-radius: 10px;
	border: 1.5px solid var(--v-navy);
	background: #fff;
	color: var(--v-navy) !important;
	font-weight: 700;
	text-decoration: none;
}
.v21-pdp-oos-call:hover { background: var(--v-panel); }
.v21-pdp-oos-call .ph-svg-icon { width: 18px; height: 18px; }

/* Delivery + trust facts */
.v21-pdp-facts {
	margin: 0 !important;
	padding: 4px 16px !important;
	list-style: none !important;
	border: 1px solid var(--v-line);
	border-radius: var(--v-radius);
}
.v21-pdp-facts li { margin: 0 !important; }
.v21-pdp-facts li + li { border-top: 1px solid var(--v-line); }
.v21-pdp-facts a {
	display: flex;
	align-items: center;
	gap: 12px;
	min-height: 44px;
	padding: 8px 0;
	font-size: 0.92rem;
	font-weight: 500;
	line-height: 1.35;
	color: var(--v-ink) !important;
	text-decoration: none;
	font-variant-numeric: tabular-nums;
}
.v21-pdp-facts a:hover { color: var(--v-accent) !important; }
.v21-pdp-facts .ph-svg-icon { width: 20px; height: 20px; flex: none; color: var(--v-navy); }

/* Payment chips */
.v21-pdp-pay {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin: 14px 0 0;
}
.v21-pdp-pay span {
	display: inline-flex;
	align-items: center;
	height: 28px;
	padding: 0 10px;
	border: 1px solid var(--v-line);
	border-radius: 8px;
	font-size: 0.78rem;
	font-weight: 600;
	color: var(--v-muted);
}
.v21-pdp-pay .v21-pdp-pay-label { border: 0; padding: 0 6px 0 0; font-size: 0.85rem; font-weight: 500; }

/* Help */
.v21-pdp-help {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: center;
	gap: 12px 14px;
	margin-top: 16px;
	padding: 16px;
	border-radius: var(--v-radius-lg);
	background: var(--v-panel);
}
.v21-pdp-help-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: 10px;
	background: #fff;
	color: var(--v-navy);
}
.v21-pdp-help-icon .ph-svg-icon { width: 24px; height: 24px; stroke-width: 1.6; }
.v21-pdp-help-title { margin: 0 !important; font-weight: 700; color: var(--v-ink); font-size: 0.98rem; }
.v21-pdp-help-text { margin: 2px 0 0 !important; font-size: 0.86rem; color: var(--v-text); line-height: 1.4; }
.v21-pdp-help-call {
	grid-column: 1 / -1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 18px;
	border-radius: 10px;
	background: var(--v-navy);
	color: #fff !important;
	font-weight: 700;
	text-decoration: none;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
.v21-pdp-help-call:hover { background: var(--v-ink); }
.v21-pdp-help-call .ph-svg-icon { width: 18px; height: 18px; }
@media (min-width: 480px) {
	.v21-pdp-help { grid-template-columns: auto minmax(0, 1fr) auto; }
	.v21-pdp-help-call { grid-column: auto; }
}

/* ---------- Sections (replace the tabs) ---------- */
.single-product .v21-pdp-sections {
	display: grid;
	gap: 32px;
	margin: 48px 0 0;
	padding-top: 36px;
	border-top: 1px solid var(--v-line);
	scroll-margin-top: 20px;
}
@media (min-width: 1024px) {
	.single-product .v21-pdp-sections.has-many:has(.v21-pdp-section--desc):has(.v21-pdp-section--specs) {
		grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
		column-gap: 64px;
		align-items: start;
	}

	.single-product .v21-pdp-sections.has-many .v21-pdp-section:not(.v21-pdp-section--desc):not(.v21-pdp-section--specs) { grid-column: 1 / -1; }
}
.v21-pdp-section { min-width: 0; scroll-margin-top: 20px; }
.v21-pdp-section > h2 {
	margin: 0 0 14px !important;
	font-size: 1.35rem !important;
	font-weight: 700;
	line-height: 1.25;
	color: var(--v-ink);
}
.v21-pdp-section-body { color: var(--v-text); font-size: 1rem; line-height: 1.6; }
.v21-pdp-section-body > p,
.v21-pdp-section-body .ph-desc-text { max-width: 72ch; margin: 0 0 12px; }
.v21-pdp-section-body > *:last-child { margin-bottom: 0; }
.v21-pdp-section-body img { border-radius: var(--v-radius); height: auto; }
.v21-pdp-section-body h3,
.v21-pdp-section-body h4,
.v21-pdp-section-body .ph-desc-heading,
.v21-pdp-section-body .ph-compat-heading {
	margin: 22px 0 10px !important;
	font-size: 1.02rem !important;
	font-weight: 700;
	color: var(--v-ink) !important;
}
.v21-pdp-section-body > h3:first-child,
.v21-pdp-section-body > h4:first-child { margin-top: 0 !important; }

/* Spec table */
.v21-pdp-section .ph-spec-grid {
	display: block !important;
	margin: 0 0 16px !important;
	border: 1px solid var(--v-line) !important;
	border-radius: var(--v-radius) !important;
	box-shadow: none !important;
	overflow: hidden;
}
.v21-pdp-section .ph-spec-row {
	display: grid !important;
	grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
	gap: 16px;
	padding: 11px 16px !important;
	background: #fff !important;
	border: 0 !important;
}
.v21-pdp-section .ph-spec-row:nth-child(odd) { background: #F6F8FB !important; }
.v21-pdp-section .ph-spec-row dt,
.v21-pdp-section .ph-spec-row dd {
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: none !important;
	font-size: 0.93rem !important;
	line-height: 1.45;
	text-align: left !important;
}
.v21-pdp-section .ph-spec-row dt { color: var(--v-muted) !important; font-weight: 400 !important; }
.v21-pdp-section .ph-spec-row dd { color: var(--v-ink) !important; font-weight: 500 !important; overflow-wrap: anywhere; }
@media (max-width: 480px) {
	/* Phones: label | value on one row, like big stores' spec tables. */
	.v21-pdp-section .ph-spec-row { grid-template-columns: minmax(0, 42%) minmax(0, 1fr); gap: 12px; padding: 9px 12px !important; align-items: baseline; }
	.v21-pdp-section .ph-spec-row dt { font-size: 0.86rem !important; }
	.v21-pdp-section .ph-spec-row dd { font-size: 0.92rem !important; }
}

/* Compatibility chips + bullets */
.v21-pdp-section .ph-compat-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 16px; }
.v21-pdp-section .ph-compat-chip {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	padding: 0 12px;
	border-radius: 8px;
	background: var(--v-panel);
	color: var(--v-ink);
	font-size: 0.86rem;
	font-weight: 500;
}
.v21-pdp-section .ph-desc-bullets li::before { background: var(--v-navy) !important; }
.v21-pdp-section ul:not([class]) { padding-left: 1.2em; margin: 0 0 12px; }

/* Attributes table (variable products) */
.v21-pdp-section table.woocommerce-product-attributes {
	border: 1px solid var(--v-line) !important;
	border-radius: var(--v-radius);
	border-collapse: separate;
	overflow: hidden;
	margin: 0;
}
.v21-pdp-section table.woocommerce-product-attributes th,
.v21-pdp-section table.woocommerce-product-attributes td {
	padding: 11px 16px !important;
	border: 0 !important;
	font-size: 0.93rem;
	background: none;
}
.v21-pdp-section table.woocommerce-product-attributes th { color: var(--v-muted); font-weight: 400; width: 40%; }
.v21-pdp-section table.woocommerce-product-attributes tr:nth-child(odd) { background: #F6F8FB; }

/* Tabs markup never renders now; hide any stray copy (e.g. cached fragments). */
.single-product .woocommerce-tabs { display: none !important; }

/* ---------- Related / up-sells ---------- */
.single-product div.product section.related,
.single-product div.product section.up-sells {
	margin: 48px 0 0 !important;
	padding: 36px 0 0 !important;
	border-top: 1px solid var(--v-line);
}
.single-product section.related > h2,
.single-product section.up-sells > h2 {
	margin: 0 0 16px !important;
	font-size: 1.35rem !important;
	font-weight: 700;
	color: var(--v-ink);
}

/* ---------- Mobile ---------- */
@media (max-width: 767px) {
	/* Buy-now is the one primary action on phones (buy-now + sticky bar);
	   the add-to-cart form stays hidden (shop.css rule), quiet icons remain. */
	.single-product .printerland-buybox:has(.printerland-pdp-buy-now) .v21-pdp-buy form.cart { display: none !important; }
	.single-product .printerland-buybox .v21-pdp-buy .printerland-pdp-buy-now { flex: 1 1 0; min-width: 0; min-height: 52px; }
	.single-product .printerland-buybox:has(.printerland-pdp-buy-now) .v21-pdp-quiet .ph-pdp-action { width: 52px; height: 52px; }
	.single-product .printerland-buybox { margin-bottom: 0 !important; }
	.single-product .v21-pdp-sections { margin-top: 32px; padding-top: 28px; gap: 28px; }
	.single-product div.product section.related,
	.single-product div.product section.up-sells { margin-top: 32px !important; padding-top: 28px !important; }
	body.single-product:has(.printerland-mobile-buy-bar) { padding-bottom: calc(72px + env(safe-area-inset-bottom)); }

	.single-product .printerland-mobile-buy-bar {
		gap: 12px;
		padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
		background: #fff;
		backdrop-filter: none;
		border-top: 1px solid var(--v-line);
		box-shadow: 0 -8px 24px -12px rgb(14 32 65 / 0.22);
	}
	.single-product .printerland-mobile-buy-bar-price { color: var(--v-ink); font-size: 1.15rem; font-variant-numeric: tabular-nums; }
	.single-product .printerland-mobile-buy-bar-price del { color: var(--v-muted); }
	.single-product .printerland-mobile-buy-bar-price ins { color: var(--v-accent); }
	.single-product .printerland-mobile-buy-bar-buynow {
		height: 48px;
		border-radius: 10px !important;
		box-shadow: none !important;
		font-size: 1rem;
	}
	.single-product .printerland-mobile-buy-bar-buynow:hover { background: var(--v-accent-hover) !important; }
}
@media (max-width: 559px) {
	.v21-pdp-keyspecs dl > div { grid-template-columns: minmax(0, 42%) minmax(0, 1fr); gap: 10px; }
}
.single-product .v21-pdp-sections:not(.has-many) .v21-pdp-section,
.single-product .v21-pdp-sections.has-many:not(:has(.v21-pdp-section--desc)) .v21-pdp-section { max-width: 880px; }
.v21-pdp-section table.woocommerce-product-attributes td { color: var(--v-ink); font-weight: 500; font-style: normal !important; }
.v21-pdp-section table.woocommerce-product-attributes td p { margin: 0; font-style: normal; }
@media (min-width: 1024px) {
	.v21-pdp-section--additional_information { max-width: 880px; }
}

/* Compact content: description clamps to ~7 lines, specs to 8 rows;
   assets/v21.js adds the toggle only when content is actually longer. */
.v21-clamp.is-clampable:not(.is-open) {
	max-height: 11.5em;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(#000 60%, transparent);
	mask-image: linear-gradient(#000 60%, transparent);
}
.v21-specs-wrap.is-clampable:not(.is-open) .v21-x { display: none !important; }
/* Grouped spec sheets: each group a compact card; two columns on wide
   screens (break-inside keeps a group together). */
.v21-spec-group { break-inside: avoid; margin: 0 0 14px; }
.v21-spec-group .ph-desc-heading { margin: 0 0 6px !important; font-size: 0.95rem !important; font-weight: 700; color: var(--v-ink); }
.v21-spec-group .ph-spec-grid { margin: 0 !important; }
@media (min-width: 1100px) {
	.single-product .v21-pdp-sections:not(:has(.v21-pdp-section--desc)) .v21-pdp-section--specs:has(.v21-spec-group) { max-width: none; }
	.v21-pdp-sections:not(:has(.v21-pdp-section--desc)) .v21-specs-wrap:has(.v21-spec-group) { columns: 2; column-gap: 32px; }
}
.v21-more-btn,
.v21-more-btn:hover,
.v21-more-btn:focus {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 44px;
	margin-top: 8px;
	padding: 0 16px;
	border: 1.5px solid var(--v-line) !important;
	border-radius: 10px;
	background: var(--v-surface) !important;
	color: var(--v-navy) !important;
	font-weight: 700;
	box-shadow: none !important;
	cursor: pointer;
}
.v21-more-btn:hover { border-color: var(--v-navy) !important; }
.v21-more-btn::after { content: ""; width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translateY(-2px); }
.v21-more-btn[aria-expanded="true"]::after { transform: rotate(225deg) translateY(-2px); }
.v21-pdp-section--desc .v21-pdp-section-body p { max-width: 68ch; }

/* Compatible-printer chips link to their model pages (inc/printer-models.php) */
a.ph-compat-chip { color: inherit; text-decoration: none; }
a.ph-compat-chip:hover { color: var(--v-accent); text-decoration: underline; text-underline-offset: 2px; }

/* ---------- Gallery: no layout shift while the slider starts ----------
   Before WooCommerce's flexslider runs, every photo is stacked in the page
   (a 3-photo gallery was 2,700px tall on phones) and the thumbnail strip
   does not exist yet; both then snap into place and push the buy box
   (Lighthouse CLS 0.5-0.9). Until init — the wrapper is still a direct
   child of the gallery; flexslider moves it into .flex-viewport — show only
   the first photo and reserve the strip. */
.single-product .woocommerce-product-gallery > .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:nth-child(n+2) { display: none !important; }
@media (max-width: 921px) {
	/* strip below: 10px margin + 2x2px padding + 64px thumbs */
	.single-product div.product .woocommerce-product-gallery:has(> .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:nth-child(2)) { padding-bottom: 78px !important; }
}
@media (min-width: 922px) {
	/* rail on the left: 76px thumbs + 14px gap */
	.single-product div.product .woocommerce-product-gallery:has(> .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:nth-child(2)) { padding-left: 90px !important; }
}
/* After init the slider viewport animates its height (smoothHeight) and
   briefly pushed the buy box off screen on phones. Product photos are square
   (object-fit: contain), so a fixed square viewport never moves the page. */
.single-product .woocommerce-product-gallery .flex-viewport { height: auto !important; aspect-ratio: 1 / 1; }
.single-product .woocommerce-product-gallery .flex-viewport .woocommerce-product-gallery__wrapper { height: 100%; }
