/* Panier et tunnel de commande (AGRI-71). Variables : modules/charte/charte.css. Mise en page seulement. */

.woocommerce-cart .entry-title, .woocommerce-checkout .entry-title { font-family: var(--ab-police-titre); font-weight: 600; color: var(--ab-encre); font-size: clamp(28px, 2vw + 18px, 40px); }
.woocommerce-cart .woocommerce, .woocommerce-checkout .woocommerce { font-family: var(--ab-police-texte); color: var(--ab-texte); font-size: var(--ab-taille-texte); }

/* ---------- Panier ---------- */
/* UXC-01 (revue du 20/10/2026) : structure Astra = .woocommerce > div (rangée souple) > [ .ast-cart-non-sticky > form ] + .cart-collaterals */
@media (min-width: 1025px) {
	.woocommerce-cart .woocommerce > div:has(> .cart-collaterals) { display: grid !important; grid-template-columns: minmax(0, 1fr) 380px; gap: var(--ab-espace-3); align-items: start; }
	.woocommerce-cart .woocommerce > div:has(> .cart-collaterals) > * { width: auto !important; max-width: none !important; float: none !important; margin: 0 !important; flex: none !important; }
	.woocommerce-cart form.woocommerce-cart-form { width: 100% !important; float: none !important; }
	.woocommerce-cart .cart-collaterals { position: sticky; top: 84px; }
	.woocommerce-cart .cart-collaterals .cart_totals { width: 100% !important; float: none !important; }
}
}
.woocommerce-cart table.shop_table { border: 0 !important; border-radius: 0; border-collapse: separate; border-spacing: 0 .75rem; }
.woocommerce-cart table.shop_table thead { display: none; }
.woocommerce-cart table.shop_table tr.cart_item { background: var(--ab-blanc); }
.woocommerce-cart table.shop_table tr.cart_item td { border: 0 !important; border-top: 1px solid var(--ab-ligne) !important; border-bottom: 1px solid var(--ab-ligne) !important; padding: .875rem .5rem !important; vertical-align: middle; }
.woocommerce-cart table.shop_table tr.cart_item td:first-child { border-left: 1px solid var(--ab-ligne) !important; border-radius: var(--ab-rayon-carte) 0 0 var(--ab-rayon-carte); }
.woocommerce-cart table.shop_table tr.cart_item td:last-child { border-right: 1px solid var(--ab-ligne) !important; border-radius: 0 var(--ab-rayon-carte) var(--ab-rayon-carte) 0; }
.woocommerce-cart td.product-name a { color: var(--ab-encre); font-weight: 600; text-decoration: none; }
.woocommerce-cart td.product-name dl.variation, .woocommerce-cart td.product-name .wc-item-meta { font-size: 14px; color: var(--ab-texte); margin: .25rem 0 0; }
.woocommerce-cart td.product-thumbnail img { width: 72px !important; height: 72px; object-fit: cover; border-radius: var(--ab-rayon); }
.woocommerce-cart td.product-subtotal { font-weight: 700; color: var(--ab-encre); }
.woocommerce-cart a.remove { display: inline-grid !important; place-items: center; width: var(--ab-cible-serree) !important; height: var(--ab-cible-serree) !important; border-radius: var(--ab-rayon) !important; color: var(--ab-texte) !important; font-size: 22px !important; border: 0 !important; }
.woocommerce-cart a.remove:hover { background: var(--ab-fond) !important; color: var(--ab-alerte) !important; }
.woocommerce-cart .quantity { display: inline-flex; border: 1px solid var(--ab-bordure-champ); border-radius: var(--ab-rayon); overflow: hidden; }
.woocommerce-cart .quantity :is(.minus, .plus, .qty) { min-height: var(--ab-cible-serree); min-width: var(--ab-cible-serree); border: 0 !important; font-size: var(--ab-taille-texte); }
.woocommerce-cart .quantity :is(.minus, .plus) { background: var(--ab-fond); color: var(--ab-encre); }

/* Téléphone : chaque article devient une carte (image | nom, prix, quantité | total), sans étiquettes « Produit : » */
@media (max-width: 921px) {
	.woocommerce-cart table.shop_table, .woocommerce-cart table.shop_table tbody { display: block; }
	.woocommerce-cart table.shop_table tr.cart_item { display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; grid-template-areas: "img nom suppr" "img prix prix" "qte qte total"; gap: .25rem .75rem; padding: .875rem; margin-bottom: .75rem; border: 1px solid var(--ab-ligne); border-radius: var(--ab-rayon-carte); }
	.woocommerce-cart table.shop_table tr.cart_item td { display: block; width: auto !important; min-width: 0; border: 0 !important; padding: 0 !important; text-align: left !important; background: none !important; }
	.woocommerce-cart table.shop_table tr.cart_item td::before { display: none !important; }
	.woocommerce-cart td.product-thumbnail { grid-area: img; display: block !important; }
	.woocommerce-cart td.product-name { grid-area: nom; }
	.woocommerce-cart td.product-remove { grid-area: suppr; justify-self: end; margin: -8px -4px 0 0; }
	.woocommerce-cart td.product-price { grid-area: prix; font-size: 14px; }
	.woocommerce-cart td.product-quantity { grid-area: qte; }
	.woocommerce-cart td.product-subtotal { grid-area: total; align-self: center; justify-self: end; white-space: nowrap; text-align: right !important; }
	.woocommerce-cart table.shop_table tr.cart_item { grid-template-columns: 72px minmax(0, 1fr) max-content; }
	.woocommerce-cart table.shop_table tr:not(.cart_item) { display: block; }
	.woocommerce-cart table.shop_table tr.cart_item td:is(:first-child, :last-child) { border: 0 !important; border-radius: 0 !important; }
	.woocommerce-cart td.product-quantity { margin-top: .5rem; }
}
.woocommerce-cart td.actions { padding: .75rem 0 !important; border: 0 !important; }
.woocommerce-cart td.actions .coupon { display: flex; gap: .5rem; flex-wrap: wrap; }
.woocommerce-cart td.actions :is(input.input-text, .button) { min-height: var(--ab-cible-serree); border-radius: var(--ab-rayon) !important; font-size: var(--ab-taille-texte); }
.woocommerce-cart td.actions button[name="update_cart"] { background: var(--ab-blanc) !important; color: var(--ab-vert-fonce) !important; border: 2px solid var(--ab-vert-fonce) !important; }

