/* Native WooCommerce product-card presentation. */

body.woocommerce-page:not(.home) #primary .site-main ul.products[class*="columns-"],
body.search #primary .site-main.sola-product-search ul.products[class*="columns-"] {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	column-gap: 0;
	row-gap: var(--space-8);
	margin: 0;
	padding: 0;
	list-style: none;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after,
.woocommerce-page ul.products::before,
.woocommerce-page ul.products::after {
	display: none;
}

.woocommerce ul.products li.product.sola-product-card,
.woocommerce-page ul.products li.product.sola-product-card {
	display: flex;
	float: none;
	flex-direction: column;
	min-inline-size: 0;
	margin: 0;
	padding-block-end: 0;
	padding-inline: 0;
	border: 0;
	border-block-end: 0;
	border-radius: 0;
	background: transparent;
	color: var(--color-ink);
	text-align: start;
}

.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link,
.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link {
	display: flex;
	position: relative;
	flex: 1 1 auto;
	flex-direction: column;
	min-inline-size: 0;
	color: inherit;
	text-decoration: none;
}

.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link img,
.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link img {
	display: block;
	inline-size: 100%;
	block-size: auto;
	min-block-size: 0;
	aspect-ratio: 1;
	border-radius: 2px;
	background: var(--color-surface);
	object-fit: contain;
	transition: transform 180ms ease;
}

.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link:hover img,
.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link:hover img {
	transform: scale(1.015);
}

/* Keep WooCommerce's optional secondary image inside one stable media frame. */
.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link .wc-product-image:has(.secondary-image),
.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link .wc-product-image:has(.secondary-image) {
	display: block;
	inline-size: 100%;
	block-size: auto;
	min-block-size: 0;
	aspect-ratio: 1;
	overflow: hidden;
	border-radius: 2px;
	background: var(--color-surface);
	line-height: 0;
}

.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link .wc-product-image:has(.secondary-image) .inside-wc-product-image,
.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link .wc-product-image:has(.secondary-image) .inside-wc-product-image {
	display: block;
	position: relative;
	inline-size: 100%;
	block-size: 100%;
	min-block-size: 0;
}

.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link .wc-product-image:has(.secondary-image) .inside-wc-product-image > img,
.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link .wc-product-image:has(.secondary-image) .inside-wc-product-image > img {
	position: absolute;
	z-index: 0;
	inset: 0;
	inline-size: 100%;
	block-size: 100%;
	min-block-size: 0;
	margin: 0;
	border-radius: inherit;
	object-fit: contain;
	transform: none;
	transition: opacity 180ms ease;
	pointer-events: none;
}

.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link .wc-product-image:has(.secondary-image) .inside-wc-product-image > img:not(.secondary-image),
.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link .wc-product-image:has(.secondary-image) .inside-wc-product-image > img:not(.secondary-image) {
	opacity: 1;
}

.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link .wc-product-image:has(.secondary-image) .inside-wc-product-image > img.secondary-image,
.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link .wc-product-image:has(.secondary-image) .inside-wc-product-image > img.secondary-image {
	z-index: 1;
	opacity: 0;
}

@media (hover: hover) and (pointer: fine) {
	.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link:hover .wc-product-image:has(.secondary-image) .inside-wc-product-image > img:not(.secondary-image),
	.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link:hover .wc-product-image:has(.secondary-image) .inside-wc-product-image > img:not(.secondary-image) {
		opacity: 0;
	}

	.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link:hover .wc-product-image:has(.secondary-image) .inside-wc-product-image > img.secondary-image,
	.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link:hover .wc-product-image:has(.secondary-image) .inside-wc-product-image > img.secondary-image {
		opacity: 1;
	}
}

.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link:focus-visible .wc-product-image:has(.secondary-image) .inside-wc-product-image > img:not(.secondary-image),
.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link:focus-visible .wc-product-image:has(.secondary-image) .inside-wc-product-image > img:not(.secondary-image) {
	opacity: 0;
}

.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link:focus-visible .wc-product-image:has(.secondary-image) .inside-wc-product-image > img.secondary-image,
.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link:focus-visible .wc-product-image:has(.secondary-image) .inside-wc-product-image > img.secondary-image {
	opacity: 1;
}

/* Catalog cards keep the single product link as a stretched sibling. Native
 * media stays in flow so the DOM can read media -> swatches -> title -> price. */
