/* ===================================================================
   MAISON LOREE — styles WooCommerce
   Boutique, fiche produit, panier, commande, compte client.
   =================================================================== */

/* -------------------------------------------------
   1. Messages WooCommerce
   ------------------------------------------------- */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce-notices-wrapper .woocommerce-message {
	list-style: none;
	margin: 0 0 28px;
	padding: 1.15em 1.5em;
	background: var(--blanc);
	border: 1px solid var(--bordure);
	border-left: 2px solid var(--champagne);
	font-size: .92rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	flex-wrap: wrap;
}
.woocommerce-error { border-left-color: var(--rouge); }
.woocommerce-error li { list-style: none; }
.woocommerce-message .button,
.woocommerce-info .button {
	background: var(--noir);
	color: var(--creme);
	padding: .72em 1.5em;
	font-size: .7rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	border: 1px solid var(--noir);
	transition: background var(--t), color var(--t);
	white-space: nowrap;
}
.woocommerce-message .button:hover,
.woocommerce-info .button:hover { background: var(--champagne); border-color: var(--champagne); color: var(--noir); }

/* -------------------------------------------------
   2. Barre d'outils de la boutique
   ------------------------------------------------- */
.boutique-barre {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	flex-wrap: wrap;
	padding-bottom: 22px;
	margin-bottom: clamp(30px, 4vw, 48px);
	border-bottom: 1px solid var(--bordure-2);
}
.woocommerce-result-count {
	margin: 0;
	font-size: .78rem;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--gris);
}
.woocommerce-ordering select {
	background: transparent;
	border: 1px solid var(--bordure-2);
	padding: .72em 2.4em .72em 1.1em;
	font-size: .78rem;
	letter-spacing: .1em;
	appearance: none;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%236f6a64' stroke-width='1.4' d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 1em center;
	cursor: pointer;
}
.woocommerce-ordering select:focus { border-color: var(--champagne); outline: none; }

/* Filtres par categorie */
.filtres-cat { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: clamp(28px, 3.6vw, 44px); }
.filtres-cat a {
	padding: .68em 1.4em;
	border: 1px solid var(--bordure-2);
	font-size: .72rem;
	letter-spacing: .17em;
	text-transform: uppercase;
	transition: all var(--t);
}
.filtres-cat a:hover { border-color: var(--champagne); color: var(--champagne-2); }
.filtres-cat a.is-actif { background: var(--noir); color: var(--creme); border-color: var(--noir); }

/* -------------------------------------------------
   3. Grille de produits
   ------------------------------------------------- */
ul.products {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: clamp(20px, 2.6vw, 40px);
}
ul.products.columns-4 { grid-template-columns: repeat(4, 1fr); }
ul.products.columns-2 { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 1024px) { ul.products, ul.products.columns-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px)  { ul.products, ul.products.columns-4, ul.products.columns-2 { grid-template-columns: 1fr; } }

ul.products li.product { position: relative; display: flex; flex-direction: column; }
ul.products li.product::before, ul.products li.product::after { display: none; }

.produit-media {
	position: relative;
	overflow: hidden;
	background: var(--creme-2);
	aspect-ratio: 4/5;
	margin-bottom: 18px;
	display: block;
}
.produit-media img {
	width: 100%; height: 100%;
	object-fit: cover;
	transition: transform 1s cubic-bezier(.22,.61,.36,1), opacity var(--t);
}
li.product:hover .produit-media img { transform: scale(1.06); }

/* Deuxieme image au survol */
.produit-media__alt {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity .6s ease;
}
li.product:hover .produit-media__alt { opacity: 1; }

/* Etiquettes */
.produit-etiq {
	position: absolute;
	top: 14px; left: 14px;
	z-index: 3;
	display: flex;
	flex-direction: column;
	gap: 7px;
	align-items: flex-start;
}
.produit-etiq span {
	background: var(--noir);
	color: var(--creme);
	padding: .48em 1em;
	font-size: .62rem;
	font-weight: 500;
	letter-spacing: .2em;
	text-transform: uppercase;
	line-height: 1;
}
.produit-etiq .etiq--promo { background: var(--champagne); color: var(--noir); }
.produit-etiq .etiq--rupture { background: var(--gris); }

/* Bouton d'ajout qui apparait au survol */
.produit-action {
	position: absolute;
	left: 12px; right: 12px; bottom: 12px;
	z-index: 3;
	opacity: 0;
	transform: translateY(12px);
	transition: opacity var(--t), transform var(--t);
}
li.product:hover .produit-action { opacity: 1; transform: translateY(0); }
@media (hover: none) { .produit-action { opacity: 1; transform: none; } }

.produit-action .button,
.produit-action .added_to_cart {
	display: block;
	width: 100%;
	background: var(--blanc);
	color: var(--noir);
	border: 1px solid var(--blanc);
	padding: 1em;
	font-size: .7rem;
	font-weight: 500;
	letter-spacing: .2em;
	text-transform: uppercase;
	text-align: center;
	transition: background var(--t), color var(--t), border-color var(--t);
}
.produit-action .button:hover,
.produit-action .added_to_cart:hover { background: var(--champagne); border-color: var(--champagne); }
.produit-action .button.loading { opacity: .65; }
.produit-action .added_to_cart { margin-top: 8px; background: var(--noir); color: var(--creme); border-color: var(--noir); }

.produit-infos { display: flex; flex-direction: column; gap: 7px; }
.produit-cat { font-size: .66rem; letter-spacing: .22em; text-transform: uppercase; color: var(--champagne-2); }
ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--serif);
	font-size: clamp(1.02rem, 1.35vw, 1.2rem);
	font-weight: 400;
	line-height: 1.3;
	margin: 0;
	padding: 0;
	transition: color var(--t);
}
li.product:hover .woocommerce-loop-product__title { color: var(--champagne-2); }

.price, ul.products li.product .price {
	font-family: var(--sans);
	font-size: .98rem;
	font-weight: 500;
	color: var(--noir);
	margin: 0;
	display: flex;
	align-items: baseline;
	gap: .6em;
	flex-wrap: wrap;
}
.price del { color: var(--gris-2); font-weight: 300; text-decoration: line-through; opacity: .8; }
.price ins { text-decoration: none; color: var(--rouge); font-weight: 500; }

/* Note en etoiles */
.star-rating {
	display: inline-block;
	position: relative;
	width: 5.4em;
	height: 1em;
	overflow: hidden;
	font-size: .74rem;
	line-height: 1;
	font-family: var(--sans);
	letter-spacing: .1em;
	color: var(--champagne);
}
.star-rating::before { content: '\2605\2605\2605\2605\2605'; color: var(--bordure); position: absolute; left: 0; top: 0; }
.star-rating span { position: absolute; left: 0; top: 0; overflow: hidden; padding-top: 1.5em; }
.star-rating span::before { content: '\2605\2605\2605\2605\2605'; position: absolute; left: 0; top: 0; color: var(--champagne); }
.produit-note { display: flex; align-items: center; gap: 9px; font-size: .76rem; color: var(--gris); }

/* -------------------------------------------------
   4. Fiche produit
   ------------------------------------------------- */
.produit-single { display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(34px, 5vw, 80px); align-items: start; }
@media (max-width: 900px) { .produit-single { grid-template-columns: 1fr; } }

.woocommerce-product-gallery { position: relative; }
.woocommerce-product-gallery__wrapper { margin: 0; }
.woocommerce-product-gallery__image img { width: 100%; aspect-ratio: 4/5; object-fit: cover; }
.woocommerce-product-gallery .flex-control-thumbs {
	list-style: none;
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 10px;
	margin: 12px 0 0;
	padding: 0;
}
.woocommerce-product-gallery .flex-control-thumbs li { cursor: pointer; }
.woocommerce-product-gallery .flex-control-thumbs img {
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	opacity: .55;
	transition: opacity var(--t);
}
.woocommerce-product-gallery .flex-control-thumbs img.flex-active,
.woocommerce-product-gallery .flex-control-thumbs img:hover { opacity: 1; }
.woocommerce-product-gallery__trigger {
	position: absolute;
	top: 14px; right: 14px;
	z-index: 5;
	width: 42px; height: 42px;
	background: var(--blanc);
	border-radius: 50%;
	display: grid;
	place-items: center;
	font-size: 0;
	box-shadow: var(--ombre);
}
.woocommerce-product-gallery__trigger::after {
	content: '';
	width: 15px; height: 15px;
	border: 1.4px solid var(--noir);
	border-radius: 50%;
	box-shadow: 6px 6px 0 -4px var(--noir);
	transform: translate(-2px,-2px);
}

.summary .product_title {
	font-family: var(--serif);
	font-size: clamp(1.85rem, 3.2vw, 2.7rem);
	line-height: 1.12;
	margin: .25em 0 .45em;
}
.summary .price { font-size: 1.42rem; margin-bottom: 1.1em; }
.summary .woocommerce-product-details__short-description { color: var(--gris); line-height: 1.8; margin-bottom: 1.8em; }
.summary .woocommerce-product-rating { display: flex; align-items: center; gap: 12px; margin-bottom: 1.3em; font-size: .8rem; }
.summary .woocommerce-review-link { color: var(--gris); border-bottom: 1px solid var(--bordure); }

