/* ===========================================================================
   Bio Vedik, WooCommerce
   Shop, single product, cart, checkout, account, all re-skinned to the
   brand system defined in brand.css.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   Page header for shop / archive
   ------------------------------------------------------------------------- */

.bv-shop-hero {
	padding-block: clamp(2.25rem, 1.6rem + 3vw, 4rem);
	background:
		radial-gradient(55% 60% at 10% 0%, rgba(197, 155, 39, 0.11), transparent 62%),
		linear-gradient(180deg, var(--bv-white), var(--bv-cream));
	border-bottom: 1px solid var(--bv-line);
	text-align: center;
}

.bv-shop-hero h1 { margin: 0 0 0.5rem; }
.bv-shop-hero p  { margin: 0 auto; max-width: 56ch; color: var(--bv-ink-soft); }

.woocommerce-breadcrumb {
	font-size: var(--bv-text-xs);
	color: var(--bv-ink-muted);
	letter-spacing: 0.02em;
	margin-bottom: 1.25rem !important;
}

.woocommerce-breadcrumb a { color: var(--bv-green-600); }

/* ---------------------------------------------------------------------------
   Product loop cards
   ------------------------------------------------------------------------- */

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
	background: var(--bv-white);
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-lg);
	padding: 0.85rem 0.85rem 1.25rem;
	box-shadow: var(--bv-shadow-xs);
	text-align: center;
	overflow: hidden;
	transition: transform var(--bv-dur) var(--bv-ease-out),
	            box-shadow var(--bv-dur) var(--bv-ease-out),
	            border-color var(--bv-dur) var(--bv-ease);
}

.woocommerce ul.products li.product:hover {
	transform: translateY(-6px);
	box-shadow: var(--bv-shadow-lg);
	border-color: rgba(197, 155, 39, 0.38);
}

.woocommerce ul.products li.product a img {
	border-radius: var(--bv-radius);
	background: linear-gradient(160deg, var(--bv-gold-50), var(--bv-green-50));
	margin-bottom: 0.9rem;
	transition: transform 600ms var(--bv-ease-out);
}

.woocommerce ul.products li.product:hover a img { transform: scale(1.05); }

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--bv-font-display) !important;
	font-size: var(--bv-text-lg) !important;
	color: var(--bv-green) !important;
	padding: 0 !important;
	margin-bottom: 0.35rem !important;
	line-height: 1.25;
}

.woocommerce ul.products li.product .price {
	color: var(--bv-green-800) !important;
	font-size: var(--bv-text-base) !important;
	font-weight: 650;
	display: block;
	margin-bottom: 0.9rem;
}

.woocommerce ul.products li.product .price del {
	color: var(--bv-ink-muted) !important;
	font-weight: 400;
	opacity: 0.8;
	margin-inline-end: 0.35rem;
}

.woocommerce ul.products li.product .price ins {
	background: transparent;
	text-decoration: none;
	color: var(--bv-green) !important;
}

/* Sale flash */
.woocommerce span.onsale {
	background: var(--bv-gold) !important;
	color: var(--bv-green-900) !important;
	font-family: var(--bv-font-body);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	border-radius: var(--bv-radius-pill);
	padding: 0.4rem 0.85rem;
	min-height: 0;
	min-width: 0;
	line-height: 1.2;
	top: 1rem;
	inset-inline-start: 1rem;
	inset-inline-end: auto;
	box-shadow: var(--bv-shadow-sm);
}

/* Star ratings */
.woocommerce .star-rating span::before,
.woocommerce .star-rating::before { color: var(--bv-gold); }
.woocommerce ul.products li.product .star-rating { margin: 0 auto 0.6rem; font-size: 0.85em; }

/* ---------------------------------------------------------------------------
   Buttons, one shared treatment across the whole store
   ------------------------------------------------------------------------- */

.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt,
.wc-block-components-button {
	background: var(--bv-gold) !important;
	color: var(--bv-green-900) !important;
	font-family: var(--bv-font-body) !important;
	font-size: var(--bv-text-sm) !important;
	font-weight: 650 !important;
	letter-spacing: 0.02em;
	border: 0 !important;
	border-radius: var(--bv-radius-pill) !important;
	padding: 0.85rem 1.75rem !important;
	line-height: 1.25 !important;
	transition: transform var(--bv-dur) var(--bv-ease-out),
	            box-shadow var(--bv-dur) var(--bv-ease-out),
	            background-color var(--bv-dur-fast) var(--bv-ease) !important;
}

.woocommerce #respond input#submit:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover,
.wc-block-components-button:hover {
	background: var(--bv-gold-400) !important;
	color: var(--bv-green-900) !important;
	transform: translateY(-2px);
	box-shadow: var(--bv-shadow-gold);
}

.woocommerce a.button.added_to_cart {
	display: inline-block;
	margin-top: 0.5rem;
	background: transparent !important;
	color: var(--bv-green) !important;
	text-decoration: underline;
	padding: 0.35rem 0 !important;
}

