/* ==========================================================================
   REVION — storefront layer
   Tokens come from theme.json; this file styles what WooCommerce renders.
   ========================================================================== */

:root {
	--rv-ink:    var(--wp--preset--color--ink, #12161B);
	--rv-soft:   var(--wp--preset--color--ink-soft, #39414B);
	--rv-slate:  var(--wp--preset--color--slate, #6B7581);
	--rv-line:   var(--wp--preset--color--line, #E2DCD2);
	--rv-paper:  var(--wp--preset--color--paper, #F7F4EF);
	--rv-white:  var(--wp--preset--color--white, #FFFFFF);
	--rv-copper: var(--wp--preset--color--copper, #D4572A);
	--rv-copper-d: var(--wp--preset--color--copper-d, #A53F1C);
	--rv-r-sm:  6px;
	--rv-r-md:  12px;
	--rv-r-lg:  20px;
	--rv-pill:  999px;
	--rv-ease:  cubic-bezier(.2,.7,.3,1);
}

/* --------------------------------------------------------------- foundations */

body { -webkit-font-smoothing: antialiased; }

::selection { background: var(--rv-copper); color: #fff; }

:where(a, button, .button, input, select, textarea):focus-visible {
	outline: 2px solid var(--rv-copper);
	outline-offset: 3px;
	border-radius: var(--rv-r-sm);
}

.rv-eyebrow {
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--rv-copper);
}

/* ------------------------------------------------------------------- header */

.rv-header {
	position: sticky;
	top: 0;
	z-index: 40;
	background: color-mix(in srgb, var(--rv-paper) 88%, transparent);
	backdrop-filter: saturate(180%) blur(14px);
	border-bottom: 1px solid var(--rv-line);
}

.rv-ticker {
	background: var(--rv-ink);
	color: color-mix(in srgb, var(--rv-paper) 85%, transparent);
	font-size: .75rem;
	letter-spacing: .08em;
	text-transform: uppercase;
}
.rv-ticker p { margin: 0; }

.rv-header .wp-block-navigation__responsive-container-open,
.rv-header .wp-block-navigation__responsive-container-close { color: var(--rv-ink); }

.rv-header .wp-block-navigation a {
	position: relative;
	padding-block: .35rem;
}
.rv-header .wp-block-navigation .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 1.5px;
	background: var(--rv-copper);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .28s var(--rv-ease);
}
.rv-header .wp-block-navigation .wp-block-navigation-item__content:hover::after,
.rv-header .wp-block-navigation .current-menu-item .wp-block-navigation-item__content::after {
	transform: scaleX(1);
}

/* mini cart + account icons */
.rv-utility { display: flex; align-items: center; gap: .35rem; }
.rv-utility .wc-block-mini-cart__button { padding: .5rem; border-radius: var(--rv-pill); }
.rv-utility .wc-block-mini-cart__badge {
	background: var(--rv-copper);
	color: #fff;
	border-color: var(--rv-copper);
}

/* --------------------------------------------------------------------- hero */

.rv-hero {
	position: relative;
	overflow: hidden;
	background: var(--rv-ink);
	color: var(--rv-paper);
}
.rv-hero::after {
	content: "";
	position: absolute;
	inset: auto -10% -45% auto;
	width: 60vw;
	aspect-ratio: 1;
	border-radius: 50%;
	background: radial-gradient(circle at 35% 35%, color-mix(in srgb, var(--rv-copper) 55%, transparent), transparent 62%);
	pointer-events: none;
}
.rv-hero :is(h1, h2, h3, p) { color: inherit; position: relative; z-index: 1; }
.rv-hero .wp-block-buttons { position: relative; z-index: 1; }
.rv-hero .wp-block-button.is-style-outline .wp-block-button__link {
	border-color: color-mix(in srgb, var(--rv-paper) 45%, transparent);
	color: var(--rv-paper);
	background: transparent;
}
.rv-hero .wp-block-button.is-style-outline .wp-block-button__link:hover {
	border-color: var(--rv-paper);
	background: var(--rv-paper);
	color: var(--rv-ink);
}

/* --------------------------------------------------------- category tiles */

.rv-tile {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: var(--rv-r-lg);
	background: var(--rv-white);
	border: 1px solid var(--rv-line);
	transition: transform .4s var(--rv-ease), box-shadow .4s var(--rv-ease);
}
.rv-tile:hover {
	transform: translateY(-4px);
	box-shadow: 0 2px 6px rgba(18,22,27,.07), 0 18px 48px rgba(18,22,27,.10);
}
.rv-tile img { display: block; width: 100%; height: auto; }

/* ------------------------------------------------------------- product grid */

.woocommerce ul.products,
ul.products {
	display: grid !important;
	grid-template-columns: repeat(var(--rv-cols, 3), minmax(0, 1fr));
	gap: clamp(1rem, 2.4vw, 2rem);
	margin: 0;
	padding: 0;
	list-style: none;
}
ul.products.columns-2 { --rv-cols: 2; }
ul.products.columns-3 { --rv-cols: 3; }
ul.products.columns-4 { --rv-cols: 4; }

@media (max-width: 900px) { ul.products { --rv-cols: 2 !important; } }
@media (max-width: 540px) { ul.products { --rv-cols: 1 !important; } }

ul.products li.product {
	position: relative;
	display: flex;
	flex-direction: column;
	width: 100% !important;
	margin: 0 !important;
	float: none !important;
	text-align: left;
	background: var(--rv-white);
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-r-lg);
	overflow: hidden;
	transition: transform .4s var(--rv-ease), box-shadow .4s var(--rv-ease), border-color .4s var(--rv-ease);
}
ul.products li.product:hover {
	transform: translateY(-4px);
	border-color: color-mix(in srgb, var(--rv-ink) 16%, transparent);
	box-shadow: 0 2px 6px rgba(18,22,27,.07), 0 18px 48px rgba(18,22,27,.10);
}

ul.products li.product > a.woocommerce-LoopProduct-link {
	display: flex;
	flex-direction: column;
	gap: .1rem;
	padding: 0 0 .25rem;
}

ul.products li.product img {
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	object-fit: cover;
	margin: 0 0 1.1rem;
	background: var(--rv-paper);
	transition: transform .6s var(--rv-ease);
}
ul.products li.product:hover img { transform: scale(1.035); }

ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--wp--preset--font-family--sans);
	font-size: 1rem !important;
	font-weight: 650;
	letter-spacing: -.01em;
	line-height: 1.35;
	padding: 0 1.15rem !important;
	margin: 0 0 .3rem;
	color: var(--rv-ink);
}

ul.products li.product .price {
	display: flex;
	align-items: baseline;
	gap: .5rem;
	padding: 0 1.15rem;
	margin: 0 0 1rem;
	font-size: .95rem;
	font-weight: 650;
	color: var(--rv-ink);
}
ul.products li.product .price del {
	opacity: 1;
	font-weight: 500;
	color: var(--rv-slate);
	text-decoration-thickness: 1px;
}
ul.products li.product .price ins {
	background: none;
	text-decoration: none;
	color: var(--rv-copper-d);
	font-weight: 700;
}
ul.products li.product .price .from,
ul.products li.product .price small { color: var(--rv-slate); font-weight: 500; }

ul.products li.product .star-rating { margin: 0 1.15rem .6rem; font-size: .78rem; color: var(--rv-copper); }

ul.products li.product .button,
ul.products li.product .added_to_cart {
	margin: auto 1.15rem 1.15rem;
	text-align: center;
	border-radius: var(--rv-pill);
	background: var(--rv-ink);
	color: var(--rv-paper);
	font-size: .82rem;
	font-weight: 650;
	letter-spacing: .02em;
	padding: .8em 1.4em;
	border: 0;
	transition: background .25s var(--rv-ease), color .25s var(--rv-ease);
}
ul.products li.product .button:hover { background: var(--rv-copper); color: #fff; }
ul.products li.product .added_to_cart { background: transparent; color: var(--rv-copper); margin-top: -.6rem; }

/* sale badge */
span.onsale {
	position: absolute;
	top: .9rem;
	left: .9rem;
	z-index: 2;
	min-height: 0;
	min-width: 0;
	line-height: 1;
	padding: .45rem .7rem;
	border-radius: var(--rv-pill);
	background: var(--rv-copper);
	color: #fff;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .04em;
	margin: 0;
}

/* out of stock veil */
ul.products li.product.outofstock img { opacity: .45; filter: grayscale(1); }

/* ------------------------------------------------------- shop page furniture */

.woocommerce-products-header { margin-bottom: 1.5rem; }
.woocommerce-products-header__title { font-size: var(--wp--preset--font-size--xx-large); margin: 0 0 .4rem; }

.woocommerce-result-count,
.woocommerce-ordering {
	font-size: .85rem;
	color: var(--rv-slate);
}
.woocommerce-ordering select {
	font: inherit;
	color: var(--rv-ink);
	padding: .5rem 2rem .5rem .8rem;
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-pill);
	background: var(--rv-white);
	appearance: none;
	background-image: linear-gradient(45deg, transparent 50%, var(--rv-slate) 50%), linear-gradient(135deg, var(--rv-slate) 50%, transparent 50%);
	background-position: right 1.05rem center, right .8rem center;
	background-size: 5px 5px, 5px 5px;
	background-repeat: no-repeat;
}

.woocommerce-pagination ul.page-numbers {
	display: flex; gap: .4rem; justify-content: center;
	border: 0; margin: 2.5rem 0 0; padding: 0; list-style: none;
}
.woocommerce-pagination ul.page-numbers li { border: 0; }
.woocommerce-pagination .page-numbers {
	display: grid; place-items: center;
	min-width: 2.4rem; height: 2.4rem;
	border-radius: var(--rv-pill);
	border: 1px solid var(--rv-line);
	background: var(--rv-white);
	font-size: .88rem;
}
.woocommerce-pagination .page-numbers.current { background: var(--rv-ink); color: var(--rv-paper); border-color: var(--rv-ink); }

/* --------------------------------------------------------------------------
   Classic single-product markup is NOT in use — WooCommerce 11 serves the
   blockified template. The page wrapper carries `.product`, so any layout
   rule on `div.product` would reshape the whole page; keep only the pieces
   that still render inside the block template.
   -------------------------------------------------------------------------- */

/* variation selectors (rendered by the classic add-to-cart form) */
.variations { border: 0; margin: 0 0 1rem; width: 100%; }
.variations th, .variations td { padding: .35rem 0; border: 0; }
.variations th.label {
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--rv-slate);
}
.variations select {
	font: inherit;
	width: 100%;
	padding: .8rem 1rem;
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-r-md);
	background: var(--rv-white);
	color: var(--rv-ink);
}
.reset_variations { font-size: .8rem; color: var(--rv-slate); }

.quantity input.qty {
	font: inherit;
	width: 5rem;
	min-height: 3.2rem;
	padding: .5rem;
	text-align: center;
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-pill);
	background: var(--rv-white);
	color: var(--rv-ink);
}

/* reassurance list injected under the add-to-cart button */
.revion-assurances {
	list-style: none;
	margin: 0 0 .5rem;
	padding: 1.1rem 0 0;
	border-top: 1px solid var(--rv-line);
	display: grid;
	gap: .5rem;
	font-size: .88rem;
	color: var(--rv-soft);
}
.revion-assurances li { display: flex; align-items: center; gap: .6rem; }
.revion-assurances li::before {
	content: "";
	width: 1.05rem;
	height: 1.05rem;
	flex: 0 0 auto;
	border-radius: 50%;
	background: color-mix(in srgb, var(--rv-copper) 16%, transparent);
	box-shadow: inset 0 0 0 1.5px var(--rv-copper);
}

/* tabs */
.woocommerce-tabs { margin-top: clamp(1.5rem, 4vw, 3rem); }
.woocommerce-tabs ul.tabs {
	display: flex;
	gap: .4rem;
	flex-wrap: wrap;
	margin: 0 0 1.5rem;
	padding: 0 0 .75rem;
	list-style: none;
	border-bottom: 1px solid var(--rv-line);
}
.woocommerce-tabs ul.tabs::before,
.woocommerce-tabs ul.tabs::after,
.woocommerce-tabs ul.tabs li::before,
.woocommerce-tabs ul.tabs li::after { display: none !important; content: none !important; }
.woocommerce-tabs ul.tabs li { margin: 0; padding: 0; border: 0; background: none; }
.woocommerce-tabs ul.tabs li a {
	display: block;
	padding: .55rem 1.1rem;
	border-radius: var(--rv-pill);
	font-size: .86rem;
	font-weight: 650;
	color: var(--rv-slate);
}
.woocommerce-tabs ul.tabs li.active a { background: var(--rv-ink); color: var(--rv-paper); }
.woocommerce-Tabs-panel { font-size: 1.02rem; line-height: 1.7; color: var(--rv-soft); }
.woocommerce-Tabs-panel h2 { font-size: var(--wp--preset--font-size--x-large); margin-bottom: .8rem; }

/* attributes table */
.shop_attributes { width: 100%; border-collapse: collapse; font-size: .95rem; }
.shop_attributes th, .shop_attributes td {
	padding: .7rem 0;
	border-bottom: 1px solid var(--rv-line);
	text-align: left;
}
.shop_attributes th { font-weight: 650; width: 34%; color: var(--rv-ink); }
.shop_attributes td { color: var(--rv-soft); }
.shop_attributes td p { margin: 0; }

/* single add-to-cart button, wherever it renders */
button.single_add_to_cart_button {
	min-height: 3.2rem;
	padding: .9em 2em;
	border: 0;
	border-radius: var(--rv-pill);
	background: var(--rv-ink);
	color: var(--rv-paper);
	font-size: .95rem;
	font-weight: 650;
	letter-spacing: .02em;
	transition: background .25s var(--rv-ease);
}
button.single_add_to_cart_button:hover { background: var(--rv-copper); color: #fff; opacity: 1; }
button.single_add_to_cart_button.disabled { opacity: .4; }

/* ------------------------------------------------------------ cart & checkout */

.woocommerce-cart-form__contents,
.shop_table {
	width: 100%;
	border-collapse: collapse;
	background: var(--rv-white);
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-r-lg);
	overflow: hidden;
}
.shop_table th, .shop_table td { padding: 1rem; border-bottom: 1px solid var(--rv-line); text-align: left; vertical-align: middle; }
.shop_table th { font-size: .76rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--rv-slate); }
.shop_table .product-thumbnail img { width: 72px; height: 72px; object-fit: cover; border-radius: var(--rv-r-md); background: var(--rv-paper); }
.shop_table td.product-remove a.remove {
	display: grid; place-items: center;
	width: 1.7rem; height: 1.7rem;
	border-radius: 50%;
	background: var(--rv-paper);
	color: var(--rv-slate) !important;
	font-size: 1rem; line-height: 1;
}
.shop_table td.product-remove a.remove:hover { background: var(--rv-copper); color: #fff !important; }

.cart_totals, .woocommerce-checkout-review-order {
	background: var(--rv-white);
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-r-lg);
	padding: clamp(1.25rem, 3vw, 2rem);
}
.cart_totals h2, .woocommerce-checkout-review-order h3 { font-size: var(--wp--preset--font-size--large); margin: 0 0 1rem; }
.cart_totals table, .woocommerce-checkout-review-order table { border: 0; background: none; }
.cart_totals th, .cart_totals td,
.woocommerce-checkout-review-order th, .woocommerce-checkout-review-order td { padding: .7rem 0; border-bottom: 1px solid var(--rv-line); }
.order-total th, .order-total td { font-size: 1.15rem; font-weight: 700; border-bottom: 0 !important; }

