/**
 * Related / upsells / cross-sells (downsell) product cards
 * ─────────────────────────────────────────────────────────
 * Make recommendation carousels (and grid fallback) share the same card
 * dimensions and media frame as shop archive + homepage product loops.
 *
 * Loaded after premium-polish / single-product so these rules win over the
 * legacy related-section img aspect-ratio + width:auto chrome that squash
 * fade/organic/classic loop cards inside carousel slides.
 *
 * @package ProWPCommerce
 * @since   2.0.55
 * @since   2.0.71 RTL one-track model + content-width slide basis contract.
 * @since   2.0.72 CSF per-view slide cap (no lone full-bleed) + media frame.
 * @since   2.0.73 RTL/LTR inline-start packing + equal fill when slideCount >= perView.
 * @since   2.0.75 Exact-fill flex grow + equal-height card footers + shared price tokens.
 * @since   2.0.76 Shared card title/price size tokens; kill inherit vs PDP clamp bleed.
 */

/* ── Section shell: never expand past content column (RTL-safe) ── */
.related.products,
.upsells.products,
.up-sells.products,
.up-sells,
.cross-sells,
.prowp-recommendation-carousel,
.prowp-recently-viewed {
	max-width: 100%;
	min-width: 0;
	box-sizing: border-box;
}

/* ── Pre-JS slide basis from CSF counts (set as inline CSS vars) ── */
.prowp-recommendation-carousel {
	--prowp-carousel-gap: var(--prowp-reco-gap-desktop, 20px);
	--prowp-reco-per-view: var(--prowp-reco-per-view-desktop, 3);
}

@media (max-width: 1024px) {
	.prowp-recommendation-carousel {
		--prowp-carousel-gap: var(--prowp-reco-gap-tablet, 16px);
		--prowp-reco-per-view: var(--prowp-reco-per-view-tablet, 2);
	}
}

@media (max-width: 768px) {
	.prowp-recommendation-carousel {
		--prowp-carousel-gap: var(--prowp-reco-gap-mobile, 12px);
		--prowp-reco-per-view: var(--prowp-reco-per-view-mobile, 1);
	}
}

/* Track-wrap is the sizing container so CSF max stays correct after JS
   grows the flex track wider than the viewport. */
.prowp-recommendation-carousel .prowp-carousel__track-wrap {
	container-type: inline-size;
	container-name: prowp-reco-track;
	width: 100%;
	max-width: 100%;
	/* Shared CSF slide-width formula — never stretch a lone card to 100%. */
	--prowp-reco-slide-basis: calc(
		(100% - (var(--prowp-reco-per-view) - 1) * var(--prowp-carousel-gap)) / var(--prowp-reco-per-view)
	);
}

@supports (width: 100cqw) {
	.prowp-recommendation-carousel .prowp-carousel__track-wrap {
		--prowp-reco-slide-basis: calc(
			(100cqw - (var(--prowp-reco-per-view) - 1) * var(--prowp-carousel-gap)) / var(--prowp-reco-per-view)
		);
	}
}

.prowp-recommendation-carousel:not([data-prowp-carousel-init="1"]) .prowp-carousel__track-wrap {
	overflow-x: auto;
	overflow-y: hidden;
}

.prowp-recommendation-carousel:not([data-prowp-carousel-init="1"]) .prowp-carousel__track {
	display: flex !important;
	flex-wrap: nowrap !important;
	grid-template-columns: none !important;
	gap: var(--prowp-carousel-gap) !important;
	min-width: 100% !important;
	width: max-content !important;
	max-width: none !important;
	box-sizing: border-box !important;
	justify-content: flex-start !important;
}

.prowp-recommendation-carousel:not([data-prowp-carousel-init="1"]) .prowp-carousel__slide,
.prowp-recommendation-carousel:not([data-prowp-carousel-init="1"]) ul.products.prowp-carousel__track > li.product.prowp-carousel__slide,
html body.woocommerce .prowp-recommendation-carousel:not([data-prowp-carousel-init="1"]) ul.products.prowp-carousel__track > li.product.prowp-carousel__slide {
	--prowp-slide-basis: var(--prowp-reco-slide-basis);
	flex: 0 0 var(--prowp-slide-basis) !important;
	width: var(--prowp-slide-basis) !important;
	max-width: var(--prowp-slide-basis) !important;
	min-width: 0 !important;
	margin: 0 !important;
	float: none !important;
	box-sizing: border-box !important;
}