.woocommerce .button.disabled,
.woocommerce .button:disabled { opacity: 0.55; transform: none !important; box-shadow: none !important; }

/* ---------------------------------------------------------------------------
   Single product
   ------------------------------------------------------------------------- */

.woocommerce div.product { padding-block: clamp(1.5rem, 1rem + 2vw, 2.5rem); }

.woocommerce div.product div.images img {
	border-radius: var(--bv-radius-lg);
	background: linear-gradient(160deg, var(--bv-gold-50), var(--bv-green-50));
	box-shadow: var(--bv-shadow-sm);
}

.woocommerce div.product .flex-control-thumbs li img {
	border-radius: var(--bv-radius-sm);
	border: 1px solid var(--bv-line);
	opacity: 0.65;
	transition: opacity var(--bv-dur-fast) var(--bv-ease), border-color var(--bv-dur-fast) var(--bv-ease);
}

.woocommerce div.product .flex-control-thumbs li img:hover,
.woocommerce div.product .flex-control-thumbs li img.flex-active {
	opacity: 1;
	border-color: var(--bv-gold);
}

.woocommerce div.product .product_title {
	font-size: var(--bv-h2) !important;
	margin-bottom: 0.5rem !important;
}

.woocommerce div.product p.price,
.woocommerce div.product span.price {
	color: var(--bv-green) !important;
	font-family: var(--bv-font-display);
	font-size: 1.85rem !important;
	font-weight: 650;
	margin-bottom: 1rem;
}

.woocommerce div.product p.price del { font-size: 1.1rem; color: var(--bv-ink-muted) !important; }
.woocommerce div.product p.price ins  { background: transparent; text-decoration: none; }

.woocommerce div.product .woocommerce-product-rating { margin-bottom: 1rem; }

.woocommerce-product-details__short-description {
	font-size: var(--bv-text-lg);
	color: var(--bv-ink-soft);
	padding-bottom: 1.25rem;
	margin-bottom: 1.25rem;
	border-bottom: 1px solid var(--bv-line);
}

/* ── Quantity stepper ───────────────────────────────────────────────────── */

.woocommerce .quantity .qty {
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-sm);
	background: var(--bv-white);
	padding: 0.72rem 0.5rem;
	font-weight: 600;
	color: var(--bv-green-800);
	width: 4.5rem;
	text-align: center;
}

.woocommerce .quantity .qty:focus { border-color: var(--bv-gold); outline: none; }

/* ── Variation form ─────────────────────────────────────────────────────── */

.woocommerce div.product form.cart { margin-bottom: 1.5rem; }

.woocommerce div.product form.cart .variations {
	margin-bottom: 1.25rem;
	border-collapse: separate;
	border-spacing: 0 0.6rem;
}

.woocommerce div.product form.cart .variations label {
	font-family: var(--bv-font-body);
	font-size: var(--bv-text-xs);
	font-weight: 650;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--bv-ink-muted);
}

.woocommerce div.product form.cart .variations select {
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-sm);
	padding: 0.7rem 0.9rem;
	background-color: var(--bv-white);
	color: var(--bv-green-800);
	font-weight: 550;
	min-height: 0;
}

.woocommerce div.product form.cart .reset_variations {
	font-size: var(--bv-text-xs);
	color: var(--bv-ink-muted);
}

.woocommerce-variation-price { margin-bottom: 0.9rem; }

/* ── Variation swatches ─────────────────────────────────────────────────
   The plugin renders .tawcvs-swatches and defaults every swatch to a circle,
   which crops a label like "Combo, 2 x 200 ml" into illegibility. Sizes read
   far better as pills that grow with their text. */

.tawcvs-swatches {
	display: flex;
	flex-wrap: wrap;
	gap: 0.55rem;
	margin-top: 0.25rem;
}

.tawcvs-swatches .swatch-item-wrapper { margin: 0; }

.tawcvs-swatches .swatch,
.tawcvs-swatches .swatch.swatch-shape-circle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: auto !important;
	height: auto !important;
	min-width: 0;
	min-height: 0;
	padding: 0.6rem 1.15rem;
	border: 1.5px solid var(--bv-line);
	border-radius: var(--bv-radius-pill) !important;
	background: var(--bv-white);
	color: var(--bv-green-800);
	font-family: var(--bv-font-body);
	font-size: var(--bv-text-sm);
	font-weight: 600;
	line-height: 1.25;
	white-space: nowrap;
	opacity: 1;
	box-shadow: none;
	cursor: pointer;
	transition: border-color var(--bv-dur-fast) var(--bv-ease),
	            background-color var(--bv-dur-fast) var(--bv-ease),
	            color var(--bv-dur-fast) var(--bv-ease),
	            transform var(--bv-dur-fast) var(--bv-ease-out);
}

.tawcvs-swatches .swatch .text { font-size: inherit; line-height: inherit; }

