/*
WooCommerce-specific layout: shop archive, category archives, single product.
Product CARD styling itself lives in components.css (.product-card, shared
with the homepage "Sélection du Moment") — this file only handles the
WooCommerce-controlled wrappers (ul.products, the gallery, the summary) that
core prints regardless of theme templates.
*/

.shop-shortcuts {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs);
	justify-content: center;
	margin-bottom: var(--space-lg);
}

.shop-shortcuts__link {
	padding: 6px 16px;
	font-size: var(--text-xs);
	font-weight: var(--weight-medium);
	text-transform: uppercase;
	letter-spacing: var(--tracking-wide);
	color: var(--color-text);
	text-decoration: none;
	background-color: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-pill);
	transition: border-color var(--transition-fast), color var(--transition-fast);
}

.shop-shortcuts__link:hover,
.shop-shortcuts__link:focus-visible {
	border-color: var(--color-accent);
	color: var(--color-text);
}

.shop-filter-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	padding-block: var(--space-sm);
	margin-bottom: var(--space-lg);
	border-block: 1px solid var(--color-border);
}

.shop-filter-bar__labels {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs);
}

.shop-filter-bar__chip {
	padding: 4px 12px;
	font-size: var(--text-xs);
	color: var(--color-text-muted);
	background-color: var(--color-bg-soft);
	border-radius: var(--radius-pill);
}

.shop-filter-bar__sort select {
	font-family: var(--font-sans);
	font-size: var(--text-sm);
	padding: 6px 10px;
	background-color: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-small);
}

/* WooCommerce always prints <ul class="products columns-X"> around
   content-product.php's <li> — reset its own float/column CSS and apply the
   same responsive grid as the homepage product-grid for one consistent
   card layout everywhere. */
ul.products {
	display: grid !important;
	grid-template-columns: repeat(2, 1fr) !important;
	gap: var(--space-md) var(--space-sm) !important;
	list-style: none;
	margin: 0 0 var(--space-2xl);
	padding: 0;
}

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

ul.products li.product {
	width: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	float: none !important;
	clear: none !important;
}

@media (min-width: 768px) {
	ul.products {
		grid-template-columns: repeat(3, 1fr) !important;
		gap: var(--space-lg) !important;
	}
}

@media (min-width: 1024px) {
	ul.products {
		grid-template-columns: repeat(4, 1fr) !important;
	}
}

/* Single product page */
.single-product .product_title {
	font-size: clamp(1.75rem, 3.2vw, 2.75rem);
	line-height: 1.15;
}

.product .summary {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}

.product .summary > .price {
	font-family: var(--font-serif);
	font-size: var(--text-xl);
	color: var(--color-text);
}

.product .summary .product_meta,
.product .summary .posted_in,
.product .summary .sku_wrapper {
	font-size: var(--text-xs);
	color: var(--color-text-muted);
}

.woocommerce-product-gallery {
	position: relative;
	border: 1px solid var(--color-border);
	border-radius: var(--radius-medium);
	overflow: hidden;
	background-color: var(--color-bg-soft);
}

.woocommerce-product-gallery__image img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: cover;
}

/* Galerie produit : rendre le swipe évident (dots + flèches visibles, propres
   au style Hoaji) au lieu du flexslider WooCommerce quasi invisible par
   défaut. Le slider/zoom/lightbox restent ceux de WooCommerce (wc-product-
   gallery-slider/-zoom/-lightbox, activés dans inc/woocommerce.php) — on ne
   remplace que l'habillage visuel des contrôles déjà générés par ce JS natif.

   Une seule photo : WooCommerce n'imprime alors ni .flex-control-nav ni
   .flex-direction-nav, ces règles restent donc sans effet — pas de dots/
   flèches fantômes sur les fiches à photo unique. */

.woocommerce-product-gallery .flex-viewport {
	touch-action: pan-y;
}