.sola-product-card--catalog .wc-product-image {
	display: block;
	inline-size: 100%;
	block-size: auto;
	min-block-size: 0;
	aspect-ratio: 1;
	overflow: hidden;
	border-radius: 2px;
	background: var(--color-canvas);
	line-height: 0;
}

.sola-product-card--catalog .wc-product-image .inside-wc-product-image {
	display: block;
	position: relative;
	inline-size: 100%;
	block-size: 100%;
	min-block-size: 0;
}

.sola-product-card--catalog .wc-product-image .inside-wc-product-image > img {
	position: absolute;
	z-index: 0;
	inset: 0;
	display: block;
	inline-size: 100%;
	block-size: 100%;
	min-block-size: 0;
	margin: 0;
	border-radius: inherit;
	background: var(--color-canvas);
	object-fit: contain;
	transform: none;
	transition: opacity 180ms ease;
	pointer-events: none;
}

.sola-product-card--catalog .wc-product-image > img {
	display: block;
	inline-size: 100%;
	block-size: 100%;
	margin: 0;
	object-fit: contain;
}

.sola-product-card--catalog .wc-product-image .inside-wc-product-image > img:not(.secondary-image) {
	opacity: 1;
}

.sola-product-card--catalog .wc-product-image .inside-wc-product-image > img.secondary-image {
	z-index: 1;
	opacity: 0;
}

@media (hover: hover) and (pointer: fine) {
	.sola-product-card--catalog:has(> a.sola-product-card__product-link:hover) .wc-product-image:has(.secondary-image) .inside-wc-product-image > img:not(.secondary-image),
	.sola-product-card--catalog:has(> a.sola-product-card__product-link:focus-visible) .wc-product-image:has(.secondary-image) .inside-wc-product-image > img:not(.secondary-image) {
		opacity: 0;
	}

	.sola-product-card--catalog:has(> a.sola-product-card__product-link:hover) .wc-product-image:has(.secondary-image) .inside-wc-product-image > img.secondary-image,
	.sola-product-card--catalog:has(> a.sola-product-card__product-link:focus-visible) .wc-product-image:has(.secondary-image) .inside-wc-product-image > img.secondary-image {
		opacity: 1;
	}
}

.sola-product-card .woocommerce-loop-product__link img.woocommerce-placeholder,
.sola-product-card .woocommerce-loop-product__link img[src*="placeholder"],
.sola-product-card a.woocommerce-LoopProduct-link img.woocommerce-placeholder,
.sola-product-card a.woocommerce-LoopProduct-link img[src*="placeholder"] {
	padding: var(--space-6);
	object-fit: contain;
}

.sola-product-card--missing-image .woocommerce-loop-product__link img,
.sola-product-card--missing-image a.woocommerce-LoopProduct-link img {
	background: var(--color-surface-strong);
}

.sola-product-card--catalog .wc-product-image img.woocommerce-placeholder,
.sola-product-card--catalog .wc-product-image img[src*="placeholder"] {
	padding: var(--space-6);
	object-fit: contain;
}

.sola-product-card--catalog.sola-product-card--missing-image .wc-product-image {
	background: var(--color-surface-strong);
}

.sola-product-card .sola-product-card__badge--stock {
	position: absolute;
	z-index: 1;
	inset-block-start: var(--space-2);
	inset-inline-start: var(--space-2);
	min-block-size: auto;
	margin: 0;
	padding: var(--space-1) var(--space-2);
	border-radius: var(--radius-sm);
	background: var(--color-ink);
	color: var(--color-white);
	font-size: var(--font-size-ui);
	font-weight: var(--font-weight-semibold);
	line-height: var(--line-height-ui);
}

.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__title,
.woocommerce-page ul.products li.product.sola-product-card .woocommerce-loop-product__title {
	margin-block: var(--space-3) var(--space-1);
	min-block-size: 0;
	color: var(--color-ink);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-regular);
	line-height: 1.35;
	overflow-wrap: anywhere;
	text-align: start;
	text-wrap: pretty;
	unicode-bidi: plaintext;
}

.woocommerce ul.products li.product.sola-product-card .price,
.woocommerce-page ul.products li.product.sola-product-card .price {
	display: block;
	margin-block: 0 var(--space-4);
	color: var(--color-accent);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-semibold);
	line-height: var(--line-height-heading);
	unicode-bidi: plaintext;
}

.sola-product-card .price del,
.sola-product-card .price del .woocommerce-Price-amount,
.sola-product-card .price del bdi,
.sola-product-card .price del .woocommerce-Price-currencySymbol {
	color: var(--color-ink-soft) !important;
}