.wc-proceed-to-checkout .button,
#place_order,
.woocommerce-cart .actions .button {
	border-radius: var(--rv-pill);
	background: var(--rv-ink);
	color: var(--rv-paper);
	font-weight: 650;
	padding: 1em 1.8em;
	border: 0;
	width: 100%;
	text-align: center;
}
.wc-proceed-to-checkout .button:hover, #place_order:hover { background: var(--rv-copper); color: #fff; }

.woocommerce form .form-row { margin-bottom: 1rem; }
.woocommerce form .form-row label { display: block; font-size: .8rem; font-weight: 650; letter-spacing: .04em; text-transform: uppercase; color: var(--rv-slate); margin-bottom: .35rem; }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.select2-container--default .select2-selection--single {
	font: inherit;
	width: 100%;
	padding: .85rem 1rem;
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-r-md);
	background: var(--rv-white);
	color: var(--rv-ink);
	height: auto;
}
.woocommerce form .form-row input.input-text:focus { border-color: var(--rv-ink); }

.woocommerce-info, .woocommerce-message, .woocommerce-error {
	border-top: 0;
	border-left: 3px solid var(--rv-copper);
	border-radius: var(--rv-r-md);
	background: var(--rv-white);
	box-shadow: 0 1px 2px rgba(18,22,27,.05), 0 8px 24px rgba(18,22,27,.06);
	padding: 1rem 1.25rem;
	font-size: .92rem;
}
.woocommerce-info::before, .woocommerce-message::before, .woocommerce-error::before { display: none; }
.woocommerce-message { border-left-color: #2F6B41; }
.woocommerce-error  { border-left-color: #B3261E; }

.wc_payment_methods { list-style: none; margin: 0 0 1.25rem; padding: 0; display: grid; gap: .6rem; }
.wc_payment_method > label { display: flex; align-items: center; gap: .6rem; font-weight: 650; text-transform: none; letter-spacing: 0; font-size: .95rem; color: var(--rv-ink); }
.wc_payment_method .payment_box { background: var(--rv-paper); border-radius: var(--rv-r-md); padding: .9rem 1.1rem; font-size: .88rem; color: var(--rv-soft); margin-top: .5rem; }
.wc_payment_method .payment_box::before { display: none; }

/* ------------------------------------------------------------------- footer */

.rv-footer { background: var(--rv-ink); color: color-mix(in srgb, var(--rv-paper) 78%, transparent); }
.rv-footer :is(h2, h3, h4, h5, h6) { color: var(--rv-paper); }
.rv-footer a { color: inherit; }
.rv-footer a:hover { color: var(--rv-copper); }
.rv-footer .wp-block-separator { border-color: color-mix(in srgb, var(--rv-paper) 16%, transparent); }

/* ---------------------------------------------------------------- utilities */

.rv-rule { height: 1px; background: var(--rv-line); border: 0; margin: 0; }
.rv-card {
	background: var(--rv-white);
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-r-lg);
}

/* ==========================================================================
   Block-rendered WooCommerce (archives, PDP, cart, checkout)
   WooCommerce 11 serves blockified templates; these selectors cover them.
   ========================================================================== */

/* WooCommerce's own sheets win on specificity, so match theirs. */
.woocommerce span.onsale,
span.onsale {
	background-color: var(--rv-copper) !important;
	color: #fff !important;
}

/* ------------------------------------------------------- product collection */

ul.wc-block-product-template {
	display: grid !important;
	grid-template-columns: repeat(var(--rv-cols, 3), minmax(0, 1fr));
	gap: clamp(1rem, 2.4vw, 2rem);
	margin: 0;
	padding: 0;
	list-style: none;
}
ul.wc-block-product-template.columns-2 { --rv-cols: 2; }
ul.wc-block-product-template.columns-3 { --rv-cols: 3; }
ul.wc-block-product-template.columns-4 { --rv-cols: 4; }
@media (max-width: 900px) { ul.wc-block-product-template { --rv-cols: 2 !important; } }
@media (max-width: 540px) { ul.wc-block-product-template { --rv-cols: 1 !important; } }

li.wc-block-product {
	position: relative;
	display: flex !important;
	flex-direction: column;
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 0 1.15rem !important;
	float: none !important;
	text-align: left;
	background: var(--rv-white);
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-r-lg);
	overflow: hidden;
	transition: transform .4s var(--rv-ease), box-shadow .4s var(--rv-ease), border-color .4s var(--rv-ease);
}
li.wc-block-product:hover {
	transform: translateY(-4px);
	border-color: color-mix(in srgb, var(--rv-ink) 16%, transparent);
	box-shadow: 0 2px 6px rgba(18,22,27,.07), 0 18px 48px rgba(18,22,27,.10);
}

