/*
 * Pages catalogue WooCommerce (boutique + pages catégorie) : même habillage
 * visuel que les "Produits associés" de la fiche produit (voir
 * related-products.css) — image en ratio fixe avec zoom au survol, titre en
 * majuscules espacées, bouton harmonisé avec "BOOK AN APPOINTMENT".
 *
 * Contrairement aux produits associés, la grille boucle normalement sur
 * plusieurs lignes ici (potentiellement beaucoup de produits par catégorie).
 *
 * !important nécessaire : le CSS de WooCommerce définit déjà les colonnes
 * en float/pourcentage sur ul.products li.product, et l'ordre de chargement
 * des feuilles de style entre plugin/thème n'est pas garanti.
 */

.woocommerce ul.products,
.woocommerce-page ul.products {
	display: grid !important;
	grid-template-columns: repeat(4, 1fr) !important;
	gap: 48px 28px !important;
	width: 100% !important;
}

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
	width: 100% !important;
	min-width: 0 !important;
	float: none !important;
	clear: none !important;
	margin: 0 !important;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
}

/* Image : ratio fixe, recadrage cover, léger zoom au survol de la carte. */
.woocommerce ul.products li.product a,
.woocommerce-page ul.products li.product a {
	display: block;
	overflow: hidden;
}

/*
 * "video" couvre les fiches produit avec vidéo en boucle (plugin Woo Video,
 * balise <video class="wvc-loop-video">) : sans ce ciblage explicite, une
 * vidéo garde sa taille intrinsèque et fait exploser la largeur de sa
 * colonne dans la grille.
 */
.woocommerce ul.products li.product a img,
.woocommerce-page ul.products li.product a img,
.woocommerce ul.products li.product a video,
.woocommerce-page ul.products li.product a video {
	aspect-ratio: 3 / 4;
	width: 100% !important;
	height: auto !important;
	max-width: 100% !important;
	object-fit: cover !important;
	margin: 0 0 20px !important;
	transition: transform 0.5s ease;
}

.woocommerce ul.products li.product:hover a img,
.woocommerce-page ul.products li.product:hover a img,
.woocommerce ul.products li.product:hover a video,
.woocommerce-page ul.products li.product:hover a video {
	transform: scale(1.04);
}

/* Titre du produit. */
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce-page ul.products li.product .woocommerce-loop-product__title {
	font-family: 'Montserrat', sans-serif !important;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	margin: 0 0 10px;
}

/* Prix, quand affiché. */
.woocommerce ul.products li.product .price,
.woocommerce-page ul.products li.product .price {
	font-family: 'Montserrat', sans-serif !important;
	display: block;
	font-size: 14px;
	margin-bottom: 16px;
	opacity: 0.8;
}

/* Bouton, aligné en bas de carte même si les titres ont des hauteurs différentes. */
.woocommerce ul.products li.product .button,
.woocommerce-page ul.products li.product .button {
	font-family: 'Montserrat', sans-serif !important;
	margin-top: auto;
	width: 100%;
	font-size: 11px;
	letter-spacing: 0.08em;
	padding: 13px 20px !important;
	transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.woocommerce ul.products li.product .button:hover,
.woocommerce-page ul.products li.product .button:hover {
	background-color: #111 !important;
	border-color: #111 !important;
	color: #fff !important;
}

@media (max-width: 991.98px) {
	.woocommerce ul.products,
	.woocommerce-page ul.products {
		grid-template-columns: repeat(2, 1fr) !important;
	}
}

@media (max-width: 575.98px) {
	.woocommerce ul.products,
	.woocommerce-page ul.products {
		grid-template-columns: 1fr !important;
		gap: 36px !important;
	}
}