/* Variantes (longueur, couleur, texture) */
.variations { width: 100%; border-collapse: collapse; margin-bottom: 1.4em; }
.variations tr { display: block; margin-bottom: 20px; }
.variations th, .variations td { display: block; text-align: left; padding: 0; border: 0; }
.variations th label {
	font-size: .7rem;
	font-weight: 500;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--gris);
	margin-bottom: 10px;
	display: block;
}
.variations select {
	width: 100%;
	background: var(--blanc);
	border: 1px solid var(--bordure-2);
	padding: .95em 2.6em .95em 1.1em;
	font-size: .95rem;
	appearance: none;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%236f6a64' stroke-width='1.4' d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 1.1em center;
	cursor: pointer;
}
.variations select:focus { border-color: var(--champagne); outline: none; }
.reset_variations {
	font-size: .72rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--gris);
	border-bottom: 1px solid var(--bordure);
	display: inline-block;
	margin-top: 8px;
}
.woocommerce-variation-price { margin-bottom: 1.1em; }

/* Quantite + ajout au panier */
form.cart { display: flex; gap: 12px; align-items: stretch; flex-wrap: wrap; margin-bottom: 1.8em; }
form.cart.variations_form { display: block; }
form.cart.variations_form .woocommerce-variation-add-to-cart { display: flex; gap: 12px; flex-wrap: wrap; }

.quantity { display: inline-flex; align-items: center; border: 1px solid var(--bordure-2); background: var(--blanc); }
.quantity .qte-btn { width: 44px; height: 100%; min-height: 54px; display: grid; place-items: center; font-size: 1.1rem; color: var(--gris); transition: color var(--t); }
.quantity .qte-btn:hover { color: var(--champagne-2); }
.quantity input.qty {
	width: 48px;
	min-height: 54px;
	border: 0;
	text-align: center;
	font-size: .98rem;
	background: transparent;
	-moz-appearance: textfield;
}
.quantity input.qty::-webkit-outer-spin-button,
.quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.single_add_to_cart_button {
	flex: 1 1 220px;
	min-height: 54px;
	background: var(--noir);
	color: var(--creme);
	border: 1px solid var(--noir);
	padding: 1em 2.2em;
	font-size: .76rem;
	font-weight: 500;
	letter-spacing: .22em;
	text-transform: uppercase;
	transition: background var(--t), color var(--t), border-color var(--t);
}
.single_add_to_cart_button:hover { background: var(--champagne); border-color: var(--champagne); color: var(--noir); }
.single_add_to_cart_button.disabled { opacity: .45; cursor: not-allowed; }

/* Reassurance sous le bouton */
.produit-garanties { list-style: none; margin: 0 0 1.8em; padding: 0; display: grid; gap: 11px; }
.produit-garanties li { display: flex; gap: 12px; align-items: center; font-size: .88rem; color: var(--gris); }
.produit-garanties svg { width: 16px; height: 16px; flex: 0 0 16px; stroke: var(--champagne-2); fill: none; stroke-width: 1.5; }

.product_meta { font-size: .78rem; color: var(--gris); padding-top: 1.5em; border-top: 1px solid var(--bordure-2); display: grid; gap: 7px; letter-spacing: .05em; }
.product_meta a:hover { color: var(--champagne-2); }

/* Onglets */
.woocommerce-tabs { margin-top: clamp(56px, 7vw, 96px); }
.woocommerce-tabs ul.tabs {
	list-style: none;
	margin: 0 0 34px;
	padding: 0;
	display: flex;
	gap: clamp(18px, 3vw, 44px);
	border-bottom: 1px solid var(--bordure-2);
	flex-wrap: wrap;
}
.woocommerce-tabs ul.tabs li a {
	display: block;
	padding: 0 0 16px;
	font-size: .76rem;
	font-weight: 500;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--gris);
	position: relative;
}
.woocommerce-tabs ul.tabs li a::after {
	content: '';
	position: absolute;
	left: 0; bottom: -1px;
	width: 100%; height: 1px;
	background: var(--champagne);
	transform: scaleX(0);
	transition: transform var(--t);
}
.woocommerce-tabs ul.tabs li.active a { color: var(--noir); }
.woocommerce-tabs ul.tabs li.active a::after { transform: scaleX(1); }
.woocommerce-Tabs-panel { max-width: 78ch; line-height: 1.85; color: var(--noir-2); }
.woocommerce-Tabs-panel h2 { display: none; }
.woocommerce-Tabs-panel table.shop_attributes { width: 100%; border-collapse: collapse; }
.woocommerce-Tabs-panel table.shop_attributes th,
.woocommerce-Tabs-panel table.shop_attributes td { border-bottom: 1px solid var(--bordure-2); padding: 13px 0; text-align: left; font-size: .93rem; }
.woocommerce-Tabs-panel table.shop_attributes th { width: 220px; font-weight: 500; letter-spacing: .08em; }
.woocommerce-Tabs-panel table.shop_attributes td p { margin: 0; }

/* Avis produit */
#reviews .commentlist { list-style: none; margin: 0 0 40px; padding: 0; display: grid; gap: 26px; }
#reviews .comment_container { display: flex; gap: 18px; align-items: flex-start; }
#reviews .comment_container img { width: 52px; height: 52px; border-radius: 50%; }
#reviews .comment-text { flex: 1; border-bottom: 1px solid var(--bordure-2); padding-bottom: 24px; }
#reviews .woocommerce-review__author { font-weight: 500; letter-spacing: .08em; }
#reviews .woocommerce-review__published-date { font-size: .78rem; color: var(--gris-2); margin-left: 8px; }
#reviews .comment-form { display: grid; gap: 16px; max-width: 680px; }
#reviews .comment-form input[type="text"],
#reviews .comment-form input[type="email"],
#reviews .comment-form textarea {
	width: 100%;
	background: var(--blanc);
	border: 1px solid var(--bordure-2);
	padding: .95em 1.1em;
	font-size: .95rem;
}
#reviews .comment-form label { font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; color: var(--gris); display: block; margin-bottom: 7px; }
#reviews .comment-form .submit {
	background: var(--noir);
	color: var(--creme);
	border: 1px solid var(--noir);
	padding: 1em 2.4em;
	font-size: .74rem;
	letter-spacing: .22em;
	text-transform: uppercase;
	justify-self: start;
	transition: background var(--t), color var(--t);
}
#reviews .comment-form .submit:hover { background: var(--champagne); color: var(--noir); border-color: var(--champagne); }
.comment-form-rating p.stars a { color: var(--champagne); font-size: 1.15rem; }

/* Produits associes */
.related, .upsells { margin-top: clamp(60px, 8vw, 110px); }
.related > h2, .upsells > h2 {
	font-family: var(--serif);
	font-size: clamp(1.6rem, 2.8vw, 2.3rem);
	margin-bottom: clamp(28px, 3.6vw, 44px);
	text-align: center;
}

/* -------------------------------------------------
   5. PANIER
   Grille 2 colonnes stylee explicitement : WooCommerce
   ne la garantit pas selon les versions.
   ------------------------------------------------- */
.panier-layout { display: grid; grid-template-columns: 1.6fr 1fr; gap: clamp(30px, 4vw, 60px); align-items: start; }
@media (max-width: 950px) { .panier-layout { grid-template-columns: 1fr; } }

.woocommerce-cart-form { min-width: 0; }
table.shop_table {
	width: 100%;
	border-collapse: collapse;
	font-size: .95rem;
}
table.shop_table th {
	text-align: left;
	padding: 0 14px 16px 0;
	border-bottom: 1px solid var(--bordure-2);
	font-size: .68rem;
	font-weight: 500;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--gris);
}
table.shop_table td { padding: 22px 14px 22px 0; border-bottom: 1px solid var(--bordure-2); vertical-align: middle; }
table.shop_table td:last-child, table.shop_table th:last-child { padding-right: 0; text-align: right; }

td.product-remove { width: 34px; padding-right: 0; }
td.product-remove a.remove {
	display: grid;
	place-items: center;
	width: 28px; height: 28px;
	border: 1px solid var(--bordure-2);
	border-radius: 50%;
	color: var(--gris);
	font-size: 1rem;
	line-height: 1;
	transition: all var(--t);
}
td.product-remove a.remove:hover { border-color: var(--rouge); color: var(--rouge); }

td.product-thumbnail { width: 96px; }
td.product-thumbnail img { width: 88px; height: 110px; object-fit: cover; }
td.product-name a { font-family: var(--serif); font-size: 1.06rem; }
td.product-name a:hover { color: var(--champagne-2); }
td.product-name .variation {
	margin: 6px 0 0;
	font-size: .78rem;
	color: var(--gris);
	display: flex;
	gap: 14px;
	flex-wrap: wrap;
	list-style: none;
	padding: 0;
}
td.product-name .variation dt { font-weight: 500; }
td.product-name .variation dd { margin: 0; }
td.product-quantity .quantity { border: 1px solid var(--bordure-2); }
td.product-quantity .quantity input.qty { min-height: 44px; width: 44px; }
td.product-quantity .quantity .qte-btn { min-height: 44px; width: 36px; }
td.product-subtotal { font-weight: 500; }

