/**
 * Hemppy — WooCommerce styles (1.0.9).
 *
 * Loaded only on WooCommerce screens, the front page and singular pages whose
 * content contains WooCommerce blocks/shortcodes (see inc/woocommerce.php,
 * filter `hemppy_woo_css_everywhere`). Uses the tokens from hemppy.css; no
 * fonts, no images. Contrast pairs used (WCAG 2.2):
 *   ink #22302a on paper/cream ≥ 12:1 · forest #1f3b2d on paper 11.5:1
 *   white on forest 12.2:1 · sage-text #4a6352 on paper 6.2:1 / cream 5.7:1
 *   ink on sun #e9b44c 7.3:1 · error #9b2c2c on paper 7.1:1
 *   focus ring #9c6b14 vs paper 4.4:1 (≥ 3:1 non-text, WCAG 1.4.11 / 2.4.13)
 * Interactive targets ≥ 44 × 44 px (WCAG 2.5.5 AAA; 2.5.8 AA needs 24).
 */

:root {
	--hemppy-error: #9b2c2c;
	--hemppy-line: #d9d2c3;        /* decorative dividers only */
	--hemppy-control-border: #4a6352; /* = sage-text, 6.2:1 vs paper (1.4.11) */
	--hemppy-target: 44px;
}

/* ------------------------------------------------------------------ */
/* 1. Shared: prices, unit price, buttons, fields, notices            */
/* ------------------------------------------------------------------ */

.woocommerce .price,
.woocommerce div.product p.price,
.woocommerce div.product span.price,
.woocommerce ul.products li.product .price,
.wc-block-components-product-price {
	color: var(--hemppy-forest);
	font-family: var(--hemppy-font-body);
	font-weight: 600;
}
.woocommerce .price del,
.wc-block-components-product-price del {
	color: var(--hemppy-sage-text);
	font-weight: 400;
}
.woocommerce .price ins,
.wc-block-components-product-price ins {
	text-decoration: none;
	color: var(--hemppy-forest);
}
/* Unit price from hemppy-store (PAngV-style "€x / 100 ml"). */
.hemppy-unit-price-wrap {
	color: var(--hemppy-sage-text);
	font-size: 0.875rem;
	font-weight: 400;
	opacity: 1; /* plugin default .85 would drop sage-text below 4.5:1 */
	letter-spacing: 0.01em;
}

.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce .single_add_to_cart_button,
.woocommerce #payment #place_order {
	min-height: var(--hemppy-target);
	border-radius: var(--hemppy-radius-sm);
	background-color: var(--hemppy-forest);
	color: var(--hemppy-white);
	font-weight: 600;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding-inline: var(--hemppy-space-5);
	transition: background-color 0.15s ease;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce .single_add_to_cart_button:hover,
.woocommerce #payment #place_order:hover {
	background-color: var(--hemppy-sage-text);
	color: var(--hemppy-white);
}
.woocommerce .button.disabled,
.woocommerce .button:disabled,
.woocommerce .single_add_to_cart_button.disabled {
	opacity: 1;
	background-color: var(--hemppy-mist);
	color: var(--hemppy-ink); /* 11.8:1 — still readable while disabled */
	cursor: not-allowed;
}

.woocommerce .quantity .qty {
	min-height: var(--hemppy-target);
	min-width: 4.5rem;
	border: 1px solid var(--hemppy-control-border);
	border-radius: var(--hemppy-radius-sm);
	background: var(--hemppy-paper);
	color: var(--hemppy-ink);
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce div.product form.cart .variations select {
	min-height: var(--hemppy-target);
	border: 1px solid var(--hemppy-control-border);
	border-radius: var(--hemppy-radius-sm);
	background-color: var(--hemppy-paper);
	color: var(--hemppy-ink);
}
.woocommerce form .form-row label {
	color: var(--hemppy-ink);
	font-weight: 600;
}
.woocommerce form .form-row .required {
	color: var(--hemppy-error);
	text-decoration: none;
}
.woocommerce form .form-row.woocommerce-invalid input.input-text,
.woocommerce form .form-row.woocommerce-invalid select {
	border-color: var(--hemppy-error);
}

.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce-noreviews,
p.no-comments {
	border-radius: var(--hemppy-radius-sm);
	border-top: none;
	border-left: 4px solid var(--hemppy-forest);
	background: var(--hemppy-paper);
	color: var(--hemppy-ink);
	box-shadow: var(--hemppy-shadow-sm);
}
.woocommerce-info { border-left-color: var(--hemppy-sage-text); }
.woocommerce-error { border-left-color: var(--hemppy-error); }
.woocommerce-message::before,
.woocommerce-info::before { color: var(--hemppy-forest); }
.woocommerce-error::before { color: var(--hemppy-error); }

.woocommerce table.shop_table {
	border-color: var(--hemppy-line);
	background: var(--hemppy-paper);
	border-radius: var(--hemppy-radius-sm);
}
.woocommerce table.shop_table th { color: var(--hemppy-forest); font-weight: 600; }

/* Badges — Blocksy prints .onsale and .out-of-stock-badge. Factual labels
 * only ("Sale", "Out of stock"); the theme adds no urgency copy. */
.woocommerce span.onsale,
.wc-block-components-product-sale-badge,
[data-products] .onsale {
	background-color: var(--hemppy-sun);
	color: var(--hemppy-ink);
	border-radius: var(--hemppy-radius-pill);
	font-weight: 700;
	font-size: 0.8125rem;
	letter-spacing: 0.02em;
	min-height: 1.75rem;
	padding: 0 0.75rem;
	line-height: 1.75rem;
	text-transform: none;
	box-shadow: var(--hemppy-shadow-sm);
}
.out-of-stock-badge,
[data-products] .out-of-stock-badge {
	background-color: var(--hemppy-ink);
	color: var(--hemppy-white);
	border-radius: var(--hemppy-radius-pill);
	font-weight: 600;
	font-size: 0.8125rem;
	min-height: 1.75rem;
	padding: 0 0.75rem;
	line-height: 1.75rem;
	text-transform: none;
}

/* Placeholder marks inside product data (plugin prints the base colours). */
.woocommerce mark.hemppy-placeholder,
.wc-block-components mark.hemppy-placeholder {
	font-size: 0.9em;
}

/* ------------------------------------------------------------------ */
/* 2. Shop & category archives                                        */
/* ------------------------------------------------------------------ */

.hemppy-archive .page-description,
.hemppy-archive .term-description,
.hemppy-archive .woocommerce-products-header__description {
	max-width: 70ch;
	color: var(--hemppy-ink);
	font-size: 1.0625rem;
	line-height: 1.65;
}
.hemppy-archive .term-description > :last-child,
.hemppy-archive .page-description > :last-child { margin-bottom: 0; }
body.hemppy-archive .hero-section[data-type="type-2"] {
	background-color: var(--hemppy-cream); /* 1.0.10: body.… so it beats Blocksy's woo_categories palette-6 rule */
}

/* 1.0.10 (CRO): compact archive hero on shop / category / tag / product search.
   Blocksy's type-2 hero uses --container-padding: 50px 0 (≈200 px band) and the
   category description sat inside it, pushing the grid below the fold at 1024×640.
   The description now prints below the grid (inc/woocommerce.php); here the band is
   tightened. DOM order (H1 → breadcrumbs) is unchanged, so reading order stays logical. */
/* body.… outranks Blocksy's [data-prefix="woo_categories"] .hero-section[data-type="type-2"] rule. */
body.hemppy-archive .hero-section[data-type="type-2"] {
	--container-padding: var(--hemppy-space-6) 0; /* 32 px */
	--min-height: 0px; /* Blocksy default 250 px */
}
.hemppy-archive .hero-section[data-type="type-2"] .page-title {
	font-size: clamp(1.625rem, 1.2rem + 1.4vw, 2.25rem); /* 26 → 36 px */
	line-height: 1.2;
	margin: 0;
}
.hemppy-archive .hero-section[data-type="type-2"] .page-description,
.hemppy-archive .hero-section[data-type="type-2"] .ct-breadcrumbs {
	margin-top: var(--hemppy-space-2);
}
.hemppy-archive .hero-section[data-type="type-2"] .ct-breadcrumbs a {
	/* Keep a comfortable tap height without re-inflating the band. */
	display: inline-block;
	padding-block: var(--hemppy-space-2);
}
.hemppy-archive .hero-section[data-type="type-2"] .ct-breadcrumbs p {
	margin: 0;
}
/* Tighter gap between the band and the toolbar (Blocksy: 60 px desktop, 50 px mobile). */
.hemppy-archive .site-main > .ct-container[data-vertical-spacing*="top"],
.hemppy-archive #main > .ct-container[data-vertical-spacing*="top"] {
	padding-top: var(--hemppy-space-5); /* 24 px */
}
@media (max-width: 689.98px) {
	body.hemppy-archive .hero-section[data-type="type-2"] {
		--container-padding: var(--hemppy-space-5) 0; /* 24 px */
	}
	.hemppy-archive .site-main > .ct-container[data-vertical-spacing*="top"],
	.hemppy-archive #main > .ct-container[data-vertical-spacing*="top"] {
		padding-top: var(--hemppy-space-4); /* 16 px */
	}
	.hemppy-archive .woo-listing-top {
		margin-bottom: var(--hemppy-space-4);
	}
}