/* Post-init: honour carousel.js --prowp-slide-basis (px). Do NOT min() against
   --prowp-reco-slide-basis — that caps cards below the measured wrap width and
   leaves a false under-filled gap when slideCount >= perView. */
.prowp-recommendation-carousel[data-prowp-carousel-init="1"] ul.products.prowp-carousel__track > li.product.prowp-carousel__slide,
html body.woocommerce .prowp-recommendation-carousel[data-prowp-carousel-init="1"] ul.products.prowp-carousel__track > li.product.prowp-carousel__slide {
	flex: 0 0 var(--prowp-slide-basis, var(--prowp-reco-slide-basis)) !important;
	width: var(--prowp-slide-basis, var(--prowp-reco-slide-basis)) !important;
	max-width: var(--prowp-slide-basis, var(--prowp-reco-slide-basis)) !important;
	min-width: 0 !important;
	margin: 0 !important;
	float: none !important;
	box-sizing: border-box !important;
}

/*
 * Fill / pack contract (related, upsells, cross-sells, recently viewed):
 * - data-prowp-track-pack="fill"  → slideCount >= perView: row spans wrap
 * - data-prowp-track-pack="start" → slideCount < perView: pack to inline-start
 * Track stays direction:ltr for translate math. Pack "start" on RTL uses
 * flex-end (= physical right). Never flex-end while overflowing (would show
 * the wrong end of the track at index 0).
 */
.prowp-recommendation-carousel .prowp-carousel__track,
.prowp-recommendation-carousel ul.products.prowp-carousel__track,
.prowp-recommendation-carousel[data-prowp-carousel-init="1"] .prowp-carousel__track,
.prowp-recommendation-carousel[data-prowp-carousel-init="1"] ul.products.prowp-carousel__track,
html body.woo-premium-ui.woocommerce-page.woocommerce .prowp-recommendation-carousel ul.products.prowp-carousel__track,
html body.woo-premium-ui .prowp-recommendation-carousel ul.products.prowp-carousel__track {
	min-width: 100% !important;
	width: max-content !important;
	max-width: none !important;
	box-sizing: border-box !important;
	justify-content: flex-start !important;
	align-items: stretch !important;
}

/* Exact fill (pack=fill, not scrollable): 100% track + equal flex slides
   beat px-rounding / single-product min-width:0 that left a side gap. */
.prowp-recommendation-carousel[data-prowp-track-pack="fill"]:not([data-prowp-carousel-scrollable="1"]) .prowp-carousel__track,
.prowp-recommendation-carousel[data-prowp-track-pack="fill"]:not([data-prowp-carousel-scrollable="1"]) ul.products.prowp-carousel__track,
html body.woo-premium-ui .prowp-recommendation-carousel[data-prowp-track-pack="fill"]:not([data-prowp-carousel-scrollable="1"]) ul.products.prowp-carousel__track {
	width: 100% !important;
	min-width: 100% !important;
	max-width: 100% !important;
}

.prowp-recommendation-carousel[data-prowp-track-pack="fill"]:not([data-prowp-carousel-scrollable="1"]) .prowp-carousel__slide,
.prowp-recommendation-carousel[data-prowp-track-pack="fill"]:not([data-prowp-carousel-scrollable="1"]) ul.products.prowp-carousel__track > li.product.prowp-carousel__slide,
html body.woocommerce .prowp-recommendation-carousel[data-prowp-track-pack="fill"]:not([data-prowp-carousel-scrollable="1"]) ul.products.prowp-carousel__track > li.product.prowp-carousel__slide {
	flex: 1 1 0% !important;
	width: auto !important;
	max-width: none !important;
	min-width: 0 !important;
}