.actions { padding-top: 26px !important; border-bottom: 0 !important; }
.actions .coupon { display: flex; gap: 10px; float: left; flex-wrap: wrap; }
.actions .coupon input[type="text"] {
	background: var(--blanc);
	border: 1px solid var(--bordure-2);
	padding: .9em 1.1em;
	font-size: .88rem;
	min-width: 190px;
}
.actions .coupon .button,
.actions > .button {
	background: transparent;
	border: 1px solid var(--noir);
	color: var(--noir);
	padding: .95em 1.8em;
	font-size: .7rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	transition: all var(--t);
}
.actions .coupon .button:hover,
.actions > .button:hover { background: var(--noir); color: var(--creme); }
.actions > .button { float: right; }
.actions::after { content: ''; display: table; clear: both; }
.actions > .button[disabled] { opacity: .4; cursor: not-allowed; }

/* Encadre des totaux */
.cart_totals, .panier-resume {
	background: var(--blanc);
	border: 1px solid var(--bordure);
	padding: clamp(24px, 3vw, 36px);
	position: sticky;
	top: 110px;
}
.cart_totals h2, .panier-resume h2 {
	font-family: var(--serif);
	font-size: 1.35rem;
	margin-bottom: 1.1em;
	padding-bottom: .7em;
	border-bottom: 1px solid var(--bordure-2);
}
.cart_totals table.shop_table { font-size: .93rem; }
.cart_totals table.shop_table th,
.cart_totals table.shop_table td {
	padding: 14px 0;
	border-bottom: 1px solid var(--bordure-2);
	text-transform: none;
	letter-spacing: 0;
	font-size: .93rem;
	color: var(--noir);
}
.cart_totals table.shop_table th { font-weight: 400; color: var(--gris); }
.cart_totals table.shop_table td { text-align: right; }
.cart_totals tr.order-total th,
.cart_totals tr.order-total td { border-bottom: 0; padding-top: 20px; font-size: 1.12rem; font-weight: 500; }
.cart_totals tr.order-total td { color: var(--noir); }
.cart_totals .woocommerce-shipping-destination { font-size: .8rem; color: var(--gris); }
.cart_totals .shipping-calculator-button { color: var(--champagne-2); border-bottom: 1px solid var(--bordure); font-size: .82rem; }

.wc-proceed-to-checkout { margin-top: 22px; }
.wc-proceed-to-checkout .checkout-button {
	display: block;
	width: 100%;
	background: var(--noir);
	color: var(--creme);
	border: 1px solid var(--noir);
	padding: 1.15em;
	text-align: center;
	font-size: .76rem;
	font-weight: 500;
	letter-spacing: .22em;
	text-transform: uppercase;
	transition: background var(--t), color var(--t), border-color var(--t);
}
.wc-proceed-to-checkout .checkout-button:hover { background: var(--champagne); border-color: var(--champagne); color: var(--noir); }

/* Panier vide */
.cart-empty, .wc-empty-cart-message { text-align: center; }
.wc-empty-cart-message .cart-empty {
	font-family: var(--serif);
	font-size: clamp(1.5rem, 3vw, 2.1rem);
	margin-bottom: 1em;
	padding: 0;
	border: 0;
	background: none;
	display: block;
}
.return-to-shop { text-align: center; margin-top: 26px; }
.return-to-shop .button {
	display: inline-block;
	background: var(--noir);
	color: var(--creme);
	border: 1px solid var(--noir);
	padding: 1.05em 2.6em;
	font-size: .74rem;
	letter-spacing: .22em;
	text-transform: uppercase;
	transition: background var(--t), color var(--t), border-color var(--t);
}
.return-to-shop .button:hover { background: var(--champagne); border-color: var(--champagne); color: var(--noir); }

/* Panier vide : suggestions */
.panier-vide-suggestions { margin-top: clamp(50px, 7vw, 90px); }

/* -------------------------------------------------
   6. COMMANDE (checkout)
   Grille .col2-set stylee explicitement (cf. panier).
   ------------------------------------------------- */
.woocommerce-checkout .col2-set,
.woocommerce-account .col2-set,
form.checkout .col2-set {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: clamp(24px, 3.4vw, 46px);
	width: 100%;
}
.col2-set .col-1, .col2-set .col-2 { width: 100%; float: none; min-width: 0; }
@media (max-width: 780px) {
	.woocommerce-checkout .col2-set,
	.woocommerce-account .col2-set,
	form.checkout .col2-set { grid-template-columns: 1fr; }
}

form.checkout { display: grid; grid-template-columns: 1.35fr 1fr; gap: clamp(30px, 4vw, 60px); align-items: start; }
form.checkout #customer_details { min-width: 0; }
form.checkout #order_review_heading,
form.checkout #order_review { grid-column: 2; }
form.checkout #customer_details { grid-column: 1; grid-row: 1 / span 2; }
@media (max-width: 950px) {
	form.checkout { grid-template-columns: 1fr; }
	form.checkout #customer_details,
	form.checkout #order_review_heading,
	form.checkout #order_review { grid-column: 1; grid-row: auto; }
}

.woocommerce-billing-fields h3,
.woocommerce-shipping-fields h3,
.woocommerce-additional-fields h3,
#order_review_heading {
	font-family: var(--serif);
	font-size: 1.35rem;
	margin-bottom: 1.1em;
	padding-bottom: .7em;
	border-bottom: 1px solid var(--bordure-2);
}

/* Champs de formulaire WooCommerce */
.woocommerce form .form-row { display: block; margin-bottom: 18px; padding: 0; }
.woocommerce form .form-row label,
.woocommerce-page form .form-row label {
	display: block;
	font-size: .7rem;
	font-weight: 500;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--gris);
	margin-bottom: 8px;
}
.woocommerce form .form-row label .required { color: var(--rouge); text-decoration: none; border: 0; }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.select2-container .select2-selection--single {
	width: 100%;
	background: var(--blanc);
	border: 1px solid var(--bordure-2);
	padding: .95em 1.1em;
	font-size: .95rem;
	font-family: var(--sans);
	height: auto;
	line-height: 1.5;
	transition: border-color var(--t);
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus { border-color: var(--champagne); outline: none; }
.woocommerce form .form-row textarea { min-height: 120px; resize: vertical; }
.woocommerce form .form-row.woocommerce-invalid input.input-text { border-color: var(--rouge); }
.woocommerce form .form-row.woocommerce-validated input.input-text { border-color: rgba(74,107,82,.5); }

/* Demi-largeurs : non garanties par WooCommerce, on les impose. */
.woocommerce form .form-row-first,
.woocommerce form .form-row-last {
	display: inline-block;
	width: 48.6%;
	vertical-align: top;
}
.woocommerce form .form-row-first { margin-right: 2.4%; }
.woocommerce form .form-row-wide { width: 100%; display: block; }
@media (max-width: 560px) {
	.woocommerce form .form-row-first,
	.woocommerce form .form-row-last { display: block; width: 100%; margin-right: 0; }
}

.select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 1.5; padding: 0; color: var(--noir); }
.select2-container--default .select2-selection--single .select2-selection__arrow { top: 50%; transform: translateY(-50%); right: 12px; }
.select2-dropdown { border-color: var(--bordure); }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--champagne); color: var(--noir); }

/* Recapitulatif de commande */
#order_review {
	background: var(--blanc);
	border: 1px solid var(--bordure);
	padding: clamp(24px, 3vw, 34px);
	position: sticky;
	top: 110px;
}
#order_review table.shop_table th,
#order_review table.shop_table td {
	padding: 13px 0;
	font-size: .92rem;
	letter-spacing: 0;
	text-transform: none;
	color: var(--noir);
}
#order_review table.shop_table thead th { font-size: .68rem; letter-spacing: .2em; text-transform: uppercase; color: var(--gris); }
#order_review td.product-total, #order_review th.product-total { text-align: right; }
#order_review tr.order-total th, #order_review tr.order-total td { font-size: 1.1rem; font-weight: 500; border-bottom: 0; padding-top: 18px; }
#order_review .product-name strong.product-quantity { color: var(--gris); font-weight: 400; }

/* Moyens de paiement */
.woocommerce-checkout #payment { background: transparent; border-radius: 0; margin-top: 24px; }
.woocommerce-checkout #payment ul.payment_methods {
	list-style: none;
	margin: 0 0 20px;
	padding: 0 0 20px;
	border-bottom: 1px solid var(--bordure-2);
	display: grid;
	gap: 12px;
}
.woocommerce-checkout #payment ul.payment_methods li {
	border: 1px solid var(--bordure-2);
	padding: 16px 18px;
	transition: border-color var(--t);
}
.woocommerce-checkout #payment ul.payment_methods li:hover { border-color: var(--champagne); }
.woocommerce-checkout #payment ul.payment_methods li label {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-size: .92rem;
	font-weight: 500;
	letter-spacing: .04em;
	text-transform: none;
	color: var(--noir);
	margin: 0;
	cursor: pointer;
}
.woocommerce-checkout #payment ul.payment_methods li input[type="radio"] { accent-color: var(--champagne-2); width: 16px; height: 16px; }
.woocommerce-checkout #payment div.payment_box {
	background: var(--creme-2);
	margin: 12px 0 0;
	padding: 14px 16px;
	font-size: .87rem;
	color: var(--gris);
	line-height: 1.65;
	border-left: 2px solid var(--champagne);
}
.woocommerce-checkout #payment div.payment_box::before { display: none; }
.woocommerce-checkout #payment div.payment_box p:last-child { margin-bottom: 0; }