.tawcvs-swatches .swatch:hover {
	border-color: var(--bv-gold);
	transform: translateY(-2px);
}

/* The plugin paints the selected swatch #f1f1f1 with its own rule, which beat
   the brand colours and left white label text on a near-white pill, the
   chosen size was literally unreadable. !important is the honest fix here. */
.tawcvs-swatches .swatch.selected,
.tawcvs-swatches .swatch.selected:hover {
	border-color: var(--bv-green) !important;
	background: var(--bv-green) !important;
	color: var(--bv-white) !important;
	transform: none;
}

.tawcvs-swatches .swatch.selected .text { color: var(--bv-white) !important; }

/* The swatch is a <div>, so it receives :focus rather than :focus-visible and
   was showing the browser's default ring. */
.tawcvs-swatches .swatch:focus {
	outline: 2px solid var(--bv-gold);
	outline-offset: 3px;
}

/* "Clear" reset link under the swatches. */
.reset_variations {
	display: inline-block;
	margin-top: 0.5rem;
	font-size: var(--bv-text-xs);
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--bv-ink-muted) !important;
}

.reset_variations:hover { color: var(--bv-green) !important; }

/* Out-of-stock / unavailable combinations. */
.tawcvs-swatches .swatch.disabled,
.tawcvs-swatches .swatch[data-disabled] {
	opacity: 0.4;
	cursor: not-allowed;
	text-decoration: line-through;
}

.tawcvs-swatches .swatch:focus-visible {
	outline: 2px solid var(--bv-gold);
	outline-offset: 3px;
}

/* The plugin hides the native select; keep it hidden but reachable. */
.variation-selector.hidden { display: none; }

/* ── Trust badges under add-to-cart (theme-injected) ────────────────────── */

.bv-product-trust {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));
	gap: 0.6rem;
	margin: 1.25rem 0;
	padding: 1rem;
	border-radius: var(--bv-radius);
	background: var(--bv-cream);
	border: 1px solid var(--bv-line);
}

.bv-product-trust div {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: var(--bv-text-xs);
	font-weight: 600;
	color: var(--bv-green-700);
}

.bv-product-trust svg { width: 18px; height: 18px; color: var(--bv-gold-600); flex: none; }

/* ── WhatsApp order button ──────────────────────────────────────────────── */

.bv-wa-order {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.6rem;
	width: 100%;
	margin-top: 0.75rem;
	padding: 0.9rem 1.5rem;
	border: 1px solid #1faa53;
	border-radius: var(--bv-radius-pill);
	background: #25D366;
	color: #06351a;
	font-size: var(--bv-text-sm);
	font-weight: 650;
	text-decoration: none;
	transition: transform var(--bv-dur) var(--bv-ease-out), box-shadow var(--bv-dur) var(--bv-ease-out);
}

.bv-wa-order:hover {
	color: #06351a;
	transform: translateY(-2px);
	box-shadow: 0 10px 26px rgba(37, 211, 102, 0.35);
}

.bv-wa-order svg { width: 20px; height: 20px; }

/* ── Ingredient strip on the product page ───────────────────────────────── */

.bv-product-ingredients {
	margin: 1.5rem 0;
	padding: 1.25rem;
	border-radius: var(--bv-radius);
	background: linear-gradient(140deg, var(--bv-green-50), var(--bv-gold-50));
	border: 1px solid var(--bv-line);
}

.bv-product-ingredients h4 {
	margin: 0 0 0.75rem;
	font-family: var(--bv-font-body);
	font-size: var(--bv-text-xs);
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--bv-gold-700);
}

.bv-product-ingredients ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }

.bv-product-ingredients li {
	display: flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.4rem 0.8rem;
	border-radius: var(--bv-radius-pill);
	background: rgba(255, 255, 255, 0.78);
	border: 1px solid var(--bv-line);
	font-size: var(--bv-text-xs);
	font-weight: 600;
	color: var(--bv-green-700);
}

/* ── Tabs ───────────────────────────────────────────────────────────────── */

.woocommerce div.product .woocommerce-tabs ul.tabs { padding: 0 !important; margin-bottom: 1.75rem; }
.woocommerce div.product .woocommerce-tabs ul.tabs::before { border-bottom-color: var(--bv-line); }

.woocommerce div.product .woocommerce-tabs ul.tabs li {
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	padding: 0 !important;
	margin: 0 1.5rem 0 0 !important;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none !important; }

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	font-family: var(--bv-font-body) !important;
	font-size: var(--bv-text-sm);
	font-weight: 600 !important;
	color: var(--bv-ink-muted) !important;
	padding: 0.85rem 0 !important;
	border-bottom: 2px solid transparent;
	transition: color var(--bv-dur-fast) var(--bv-ease), border-color var(--bv-dur-fast) var(--bv-ease);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,
.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover {
	color: var(--bv-green) !important;
	border-bottom-color: var(--bv-gold);
}