/* Archive description, relocated below the product grid (1.0.10). */
.hemppy-archive .hemppy-archive-description {
	margin-top: var(--hemppy-space-7);
	padding-top: var(--hemppy-space-5);
	border-top: 1px solid var(--hemppy-line);
}
.hemppy-archive .hemppy-archive-description .page-description {
	margin: 0;
}

/* Toolbar: result count + sorting */
.hemppy-archive .woo-listing-top {
	display: flex;
	flex-wrap: wrap;
	gap: var(--hemppy-space-3) var(--hemppy-space-5);
	align-items: center;
	justify-content: space-between;
	margin-bottom: var(--hemppy-space-5);
	padding-bottom: var(--hemppy-space-3);
	border-bottom: 1px solid var(--hemppy-line);
}
.hemppy-archive .woocommerce-result-count {
	color: var(--hemppy-sage-text);
	margin: 0;
}
@media (min-width: 690px) {
	.hemppy-archive .woo-listing-top .woocommerce-ordering select {
		min-height: var(--hemppy-target);
		border: 1px solid var(--hemppy-control-border);
		border-radius: var(--hemppy-radius-sm);
		background-color: var(--hemppy-paper);
		color: var(--hemppy-ink);
	}
}
/* < 690 px Blocksy shows an icon-only sort control: keep it, enlarge to 44 px. */
@media (max-width: 689.98px) {
	.hemppy-archive .woo-listing-top .woocommerce-ordering select {
		width: var(--hemppy-target);
		height: var(--hemppy-target);
		border: 1px solid var(--hemppy-control-border);
		border-radius: var(--hemppy-radius-sm);
	}
}

/* Grid */
.hemppy-archive [data-products] {
	--grid-columns-gap: var(--hemppy-space-5);
	--grid-rows-gap: var(--hemppy-space-6);
}

/* Cards (Blocksy type-1 / type-2 and core ul.products) */
.woocommerce ul.products li.product,
[data-products] > li.product {
	background: var(--hemppy-paper);
	border: 1px solid var(--hemppy-line);
	border-radius: var(--hemppy-radius-md);
	box-shadow: var(--hemppy-shadow-sm);
	padding: var(--hemppy-space-3) var(--hemppy-space-3) var(--hemppy-space-4);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	transition: box-shadow 0.2s ease, transform 0.2s ease;
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.woocommerce ul.products li.product:hover,
	[data-products] > li.product:hover {
		box-shadow: var(--hemppy-shadow-md);
		transform: translateY(-2px);
	}
}
[data-products] > li.product figure,
[data-products] > li.product .ct-media-container {
	border-radius: var(--hemppy-radius-sm);
	overflow: hidden;
	background: var(--hemppy-cream);
}
.woocommerce ul.products li.product .woocommerce-loop-product__title,
[data-products] .woocommerce-loop-product__title {
	font-family: var(--hemppy-font-display);
	font-weight: 600;
	font-size: 1.0625rem;
	line-height: 1.3;
	color: var(--hemppy-forest);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title a,
[data-products] .woocommerce-loop-product__title a {
	color: inherit;
	text-decoration: none;
}
[data-products] .price { --theme-font-size: 1rem; }
[data-products] .ct-woo-card-actions,
.woocommerce ul.products li.product .button {
	margin-top: auto;
}
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product .added_to_cart,
[data-products] .ct-woo-card-actions .button {
	min-height: var(--hemppy-target);
	width: 100%;
}
[data-products] .added_to_cart {
	min-height: var(--hemppy-target);
	display: inline-flex;
	align-items: center;
	color: var(--hemppy-forest);
	font-weight: 600;
	text-decoration: underline;
}
/* Gate message on cards (hemppy-store) */
[data-products] .hemppy-unavailable,
.woocommerce ul.products .hemppy-unavailable {
	font-size: 0.875rem;
	color: var(--hemppy-sage-text);
	margin: var(--hemppy-space-2) 0 0;
}

/* Pagination */
.woocommerce-pagination .page-numbers,
.ct-pagination .page-numbers {
	min-width: var(--hemppy-target);
	min-height: var(--hemppy-target);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--hemppy-radius-sm);
}
.ct-pagination .page-numbers.current,
.woocommerce-pagination .page-numbers.current {
	background: var(--hemppy-forest);
	color: var(--hemppy-white);
}

/* Category tiles (product_categories / Product Categories block) */
.woocommerce ul.products li.product-category a {
	color: var(--hemppy-forest);
	text-decoration: none;
}
.woocommerce ul.products li.product-category .count {
	background: none;
	color: var(--hemppy-sage-text);
}

/* ------------------------------------------------------------------ */
/* 3. Filter sidebar (Blocksy "WooCommerce Sidebar" + Product Filters) */
/* ------------------------------------------------------------------ */

/* Mobile: Blocksy stacks the sidebar after the products. On archives the
 * Product Filters block collapses to one "Filter products" button below
 * 1000 px, so move it above the grid where shoppers look for it. */
@media (max-width: 999.98px) {
	.hemppy-archive [data-sidebar] { --sidebar-order: -1; row-gap: var(--hemppy-space-4); }
}

.hemppy-archive .ct-sidebar .ct-widget + .ct-widget {
	margin-top: var(--hemppy-space-5);
	padding-top: var(--hemppy-space-5);
	border-top: 1px solid var(--hemppy-line);
}
.hemppy-archive .ct-sidebar .widget-title,
.hemppy-archive .ct-sidebar .wp-block-heading,
.wc-block-product-filters h3,
.wc-block-product-filters .wp-block-heading {
	font-family: var(--hemppy-font-body);
	font-size: 0.9375rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--hemppy-forest);
	margin: 0 0 var(--hemppy-space-3);
}

.wc-block-product-filters {
	--wc-product-filters-text-color: var(--hemppy-ink);
	--wc-product-filters-background-color: var(--hemppy-paper);
	color: var(--hemppy-ink);
}
.wc-block-product-filters .wc-block-product-filters__overlay-content > * + * {
	margin-top: var(--hemppy-space-5);
}

.wc-block-product-filters fieldset {
	border: 0;
	padding: 0;
	margin: 0;
}

/* Checkbox lists: whole row is the target. */
.wc-block-product-filter-checkbox-list__label,
.wc-block-product-filter-checkbox-list__item label {
	min-height: var(--hemppy-target);
	display: flex;
	align-items: center;
	gap: var(--hemppy-space-2);
	cursor: pointer;
}
.wc-block-product-filter-checkbox-list__input-wrapper,
.wc-block-product-filter-checkbox-list__input {
	width: 20px;
	height: 20px;
	flex: 0 0 20px;
}
.wc-block-product-filters .wc-block-product-filter-checkbox-list__input {
	accent-color: var(--hemppy-forest);
	border: 1px solid var(--hemppy-control-border) !important; /* WC default ~1.3:1 fails 1.4.11 */
	background-color: var(--hemppy-white);
	border-radius: 4px;
}
.wc-block-product-filters .wc-block-product-filter-checkbox-list__input:checked {
	background-color: var(--hemppy-forest);
	border-color: var(--hemppy-forest) !important;
}
.wc-block-product-filters .wc-block-product-filter-checkbox-list__mark { color: var(--hemppy-white); }
.wc-block-product-filter-checkbox-list__text { color: var(--hemppy-ink); font-size: 0.9375rem; }
.wc-block-product-filter-checkbox-list__count {
	color: var(--hemppy-sage-text);
}
.wc-block-product-filter-checkbox-list__show-more {
	min-height: var(--hemppy-target);
	color: var(--hemppy-forest);
	font-weight: 600;
	text-decoration: underline;
	background: none;
	border: 0;
	padding: 0;
}