li.wc-block-product .wc-block-components-product-image {
	margin: 0 0 1.1rem !important;
	border-radius: 0;
	overflow: hidden;
	background: var(--rv-paper);
}
li.wc-block-product .wc-block-components-product-image img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 0;
	transition: transform .6s var(--rv-ease);
}
li.wc-block-product:hover .wc-block-components-product-image img { transform: scale(1.035); }

li.wc-block-product .wc-block-components-product-image__inner-container { position: static; }
li.wc-block-product .wp-block-woocommerce-product-sale-badge { position: static; }
li.wc-block-product .wc-block-components-product-sale-badge {
	position: absolute;
	top: .9rem;
	left: .9rem;
	right: auto;
	z-index: 2;
	padding: .45rem .7rem;
	border-radius: var(--rv-pill);
	background: var(--rv-copper);
	color: #fff;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .04em;
	line-height: 1;
	border: 0;
}
li.wc-block-product .wc-block-components-product-sale-badge__text { color: inherit; }

li.wc-block-product > .wp-block-post-title,
li.wc-block-product .wp-block-post-title {
	font-family: var(--wp--preset--font-family--sans);
	font-size: 1rem !important;
	font-weight: 650;
	line-height: 1.35;
	letter-spacing: -.01em;
	margin: 0 0 .35rem !important;
	padding: 0 1.15rem;
}
li.wc-block-product .wp-block-post-title a { color: var(--rv-ink); }