.woocommerce div.product .woocommerce-tabs .panel h2 { font-size: var(--bv-h3); margin-bottom: 1rem; }

/* ── Reviews ────────────────────────────────────────────────────────────── */

.woocommerce #reviews #comments ol.commentlist li {
	margin-bottom: 1rem;
	padding: 0;
}

.woocommerce #reviews #comments ol.commentlist li .comment-text {
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-lg);
	background: var(--bv-white);
	padding: 1.25rem 1.5rem;
	box-shadow: var(--bv-shadow-xs);
	margin-inline-start: 62px;
}

.woocommerce #reviews #comments ol.commentlist li img.avatar {
	width: 46px;
	border-radius: 50%;
	border: 1px solid var(--bv-line);
	background: var(--bv-green-50);
	padding: 2px;
	top: 4px;
}

.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta { font-size: var(--bv-text-sm); color: var(--bv-ink-muted); }
.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta strong { color: var(--bv-green-800); font-weight: 650; }
.woocommerce #review_form #respond textarea,
.woocommerce #review_form #respond input[type="text"],
.woocommerce #review_form #respond input[type="email"] {
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-sm);
	padding: 0.7rem 0.9rem;
	background: var(--bv-white);
	width: 100%;
}

/* ── Related products heading ───────────────────────────────────────────── */

.related.products > h2,
.up-sells > h2,
.cross-sells > h2 { font-size: var(--bv-h3); margin-bottom: 1.5rem; }

/* ---------------------------------------------------------------------------
   Sticky mobile add-to-cart bar
   ------------------------------------------------------------------------- */

.bv-sticky-atc {
	position: fixed;
	inset-inline: 0;
	inset-block-end: 0;
	z-index: 95;
	display: none;
	align-items: center;
	gap: 0.85rem;
	padding: 0.7rem 1rem calc(0.7rem + env(safe-area-inset-bottom, 0px));
	background: var(--bv-glass-strong);
	backdrop-filter: var(--bv-blur);
	-webkit-backdrop-filter: var(--bv-blur);
	border-top: 1px solid var(--bv-line);
	box-shadow: 0 -6px 24px rgba(27, 61, 47, 0.12);
	transform: translateY(100%);
	transition: transform var(--bv-dur) var(--bv-ease-out);
}

.bv-sticky-atc.is-visible { transform: none; }
.bv-sticky-atc__info { flex: 1; min-width: 0; }
.bv-sticky-atc__name {
	font-size: var(--bv-text-sm);
	font-weight: 650;
	color: var(--bv-green-800);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.bv-sticky-atc__price { font-size: var(--bv-text-sm); color: var(--bv-green); font-weight: 600; }
.bv-sticky-atc .bv-btn { flex: none; }

@media (max-width: 768px) {
	body.single-product .bv-sticky-atc { display: flex; }
}

/* ---------------------------------------------------------------------------
   Cart
   ------------------------------------------------------------------------- */

.woocommerce table.shop_table {
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-lg);
	border-collapse: separate;
	border-spacing: 0;
	overflow: hidden;
	background: var(--bv-white);
}

.woocommerce table.shop_table th {
	background: var(--bv-cream);
	font-family: var(--bv-font-body);
	font-size: var(--bv-text-xs);
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--bv-ink-muted);
	padding: 1rem;
}

.woocommerce table.shop_table td { padding: 1.1rem 1rem; border-top: 1px solid var(--bv-line); }
.woocommerce table.shop_table img { border-radius: var(--bv-radius-sm); }

.woocommerce table.cart td.product-name a { color: var(--bv-green-800); font-weight: 600; }

.woocommerce a.remove {
	color: var(--bv-danger) !important;
	font-weight: 400;
	transition: background-color var(--bv-dur-fast) var(--bv-ease);
}

.woocommerce a.remove:hover { background: var(--bv-danger) !important; color: #fff !important; }

.woocommerce .cart-collaterals .cart_totals > h2,
.woocommerce-cart .cart-collaterals .cart_totals h2 { font-size: var(--bv-h3); margin-bottom: 1rem; }

.woocommerce .cart_totals table.shop_table { background: var(--bv-white); }

.woocommerce-cart .cart-collaterals .cart_totals .order-total .amount { color: var(--bv-green); font-size: 1.25rem; }

.woocommerce .coupon input[type="text"] {
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-pill);
	padding: 0.8rem 1.2rem;
	background: var(--bv-white);
}

/* Free-shipping progress meter (theme-injected). */
.bv-ship-progress {
	margin: 0 0 1.25rem;
	padding: 1rem 1.25rem;
	border-radius: var(--bv-radius);
	background: var(--bv-green-50);
	border: 1px solid var(--bv-green-100);
	font-size: var(--bv-text-sm);
	color: var(--bv-green-800);
}

.bv-ship-progress strong { color: var(--bv-green); }