[dir="rtl"] .prowp-recommendation-carousel[data-prowp-track-pack="start"] .prowp-carousel__track,
.rtl .prowp-recommendation-carousel[data-prowp-track-pack="start"] .prowp-carousel__track,
[dir="rtl"] .prowp-recommendation-carousel[data-prowp-track-pack="start"] ul.products.prowp-carousel__track,
.rtl .prowp-recommendation-carousel[data-prowp-track-pack="start"] ul.products.prowp-carousel__track {
	justify-content: flex-end !important;
}

/* Pre-init lone slide (before JS sets data-prowp-track-pack). */
[dir="rtl"] .prowp-recommendation-carousel:not([data-prowp-carousel-init="1"]) ul.products.prowp-carousel__track:has(> li.product:only-child),
.rtl .prowp-recommendation-carousel:not([data-prowp-carousel-init="1"]) ul.products.prowp-carousel__track:has(> li.product:only-child),
[dir="rtl"] .prowp-recommendation-carousel:not([data-prowp-carousel-init="1"]) .prowp-carousel__track:has(> .prowp-carousel__slide:only-child),
.rtl .prowp-recommendation-carousel:not([data-prowp-carousel-init="1"]) .prowp-carousel__track:has(> .prowp-carousel__slide:only-child) {
	justify-content: flex-end !important;
}

/* Lone slide: stay at CSF column width (never stretch to 100%). */
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product:only-child,
.prowp-recommendation-carousel .prowp-carousel__track > .prowp-carousel__slide:only-child {
	flex: 0 0 var(--prowp-slide-basis, var(--prowp-reco-slide-basis)) !important;
	width: var(--prowp-slide-basis, var(--prowp-reco-slide-basis)) !important;
	max-width: min(var(--prowp-slide-basis, 100%), var(--prowp-reco-slide-basis), 100%) !important;
}

/* Non-scrollable reco rows: no end padding (padding was physical-right empty
   strip = RTL inline-start gap that made full 3-card rows look under-filled).
   Scrollable rows get padding-inline-end from carousel.js. */
.prowp-recommendation-carousel .prowp-carousel__track-wrap,
.prowp-carousel.prowp-recommendation-carousel .prowp-carousel__track-wrap {
	padding-inline-end: 0 !important;
}

.prowp-recommendation-carousel[data-prowp-carousel-scrollable="1"] .prowp-carousel__track-wrap,
.prowp-carousel.prowp-recommendation-carousel[data-prowp-carousel-scrollable="1"] .prowp-carousel__track-wrap {
	padding-inline-end: var(--prowp-carousel-gap, 0px) !important;
}

/* ── Cards fill the slide — same vertical stack as archive/homepage ── */
.related.products ul.products.prowp-carousel__track > li.product,
.upsells.products ul.products.prowp-carousel__track > li.product,
.up-sells ul.products.prowp-carousel__track > li.product,
.cross-sells ul.products.prowp-carousel__track > li.product,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product,
.prowp-recently-viewed ul.products.prowp-carousel__track > li.product,
html body.woocommerce .related.products ul.products.prowp-carousel__track > li.product,
html body.woocommerce .upsells.products ul.products.prowp-carousel__track > li.product,
html body.woocommerce .up-sells ul.products.prowp-carousel__track > li.product,
html body.woocommerce .cross-sells ul.products.prowp-carousel__track > li.product,
html body.woocommerce .prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product {
	display: flex !important;
	flex-direction: column !important;
	align-items: stretch !important;
	align-self: stretch !important;
	grid-template-columns: none !important;
	gap: 0 !important;
	height: auto !important;
	min-height: 100% !important;
	box-sizing: border-box !important;
	/* Beat legacy .related.products li.product { width: auto !important } */
	width: var(--prowp-slide-basis, var(--prowp-reco-slide-basis, 100%)) !important;
	max-width: var(--prowp-slide-basis, var(--prowp-reco-slide-basis, 100%)) !important;
}