.sola-product-card .price del {
	margin-inline-end: var(--space-2);
	font-size: var(--font-size-ui);
	font-weight: var(--font-weight-regular);
	text-decoration: line-through;
	text-decoration-thickness: 0.08em;
}

.sola-product-card .price ins {
	color: var(--color-accent);
	text-decoration: none;
}

.sola-product-card__merchandising {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--space-2);
	min-block-size: 1.75rem;
	margin: calc(-1 * var(--space-2)) 0 var(--space-4);
	padding: 0;
	list-style: none;
	direction: ltr;
}

.sola-product-card__merchandising-label {
	display: inline-flex;
	align-items: center;
	min-block-size: 1.75rem;
	padding: 0 var(--space-2);
	border-radius: 0;
	background: var(--color-surface);
	color: var(--color-ink);
	font-size: var(--font-size-ui);
	font-weight: var(--font-weight-semibold);
	line-height: 1;
	letter-spacing: 0.04em;
	white-space: nowrap;
}

.sola-product-card__merchandising-label--custom {
	padding-inline: 0;
	background: transparent;
	color: var(--color-ink-soft);
}

.sola-product-card__merchandising-label--sale {
	background: color-mix(in srgb, var(--color-accent) 12%, var(--color-canvas));
	color: var(--color-accent);
}

/* WooCommerce owns the amount/currency markup. Isolate each amount so the
 * native trailing shekel stays after the numeric value in Hebrew RTL cards,
 * including sale <del>/<ins> amounts. */
.sola-product-card .sola-product-card__amount,
.sola-product-card .sola-product-card__amount bdi,
.sola-product-card .sola-product-card__amount .woocommerce-Price-currencySymbol {
	direction: ltr;
	unicode-bidi: isolate;
}

/* Color previews are siblings of the single stretched product link, never
 * nested controls. Their targets stay 44px while the visual tiles remain
 * compact. */
.woocommerce ul.products li.product.sola-product-card.sola-product-card--catalog.sola-product-card--catalog-variable,
.woocommerce-page ul.products li.product.sola-product-card.sola-product-card--catalog.sola-product-card--catalog-variable,
body.search #primary .site-main.sola-product-search ul.products > li.product.sola-product-card.sola-product-card--catalog.sola-product-card--catalog-variable {
	--sola-product-card-action-space: 0rem;
}

.sola-product-card__swatches {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--space-1);
	min-block-size: 44px;
	margin-block: 0 var(--space-4);
	padding-inline: var(--space-3) calc(var(--sola-product-card-action-space) + var(--space-3));
	direction: rtl;
}

.sola-product-card__swatches-label {
	flex: 0 0 auto;
	margin-inline-end: var(--space-1);
	color: var(--color-ink-soft);
	font-size: var(--font-size-ui);
	line-height: var(--line-height-ui);
}

.sola-product-card__swatch {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inline-size: 44px;
	block-size: 44px;
	min-inline-size: 44px;
	min-block-size: 44px;
	margin: 0;
	padding: 7px;
	border: 0;
	border-radius: var(--radius-sm);
	background: transparent;
	color: var(--color-ink);
	cursor: pointer;
}

.sola-product-card__swatch > span {
	display: block;
	inline-size: 28px;
	block-size: 28px;
	border: 1px solid var(--color-border-strong);
	border-radius: 6px;
	background: var(--sola-swatch-color, var(--color-surface-strong));
	box-shadow: 0 0 0 1px var(--color-canvas);
}

.sola-product-card__swatch.is-neutral > span {
	background: var(--color-surface-strong);
	background-image: linear-gradient(135deg, transparent 0 45%, var(--color-border-strong) 45% 55%, transparent 55% 100%);
}

.sola-product-card__swatch.is-selected > span {
	box-shadow: 0 0 0 2px var(--color-canvas), 0 0 0 4px var(--color-accent);
}

.sola-product-card__swatch:hover > span {
	box-shadow: 0 0 0 2px var(--color-canvas), 0 0 0 3px var(--color-ink-soft);
}

.sola-product-card__swatch.is-selected:hover > span {
	box-shadow: 0 0 0 2px var(--color-canvas), 0 0 0 4px var(--color-accent-hover);
}

.sola-product-card__swatch:focus-visible {
	outline: var(--focus-width) solid var(--focus-color);
	outline-offset: var(--focus-offset);
}