li.wc-block-product .wc-block-components-product-price {
	display: flex;
	align-items: baseline;
	gap: .5rem;
	flex-wrap: wrap;
	margin: 0 0 1rem !important;
	padding: 0 1.15rem;
	font-size: .95rem;
	font-weight: 650;
	color: var(--rv-ink);
}
li.wc-block-product .wc-block-components-product-price del { color: var(--rv-slate); font-weight: 500; opacity: 1; }
li.wc-block-product .wc-block-components-product-price ins { color: var(--rv-copper-d); font-weight: 700; text-decoration: none; }

li.wc-block-product .wp-block-woocommerce-product-button,
li.wc-block-product .wc-block-components-product-button {
	margin: auto 1.15rem 0 !important;
	padding: 0;
}
li.wc-block-product .wc-block-components-product-button__button,
li.wc-block-product .wc-block-components-product-button .wp-block-button__link {
	display: block;
	width: 100%;
	padding: .8em 1.4em;
	border: 0;
	border-radius: var(--rv-pill);
	background: var(--rv-ink);
	color: var(--rv-paper);
	font-size: .82rem;
	font-weight: 650;
	letter-spacing: .02em;
	text-align: center;
	transition: background .25s var(--rv-ease), color .25s var(--rv-ease);
}
li.wc-block-product .wc-block-components-product-button__button:hover {
	background: var(--rv-copper);
	color: #fff;
}
li.wc-block-product .wc-block-components-product-button__button--placed-in-cart {
	background: transparent;
	color: var(--rv-copper);
	box-shadow: inset 0 0 0 1px var(--rv-copper);
}