#payment .woocommerce-privacy-policy-text { font-size: .82rem; color: var(--gris); line-height: 1.65; margin-bottom: 16px; }
#payment .woocommerce-terms-and-conditions-wrapper { margin-bottom: 18px; }
#payment .woocommerce-form__label-for-checkbox { display: flex; gap: 10px; align-items: flex-start; font-size: .86rem; text-transform: none; letter-spacing: 0; color: var(--noir); }
#payment .woocommerce-form__label-for-checkbox input { margin-top: 4px; accent-color: var(--champagne-2); }

#place_order {
	width: 100%;
	background: var(--noir);
	color: var(--creme);
	border: 1px solid var(--noir);
	padding: 1.2em;
	font-size: .78rem;
	font-weight: 500;
	letter-spacing: .22em;
	text-transform: uppercase;
	transition: background var(--t), color var(--t), border-color var(--t);
}
#place_order:hover { background: var(--champagne); border-color: var(--champagne); color: var(--noir); }

.woocommerce-form-coupon-toggle, .woocommerce-form-login-toggle { margin-bottom: 20px; }
.checkout_coupon, .woocommerce-form-login {
	border: 1px solid var(--bordure);
	padding: 22px;
	margin-bottom: 24px;
	background: var(--blanc);
}
.checkout_coupon .button, .woocommerce-form-login .button {
	background: var(--noir);
	color: var(--creme);
	border: 1px solid var(--noir);
	padding: .95em 2em;
	font-size: .72rem;
	letter-spacing: .2em;
	text-transform: uppercase;
}
.checkout_coupon .button:hover, .woocommerce-form-login .button:hover { background: var(--champagne); color: var(--noir); border-color: var(--champagne); }

/* Etapes du tunnel */
.tunnel-etapes {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: clamp(12px, 3vw, 34px);
	margin-bottom: clamp(34px, 4.4vw, 56px);
	flex-wrap: wrap;
}
.tunnel-etape {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: .72rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--gris-2);
}
.tunnel-etape__num {
	width: 28px; height: 28px;
	border: 1px solid var(--bordure-2);
	border-radius: 50%;
	display: grid; place-items: center;
	font-size: .72rem;
	letter-spacing: 0;
}
.tunnel-etape.is-actif { color: var(--noir); }
.tunnel-etape.is-actif .tunnel-etape__num { background: var(--noir); color: var(--creme); border-color: var(--noir); }
.tunnel-etape.is-fait .tunnel-etape__num { background: var(--champagne); color: var(--noir); border-color: var(--champagne); }
.tunnel-sep { width: clamp(20px, 5vw, 54px); height: 1px; background: var(--bordure-2); }

/* Confirmation de commande */
.woocommerce-order { max-width: 860px; margin-inline: auto; }
.woocommerce-thankyou-order-received {
	font-family: var(--serif);
	font-size: clamp(1.6rem, 3vw, 2.2rem);
	text-align: center;
	background: none;
	border: 0;
	padding: 0;
	margin-bottom: 1.4em;
	display: block;
}
ul.woocommerce-order-overview {
	list-style: none;
	margin: 0 0 40px;
	padding: 26px;
	border: 1px solid var(--bordure);
	background: var(--blanc);
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 20px;
}
ul.woocommerce-order-overview li {
	font-size: .68rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--gris);
	border: 0;
}
ul.woocommerce-order-overview li strong {
	display: block;
	margin-top: 8px;
	font-family: var(--serif);
	font-size: 1.05rem;
	letter-spacing: 0;
	text-transform: none;
	color: var(--noir);
	font-weight: 400;
}

/* -------------------------------------------------
   7. Compte client
   ------------------------------------------------- */
.woocommerce-account .woocommerce { display: grid; grid-template-columns: 250px 1fr; gap: clamp(28px, 4vw, 56px); align-items: start; }
.woocommerce-account.logged-out .woocommerce { display: block; max-width: 520px; margin-inline: auto; }
@media (max-width: 820px) { .woocommerce-account .woocommerce { grid-template-columns: 1fr; } }

.woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--bordure-2); }
.woocommerce-MyAccount-navigation li { border-bottom: 1px solid var(--bordure-2); }
.woocommerce-MyAccount-navigation li a {
	display: block;
	padding: 15px 0;
	font-size: .74rem;
	font-weight: 500;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--gris);
}
.woocommerce-MyAccount-navigation li a:hover,
.woocommerce-MyAccount-navigation li.is-active a { color: var(--champagne-2); }
.woocommerce-MyAccount-content { min-width: 0; }
.woocommerce-MyAccount-content p { line-height: 1.8; }
.woocommerce-MyAccount-content .button,
.woocommerce-Button {
	display: inline-block;
	background: var(--noir);
	color: var(--creme);
	border: 1px solid var(--noir);
	padding: .95em 2em;
	font-size: .72rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	transition: background var(--t), color var(--t), border-color var(--t);
}
.woocommerce-MyAccount-content .button:hover,
.woocommerce-Button:hover { background: var(--champagne); color: var(--noir); border-color: var(--champagne); }

.woocommerce-form-login, .woocommerce-form-register { border: 1px solid var(--bordure); padding: clamp(24px, 3.4vw, 40px); background: var(--blanc); }
.woocommerce-form-login .woocommerce-form-login__rememberme { display: flex; gap: 9px; align-items: center; font-size: .86rem; text-transform: none; letter-spacing: 0; color: var(--gris); }
.woocommerce-LostPassword { margin-top: 14px; font-size: .84rem; }
.woocommerce-LostPassword a { color: var(--champagne-2); border-bottom: 1px solid var(--bordure); }

/* -------------------------------------------------
   8. Divers
   ------------------------------------------------- */
.woocommerce-breadcrumb {
	font-size: .72rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--gris-2);
	margin-bottom: 1.4em;
}
.woocommerce-breadcrumb a:hover { color: var(--champagne-2); }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(0,0,0,0);
	white-space: nowrap;
}

.blockUI.blockOverlay { background: var(--creme) !important; opacity: .6 !important; }

/* Message de stock */
.stock.in-stock { color: var(--vert); font-size: .84rem; }
.stock.out-of-stock { color: var(--rouge); font-size: .84rem; }

/* Guide des tailles / longueurs */
.guide-longueurs { border: 1px solid var(--bordure); padding: clamp(20px, 2.6vw, 30px); margin-bottom: 1.8em; background: var(--blanc); }
.guide-longueurs__titre { font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: var(--gris); margin-bottom: 14px; }
.guide-longueurs__echelle { display: flex; align-items: flex-end; gap: 8px; height: 92px; }
.guide-longueurs__barre { flex: 1; background: linear-gradient(to top, var(--champagne), var(--champagne-3)); position: relative; }
.guide-longueurs__barre span {
	position: absolute;
	bottom: -22px; left: 50%;
	transform: translateX(-50%);
	font-size: .66rem;
	letter-spacing: .08em;
	color: var(--gris);
	white-space: nowrap;
}
.guide-longueurs__echelle { margin-bottom: 26px; }

/* Lien qui enveloppe l'image de la carte produit */
.produit-media__lien { display: block; width: 100%; height: 100%; position: relative; }
.produit-media__lien img { width: 100%; height: 100%; object-fit: cover; }
.produit-media__alt { position: absolute; inset: 0; opacity: 0; transition: opacity .6s ease; display: block; }
li.product:hover .produit-media__alt { opacity: 1; }
.produit-media__alt img { width: 100%; height: 100%; object-fit: cover; }

/* Grille 2 colonnes de la page Panier (le shortcode ne la fournit pas) */
.woocommerce-cart:not(.panier-vide) .entry-content > .woocommerce,
.woocommerce-cart:not(.panier-vide) .contenu > .woocommerce {
	display: grid;
	grid-template-columns: 1.6fr 1fr;
	gap: clamp(30px, 4vw, 60px);
	align-items: start;
}
.woocommerce-cart .contenu > .woocommerce > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
.woocommerce-cart .cart-collaterals { width: 100%; min-width: 0; }
.woocommerce-cart .cart-collaterals::after { content: ''; display: table; clear: both; }
@media (max-width: 950px) {
	.woocommerce-cart:not(.panier-vide) .contenu > .woocommerce { grid-template-columns: 1fr; }
}
.woocommerce-cart.panier-vide .contenu { text-align: center; }

/* ===================================================================
   CORRECTIF DE GRILLE — a garder en dernier
   WooCommerce fait flotter les produits ; on neutralise pour que
   notre grille CSS reprenne la main.
   =================================================================== */