.bv-ship-progress__track {
	height: 7px;
	margin-top: 0.7rem;
	border-radius: var(--bv-radius-pill);
	background: rgba(27, 61, 47, 0.10);
	overflow: hidden;
}

.bv-ship-progress__fill {
	height: 100%;
	border-radius: var(--bv-radius-pill);
	background: linear-gradient(90deg, var(--bv-gold-600), var(--bv-gold-400));
	transition: width 600ms var(--bv-ease-out);
}

/* ---------------------------------------------------------------------------
   Checkout
   ------------------------------------------------------------------------- */

.woocommerce-checkout h3 { font-size: var(--bv-h3); margin-bottom: 1.25rem; }

.woocommerce form .form-row label {
	font-size: var(--bv-text-sm);
	font-weight: 600;
	color: var(--bv-green-800);
	margin-bottom: 0.35rem;
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.select2-container--default .select2-selection--single {
	border: 1px solid var(--bv-line) !important;
	border-radius: var(--bv-radius-sm) !important;
	padding: 0.78rem 0.95rem !important;
	background: var(--bv-white) !important;
	color: var(--bv-ink);
	font-size: var(--bv-text-sm);
	line-height: 1.4;
	height: auto !important;
	transition: border-color var(--bv-dur-fast) var(--bv-ease), box-shadow var(--bv-dur-fast) var(--bv-ease);
}

.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus {
	border-color: var(--bv-gold) !important;
	box-shadow: 0 0 0 3px rgba(197, 155, 39, 0.16);
	outline: none;
}

.select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 1.4 !important; padding: 0 !important; }
.select2-container--default .select2-selection--single .select2-selection__arrow { top: 50%; transform: translateY(-50%); }

.woocommerce-checkout #payment {
	background: var(--bv-white) !important;
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-lg) !important;
	padding: 0.5rem;
}

.woocommerce-checkout #payment ul.payment_methods {
	border-bottom: 1px solid var(--bv-line);
	padding: 1rem !important;
}

.woocommerce-checkout #payment ul.payment_methods li {
	padding: 0.85rem 1rem;
	margin-bottom: 0.6rem;
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius);
	background: var(--bv-cream);
	transition: border-color var(--bv-dur-fast) var(--bv-ease), background-color var(--bv-dur-fast) var(--bv-ease);
	list-style: none;
}

.woocommerce-checkout #payment ul.payment_methods li:hover { border-color: var(--bv-gold-400); }

.woocommerce-checkout #payment ul.payment_methods li label { font-weight: 650; color: var(--bv-green-800); }

.woocommerce-checkout #payment div.payment_box {
	background: var(--bv-green-50) !important;
	border-radius: var(--bv-radius-sm);
	color: var(--bv-green-800);
	font-size: var(--bv-text-sm);
}

.woocommerce-checkout #payment div.payment_box::before { border-bottom-color: var(--bv-green-50) !important; }

.woocommerce-checkout #payment #place_order { width: 100%; font-size: var(--bv-text-base) !important; padding: 1rem 2rem !important; }

/* Order review table */
.woocommerce-checkout-review-order-table tfoot th { background: transparent; text-transform: none; font-size: var(--bv-text-sm); }
.woocommerce-checkout-review-order-table tfoot .order-total .amount { color: var(--bv-green); font-size: 1.2rem; }

/* ---------------------------------------------------------------------------
   Notices
   ------------------------------------------------------------------------- */

.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce-noreviews,
p.no-comments {
	border-radius: var(--bv-radius) !important;
	border: 1px solid var(--bv-line);
	border-top: 0 !important;
	background: var(--bv-white) !important;
	color: var(--bv-ink) !important;
	box-shadow: var(--bv-shadow-xs);
	padding: 1rem 1.25rem 1rem 3.2rem !important;
	font-size: var(--bv-text-sm);
}

.woocommerce-message::before { color: var(--bv-success) !important; }
.woocommerce-info::before    { color: var(--bv-gold-600) !important; }
.woocommerce-error::before   { color: var(--bv-danger) !important; }

.woocommerce-message { border-left: 3px solid var(--bv-success); }
.woocommerce-info    { border-left: 3px solid var(--bv-gold); }
.woocommerce-error   { border-left: 3px solid var(--bv-danger); }

/* ---------------------------------------------------------------------------
   My account
   ------------------------------------------------------------------------- */

.woocommerce-account .woocommerce-MyAccount-navigation {
	background: var(--bv-white);
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-lg);
	padding: 0.85rem;
	box-shadow: var(--bv-shadow-xs);
}

.woocommerce-account .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; }

.woocommerce-account .woocommerce-MyAccount-navigation li { border: 0; margin-bottom: 0.2rem; }

.woocommerce-account .woocommerce-MyAccount-navigation li a {
	display: block;
	padding: 0.7rem 1rem;
	border-radius: var(--bv-radius-sm);
	font-size: var(--bv-text-sm);
	font-weight: 600;
	color: var(--bv-ink-soft);
	transition: background-color var(--bv-dur-fast) var(--bv-ease), color var(--bv-dur-fast) var(--bv-ease);
}