.sola-product-card__swatches-overflow {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-inline-size: 44px;
	min-block-size: 44px;
	color: var(--color-ink-soft);
	font-size: var(--font-size-ui);
	font-weight: var(--font-weight-semibold);
	line-height: var(--line-height-ui);
}

.sola-product-card .star-rating[title="Not yet rated"],
.sola-product-card .star-rating:has(> span[style*="width:0%"] > strong.rating) {
	/* Live Woo markup uses a zero-width rating span and a 0 rating value. */
	display: none;
}

.sola-product-card--missing-price .price {
	display: flex;
	align-items: center;
	min-block-size: 1.75rem;
	color: var(--color-ink-soft);
	font-size: var(--font-size-ui);
	font-weight: var(--font-weight-regular);
}

.sola-product-card__price-label {
	unicode-bidi: plaintext;
}

.sola-product-card .button.sola-button,
.sola-product-card .added_to_cart {
	inline-size: 100%;
	margin-block-start: auto;
}

/* All native catalog actions remain above the stretched product link. */
.sola-product-card--catalog > .button.sola-button:not(.sola-product-card__action--icon) {
	position: relative;
	z-index: 1;
}

/* Keep native WooCommerce actions on the Sola storefront accent. */
.woocommerce ul.products li.product.sola-product-card .button.sola-button,
.woocommerce-page ul.products li.product.sola-product-card .button.sola-button {
	--button-background: var(--color-accent);
	--button-border: var(--color-accent);
	--button-color: var(--color-white);
	--button-hover-background: var(--color-accent-hover);
	--button-hover-border: var(--color-accent-hover);
	background-color: var(--button-background);
	border-color: var(--button-border);
	color: var(--button-color);
}

.woocommerce ul.products li.product.sola-product-card .button.sola-button:hover,
.woocommerce-page ul.products li.product.sola-product-card .button.sola-button:hover {
	background-color: var(--button-hover-background);
	border-color: var(--button-hover-border);
	color: var(--button-hover-color, var(--button-color));
}

.woocommerce ul.products li.product.sola-product-card.outofstock .button.sola-button,
.woocommerce-page ul.products li.product.sola-product-card.outofstock .button.sola-button,
.woocommerce ul.products li.product.sola-product-card .button.sola-button.loading,
.woocommerce-page ul.products li.product.sola-product-card .button.sola-button.loading {
	--button-background: var(--color-surface-strong);
	--button-border: var(--color-border-strong);
	--button-color: var(--color-ink);
	--button-loading-color: var(--color-ink);
	background-color: var(--button-background);
	border-color: var(--button-border);
	color: var(--button-color);
}

.woocommerce ul.products li.product.sola-product-card .button.sola-button.loading,
.woocommerce-page ul.products li.product.sola-product-card .button.sola-button.loading {
	color: transparent;
}

.woocommerce ul.products li.product.sola-product-card .button.sola-button.added,
.woocommerce-page ul.products li.product.sola-product-card .button.sola-button.added {
	--button-background: var(--color-success);
	--button-border: var(--color-success);
	--button-hover-background: var(--color-success);
	--button-hover-border: var(--color-success);
	background-color: var(--button-background);
	border-color: var(--button-border);
	color: var(--color-white);
}

.woocommerce ul.products li.product.sola-product-card > a.added_to_cart,
.woocommerce-page ul.products li.product.sola-product-card > a.added_to_cart {
	display: inline-flex;
}

.sola-product-card .added_to_cart {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-block-size: 3rem;
	margin-block-start: var(--space-2);
	padding-block: var(--space-3);
	padding-inline: var(--space-4);
	border: 1px solid var(--color-border-strong);
	border-radius: var(--radius-button);
	color: var(--color-ink);
	font-size: var(--font-size-ui);
	font-weight: var(--font-weight-semibold);
	line-height: var(--line-height-ui);
	text-align: center;
}

.sola-product-card.outofstock .sola-button,
.sola-product-card .sola-button.loading {
	--button-background: var(--color-surface-strong);
	--button-border: var(--color-border-strong);
	--button-color: var(--color-ink);
	--button-loading-color: var(--color-ink);
}

.sola-product-card .sola-button.loading {
	position: relative;
	color: transparent;
	cursor: wait;
	pointer-events: none;
}

.sola-product-card .sola-button.ajax_add_to_cart.loading,
.sola-product-card .sola-button.ajax_add_to_cart.added {
	min-block-size: 3rem;
}