ul.products {
	display: grid !important;
	float: none !important;
	width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none !important;
}
ul.products::before, ul.products::after { display: none !important; content: none !important; }

ul.products li.product,
ul.products li.product.first,
ul.products li.product.last {
	float: none !important;
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
	clear: none !important;
	display: flex !important;
	flex-direction: column;
	text-align: left;
}
ul.products li.product::before,
ul.products li.product::after { display: none !important; content: none !important; }

/* Vignette : hauteur identique pour toutes les cartes */
.produit-media {
	width: 100%;
	aspect-ratio: 3 / 4;
	margin-bottom: 20px;
	overflow: hidden;
	position: relative;
	background: var(--creme-2);
	flex: 0 0 auto;
}
.produit-media__lien { position: absolute; inset: 0; display: block; }
.produit-media img,
.produit-media__lien img,
.produit-media__alt img {
	position: absolute;
	inset: 0;
	width: 100% !important;
	height: 100% !important;
	max-width: none;
	object-fit: cover;
	object-position: center 22%;
}

/* Bloc texte : titres et prix alignes d'une carte a l'autre */
.produit-infos {
	display: flex;
	flex-direction: column;
	gap: 8px;
	flex: 1 1 auto;
	min-width: 0;
}
.produit-cat {
	font-size: .64rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--champagne-2);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
ul.products li.product .woocommerce-loop-product__title {
	font-size: clamp(1rem, 1.25vw, 1.14rem);
	line-height: 1.32;
	margin: 0;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	min-height: 2.64em;
}
ul.products li.product .price {
	margin-top: auto;
	padding-top: 4px;
	font-size: 1rem;
}
.produit-note { min-height: 1.2em; }

/* Etiquettes plus discretes */
.produit-etiq span {
	background: rgba(13, 13, 15, .88);
	backdrop-filter: blur(4px);
	font-size: .58rem;
	letter-spacing: .18em;
	padding: .5em .9em;
}
.produit-etiq .etiq--promo { background: var(--champagne); color: var(--noir); }

/* Grille : gouttieres plus serrees, colonnes egales */
ul.products {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(18px, 2.2vw, 34px) clamp(16px, 1.8vw, 28px);
	align-items: stretch;
}
ul.products.columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
ul.products.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 1024px) {
	ul.products, ul.products.columns-4 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media (max-width: 520px) {
	ul.products, ul.products.columns-4, ul.products.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 14px; }
	ul.products li.product .woocommerce-loop-product__title { font-size: .92rem; min-height: 2.5em; }
	.produit-action { left: 8px; right: 8px; bottom: 8px; }
	.produit-action .button { padding: .8em; font-size: .62rem; letter-spacing: .12em; }
}

/* ===================================================================
   FICHE PRODUIT — enrichissements
   =================================================================== */

/* Colonne de droite qui suit le defilement sur grand ecran */
@media (min-width: 1100px) {
	.produit-single .summary {
		position: sticky;
		top: 108px;
		align-self: start;
		max-height: calc(100vh - 130px);
		overflow-y: auto;
		scrollbar-width: thin;
		padding-right: 6px;
	}
	.produit-single .summary::-webkit-scrollbar { width: 4px; }
	.produit-single .summary::-webkit-scrollbar-thumb { background: var(--bordure); }
}

/* Ligne de stock */
.stock-ligne {
	display: flex;
	align-items: center;
	gap: 9px;
	font-size: .84rem;
	color: var(--vert);
	margin: 0 0 1.1em;
	letter-spacing: .02em;
}
.pastille-stock {
	width: 7px; height: 7px;
	border-radius: 50%;
	background: var(--vert);
	flex: 0 0 7px;
	box-shadow: 0 0 0 3px rgba(74,107,82,.16);
}
.stock-ligne--bas { color: #9a6b1f; }
.stock-ligne--bas .pastille-stock { background: #c58b2a; box-shadow: 0 0 0 3px rgba(197,139,42,.18); }
.stock-ligne--rupture { color: var(--rouge); }

/* Aide au choix de la teinte */
.aide-teinte {
	display: flex;
	gap: 11px;
	align-items: flex-start;
	background: var(--creme-2);
	border-left: 2px solid var(--champagne);
	padding: 14px 16px;
	font-size: .86rem;
	line-height: 1.6;
	color: var(--gris);
	margin: 0 0 1.6em;
}
.aide-teinte svg { width: 17px; height: 17px; flex: 0 0 17px; margin-top: 2px; stroke: var(--champagne-2); fill: none; stroke-width: 1.4; }
.aide-teinte a { color: var(--noir); border-bottom: 1px solid var(--champagne); }
.aide-teinte a:hover { color: var(--champagne-2); }

/* Date de livraison estimee */
.livraison-estimee {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	border: 1px solid var(--bordure);
	padding: 15px 17px;
	margin: 0 0 1.4em;
	background: var(--blanc);
}
.livraison-estimee svg { width: 20px; height: 20px; flex: 0 0 20px; margin-top: 1px; stroke: var(--champagne-2); fill: none; stroke-width: 1.3; }
.livraison-estimee span { display: flex; flex-direction: column; gap: 3px; }
.livraison-estimee strong { font-size: .92rem; font-weight: 500; }
.livraison-estimee em { font-style: normal; font-size: .78rem; color: var(--gris); }

/* Rappel des moyens de paiement */
.produit-paiement {
	font-size: .78rem;
	color: var(--gris-2);
	text-align: center;
	margin: -.6em 0 1.6em;
	letter-spacing: .02em;
}

/* Guide des longueurs */
.guide-longueurs {
	border: 1px solid var(--bordure-2);
	padding: clamp(18px, 2.4vw, 26px);
	margin: 0 0 1.6em;
	background: var(--blanc);
}
.guide-longueurs__titre {
	font-size: .68rem;
	font-weight: 500;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--gris);
	margin: 0 0 18px;
}
.guide-longueurs__echelle {
	display: flex;
	align-items: flex-end;
	gap: 10px;
	height: 96px;
	margin-bottom: 30px;
}
.guide-longueurs__barre {
	flex: 1;
	background: var(--creme-2);
	position: relative;
	transition: background var(--t);
}
.guide-longueurs__barre.is-actif { background: linear-gradient(to top, var(--champagne-2), var(--champagne-3)); }
.guide-longueurs__barre span {
	position: absolute;
	bottom: -22px; left: 50%;
	transform: translateX(-50%);
	font-size: .64rem;
	letter-spacing: .06em;
	color: var(--gris-2);
	white-space: nowrap;
}
.guide-longueurs__barre.is-actif span { color: var(--noir); font-weight: 500; }
.guide-longueurs__note { font-size: .82rem; color: var(--gris); line-height: 1.6; margin: 0; }

/* ---- Pastilles de teinte (remplacent le menu deroulant) ---- */
.teintes { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 6px; }
.teinte {
	position: relative;
	width: 42px; height: 42px;
	border-radius: 50%;
	border: 1px solid var(--bordure-2);
	cursor: pointer;
	padding: 0;
	transition: transform var(--t), box-shadow var(--t);
	overflow: visible;
}
.teinte::after {
	content: '';
	position: absolute;
	inset: -5px;
	border-radius: 50%;
	border: 1px solid transparent;
	transition: border-color var(--t);
}
.teinte:hover { transform: scale(1.06); }
.teinte.is-actif::after { border-color: var(--champagne-2); }
.teinte.is-indispo { opacity: .3; cursor: not-allowed; }
.teinte.is-indispo::before {
	content: '';
	position: absolute;
	left: 50%; top: 50%;
	width: 130%; height: 1px;
	background: var(--noir);
	transform: translate(-50%, -50%) rotate(-45deg);
}
.teintes-libelle {
	display: flex;
	align-items: baseline;
	gap: 10px;
	margin-bottom: 12px;
}
.teintes-libelle strong {
	font-size: .7rem;
	font-weight: 500;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--gris);
}
.teintes-libelle span { font-size: .88rem; color: var(--noir); }
.teintes + .reset_variations { margin-top: 10px; }

/* Le menu deroulant d'origine reste en place pour l'accessibilite */
.variations tr.is-teinte td.value > select { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }

/* ---- Onglet Entretien ---- */
.entretien { display: grid; gap: 26px; max-width: 74ch; }
.entretien__item { display: flex; gap: 20px; align-items: flex-start; }
.entretien__num {
	font-family: var(--serif);
	font-size: 1.6rem;
	color: var(--champagne);
	line-height: 1;
	flex: 0 0 auto;
	min-width: 42px;
}
.entretien h3 { font-size: 1.05rem; margin: 0 0 .4em; }
.entretien p { font-size: .95rem; line-height: 1.75; color: var(--gris); margin: 0; }
@media (max-width: 560px) {
	.entretien__item { gap: 14px; }
	.entretien__num { font-size: 1.25rem; min-width: 32px; }
}