/* Exact-fill slides: width follows flex grow, not fixed basis vars. */
.prowp-recommendation-carousel[data-prowp-track-pack="fill"]:not([data-prowp-carousel-scrollable="1"]) ul.products.prowp-carousel__track > li.product,
html body.woocommerce .prowp-recommendation-carousel[data-prowp-track-pack="fill"]:not([data-prowp-carousel-scrollable="1"]) ul.products.prowp-carousel__track > li.product {
	width: auto !important;
	max-width: none !important;
}

.related.products ul.products.prowp-carousel__track > li.product > .prowp-card__wrapper,
.upsells.products ul.products.prowp-carousel__track > li.product > .prowp-card__wrapper,
.up-sells ul.products.prowp-carousel__track > li.product > .prowp-card__wrapper,
.cross-sells ul.products.prowp-carousel__track > li.product > .prowp-card__wrapper,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product > .prowp-card__wrapper,
.related.products ul.products.prowp-carousel__track > li.product .astra-shop-thumbnail-wrap,
.upsells.products ul.products.prowp-carousel__track > li.product .astra-shop-thumbnail-wrap,
.up-sells ul.products.prowp-carousel__track > li.product .astra-shop-thumbnail-wrap,
.cross-sells ul.products.prowp-carousel__track > li.product .astra-shop-thumbnail-wrap,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .astra-shop-thumbnail-wrap,
.related.products ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap,
.upsells.products ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap,
.up-sells ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap,
.cross-sells ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card-content,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card-content,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card-content,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card-content,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card-content,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card__bottom,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card-body,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card-body,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card-body,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card-body,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card-body {
	width: 100% !important;
	max-width: 100% !important;
	min-width: 0 !important;
	box-sizing: border-box !important;
}

/* Equal-height column: body grows; price / qty / ATC sit on a shared baseline. */
.related.products ul.products.prowp-carousel__track > li.product.prowp-product-card,
.upsells.products ul.products.prowp-carousel__track > li.product.prowp-product-card,
.up-sells ul.products.prowp-carousel__track > li.product.prowp-product-card,
.cross-sells ul.products.prowp-carousel__track > li.product.prowp-product-card,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product.prowp-product-card,
.prowp-recently-viewed ul.products.prowp-carousel__track > li.product.prowp-product-card {
	height: 100% !important;
}

.related.products ul.products.prowp-carousel__track > li.product .astra-shop-thumbnail-wrap,
.upsells.products ul.products.prowp-carousel__track > li.product .astra-shop-thumbnail-wrap,
.up-sells ul.products.prowp-carousel__track > li.product .astra-shop-thumbnail-wrap,
.cross-sells ul.products.prowp-carousel__track > li.product .astra-shop-thumbnail-wrap,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .astra-shop-thumbnail-wrap,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card-content,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card-content,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card-content,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card-content,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card-content,
.related.products ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap,
.upsells.products ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap,
.up-sells ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap,
.cross-sells ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card-body,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card-body,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card-body,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card-body,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card-body,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card__bottom {
	display: flex !important;
	flex-direction: column !important;
	flex: 1 1 auto !important;
	min-height: 0 !important;
}

.related.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card-body > .price,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card-body > .price,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card-body > .price,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card-body > .price,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card-body > .price,
.related.products ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap > .price,
.upsells.products ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap > .price,
.up-sells ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap > .price,
.cross-sells ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap > .price,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .astra-shop-summary-wrap > .price,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card-price,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card-price,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card-price,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card-price,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card-price,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card-footer-cta,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card-footer-cta,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card-footer-cta,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card-footer-cta,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card-footer-cta,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom-actions,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom-actions,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom-actions,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom-actions,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card__bottom-actions,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card-qty-atc,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card-qty-atc,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card-qty-atc,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card-qty-atc,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card-qty-atc {
	margin-block-start: auto !important;
}

.related.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card-footer-cta,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card-footer-cta,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card-footer-cta,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card-footer-cta,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card-footer-cta,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card__bottom-actions,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card__bottom-actions,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card__bottom-actions,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card__bottom-actions,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card__bottom-actions,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card-qty-atc,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card-qty-atc,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card-qty-atc,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card-qty-atc,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .price + .prowp-card-qty-atc,
.related.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .prowp-card-price + .prowp-card-footer-cta,
.upsells.products ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .prowp-card-price + .prowp-card-footer-cta,
.up-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .prowp-card-price + .prowp-card-footer-cta,
.cross-sells ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .prowp-card-price + .prowp-card-footer-cta,
.prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product .prowp-card__bottom > .prowp-card-price + .prowp-card-footer-cta {
	margin-block-start: 0 !important;
}