.sola-product-card .sola-button.loading::after {
	position: absolute;
	inline-size: 1rem;
	block-size: 1rem;
	border: 2px solid var(--button-loading-color);
	border-inline-start-color: transparent;
	border-radius: 50%;
	content: "";
	animation: sola-product-card-spin 0.8s linear infinite;
}

.sola-product-card .sola-button.added {
	--button-background: var(--color-success);
	--button-border: var(--color-success);
	--button-hover-background: var(--color-success);
	--button-hover-border: var(--color-success);
}

/* Keep catalog metadata clear of the physical-left action zone. */
.woocommerce ul.products li.product.sola-product-card.sola-product-card--catalog .woocommerce-loop-product__title,
.woocommerce-page ul.products li.product.sola-product-card.sola-product-card--catalog .woocommerce-loop-product__title,
body.search #primary .site-main.sola-product-search ul.products > li.product.sola-product-card.sola-product-card--catalog .woocommerce-loop-product__title,
.woocommerce ul.products li.product.sola-product-card.sola-product-card--catalog .price,
.woocommerce-page ul.products li.product.sola-product-card.sola-product-card--catalog .price,
body.search #primary .site-main.sola-product-search ul.products > li.product.sola-product-card.sola-product-card--catalog .price {
	padding-inline-end: calc(var(--sola-product-card-action-space) + var(--space-2));
}

/* Catalog-only quick add. The metadata region is the containing block, so the
 * utility stays at its physical-left/top edge across card rows and title
 * lengths. The logical inline-end maps to the physical left edge in Sola's
 * RTL cards. */
.woocommerce ul.products li.product.sola-product-card.sola-product-card--catalog,
.woocommerce-page ul.products li.product.sola-product-card.sola-product-card--catalog,
body.search #primary .site-main.sola-product-search ul.products > li.product.sola-product-card.sola-product-card--catalog {
	--sola-product-card-action-space: 0rem;
	position: relative;
	isolation: isolate;
}

.woocommerce ul.products li.product.sola-product-card.sola-product-card--catalog:has(.sola-product-card__action--icon),
.woocommerce-page ul.products li.product.sola-product-card.sola-product-card--catalog:has(.sola-product-card__action--icon),
body.search #primary .site-main.sola-product-search ul.products > li.product.sola-product-card.sola-product-card--catalog:has(.sola-product-card__action--icon) {
	--sola-product-card-action-space: 2.75rem;
}

/* Keep the card-info containing block stable while native AJAX reports the
 * result. The card-owned View-cart replacement is removed below. */