/* Chips (active filters, chips style) */
.wc-block-product-filter-chips__item,
.wc-block-product-filter-removable-chips__item {
	min-height: var(--hemppy-target);
	border-radius: var(--hemppy-radius-pill);
	border: 1px solid var(--hemppy-control-border);
	background: var(--hemppy-paper);
	color: var(--hemppy-ink);
	padding-inline: var(--hemppy-space-4);
}
.wc-block-product-filter-chips__item[aria-checked="true"],
.wc-block-product-filter-chips__item.is-selected {
	background: var(--hemppy-forest);
	border-color: var(--hemppy-forest);
	color: var(--hemppy-white);
}
.wc-block-product-filter-removable-chips__remove {
	min-width: 32px;
	min-height: 32px;
}

/* Price slider */
.wc-block-product-filter-price-slider {
	--hemppy-range: var(--hemppy-forest);
	accent-color: var(--hemppy-forest);
}
.wc-block-product-filter-price-slider input[type="text"],
.wc-block-product-filter-price-slider .text input {
	min-height: var(--hemppy-target);
	border: 1px solid var(--hemppy-control-border);
	border-radius: var(--hemppy-radius-sm);
	background: var(--hemppy-paper);
	color: var(--hemppy-ink);
}

/* Clear / Apply / open-overlay buttons */
.wc-block-product-filter-clear-button .wp-block-button__link,
.wc-block-product-filters__open-overlay,
.wc-block-product-filters__apply,
.wc-block-product-filters__close-overlay {
	min-height: var(--hemppy-target);
	border-radius: var(--hemppy-radius-sm);
	font-weight: 600;
}
.wc-block-product-filters .wc-block-product-filters__open-overlay {
	width: 100%;
	justify-content: center;
	border: 1px solid var(--hemppy-control-border);
	background: var(--hemppy-paper);
	color: var(--hemppy-forest);
	padding-inline: var(--hemppy-space-4);
}
.wc-block-product-filters__apply {
	background: var(--hemppy-forest);
	color: var(--hemppy-white);
}

/* Legacy filter widgets/blocks, if any are already in the sidebar */
.hemppy-archive .widget_layered_nav li a,
.hemppy-archive .wc-block-attribute-filter-list li label,
.hemppy-archive .wc-block-stock-filter-list li label {
	min-height: var(--hemppy-target);
	display: inline-flex;
	align-items: center;
}

/* ------------------------------------------------------------------ */
/* 4. Single product                                                   */
/* ------------------------------------------------------------------ */

.hemppy-pdp .product_title {
	font-family: var(--hemppy-font-display);
	color: var(--hemppy-forest);
	line-height: 1.15;
}
.hemppy-pdp div.product .entry-summary .price {
	font-size: 1.5rem;
	--theme-font-size: 1.5rem;
}
.hemppy-pdp div.product .entry-summary .price .hemppy-unit-price-wrap {
	font-size: 0.9375rem;
	margin-top: var(--hemppy-space-1);
}

/* Gallery */
.hemppy-pdp .woocommerce-product-gallery,
.hemppy-pdp .ct-product-gallery-container {
	border-radius: var(--hemppy-radius-md);
}
.hemppy-pdp .woocommerce-product-gallery .ct-media-container,
.hemppy-pdp .woocommerce-product-gallery__image,
.hemppy-pdp .flexy-items .ct-media-container {
	border-radius: var(--hemppy-radius-md);
	overflow: hidden;
	background: var(--hemppy-cream);
}
.hemppy-pdp .flexy-pills [data-type="thumbs"] li,
.hemppy-pdp .flex-control-thumbs li {
	border-radius: var(--hemppy-radius-sm);
	overflow: hidden;
}
.hemppy-pdp .flexy-pills li.active,
.hemppy-pdp .flex-control-thumbs img.flex-active {
	outline: 2px solid var(--hemppy-forest);
	outline-offset: 2px;
}
.hemppy-pdp .flexy-arrow-prev,
.hemppy-pdp .flexy-arrow-next,
.hemppy-pdp .woocommerce-product-gallery__trigger {
	min-width: var(--hemppy-target);
	min-height: var(--hemppy-target);
}

/* Short description */
.hemppy-pdp .woocommerce-product-details__short-description {
	color: var(--hemppy-ink);
	line-height: 1.65;
}

/* Variations */
.hemppy-pdp div.product form.cart .variations {
	border: 0;
	margin-bottom: var(--hemppy-space-4);
}
.hemppy-pdp div.product form.cart .variations th,
.hemppy-pdp div.product form.cart .variations td {
	display: block;
	padding: 0;
	border: 0;
	text-align: start;
}
.hemppy-pdp div.product form.cart .variations th label {
	font-weight: 700;
	color: var(--hemppy-forest);
	margin-bottom: var(--hemppy-space-1);
	display: inline-block;
}
.hemppy-pdp div.product form.cart .variations tr + tr th { padding-top: var(--hemppy-space-3); }
.hemppy-pdp div.product form.cart .variations select {
	width: 100%;
	max-width: 22rem;
	padding-inline: var(--hemppy-space-3) 2.25rem;
}
.hemppy-pdp .reset_variations {
	display: inline-flex;
	align-items: center;
	min-height: var(--hemppy-target);
	color: var(--hemppy-forest);
	text-decoration: underline;
}
.hemppy-pdp .woocommerce-variation-price .price { font-size: 1.25rem; }
.hemppy-pdp .woocommerce-variation-availability p,
.hemppy-pdp .stock {
	color: var(--hemppy-sage-text);
	font-weight: 600;
}
.hemppy-pdp .stock.out-of-stock { color: var(--hemppy-error); }

/* Quantity + button row */
.hemppy-pdp div.product form.cart:not(.variations_form),
.hemppy-pdp .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	gap: var(--hemppy-space-3);
	align-items: stretch;
}
.hemppy-pdp .single_add_to_cart_button { flex: 1 1 12rem; }

/* Gate message (hemppy-store) */
.hemppy-pdp .hemppy-unavailable {
	padding: var(--hemppy-space-3) var(--hemppy-space-4);
	border-left: 4px solid var(--hemppy-sage-text);
	border-radius: var(--hemppy-radius-sm);
	background: var(--hemppy-mist);
	color: var(--hemppy-ink);
}

/* Product meta (SKU / categories) */
.hemppy-pdp .product_meta {
	font-size: 0.9375rem;
	color: var(--hemppy-sage-text);
}
.hemppy-pdp .product_meta a { color: var(--hemppy-forest); }

/* Trust row (inc/woocommerce.php) — factual links only */
.hemppy-trust {
	list-style: none;
	margin: var(--hemppy-space-5) 0;
	padding: var(--hemppy-space-3) var(--hemppy-space-4);
	display: grid;
	gap: 0 var(--hemppy-space-4);
	grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
	background: var(--hemppy-cream);
	border-radius: var(--hemppy-radius-md);
}
.hemppy-trust__item { margin: 0; }
.hemppy-trust__item,
.hemppy-trust__item > a {
	min-height: var(--hemppy-target);
	display: flex;
	align-items: center;
	gap: var(--hemppy-space-2);
	color: var(--hemppy-ink);
	font-size: 0.9375rem;
}
.hemppy-trust__item > a { flex: 1 1 auto; text-decoration: none; }
.hemppy-trust__item > a span {
	text-decoration: underline;
	text-decoration-color: var(--hemppy-sage);
	text-underline-offset: 0.2em;
}
.hemppy-trust__item > a:hover span { text-decoration-color: currentColor; }
.hemppy-trust__icon { flex: 0 0 20px; color: var(--hemppy-forest); }

/* Compliance disclaimer (inc/compliance.php) */
.hemppy-disclaimer {
	margin: var(--hemppy-space-5) 0;
	padding: var(--hemppy-space-4);
	border: 1px solid var(--hemppy-line);
	border-left: 4px solid var(--hemppy-forest);
	border-radius: var(--hemppy-radius-sm);
	background: var(--hemppy-paper);
	color: var(--hemppy-ink);
	font-size: 0.9375rem;
	line-height: 1.55;
}
.hemppy-disclaimer__label {
	display: block;
	font-weight: 700;
	color: var(--hemppy-forest);
	margin-bottom: var(--hemppy-space-1);
}
.hemppy-disclaimer__text { margin: 0; }