/* ── Media: wrap owns 1:1 (or card token) frame; img fills, never sets height ── */
.related.products ul.products li.product .prowp-card-image-wrap,
.upsells.products ul.products li.product .prowp-card-image-wrap,
.up-sells ul.products li.product .prowp-card-image-wrap,
.cross-sells ul.products li.product .prowp-card-image-wrap,
.prowp-recommendation-carousel ul.products li.product .prowp-card-image-wrap,
.prowp-recommendations-grid li.product .prowp-card-image-wrap,
.related.products ul.products li.product .prowp-card__thumb,
.upsells.products ul.products li.product .prowp-card__thumb,
.up-sells ul.products li.product .prowp-card__thumb,
.cross-sells ul.products li.product .prowp-card__thumb,
.prowp-recommendation-carousel ul.products li.product .prowp-card__thumb {
	width: 100% !important;
	max-width: 100% !important;
	display: block !important;
	position: relative !important;
	aspect-ratio: var(--prowp-card-media-ratio, 1 / 1) !important;
	overflow: hidden !important;
	height: auto !important;
}

html body.woocommerce .related.products ul.products li.product .prowp-card-image-wrap img,
html body.woocommerce .upsells.products ul.products li.product .prowp-card-image-wrap img,
html body.woocommerce .up-sells ul.products li.product .prowp-card-image-wrap img,
html body.woocommerce .cross-sells ul.products li.product .prowp-card-image-wrap img,
html body.woocommerce .prowp-recommendation-carousel ul.products li.product .prowp-card-image-wrap img,
html body.woocommerce .prowp-recommendations-grid li.product .prowp-card-image-wrap img,
html body.woocommerce .related.products ul.products li.product .prowp-card__thumb img,
html body.woocommerce .upsells.products ul.products li.product .prowp-card__thumb img,
html body.woocommerce .up-sells ul.products li.product .prowp-card__thumb img,
html body.woocommerce .cross-sells ul.products li.product .prowp-card__thumb img,
html body.woocommerce .prowp-recommendation-carousel ul.products li.product .prowp-card__thumb img,
.related.products ul.products li.product .prowp-card-image-wrap img,
.upsells.products ul.products li.product .prowp-card-image-wrap img,
.up-sells ul.products li.product .prowp-card-image-wrap img,
.cross-sells ul.products li.product .prowp-card-image-wrap img,
.prowp-recommendation-carousel ul.products li.product .prowp-card-image-wrap img,
.prowp-recommendations-grid li.product .prowp-card-image-wrap img {
	/* Do not stack aspect-ratio on both wrap + img (strange squash). */
	aspect-ratio: unset !important;
	position: absolute !important;
	inset: 0 !important;
	width: 100% !important;
	height: 100% !important;
	max-width: 100% !important;
	max-height: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	display: block !important;
	/* Fade/organic use contain; classic cover is set by card CSS with equal or higher specificity. */
	object-fit: contain !important;
	object-position: center !important;
}

/* Classic / non-fade cards that opt into cover via body/card classes keep cover. */
body:not(.prowp-cards-woodmart-fade):not(.prowp-cards-organic) .related.products ul.products li.product:not(.prowp-card--hover-fade) .prowp-card-image-wrap img,
body:not(.prowp-cards-woodmart-fade):not(.prowp-cards-organic) .upsells.products ul.products li.product:not(.prowp-card--hover-fade) .prowp-card-image-wrap img,
body:not(.prowp-cards-woodmart-fade):not(.prowp-cards-organic) .up-sells ul.products li.product:not(.prowp-card--hover-fade) .prowp-card-image-wrap img,
body:not(.prowp-cards-woodmart-fade):not(.prowp-cards-organic) .cross-sells ul.products li.product:not(.prowp-card--hover-fade) .prowp-card-image-wrap img,
body:not(.prowp-cards-woodmart-fade):not(.prowp-cards-organic) .prowp-recommendation-carousel ul.products li.product:not(.prowp-card--hover-fade) .prowp-card-image-wrap img {
	object-fit: cover !important;
}

