/* Optional controls use theme presets, with fallbacks for other themes. */
.rove-card-actions {
	position: absolute;
	inset: 0;
	pointer-events: none;
}

.rove-card-actions :is(button, a) {
	pointer-events: auto;
	font: inherit;
	cursor: pointer;
}

/* Keep the storefront width unchanged when the modal locks page scrolling. */
html.rove-tools-enhanced {
	scrollbar-gutter: stable;
}

.rove-product-preview {
	padding: 0;
	border: 0;
	width: min(900px, calc(100% - 40px));
	height: fit-content;
	max-height: calc(100dvh - 32px);
	color: var(--wp--preset--color--ink, var(--wp--preset--color--ink));
	background: var(--wp--preset--color--ivory, var(--wp--preset--color--ivory));
}

.rove-product-preview::backdrop {
	background: rgba(48, 27, 37, 0.5);
}

.rove-product-preview.is-loading {
	height: min(640px, calc(100dvh - 32px));
}

/* Reveal the fully measured content at its natural height. */
.rove-product-preview[open]:not(.is-loading) {
	animation: rove-preview-enter 220ms cubic-bezier(0.2, 0.7, 0.3, 1) both;
}

.rove-product-preview[open]::backdrop {
	animation: rove-preview-backdrop-enter 180ms ease-out both;
}

@keyframes rove-preview-enter {
	from {
		opacity: 0;
		transform: translateY(12px) scale(0.985);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

@keyframes rove-preview-backdrop-enter {
	from { opacity: 0; }
	to { opacity: 1; }
}

.rove-preview-loading {
	position: absolute;
	inset: 0;
	display: grid;
	place-content: center;
	justify-items: center;
	gap: 16px;
	padding: 56px 24px;
	text-align: center;
	font-size: calc(var(--wp--preset--font-size--body, 16px) * 0.875);
	color: var(--wp--preset--color--muted, currentColor);
}

.rove-product-preview:not(.is-loading) .rove-preview-loading {
	display: none;
}

.rove-preview-loading-mark {
	width: 28px;
	height: 28px;
	border: 2px solid var(--wp--preset--color--divider, #ddd);
	border-block-start-color: var(--wp--preset--color--burgundy, currentColor);
	border-radius: 50%;
	animation: rove-preview-loading 800ms linear infinite;
}

@keyframes rove-preview-loading {
	to { transform: rotate(360deg); }
}

.rove-product-preview .rove-preview-layout {
	opacity: 1;
	visibility: visible;
	transition: opacity 160ms ease-out;
}

.rove-product-preview.is-loading .rove-preview-layout {
	opacity: 0;
	visibility: hidden;
	transition: none;
}

@media (prefers-reduced-motion: reduce) {
	.rove-product-preview[open]:not(.is-loading),
	.rove-product-preview[open]::backdrop,
	.rove-product-preview .rove-preview-loading-mark {
		animation: none;
	}
	.rove-product-preview .rove-preview-layout {
		transition: none;
	}
}

.rove-preview-layout {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: start;
}

.rove-preview-image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.rove-preview-copy {
	padding: 48px 36px;
	align-self: start;
}

.rove-preview-copy h2 {
	font-family: var(--wp--preset--font-family--heading, Georgia, serif);
	font-size: clamp(2rem, 4vw, 3.25rem);
	line-height: 1.1;
	font-weight: 400;
	margin: 0 0 20px;
}

.rove-preview-description {
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.7;
	margin: 24px 0;
}

.rove-preview-close {
	position: absolute;
	inset-block-start: 12px;
	inset-inline-end: 12px;
	width: 44px;
	height: 44px;
	border: 0;
	background: var(--wp--preset--color--ivory, var(--wp--preset--color--ivory));
	color: inherit;
	font-size: 26px;
	cursor: pointer;
}

.rove-preview-link {
	display: inline-flex;
	padding: 14px 20px;
	background: var(--wp--preset--color--burgundy, var(--wp--preset--color--burgundy));
	color: var(--wp--preset--color--ivory, var(--wp--preset--color--ivory));
	text-decoration: none;
	font-size: calc(var(--wp--preset--font-size--body) * 0.9375);
}

@media (max-width: 600px) {
	.rove-preview-layout {
		grid-template-columns: 1fr;
	}

	.rove-preview-image {
		max-height: 300px;
	}

	.rove-preview-copy {
		padding: 28px 24px;
	}
}

/* Optional controls appear when their progressive enhancement is available. */
.rove-catalog-view,
.rove-saved-filter {
	display: none;
}

.rove-tools-enhanced .rove-catalog-view {
	display: flex;
}

.rove-tools-enhanced .rove-saved-filter {
	display: block;
}

.rove-catalog-view button {
	width: 44px;
	height: 44px;
	border: 0;
	color: inherit;
	background: transparent;
	cursor: pointer;
}

.rove-catalog-view svg {
	width: 16px;
	height: 16px;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.5;
}

.rove-catalog-view button[aria-pressed="true"] {
	background: color-mix(in srgb, var(--wp--preset--color--ivory) 92%, var(--wp--preset--color--ink));
}

.rove-shop-preview-link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: 46px;
	padding: 12px 15px;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--divider) 70%, var(--wp--preset--color--burgundy));
	text-decoration: none;
	font-size: calc(var(--wp--preset--font-size--body) * 0.875);
}

