/* Fiche produit : hiérarchie des actions (AGRI-24). Variables : modules/charte/charte.css. */

/* Quantité + « Ajouter au panier » sur une ligne, bouton qui prend la place restante. */
.single-product form.cart .woocommerce-variation-add-to-cart,
.single-product form.cart:not(.variations_form) {
	display: flex; flex-wrap: wrap; align-items: stretch; gap: var(--ab-espace-1);
}
.single-product form.cart .rightpress_clear_both,
.single-product form.cart .rightpress_product_price_live_update { flex-basis: 100%; }

.single-product form.cart .quantity { display: flex; align-items: stretch; margin: 0 !important; }
.single-product form.cart .quantity .qty,
.single-product form.cart .quantity .minus,
.single-product form.cart .quantity .plus {
	min-height: var(--ab-cible); min-width: var(--ab-cible-serree); font-size: var(--ab-taille-texte);
}

.single-product form.cart .single_add_to_cart_button.button {
	flex: 1 1 8rem; min-height: var(--ab-cible); margin: 0 !important; padding: 0 1rem;
	background: var(--ab-vert); color: var(--ab-encre); border: 2px solid var(--ab-vert);
	border-radius: var(--ab-rayon); font: 700 1.0625rem/1.2 var(--ab-police-texte);
}
.single-product form.cart .single_add_to_cart_button.button:hover { background: var(--ab-vert-survol); border-color: var(--ab-vert-survol); }
.single-product form.cart .single_add_to_cart_button.button:focus-visible { outline: 3px solid var(--ab-encre); outline-offset: 2px; }

/* Paiements express : secondaires, sous le bouton principal, sans séparateur « OU » en majuscules. */
.single-product #cpsw-payment-request-wrapper { flex-basis: 100%; margin: var(--ab-espace-1) 0 0 !important; }
.single-product #cpsw-payment-request-separator { font-size: var(--ab-taille-petit); color: var(--ab-texte); text-transform: none; margin: 0 0 .25rem; }
.single-product .ppc-button-wrapper { margin-top: var(--ab-espace-1); max-width: 100%; }
/* Message « payer en plusieurs fois » retiré de la fiche (réglage PayPal + garde-fou d'affichage). */
.single-product .summary .ppcp-messages { display: none !important; }

/* ---- AGRI-19 (20/10/2026) : harmonisation du reste de la fiche avec la charte ----------------------------------- */

/* Titre du produit */
.single-product .summary h1.product_title { font-family: var(--ab-police-titre); font-weight: 600; font-size: clamp(26px, 1.6vw + 16px, 34px); line-height: 1.2; color: var(--ab-encre); }

/* Disponibilité : vert pâle #77A464 à 2,89:1 remplacé (seuil 4,5:1) */
.single-product .summary .stock { font-size: var(--ab-taille-petit); font-weight: 600; }
.single-product .summary .stock.in-stock { color: var(--ab-vert-fonce); }
.single-product .summary .stock.available-on-backorder { color: var(--ab-precommande); }
.single-product .summary .stock.out-of-stock { color: var(--ab-texte); }

/* Encadré « Précommande » (description courte) aux couleurs de la charte */
.single-product .agribiomix-seasonal-delivery-notice { background: var(--ab-fond) !important; border: 0 !important; border-left: 4px solid var(--ab-vert-fonce) !important; border-radius: var(--ab-rayon) !important; color: var(--ab-texte) !important; }
.single-product .agribiomix-seasonal-delivery-notice :is(strong, b) { color: var(--ab-encre) !important; }

/* Choix de variante (pastilles) : cibles de 44 px, sélection visible */
.single-product .cfvsw-swatches-option { min-height: var(--ab-cible-serree); min-width: var(--ab-cible-serree); border-radius: var(--ab-rayon) !important; border-color: var(--ab-bordure-champ) !important; }
.single-product .cfvsw-swatches-option.cfvsw-selected-swatch { border: 2px solid var(--ab-vert-fonce) !important; box-shadow: none !important; }
.single-product .cfvsw-swatch-inner { font-size: var(--ab-taille-petit) !important; color: var(--ab-encre) !important; padding: 0 .75rem; }