/* ── Grid fallback (carousel off): same card fill, no float widths ── */
.related.products ul.products.prowp-recommendations-grid > li.product,
.upsells.products ul.products.prowp-recommendations-grid > li.product,
.up-sells ul.products.prowp-recommendations-grid > li.product,
.cross-sells ul.products.prowp-recommendations-grid > li.product,
.prowp-recommendations-grid > li.product {
	width: 100% !important;
	max-width: 100% !important;
	float: none !important;
	margin: 0 !important;
	display: flex !important;
	flex-direction: column !important;
	box-sizing: border-box !important;
}

/* ── Never inherit archive list-row chrome on recommendation slides ── */
body.prowp-view-list .related.products ul.products.prowp-carousel__track > li.product,
body.prowp-view-list .upsells.products ul.products.prowp-carousel__track > li.product,
body.prowp-view-list .up-sells ul.products.prowp-carousel__track > li.product,
body.prowp-view-list .cross-sells ul.products.prowp-carousel__track > li.product,
body.prowp-view-list .prowp-recommendation-carousel ul.products.prowp-carousel__track > li.product,
body.prowp-shop-archive.prowp-view-list .related.products ul.products > li.product {
	display: flex !important;
	flex-direction: column !important;
	grid-template-columns: none !important;
}

/* ── RTL: one track model (LTR flex + JS negative translate) ──
   Do NOT set direction:rtl on the wrap — that fights translate3d and
   leaves a large empty side with skinny cards clustered on the other.
   Visual packing uses justify-content flex-end on RTL pages while the
   track remains direction:ltr (see min-width:100% + flex-end above). */
.prowp-recommendation-carousel .prowp-carousel__track-wrap,
[dir="rtl"] .prowp-recommendation-carousel .prowp-carousel__track-wrap,
.rtl .prowp-recommendation-carousel .prowp-carousel__track-wrap,
[dir="rtl"] body.prowp-premium-scope.prowp-single-product-page .prowp-recommendation-carousel .prowp-carousel__track-wrap {
	direction: ltr !important;
}

[dir="rtl"] .prowp-recommendation-carousel ul.products.prowp-carousel__track,
.rtl .prowp-recommendation-carousel ul.products.prowp-carousel__track {
	flex-direction: row !important;
	direction: ltr !important;
}

/* Arrows stay on the logical end (inline-end) — never physical left/right. */
.prowp-recommendation-carousel > .prowp-carousel__btn-wrap {
	inset-inline-end: 0 !important;
	inset-inline-start: auto !important;
}

/* ── Shared loop title + price tokens (related / upsells / cross-sells / RV) ──
   One card title size + one current-price size for every loop card.
   Explicit sizes beat PDP summary clamp bleed and kill font-size: inherit
   on .amount / ins that made regular-only prices diverge from sale cards. */
.prowp-recommendation-carousel,
.related.products,
.upsells.products,
.up-sells,
.cross-sells,
.prowp-recently-viewed,
.prowp-recommendations-grid {
	--prowp-card-title-size: var(--prowp-product-title-size, var(--prowp-text-base, 0.9375rem));
	--prowp-card-price-size: var(--prowp-price-size, var(--woo-text-lg, 1.125rem));
	--prowp-card-price-del-size: var(--woo-text-sm, 0.875rem);
}