/* Récapitulatif */
.woocommerce-cart .cart_totals { padding: var(--ab-espace-3); background: var(--ab-fond); border-radius: var(--ab-rayon-carte); border: 0; }
.woocommerce-cart .cart_totals h2 { margin: 0 0 var(--ab-espace-1) !important; padding: 0 !important; background: none !important; border: 0 !important; font-family: var(--ab-police-titre); font-weight: 600; font-size: 22px; color: var(--ab-encre); }
.woocommerce-cart .cart_totals table.shop_table { border-spacing: 0; background: none; }
.woocommerce-cart .cart_totals table.shop_table :is(th, td) { display: block; width: 100% !important; padding: .5rem 0 !important; border: 0 !important; background: none !important; text-align: left !important; }
.woocommerce-cart .cart_totals table.shop_table tr { display: grid; grid-template-columns: auto 1fr; gap: .5rem; border-bottom: 1px solid var(--ab-ligne); }
.woocommerce-cart .cart_totals table.shop_table td { text-align: right !important; }
.woocommerce-cart .cart_totals table.shop_table td::before { display: none !important; }
.woocommerce-cart .cart_totals tr.order-total :is(th, td) { font-size: 20px; color: var(--ab-encre); font-weight: 700; }
.woocommerce-cart .cart_totals tr.order-total td small { display: block; font-size: 13px; font-weight: 400; color: var(--ab-texte); }
.woocommerce-cart .woocommerce-shipping-methods { margin: 0; padding: 0; list-style: none; }
.woocommerce-cart .woocommerce-shipping-destination, .woocommerce-cart .shipping-calculator-button { font-size: 14px; }
.woocommerce-cart .shipping-calculator-button { color: var(--ab-vert-fonce) !important; }

/* Boutons de fin de panier : « Valider la commande » d'abord, en principal ; paiements express ensuite, en secondaire */
.woocommerce-cart .wc-proceed-to-checkout { display: flex; flex-direction: column; gap: .5rem; padding: var(--ab-espace-2) 0 0 !important; }
.woocommerce-cart .wc-proceed-to-checkout .checkout-button { order: -1; display: flex !important; align-items: center; justify-content: center; min-height: 52px; margin: 0 !important; background: var(--ab-vert) !important; color: var(--ab-encre) !important; border: 0 !important; border-radius: var(--ab-rayon) !important; font: 700 17px/1.2 var(--ab-police-texte) !important; }
.woocommerce-cart .wc-proceed-to-checkout .checkout-button:hover { background: var(--ab-vert-survol) !important; }
.woocommerce-cart .wc-proceed-to-checkout #cpsw-payment-request-wrapper { min-width: 0 !important; width: 100%; margin: 0 !important; }
.woocommerce-cart .wc-proceed-to-checkout .ppcp-messages { display: none !important; }
.woocommerce-cart #cpsw-payment-request-separator { text-align: center; font-size: 14px; color: var(--ab-texte); }

/* Réassurance */
.ab-reassurance { margin: var(--ab-espace-2) 0 0; padding: 0; list-style: none; font-size: 14px; color: var(--ab-texte); }
.ab-reassurance li { position: relative; padding: .25rem 0 .25rem 1.5rem; }
.ab-reassurance li::before { content: "✓"; position: absolute; left: 0; color: var(--ab-vert-fonce); font-weight: 700; }