/* Tabs (Blocksy tabs type-1..4 and core) */
.hemppy-pdp .woocommerce-tabs ul.tabs {
	border-color: var(--hemppy-line);
	gap: var(--hemppy-space-2);
	flex-wrap: wrap;
}
.hemppy-pdp .woocommerce-tabs ul.tabs li a {
	min-height: var(--hemppy-target);
	display: inline-flex;
	align-items: center;
	padding-inline: var(--hemppy-space-3);
	color: var(--hemppy-sage-text);
	font-weight: 600;
}
.hemppy-pdp .woocommerce-tabs ul.tabs li.active a {
	color: var(--hemppy-forest);
}
.hemppy-pdp .woocommerce-tabs .woocommerce-Tabs-panel {
	max-width: 75ch;
	line-height: 1.65;
}
.hemppy-pdp .woocommerce-Tabs-panel > h2:first-child {
	font-size: 1.25rem;
	color: var(--hemppy-forest);
}
/* Accordion-style tabs (Blocksy type-4) */
.hemppy-pdp .ct-accordion-heading {
	min-height: var(--hemppy-target);
	color: var(--hemppy-forest);
}

/* Tab content from hemppy-store */
.hemppy-pdp .hemppy-facts dt { color: var(--hemppy-forest); }
.hemppy-pdp .hemppy-facts dd { color: var(--hemppy-ink); }
.hemppy-lab-table th { color: var(--hemppy-forest); }
.hemppy-lab-table th,
.hemppy-lab-table td { border-bottom-color: var(--hemppy-line); }
.hemppy-lab-table a,
.hemppy-coa-variation a {
	display: inline-flex;
	align-items: center;
	min-height: var(--hemppy-target);
}
.hemppy-coa-variation {
	margin-top: var(--hemppy-space-5);
	padding-top: var(--hemppy-space-4);
	border-top: 1px solid var(--hemppy-line);
}
.hemppy-coa-variation > h3 {
	font-size: 1.0625rem;
	color: var(--hemppy-forest);
	margin: 0 0 var(--hemppy-space-3);
}
.hemppy-coa-note,
.hemppy-lab-empty {
	color: var(--hemppy-sage-text);
	font-size: 0.9375rem;
}

/* Related / upsells */
.hemppy-pdp .related.products,
.hemppy-pdp .upsells.products {
	margin-top: var(--hemppy-space-7);
	padding-top: var(--hemppy-space-6);
	border-top: 1px solid var(--hemppy-line);
}
.hemppy-pdp .related.products > h2,
.hemppy-pdp .upsells.products > h2 {
	font-family: var(--hemppy-font-display);
	color: var(--hemppy-forest);
	font-size: 1.5rem;
	margin-bottom: var(--hemppy-space-5);
}

/* Mobile sticky add-to-cart (assets/js/product.js) */
.hemppy-sticky-atc { display: none; }
@media (max-width: 767.98px) {
	.hemppy-sticky-atc:not([hidden]) {
		position: fixed;
		inset: auto 0 0 0;
		z-index: 90;
		display: flex;
		align-items: center;
		gap: var(--hemppy-space-3);
		padding: var(--hemppy-space-2) var(--hemppy-space-4);
		padding-bottom: calc(var(--hemppy-space-2) + env(safe-area-inset-bottom, 0px));
		background: var(--hemppy-paper);
		border-top: 1px solid var(--hemppy-line);
		box-shadow: 0 -4px 16px rgba(34, 48, 42, 0.1);
	}
	.hemppy-sticky-atc__info {
		flex: 1 1 auto;
		min-width: 0;
		display: flex;
		flex-direction: column;
		line-height: 1.25;
	}
	.hemppy-sticky-atc__title {
		font-weight: 600;
		color: var(--hemppy-ink);
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}
	.hemppy-sticky-atc__price {
		color: var(--hemppy-forest);
		font-weight: 600;
		font-size: 0.9375rem;
	}
	.hemppy-sticky-atc__price .hemppy-unit-price-wrap { display: none; } /* shown in the main summary */
	.hemppy-sticky-atc__button {
		flex: 0 0 auto;
		min-height: var(--hemppy-target);
		padding-inline: var(--hemppy-space-5);
		border: 0;
		border-radius: var(--hemppy-radius-sm);
		background: var(--hemppy-forest);
		color: var(--hemppy-white);
		font-weight: 600;
	}
	.hemppy-sticky-atc__button:focus-visible {
		outline: 3px solid var(--hemppy-focus);
		outline-offset: 2px;
	}
	body.hemppy-has-sticky-atc { padding-bottom: 72px; }
	/* Keep Blocksy's back-to-top button clear of the bar. */
	body.hemppy-has-sticky-atc .ct-back-to-top { bottom: 84px; }
}

/* ------------------------------------------------------------------ */
/* 5. Block Cart & Checkout                                            */
/* ------------------------------------------------------------------ */

.wc-block-cart,
.wc-block-checkout {
	color: var(--hemppy-ink);
}
/* Sidebar boxes: Blocksy draws them (Customizer → WooCommerce → General →
 * Cart Page "Cart Totals Border" / Checkout Page "Order Review Border"). */
.wc-block-cart .wc-block-cart-items {
	border-color: var(--hemppy-line);
}
.wc-block-cart-items__header,
.wc-block-cart .wc-block-cart__totals-title {
	color: var(--hemppy-sage-text);
	font-weight: 700;
	letter-spacing: 0.04em;
}
.wc-block-cart-item__image img,
.wc-block-components-order-summary-item__image img {
	border-radius: var(--hemppy-radius-sm);
	background: var(--hemppy-cream);
}
.wc-block-components-product-name {
	color: var(--hemppy-forest);
	font-weight: 600;
}
.wc-block-components-product-metadata,
.wc-block-components-product-details {
	color: var(--hemppy-sage-text);
	font-size: 0.875rem;
}
.wc-block-cart-item__remove-link {
	min-height: var(--hemppy-target);
	min-width: var(--hemppy-target);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--hemppy-sage-text) !important; /* WC sets !important link colour */
}
.wc-block-components-quantity-selector {
	min-height: var(--hemppy-target);
	border-radius: var(--hemppy-radius-sm);
}
.wc-block-components-quantity-selector::after {
	border-color: var(--hemppy-control-border) !important;
	border-radius: var(--hemppy-radius-sm) !important;
}
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button {
	min-width: var(--hemppy-target);
	color: var(--hemppy-forest);
}

/* Buttons (Proceed to checkout / Place order / Apply coupon) */
.wc-block-components-button:not(.is-link) {
	min-height: var(--hemppy-target);
	border-radius: var(--hemppy-radius-sm);
	background-color: var(--hemppy-forest);
	color: var(--hemppy-white);
	font-weight: 600;
	transition: background-color 0.15s ease;
}
.wc-block-components-button:not(.is-link):hover {
	background-color: var(--hemppy-sage-text);
	color: var(--hemppy-white);
}
.wc-block-components-button:not(.is-link):disabled,
.wc-block-components-button:not(.is-link)[aria-disabled="true"] {
	background-color: var(--hemppy-mist);
	color: var(--hemppy-ink);
	opacity: 1;
}
.wc-block-components-button:not(.is-link):focus-visible,
.wc-block-components-button:not(.is-link):focus {
	outline: 3px solid var(--hemppy-focus);
	outline-offset: 2px;
	box-shadow: none;
}
.wc-block-components-button.is-link,
.wc-block-components-totals-coupon-link,
.wc-block-checkout__login-prompt,
.wc-block-components-checkout-return-to-cart-button {
	color: var(--hemppy-forest);
	min-height: var(--hemppy-target);
	display: inline-flex;
	align-items: center;
}

/* Inputs */
.wc-block-components-text-input input,
.wc-block-components-text-input textarea,
.wc-block-components-combobox .wc-block-components-combobox-control input,
.wc-block-components-select-input select,
.wc-blocks-components-select .wc-blocks-components-select__select,
.wc-block-components-textarea {
	min-height: 3.25rem;
	border: 1px solid var(--hemppy-control-border) !important;
	border-radius: var(--hemppy-radius-sm) !important;
	background-color: var(--hemppy-white) !important;
	color: var(--hemppy-ink) !important;
}
.wc-block-components-text-input label,
.wc-block-components-combobox label,
.wc-blocks-components-select__label {
	color: var(--hemppy-sage-text) !important;
}
.wc-block-components-text-input.has-error input,
.wc-block-components-combobox.has-error input {
	border-color: var(--hemppy-error) !important;
}
.wc-block-components-validation-error {
	color: var(--hemppy-error);
}
.wc-block-components-text-input input:focus,
.wc-block-components-combobox-control input:focus,
.wc-blocks-components-select__select:focus {
	outline: 3px solid var(--hemppy-focus);
	outline-offset: 1px;
	box-shadow: none !important;
}

/* Steps / headings */
.wc-block-components-checkout-step__title,
.wc-block-components-title.wc-block-components-title {
	font-family: var(--hemppy-font-display);
	color: var(--hemppy-forest);
	font-weight: 600;
}
.wc-block-components-checkout-step__description {
	color: var(--hemppy-sage-text);
}