/* ------------------------------------------------------ archive furniture */

.wc-block-breadcrumbs, .woocommerce-breadcrumb {
	font-size: .82rem;
	color: var(--rv-slate);
	margin-bottom: 1rem;
}
.wc-block-breadcrumbs a, .woocommerce-breadcrumb a { color: var(--rv-slate); }
.wc-block-breadcrumbs a:hover { color: var(--rv-copper); }

.wp-block-query-title, .woocommerce-products-header__title {
	font-size: var(--wp--preset--font-size--xx-large);
	margin: 0 0 1rem;
}

.wp-block-term-description, .term-description { color: var(--rv-soft); max-width: 62ch; }

.wc-block-product-results-count .woocommerce-result-count { margin: 0; font-size: .85rem; color: var(--rv-slate); }

/* ------------------------------------------------------- single product page */

.wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery {
	width: 100% !important;
	float: none !important;
	margin: 0 !important;
}
.wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__wrapper {
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-r-lg);
	overflow: hidden;
	background: var(--rv-white);
}
.wc-block-add-to-cart-form .quantity { margin-right: .5rem; }
.wc-block-add-to-cart-form button.single_add_to_cart_button {
	min-height: 3.2rem;
	padding: .9em 2em;
	border: 0;
	border-radius: var(--rv-pill);
	background: var(--rv-ink);
	color: var(--rv-paper);
	font-size: .95rem;
	font-weight: 650;
}
.wc-block-add-to-cart-form button.single_add_to_cart_button:hover { background: var(--rv-copper); color: #fff; opacity: 1; }

.wc-block-components-product-sku { font-size: .8rem; color: var(--rv-slate); }

.wp-block-woocommerce-product-details .wc-tabs-wrapper { margin-top: 1rem; }

/* ------------------------------------------------------------ cart & checkout */

.wp-block-woocommerce-cart, .wp-block-woocommerce-checkout { max-width: 1240px !important; }

.wc-block-cart-items__row { border-bottom: 1px solid var(--rv-line); }
.wc-block-cart-item__image img {
	border-radius: var(--rv-r-md);
	background: var(--rv-paper);
}
.wc-block-components-product-name { font-weight: 650; color: var(--rv-ink); }

.wc-block-components-sidebar .wc-block-components-totals-wrapper,
.wc-block-components-sidebar-layout .wc-block-components-sidebar {
	border-radius: var(--rv-r-lg);
}
.wc-block-components-sidebar .wc-block-cart__totals-title,
.wc-block-components-checkout-order-summary__title { color: var(--rv-slate); }

.wc-block-components-button:not(.is-link) {
	border-radius: var(--rv-pill);
	background: var(--rv-ink);
	color: var(--rv-paper);
	font-weight: 650;
	border: 0;
}
.wc-block-components-button:not(.is-link):hover { background: var(--rv-copper); color: #fff; }
.wc-block-components-button:not(.is-link):disabled { opacity: .4; }

.wc-block-components-text-input input,
.wc-block-components-combobox-control input,
.wc-block-components-textarea {
	border-radius: var(--rv-r-md) !important;
	border-color: var(--rv-line) !important;
	background: var(--rv-white) !important;
}
.wc-block-components-text-input.is-active label,
.wc-block-components-text-input input:focus + label { color: var(--rv-slate); }

.wc-block-components-radio-control__option,
.wc-block-components-shipping-rates-control__package {
	border-radius: var(--rv-r-md);
}
.wc-block-components-notice-banner {
	border-radius: var(--rv-r-md);
	border-left-width: 3px;
}

.wc-block-components-order-summary-item__image img { border-radius: var(--rv-r-sm); background: var(--rv-paper); }

/* ---------------------------------------------------------------- my account */

.woocommerce-MyAccount-navigation ul { list-style: none; padding: 0; }
.woocommerce-MyAccount-navigation li a { font-weight: 600; }
.woocommerce-MyAccount-navigation li.is-active a { color: var(--rv-copper); text-decoration: none; }

/* --------------------------------------------------------------------------
   WooCommerce clears its float layout with ::before/::after on the list.
   In a grid container those pseudo-elements become grid items and push the
   first product out of column one, so they have to go.
   -------------------------------------------------------------------------- */
.woocommerce ul.products::before,
.woocommerce ul.products::after,
ul.products::before,
ul.products::after,
ul.wc-block-product-template::before,
ul.wc-block-product-template::after {
	display: none !important;
	content: none !important;
}

/* Sale badge: WooCommerce anchors it top-right with negative offsets.
   Re-anchor it inside the card, and beat their specificity. */
.woocommerce ul.products li.product span.onsale,
.woocommerce div.product span.onsale,
ul.products li.product span.onsale,
span.onsale {
	position: absolute;
	top: .9rem !important;
	left: auto !important;
	right: .9rem !important;
	bottom: auto !important;
	margin: 0 !important;
	padding: .45rem .7rem !important;
	min-width: 0 !important;
	min-height: 0 !important;
	line-height: 1 !important;
	border-radius: var(--rv-pill) !important;
	font-size: .72rem !important;
	font-weight: 700 !important;
	letter-spacing: .04em !important;
}

/* The block badge sits in the same corner for consistency. */
li.wc-block-product .wc-block-components-product-sale-badge {
	left: auto;
	right: .9rem;
}

/* ==========================================================================
   Product detail page
   ========================================================================== */

.rv-pdp { align-items: flex-start; }

.rv-pdp__media { position: sticky; top: 7rem; }
@media (max-width: 860px) { .rv-pdp__media { position: static; } }

/* The gallery ships a second copy inside the variation form for JS swapping;
   only the first one should ever be on screen. */
form.variations_form .woocommerce-product-gallery,
form.cart .woocommerce-product-gallery { display: none !important; }

/* Nothing in the gallery may exceed its column — an uninitialised slide
   otherwise renders at the source image's full 1200px. */
.woocommerce-product-gallery,
.woocommerce-product-gallery__wrapper,
.woocommerce-product-gallery__image { max-width: 100%; }
.woocommerce-product-gallery img {
	max-width: 100%;
	height: auto;
	display: block;
}

.wp-block-woocommerce-product-image-gallery { margin: 0; }
.wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery {
	width: 100% !important;
	float: none !important;
	margin: 0 !important;
	opacity: 1 !important;
}
.woocommerce-product-gallery .flex-viewport,
.woocommerce-product-gallery__wrapper {
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-r-lg);
	overflow: hidden;
	background: var(--rv-white);
}
.woocommerce-product-gallery .flex-viewport .woocommerce-product-gallery__wrapper {
	border: 0;
	border-radius: 0;
}
.woocommerce-product-gallery__trigger {
	position: absolute;
	top: 1rem;
	right: 1rem;
	z-index: 3;
	display: grid;
	place-items: center;
	width: 2.4rem;
	height: 2.4rem;
	border-radius: 50%;
	background: var(--rv-white);
	box-shadow: 0 1px 2px rgba(18,22,27,.08), 0 6px 18px rgba(18,22,27,.10);
	color: var(--rv-ink);
	font-size: 1rem;
	text-decoration: none;
}

.woocommerce-product-gallery .flex-control-thumbs {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: .6rem;
	margin: .75rem 0 0;
	padding: 0;
	list-style: none;
}
.woocommerce-product-gallery .flex-control-thumbs li {
	width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	float: none !important;
	list-style: none;
}
.woocommerce-product-gallery .flex-control-thumbs img {
	width: 100%;
	border-radius: var(--rv-r-md);
	border: 1px solid var(--rv-line);
	opacity: .7;
	cursor: pointer;
	transition: opacity .25s var(--rv-ease), border-color .25s var(--rv-ease);
}
.woocommerce-product-gallery .flex-control-thumbs img.flex-active,
.woocommerce-product-gallery .flex-control-thumbs img:hover {
	opacity: 1;
	border-color: var(--rv-ink);
}

/* ------------------------------------------------------------------ summary */

.rv-pdp__summary .wp-block-post-title {
	font-size: clamp(1.9rem, 3vw, 2.6rem);
	line-height: 1.08;
	margin: 0 0 .25rem;
}
.rv-pdp__summary .wc-block-components-product-price {
	display: flex;
	align-items: baseline;
	gap: .6rem;
	flex-wrap: wrap;
	font-weight: 650;
	color: var(--rv-ink);
}
.rv-pdp__summary .wc-block-components-product-price del { color: var(--rv-slate); font-weight: 500; opacity: 1; }
.rv-pdp__summary .wc-block-components-product-price ins { color: var(--rv-copper-d); font-weight: 700; text-decoration: none; }

.rv-pdp__summary .wp-block-post-excerpt__excerpt {
	font-size: 1.05rem;
	line-height: 1.65;
	color: var(--rv-soft);
	margin: 0;
}

.rv-pdp__summary .wp-block-woocommerce-product-meta {
	padding-top: 1rem;
	border-top: 1px solid var(--rv-line);
	font-size: .82rem;
	color: var(--rv-slate);
}
.rv-pdp__summary .wp-block-woocommerce-product-meta a { color: var(--rv-slate); }
.rv-pdp__summary .wp-block-woocommerce-product-meta a:hover { color: var(--rv-copper); }

.wc-block-components-product-stock-indicator {
	font-size: .88rem;
	font-weight: 600;
	color: #2F6B41;
}
.wc-block-components-product-stock-indicator--low-stock { color: var(--rv-copper-d); }
.wc-block-components-product-stock-indicator--out-of-stock { color: #B3261E; }

/* -------------------------------------------------------------- add to cart */

.wc-block-add-to-cart-form form.cart { margin: 0; }
.wc-block-add-to-cart-form .variations { margin-bottom: 1rem; }
.wc-block-add-to-cart-form .woocommerce-variation-price { margin-bottom: .75rem; font-size: 1.15rem; font-weight: 650; }
.wc-block-add-to-cart-form .woocommerce-variation-availability { margin-bottom: .75rem; font-size: .88rem; }
.wc-block-add-to-cart-form .woocommerce-variation-description { color: var(--rv-soft); font-size: .92rem; }
.wc-block-add-to-cart-form .woocommerce-variation-add-to-cart {
	display: flex;
	gap: .75rem;
	align-items: stretch;
	flex-wrap: wrap;
}
.wc-block-add-to-cart-form .woocommerce-variation-add-to-cart .quantity { margin: 0; }
.wc-block-add-to-cart-form button.single_add_to_cart_button { flex: 1 1 13rem; }

/* ------------------------------------------------------------- tabs & detail */

.wp-block-woocommerce-product-details { margin-top: clamp(2.5rem, 6vw, 4.5rem); }
.wp-block-woocommerce-product-details .woocommerce-Tabs-panel { max-width: 70ch; }
.wp-block-woocommerce-product-details .woocommerce-Tabs-panel p { color: var(--rv-soft); line-height: 1.7; }

.woocommerce-product-attributes.shop_attributes { max-width: 640px; }

/* ------------------------------------------------------------------ related */

.wp-block-woocommerce-product-collection + .wp-block-woocommerce-product-collection,
.related.products { margin-top: clamp(2.5rem, 6vw, 4.5rem); }

/* ==========================================================================
   Specificity corrections
   WooCommerce ships rules like `.woocommerce div.product .woocommerce-tabs
   ul.tabs li a` (0,5,1). Anything shorter loses, so these are written to match.
   ========================================================================== */

/* --- tabs -------------------------------------------------------------- */
.woocommerce .woocommerce-tabs ul.tabs li a,
.woocommerce div.product .woocommerce-tabs ul.tabs li a,
.wp-block-woocommerce-product-details .woocommerce-tabs ul.tabs li a {
	color: var(--rv-slate);
	text-shadow: none;
	font-weight: 650;
	padding: .55rem 1.1rem;
	border-radius: var(--rv-pill);
	display: block;
}
.woocommerce .woocommerce-tabs ul.tabs li.active a,
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,
.wp-block-woocommerce-product-details .woocommerce-tabs ul.tabs li.active a {
	color: var(--rv-paper);
}
.woocommerce .woocommerce-tabs ul.tabs li,
.woocommerce div.product .woocommerce-tabs ul.tabs li {
	background: none;
	border: 0;
	border-radius: var(--rv-pill);
	box-shadow: none;
	margin: 0;
	padding: 0;
}
.woocommerce .woocommerce-tabs ul.tabs li.active,
.woocommerce div.product .woocommerce-tabs ul.tabs li.active { background: var(--rv-ink); }
.woocommerce .woocommerce-tabs ul.tabs li::before,
.woocommerce .woocommerce-tabs ul.tabs li::after,
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none !important; content: none !important; }
.woocommerce .woocommerce-tabs ul.tabs { border-bottom: 1px solid var(--rv-line); }

/* --- variation selectors ----------------------------------------------- */
.woocommerce table.variations,
.woocommerce div.product form.cart table.variations { display: block; margin-bottom: 1rem; }
.woocommerce table.variations tbody,
.woocommerce table.variations tr { display: block; }
.woocommerce table.variations tr td,
.woocommerce table.variations tr th,
.woocommerce div.product form.cart table.variations td,
.woocommerce div.product form.cart table.variations th {
	display: block;
	width: 100%;
	padding: 0 0 .4rem;
	text-align: left;
	vertical-align: top;
}
.woocommerce table.variations tr th.label label {
	font-size: .76rem;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--rv-slate);
}
.woocommerce table.variations tr td select,
.woocommerce div.product form.cart table.variations td select {
	width: 100%;
	min-width: 0;
	height: auto;
	padding: .85rem 2.4rem .85rem 1rem;
	font-size: .95rem;
	font-family: inherit;
	color: var(--rv-ink);
	border: 1px solid var(--rv-line);
	border-radius: var(--rv-r-md);
	background-color: var(--rv-white);
	appearance: none;
	background-image: linear-gradient(45deg, transparent 50%, var(--rv-slate) 50%), linear-gradient(135deg, var(--rv-slate) 50%, transparent 50%);
	background-position: right 1.25rem center, right 1rem center;
	background-size: 5px 5px, 5px 5px;
	background-repeat: no-repeat;
}
.woocommerce table.variations tr td .reset_variations {
	display: inline-block;
	margin-top: .45rem;
	font-size: .8rem;
	color: var(--rv-slate);
}