.rove-saved-filter label {
	display: flex;
	align-items: center;
	gap: 10px;
	min-height: 44px;
	font-size: calc(var(--wp--preset--font-size--body) * 0.875);
}

.rove-saved-filter label span {
	margin-inline-start: auto;
}

.rove-saved-filter p {
	font-size: calc(var(--wp--preset--font-size--body) * 0.8125);
	line-height: 1.7;
}

.rove-preview-open {
	overflow: hidden;
}

.rove-product-preview {
	width: min(1080px, calc(100% - 32px));
	overflow-y: auto;
	scrollbar-gutter: stable;
}

.rove-preview-gallery {
	padding: 24px;
	min-width: 0;
}

.rove-preview-gallery .rove-preview-image {
	display: block;
	height: auto;
	aspect-ratio: 1;
	object-fit: cover;
	max-height: none;
}

.rove-preview-thumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 14px;
}

.rove-preview-thumbs button {
	width: 64px;
	height: 64px;
	padding: 2px;
	border: 1px solid transparent;
	background: transparent;
	cursor: pointer;
}

.rove-preview-thumbs button[aria-pressed="true"] {
	border-color: var(--wp--preset--color--burgundy);
}

.rove-preview-thumbs img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.rove-preview-copy {
	padding-block: 48px 32px;
	padding-inline: 12px 32px;
}

.rove-preview-close {
	z-index: 2;
	border-radius: 50%;
}

.rove-preview-purchase {
	margin: 24px 0;
	font-size: var(--wp--preset--font-size--body);
}

.rove-preview-purchase table {
	width: 100%;
	border: 0;
	border-collapse: collapse;
}

.rove-preview-purchase th, .rove-preview-purchase td {
	display: block;
	padding: 0;
	border: 0;
	text-align: start;
}

.rove-preview-purchase label {
	display: block;
	margin-bottom: 8px;
	font-weight: 600;
}

.rove-preview-purchase select {
	width: 100%;
	min-height: 48px;
	padding: 10px 12px;
	background: transparent;
	color: inherit;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--divider) 70%, var(--wp--preset--color--burgundy));
	font: inherit;
}

.rove-preview-purchase .reset_variations {
	display: inline-block;
	margin: 8px 0 16px;
	font-size: calc(var(--wp--preset--font-size--body) * 0.875);
}

.rove-preview-purchase .quantity {
	display: inline-block;
	margin: 0 10px 12px 0;
}

.rove-preview-purchase input.qty {
	width: 80px;
	min-height: 48px;
	padding: 10px;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--divider) 70%, var(--wp--preset--color--burgundy));
	background: transparent;
	color: inherit;
	font: inherit;
	text-align: center;
	box-sizing: border-box;
}