/* Radio cards (shipping & payment methods) */
.wc-block-components-radio-control__option,
.wc-block-components-radio-control-accordion-option {
	min-height: var(--hemppy-target);
}
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option-checked,
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control-accordion-option--checked-option-highlighted {
	box-shadow: inset 0 0 0 2px var(--hemppy-forest) !important;
	border-radius: var(--hemppy-radius-sm);
}
.wc-block-components-radio-control__input:checked {
	border-color: var(--hemppy-forest);
}
.wc-block-components-radio-control__input:checked::before {
	background: var(--hemppy-forest);
}
.wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"] {
	border-color: var(--hemppy-control-border);
	width: 22px;
	height: 22px;
}
.wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"]:checked {
	background: var(--hemppy-forest);
	border-color: var(--hemppy-forest);
}
.wc-block-components-checkbox .wc-block-components-checkbox__mark { fill: var(--hemppy-white); }
.wc-block-components-checkbox label { min-height: var(--hemppy-target); align-items: center; }

/* Totals */
.wc-block-components-totals-item__label,
.wc-block-components-totals-item__description {
	color: var(--hemppy-ink);
}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value,
.wc-block-components-totals-footer-item .wc-block-components-totals-item__label {
	color: var(--hemppy-forest);
	font-weight: 700;
}
.wc-block-components-totals-wrapper { border-color: var(--hemppy-line); }

/* Notices */
.wc-block-components-notice-banner {
	border-radius: var(--hemppy-radius-sm);
	color: var(--hemppy-ink);
	background: var(--hemppy-paper);
	border-left-width: 4px;
}
.wc-block-components-notice-banner.is-error { border-color: var(--hemppy-error); }
.wc-block-components-notice-banner.is-info { border-color: var(--hemppy-sage-text); }
.wc-block-components-notice-banner.is-success { border-color: var(--hemppy-forest); }

/* Terms / privacy text under Place order */
.wc-block-checkout__terms,
.wc-block-components-checkout-policies {
	color: var(--hemppy-ink);
	font-size: 0.9375rem;
}
.wc-block-checkout__terms a,
.wc-block-components-checkout-policies a { color: var(--hemppy-forest); }

/* Free-shipping notice from hemppy-store */
.hemppy-fs-notice {
	border-left: 4px solid var(--hemppy-forest);
}
.hemppy-fs-notice progress {
	accent-color: var(--hemppy-forest);
	height: 6px;
	width: 100%;
}
.hemppy-fs-notice.is-qualified { border-left-color: var(--hemppy-sun); }

/* Order received */
.woocommerce-order .woocommerce-thankyou-order-received,
.wc-block-order-confirmation-status {
	font-family: var(--hemppy-font-display);
	color: var(--hemppy-forest);
}
.woocommerce-order ul.order_details {
	background: var(--hemppy-paper);
	border: 1px solid var(--hemppy-line);
	border-radius: var(--hemppy-radius-md);
	padding: var(--hemppy-space-4);
}

/* ------------------------------------------------------------------ */
/* 6. My Account                                                       */
/* ------------------------------------------------------------------ */

.woocommerce-account .woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0;
	padding: var(--hemppy-space-2);
	background: var(--hemppy-paper);
	border: 1px solid var(--hemppy-line);
	border-radius: var(--hemppy-radius-md);
}
.woocommerce-account .woocommerce-MyAccount-navigation li { margin: 0; border: 0; }
.woocommerce-account .woocommerce-MyAccount-navigation li a {
	min-height: var(--hemppy-target);
	display: flex;
	align-items: center;
	padding-inline: var(--hemppy-space-3);
	border-radius: var(--hemppy-radius-sm);
	color: var(--hemppy-ink);
	text-decoration: none;
}
.woocommerce-account .woocommerce-MyAccount-navigation li a:hover {
	background: var(--hemppy-mist);
}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a {
	background: var(--hemppy-forest);
	color: var(--hemppy-white);
	font-weight: 600;
}
.woocommerce-account .woocommerce-MyAccount-content > p:first-child {
	font-size: 1.0625rem;
}
.woocommerce-account .woocommerce-orders-table__cell-order-actions .button {
	min-height: var(--hemppy-target);
	margin: 0.125rem 0;
}
.woocommerce-account .woocommerce-Addresses .woocommerce-Address {
	background: var(--hemppy-paper);
	border: 1px solid var(--hemppy-line);
	border-radius: var(--hemppy-radius-md);
	padding: var(--hemppy-space-4);
}
.woocommerce-account .woocommerce-Address-title .edit {
	min-height: var(--hemppy-target);
	display: inline-flex;
	align-items: center;
	color: var(--hemppy-forest);
}

/* Login / register */
.woocommerce form.woocommerce-form-login,
.woocommerce form.woocommerce-form-register,
.woocommerce form.woocommerce-ResetPassword {
	background: var(--hemppy-paper);
	border: 1px solid var(--hemppy-line);
	border-radius: var(--hemppy-radius-md);
	padding: var(--hemppy-space-5);
}
.woocommerce-form-login__rememberme,
.woocommerce-form__label-for-checkbox {
	min-height: var(--hemppy-target);
	display: inline-flex !important;
	align-items: center;
	gap: var(--hemppy-space-2);
}
.woocommerce form .lost_password a,
.woocommerce-LostPassword a {
	color: var(--hemppy-forest);
	min-height: var(--hemppy-target);
	display: inline-flex;
	align-items: center;
}

/* ------------------------------------------------------------------ */
/* 7. Windows High Contrast / forced colours                           */
/* ------------------------------------------------------------------ */
@media (forced-colors: active) {
	.woocommerce span.onsale,
	.out-of-stock-badge,
	.hemppy-sticky-atc__button,
	.wc-block-components-button:not(.is-link) {
		border: 1px solid ButtonText;
	}
}

/* ------------------------------------------------------------------ */
/* 1.0.10 — Batch 4 QA fixes (axe / Lighthouse, live 2026-10-06)       */
/* ------------------------------------------------------------------ */

/* Strike-through prices and SKU: Blocksy/WC fade them with opacity .7, which took
   sage-text (#4a6352) down to ~3.1:1. Keep the colour, drop the fade (≥ 6:1).
   1.0.12: Blocksy also paints .sku itself #7d8d7e (3.06:1 on cream). Force
   sage-text (#4a6352 → 5.73:1 on cream / 6.20 on paper). */
.woocommerce .price del,
.wc-block-components-product-price del {
	opacity: 1;
	color: var(--hemppy-sage-text);
}
.product_meta .sku,
.product_meta .sku_wrapper,
.woocommerce .product_meta .sku,
.hemppy-pdp .product_meta .sku {
	opacity: 1;
	color: var(--hemppy-sage-text); /* #4a6352 — 5.73:1 on cream #f5efe3 */
}

/* 1.0.15: Blocksy still paints .sku #7d8d7e (3.06:1) — beat it with higher
   specificity + !important. Darken to ink for comfortable AA on cream. */
.woocommerce div.product .summary .product_meta .sku_wrapper .sku,
.woocommerce div.product .product_meta span.sku,
.single-product div.product .product_meta .sku,
.single-product .summary .product_meta .sku_wrapper,
.single-product .summary .product_meta .sku {
	opacity: 1 !important;
	color: var(--hemppy-ink) !important; /* #22302a — ~12:1 on cream */
}

/* Checkout block labels: WC renders the resting (in-field) label at opacity .6
   → #8e9b8c on cream, 2.5:1. Full opacity = sage-text on white/cream ≥ 5.9:1. */
.wc-block-components-text-input label,
.wc-block-components-combobox label,
.wc-blocks-components-select__label,
.wc-block-components-country-input label,
.wc-block-components-state-input label {
	opacity: 1 !important;
}

/* "Enter a shipping address…" helper: WC uses ink at 66 % alpha on a 4 % tint (4.26:1).
   1.0.12: colour alone lost to WC's rgba/opacity — solid ink + opacity 1 → ~11:1 on #ede7dc. */
.wc-block-components-shipping-rates-control__no-shipping-address-message {
	color: var(--hemppy-ink) !important; /* #22302a — 11.2:1 on WC tint #ede7dc */
	opacity: 1;
}