.woocommerce-account .woocommerce-MyAccount-navigation li a:hover { background: var(--bv-cream); color: var(--bv-green); }

.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a {
	background: var(--bv-green);
	color: var(--bv-white);
}

.woocommerce-account .woocommerce-MyAccount-content {
	background: var(--bv-white);
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-lg);
	padding: clamp(1.25rem, 1rem + 1vw, 2rem);
	box-shadow: var(--bv-shadow-xs);
}

.woocommerce-form-login,
.woocommerce-form-register {
	border: 1px solid var(--bv-line) !important;
	border-radius: var(--bv-radius-lg);
	background: var(--bv-white);
	padding: clamp(1.25rem, 1rem + 1vw, 2rem) !important;
	box-shadow: var(--bv-shadow-xs);
}

/* ---------------------------------------------------------------------------
   Order received / thank-you
   ------------------------------------------------------------------------- */

.woocommerce-order {
	background: var(--bv-white);
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-lg);
	padding: clamp(1.5rem, 1.1rem + 1.5vw, 2.5rem);
	box-shadow: var(--bv-shadow-sm);
}

.woocommerce ul.order_details {
	display: flex;
	flex-wrap: wrap;
	gap: 0.85rem;
	margin: 0 0 2rem !important;
	padding: 0;
	list-style: none;
}

.woocommerce ul.order_details li {
	flex: 1 1 160px;
	border: 1px solid var(--bv-line) !important;
	border-radius: var(--bv-radius);
	background: var(--bv-cream);
	padding: 0.9rem 1.1rem !important;
	margin: 0 !important;
	font-size: var(--bv-text-xs) !important;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--bv-ink-muted) !important;
}

.woocommerce ul.order_details li strong {
	display: block;
	margin-top: 0.3rem;
	font-family: var(--bv-font-display);
	font-size: 1.05rem;
	letter-spacing: 0;
	text-transform: none;
	color: var(--bv-green);
}

/* ---------------------------------------------------------------------------
   Wishlist plugin alignment
   ------------------------------------------------------------------------- */

.tinv-wishlist .tinvwl_add_to_wishlist_button {
	border-radius: var(--bv-radius-pill) !important;
	font-size: var(--bv-text-xs) !important;
}

.tinv-wishlist table.tinvwl-table-manage-list { border-radius: var(--bv-radius-lg); overflow: hidden; }

/* ---------------------------------------------------------------------------
   Result count / ordering
   ------------------------------------------------------------------------- */

/* ---------------------------------------------------------------------------
   Catalogue toolbar
   ---------------------------------------------------------------------------
   WooCommerce ships the result count as float:left and the sort form as
   float:right, on different baselines and with mismatched margins. The theme
   wraps both in .bv-shop-toolbar (see inc/woocommerce.php) so they can be laid
   out as one aligned bar with a hairline rule under it.
   ------------------------------------------------------------------------- */

.bv-shop-toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem 1.5rem;
	margin: 0 0 clamp(1.5rem, 1.1rem + 1.5vw, 2.25rem);
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--bv-line);
}

/* Cancel Woo's floats and stray margins now that flex owns the layout. */
.bv-shop-toolbar .woocommerce-result-count,
.bv-shop-toolbar .woocommerce-ordering {
	float: none !important;
	margin: 0 !important;
	padding: 0;
}

.woocommerce .woocommerce-result-count {
	color: var(--bv-ink-muted);
	font-size: var(--bv-text-sm);
	line-height: 1.4;
}

.bv-shop-toolbar .woocommerce-ordering {
	display: flex;
	align-items: center;
	gap: 0.6rem;
}

.bv-sort-label {
	font-size: var(--bv-text-xs);
	font-weight: 650;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--bv-ink-muted);
	white-space: nowrap;
}

.woocommerce .woocommerce-ordering select {
	appearance: none;
	-webkit-appearance: none;
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-pill);
	padding: 0.6rem 2.4rem 0.6rem 1.1rem;
	background-color: var(--bv-white);
	/* Chevron drawn inline so it inherits the brand green. */
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231B3D2F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 0.9rem center;
	background-size: 15px;
	font-size: var(--bv-text-sm);
	font-weight: 550;
	color: var(--bv-green-800);
	cursor: pointer;
	transition: border-color var(--bv-dur-fast) var(--bv-ease),
	            box-shadow var(--bv-dur-fast) var(--bv-ease);
}

.woocommerce .woocommerce-ordering select:hover { border-color: var(--bv-gold-400); }

.woocommerce .woocommerce-ordering select:focus {
	border-color: var(--bv-gold);
	box-shadow: 0 0 0 3px rgba(197, 155, 39, 0.16);
	outline: none;
}