/* ---------- Tunnel de commande (Astra, deux étapes) ---------- */
.woocommerce-checkout :is(#cpsw-payment-request-title, #cpsw-payment-request-tagline) { display: none !important; } /* « Express Checkout » en anglais */
.woocommerce-checkout #cpsw-payment-request-wrapper { min-width: 0 !important; margin-bottom: var(--ab-espace-2) !important; }
.woocommerce-checkout .ast-checkout-fields-wrapper h3, .woocommerce-checkout #order_review_heading, .woocommerce-checkout .woocommerce-billing-fields > h3 { font-family: var(--ab-police-titre) !important; font-weight: 600 !important; color: var(--ab-encre) !important; font-size: 20px !important; border: 0 !important; }
.woocommerce-checkout :is(input.input-text, select, textarea, .select2-selection) { min-height: var(--ab-cible) !important; font-size: var(--ab-taille-texte) !important; border: 1px solid var(--ab-bordure-champ) !important; border-radius: var(--ab-rayon) !important; background: var(--ab-blanc) !important; color: var(--ab-encre) !important; box-shadow: none !important; }
.woocommerce-checkout .select2-selection__rendered { line-height: 46px !important; }
.woocommerce-checkout :is(input.input-text, select, textarea):focus { border-color: var(--ab-vert-fonce) !important; outline: 2px solid var(--ab-vert-fonce) !important; outline-offset: 0; }
.woocommerce-checkout .form-row label { font-size: 14px !important; color: var(--ab-encre) !important; }
.woocommerce-checkout .woocommerce-invalid :is(input.input-text, select) { border-color: var(--ab-alerte) !important; }
.woocommerce-checkout .ast-checkout-step-header, .woocommerce-checkout .ast-woo-two-step-checkout-wrapper .steps { font-family: var(--ab-police-texte); }

/* Récapitulatif de commande et moyens de paiement */
.woocommerce-checkout #order_review { background: var(--ab-fond) !important; border-radius: var(--ab-rayon-carte) !important; border: 0 !important; padding: var(--ab-espace-2) !important; }
@media (min-width: 1025px) { .woocommerce-checkout .ast-order-wrap { position: sticky; top: 84px; align-self: start; } }
.woocommerce-checkout #order_review table.shop_table { border: 0 !important; background: none !important; }
.woocommerce-checkout #order_review table.shop_table :is(th, td) { border-left: 0 !important; border-right: 0 !important; border-color: var(--ab-ligne) !important; background: none !important; }
.woocommerce-checkout #order_review .order-total :is(th, td) { font-size: 19px; color: var(--ab-encre); font-weight: 700; }
.woocommerce-checkout #payment { background: none !important; }
.woocommerce-checkout ul.wc_payment_methods { padding: 0 !important; border: 0 !important; display: grid; gap: .5rem; }
.woocommerce-checkout ul.wc_payment_methods > li { padding: .75rem .875rem !important; background: var(--ab-blanc); border: 1px solid var(--ab-ligne); border-radius: var(--ab-rayon); list-style: none; }
.woocommerce-checkout ul.wc_payment_methods > li:has(input:checked) { border: 2px solid var(--ab-vert-fonce); }
.woocommerce-checkout ul.wc_payment_methods > li > label { display: inline-flex; align-items: center; gap: .5rem; min-height: var(--ab-cible-serree); font-weight: 600; color: var(--ab-encre); cursor: pointer; }
.woocommerce-checkout .payment_box { background: var(--ab-fond) !important; border-radius: var(--ab-rayon) !important; color: var(--ab-texte) !important; font-size: 14px; }
.woocommerce-checkout .payment_box::before { display: none !important; }
.woocommerce-checkout #place_order { width: 100%; min-height: 52px; background: var(--ab-vert) !important; color: var(--ab-encre) !important; border: 0 !important; border-radius: var(--ab-rayon) !important; font: 700 17px/1.2 var(--ab-police-texte) !important; }
.woocommerce-checkout #place_order:hover { background: var(--ab-vert-survol) !important; }
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper { font-size: 14px; }
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper a { color: var(--ab-vert-fonce); }

/* Code promo replié (lien discret, champ ouvert à la demande) */
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info { background: none !important; border: 0 !important; padding: 0 !important; color: var(--ab-texte) !important; font-size: 14px; }
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info::before { display: none !important; }
.woocommerce-checkout .woocommerce-form-coupon-toggle a { color: var(--ab-vert-fonce) !important; font-weight: 600; }

/* ---- Demandes d'Édouard du 20/10/2026 23 h 30 ---- */
/* Bouton Stripe express du paiement rogné (24 px de haut : hauteur maximale en style en ligne) */
.woocommerce-checkout .cpsw_express_checkout_button { height: auto !important; max-height: none !important; min-height: var(--ab-cible) !important; white-space: normal !important; line-height: 1.2 !important; padding: 12px 20px !important; }
/* « Vous avez déjà un compte ? » : une phrase, puis une action visible */
.woocommerce-checkout .woocommerce-billing-fields__customer-login-label { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; margin: .5rem 0 1rem; font-weight: 400 !important; font-size: 15px !important; color: var(--ab-texte); }
.woocommerce-checkout #ast-customer-login-url { display: inline-flex; align-items: center; min-height: var(--ab-cible-serree); padding: 0 1rem; border: 2px solid var(--ab-vert-fonce); border-radius: var(--ab-rayon); color: var(--ab-vert-fonce) !important; font-weight: 600; text-decoration: none; }
.woocommerce-checkout #ast-customer-login-url:hover { background: var(--ab-fond); }
.woocommerce-checkout :is(.ast-customer-login-section, .woocommerce-form-login) .form-row { width: 100% !important; float: none !important; }
.woocommerce-checkout :is(.ast-customer-login-section, .woocommerce-form-login) :is(.lost_password, .woocommerce-LostPassword) { display: block; width: 100%; margin-top: .5rem; text-align: left; font-size: 14px; }
.woocommerce-checkout :is(.ast-customer-login-section, .woocommerce-form-login) button[type="submit"] { width: 100%; min-height: var(--ab-cible); background: var(--ab-vert) !important; color: var(--ab-encre) !important; border-radius: var(--ab-rayon) !important; font-weight: 700; }
/* Code postal et ville : deux champs de 101 px, libellé tronqué → pleine largeur sur téléphone */
@media (max-width: 600px) {
	.woocommerce-checkout :is(#billing_postcode_field, #billing_city_field, #shipping_postcode_field, #shipping_city_field) { width: 100% !important; float: none !important; margin-right: 0 !important; }
}
.ab-tva-mention { font-weight: 400; color: var(--ab-texte); }
/* Page du compte : formulaire de connexion */
.woocommerce-account .woocommerce-form-login :is(input.input-text) { min-height: var(--ab-cible) !important; font-size: var(--ab-taille-texte) !important; border: 1px solid var(--ab-bordure-champ) !important; border-radius: var(--ab-rayon) !important; }
.woocommerce-account .woocommerce-form-login button[type="submit"] { min-height: var(--ab-cible); padding: 0 1.5rem; background: var(--ab-vert) !important; color: var(--ab-encre) !important; border-radius: var(--ab-rayon) !important; font-weight: 700; }
.woocommerce-account .ast-woo-account-form-link { color: var(--ab-vert-fonce) !important; font-weight: 600; }

/* ---- AGRI-97 (20/10/2026) : recalcul du panier sans voile. Astra Pro (modern-cart) rend le voile de blockUI opaque avec
 * une image de squelette : tout le panier disparaît le temps du calcul. Voile rendu transparent (il bloque toujours les
 * clics, donc pas de double envoi) ; la ligne modifiée et les montants pâlissent ; barre de progression en haut du bloc. */
.woocommerce-cart :is(.cart_totals, .woocommerce-cart-form) .blockUI.blockOverlay { background: transparent !important; border: 0 !important; opacity: 1 !important; }
.woocommerce-cart :is(.cart_totals, .woocommerce-cart-form) .blockUI.blockOverlay::before { display: none !important; }
.woocommerce-cart :is(.cart_totals, .woocommerce-cart-form).processing { position: relative; }
.woocommerce-cart :is(.cart_totals, .woocommerce-cart-form).processing::after {
	content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; z-index: 95; border-radius: 3px;
	background: linear-gradient(90deg, transparent, var(--ab-vert), transparent); background-size: 50% 100%; background-repeat: no-repeat;
	animation: ab-progression 1s linear infinite;
}
@keyframes ab-progression { from { background-position: -50% 0; } to { background-position: 150% 0; } }
.woocommerce-cart .cart_totals.processing :is(.amount, .woocommerce-shipping-totals td) { opacity: .45; transition: opacity .2s; }
.woocommerce-cart .ab-en-cours :is(.product-subtotal, .product-price) .amount { opacity: .45; transition: opacity .2s; }
.woocommerce-cart .ab-en-cours.ab-retrait { opacity: .4; transition: opacity .2s; }
@media (prefers-reduced-motion: reduce) { .woocommerce-cart :is(.cart_totals, .woocommerce-cart-form).processing::after { animation: none; background: var(--ab-vert); opacity: .5; } }

/* AGRI-122 (21/10/2026, capture d'Édouard) : connexion au paiement — « Mot de passe perdu ? » était coincé à droite du
 * bouton, sur trois lignes. Bouton pleine largeur, lien en dessous, centré, cible de 44 px. */
.woocommerce-checkout .ast-customer-login-actions { display: flex !important; flex-direction: column; align-items: stretch; gap: .5rem; margin-top: .75rem; }
.woocommerce-checkout .ast-customer-login-actions .ast-customer-login-section__login-button { width: 100% !important; min-height: var(--ab-cible); margin: 0 !important; background: var(--ab-vert) !important; color: var(--ab-encre) !important; border: 0 !important; border-radius: var(--ab-rayon) !important; font: 700 16px/1.2 var(--ab-police-texte) !important; }
.woocommerce-checkout .ast-customer-login-lost-password-url { display: inline-flex !important; align-self: center; align-items: center; min-height: var(--ab-cible-serree); padding: 0 .5rem; float: none !important; margin: 0 !important; color: var(--ab-vert-fonce) !important; font-size: 15px; text-decoration: underline; white-space: nowrap; }

/* AGRI-132 (21/10/2026, capture d'Édouard) : mentions sous l'article au panier (« Palier suivant », « Livraison ») — la
 * liste dt/dd d'Astra se mettait en colonnes et le texte se coupait lettre par lettre ; aussi UXD-15 « Précomma/nde ».
 * Libellé puis texte, l'un sous l'autre, coupure aux mots seulement. */
.woocommerce-cart-form dl.variation, .woocommerce-checkout-review-order dl.variation { display: block !important; margin: .25rem 0 0; }
.woocommerce-cart-form dl.variation :is(dt, dd), .woocommerce-checkout-review-order dl.variation :is(dt, dd) {
	display: block !important; float: none !important; width: auto !important; min-width: 0; margin: 0 !important; padding: 0 !important;
	word-break: normal !important; overflow-wrap: break-word; hyphens: manual; font-size: 14px; line-height: 1.4;
}
.woocommerce-cart-form dl.variation dt, .woocommerce-checkout-review-order dl.variation dt { font-weight: 600; color: var(--ab-encre); }
.woocommerce-cart-form dl.variation dd + dt { margin-top: .25rem !important; }
.woocommerce-cart-form dl.variation dd p, .woocommerce-checkout-review-order dl.variation dd p { margin: 0; }
/* AGRI-132 suite : la 3e colonne de la carte mobile prenait la largeur du sous-total le plus long (montants barrés d'un
 * palier) et écrasait le nom à 62 px. Colonne fixe pour le bouton ✕ ; sous-total sur sa propre ligne, sous la quantité. */
@media (max-width: 921px) {
	.woocommerce-cart table.shop_table tr.cart_item { grid-template-columns: 72px minmax(0, 1fr) 48px !important; grid-template-areas: "img nom suppr" "img prix prix" "qte qte qte" "total total total" !important; }
	.woocommerce-cart td.product-subtotal { justify-self: end; white-space: normal; padding-top: .25rem !important; }
}

/* AGRI-136 (UXE-05, UXE-11, UXE-15) : adresse en pleine largeur sur téléphone (champs de 122-137 px, saisie coupée) ;
 * récapitulatif de l'étape 2 : la colonne du nom ne descend plus à 33 px ; cases à cocher et œil du mot de passe tactiles. */
@media (max-width: 600px) {
	.woocommerce-checkout :is(#billing_address_1_field, #billing_address_2_field, #shipping_address_1_field, #shipping_address_2_field) { float: none !important; width: 100% !important; margin-right: 0 !important; }
	.woocommerce-checkout-review-order-table .ast-product-image { display: none !important; }
	.woocommerce-checkout-review-order-table :is(.ast-product-name, .product-name) { width: auto !important; min-width: 0; word-break: normal !important; overflow-wrap: break-word; }
	.woocommerce-checkout :is(.ast-order-wrap, form.checkout) { width: 100%; max-width: 100%; }
}
.woocommerce-checkout input[type="checkbox"], .woocommerce-account input[type="checkbox"] { width: 22px; height: 22px; accent-color: var(--ab-vert-fonce); vertical-align: middle; }
.woocommerce :is(.show-password-input) { min-width: 44px; min-height: 44px; }

/* ---- AGRI-138 étape 6 (21/10/2026) : paiement standard de WooCommerce (Astra Pro retiré), une page, charte ----
 * Ordinateur : coordonnées à gauche, « Votre commande » et paiement à droite, qui suivent le défilement.
 * Téléphone : une colonne ; récapitulatif lisible. */
.woocommerce-checkout form.checkout { font-family: var(--ab-police-texte); }
.woocommerce-checkout form.checkout :is(h3, #order_review_heading) { font: 600 21px/1.25 var(--ab-police-titre); color: var(--ab-encre); margin: 0 0 .75rem; }
.woocommerce-checkout #customer_details :is(.col-1, .col-2) { float: none !important; width: 100% !important; max-width: none !important; padding: 0 !important; }
.woocommerce-checkout #customer_details .col-2 { margin-top: var(--ab-espace-2); }
@media (min-width: 992px) {
	.woocommerce-checkout form.checkout { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(340px, 1fr); grid-template-rows: auto 1fr; column-gap: 40px; align-items: start; }
	.woocommerce-checkout form.checkout > #customer_details { grid-column: 1; grid-row: 1 / span 2; float: none !important; width: auto !important; margin: 0 !important; }
	.woocommerce-checkout form.checkout > #order_review_heading { grid-column: 2; grid-row: 1; float: none !important; width: auto !important; margin: 0 0 .75rem !important; }
	.woocommerce-checkout form.checkout > #order_review { grid-column: 2; grid-row: 2; float: none !important; width: auto !important; position: sticky; top: 96px; }
}
.woocommerce-checkout #order_review { background: var(--ab-fond); border: 1px solid var(--ab-ligne); border-radius: var(--ab-rayon-carte); padding: 18px; }
.woocommerce-checkout #order_review table.shop_table { width: 100%; border: 0 !important; background: none; margin: 0 0 1rem; font-size: 15px; }
.woocommerce-checkout #order_review table.shop_table :is(th, td) { padding: 10px 6px !important; border: 0 !important; border-bottom: 1px solid var(--ab-ligne) !important; background: none !important; vertical-align: top; }
.woocommerce-checkout #order_review table.shop_table td.product-name { color: var(--ab-encre); font-weight: 600; word-break: normal; overflow-wrap: break-word; }
.woocommerce-checkout #order_review table.shop_table :is(td.product-total, tfoot td) { text-align: right; }
.woocommerce-checkout #order_review .order-total :is(th, td) { font-size: 18px; color: var(--ab-encre); }
.woocommerce-checkout #payment { background: none !important; border-radius: 0; }
.woocommerce-checkout #payment ul.payment_methods { padding: 0 !important; border: 0 !important; }
.woocommerce-checkout #payment .place-order { padding: 0 !important; }
.woocommerce-checkout #place_order { width: 100%; min-height: 52px; border-radius: var(--ab-rayon) !important; font: 700 17px/1.2 var(--ab-police-texte) !important; }
.woocommerce-checkout #cpsw-payment-request-separator { text-align: center !important; width: 100%; margin: .5rem 0 1rem !important; color: var(--ab-texte); font-size: 14px; }
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info, .woocommerce-checkout .woocommerce-form-login-toggle .woocommerce-info { background: var(--ab-fond) !important; border: 0 !important; border-left: 4px solid var(--ab-vert) !important; border-radius: var(--ab-rayon); color: var(--ab-encre) !important; padding: 12px 16px !important; font-size: 15px; }
.woocommerce-checkout .woocommerce-info a { color: var(--ab-vert-fonce) !important; font-weight: 700; text-decoration: underline; }
.woocommerce-checkout .woocommerce-info::before { color: var(--ab-vert-fonce) !important; }
@media (max-width: 600px) {
	.woocommerce-checkout #order_review { padding: 12px; }
	.woocommerce-checkout #order_review table.shop_table td.product-name { width: auto; font-size: 14px; }
	.woocommerce-checkout #order_review table.shop_table td.product-total { white-space: nowrap; font-size: 14px; }
}
/* Astra (sans Astra Pro) encadre panier et paiement avec 100 px de marge intérieure : contenu aligné sur la barre d'en-tête. */
:is(.woocommerce-checkout, .woocommerce-cart, .woocommerce-account) .site-content article.page { padding: 0 !important; margin: 0 !important; background: none !important; box-shadow: none !important; }
:is(.woocommerce-checkout, .woocommerce-cart, .woocommerce-account) .site-content .woocommerce { max-width: none !important; }
/* Récapitulatif : lignes en grille (nom | montants) — en tableau, la colonne des montants barrés écrasait le nom à 107-138 px. */
.woocommerce-checkout #order_review table.shop_table, .woocommerce-checkout #order_review table.shop_table :is(thead, tbody, tfoot) { display: block; width: 100%; }
.woocommerce-checkout #order_review table.shop_table tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; border-bottom: 1px solid var(--ab-ligne); }
.woocommerce-checkout #order_review table.shop_table tr > * { display: block; width: auto !important; border: 0 !important; padding: 10px 0 !important; }
.woocommerce-checkout #order_review table.shop_table tr > :last-child { text-align: right; max-width: 60vw; }
.woocommerce-checkout #order_review table.shop_table tr.woocommerce-shipping-totals { grid-template-columns: 1fr; }
.woocommerce-checkout #order_review table.shop_table tr.woocommerce-shipping-totals > :last-child { text-align: left; max-width: none; }
.woocommerce-checkout #order_review table.shop_table tr { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.woocommerce-checkout #order_review table.shop_table tr > :last-child { max-width: none; }
.woocommerce-checkout #order_review :is(.amount, .ab-px__ttc, .ab-px__ht, del, ins) { white-space: nowrap; }
.woocommerce-checkout #order_review .ab-px--panier { align-items: flex-end; }
.woocommerce-checkout #order_review table.shop_table thead th { font-size: 14px; color: var(--ab-texte); }
/* Compte : marge latérale de 16 px sur téléphone (le cadre d'Astra retiré la laissait à 8 px) ; boutons à la charte. */
@media (max-width: 921px) { .woocommerce-account .site-content .ast-container { padding-left: 16px !important; padding-right: 16px !important; } }
.woocommerce-account .woocommerce-form-register__submit { min-height: var(--ab-cible); padding: 0 1.5rem; background: var(--ab-vert) !important; color: var(--ab-encre) !important; border-radius: var(--ab-rayon) !important; font-weight: 700; }
.woocommerce-account .woocommerce-form-register input.input-text { min-height: var(--ab-cible) !important; font-size: var(--ab-taille-texte) !important; border: 1px solid var(--ab-bordure-champ) !important; border-radius: var(--ab-rayon) !important; }
.woocommerce-account .woocommerce-LostPassword a { display: inline-block; padding-block: 11px; color: var(--ab-vert-fonce); }
/* AGRI-144 (UXG-06) : encarts « Déjà client ? » et « code promo » — l'icône de WooCommerce se posait sur le texte. */
.woocommerce :is(.woocommerce-info, .woocommerce-message) { position: relative; padding-left: 48px !important; }
.woocommerce :is(.woocommerce-info, .woocommerce-message)::before { left: 16px !important; top: 14px !important; }
.woocommerce-info :is(a.showcoupon, a.showlogin) { margin-left: .35em; }
/* AGRI-144 (UXG-07) : modes de livraison présentés comme les moyens de paiement (cartes de 48 px, radio 22 px). */
.woocommerce :is(#shipping_method, ul.woocommerce-shipping-methods) { margin: 0; padding: 0; list-style: none; }
.woocommerce :is(#shipping_method, ul.woocommerce-shipping-methods) li { margin: 0 0 8px !important; padding: 0 !important; text-align: left; }
.woocommerce :is(#shipping_method, ul.woocommerce-shipping-methods) li label { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .25rem .5rem; min-height: var(--ab-cible); padding: 8px 12px; border: 1px solid var(--ab-ligne); border-radius: var(--ab-rayon); background: var(--ab-blanc); color: var(--ab-encre); font-size: 15px; line-height: 1.3; width: calc(100% - 34px); vertical-align: middle; }
.woocommerce :is(#shipping_method, ul.woocommerce-shipping-methods) input[type="radio"] { width: 22px; height: 22px; margin: 0 8px 0 0 !important; vertical-align: middle; accent-color: var(--ab-vert-fonce); }
.woocommerce :is(#shipping_method, ul.woocommerce-shipping-methods) input[type="radio"]:checked + label { border-color: var(--ab-vert-fonce); box-shadow: inset 0 0 0 1px var(--ab-vert-fonce); }
.woocommerce :is(#sendcloudshipping_service_point_select, .sendcloudshipping-service-point-select, [id*="service_point"] button) { min-height: var(--ab-cible); }
.woocommerce .woocommerce-shipping-totals .ab-px-livraison-ht { display: inline; margin-left: .3em; }
.woocommerce-checkout :is(.woocommerce-form-login-toggle, .woocommerce-form-coupon-toggle) .woocommerce-info { padding-left: 48px !important; }
.ab-compte__titre { font: 600 clamp(28px, 2.4vw + 16px, 40px)/1.2 var(--ab-police-titre); color: var(--ab-encre); margin: var(--ab-espace-2) 0 var(--ab-espace-2); width: 100%; }

/* UXI-06 (21/10/2026) : la carte du mode de livraison restait « inline » (règle d'une extension plus forte) : elle débordait
   de sa cellule, recouvrait « Expédition » au panier et sortait du cadre gris au paiement. Carte en bloc, pleine largeur. */
.woocommerce :is(#shipping_method, ul.woocommerce-shipping-methods) li label { display: flex !important; width: 100%; box-sizing: border-box; margin: 0 !important; }
.woocommerce :is(#shipping_method, ul.woocommerce-shipping-methods) li:has(input[type="radio"]) { display: flex; align-items: center; }
@media (max-width: 599px) {
	.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals :is(th, td) { display: block; width: 100% !important; box-sizing: border-box; text-align: left !important; padding-left: 0; padding-right: 0; }
	.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals th { padding-bottom: 4px; border-bottom: 0; }
	.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td::before { display: none !important; }
}

/* Link sous PayPal (express.js, 21/10/2026) : séparateur « ou » au-dessus de PayPal, petit écart entre les deux boutons. */
:is(.woocommerce-cart, .single-product) #cpsw-payment-request-wrapper { margin-top: 8px !important; min-height: 0 !important; }
:is(.woocommerce-cart, .single-product) #cpsw-payment-request-separator { margin: .5rem 0 !important; width: 100%; text-align: center !important; }

/* Capture d'Édouard du 21/10 (22 h 08) : au panier sur téléphone, le bloc « Expédition » restait sur deux colonnes
   (80 px pour l'intitulé, 213 px pour le mode, le prix et les messages) : texte serré et carte qui chevauchait l'intitulé.
   Sur téléphone, l'intitulé passe au-dessus et le contenu prend toute la largeur du récapitulatif. */
@media (max-width: 599px) {
	.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals { grid-template-columns: 1fr !important; row-gap: .35rem; }
	.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals > :is(th, td) { grid-column: 1 / -1; width: 100% !important; text-align: left !important; }
}


/* ---- Panier par largeur (21/10/2026, capture d'Édouard sur tablette : chaque produit étalé en 5 lignes « Produit : / Prix : / Quantité : ») ----
 * Astra passe le tableau en présentation « tablette » jusqu'à 921 px ; la carte compacte ne s'appliquait que jusqu'à 768 px.
 * Depuis le retrait d'Astra Pro, la liste et le récapitulatif sont directement dans .woocommerce : la mise en deux colonnes
 * de l'ordinateur ne s'appliquait plus (récapitulatif de 1 208 px sous la liste).
 *   jusqu'à 921 px : carte par produit (photo, nom, prix ; quantité et total dessous), photo 80 px, 96 px dès 600 px ;
 *   922 à 1 099 px : tableau, récapitulatif sous la liste, aligné à droite, 520 px au plus ;
 *   1 100 px et plus : liste à gauche, récapitulatif de 380 px à droite, qui suit le défilement. */
.woocommerce-cart td.product-thumbnail img { width: 80px !important; height: 80px !important; }
@media (max-width: 921px) {
	.woocommerce-cart table.shop_table tr.cart_item { grid-template-columns: 80px minmax(0, 1fr) 44px !important; column-gap: 14px !important; padding: 14px !important; }
	.woocommerce-cart td.product-thumbnail { align-self: start; }
	.woocommerce-cart td.product-quantity, .woocommerce-cart td.product-subtotal { margin-top: .5rem; }
	.woocommerce-cart table.shop_table tr.cart_item td::before, .woocommerce-cart table.shop_table tr.cart_item td[data-title]::before { content: none !important; display: none !important; }
	.woocommerce-cart table.shop_table tr.cart_item td { text-align: left !important; }
	.woocommerce-cart table.shop_table tr.cart_item td.product-subtotal { text-align: right !important; }
}
@media (min-width: 600px) and (max-width: 921px) {
	.woocommerce-cart td.product-thumbnail img { width: 96px !important; height: 96px !important; }
	.woocommerce-cart table.shop_table tr.cart_item { grid-template-columns: 96px minmax(0, 1fr) 44px !important; grid-template-areas: "img nom suppr" "img prix prix" "img qte total" !important; column-gap: 18px !important; padding: 16px 18px !important; }
	.woocommerce-cart td.product-subtotal { align-self: end; }
}
@media (min-width: 922px) {
	.woocommerce-cart table.shop_table tr.cart_item td { vertical-align: middle; padding: 14px 12px !important; }
	.woocommerce-cart td.product-thumbnail { width: 104px; }
	.woocommerce-cart .cart-collaterals, .woocommerce-cart .cart-collaterals .cart_totals { float: none !important; width: 100% !important; }
	.woocommerce-cart .cart-collaterals { max-width: 520px; margin: var(--ab-espace-2) 0 0 auto; }
}
@media (min-width: 1100px) {
	.woocommerce-cart .entry-content > .woocommerce:has(> .cart-collaterals) { display: grid; grid-template-columns: minmax(0, 1fr) 380px; column-gap: var(--ab-espace-3); align-items: start; }
	.woocommerce-cart .woocommerce:has(> .cart-collaterals) > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
	.woocommerce-cart .woocommerce:has(> .cart-collaterals) > .woocommerce-cart-form { grid-column: 1; }
	.woocommerce-cart .woocommerce:has(> .cart-collaterals) > .cart-collaterals { grid-column: 2; max-width: none; margin: 0; position: sticky; top: 96px; }
}
/* Photo bridée à 70 px par le thème (max-width) ; colonnes de taille fixe pour laisser au nom la largeur restante. */
.woocommerce-cart td.product-thumbnail img { max-width: none !important; object-fit: cover; }
@media (min-width: 922px) {
	.woocommerce-cart td.product-remove { width: 56px; }
	.woocommerce-cart td.product-price { width: 118px; white-space: nowrap; }
	.woocommerce-cart td.product-quantity { width: 172px; }
	.woocommerce-cart td.product-subtotal { width: 132px; white-space: nowrap; text-align: right !important; }
	.woocommerce-cart td.product-name { width: auto; }
}
/* Ordinateur (922 px et plus) : même carte que sur tablette, sur une ligne ; le prix unitaire passe sous le nom, qui
   gagne la largeur d'une colonne (180 → ~300 px à 1 366 px). */
@media (min-width: 922px) {
	.woocommerce-cart form.woocommerce-cart-form table.shop_table, .woocommerce-cart form.woocommerce-cart-form table.shop_table tbody { display: block; }
	.woocommerce-cart table.shop_table tr.cart_item { display: grid !important; grid-template-columns: 44px 80px minmax(0, 1fr) 172px 132px; grid-template-areas: "suppr img nom qte total" "suppr img prix qte total"; column-gap: 16px; row-gap: 4px; align-items: center; padding: 14px 16px; margin-bottom: 12px; border: 1px solid var(--ab-ligne); border-radius: var(--ab-rayon-carte); }
	.woocommerce-cart table.shop_table tr.cart_item td { display: block; width: auto !important; border: 0 !important; border-radius: 0 !important; padding: 0 !important; background: none; }
	.woocommerce-cart td.product-remove { grid-area: suppr; }
	.woocommerce-cart td.product-thumbnail { grid-area: img; }
	.woocommerce-cart td.product-name { grid-area: nom; align-self: end; }
	.woocommerce-cart td.product-price { grid-area: prix; align-self: start; font-size: 14px; white-space: normal; }
	.woocommerce-cart td.product-quantity { grid-area: qte; }
	.woocommerce-cart td.product-subtotal { grid-area: total; }
	.woocommerce-cart table.shop_table tr:not(.cart_item) { display: block; }
}
/* Tablette : le sous-total tombait dans la colonne de 44 px du bouton ✕ (texte sur 4 lignes) : colonne propre. */
@media (min-width: 600px) and (max-width: 921px) {
	.woocommerce-cart table.shop_table tr.cart_item { grid-template-columns: 96px minmax(0, 1fr) auto 44px !important; grid-template-areas: "img nom nom suppr" "img prix prix prix" "img qte total total" !important; }
	.woocommerce-cart td.product-subtotal { justify-self: end; white-space: nowrap; }
}
/* Téléphone : quantité et sous-total sur la même ligne (ils tiennent côte à côte : 156 + 105 px) ; carte moins haute. */
@media (max-width: 599px) {
	.woocommerce-cart table.shop_table tr.cart_item { grid-template-columns: 80px minmax(0, 1fr) auto 44px !important; grid-template-areas: "img nom nom suppr" "img prix prix prix" "qte qte total total" !important; }
	.woocommerce-cart td.product-subtotal { justify-self: end; align-self: center; white-space: nowrap; }
}
@media (max-width: 599px) {
	.woocommerce-cart table.shop_table tr.cart_item { grid-template-areas: "img nom nom nom" "img prix prix prix" "qte qte total suppr" !important; }
	.woocommerce-cart td.product-remove { align-self: center; margin: 0 !important; }
}
@media (max-width: 599px) {
	.woocommerce-cart table.shop_table tr.cart_item { column-gap: 10px !important; }
	.woocommerce-cart table.shop_table tr.cart_item .quantity .qty { width: 48px !important; min-width: 48px !important; padding: 0 2px !important; }
	.woocommerce-cart table.shop_table tr.cart_item .quantity :is(.minus, .plus) { min-width: var(--ab-cible-serree) !important; width: var(--ab-cible-serree) !important; }
}
/* Gros montants (52 543,42 €) : la colonne du sous-total s'élargissait et passait sur la quantité. Colonnes fixes
   (photo 80 + 63 = zone de quantité de 153 px), sous-total dans l'espace restant, à la ligne si besoin, montants entiers. */
@media (max-width: 599px) {
	.woocommerce-cart table.shop_table tr.cart_item { grid-template-columns: 80px 63px minmax(0, 1fr) 44px !important; }
	.woocommerce-cart td.product-subtotal { white-space: normal !important; text-align: right !important; min-width: 0; }
	.woocommerce-cart td.product-subtotal .amount { white-space: nowrap; }
}


/* ---- AGRI-168 (22/10/2026) : paiement en deux étapes dans la même page (etapes.js) ---- */
.ab-etapes { display: flex; gap: 8px; list-style: none; margin: 0 0 var(--ab-espace-2); padding: 0; counter-reset: none; }
.ab-etapes li { flex: 1 1 0; margin: 0; }
.ab-etapes button { display: flex; align-items: center; gap: 10px; width: 100%; min-height: var(--ab-cible); padding: 8px 14px; border: 1px solid var(--ab-ligne); border-radius: var(--ab-rayon); background: var(--ab-blanc); color: var(--ab-texte); font: 600 15px/1.2 var(--ab-police-texte); text-align: left; cursor: pointer; }
.ab-etapes__n { display: inline-grid; place-items: center; flex: 0 0 28px; width: 28px; height: 28px; border-radius: 50%; background: var(--ab-fond); color: var(--ab-encre); font-size: 14px; }
.ab-etapes li.est-active button { border-color: var(--ab-vert-fonce); color: var(--ab-encre); box-shadow: inset 0 -3px 0 var(--ab-vert-fonce); }
.ab-etapes li.est-active .ab-etapes__n { background: var(--ab-vert-fonce); color: var(--ab-blanc); }
.ab-etapes li.est-faite .ab-etapes__n { background: var(--ab-vert); color: var(--ab-encre); }
/* Étape 1 : pas de moyens de paiement ; étape 2 : coordonnées repliées en un résumé */
body.ab-etape-1 #order_review :is(#payment, .ppc-button-wrapper, #ppc-button-ppcp-googlepay, #ppc-button-ppcp-applepay, .ppcp-messages) { display: none !important; }
body.ab-etape-2 #customer_details > :not(.ab-etape-resume) { display: none !important; }
body.ab-etape-2 .ab-etape-suite, body.ab-etape-1 .ab-etape-resume { display: none !important; }
.ab-etape-suite { margin: var(--ab-espace-2) 0 0; }
.ab-etape-suite .button { display: flex !important; align-items: center; justify-content: center; width: 100%; min-height: 52px; font-size: 17px !important; }
.ab-etape-suite__alerte { margin: 0 0 .75rem; padding: 10px 12px; border-left: 4px solid var(--ab-alerte); background: var(--ab-blanc); color: var(--ab-encre); font-size: 15px; }
.ab-etape-resume { padding: var(--ab-carte-pad); border: 1px solid var(--ab-ligne); border-radius: var(--ab-rayon-carte); background: var(--ab-blanc); }
.ab-etape-resume__tete { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: .5rem; }
.ab-etape-resume__tete h3 { margin: 0 !important; font: 600 19px/1.25 var(--ab-police-titre); color: var(--ab-encre); }
.ab-etape-resume__modifier { min-height: var(--ab-cible-serree); padding: 0 14px; border: 2px solid var(--ab-vert-fonce); border-radius: var(--ab-rayon); background: var(--ab-blanc); color: var(--ab-vert-fonce); font-weight: 600; cursor: pointer; }
.ab-etape-resume__grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px 24px; font-size: 15px; }
.ab-etape-resume__grille p { margin: .25rem 0 0; }
.ab-etape-resume__grille strong { color: var(--ab-encre); }
@media (max-width: 599px) { .ab-etapes button { font-size: 14px; padding: 6px 10px; gap: 8px; } }
.ab-etape-suite--gauche { display: none; }
@media (min-width: 992px) { body.ab-etape-1 .ab-etape-suite--gauche { display: block; max-width: 420px; } }