/* ---- Barre d'achat fixe sur mobile ---- */
.barre-achat {
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 70;
	display: none;
	align-items: center;
	gap: 14px;
	padding: 12px var(--gouttiere);
	background: rgba(250, 247, 242, .97);
	backdrop-filter: blur(12px);
	border-top: 1px solid var(--bordure);
	box-shadow: 0 -10px 30px -18px rgba(13,13,15,.5);
	transform: translateY(100%);
	transition: transform .4s cubic-bezier(.22,.61,.36,1);
}
.barre-achat.is-visible { transform: translateY(0); }
.barre-achat__info { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.barre-achat__nom {
	font-family: var(--serif);
	font-size: .92rem;
	line-height: 1.2;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.barre-achat__prix { font-size: .86rem; font-weight: 500; }
.barre-achat__prix .price { font-size: inherit; }
.barre-achat__btn {
	flex: 0 0 auto;
	background: var(--noir);
	color: var(--creme);
	border: 1px solid var(--noir);
	padding: .95em 1.7em;
	font-size: .7rem;
	font-weight: 500;
	letter-spacing: .18em;
	text-transform: uppercase;
	transition: background var(--t), color var(--t);
}
.barre-achat__btn:hover { background: var(--champagne); color: var(--noir); border-color: var(--champagne); }

@media (max-width: 900px) {
	.barre-achat { display: flex; }
	body.single-product { padding-bottom: 72px; }
}

/* ===================================================================
   CORRECTIF — mise en page de la fiche produit
   WooCommerce enveloppe la fiche dans "div.product", pas dans
   ".produit-single". Et comme nous avons retire woocommerce-layout.css
   (qui faisait flotter galerie et resume), il faut fournir la grille.
   =================================================================== */
.single-product div.product {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
	column-gap: clamp(32px, 4.5vw, 76px);
	row-gap: 0;
	align-items: start;
}

.single-product div.product > .woocommerce-breadcrumb { grid-column: 1 / -1; margin-bottom: 1.6em; }
.single-product div.product > .woocommerce-product-gallery { grid-column: 1; min-width: 0; }
.single-product div.product > .summary { grid-column: 2; min-width: 0; margin: 0; }
.single-product div.product > .woocommerce-tabs,
.single-product div.product > .related,
.single-product div.product > .up-sells,
.single-product div.product > .upsells,
.single-product div.product > .woocommerce-product-details__short-description { grid-column: 1 / -1; }

/* Rien ne doit flotter ni deborder */
.single-product div.product > * { float: none !important; width: auto !important; max-width: 100%; }
.single-product div.product::before,
.single-product div.product::after { display: none !important; content: none !important; }

/* Colonne de droite qui suit le defilement */
@media (min-width: 1100px) {
	.single-product div.product > .summary {
		position: sticky;
		top: 104px;
	}
}

@media (max-width: 980px) {
	.single-product div.product { grid-template-columns: 1fr; row-gap: clamp(28px, 4vw, 44px); }
	.single-product div.product > .woocommerce-product-gallery,
	.single-product div.product > .summary { grid-column: 1; }
	.single-product div.product > .summary { position: static; }
}

/* La galerie ne doit jamais depasser sa colonne */
.woocommerce-product-gallery { max-width: 100%; overflow: hidden; }
.woocommerce-product-gallery .flex-viewport { max-width: 100%; }
.woocommerce-product-gallery img { max-width: 100%; height: auto; }

/* Securite anti-debordement global */
.woocommerce-tabs, .related, .up-sells { max-width: 100%; overflow: hidden; }

/* ===================================================================
   GALERIE PRODUIT — pile verticale, sans carrousel
   Aucune largeur calculee en JavaScript : la mise en page tient
   meme si les images arrivent en retard.
   =================================================================== */
.woocommerce-product-gallery { position: relative; }
.woocommerce-product-gallery__wrapper {
	display: grid;
	grid-template-columns: 1fr;
	gap: clamp(8px, 1vw, 14px);
	margin: 0;
	padding: 0;
	width: 100%;
	float: none;
}
.woocommerce-product-gallery__image {
	float: none !important;
	width: 100% !important;
	margin: 0;
	display: block;
	background: var(--creme-2);
	overflow: hidden;
}
.woocommerce-product-gallery__image a { display: block; }
.woocommerce-product-gallery__image img {
	width: 100% !important;
	height: auto;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	display: block;
	max-width: none;
}
/* La premiere image est la plus grande : c'est elle qui porte le produit. */
.woocommerce-product-gallery__image:first-child img { aspect-ratio: 4 / 5; }
.woocommerce-product-gallery__image:not(:first-child) img { aspect-ratio: 3 / 2; }

/* Les miniatures du carrousel ne servent plus a rien. */
.woocommerce-product-gallery .flex-control-nav,
.woocommerce-product-gallery .flex-control-thumbs { display: none !important; }
.woocommerce-product-gallery .flex-viewport { max-height: none !important; height: auto !important; }

/* A partir de deux images, on passe en mosaique sur grand ecran. */
@media (min-width: 1100px) {
	.woocommerce-product-gallery--columns-5 .woocommerce-product-gallery__wrapper,
	.woocommerce-product-gallery__wrapper { grid-template-columns: 1fr; }
}

/* ===================================================================
   BOUTIQUE — panneau de filtres
   =================================================================== */
.boutique-layout {
	display: grid;
	grid-template-columns: 250px minmax(0, 1fr);
	gap: clamp(28px, 3.5vw, 56px);
	align-items: start;
}
.boutique-contenu { min-width: 0; }

.filtres { position: sticky; top: 104px; }
.filtres__entete {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	padding-bottom: 14px;
	margin-bottom: 6px;
	border-bottom: 1px solid var(--bordure-2);
}
.filtres__titre {
	font-size: .72rem;
	font-weight: 500;
	letter-spacing: .24em;
	text-transform: uppercase;
}
.filtres__reset {
	font-size: .74rem;
	color: var(--champagne-2);
	border-bottom: 1px solid var(--bordure);
	white-space: nowrap;
}
.filtres__reset:hover { color: var(--noir); border-color: var(--noir); }

.filtre { border-bottom: 1px solid var(--bordure-2); }
.filtre__titre {
	width: 100%;
	text-align: left;
	padding: 15px 22px 15px 0;
	font-size: .78rem;
	font-weight: 500;
	letter-spacing: .14em;
	text-transform: uppercase;
	position: relative;
	color: var(--noir);
	display: flex;
	align-items: center;
	gap: 8px;
}
.filtre__titre::after {
	content: '';
	position: absolute;
	right: 2px; top: 50%;
	width: 8px; height: 8px;
	border-right: 1.4px solid var(--gris);
	border-bottom: 1.4px solid var(--gris);
	transform: translateY(-70%) rotate(45deg);
	transition: transform var(--t);
}
.filtre.is-ouvert .filtre__titre::after { transform: translateY(-30%) rotate(-135deg); }
.filtre__compteur {
	background: var(--champagne);
	color: var(--noir);
	font-size: .62rem;
	min-width: 17px; height: 17px;
	border-radius: 999px;
	display: grid; place-items: center;
	letter-spacing: 0;
}

.filtre__corps { max-height: 0; overflow: hidden; transition: max-height .4s cubic-bezier(.22,.61,.36,1); }
.filtre.is-ouvert .filtre__corps { max-height: 460px; overflow-y: auto; }
.filtre__corps ul { list-style: none; margin: 0; padding: 0 0 16px; display: grid; gap: 2px; }
.filtre__sous { padding: 4px 0 4px 14px !important; border-left: 1px solid var(--bordure-2); margin-left: 4px !important; }

.filtre__option {
	display: flex;
	align-items: center;
	gap: 9px;
	padding: 7px 2px;
	font-size: .88rem;
	color: var(--gris);
	transition: color var(--t);
}
.filtre__option:hover { color: var(--noir); }
.filtre__case {
	width: 15px; height: 15px;
	flex: 0 0 15px;
	border: 1px solid var(--bordure-2);
	position: relative;
	transition: all var(--t);
}
.filtre__option.is-actif { color: var(--noir); font-weight: 500; }
.filtre__option.is-actif .filtre__case { background: var(--noir); border-color: var(--noir); }
.filtre__option.is-actif .filtre__case::after {
	content: '';
	position: absolute;
	left: 4px; top: 1px;
	width: 4px; height: 8px;
	border-right: 1.6px solid var(--creme);
	border-bottom: 1.6px solid var(--creme);
	transform: rotate(45deg);
}
.filtre__nom { flex: 1; min-width: 0; }
.filtre__nb { font-size: .74rem; color: var(--gris-2); }

.filtre-prix { padding-bottom: 16px; display: grid; gap: 12px; }
.filtre-prix__champs { display: flex; align-items: center; gap: 8px; }
.filtre-prix__champs input {
	width: 100%;
	min-width: 0;
	background: var(--blanc);
	border: 1px solid var(--bordure-2);
	padding: .6em .7em;
	font-size: .86rem;
	-moz-appearance: textfield;
}
.filtre-prix__champs input::-webkit-outer-spin-button,
.filtre-prix__champs input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.filtre-prix__champs input:focus { border-color: var(--champagne); outline: none; }
.filtre-prix__champs span { color: var(--gris-2); }

/* Bouton d'ouverture sur petit ecran */
.filtres-bascule {
	display: none;
	align-items: center;
	gap: 9px;
	width: 100%;
	padding: 1em;
	margin-bottom: 20px;
	border: 1px solid var(--noir);
	font-size: .74rem;
	font-weight: 500;
	letter-spacing: .18em;
	text-transform: uppercase;
	justify-content: center;
}
.filtres-bascule svg { width: 17px; height: 17px; }

@media (max-width: 1024px) {
	.boutique-layout { grid-template-columns: 1fr; }
	.filtres-bascule { display: flex; }
	.filtres {
		position: fixed;
		inset: 0;
		z-index: 88;
		background: var(--creme);
		padding: 84px var(--gouttiere) 28px;
		overflow-y: auto;
		transform: translateX(-100%);
		transition: transform .45s cubic-bezier(.22,.61,.36,1);
	}
	.filtres.is-ouvert { transform: translateX(0); }
	.filtres__fermer {
		position: absolute;
		top: 24px; right: var(--gouttiere);
		font-size: 1.9rem;
		line-height: 1;
	}
}

/* ===================================================================
   GALERIE PRODUIT — mosaïque
   Une grande image d'ouverture, puis les vues secondaires en damier.
   La règle « dernier élément de rang pair » évite le trou disgracieux
   quand le nombre de photos ne tombe pas juste.
   =================================================================== */
.woocommerce-product-gallery__wrapper {
	grid-template-columns: 1fr 1fr;
	gap: clamp(6px, .8vw, 12px);
}
.woocommerce-product-gallery__image img { aspect-ratio: 1 / 1; }

.woocommerce-product-gallery__image:first-child { grid-column: 1 / -1; }
.woocommerce-product-gallery__image:first-child img { aspect-ratio: 4 / 5; }

.woocommerce-product-gallery__image:last-child:nth-child(even) { grid-column: 1 / -1; }
.woocommerce-product-gallery__image:last-child:nth-child(even) img { aspect-ratio: 16 / 10; }

/* Un seul visuel : il occupe toute la largeur */
.woocommerce-product-gallery__image:first-child:last-child { grid-column: 1 / -1; }

@media (max-width: 560px) {
	.woocommerce-product-gallery__wrapper { grid-template-columns: 1fr; }
	.woocommerce-product-gallery__image,
	.woocommerce-product-gallery__image:last-child:nth-child(even) { grid-column: 1 / -1; }
	.woocommerce-product-gallery__image img { aspect-ratio: 4 / 5; }
}

/* ===================================================================
   BOUTIQUE — filtres actifs rappelés au-dessus de la grille
   =================================================================== */
.filtres-actifs {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
	margin-bottom: clamp(20px, 2.4vw, 30px);
}
.filtres-actifs__label {
	font-size: .7rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--gris);
	margin-right: 4px;
}
.jeton {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: .5em .9em;
	border: 1px solid var(--bordure);
	background: var(--blanc);
	font-size: .78rem;
	transition: border-color var(--t), color var(--t);
}
.jeton:hover { border-color: var(--noir); }
.jeton__croix { font-size: 1rem; line-height: 1; color: var(--gris-2); }
.jeton:hover .jeton__croix { color: var(--rouge); }
.jeton--reset { border-style: dashed; color: var(--gris); }

/* Barre d'outils de la boutique, plus lisible */
.boutique-barre {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 18px;
	flex-wrap: wrap;
	padding-bottom: 18px;
	margin-bottom: clamp(24px, 3vw, 36px);
	border-bottom: 1px solid var(--bordure-2);
}
.woocommerce-result-count { font-size: .8rem; color: var(--gris); margin: 0; letter-spacing: .04em; text-transform: none; }

/* ===================================================================
   PANIER — correctifs de présentation (à garder après tout le reste)
   ------------------------------------------------------------------
   Quatre problèmes constatés en ligne :
   1. le bouton « Valider la commande » ressortait en violet WooCommerce
      (#7f54b3) : la règle du thème perdait en spécificité contre
      `.woocommerce a.button.alt`, plus forte ;
   2. le tableau débordait de sa colonne — `table-layout: auto` refuse
      de descendre sous la largeur mini du contenu ;
   3. le bouton « Mettre à jour le panier » désactivé gardait le gris
      par défaut de WooCommerce et passait pour un bug ;
   4. les boutons de paiement express Stripe s'empilaient sans hiérarchie
      juste sous le bouton principal.
   =================================================================== */

/* --- 1. Plus aucun violet WooCommerce nulle part ------------------- */
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt,
.woocommerce .wc-proceed-to-checkout a.checkout-button.button.alt {
	background-color: var(--noir) !important;
	border: 1px solid var(--noir) !important;
	color: var(--creme) !important;
	border-radius: 0 !important;
	text-shadow: none !important;
	font-family: var(--sans);
	font-size: .76rem;
	font-weight: 500;
	letter-spacing: .22em;
	text-transform: uppercase;
	padding: 1.15em 1.6em;
	transition: background-color var(--t), color var(--t), border-color var(--t);
}
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover,
.woocommerce .wc-proceed-to-checkout a.checkout-button.button.alt:hover {
	background-color: var(--champagne) !important;
	border-color: var(--champagne) !important;
	color: var(--noir) !important;
}

/* --- 2. Tableau du panier : largeurs maîtrisées -------------------- */
.woocommerce-cart form.woocommerce-cart-form table.shop_table {
	table-layout: fixed;
	width: 100%;
}
.woocommerce-cart form.woocommerce-cart-form th { padding-right: 10px; font-size: .62rem; letter-spacing: .12em; }
.woocommerce-cart form.woocommerce-cart-form td { padding-right: 10px; }

.woocommerce-cart form.woocommerce-cart-form th.product-remove,
.woocommerce-cart form.woocommerce-cart-form td.product-remove    { width: 42px;  padding-right: 0; }
.woocommerce-cart form.woocommerce-cart-form th.product-thumbnail,
.woocommerce-cart form.woocommerce-cart-form td.product-thumbnail { width: 88px; }
.woocommerce-cart form.woocommerce-cart-form th.product-price,
.woocommerce-cart form.woocommerce-cart-form td.product-price     { width: 88px;  text-align: right; }
.woocommerce-cart form.woocommerce-cart-form th.product-quantity,
.woocommerce-cart form.woocommerce-cart-form td.product-quantity  { width: 126px; }
.woocommerce-cart form.woocommerce-cart-form th.product-subtotal,
.woocommerce-cart form.woocommerce-cart-form td.product-subtotal  { width: 92px;  text-align: right; }

/* Les titres importés sont longs : on autorise la coupure plutôt que
   de laisser le mot pousser la colonne et déborder. */
.woocommerce-cart td.product-name { overflow-wrap: anywhere; }
.woocommerce-cart td.product-name a {
	font-size: .98rem;
	line-height: 1.4;
	display: block;
}
.woocommerce-cart td.product-thumbnail img { width: 76px; height: 95px; }

/* --- 4. Encadré des totaux et paiement express -------------------- */
.woocommerce-cart .cart_totals { background: var(--blanc); }

/* La puce d'icône WooCommerce affichait un carré vide : la police
   d'icônes vit dans woocommerce-layout.css, que le thème retire. */
.woocommerce-cart .shipping-calculator-button::after { content: '' !important; display: none !important; }
.woocommerce-cart .shipping-calculator-button { display: inline-block; }

.woocommerce-cart .shipping-calculator-form { margin-top: 14px; }
.woocommerce-cart .shipping-calculator-form .select2-container,
.woocommerce-cart .shipping-calculator-form select,
.woocommerce-cart .shipping-calculator-form input.input-text { width: 100%; font-size: .88rem; }

/* Séparateur avant les boutons Stripe, pour que l'empilement se lise
   comme un choix et non comme quatre boutons concurrents. */
.woocommerce-cart #wc-stripe-express-checkout-element:not(:empty) {
	margin-top: 22px;
	padding-top: 22px;
	border-top: 1px solid var(--bordure-2);
	position: relative;
}
.woocommerce-cart #wc-stripe-express-checkout-element:not(:empty)::before {
	content: 'ou payer en un clic';
	position: absolute;
	top: -.62em; left: 50%;
	transform: translateX(-50%);
	background: var(--blanc);
	padding: 0 14px;
	font-family: var(--sans);
	font-size: .62rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--gris-2);
	white-space: nowrap;
}
.woocommerce-cart #wc-stripe-express-checkout-element .StripeElement { margin-bottom: 10px; }