.woocommerce-product-gallery ol.flex-control-nav {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 14px;
	z-index: 2;
	display: flex;
	justify-content: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.woocommerce-product-gallery ol.flex-control-nav li {
	display: flex;
}

.woocommerce-product-gallery ol.flex-control-nav a {
	display: block;
	width: 8px;
	height: 8px;
	padding: 6px;
	background: transparent;
	background-clip: content-box;
	border: 1px solid rgba(17, 17, 18, 0.35);
	border-radius: 50%;
	background-color: rgba(17, 17, 18, 0.35);
	text-indent: -9999px;
	overflow: hidden;
	cursor: pointer;
	transition: background-color var(--transition-base), border-color var(--transition-base), transform var(--transition-base);
}

.woocommerce-product-gallery ol.flex-control-nav a.flex-active,
.woocommerce-product-gallery ol.flex-control-nav a:hover {
	background-color: var(--color-accent);
	border-color: var(--color-accent);
	transform: scale(1.15);
}

.woocommerce-product-gallery .flex-direction-nav {
	margin: 0;
	padding: 0;
	list-style: none;
}

.woocommerce-product-gallery .flex-direction-nav li {
	display: contents;
}

.woocommerce-product-gallery .flex-direction-nav a {
	position: absolute;
	top: 50%;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	margin-top: -19px;
	overflow: hidden;
	color: var(--color-ink);
	text-indent: -9999px;
	background-color: rgba(252, 251, 248, 0.82);
	border: 1px solid rgba(199, 164, 103, 0.55);
	border-radius: 50%;
	box-shadow: 0 2px 10px rgba(17, 17, 18, 0.14);
	opacity: 0;
	transition: opacity var(--transition-base), background-color var(--transition-base);
}

.woocommerce-product-gallery:hover .flex-direction-nav a,
.woocommerce-product-gallery .flex-direction-nav a:focus-visible {
	opacity: 1;
}

@media (hover: none) and (pointer: coarse) {
	.woocommerce-product-gallery .flex-direction-nav a {
		opacity: 0.85;
		width: 34px;
		height: 34px;
		margin-top: -17px;
	}
}

.woocommerce-product-gallery .flex-direction-nav a::after {
	content: "";
	width: 8px;
	height: 8px;
	border-right: 2px solid var(--color-ink);
	border-bottom: 2px solid var(--color-ink);
}

.woocommerce-product-gallery .flex-direction-nav a.flex-prev {
	left: 10px;
}

.woocommerce-product-gallery .flex-direction-nav a.flex-prev::after {
	transform: rotate(135deg) translate(-1px, -1px);
}

.woocommerce-product-gallery .flex-direction-nav a.flex-next {
	right: 10px;
}

.woocommerce-product-gallery .flex-direction-nav a.flex-next::after {
	transform: rotate(-45deg) translate(-1px, -1px);
}

.woocommerce-product-gallery .flex-control-thumbs {
	display: flex;
	flex-wrap: nowrap;
	gap: 8px;
	margin: 10px 0 0;
	padding: 2px;
	overflow-x: auto;
	overflow-y: hidden;
	-webkit-overflow-scrolling: touch;
	scroll-snap-type: x proximity;
	list-style: none;
}

.woocommerce-product-gallery .flex-control-thumbs::-webkit-scrollbar {
	height: 4px;
}

.woocommerce-product-gallery .flex-control-thumbs::-webkit-scrollbar-thumb {
	background-color: rgba(199, 164, 103, 0.4);
	border-radius: 2px;
}

.woocommerce-product-gallery .flex-control-thumbs li {
	flex: 0 0 auto;
	width: 64px;
	scroll-snap-align: start;
}

.woocommerce-product-gallery .flex-control-thumbs img {
	display: block;
	width: 100%;
	height: 64px;
	object-fit: cover;
	border-radius: 4px;
	border: 1px solid var(--color-border);
	cursor: pointer;
	opacity: 0.75;
	transition: opacity var(--transition-base), border-color var(--transition-base);
}

.woocommerce-product-gallery .flex-control-thumbs img.flex-active,
.woocommerce-product-gallery .flex-control-thumbs img:hover {
	opacity: 1;
	border-color: var(--color-accent);
}

@media (prefers-reduced-motion: reduce) {
	.woocommerce-product-gallery ol.flex-control-nav a,
	.woocommerce-product-gallery .flex-direction-nav a,
	.woocommerce-product-gallery .flex-control-thumbs img {
		transition: none;
	}
}

.woocommerce-tabs .panel {
	padding-top: var(--space-md);
}

/* Attributes table ("Informations complémentaires") — only ever populated
   with confirmed values (see inc/woocommerce.php), so it's safe to show
   plainly; just keep it visually quiet. */
table.woocommerce-product-attributes {
	width: 100%;
	border-collapse: collapse;
}

table.woocommerce-product-attributes th,
table.woocommerce-product-attributes td {
	padding: 10px 0;
	font-size: var(--text-sm);
	text-align: left;
	border-bottom: 1px solid var(--color-border);
}

table.woocommerce-product-attributes th {
	width: 30%;
	font-weight: var(--weight-medium);
	color: var(--color-text-muted);
}

.related.products {
	margin-top: var(--space-2xl);
	padding-top: var(--space-2xl);
	border-top: 1px solid var(--color-border);
}

.related.products > h2 {
	margin-bottom: var(--space-lg);
	text-align: center;
}

@media (max-width: 767px) {
	.woocommerce div.product div.images,
	.woocommerce div.product div.summary {
		width: 100%;
		float: none;
	}
}

.woocommerce-breadcrumb {
	width: 100%;
	max-width: var(--container-main);
	margin: 0 auto;
	padding: var(--space-sm) var(--space-sm) 0;
	font-size: var(--text-xs);
	color: var(--color-text-muted);
}

/* ------------------------------------------------------------------
   Neutralise la palette par défaut de WooCommerce (lavande #e9e6ed,
   violet #816f98, bleu des notices) : tout passe en ivoire / champagne.
   ------------------------------------------------------------------ */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt {
	background-color: var(--color-accent);
	color: var(--color-ink);
	border-radius: var(--radius-small);
	font-weight: var(--weight-semibold);
}

.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 {
	background-color: var(--color-accent-light);
	color: var(--color-ink);
}

.woocommerce a.button.button--outline,
.woocommerce a.button.button--outline-inverse {
	background-color: transparent;
	color: var(--color-text);
	border: 1px solid var(--color-text);
}

.woocommerce a.button.button--outline:hover,
.woocommerce a.button.button--outline:focus-visible {
	background-color: var(--color-accent-soft);
	border-color: var(--color-accent);
	color: var(--color-text);
}

.woocommerce nav.woocommerce-pagination ul,
.woocommerce nav.woocommerce-pagination ul li {
	border-color: var(--color-border);
}

.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
	min-width: 2.5em;
	color: var(--color-text);
}