.rove-preview-purchase .single_add_to_cart_button {
	min-height: 48px;
	padding: 12px 28px;
	border: 1px solid var(--wp--preset--color--burgundy);
	border-radius: 0;
	background: var(--wp--preset--color--burgundy);
	color: var(--wp--preset--color--ivory);
	font: inherit;
	cursor: pointer;
}

.rove-preview-purchase .single_add_to_cart_button.disabled {
	opacity: .5;
}

.rove-preview-purchase .single_variation {
	margin-bottom: 16px;
}

.rove-preview-link {
	padding: 0 0 4px;
	background: transparent;
	color: inherit;
	border-bottom: 1px solid currentColor;
}

.rove-preview-purchase .stock {
	font-size: calc(var(--wp--preset--font-size--body) * 0.875);
}

@media (max-width: 600px) {
.rove-preview-gallery {
	padding: 20px 20px 0;
}

.rove-preview-copy {
	padding: 24px 20px;
}

.rove-preview-thumbs button {
	width: 52px;
	height: 52px;
}

}

.rove-preview-purchase select[hidden] {
	display: none;
}

.rove-preview-options {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.rove-preview-options button {
	flex: 1;
	min-width: 120px;
	min-height: 80px;
	padding: 14px 18px;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--divider) 70%, var(--wp--preset--color--burgundy));
	background: transparent;
	color: inherit;
	text-align: start;
	cursor: pointer;
}

.rove-preview-options button[aria-pressed="true"] {
	background: color-mix(in srgb, var(--wp--preset--color--ivory) 92%, var(--wp--preset--color--ink));
	border-color: var(--wp--preset--color--burgundy);
	box-shadow: inset 0 0 0 1px var(--wp--preset--color--burgundy);
}

.rove-preview-options button:disabled {
	opacity: .45;
	cursor: not-allowed;
}

.rove-preview-options strong {
	display: block;
	font-size: var(--wp--preset--font-size--body);
	font-weight: 500;
}

.rove-preview-options small {
	display: block;
	margin-top: 6px;
	font-size: calc(var(--wp--preset--font-size--body) * 0.8125);
	line-height: 1.5;
	color: var(--wp--preset--color--muted);
}

.rove-preview-notice {
	margin-top: 16px;
	padding: 16px;
	background: color-mix(in srgb, var(--wp--preset--color--ivory) 75%, var(--wp--preset--color--citron));
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--citron) 80%, var(--wp--preset--color--ink));
}

.rove-preview-notice.is-error {
	background: var(--wp--preset--color--blush);
	border-color: color-mix(in srgb, var(--wp--preset--color--divider) 70%, var(--wp--preset--color--burgundy));
}

.rove-preview-purchase button:disabled {
	cursor: wait;
}


/* Match the full-width option tiles and label row on product details. */
.rove-preview-purchase .variations,
.rove-preview-purchase .variations tbody,
.rove-preview-purchase .variations tr,
.rove-preview-purchase .variations td {
	display: block;
	width: 100%;
	box-sizing: border-box;
}

.rove-preview-purchase .variations tr {
	position: relative;
	margin-bottom: 16px;
}

.rove-preview-purchase .variations th {
	padding: 0;
	padding-inline-end: 60px;
}

.rove-preview-purchase .variations label {
	font-size: calc(var(--wp--preset--font-size--body) * 0.875);
	line-height: 1.5;
	margin-bottom: 12px;
}

.rove-preview-purchase .rove-preview-options {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	width: 100%;
	gap: 12px;
}

.rove-preview-purchase .rove-preview-options button {
	min-width: 0;
	font-family: inherit;
	box-sizing: border-box;
}

.rove-preview-purchase .rove-preview-options small {
	margin-top: 6px;
}

.rove-preview-purchase .reset_variations {
	position: absolute;
	inset-inline-end: 0;
	inset-block-start: 0;
	margin: 0;
	font-size: calc(var(--wp--preset--font-size--body) * 0.8125);
}