@media (max-width: 560px) {
	.bv-shop-toolbar { justify-content: flex-start; }
	.bv-shop-toolbar .woocommerce-ordering { width: 100%; }
	.bv-shop-toolbar .woocommerce-ordering select { flex: 1; }
}

.woocommerce nav.woocommerce-pagination ul {
	border: 0;
	display: flex;
	gap: 0.4rem;
	justify-content: center;
}

.woocommerce nav.woocommerce-pagination ul li {
	border: 0;
	overflow: visible;
}

.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
	border: 1px solid var(--bv-line);
	border-radius: var(--bv-radius-sm);
	background: var(--bv-white);
	color: var(--bv-green-800);
	min-width: 42px;
	padding: 0.55rem 0.7rem;
	transition: background-color var(--bv-dur-fast) var(--bv-ease), color var(--bv-dur-fast) var(--bv-ease);
}

.woocommerce nav.woocommerce-pagination ul li span.current,
.woocommerce nav.woocommerce-pagination ul li a:hover {
	background: var(--bv-green) !important;
	color: var(--bv-white) !important;
	border-color: var(--bv-green);
}

/* ---------------------------------------------------------------------------
   Centred catalogue
   ---------------------------------------------------------------------------
   A single-product brand leaves a 3-column grid two-thirds empty. Centring the
   row keeps the layout balanced now and still fills left-to-right once more
   products are added.
   ------------------------------------------------------------------------- */

/* Astra sets grid-template-columns on .products.columns-N, so the override has
   to match that specificity. auto-fit collapses the unused tracks, which is
   what lets a single product sit centred instead of pinned left. */
/* The shortcode output is wrapped in .woocommerce, but the shop/category
   archive renders ul.products with no such wrapper, so selectors that assumed
   one silently never matched and Astra's own grid took over. Target the list
   directly instead. */
ul.products {
	display: grid;
	justify-content: center;
	gap: clamp(1rem, 0.6rem + 1.5vw, 1.75rem);
	margin: 0;
	padding: 0;
	list-style: none;
}

.bv-section .woocommerce ul.products,
.bv-section .woocommerce ul.products.columns-1,
.bv-section .woocommerce ul.products.columns-2,
.bv-section .woocommerce ul.products.columns-3,
.bv-section .woocommerce ul.products.columns-4 {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 340px)) !important;
}

/* Neutralise the float/width maths Woo and Astra apply to grid children. */
ul.products li.product {
	width: 100% !important;
	margin: 0 !important;
	float: none !important;
	clear: none !important;
}

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

/* On the shop archive the grid fills the row rather than hugging the centre.
   A 240px minimum keeps a phone to a single readable card instead of two
   cramped ones where the price and button both wrap. */
body.woocommerce-shop ul.products,
body.woocommerce-shop ul.products.columns-1,
body.woocommerce-shop ul.products.columns-2,
body.woocommerce-shop ul.products.columns-3,
body.woocommerce-shop ul.products.columns-4,
body.tax-product_cat ul.products,
body.tax-product_cat ul.products.columns-1,
body.tax-product_cat ul.products.columns-2,
body.tax-product_cat ul.products.columns-3,
body.tax-product_cat ul.products.columns-4,
body.post-type-archive-product ul.products,
body.post-type-archive-product ul.products.columns-3 {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)) !important;
	justify-content: start;
}

/* Related / upsell rows on the single product page follow the same grid. */
.related.products ul.products,
.up-sells ul.products,
.cross-sells ul.products {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)) !important;
	justify-content: start;
}

/* The archive banner sits outside .ast-container so it can run edge to edge;
   its inner .bv-container restores the content width. */
.bv-shop-hero { width: 100%; }

/* ---------------------------------------------------------------------------
   Touch targets and floating-control collisions (mobile)
   ------------------------------------------------------------------------- */

/* Size swatches need to be comfortably tappable, not just readable. */
@media (hover: none), (max-width: 768px) {
	.tawcvs-swatches .swatch,
	.tawcvs-swatches .swatch.swatch-shape-circle {
		min-height: 44px;
		padding-inline: 1.25rem;
	}
}

/* The wishlist control ships as a bare 25x22px icon+text link, which is well
   under a usable tap target. Give it a real hit area and treat it as the
   secondary action it is. */
.woocommerce div.product .tinv-wraper,
.woocommerce div.product .tinv-wishlist { margin-top: 0.85rem; }

.woocommerce div.product .tinvwl_add_to_wishlist_button {
	display: inline-flex !important;
	align-items: center;
	gap: 0.5rem;
	min-height: 44px;
	padding: 0.6rem 1.15rem !important;
	border: 1px solid var(--bv-line) !important;
	border-radius: var(--bv-radius-pill) !important;
	background: var(--bv-white) !important;
	color: var(--bv-green-800) !important;
	font-size: var(--bv-text-sm) !important;
	font-weight: 600;
	line-height: 1.2;
	transition: border-color var(--bv-dur-fast) var(--bv-ease),
	            color var(--bv-dur-fast) var(--bv-ease);
}