/* --- gallery sizing ---------------------------------------------------- */
.rv-pdp__media .woocommerce-product-gallery,
.rv-pdp__media .woocommerce-product-gallery .flex-viewport {
	width: 100% !important;
	max-width: 100% !important;
}
.rv-pdp__media .woocommerce-product-gallery__image img { width: 100%; }

/* The zoom trigger owns the top-right corner here, so the discount moves left. */
.rv-pdp__media span.onsale,
.woocommerce div.product .rv-pdp__media span.onsale {
	left: .9rem !important;
	right: auto !important;
}

/* --- quantity + add to cart row --------------------------------------- */
.woocommerce div.product form.cart div.quantity { float: none; margin: 0; }
.woocommerce div.product form.cart .button { float: none; }

/* ==========================================================================
   Final overrides — these two need `html body` to outrank WooCommerce's own
   high-specificity block styles.
   ========================================================================== */

/* The gallery block caps itself at 512px via `.woocommerce .wp-block-...`
   (0,2,0) — match that weight so it fills the column instead. */
html body .woocommerce .wp-block-woocommerce-product-image-gallery,
html body .wp-block-woocommerce-product-image-gallery {
	max-width: 100%;
	width: 100%;
}

/* Tabs under `is-style-minimal`: an underline reads better than a pill and
   does not fight the plugin's own colour rules. */