.rove-cart-feedback {
	position: fixed;
	inset-inline-start: 50%;
	inset-block-end: max(24px, env(safe-area-inset-bottom));
	transform: translateX(-50%);
	width: max-content;
	text-align: center;
	pointer-events: none;
	z-index: 100000;
	max-width: calc(100vw - 48px);
	box-sizing: border-box;
	padding: 16px 24px;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--citron) 80%, var(--wp--preset--color--ink));
	background: color-mix(in srgb, var(--wp--preset--color--ivory) 75%, var(--wp--preset--color--citron));
	color: var(--wp--preset--color--ink);
	box-shadow: 0 4px 24px color-mix(in srgb, var(--wp--preset--color--ink) 7.84%, transparent);
}

/* Match the product-detail purchase row and gallery proportions. */
.rove-preview-purchase .woocommerce-variation-add-to-cart,
.rove-preview-purchase form.cart:not(.variations_form):not(.grouped_form) {
	display: flex;
	align-items: stretch;
	gap: 12px;
}

.rove-preview-purchase .quantity {
	flex: 0 0 80px;
	margin: 0;
}

.rove-preview-purchase input.qty {
	height: 53px;
}

.rove-preview-purchase .single_add_to_cart_button {
	flex: 1;
	min-width: 0;
	min-height: 53px;
	padding: 14px 20px;
}

.rove-preview-gallery .rove-preview-image {
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
}

.rove-preview-thumbs {
	gap: 12px;
	margin-top: 16px;
}

.rove-preview-thumbs button {
	flex: 0 0 80px;
	width: 80px;
	height: 80px;
	padding: 0;
	box-sizing: border-box;
	opacity: 0.65;
}

.rove-preview-thumbs button[aria-pressed="true"] {
	opacity: 1;
	border-color: var(--wp--preset--color--burgundy);
}

/* Constrain every thumbnail, including portrait source images. */
.rove-product-preview .rove-preview-thumbs button {
	display: block;
	overflow: hidden;
	aspect-ratio: 1;
	border-radius: 0;
}

.rove-product-preview .rove-preview-thumbs button img {
	display: block;
	width: 100%;
	height: 100%;
	max-height: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	margin: 0;
}

.rove-preview-purchase .quantity.rove-preview-stepper {
	display: flex;
	align-items: center;
	flex: 0 0 134px;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--divider) 70%, var(--wp--preset--color--burgundy));
	box-sizing: border-box;
	height: 53px;
}

.rove-preview-stepper button {
	flex: 0 0 36px;
	align-self: stretch;
	border: 0;
	padding: 0;
	background: transparent;
	color: inherit;
	font: inherit;
	cursor: pointer;
}

.rove-preview-stepper button:disabled {
	opacity: 0.4;
	cursor: not-allowed;
}

.rove-preview-purchase .rove-preview-stepper input.qty {
	flex: 1;
	width: 0;
	min-width: 0;
	height: 51px;
	min-height: 0;
	padding: 0;
	border: 0;
	appearance: textfield;
	-moz-appearance: textfield;
}

.rove-preview-stepper input::-webkit-inner-spin-button,
.rove-preview-stepper input::-webkit-outer-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.rove-preview-slider {
	position: relative;
	overflow: hidden;
}

.rove-preview-slides > div {
	display: none;
}

.rove-preview-slides > div:first-child {
	display: block;
}

.rove-preview-slider .flex-direction-nav {
	list-style: none;
	margin: 0;
	padding: 0;
}

.rove-preview-slider .flex-direction-nav a {
	position: absolute;
	top: calc(50% - 22px);
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: var(--wp--preset--color--ivory);
	color: var(--wp--preset--color--ink);
	font-size: 0;
	text-decoration: none;
	display: grid;
	place-items: center;
	z-index: 1;
}

.rove-preview-slider .flex-prev { inset-inline-start: 12px; }
.rove-preview-slider .flex-next { inset-inline-end: 12px; }
.rove-preview-slider .flex-prev::after { content: '←'; font-size: 22px; }
.rove-preview-slider .flex-next::after { content: '→'; font-size: 22px; }
.rove-preview-slider .flex-disabled { opacity: 0.35; pointer-events: none; }