/* "No payment methods" notice: WC paints rgba(218,0,28,.7) behind white text (3.96:1). */
.wc-block-checkout__no-payment-methods-notice,
.wc-block-components-notice-banner.is-error.wc-block-checkout__no-payment-methods-notice {
	background-color: var(--hemppy-error);
	color: var(--hemppy-white);
}
.wc-block-checkout__no-payment-methods-notice .wc-block-components-notice-banner__content,
.wc-block-checkout__no-payment-methods-notice svg {
	color: var(--hemppy-white);
	fill: currentColor;
}

/* Links inside running text in checkout (terms / privacy consent): underline so they are
   distinguishable without colour (WCAG 1.4.1, axe link-in-text-block). */
.wc-block-checkout__terms a,
.wc-block-components-checkbox__label a,
.wc-block-checkout__guest-checkout-notice a,
.wc-block-components-checkout-order-summary__content a:not(.wc-block-components-product-name) {
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

/* Cart "Remove item": Lighthouse target-size — ≥44×44, clear of quantity. */
.wc-block-cart-item__remove-link {
	min-width: var(--hemppy-target); /* 44px */
	min-height: var(--hemppy-target);
	padding: 0.625rem 0.75rem;
	box-sizing: border-box;
	margin-top: 0.5rem;
	position: relative;
	z-index: 1;
	line-height: 1.2;
}

/* Keep remove clear of quantity ± buttons (LH: obscured 14×44). */
.wc-block-cart-item__quantity {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.75rem;
}
.wc-block-cart-item__quantity .wc-block-components-quantity-selector {
	margin-inline-end: 0;
}

/* Product description tab: the panel's "Description" h2 is restored for the document
   outline (Blocksy hides it); the tab label already shows it, so it is visually hidden. */
.hemppy-pdp .woocommerce-Tabs-panel > h2.hemppy-sr-heading,
.hemppy-sr-heading {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* ------------------------------------------------------------------ */
/* 1.0.11 — CRO / mobile polish (Batch 3/4/7 + CRO memo; claim-safe)  */
/* ------------------------------------------------------------------ */

/* Trust row: real row gap when items wrap (was gap: 0 column-only). */
.hemppy-trust {
	gap: var(--hemppy-space-2) var(--hemppy-space-4);
}
@media (max-width: 479.98px) {
	.hemppy-trust {
		grid-template-columns: 1fr;
		padding: var(--hemppy-space-3);
		margin: var(--hemppy-space-4) 0;
	}
}

/* Sticky ATC vs Coming Soon private-preview banner (#hemppy-preview-banner
   at bottom:0, z-index 99999). Lift the bar and stack body padding so the
   sticky control stays tappable during preview sessions. Goes away when CS
   preview ends (banner absent). */
@media (max-width: 767.98px) {
	body:has(#hemppy-preview-banner) .hemppy-sticky-atc:not([hidden]) {
		bottom: 3.5rem;
	}
	body.hemppy-has-sticky-atc:has(#hemppy-preview-banner) {
		padding-bottom: calc(72px + 3.5rem);
	}
	body.hemppy-has-sticky-atc:has(#hemppy-preview-banner) .ct-back-to-top {
		bottom: calc(84px + 3.5rem);
	}
	/* Keep the sticky button label from wrapping into a thin column. */
	.hemppy-sticky-atc__button {
		white-space: nowrap;
		flex-shrink: 0;
	}
}

/* Filter sidebar / overlay: clearer open control + chip wrap on mobile. */
.wc-block-product-filters .wc-block-product-filters__open-overlay {
	min-height: var(--hemppy-target);
	gap: var(--hemppy-space-2);
}
.wc-block-product-filter-chips,
.wc-block-product-filter-removable-chips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--hemppy-space-2);
}
@media (max-width: 999.98px) {
	.hemppy-archive .ct-sidebar .ct-widget + .ct-widget {
		margin-top: var(--hemppy-space-4);
		padding-top: var(--hemppy-space-4);
	}
}

/* PDP mobile: slightly tighter summary stack; keep ATC row readable. */
@media (max-width: 689.98px) {
	.hemppy-pdp div.product .entry-summary > *:not(.hemppy-trust):not(.hemppy-disclaimer) {
		margin-bottom: var(--hemppy-space-3);
	}
	.hemppy-pdp div.product form.cart:not(.variations_form),
	.hemppy-pdp .woocommerce-variation-add-to-cart {
		gap: var(--hemppy-space-2);
		margin-top: var(--hemppy-space-3);
	}
	.hemppy-pdp .woocommerce-tabs {
		margin-top: var(--hemppy-space-5);
	}
}

/* Cart / checkout mobile spacing (block cart & checkout). */
@media (max-width: 689.98px) {
	.wc-block-cart-items .wc-block-cart-item,
	.wc-block-components-order-summary-item {
		padding-block: var(--hemppy-space-3);
	}
	.wc-block-components-sidebar-layout {
		gap: var(--hemppy-space-5);
	}
	.wc-block-checkout__form .wc-block-components-checkout-step {
		margin-bottom: var(--hemppy-space-4);
	}
}

/* Empty cart recovery links (CRO #8) — colour only; no fake CTAs. */
.wp-block-woocommerce-empty-cart-block a,
.wc-block-cart__empty-cart a,
.woocommerce-cart .cart-empty a {
	color: var(--hemppy-forest);
	text-decoration: underline;
	text-underline-offset: 0.15em;
	min-height: var(--hemppy-target);
	display: inline-flex;
	align-items: center;
}

/* ------------------------------------------------------------------ */
/* 1.0.12 — axe contrast follow-ups (qa-continue 2026-10-06; not live) */
/* ------------------------------------------------------------------ */

/* Reinforced above in the 1.0.10 block:
 *   .product_meta .sku / .sku_wrapper → sage-text + opacity 1
 *   .wc-block-components-shipping-rates-control__no-shipping-address-message
 *     → ink !important + opacity 1
 * del price / no-payment notice / label opacity from 1.0.10 unchanged. */