html body .wp-block-woocommerce-product-details .woocommerce-tabs ul.tabs li,
html body .wp-block-woocommerce-product-details.is-style-minimal .woocommerce-tabs ul.tabs li {
	background: none;
	border: 0;
	box-shadow: none;
	margin: 0 1.6rem 0 0;
	padding: 0;
}
html body .wp-block-woocommerce-product-details .woocommerce-tabs ul.tabs li a,
html body .wp-block-woocommerce-product-details.is-style-minimal .woocommerce-tabs ul.tabs li a {
	display: block;
	padding: .3rem 0 .7rem;
	border-bottom: 2px solid transparent;
	border-radius: 0;
	background: none;
	color: var(--rv-slate);
	font-family: var(--wp--preset--font-family--sans);
	font-size: .88rem;
	font-weight: 650;
	text-shadow: none;
	transition: color .2s var(--rv-ease), border-color .2s var(--rv-ease);
}
html body .wp-block-woocommerce-product-details .woocommerce-tabs ul.tabs li a:hover,
html body .wp-block-woocommerce-product-details.is-style-minimal .woocommerce-tabs ul.tabs li a:hover {
	color: var(--rv-ink);
}
html body .wp-block-woocommerce-product-details .woocommerce-tabs ul.tabs li.active a,
html body .wp-block-woocommerce-product-details.is-style-minimal .woocommerce-tabs ul.tabs li.active a {
	color: var(--rv-ink);
	border-bottom-color: var(--rv-copper);
}
html body .wp-block-woocommerce-product-details .woocommerce-tabs ul.tabs li.active,
html body .wp-block-woocommerce-product-details.is-style-minimal .woocommerce-tabs ul.tabs li.active {
	background: none;
}
html body .wp-block-woocommerce-product-details .woocommerce-tabs ul.tabs {
	gap: 0;
	margin-bottom: 1.75rem;
}