/* Isolate slider controls from inherited link and FlexSlider styles. */
.rove-product-preview .rove-preview-slider .flex-direction-nav a {
	display: flex;
	align-items: center;
	justify-content: center;
	top: 50%;
	transform: translateY(-50%);
	width: 44px;
	height: 44px;
	margin: 0;
	padding: 0;
	border: 1px solid var(--wp--preset--color--divider);
	border-radius: 50%;
	background: var(--wp--preset--color--ivory);
	color: var(--wp--preset--color--ink);
	line-height: 1;
	text-indent: 0;
	text-shadow: none;
	box-shadow: none;
	opacity: 1;
}

.rove-product-preview .rove-preview-slider .flex-direction-nav a::before {
	content: none;
}

.rove-product-preview .rove-preview-slider .flex-direction-nav a::after {
	content: '';
	display: block;
	width: 15px;
	height: 15px;
	background: currentColor;
	clip-path: polygon(0 44%, 76% 44%, 44% 12%, 53% 3%, 100% 50%, 53% 97%, 44% 88%, 76% 56%, 0 56%);
}

.rove-product-preview .rove-preview-slider .flex-prev::after {
	transform: rotate(180deg);
}

.rove-product-preview .rove-preview-slider .flex-direction-nav a:hover {
	background: color-mix(in srgb, var(--wp--preset--color--ivory) 92%, var(--wp--preset--color--ink));
}

.rove-product-preview .rove-preview-slider .flex-direction-nav a.flex-disabled {
	visibility: hidden;
	pointer-events: none;
}

[dir="rtl"] .rove-product-preview .rove-preview-slider .flex-prev::after { transform: none; }
[dir="rtl"] .rove-product-preview .rove-preview-slider .flex-next::after { transform: rotate(180deg); }

/* One vector heart for cards and the header; selection follows the palette. */
.rove-card-save .rove-heart-icon,
.rove-header-wishlist .rove-heart-icon {
	display: block;
	width: 24px;
	height: 24px;
	fill: none;
	stroke: currentColor;
}
.rove-card-save[aria-pressed="true"] .rove-heart-icon { fill: currentColor; }
.rove-header-wishlist {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	min-height: 44px;
	color: var(--wp--preset--color--ink, #301b25);
	text-decoration: none;
}
.rove-header-wishlist:hover { color: var(--wp--preset--color--burgundy, #3c1828); }
.rove-wishlist-empty { padding-block: 3rem; }
.rove-wishlist .rove-catalog-collection { margin-block-start: 3rem; }
.rove-wishlist .wc-block-product-template { gap: 24px; }
@media (max-width: 781px) {
	.rove-wishlist .wc-block-product-template { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
}
@media (max-width: 480px) {
	.rove-wishlist .wc-block-product-template { grid-template-columns: minmax(0, 1fr); }
}
.rove-wishlist .rove-catalog-collection .wc-block-product-template {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 900px) {
	.rove-wishlist .rove-catalog-collection .wc-block-product-template { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
	.rove-wishlist .rove-catalog-collection .wc-block-product-template { grid-template-columns: minmax(0, 1fr); }
}

.rove-header-wishlist { position: relative; }
.rove-wishlist-count {
	position: absolute;
	inset-block-start: 3px;
	inset-inline-end: 0;
	min-width: 18px;
	height: 18px;
	padding-inline: 4px;
	border-radius: 999px;
	display: grid;
	place-items: center;
	background: var(--wp--preset--color--ink, #301b25);
	color: var(--wp--preset--color--ivory, #f8f6ef);
	font-family: var(--wp--preset--font-family--body, sans-serif);
	font-size: 11px;
	font-weight: 600;
	line-height: 1;
}
.rove-wishlist[aria-busy="true"] { opacity: 0.65; }
.rove-wishlist-sync-error {
	position: fixed;
	inset-inline: 1rem;
	bottom: 1rem;
	margin-inline: auto;
	max-width: 34rem;
	padding: 1rem;
	z-index: 99999;
	background: var(--wp--preset--color--ivory, #f8f6ef);
	color: var(--wp--preset--color--ink, #301b25);
	border: 1px solid currentColor;
}