.sola-product-card--catalog .sola-product-card__info {
	position: relative;
	display: flex;
	flex-direction: column;
	min-inline-size: 0;
	direction: rtl;
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon {
	--button-background: transparent;
	--button-border: transparent;
	--button-color: var(--color-ink);
	--button-loading-color: var(--color-ink);
	position: absolute;
	z-index: 1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inset-block-start: 0;
	inset-inline-end: 0;
	flex: 0 0 2.75rem;
	inline-size: 2.75rem;
	block-size: 2.75rem;
	min-block-size: 2.75rem;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent !important;
	color: var(--color-ink) !important;
	font-size: 0;
	line-height: 1;
	opacity: 0;
	pointer-events: none;
	transition: color var(--motion-fast) var(--motion-ease), opacity var(--motion-fast) var(--motion-ease);
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon .sola-product-card__action-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inline-size: 1.5rem;
	block-size: 1.5rem;
	color: currentColor;
	line-height: 0;
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon .sola-product-card__action-icon svg {
	display: block;
	inline-size: 100%;
	block-size: 100%;
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.loading,
.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.added {
	min-block-size: 2.75rem;
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon:hover,
.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon:focus-visible {
	background: transparent !important;
	color: var(--color-ink) !important;
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon:focus-visible {
	outline: var(--focus-width) solid var(--focus-color);
	outline-offset: var(--focus-offset);
}

@media (hover: hover) and (pointer: fine) {
	.sola-product-card--catalog:hover .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon,
	.sola-product-card--catalog:focus-within .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon,
	.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon:focus-visible {
		opacity: 1;
		pointer-events: auto;
	}
}

/* Touch has no reliable hover state. Keep the compact 44px icon available as
 * the non-hover path without restoring the old full-width text action. */
@media (hover: none), (pointer: coarse) {
	.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon {
		opacity: 1;
		pointer-events: auto;
	}
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.loading {
	background-color: transparent;
	border-color: transparent;
	color: var(--color-ink);
	cursor: wait;
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.loading::after {
	position: absolute;
	inline-size: 1rem;
	block-size: 1rem;
	inset-block-start: 50%;
	inset-inline-start: 50%;
	border: 2px solid var(--color-ink);
	border-inline-start-color: transparent;
	border-radius: 50%;
	background: none;
	box-shadow: none;
	content: "";
	transform: translate(-50%, -50%);
	animation: sola-product-card-spin 0.8s linear infinite;
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.loading::before {
	opacity: 0;
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.loading .sola-product-card__action-icon,
.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.added .sola-product-card__action-icon {
	visibility: hidden;
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.added {
	background-color: transparent;
	border-color: transparent;
	color: var(--color-success);
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.added::before {
	position: absolute;
	inline-size: 0.8rem;
	block-size: 0.45rem;
	inset-block-start: 0.95rem;
	inset-inline-start: 50%;
	border: 0;
	border-inline-end: 2px solid currentColor;
	border-block-end: 2px solid currentColor;
	background: none;
	box-shadow: none;
	content: "";
	transform: translateX(-50%) rotate(45deg);
	pointer-events: none;
}

.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.added::after {
	display: none;
}

/* Native WooCommerce may inject this sibling after a successful AJAX add.
 * The existing mini-cart controller owns success/error notices and drawer
 * opening; only the card-owned View-cart replacement is suppressed. */
.sola-product-card--catalog .sola-product-card__info > a.added_to_cart,
.sola-product-card--catalog > a.added_to_cart {
	display: none !important;
}

.sola-product-card a:focus-visible,
.sola-product-card .sola-button:focus-visible,
.sola-product-card .added_to_cart:focus-visible {
	position: relative;
	z-index: 2;
}

.sola-product-card--catalog > a.sola-product-card__product-link {
	position: absolute;
	inset: 0;
	z-index: 0;
	display: block;
	flex: none;
	color: transparent;
	text-decoration: none;
}

.sola-product-card--catalog > a.sola-product-card__product-link:focus-visible {
	position: absolute;
	z-index: 2;
	outline: var(--focus-width) solid var(--focus-color);
	outline-offset: var(--focus-offset);
}

@media (max-width: 767px) {
	/* Keep the catalog media frame full-bleed while metadata retains its gutter. */
	.sola-product-card--catalog .wc-product-image {
		box-sizing: border-box;
		inline-size: min(100vw, calc(100% + var(--container-gutter) + var(--container-gutter)));
		max-inline-size: min(100vw, calc(100% + var(--container-gutter) + var(--container-gutter)));
		margin-inline: calc(-1 * var(--container-gutter));
	}

	.sola-product-card--catalog > a.sola-product-card__product-link {
		inset-inline: calc(-1 * var(--container-gutter));
	}
}

@keyframes sola-product-card-spin {
	to {
		transform: rotate(1turn);
	}
}

@media (min-width: 48rem) {
	body.woocommerce-page:not(.home) #primary .site-main ul.products[class*="columns-"],
	body.search #primary .site-main.sola-product-search ul.products[class*="columns-"] {
		/* Keep two-column tablet cards above the catalog density floor. */
		grid-template-columns: repeat(2, minmax(220px, 1fr));
		column-gap: var(--space-6);
	}
}

@media (min-width: 64rem) {
	body.search #primary .site-main.sola-product-search ul.products[class*="columns-"] {
		grid-template-columns: repeat(3, minmax(240px, 1fr));
		row-gap: var(--space-12);
	}
}

@media (prefers-reduced-motion: reduce) {
	.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link img,
	.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link img {
		transition: none;
	}

	.woocommerce ul.products li.product.sola-product-card .woocommerce-loop-product__link .wc-product-image:has(.secondary-image) .inside-wc-product-image > img,
	.woocommerce-page ul.products li.product.sola-product-card a.woocommerce-LoopProduct-link .wc-product-image:has(.secondary-image) .inside-wc-product-image > img {
		transition: none;
	}

	.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon {
		transition: none;
	}

	.sola-product-card .sola-button.loading::after {
		animation: none;
	}

	.sola-product-card--catalog .wc-product-image .inside-wc-product-image > img {
		transition: none;
	}

	.sola-product-card--catalog .sola-product-card__info > a.button.sola-button.sola-product-card__action--icon.loading::after {
		animation: none;
	}
}