/* Onglets */
.single-product .woocommerce-tabs ul.tabs li a { font-family: var(--ab-police-titre); font-weight: 600; font-size: 16px; color: var(--ab-texte); }
.single-product .woocommerce-tabs ul.tabs li.active a { color: var(--ab-encre); }
.single-product .woocommerce-tabs ul.tabs li.active { border-bottom: 3px solid var(--ab-vert) !important; }

/* Description : la charte s'impose aux styles écrits dans le texte (polices Segoe UI, bandeau vert, bouton bleu nuit) */
.single-product #tab-description, .single-product #tab-description * { font-family: var(--ab-police-texte) !important; }
.single-product #tab-description :is(h1, h2, h3, h4) { font-family: var(--ab-police-titre) !important; font-weight: 600 !important; color: var(--ab-encre) !important; line-height: 1.25 !important; }
.single-product #tab-description :is(h1, h2) { font-size: clamp(22px, 1.2vw + 17px, 28px) !important; margin: 1.6em 0 .6em !important; }
.single-product #tab-description h3 { font-size: clamp(19px, .6vw + 16px, 22px) !important; }
.single-product #tab-description :is(p, li) { font-size: 16px; line-height: 1.65; }
.single-product #tab-description [style*="27ae60" i] { background: var(--ab-fond) !important; color: var(--ab-encre) !important; }
.single-product #tab-description [style*="27ae60" i] * { color: inherit !important; }
.single-product #tab-description :is(a, button)[style*="2c3e50" i] { display: inline-flex !important; align-items: center; min-height: var(--ab-cible); padding: 0 1.25rem !important; background: var(--ab-vert) !important; color: var(--ab-encre) !important; border-radius: var(--ab-rayon) !important; font-weight: 700 !important; text-decoration: none !important; }
.single-product #tab-description [style*="718096" i], .single-product #tab-description [style*="4a5568" i] { color: var(--ab-texte) !important; }

/* Produits associés en bas de fiche : boutons de la charte */
.single-product .related.products .button, .single-product .upsells.products .button { min-height: var(--ab-cible-serree); display: inline-flex; align-items: center; border-radius: var(--ab-rayon) !important; background: var(--ab-vert) !important; border-color: var(--ab-vert) !important; color: var(--ab-encre) !important; }
.single-product .related.products h2, .single-product .upsells.products h2 { font-family: var(--ab-police-titre); font-weight: 600; color: var(--ab-encre); }

/* AGRI-67 (20/10/2026) : boutons de paiement express alignés sur la largeur du bouton principal ; place réservée
 * avant leur chargement (ils arrivent après la page) pour qu'ils apparaissent sans faire sauter le contenu. */
.single-product #cpsw-payment-request-wrapper, .single-product #cpsw-payment-request-wrapper * { box-sizing: border-box; }
.single-product #cpsw-payment-request-wrapper { width: 100%; max-width: 100%; min-height: 97px; }
.single-product #cpsw-payment-request-separator { width: 100%; text-align: center !important; padding: 0 !important; }
.single-product #cpsw-payment-request-wrapper :is(.cpsw-payment-request-button-wrapper, #cpsw-payment-request-custom-button, .cpsw_express_checkout_button) { width: 100% !important; max-width: 100% !important; margin: 0 !important; }
.single-product .cpsw_express_checkout_button { min-height: var(--ab-cible-serree) !important; justify-content: center !important; border-radius: var(--ab-rayon) !important; }
.single-product .ppc-button-wrapper { width: 100%; min-height: 45px; }

/* AGRI-68 : boutons écrits dans les descriptions (« Accéder au Simulateur → ») : texte centré, hauteur réglée par la charte */
.single-product #tab-description :is(a, button)[style*="2c3e50" i] { justify-content: center !important; text-align: center !important; line-height: 1.2 !important; padding: 12px 1.25rem !important; height: auto !important; }
/* Signalement du 20/10/2026 20 h 31 (fiche silphie, 375 px) : l'extension Stripe écrit en JavaScript, sur le bloc et sur
 * le bouton, un « min-width: 462px » en style en ligne : la page entière s'élargissait (484 px pour 375). !important requis.
 * Le bloc peut se réduire, occupe sa propre ligne et rogne son contenu décoratif. */