/* ------------------------------------------------------------------ */
/* 1.0.13 — premium product cards / shop density / PDP hierarchy      */
/* ------------------------------------------------------------------ */

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product,
ul.products li.product {
	background: var(--hemppy-paper);
	border: 1px solid rgba(31, 59, 45, 0.10);
	border-radius: 16px;
	padding: 0 0 1.25rem;
	overflow: hidden;
	box-shadow: 0 4px 20px rgba(34, 48, 42, 0.07);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.woocommerce ul.products li.product:hover,
.woocommerce ul.products li.product:focus-within {
	transform: translateY(-3px);
	box-shadow: 0 12px 36px rgba(34, 48, 42, 0.12);
}
@media (prefers-reduced-motion: reduce) {
	.woocommerce ul.products li.product { transition: none; }
	.woocommerce ul.products li.product:hover,
	.woocommerce ul.products li.product:focus-within { transform: none; }
}

/* Image area ~4:5 */
.woocommerce ul.products li.product .woocommerce-loop-product__link img,
.woocommerce ul.products li.product a img,
.woocommerce ul.products li.product img {
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	background: var(--hemppy-mist);
	border-radius: 0;
	margin: 0;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product .ct-woo-card-title,
.woocommerce ul.products li.product h2,
.woocommerce ul.products li.product h3 {
	font-family: var(--hemppy-font-display);
	font-size: 1.125rem;
	font-weight: 600;
	color: var(--hemppy-forest);
	padding: 1rem 1.15rem 0.35rem;
	margin: 0;
	line-height: 1.3;
}
.woocommerce ul.products li.product .price {
	padding: 0 1.15rem;
	font-size: 1.0625rem;
}
.woocommerce ul.products li.product .hemppy-unit-price-wrap {
	padding: 0.15rem 1.15rem 0;
	display: block;
}
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product a.button {
	margin: 0.85rem 1.15rem 0;
	width: calc(100% - 2.3rem);
	box-sizing: border-box;
}

/* Sale badge — sun + ink, never cheap red */
.woocommerce span.onsale,
.wc-block-components-product-sale-badge,
[data-products] .onsale {
	background-color: var(--hemppy-sun) !important;
	color: var(--hemppy-ink) !important;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	font-size: 0.6875rem;
	border-radius: 6px;
	min-height: 1.75rem;
	padding: 0.25rem 0.55rem;
	line-height: 1.2;
	border: none;
}

/* Shop toolbar / filters */
.woocommerce .woocommerce-result-count,
.woocommerce .woocommerce-ordering {
	color: var(--hemppy-sage-text);
	font-size: 0.9375rem;
}
.woocommerce .woocommerce-ordering select {
	min-height: 44px;
	border: 1px solid var(--hemppy-control-border);
	border-radius: var(--hemppy-radius-sm);
	background: var(--hemppy-paper);
	color: var(--hemppy-ink);
	padding-inline: 0.75rem;
}
.woocommerce .widget_layered_nav ul li,
.woocommerce .woocommerce-widget-layered-nav-list__item {
	padding-block: 0.35rem;
}
.woocommerce .widget-title,
.woocommerce .ct-widget .widget-title {
	font-family: var(--hemppy-font-display);
	color: var(--hemppy-forest);
	font-size: 1.125rem;
}

/* PDP hierarchy */
.hemppy-pdp .product_title,
.woocommerce div.product .product_title {
	font-family: var(--hemppy-font-display);
	font-size: clamp(1.75rem, 3.5vw, 2.35rem);
	letter-spacing: -0.02em;
	line-height: 1.2;
	color: var(--hemppy-forest);
}
.woocommerce div.product div.images {
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 8px 32px rgba(34, 48, 42, 0.1);
	background: var(--hemppy-paper);
}
.woocommerce div.product p.price,
.woocommerce div.product span.price {
	font-size: 1.375rem;
	margin-bottom: 0.5rem;
}
.woocommerce div.product .woocommerce-product-details__short-description {
	font-size: 1.0625rem;
	line-height: 1.65;
	color: var(--hemppy-ink);
	max-width: 40rem;
}
.woocommerce div.product .woocommerce-tabs ul.tabs {
	padding-left: 0;
	border-bottom: 2px solid var(--hemppy-mist);
}
.woocommerce div.product .woocommerce-tabs ul.tabs li {
	border-radius: 8px 8px 0 0;
	background: transparent;
	border: none;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active {
	background: var(--hemppy-paper);
	border: 1px solid var(--hemppy-mist);
	border-bottom-color: var(--hemppy-paper);
}
.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	color: var(--hemppy-sage-text);
	font-weight: 600;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
	color: var(--hemppy-forest);
}

/* Related products heading */
.woocommerce .related > h2,
.woocommerce .upsells > h2 {
	font-family: var(--hemppy-font-display);
	font-size: clamp(1.5rem, 3vw, 1.875rem);
	color: var(--hemppy-forest);
	margin-bottom: 1.5rem;
}

/* Cart / checkout surface consistency */
.woocommerce-cart .cart-collaterals .cart_totals,
.woocommerce-checkout #order_review {
	background: var(--hemppy-paper);
	border: 1px solid rgba(31, 59, 45, 0.10);
	border-radius: 14px;
	padding: 1.5rem;
	box-shadow: 0 4px 20px rgba(34, 48, 42, 0.06);
}

/* ------------------------------------------------------------------ */
/* 1.0.14 — mobile shop QA: sort label, card density, sticky clearance */
/* ------------------------------------------------------------------ */

/* Sort control — show full “Default sorting” on narrow screens (was 44px icon truncating to “De”) */
@media (max-width: 689.98px) {
	.hemppy-archive .woo-listing-top {
		flex-direction: column;
		align-items: stretch;
		gap: var(--hemppy-space-3);
	}
	.hemppy-archive .woo-listing-top .woocommerce-ordering {
		width: 100%;
		max-width: 100%;
		margin: 0;
	}
	.hemppy-archive .woo-listing-top .woocommerce-ordering select {
		width: 100% !important;
		max-width: 100%;
		min-width: 0;
		height: auto;
		min-height: var(--hemppy-target);
		font-size: 0.9375rem;
		padding-inline: 0.75rem 2rem;
		text-overflow: clip;
		overflow: visible;
		white-space: normal;
	}
}

.woocommerce .woocommerce-ordering {
	max-width: 100%;
}
.woocommerce .woocommerce-ordering select {
	max-width: 100%;
	min-width: min(100%, 12rem);
	text-overflow: ellipsis;
}

/* Product cards — 1 column under ~480px; calmer type + unit price */
@media (max-width: 479.98px) {
	.hemppy-archive [data-products],
	.woocommerce ul.products[data-products],
	.woocommerce ul.products.columns-2,
	.woocommerce ul.products.columns-3,
	.woocommerce ul.products.columns-4,
	.woocommerce-page ul.products {
		--shop-columns: 1;
		grid-template-columns: 1fr !important;
	}
	.woocommerce ul.products li.product,
	.woocommerce-page ul.products li.product,
	ul.products li.product {
		width: 100% !important;
		margin: 0 0 1.25rem !important;
		padding-bottom: 1.15rem;
	}
	.woocommerce ul.products li.product .woocommerce-loop-product__title,
	.woocommerce ul.products li.product .ct-woo-card-title,
	.woocommerce ul.products li.product h2,
	.woocommerce ul.products li.product h3,
	[data-products] .woocommerce-loop-product__title {
		font-size: 1.0625rem;
		line-height: 1.35;
		padding: 0.85rem 1rem 0.25rem;
		-webkit-line-clamp: 3;
		overflow-wrap: break-word;
		hyphens: auto;
	}
	.woocommerce ul.products li.product .price {
		padding: 0 1rem;
		font-size: 1rem;
		line-height: 1.35;
	}
	.woocommerce ul.products li.product .hemppy-unit-price-wrap,
	[data-products] .hemppy-unit-price-wrap {
		display: block;
		padding: 0.2rem 1rem 0;
		font-size: 0.8125rem;
		line-height: 1.35;
		white-space: normal;
		overflow-wrap: break-word;
	}
	.woocommerce ul.products li.product .button,
	.woocommerce ul.products li.product a.button,
	[data-products] .ct-woo-card-actions .button {
		margin: 0.75rem 1rem 0;
		width: calc(100% - 2rem);
		max-width: none;
		display: flex;
		justify-content: center;
	}
}

/* Mid mobile: generous 2-col with breathing room */
@media (min-width: 480px) and (max-width: 689.98px) {
	.woocommerce ul.products li.product .woocommerce-loop-product__title,
	.woocommerce ul.products li.product h2,
	.woocommerce ul.products li.product h3 {
		font-size: 1rem;
		padding-inline: 0.85rem;
	}
	.woocommerce ul.products li.product .price {
		padding-inline: 0.85rem;
		font-size: 0.9875rem;
	}
	.woocommerce ul.products li.product .hemppy-unit-price-wrap {
		padding-inline: 0.85rem;
		font-size: 0.75rem;
		white-space: normal;
	}
	.woocommerce ul.products li.product .button,
	.woocommerce ul.products li.product a.button {
		margin-inline: 0.85rem;
		width: calc(100% - 1.7rem);
	}
}

/* Unit price never force one long unbreakable line on cards */
.woocommerce ul.products li.product .hemppy-unit-price-wrap,
[data-products] .hemppy-unit-price-wrap {
	white-space: normal;
	overflow-wrap: break-word;
}

/* Sticky ATC — ensure footer / main clear the bar (bar retained) */
@media (max-width: 767.98px) {
	body.hemppy-has-sticky-atc {
		padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px));
	}
	body.hemppy-has-sticky-atc .ct-footer {
		padding-bottom: 0.25rem;
	}
	body.hemppy-has-sticky-atc .ct-back-to-top {
		bottom: calc(92px + env(safe-area-inset-bottom, 0px));
	}
	/* Preview banner + sticky ATC: stack clearances */
	body.hemppy-has-sticky-atc:has(#hemppy-preview-banner) {
		padding-bottom: calc(80px + 3.5rem + env(safe-area-inset-bottom, 0px));
	}
	body.hemppy-has-sticky-atc:has(#hemppy-preview-banner) .hemppy-sticky-atc:not([hidden]) {
		bottom: 3.5rem;
	}
	body.hemppy-has-sticky-atc:has(#hemppy-preview-banner) .ct-back-to-top {
		bottom: calc(92px + 3.5rem + env(safe-area-inset-bottom, 0px));
	}
}

/* Sale badges remain sun + ink (reinforce; never cheap red) */
.woocommerce span.onsale,
.wc-block-components-product-sale-badge,
[data-products] .onsale {
	background-color: var(--hemppy-sun) !important;
	color: var(--hemppy-ink) !important;
}


/* ------------------------------------------------------------------ */
/* 1.0.15 — Lighthouse a11y follow-ups (SKU contrast + cart remove)    */
/* ------------------------------------------------------------------ */
/* SKU + remove rules live above (strengthened selectors). Marker for CLI. */

/* ------------------------------------------------------------------ */
/* 1.0.16 — visual QA FAIL/WEAK: tablet filters, PDP, related, checkout */
/* ------------------------------------------------------------------ */