/* --------------------------------------------------------------------------
   The block grid uses `repeat(auto-fill, minmax(max(150px, calc(33.33% -
   .83em)), 1fr))`, which rounds down to two columns at our content width.
   Ask for the column count directly instead.
   -------------------------------------------------------------------------- */
ul.wc-block-product-template__responsive,
ul.wc-block-product-template__responsive.columns-2,
ul.wc-block-product-template__responsive.columns-3,
ul.wc-block-product-template__responsive.columns-4 {
	display: grid;
	gap: clamp(1rem, 2.4vw, 2rem);
	grid-template-columns: repeat(var(--rv-cols, 3), minmax(0, 1fr));
}
ul.wc-block-product-template__responsive.columns-2 { --rv-cols: 2; }
ul.wc-block-product-template__responsive.columns-3 { --rv-cols: 3; }
ul.wc-block-product-template__responsive.columns-4 { --rv-cols: 4; }

@media (max-width: 900px) {
	ul.wc-block-product-template__responsive,
	ul.wc-block-product-template__responsive.columns-3,
	ul.wc-block-product-template__responsive.columns-4 { --rv-cols: 2; }
}
@media (max-width: 540px) {
	ul.wc-block-product-template__responsive,
	ul.wc-block-product-template__responsive.columns-2,
	ul.wc-block-product-template__responsive.columns-3,
	ul.wc-block-product-template__responsive.columns-4 { --rv-cols: 1; }
}