.woocommerce div.product .tinvwl_add_to_wishlist_button:hover {
	border-color: var(--bv-gold) !important;
	color: var(--bv-green) !important;
	transform: none;
	box-shadow: none;
}

/* ---------------------------------------------------------------------------
   Keep the floating controls clear of the sticky add-to-cart bar
   ---------------------------------------------------------------------------
   On a phone the product page shows a fixed 64px add-to-cart bar along the
   bottom. The Click-to-Chat WhatsApp bubble (z-index 99999999) and the theme's
   own back-to-top button are also bottom-fixed, so both landed directly on top
   of the Add to Cart button and blocked the primary action. Lift them above
   the bar, but only where the bar actually renders.
   ------------------------------------------------------------------------- */

@media (max-width: 768px) {
	body.single-product .ht-ctc.ht-ctc-chat {
		bottom: calc(76px + env(safe-area-inset-bottom, 0px)) !important;
	}

	body.single-product .bv-totop {
		inset-block-end: calc(76px + env(safe-area-inset-bottom, 0px));
	}
}

/* Everywhere else the two floats share the bottom edge, so keep them apart:
   WhatsApp sits right, back-to-top sits left (already set in layout.css). */

/* ---------------------------------------------------------------------------
   Prevent iOS auto-zoom on form focus
   ---------------------------------------------------------------------------
   Mobile Safari zooms the whole page when a focused input's font-size is below
   16px, which throws the shopper out of position mid-checkout and is a common
   cause of abandoned mobile orders. 16px is the threshold, so every text entry
   gets it back on small screens. Labels and helper text stay at their smaller
   sizes because they are never focused.
   ------------------------------------------------------------------------- */

@media (max-width: 768px) {
	.woocommerce form .form-row input.input-text,
	.woocommerce form .form-row textarea,
	.woocommerce form .form-row select,
	.woocommerce .quantity .qty,
	.woocommerce .coupon input[type="text"],
	.woocommerce-ordering select,
	.select2-container--default .select2-selection--single,
	.select2-container--default .select2-search--dropdown .select2-search__field,
	input[type="text"],
	input[type="email"],
	input[type="tel"],
	input[type="number"],
	input[type="search"],
	input[type="password"],
	textarea,
	select {
		font-size: 16px !important;
	}

	/* Full-width primary actions are easier to hit one-handed. */
	.woocommerce .cart .button,
	.woocommerce .cart input.button,
	.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,
	.woocommerce-checkout #payment #place_order {
		width: 100%;
	}
}

/* ---------------------------------------------------------------------------
   Notice links
   ---------------------------------------------------------------------------
   Astra sets links inside WooCommerce notices to display:block, which collapses
   the space before them: "Returning customer?Click here to login". Keeping them
   inline restores the sentence.
   ------------------------------------------------------------------------- */

.woocommerce-info a,
.woocommerce-message a,
.woocommerce-error a {
	display: inline !important;
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.woocommerce-info a.button,
.woocommerce-message a.button,
.woocommerce-error a.button {
	display: inline-flex !important;
	text-decoration: none;
}

/* ---------------------------------------------------------------------------
   Cart table on small screens
   ---------------------------------------------------------------------------
   WooCommerce stacks each cell into its own labelled row. The thumbnail and the
   remove button carry no label, so they rendered as two near-empty rows above
   the product name. Pulling them onto one line reads as a product row again.
   ------------------------------------------------------------------------- */

@media (max-width: 768px) {
	.woocommerce-cart table.cart tbody td.product-remove {
		border-bottom: 0 !important;
		padding-bottom: 0 !important;
		text-align: end;
	}

	.woocommerce-cart table.cart tbody td.product-thumbnail {
		display: block !important;
		border-top: 0 !important;
		border-bottom: 0 !important;
		padding-top: 0 !important;
		text-align: center;
	}

	.woocommerce-cart table.cart tbody td.product-thumbnail img {
		width: 96px;
		margin-inline: auto;
	}

	/* Woo hides the thumbnail cell on mobile by default; the rule above needs
	   its ::before label suppressed so no empty label column appears. */
	.woocommerce-cart table.cart tbody td.product-thumbnail::before,
	.woocommerce-cart table.cart tbody td.product-remove::before {
		content: "" !important;
		display: none !important;
	}

	.woocommerce-cart table.cart tbody td.product-name {
		text-align: center;
		font-size: var(--bv-text-base);
	}

	/* Coupon row: stack the field above its button rather than squeezing both. */
	.woocommerce-cart table.cart td.actions .coupon {
		display: flex;
		flex-wrap: wrap;
		gap: 0.6rem;
		width: 100%;
	}

	.woocommerce-cart table.cart td.actions .coupon input[type="text"] { flex: 1 1 100%; }
	.woocommerce-cart table.cart td.actions .coupon .button { flex: 1 1 100%; }
}