.single-product form.cart > #cpsw-payment-request-wrapper,
.single-product form.cart .woocommerce-variation-add-to-cart > #cpsw-payment-request-wrapper { flex: 0 0 100%; min-width: 0 !important; overflow: hidden; }
.single-product #cpsw-payment-request-wrapper { min-width: 0 !important; }
.single-product #cpsw-payment-request-wrapper :is(.cpsw-payment-request-button-wrapper, #cpsw-payment-request-custom-button, .cpsw_express_checkout_button) { min-width: 0 !important; }
.single-product .cpsw_express_checkout_button { overflow: hidden; white-space: normal; }
.single-product form.cart > .ppc-button-wrapper, .single-product .summary > .ppc-button-wrapper { flex: 0 0 100%; min-width: 0; }

/* Remarque d'Édouard (20/10/2026 23 h) : la barre d'achat collante d'Astra (bas d'écran, téléphone) prenait trop de place
 * (quantité, bouton sur deux lignes, message PayPal « Payez en 4 échéances »). Barre compacte : prix + bouton, 64 px. */
.ast-sticky-add-to-cart { padding: 0 !important; box-shadow: 0 -2px 12px rgba(20, 38, 28, .12) !important; background: var(--ab-blanc) !important; }
.ast-sticky-add-to-cart .ast-sticky-add-to-cart-content { display: flex !important; align-items: center; gap: .75rem; min-height: 64px; padding: 8px 16px !important; }
.ast-sticky-add-to-cart :is(.quantity, .ppcp-messages, [class*="ppcp"], .ast-sticky-add-to-cart-title-wrap img) { display: none !important; }
.ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-wrap { display: flex !important; align-items: center; gap: .75rem; margin-left: auto; flex: 1 1 auto; justify-content: flex-end; }
.ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price { font-size: 16px !important; font-weight: 700; color: var(--ab-encre); white-space: nowrap; }
.ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price .ab-px__ht { display: none; } /* un seul prix dans la barre */
html.ab-regime-ht .ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price .ab-px__ht { display: inline-flex; }
html.ab-regime-ht .ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price .ab-px__ttc { display: none; }
.ast-sticky-add-to-cart :is(button, a).button { min-height: var(--ab-cible) !important; padding: 0 1.25rem !important; margin: 0 !important; white-space: nowrap; border-radius: var(--ab-rayon) !important; background: var(--ab-vert) !important; color: var(--ab-encre) !important; font: 700 15px/1 var(--ab-police-texte) !important; }
.ast-sticky-add-to-cart form.cart { display: contents !important; }
@media (max-width: 600px) { .ast-sticky-add-to-cart .ast-sticky-add-to-cart-title-wrap { display: none !important; } }
.ast-sticky-add-to-cart :is(#cpsw-payment-request-wrapper, .ppc-button-wrapper, .ab-paliers, .ab-prix-unite, .single_variation_wrap .woocommerce-variation-description, table.variations, .reset_variations) { display: none !important; }
.ast-sticky-add-to-cart { max-height: 80px; overflow: hidden; }

/* Remarque d'Édouard (20/10/2026 23 h 07) : des titres et des questions de FAQ de la description portaient l'ancien fond
 * bleu nuit et prenaient l'allure d'un bouton vert. Titres : style titre ; questions : élément dépliable de la charte. */
.single-product #tab-description :is(h1, h2, h3, h4)[style*="2c3e50" i], .single-product #tab-description :is(h1, h2, h3, h4)[style*="27ae60" i] { background: none !important; color: var(--ab-encre) !important; padding: 0 !important; text-align: left !important; border-radius: 0 !important; box-shadow: none !important; }
.single-product #tab-description summary[style*="2c3e50" i], .single-product #tab-description summary[style*="27ae60" i] { display: flex !important; align-items: center; min-height: var(--ab-cible); padding: .75rem 1rem !important; background: var(--ab-fond) !important; color: var(--ab-encre) !important; border-radius: var(--ab-rayon) !important; font-weight: 600 !important; text-align: left !important; cursor: pointer; }
.single-product #tab-description details { margin: .5rem 0; }

/* ---- AGRI-117 (21/10/2026, demande d'Édouard) : quantité plus grande, « − » et « + » au format du pouce.
 * Sur téléphone, la quantité prend une ligne entière (le champ s'élargit) et « Ajouter au panier » la suivante, pleine
 * largeur : il reste le bouton le plus visible. ---- */
.single-product form.cart .quantity { gap: 8px; }
.single-product form.cart .quantity :is(.minus, .plus) {
	flex: 0 0 var(--ab-cible); width: var(--ab-cible) !important; height: var(--ab-cible) !important; padding: 0 !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; font-size: 22px !important; line-height: 1 !important;
	touch-action: manipulation; cursor: pointer;
}
.single-product form.cart .quantity :is(.minus, .plus):active { background: var(--ab-fond) !important; transform: scale(.96); }
.single-product form.cart .quantity .qty {
	flex: 1 1 5.5rem; min-width: 5.5rem !important; height: var(--ab-cible) !important; padding: 0 4px !important;
	border: 1px solid var(--ab-bordure-champ) !important; border-radius: var(--ab-rayon) !important;
	font: 600 18px/1 var(--ab-police-texte) !important; color: var(--ab-encre) !important; text-align: center;
	-moz-appearance: textfield;
}
.single-product form.cart .quantity .qty::-webkit-inner-spin-button, .single-product form.cart .quantity .qty::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
@media (max-width: 600px) {
	.single-product form.cart:not(.variations_form) , .single-product form.cart .woocommerce-variation-add-to-cart { row-gap: var(--ab-espace-1); }
	.single-product form.cart .quantity { flex: 1 1 100%; }
	.single-product form.cart .single_add_to_cart_button.button { flex: 1 1 100%; min-height: 52px; }
}

/* ---- AGRI-118 (21/10/2026, demande d'Édouard) : Google Pay / Link et PayPal plus petits et plus neutres que
 * « Ajouter au panier » : 40 px de haut (48-52 pour le bouton principal), l'un sous l'autre, fond blanc, bordure grise. ---- */
.single-product #cpsw-payment-request-separator { display: none !important; }
.single-product #cpsw-payment-request-wrapper { min-height: 0 !important; }
.single-product #cpsw-payment-request-wrapper { margin-top: var(--ab-espace-1) !important; }
.single-product .cpsw_express_checkout_button {
	min-height: 40px !important; height: 40px !important; padding: 0 12px !important;
	background: var(--ab-blanc) !important; border: 1px solid var(--ab-ligne) !important; box-shadow: none !important;
	color: var(--ab-encre) !important; font: 500 14px/1.2 var(--ab-police-texte) !important;
}
.single-product .cpsw_express_checkout_button :is(.cpsw-express-checkout-button-content, .cpsw-express-checkout-button-inner) { color: var(--ab-encre) !important; font: inherit !important; }
.single-product .cpsw_express_checkout_button :is(.cpsw-express-checkout-button-shines, .cpsw-express-checkout-button-border) { display: none !important; }
.single-product .cpsw_express_checkout_button:hover { border-color: var(--ab-bordure-champ) !important; background: var(--ab-fond) !important; }
.single-product .ppc-button-wrapper { min-height: 40px !important; }

/* ---- AGRI-129 (21/10/2026, capture d'Édouard) : barre d'achat collante sur téléphone. Astra y masque nom et prix sous
 * 544 px (moitié gauche vide) et le texte du bouton n'était pas centré verticalement. Le prix revient à gauche (« dès … »
 * pour un produit à variétés), le bouton est centré et dit ce qu'il fait (« Choisir et commander » : il remonte au choix). */
.ast-sticky-add-to-cart :is(a, button).button { display: inline-flex !important; align-items: center; justify-content: center; text-align: center; line-height: 1.2 !important; }
@media (max-width: 600px) {
	.ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-wrap { justify-content: space-between; width: 100%; }
	.ast-sticky-add-to-cart .ast-sticky-add-to-cart-content .ast-sticky-add-to-cart-action-price { display: inline-flex !important; flex-direction: column; font-size: 17px !important; line-height: 1.2; }
	.ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price .ab-px { display: inline-flex; }
	/* fourchette de prix : seulement le plus bas, précédé de « dès » */
	.ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price :is(.ab-px__ttc, .ab-px__ht) > span[aria-hidden="true"]:not(.amount),
	.ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price :is(.ab-px__ttc, .ab-px__ht) > .amount ~ .amount { display: none !important; }
	.ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price :is(.ab-px__ttc, .ab-px__ht):has(> .amount ~ .amount)::before { content: "dès"; margin-right: .3em; font-size: 13px; font-weight: 600; color: var(--ab-texte); align-self: center; }
	html[lang^="en"] .ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price :is(.ab-px__ttc, .ab-px__ht):has(> .amount ~ .amount)::before { content: "from"; }
	html[lang^="es"] .ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price :is(.ab-px__ttc, .ab-px__ht):has(> .amount ~ .amount)::before { content: "desde"; }
	.ast-sticky-add-to-cart .ast-sticky-add-to-cart-action-price .ab-px__lib { font-size: 12px; margin-left: .25em; color: var(--ab-texte); }
}

/* AGRI-136 (UXE-06, UXE-12) : pastilles de variété à 44 px et texte 15 px (30 px et 12 px) ; loupe, flèches de galerie,
 * onglets et bouton express à 44 px au moins. */
.cfvsw-swatches-container { gap: 8px !important; }
.cfvsw-swatches-container .cfvsw-swatches-option { min-height: var(--ab-cible-serree) !important; padding: 0 14px !important; display: inline-flex !important; align-items: center; }
.cfvsw-swatches-option .cfvsw-swatch-inner { font-size: 15px !important; line-height: 1.2 !important; }
.single-product :is(a.woocommerce-product-gallery__trigger, .flex-direction-nav a) { min-width: 44px !important; min-height: 44px !important; display: inline-flex !important; align-items: center; justify-content: center; }
.single-product .woocommerce-tabs ul.tabs li a { min-height: 44px; display: inline-flex; align-items: center; }

/* ---- AGRI-138 étape 6 : barre d'achat collante maison ---- */
.ab-barre-achat { position: fixed; left: 0; right: 0; bottom: 0; z-index: 9980; background: var(--ab-blanc); border-top: 1px solid var(--ab-ligne); box-shadow: 0 -2px 12px rgba(20, 38, 28, .12); font-family: var(--ab-police-texte); padding-bottom: env(safe-area-inset-bottom); }
.ab-barre-achat[hidden] { display: none; }
.ab-barre-achat__interieur { display: flex; align-items: center; justify-content: space-between; gap: .75rem; max-width: 1240px; margin: 0 auto; padding: 8px 15px; min-height: 64px; }
.ab-barre-achat__produit { display: flex; flex-direction: column; min-width: 0; gap: 2px; }
.ab-barre-achat__nom { font: 600 15px/1.25 var(--ab-police-titre); color: var(--ab-encre); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ab-barre-achat__prix { display: inline-flex; align-items: baseline; gap: .3em; font-size: 17px; font-weight: 700; color: var(--ab-encre); }
.ab-barre-achat__prix .ab-px { flex-direction: row; gap: .5em; align-items: baseline; }
.ab-barre-achat__prix .ab-px__ht, html.ab-regime-ht .ab-barre-achat__prix .ab-px__ttc { display: none; }
html.ab-regime-ht .ab-barre-achat__prix .ab-px__ht { display: inline-flex; font-size: 1em; font-weight: 700; color: var(--ab-encre); }
.ab-barre-achat__des { font-size: 13px; font-weight: 600; color: var(--ab-texte); }
.ab-barre-achat__bouton { flex: 0 0 auto; min-height: var(--ab-cible); padding: 0 1.25rem; font-size: 15px; }
@media (max-width: 600px) { .ab-barre-achat__nom { display: none; } }
body.ab-barre-achat-visible { padding-bottom: 72px; }

/* AGRI-143 (21/10/2026, contrôle ordinateur UXH-02) : sans Astra Pro, Astra (mise en page « séparée ») pose 100 px de marge
 * intérieure sur le conteneur WooCommerce : la fiche était à +105 px du logo. Contenu aligné sur la barre d'en-tête. */
.single-product .site-content .ast-woocommerce-container { padding-left: 0 !important; padding-right: 0 !important; background: none !important; }

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