.woocommerce nav.woocommerce-pagination ul li span.current,
.woocommerce nav.woocommerce-pagination ul li a:hover,
.woocommerce nav.woocommerce-pagination ul li a:focus {
	background-color: var(--color-accent-soft);
	color: var(--color-text);
	box-shadow: inset 0 -2px 0 var(--color-accent);
}

.woocommerce-info,
.woocommerce-message,
.woocommerce-noreviews,
p.no-comments {
	background-color: var(--color-surface);
	border-top-color: var(--color-accent);
	color: var(--color-text);
}

.woocommerce-info::before,
.woocommerce-message::before {
	color: var(--color-accent);
}

.woocommerce span.onsale {
	background-color: var(--color-accent);
	color: var(--color-ink);
}

.woocommerce .star-rating span::before,
.woocommerce p.stars a {
	color: var(--color-accent);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li {
	background-color: var(--color-bg-soft);
	border-color: var(--color-border);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active {
	background-color: var(--color-surface);
	box-shadow: inset 0 2px 0 var(--color-accent);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	color: var(--color-text);
}

.single-product .woocommerce-breadcrumb {
	padding-inline: 0;
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after {
	border-color: var(--color-border);
	box-shadow: none;
}

/* Sécurité anti-débordement horizontal (image de zoom de la galerie). */
.single-product div.product {
	overflow-x: clip;
}


/* ==========================================================================
   Fiche produit : caractéristiques + certificat (0.9.31)
   ========================================================================== */
.hoaji-specs {
	margin: var(--space-sm) 0;
}

.hoaji-specs__title {
	margin: 0 0 0.4rem;
	font-family: var(--font-sans);
	font-size: var(--text-xs);
	font-weight: var(--weight-semibold);
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--color-focus);
}

.hoaji-specs__list {
	margin: 0;
	border-top: 1px solid rgba(199, 164, 103, 0.4);
}

.hoaji-specs__row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--space-sm);
	padding: 0.7rem 0;
	border-bottom: 1px solid rgba(199, 164, 103, 0.22);
}

.hoaji-specs__row dt {
	font-size: var(--text-xs);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--color-text-soft);
}

.hoaji-specs__row dd {
	margin: 0;
	font-family: var(--font-serif);
	font-size: var(--text-lg);
	font-weight: var(--weight-semibold);
	text-align: right;
	color: var(--color-text);
}

.hoaji-cert {
	display: flex;
	align-items: flex-start;
	gap: 0.85rem;
	margin: var(--space-sm) 0;
	padding: 1rem 1.1rem;
	background-color: var(--color-surface);
	border: 1px solid rgba(199, 164, 103, 0.4);
	border-radius: 8px;
}

.hoaji-cert__icon {
	flex-shrink: 0;
	color: var(--color-focus);
}

.hoaji-cert__icon svg {
	width: 26px;
	height: 26px;
	stroke-width: 1.2;
}

.hoaji-cert__title {
	margin: 0 0 0.15rem;
	font-family: var(--font-serif);
	font-size: var(--text-lg);
	font-weight: var(--weight-semibold);
	color: var(--color-text);
}

.hoaji-cert__text {
	margin: 0;
	font-size: var(--text-sm);
	line-height: 1.5;
	color: var(--color-text-muted);
}

.hoaji-cert__meta {
	margin: 0.6rem 0 0;
	font-size: var(--text-sm);
}

.hoaji-cert__meta div {
	display: flex;
	gap: 0.6rem;
	padding: 0.15rem 0;
}

.hoaji-cert__meta dt {
	min-width: 5.5rem;
	color: var(--color-text-soft);
}

.hoaji-cert__meta dd {
	margin: 0;
}

.hoaji-cert__image {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	margin-top: 0.7rem;
	font-size: var(--text-xs);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--color-focus);
}

.hoaji-cert__image img {
	width: 44px;
	height: 44px;
	object-fit: cover;
	border: 1px solid rgba(199, 164, 103, 0.4);
	border-radius: 4px;
}