@media (max-width: 700px) {
	.woocommerce-cart .actions { justify-content: stretch; }
	.woocommerce-cart .actions .coupon,
	.woocommerce-cart .actions > .button { width: 100%; }
	.woocommerce-cart .actions .coupon input[type="text"] { flex: 1; min-width: 0; }
}

/* --- 3 bis. Ligne d'actions du panier -----------------------------
   `td.actions` porte colspan="6". Lui donner `display:flex` le sort du
   modèle de tableau : la cellule retombe à la largeur de la première
   colonne (42 px constatés) et tout se chevauche. On la laisse donc en
   table-cell et on aligne les deux blocs avec des flottants, en
   resserrant les libellés pour qu'ils tiennent sur une seule ligne.
   ------------------------------------------------------------------ */
.woocommerce-cart td.actions {
	display: table-cell !important;
	padding-top: 26px !important;
	border-bottom: 0 !important;
}
.woocommerce-cart td.actions::after { content: ''; display: table; clear: both; }

.woocommerce-cart td.actions .coupon {
	float: left;
	display: flex;
	gap: 10px;
	margin: 0;
}
.woocommerce-cart td.actions .coupon input[type="text"] {
	min-width: 0;
	width: 168px;
	padding: .85em 1em;
}
.woocommerce-cart td.actions .coupon .button,
.woocommerce-cart td.actions > .button {
	padding: .9em 1.35em;
	font-size: .66rem;
	letter-spacing: .13em;
	white-space: nowrap;
}
.woocommerce-cart td.actions > .button { float: right; margin: 0; }