.related.products ul.products li.product .woocommerce-loop-product__title,
.upsells.products ul.products li.product .woocommerce-loop-product__title,
.up-sells ul.products li.product .woocommerce-loop-product__title,
.cross-sells ul.products li.product .woocommerce-loop-product__title,
.prowp-recommendation-carousel ul.products li.product .woocommerce-loop-product__title,
.prowp-recently-viewed ul.products li.product .woocommerce-loop-product__title,
.prowp-recommendations-grid li.product .woocommerce-loop-product__title,
.related.products ul.products li.product .prowp-product-title,
.upsells.products ul.products li.product .prowp-product-title,
.prowp-recommendation-carousel ul.products li.product .prowp-product-title,
.prowp-recently-viewed ul.products li.product .prowp-product-title,
.related.products ul.products li.product .prowp-card__title,
.prowp-recommendation-carousel ul.products li.product .prowp-card__title,
html body.woocommerce.woo-premium-ui .related.products ul.products li.product .woocommerce-loop-product__title,
html body.woocommerce.woo-premium-ui .prowp-recommendation-carousel ul.products li.product .woocommerce-loop-product__title,
html body.woocommerce.woo-premium-ui .related.products ul.products li.product .prowp-product-title,
html body.woocommerce.woo-premium-ui .prowp-recommendation-carousel ul.products li.product .prowp-product-title {
	font-size: var(--prowp-card-title-size) !important;
	font-weight: var(--prowp-product-title-weight, 600) !important;
	line-height: 1.35 !important;
	text-align: center !important;
	color: var(--prowp-product-title-color, var(--prowp-text, #0f172a)) !important;
}

.related.products ul.products li.product .price,
.upsells.products ul.products li.product .price,
.up-sells ul.products li.product .price,
.cross-sells ul.products li.product .price,
.prowp-recommendation-carousel ul.products li.product .price,
.prowp-recently-viewed ul.products li.product .price,
.prowp-recommendations-grid li.product .price,
.related.products ul.products li.product .prowp-card-price,
.upsells.products ul.products li.product .prowp-card-price,
.up-sells ul.products li.product .prowp-card-price,
.cross-sells ul.products li.product .prowp-card-price,
.prowp-recommendation-carousel ul.products li.product .prowp-card-price,
.prowp-recently-viewed ul.products li.product .prowp-card-price,
html body.woocommerce.woo-premium-ui .related.products ul.products li.product .price,
html body.woocommerce.woo-premium-ui .upsells.products ul.products li.product .price,
html body.woocommerce.woo-premium-ui .up-sells ul.products li.product .price,
html body.woocommerce.woo-premium-ui .cross-sells ul.products li.product .price,
html body.woocommerce.woo-premium-ui .prowp-recommendation-carousel ul.products li.product .price,
html body.woocommerce.woo-premium-ui .prowp-recently-viewed ul.products li.product .price,
html body.woocommerce.woo-premium-ui .related.products ul.products li.product .prowp-card-price,
html body.woocommerce.woo-premium-ui .prowp-recommendation-carousel ul.products li.product .prowp-card-price {
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: baseline !important;
	justify-content: center !important;
	gap: var(--prowp-space-2, 0.5rem) !important;
	margin: 0 !important;
	padding: 0 !important;
	text-align: center !important;
	font-size: var(--prowp-card-price-size) !important;
	font-weight: 700 !important;
	line-height: 1.3 !important;
	color: var(--prowp-price-color, var(--prowp-primary, var(--woo-color-primary, #1f7a3a))) !important;
}

/* Current price — regular .amount and sale ins .amount share one size token. */
.related.products ul.products li.product .price > .woocommerce-Price-amount,
.upsells.products ul.products li.product .price > .woocommerce-Price-amount,
.up-sells ul.products li.product .price > .woocommerce-Price-amount,
.cross-sells ul.products li.product .price > .woocommerce-Price-amount,
.prowp-recommendation-carousel ul.products li.product .price > .woocommerce-Price-amount,
.prowp-recently-viewed ul.products li.product .price > .woocommerce-Price-amount,
.related.products ul.products li.product .prowp-card-price > .woocommerce-Price-amount,
.prowp-recommendation-carousel ul.products li.product .prowp-card-price > .woocommerce-Price-amount,
.related.products ul.products li.product .price > .amount,
.prowp-recommendation-carousel ul.products li.product .price > .amount,
.related.products ul.products li.product .price ins,
.upsells.products ul.products li.product .price ins,
.up-sells ul.products li.product .price ins,
.cross-sells ul.products li.product .price ins,
.prowp-recommendation-carousel ul.products li.product .price ins,
.prowp-recently-viewed ul.products li.product .price ins,
.related.products ul.products li.product .prowp-card-price ins,
.prowp-recommendation-carousel ul.products li.product .prowp-card-price ins,
.related.products ul.products li.product .price ins .woocommerce-Price-amount,
.upsells.products ul.products li.product .price ins .woocommerce-Price-amount,
.up-sells ul.products li.product .price ins .woocommerce-Price-amount,
.cross-sells ul.products li.product .price ins .woocommerce-Price-amount,
.prowp-recommendation-carousel ul.products li.product .price ins .woocommerce-Price-amount,
.prowp-recently-viewed ul.products li.product .price ins .woocommerce-Price-amount,
.related.products ul.products li.product .price ins .amount,
.prowp-recommendation-carousel ul.products li.product .price ins .amount,
.related.products ul.products li.product .price ins bdi,
.prowp-recommendation-carousel ul.products li.product .price ins bdi,
html body.woocommerce.woo-premium-ui .related.products ul.products li.product .price > .woocommerce-Price-amount,
html body.woocommerce.woo-premium-ui .prowp-recommendation-carousel ul.products li.product .price > .woocommerce-Price-amount,
html body.woocommerce.woo-premium-ui .related.products ul.products li.product .price ins,
html body.woocommerce.woo-premium-ui .prowp-recommendation-carousel ul.products li.product .price ins,
html body.woocommerce.woo-premium-ui .related.products ul.products li.product .price ins .woocommerce-Price-amount,
html body.woocommerce.woo-premium-ui .prowp-recommendation-carousel ul.products li.product .price ins .woocommerce-Price-amount {
	font-size: var(--prowp-card-price-size) !important;
	font-weight: 700 !important;
	line-height: 1.3 !important;
	color: var(--prowp-price-color, var(--prowp-primary, var(--woo-color-primary, #1f7a3a))) !important;
	text-decoration: none !important;
	background: transparent !important;
}

.related.products ul.products li.product .price del,
.upsells.products ul.products li.product .price del,
.up-sells ul.products li.product .price del,
.cross-sells ul.products li.product .price del,
.prowp-recommendation-carousel ul.products li.product .price del,
.prowp-recently-viewed ul.products li.product .price del,
.related.products ul.products li.product .prowp-card-price del,
.prowp-recommendation-carousel ul.products li.product .prowp-card-price del,
html body.woocommerce.woo-premium-ui .related.products ul.products li.product .price del,
html body.woocommerce.woo-premium-ui .prowp-recommendation-carousel ul.products li.product .price del {
	font-size: var(--prowp-card-price-del-size) !important;
	font-weight: 400 !important;
	color: var(--prowp-text-muted, var(--woo-text-muted, #6b7280)) !important;
	text-decoration: line-through !important;
	background: transparent !important;
}

.related.products ul.products li.product .price del .woocommerce-Price-amount,
.upsells.products ul.products li.product .price del .woocommerce-Price-amount,
.up-sells ul.products li.product .price del .woocommerce-Price-amount,
.cross-sells ul.products li.product .price del .woocommerce-Price-amount,
.prowp-recommendation-carousel ul.products li.product .price del .woocommerce-Price-amount,
.prowp-recently-viewed ul.products li.product .price del .woocommerce-Price-amount,
.related.products ul.products li.product .price del .amount,
.prowp-recommendation-carousel ul.products li.product .price del .amount,
.related.products ul.products li.product .price del bdi,
.prowp-recommendation-carousel ul.products li.product .price del bdi,
html body.woocommerce.woo-premium-ui .related.products ul.products li.product .price del .woocommerce-Price-amount,
html body.woocommerce.woo-premium-ui .prowp-recommendation-carousel ul.products li.product .price del .woocommerce-Price-amount {
	font-size: var(--prowp-card-price-del-size) !important;
	font-weight: 400 !important;
	color: var(--prowp-text-muted, var(--woo-text-muted, #6b7280)) !important;
	text-decoration: none !important;
}