/*
 * FAIL 1 — Tablet shop filters above grid.
 * WooCommerce Product Filters only uses the Filter overlay below 600px
 * (@media min-width:601px forces inline filter groups). At tablet (~768)
 * Blocksy stacks the sidebar full-width; combined with our --sidebar-order:-1
 * the expanded groups push the product grid to ~y=1760. Restore overlay
 * behaviour through Blocksy's tablet band (max-width: 999.98px).
 */
@media (min-width: 601px) and (max-width: 999.98px) {
	.hemppy-archive :where(.wc-block-product-filters),
	.hemppy-archive :where(.wc-block-product-filters).is-overlay-opened {
		display: inline-flex;
	}
	.hemppy-archive :where(.wc-block-product-filters) .wc-block-product-filters__open-overlay {
		display: flex !important;
		width: 100%;
		justify-content: center;
		min-height: var(--hemppy-target);
		border: 1px solid var(--hemppy-control-border);
		background: var(--hemppy-paper);
		color: var(--hemppy-forest);
		border-radius: var(--hemppy-radius-sm);
		padding-inline: var(--hemppy-space-4);
		font-weight: 600;
	}
	.hemppy-archive :where(.wc-block-product-filters) .wc-block-product-filters__overlay-header,
	.hemppy-archive :where(.wc-block-product-filters) .wc-block-product-filters__overlay-footer {
		display: flex !important;
	}
	.hemppy-archive :where(.wc-block-product-filters) .wc-block-product-filters__overlay {
		position: fixed !important;
		inset: 0 !important;
		top: var(--top-padding, 0) !important;
		pointer-events: none !important;
		background-color: transparent !important;
		z-index: 9999;
		flex-grow: 0 !important;
		transition: background-color 200ms 300ms;
	}
	.hemppy-archive :where(.wc-block-product-filters).is-overlay-opened .wc-block-product-filters__overlay {
		pointer-events: auto !important;
		background-color: rgba(34, 48, 42, 0.35) !important;
		transition-delay: 0s;
	}
	.hemppy-archive :where(.wc-block-product-filters) .wc-block-product-filters__overlay-wrapper {
		position: relative !important;
		width: 100% !important;
		height: 100% !important;
	}
	.hemppy-archive :where(.wc-block-product-filters) .wc-block-product-filters__overlay-dialog {
		position: absolute !important;
		inset: 0 auto 0 0 !important;
		width: min(100%, 480px) !important;
		max-height: 100%;
		transform: translateX(-100%) !important;
		transition: transform 500ms;
		background-color: var(--hemppy-paper) !important;
		color: var(--hemppy-ink) !important;
		display: flex !important;
		flex-direction: column;
	}
	.hemppy-archive :where(.wc-block-product-filters).is-overlay-opened .wc-block-product-filters__overlay-dialog {
		transform: translateX(0) !important;
	}
	.hemppy-archive :where(.wc-block-product-filters) .wc-block-product-filters__overlay-content {
		overflow-y: auto !important;
		padding: 0 var(--hemppy-space-5) !important;
		background: inherit !important;
	}
	/* Keep Filter button above the grid; hide leftover classic filter widgets inline. */
	.hemppy-archive [data-sidebar] {
		--sidebar-order: -1;
		row-gap: var(--hemppy-space-4);
	}
	.hemppy-archive .ct-sidebar .widget_layered_nav,
	.hemppy-archive .ct-sidebar .woocommerce-widget-layered-nav,
	.hemppy-archive .ct-sidebar .widget_price_filter,
	.hemppy-archive .ct-sidebar .widget_rating_filter {
		display: none;
	}
}

/*
 * FAIL 2 — Tablet/desktop PDP: catalog filters above gallery.
 * Hide Product Filters (and their widgets) on single product; collapse layout.
 */
body.hemppy-pdp .wc-block-product-filters,
body.single-product .wc-block-product-filters,
body.hemppy-pdp .ct-widget:has(.wc-block-product-filters),
body.single-product .ct-widget:has(.wc-block-product-filters) {
	display: none !important;
}
body.hemppy-pdp #sidebar:not(:has(.ct-widget:not(:has(.wc-block-product-filters)))),
body.hemppy-pdp.hemppy-pdp-no-woo-sidebar #sidebar {
	display: none !important;
}
body.hemppy-pdp.hemppy-pdp-no-woo-sidebar .ct-container[data-sidebar],
body.hemppy-pdp.hemppy-pdp-no-woo-sidebar #main .ct-container[data-sidebar],
body.hemppy-pdp.hemppy-pdp-no-woo-sidebar [data-sidebar] {
	grid-template-columns: minmax(0, 1fr) !important;
	--sidebar-width: 0px;
	--sidebar-gap: 0px;
}

/*
 * FAIL 3 — Related / upsells single narrow column.
 * Force 3-col desktop, 2-col tablet+mobile (task: 2–3 / 2).
 */
.hemppy-pdp .related.products ul.products,
.hemppy-pdp .upsells.products ul.products,
.woocommerce .related ul.products,
.woocommerce .upsells ul.products,
.hemppy-pdp .related [data-products],
.hemppy-pdp .upsells [data-products] {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	gap: var(--hemppy-space-5) !important;
	--shop-columns: 3;
}
.hemppy-pdp .related.products ul.products li.product,
.hemppy-pdp .upsells.products ul.products li.product,
.woocommerce .related ul.products li.product,
.woocommerce .upsells ul.products li.product {
	width: auto !important;
	margin: 0 !important;
	float: none !important;
	max-width: none !important;
}
@media (max-width: 999.98px) {
	.hemppy-pdp .related.products ul.products,
	.hemppy-pdp .upsells.products ul.products,
	.woocommerce .related ul.products,
	.woocommerce .upsells ul.products,
	.hemppy-pdp .related [data-products],
	.hemppy-pdp .upsells [data-products] {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		--shop-columns: 2;
	}
}
@media (max-width: 479.98px) {
	.hemppy-pdp .related.products ul.products,
	.hemppy-pdp .upsells.products ul.products,
	.woocommerce .related ul.products,
	.woocommerce .upsells ul.products,
	.hemppy-pdp .related [data-products],
	.hemppy-pdp .upsells [data-products] {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		--shop-columns: 2;
		gap: var(--hemppy-space-3) !important;
	}
}

/*
 * FAIL 5 — Dead Place Order when no payment gateways.
 * Classic + Blocks: hide/disable place-order while notice remains visible.
 */
body.hemppy-no-payment-methods #place_order,
body.hemppy-no-payment-methods .woocommerce-checkout #payment #place_order,
body.hemppy-no-payment-methods .wc-block-components-checkout-place-order-button,
body.hemppy-no-payment-methods button.wc-block-components-checkout-place-order-button {
	display: none !important;
}
body.hemppy-no-payment-methods .wc-block-checkout__actions_row .wc-block-components-checkout-place-order-button {
	display: none !important;
}

/*
 * WEAK — Product card images often served as 300×300 from Woo thumbs.
 * Soften upscaling; owner should regenerate thumbnails at larger sizes
 * (theme support bumps thumbnail_image_width to 600 — see woocommerce.php).
 */
.woocommerce ul.products li.product img,
[data-products] li.product img,
.woocommerce ul.products li.product .woocommerce-loop-product__link img {
	image-rendering: auto;
	-ms-interpolation-mode: bicubic;
}

/* --- 1.0.19: brand architecture (own-label / independent brand marks) --- */
.hemppy-brand-row {
	margin: 0 0 0.75rem;
}
.hemppy-product-brand,
.hemppy-loop-brand {
	margin: 0 0 0.35rem;
	font-size: 0.9375rem;
	letter-spacing: 0.02em;
	color: var(--hemppy-ink, #22302a);
}
.hemppy-product-brand__label {
	font-weight: 600;
	margin-right: 0.25rem;
}
.hemppy-product-brand__name {
	color: inherit;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 2px;
}
.hemppy-own-label-mark,
.hemppy-third-party-mark {
	display: inline-block;
	margin-left: 0.35rem;
	padding: 0.1rem 0.45rem;
	border-radius: 999px;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
.hemppy-own-label-mark {
	background: var(--hemppy-forest, #2f5d50);
	color: var(--hemppy-paper, #f7f3eb);
}
.hemppy-third-party-mark {
	background: transparent;
	color: var(--hemppy-sage-text, #5a6b5e);
	border: 1px solid var(--hemppy-sage, #a8b5a0);
}
/* 1.0.21: the curation mark is now "Selected by Hemppy" — badge CSS ships with
   hemppy-store >= 1.3.13 (inline style handle hemppy-store-selected). */
.hemppy-loop-brand {
	font-size: 0.8125rem;
	margin: 0.15rem 0 0.25rem;
	color: var(--hemppy-sage-text, #5a6b5e);
}