/* Désactivé tant que la quantité n'a pas changé : doit se lire comme
   volontaire, pas comme un bouton cassé. Le gris lavande vient de
   woocommerce.css, d'où le !important sur la longhand. */
.woocommerce-cart td.actions > .button[disabled],
.woocommerce-cart td.actions > .button:disabled,
body.woocommerce-cart .woocommerce button.button[name="update_cart"]:disabled {
	background-color: transparent !important;
	background-image: none !important;
	border: 1px solid var(--bordure-2) !important;
	color: var(--gris-2) !important;
	opacity: 1 !important;
	cursor: default;
}

@media (max-width: 700px) {
	.woocommerce-cart td.actions .coupon,
	.woocommerce-cart td.actions > .button { float: none; width: 100%; }
	.woocommerce-cart td.actions .coupon { margin-bottom: 12px; }
	.woocommerce-cart td.actions .coupon input[type="text"] { flex: 1; width: auto; }
}

/* --- 3 ter. Suppression du bouton « Mettre à jour le panier » ------
   Le thème met déjà le panier à jour tout seul quand la quantité change
   (js/main.js, section 9). Le bouton ne servait donc qu'à afficher un
   gris lavande que même un !important ne reprenait pas — la valeur vient
   du rendu natif du contrôle désactivé. On le retire de l'affichage tout
   en le laissant dans le DOM : le script clique dessus, et il redevient
   visible si le JavaScript ne s'exécute pas.
   ------------------------------------------------------------------ */
.ml-js .woocommerce-cart td.actions > .button[name="update_cart"] { display: none; }
.ml-js .woocommerce-cart td.actions .coupon { float: none; }

/* --- 5. PANIER SUR MOBILE -----------------------------------------
   Le thème retire `woocommerce-smallscreen.css` (elle casse nos grilles),
   or c'est elle qui rendait le tableau du panier lisible sur téléphone.
   Sans remplacement, six colonnes à largeur fixe débordaient largement
   d'un écran de 375 px. On repasse donc chaque ligne en carte :
   photo à gauche, informations à droite, libellés repris de `data-title`.
   ------------------------------------------------------------------ */
@media (max-width: 640px) {

	.woocommerce-cart form.woocommerce-cart-form table.shop_table {
		table-layout: auto;
		display: block;
		border-top: 1px solid var(--bordure-2);
	}
	.woocommerce-cart form.woocommerce-cart-form thead { display: none; }
	.woocommerce-cart form.woocommerce-cart-form tbody { display: block; }

	.woocommerce-cart form.woocommerce-cart-form tr.cart_item {
		display: grid;
		grid-template-columns: 84px minmax(0, 1fr);
		grid-template-areas:
			"photo nom"
			"photo prix"
			"photo qte"
			"photo total";
		column-gap: 16px;
		row-gap: 6px;
		align-items: center;
		position: relative;
		padding: 20px 34px 20px 0;
		border-bottom: 1px solid var(--bordure-2);
	}

	/* Toutes les cellules perdent leur largeur fixe imposée plus haut. */
	.woocommerce-cart form.woocommerce-cart-form tr.cart_item > td {
		display: block;
		width: auto !important;
		padding: 0 !important;
		border: 0 !important;
		text-align: left !important;
	}

	.woocommerce-cart form.woocommerce-cart-form td.product-thumbnail {
		grid-area: photo;
		align-self: start;
	}
	.woocommerce-cart form.woocommerce-cart-form td.product-thumbnail img {
		width: 84px; height: 105px;
	}
	.woocommerce-cart form.woocommerce-cart-form td.product-name { grid-area: nom; }
	.woocommerce-cart form.woocommerce-cart-form td.product-name a { font-size: .95rem; }
	.woocommerce-cart form.woocommerce-cart-form td.product-price { grid-area: prix; }
	.woocommerce-cart form.woocommerce-cart-form td.product-quantity { grid-area: qte; }
	.woocommerce-cart form.woocommerce-cart-form td.product-subtotal { grid-area: total; }

	/* Libellé devant la valeur, sinon on ne sait plus ce qu'on lit. */
	.woocommerce-cart form.woocommerce-cart-form td.product-price::before,
	.woocommerce-cart form.woocommerce-cart-form td.product-subtotal::before {
		content: attr(data-title) ' ';
		font-size: .62rem;
		letter-spacing: .14em;
		text-transform: uppercase;
		color: var(--gris);
		margin-right: .6em;
	}
	.woocommerce-cart form.woocommerce-cart-form td.product-subtotal { font-weight: 500; }

	/* La croix passe en haut à droite de la carte. */
	.woocommerce-cart form.woocommerce-cart-form td.product-remove {
		position: absolute;
		top: 20px; right: 0;
	}

	.woocommerce-cart form.woocommerce-cart-form td.product-quantity .quantity { display: inline-flex; }

	/* Ligne d'actions : la cellule redevient un bloc, le coupon prend
	   toute la largeur. */
	.woocommerce-cart form.woocommerce-cart-form tr:not(.cart_item) { display: block; }
	.woocommerce-cart td.actions {
		display: block !important;
		width: auto !important;
		padding: 22px 0 0 !important;
	}
	.woocommerce-cart td.actions .coupon { display: flex; width: 100%; }
	.woocommerce-cart td.actions .coupon input[type="text"] { flex: 1; width: auto; min-width: 0; }

	/* Encadré des totaux : plus de position collante sur petit écran. */
	.woocommerce-cart .cart_totals { position: static; margin-top: 30px; }
}

/* En-têtes du panier sur une seule ligne : « SOUS-TOTAL » se coupait en
   deux et faisait passer toute la ligne d'en-tête de 32 à 49 px. */
.woocommerce-cart form.woocommerce-cart-form thead th { white-space: nowrap; }
.woocommerce-cart form.woocommerce-cart-form thead th.product-subtotal {
	font-size: .58rem;
	letter-spacing: .08em;
}

/* ===================================================================
   COMMANDER — colonne de droite compacte
   ------------------------------------------------------------------
   `form.checkout` était une grille 2 colonnes où seuls #customer_details,
   #order_review_heading et #order_review étaient placés explicitement.
   Or Stripe injecte DEUX enfants supplémentaires en tête du formulaire
   (le bloc de paiement express et le séparateur « OU »). Placés
   automatiquement, ils occupaient les lignes 1 et 2 — dont la hauteur
   était dictée par le formulaire de facturation à gauche (883 px sur
   deux lignes). Résultat : 475 px de vide entre le « OU » et le
   récapitulatif, et le formulaire de carte bancaire renvoyé à 2 300 px
   du haut. Le client concluait qu'aucun paiement par carte n'existait.

   On repasse en flottants : la colonne de droite empile ses blocs les
   uns sous les autres quel que soit leur nombre, sans dépendre de la
   hauteur de la colonne de gauche.
   =================================================================== */
.woocommerce-checkout form.checkout {
	display: block;
	grid-template-columns: none;
}
.woocommerce-checkout form.checkout::after { content: ''; display: table; clear: both; }

.woocommerce-checkout form.checkout > #customer_details {
	float: left;
	width: 56%;
	grid-column: auto;
	grid-row: auto;
}
.woocommerce-checkout form.checkout > *:not(#customer_details):not(.woocommerce-notices-wrapper) {
	float: right;
	clear: right;
	width: 40%;
	grid-column: auto;
	grid-row: auto;
}
.woocommerce-checkout form.checkout > .woocommerce-notices-wrapper {
	float: none;
	clear: both;
	width: 100%;
}

/* Le séparateur « OU » de Stripe : centré et discret, il annonce le
   formulaire de carte qui suit immédiatement. */
.woocommerce-checkout form.checkout > p:has(> span),
.woocommerce-checkout #wc-stripe-express-checkout-button-separator {
	text-align: center;
	margin: 18px 0;
	font-family: var(--sans);
	font-size: .66rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--gris-2);
}

.woocommerce-checkout form.checkout > #order_review_heading { margin-top: 26px; }

@media (max-width: 950px) {
	.woocommerce-checkout form.checkout > #customer_details,
	.woocommerce-checkout form.checkout > *:not(.woocommerce-notices-wrapper) {
		float: none;
		width: 100%;
	}
	.woocommerce-checkout form.checkout > #order_review_heading { margin-top: 34px; }
}
