/*
Theme Name: Gohealt Pharma
Theme URI: https://gohealt.example/
Author: Gohealt Pharma
Author URI: https://gohealt.example/
Description: Thème de blocs (FSE) « pharmacie moderne premium » pour Gohealt Pharma — design system Menthe fraîche, mobile-first, WCAG 2.2 AA. Optimisé WooCommerce. Dépend du plugin Gohealt Core pour les fonctionnalités (horaires, boutique, RDV, ordonnances, blog).
Requires at least: 6.5
Tested up to: 6.8
Requires PHP: 8.1
Version: 1.6.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: gohealt
Domain Path: /languages
Tags: full-site-editing, block-patterns, e-commerce, accessibility-ready, custom-colors, wide-blocks
*/

/* =======================================================================
   Styles globaux complémentaires au theme.json (chargés via functions.php).
   Le gros du design vit dans theme.json ; ici on ne met que ce que les
   presets ne couvrent pas (mises en page de header/footer, CTA mobile…).
   ======================================================================= */

/* --- En-tête « search-first » (Pattern A) --- */
.gohealt-header{
	display:flex;align-items:center;gap:var(--wp--preset--spacing--40);flex-wrap:wrap;
	max-width:1200px;margin-inline:auto;width:100%;
	padding-inline:clamp(1rem,.6rem + 2vw,1.5rem);
}
.gohealt-header .wp-block-search{flex:1 1 320px;max-width:520px}
.gohealt-header .wp-block-search__inside-wrapper{
	border:1.5px solid var(--wp--preset--color--line);
	background:var(--wp--preset--color--mist);
	border-radius:var(--wp--custom--radius--pill);
	padding:.35rem .35rem .35rem 1rem;
}
.gohealt-header .wp-block-search__inside-wrapper:focus-within{
	border-color:var(--wp--preset--color--brand-strong);
	background:var(--wp--preset--color--surface);
	box-shadow:0 0 0 3px rgba(9,122,85,.25);
}
.gohealt-header .wp-block-search__input{border:0;background:transparent}
.gohealt-header .wp-block-search__button{
	border-radius:var(--wp--custom--radius--pill);
	background:var(--wp--preset--color--brand);color:var(--wp--preset--color--ink);
}

/* --- Tunnel de commande : en-tête et pied de page sans distraction ---
   Pas de navigation, pas de recherche, pas de bandeau promo : à cette étape
   chaque lien sortant est une commande perdue. On ne garde que l'identité de
   l'officine et les repères de confiance qui rassurent au moment de payer. */
.gohealt-checkout-header__bar{align-items:center;gap:var(--wp--preset--spacing--30)}
.gohealt-checkout-secure{margin:0;display:inline-flex;align-items:center;gap:.4rem}
.gohealt-checkout-secure::before{
	content:"";width:.85em;height:.85em;flex:none;background:currentColor;
	-webkit-mask:var(--gohealt-lock-mask) center/contain no-repeat;
	mask:var(--gohealt-lock-mask) center/contain no-repeat;
}
:root{
	--gohealt-lock-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17 9V7a5 5 0 0 0-10 0v2H5v13h14V9h-2zM9 7a3 3 0 0 1 6 0v2H9V7z'/%3E%3C/svg%3E");
}
.gohealt-checkout-footer .gohealt-reassurance{justify-content:center}
.gohealt-checkout-footer a{color:inherit}
.gh-checkout-links{margin-top:var(--wp--preset--spacing--40);text-align:center}
@media (max-width:600px){
	.gohealt-checkout-header__bar{justify-content:center;text-align:center}
}

/* --- Mentions légales : identité de l'officine et pharmacien titulaire ---
   Blocs alimentés par [gohealt_legal_identity] et [gohealt_titulaire]. Ils
   n'apparaissent que lorsque les réglages correspondants sont renseignés. */
.gh-legal-block{margin-block:var(--wp--preset--spacing--30);line-height:1.7}
.gh-titulaire{margin-block:var(--wp--preset--spacing--30);line-height:1.7}

/* --- Barre de navigation catégories --- */
.gohealt-navbar{align-items:center;gap:.75rem;max-width:1200px;margin-inline:auto;width:100%;padding-inline:clamp(1rem,.6rem + 2vw,1.5rem)}
.gohealt-navbar > .wp-block-navigation{margin-right:auto}

/* --- Compte et panier de l'en-tête ---------------------------------------
   Balisage produit par [gohealt_account] et [gohealt_cart]. Le panier est le
   chemin de sortie d'un ajout au panier : il doit rester visible et cliquable
   à toutes les tailles d'écran, y compris quand le libellé texte est masqué. */
.gohealt-header__actions{align-items:center;gap:.5rem;margin-left:auto}
.gh-account,
.gh-cart{
	display:inline-flex;align-items:center;gap:.5rem;
	color:var(--wp--preset--color--brand-deep);text-decoration:none;
	padding:.4rem .7rem;border-radius:var(--wp--custom--radius--pill);
	line-height:1.2;transition:background .15s ease;
}
.gh-account:hover,
.gh-cart:hover{background:var(--wp--preset--color--mist);text-decoration:none}
.gh-account svg,
.gh-cart svg{flex:none}
.gh-account__label{white-space:nowrap}

.gh-cart{background:var(--wp--preset--color--mist);font-weight:700}
.gh-cart:hover{background:var(--wp--preset--color--brand)}
/* Le compteur est ancré sur l'icône : il reste lisible même sans le libellé. */
.gh-cart__icon{position:relative;display:inline-flex}
.gh-cart__count{
	position:absolute;top:-.45rem;right:-.55rem;
	min-width:1.15rem;height:1.15rem;padding:0 .25rem;
	display:inline-flex;align-items:center;justify-content:center;
	border-radius:999px;background:var(--wp--preset--color--ink-muted);
	color:#fff;font-size:.68rem;font-weight:800;
}
.gh-cart.has-items .gh-cart__count{background:var(--wp--preset--color--accent)}
.gh-cart__meta{display:flex;flex-direction:column}
.gh-cart__label{font-size:.72rem;font-weight:600;color:var(--wp--preset--color--ink-muted);text-transform:uppercase;letter-spacing:.02em}
.gh-cart__total{font-size:.9rem;font-weight:800;color:var(--wp--preset--color--ink)}
.gh-cart__total .woocommerce-Price-amount{white-space:nowrap}

/* Sur petit écran, on garde les icônes — et donc l'accès au panier — mais on
   retire les libellés qui feraient déborder la ligne d'en-tête. */
@media (max-width:781px){
	.gh-account__label,
	.gh-cart__meta{
		position:absolute;width:1px;height:1px;overflow:hidden;
		clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;
	}
	.gh-account,
	.gh-cart{padding:.45rem;gap:0}
}

/* Si l'administrateur ajoute malgré tout les blocs WooCommerce natifs dans
   l'en-tête, ils héritent du même habillage. */
.gohealt-navbar .wp-block-woocommerce-customer-account,
.gohealt-navbar .wp-block-woocommerce-mini-cart{display:flex;align-items:center}
.gohealt-navbar .wc-block-customer-account__link,
.gohealt-navbar .wc-block-mini-cart__button{
	color:var(--wp--preset--color--brand-deep);
	padding:.3rem;border-radius:var(--wp--custom--radius--pill);
}
.gohealt-navbar .wc-block-customer-account__link svg,
.gohealt-navbar .wc-block-mini-cart__button svg{width:24px;height:24px}
.gohealt-navbar .wc-block-mini-cart__button:hover,
.gohealt-navbar .wc-block-customer-account__link:hover{background:var(--wp--preset--color--mist)}

/* Correctif : les cases à cocher ne doivent pas prendre toute la largeur. */
.gohealt-rdv-consent input[type="checkbox"],
.gohealt-rx-consent input[type="checkbox"]{width:auto;flex:none}

/* --- Bandeau de confiance (Pattern B) --- */
.gohealt-trustbar{font-size:.9rem}
.gohealt-trustbar .wp-block-column{display:flex;gap:.6rem;align-items:center}

/* --- Barre CTA mobile fixe (Pattern C) --- */
.gohealt-mobile-cta{
	position:fixed;left:0;right:0;bottom:0;z-index:100;
	background:var(--wp--preset--color--surface);
	border-top:1px solid var(--wp--preset--color--line);
	box-shadow:0 -6px 24px rgba(6,78,59,.10);
	padding:.5rem max(.75rem,env(safe-area-inset-left)) max(.5rem,env(safe-area-inset-bottom));
}
.gohealt-mobile-cta .wp-block-buttons{gap:.4rem;flex-wrap:nowrap}
.gohealt-mobile-cta .wp-block-button{flex:1}
.gohealt-mobile-cta .wp-block-button__link{
	width:100%;justify-content:center;padding:.6em .4em;font-size:.8rem;
}
@media (min-width:900px){ .gohealt-mobile-cta{display:none} }
/* Évite que la barre fixe masque le contenu en bas de page sur mobile. */
@media (max-width:899px){ body{padding-bottom:76px} }

/* --- Cartes produit WooCommerce : arrondir/aligner sur le design system --- */
.woocommerce ul.products li.product,
.wc-block-grid__product,
.wp-block-woocommerce-product-template li{
	border:1px solid var(--wp--preset--color--line);
	border-radius:var(--wp--custom--radius--lg);
	background:var(--wp--preset--color--surface);
	padding:0 0 1rem;overflow:hidden;
	transition:box-shadow .18s ease, transform .18s ease;
}
.woocommerce ul.products li.product:hover,
.wc-block-grid__product:hover{ transform:translateY(-2px); box-shadow:var(--wp--preset--shadow--md); }
.woocommerce ul.products li.product img{border-radius:0}
.woocommerce ul.products li.product .button,
.woocommerce div.product form.cart .button{
	border-radius:var(--wp--custom--radius--pill);
	background:var(--wp--preset--color--brand);color:var(--wp--preset--color--ink);
	font-weight:700;
}
.woocommerce ul.products li.product .button:hover{background:var(--wp--preset--color--brand-hover)}

/* --- Prix WooCommerce --- */
.woocommerce div.product p.price,
.woocommerce ul.products li.product .price{
	color:var(--wp--preset--color--ink);font-weight:800;
}

/* --- Focus visible global (WCAG 2.2 AA) --- */
a:focus-visible, button:focus-visible,
.wp-block-button__link:focus-visible, input:focus-visible, select:focus-visible{
	outline:3px solid var(--wp--preset--color--brand-strong);
	outline-offset:2px;
}

/* --- Utilitaires de patterns --- */
.gohealt-eyebrow{
	display:inline-flex;align-items:center;gap:.5em;
	font-size:.8125rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
	color:var(--wp--preset--color--brand-strong);
	background:var(--wp--preset--color--brand-tint);
	padding:.4em .9em;border-radius:var(--wp--custom--radius--pill);
}
.gohealt-card{
	background:var(--wp--preset--color--surface);
	border:1px solid var(--wp--preset--color--line);
	border-radius:var(--wp--custom--radius--lg);
}

/* =======================================================================
   WooCommerce — alignement complet sur le design system
   ======================================================================= */

/* Boutons Woo (classiques + blocs) */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.wc-block-components-button:not(.is-link){
	background:var(--wp--preset--color--brand);
	color:var(--wp--preset--color--ink);
	border:0;border-radius:var(--wp--custom--radius--pill);
	font-weight:700;padding:.7em 1.4em;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.wc-block-components-button:not(.is-link):hover{
	background:var(--wp--preset--color--brand-hover);color:var(--wp--preset--color--ink);
}

/* Prix, promo */
.woocommerce ins,.wc-block-components-product-price ins{background:transparent;text-decoration:none}
.woocommerce span.onsale,.wc-block-grid__product-onsale{
	background:var(--wp--preset--color--garde);color:#fff;
	border-radius:var(--wp--custom--radius--pill);min-height:auto;min-width:auto;
	padding:.25em .7em;font-weight:700;line-height:1.4;
}

/* Barre de tri + compteur de résultats.
   WooCommerce fait flotter le compteur à gauche et le tri à droite. Un élément
   flottant ignore ses marges automatiques : sur un écran large, les deux
   partaient aux extrémités de la fenêtre pendant que la grille restait dans sa
   colonne. Le thème leur redonne un parent (.gohealt-shop-toolbar, ouvert en
   PHP autour des deux crochets WooCommerce) et remplace les flottants par une
   vraie ligne flex, alignée au pixel près sur la grille de produits. */
.gohealt-shop-toolbar{
	display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
	gap:.75rem 1rem;width:100%;margin:0 auto clamp(1rem,.8rem + 1vw,1.5rem);clear:both;
}
.gohealt-shop-toolbar::before,
.gohealt-shop-toolbar::after{content:none !important;display:none !important}
.gohealt-shop-toolbar > *{float:none !important;margin:0 !important;max-width:none !important}
.woocommerce .gohealt-shop-toolbar .woocommerce-result-count,
.woocommerce .gohealt-shop-toolbar .woocommerce-ordering{float:none !important;margin:0 !important}
.gohealt-shop-toolbar .woocommerce-ordering{margin-inline-start:auto !important}
.woocommerce .woocommerce-result-count{color:var(--wp--preset--color--ink-muted)}
.woocommerce .woocommerce-ordering select,
.woocommerce .select2-container .select2-selection{
	border:1.5px solid var(--wp--preset--color--border-strong);
	border-radius:var(--wp--custom--radius--sm);padding:.4em .6em;background:#fff;
}

/* Fiche produit */
.woocommerce div.product .product_title{margin-top:.2em}
.woocommerce div.product p.price,
.woocommerce div.product span.price{color:var(--wp--preset--color--ink)}
.woocommerce div.product .quantity .qty{
	border:1.5px solid var(--wp--preset--color--border-strong);
	border-radius:var(--wp--custom--radius--sm);padding:.5em;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active{
	background:var(--wp--preset--color--surface);border-bottom-color:var(--wp--preset--color--surface);
}
.woocommerce div.product .woocommerce-tabs ul.tabs li a{color:var(--wp--preset--color--ink-muted)}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:var(--wp--preset--color--brand-deep)}

/* Onglets & titres de section */
.woocommerce .products h2,.woocommerce .related h2,.woocommerce .upsells h2{
	font-weight:700;letter-spacing:-.02em;
}

/* Panier & totaux (classique) */
.woocommerce table.shop_table{
	border:1px solid var(--wp--preset--color--line);border-radius:var(--wp--custom--radius--lg);
	overflow:hidden;
}
.woocommerce .cart-collaterals .cart_totals,
.woocommerce-cart .cart-collaterals .cart_totals{border-radius:var(--wp--custom--radius--lg)}

/* Panier & checkout (blocs) */
.wc-block-components-totals-item__value,
.wc-block-components-product-price{color:var(--wp--preset--color--ink)}
.wc-block-checkout__form .wc-block-components-text-input input,
.wc-block-components-text-input input.components-form-token-field__input,
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce-account form input{
	border:1.5px solid var(--wp--preset--color--border-strong)!important;
	border-radius:var(--wp--custom--radius--sm)!important;
}
.wc-block-components-text-input input:focus,
.woocommerce form .form-row input.input-text:focus{
	box-shadow:0 0 0 3px rgba(9,122,85,.3)!important;
	border-color:var(--wp--preset--color--brand-strong)!important;
}

/* Notices WooCommerce à la charte */
.woocommerce-message,.wc-block-components-notice-banner.is-success{
	border-top-color:var(--wp--preset--color--brand)!important;
	background:var(--wp--preset--color--brand-tint);
}
.woocommerce-info,.wc-block-components-notice-banner.is-info{
	border-top-color:var(--wp--preset--color--info)!important;
}
.woocommerce-error,.wc-block-components-notice-banner.is-error{
	border-top-color:var(--wp--preset--color--garde)!important;
}
.woocommerce-message .button,.woocommerce-info .button{color:var(--wp--preset--color--ink)}

/* Compte client */
.woocommerce-account .woocommerce-MyAccount-navigation ul{
	border:1px solid var(--wp--preset--color--line);border-radius:var(--wp--custom--radius--lg);
	overflow:hidden;list-style:none;padding:0;margin:0;
}
.woocommerce-account .woocommerce-MyAccount-navigation li{border-bottom:1px solid var(--wp--preset--color--line)}
.woocommerce-account .woocommerce-MyAccount-navigation li a{display:block;padding:.7em 1em;text-decoration:none}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a{
	background:var(--wp--preset--color--brand-tint);color:var(--wp--preset--color--brand-deep);font-weight:700;
}

/* Fil d'Ariane */
.woocommerce .woocommerce-breadcrumb{color:var(--wp--preset--color--ink-muted);font-size:.9rem}

/* Cohérence de largeur : contenu Woo dans la largeur du contenu */
.woocommerce-page .wp-block-group.is-layout-constrained > .woocommerce{max-width:100%}

/* =======================================================================
   ÉLÉVATION « 2026 » — style premium global + e-commerce
   ======================================================================= */

/* --- Interactions globales --- */
html{scroll-behavior:smooth}
::selection{background:var(--wp--preset--color--brand-tint);color:var(--wp--preset--color--brand-deep)}
.wp-block-button__link{transition:transform .15s ease,background .18s ease,box-shadow .18s ease,color .18s ease}
.wp-block-button:not(.is-style-outline):not(.gohealt-mobile-cta *) > .wp-block-button__link.has-brand-background-color,
.wp-block-button:not(.is-style-outline) > .wp-block-button__link:not(.has-background){
	box-shadow:0 8px 20px rgba(16,185,129,.28);
}
.wp-block-button__link:hover{transform:translateY(-1px)}
.wp-block-button.is-style-outline .wp-block-button__link{border-width:1.5px}

/* Eyebrow un peu plus fin / moderne */
.gohealt-eyebrow{border:1px solid color-mix(in srgb,var(--wp--preset--color--brand) 25%,transparent)}

/* Cartes : ombre douce + transition */
.gohealt-card{transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}

/* --- GRILLE PRODUITS (2026) : classique + blocs --- */
/* Les marges horizontales restent « auto » : c'est par elles que la mise en
   page centrée des thèmes de blocs centre la grille. Un « margin:0 » global —
   celui que ce fichier posait auparavant — collait toute la boutique contre le
   bord gauche de l'écran, la grille d'un côté et le titre de l'autre. */
/* Les paliers de largeur de carte sont dictés par le contenu, pas par un nombre
   de colonnes choisi d'avance. Une carte de parapharmacie porte un titre long
   (« Sérum physiologique · 40 unidoses »), une note, un statut de stock, un prix
   et un bouton d'achat. À 158 px de largeur minimale, la grille tenait six
   colonnes de 185 px sur un écran de bureau : chaque titre passait sur trois
   lignes et le bouton « Ajouter au panier » touchait ses deux bords. Quatre
   colonnes de 285 px laissent le titre sur deux lignes au plus. Sur téléphone,
   « min(100%,168px) » garde deux colonnes — une seule donnerait une page
   interminable — sans jamais déborder d'un écran étroit. */
.woocommerce ul.products{
	display:grid !important;
	grid-template-columns:repeat(auto-fill,minmax(min(100%,168px),1fr));
	gap:clamp(.7rem,.5rem + .7vw,1.1rem);
	margin:0 auto !important;padding:0 !important;list-style:none;
	width:100%;
}
@media(min-width:600px){
	.woocommerce ul.products{grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr))}
}
@media(min-width:1024px){
	.woocommerce ul.products{grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}
}
.woocommerce ul.products::before,.woocommerce ul.products::after{content:none !important;display:none !important}
.woocommerce ul.products li.product{
	width:auto !important;float:none !important;margin:0 !important;padding:0 !important;
	display:flex;flex-direction:column;text-align:left;
	background:var(--wp--preset--color--surface);
	border:1px solid var(--wp--preset--color--line);
	border-radius:20px;overflow:hidden;
	transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.woocommerce ul.products li.product:hover{
	transform:translateY(-4px);
	box-shadow:0 18px 40px rgba(6,78,59,.12);
	border-color:var(--wp--preset--color--brand);
}
.woocommerce ul.products li.product a.woocommerce-LoopProduct-link{
	display:flex;flex-direction:column;flex:1;text-decoration:none;color:inherit;padding:.5rem .5rem 0;
}
.woocommerce ul.products li.product img{
	margin:0 0 .25rem !important;border-radius:12px !important;width:100%;height:132px;object-fit:contain;
	background:var(--wp--preset--color--mist);padding:.6rem;box-sizing:border-box;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title{
	padding:.35rem .25rem .1rem !important;font-size:.84rem !important;font-weight:600;line-height:1.3;
}
.woocommerce ul.products li.product .price{
	padding:0 .25rem !important;margin-top:auto;font-weight:800;color:var(--wp--preset--color--ink) !important;font-size:.95rem;
}
.woocommerce ul.products li.product .star-rating{margin:.35rem .25rem 0 !important;color:#E0A83B;font-size:.75rem}
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product .added_to_cart{
	margin:.55rem .5rem .6rem !important;display:block;text-align:center;border-radius:999px;padding:.5em .9em !important;font-size:.82rem;
}
.woocommerce ul.products li.product .onsale{margin:0;position:absolute}
.woocommerce ul.products li.product{position:relative}

/* Grille produits en BLOCS (boutique / produits similaires / product-collection).
   IMPORTANT : le bloc « Product Collection » de WooCommerce (is-flex-container,
   columns-N) impose une largeur fixe minuscule à chaque <li>, avec une
   spécificité plus forte que la nôtre → les cartes s'effondraient à ~32 px.
   On force donc la remise à zéro de la largeur pour que la grille pilote la
   taille des cartes. */
.wp-block-woocommerce-product-template,
.wc-block-product-template{
	display:grid !important;
	grid-template-columns:repeat(auto-fill,minmax(172px,1fr)) !important;
	gap:clamp(.75rem,.5rem + .8vw,1.25rem) !important;margin:0 !important;padding:0 !important;
	flex-wrap:wrap;
}
.wp-block-woocommerce-product-template > li,
.wc-block-product-template > li{
	list-style:none;margin:0 !important;padding:.5rem !important;
	width:auto !important;max-width:none !important;min-width:0 !important;
	flex:0 1 auto !important;box-sizing:border-box !important;
	background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);
	border-radius:16px;overflow:hidden;display:flex;flex-direction:column;
	transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.wp-block-woocommerce-product-template > li:hover{
	transform:translateY(-4px);box-shadow:0 16px 36px rgba(6,78,59,.12);border-color:var(--wp--preset--color--brand);
}
.wp-block-woocommerce-product-template img{
	height:132px !important;width:100% !important;object-fit:contain !important;aspect-ratio:auto !important;
	background:var(--wp--preset--color--mist);border-radius:12px;padding:.6rem;box-sizing:border-box;margin:0 0 .4rem !important;
}
.wp-block-woocommerce-product-template .wc-block-components-product-image{margin:0 !important}
.wp-block-woocommerce-product-template .wp-block-post-title,
.wp-block-woocommerce-product-template .wc-block-components-product-title{
	font-size:.84rem !important;font-weight:600;margin:.15rem .25rem !important;padding:0 !important;line-height:1.3;
}
.wp-block-woocommerce-product-template .wp-block-woocommerce-product-price,
.wp-block-woocommerce-product-template .wc-block-components-product-price{
	padding:0 .25rem !important;margin-top:auto;font-weight:800;font-size:.95rem;
}
.wp-block-woocommerce-product-template .wp-block-woocommerce-product-rating{padding:0 .25rem;font-size:.75rem}
.wp-block-woocommerce-product-template .wp-block-button{padding:.5rem .25rem 0 !important;margin:0 !important}
.wp-block-woocommerce-product-template .wp-block-button__link{
	border-radius:999px !important;width:100%;justify-content:center;font-size:.8rem;padding:.5em .9em !important;
}

/* --- BARRE OUTILS BOUTIQUE --- */
.woocommerce .woocommerce-result-count,
.wc-block-product-sort-select{margin:0}
.woocommerce-notices-wrapper:empty{display:none}
.woocommerce-products-header__title.page-title{font-size:clamp(2rem,1.6rem + 2vw,3rem);letter-spacing:-.03em}

/* --- FICHE PRODUIT (2026) --- */
/* Fiche produit : centrée, largeur maîtrisée. On laisse le template en blocs
   gérer la répartition image / résumé (ne pas forcer de grille ici). */
.woocommerce div.product{max-width:1080px;margin-inline:auto;width:100%}
.single-product .woocommerce-breadcrumb,
.single-product .woocommerce-notices-wrapper{max-width:1080px;margin-inline:auto}
/* Galerie compacte quand le résumé est à côté (desktop). */
@media(min-width:900px){
	.woocommerce div.product .woocommerce-product-gallery,
	.woocommerce div.product .wp-block-woocommerce-product-image-gallery{max-width:340px}
}
.woocommerce div.product .woocommerce-product-gallery{margin:0 !important;width:100% !important}
.woocommerce div.product .woocommerce-product-gallery__wrapper img{border-radius:24px;border:1px solid var(--wp--preset--color--line)}
.woocommerce div.product .woocommerce-product-gallery__trigger{border-radius:999px}
.woocommerce div.product .entry-summary{margin:0 !important;width:100% !important}
@media(min-width:900px){.woocommerce div.product .entry-summary{position:sticky;top:1.5rem}}
.woocommerce div.product .product_title{font-size:clamp(1.6rem,1.3rem + 1.4vw,2.4rem);letter-spacing:-.02em;margin:.1em 0 .3em}
.woocommerce div.product p.price,.woocommerce div.product .stock{margin-top:.3em}
.woocommerce div.product p.price,.woocommerce div.product .price{font-size:1.7rem;font-weight:800;color:var(--wp--preset--color--ink)}
.woocommerce div.product .price del{color:var(--wp--preset--color--ink-muted);font-weight:400;font-size:1.1rem}
.woocommerce div.product form.cart{margin:1.3rem 0}
.woocommerce div.product form.cart .quantity .qty{height:48px}
.woocommerce div.product .single_add_to_cart_button{
	padding:1em 2em !important;font-size:1.05rem !important;border-radius:999px !important;width:auto;
}
.woocommerce div.product .woocommerce-product-details__short-description{color:var(--wp--preset--color--ink-muted)}
/* Réassurance sous le bouton (générée par le template block) */
.gohealt-reassurance{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem .9rem;margin-top:1.2rem;max-width:430px}
.gohealt-reassurance .ri{display:flex;gap:.5rem;align-items:center;font-size:.85rem;color:var(--wp--preset--color--ink-muted)}
.gohealt-reassurance .ri strong{color:var(--wp--preset--color--ink);font-weight:600}
/* Onglets pill */
.woocommerce div.product .woocommerce-tabs{grid-column:1/-1;margin-top:clamp(1.5rem,1rem + 2vw,3rem)}
.woocommerce div.product .woocommerce-tabs ul.tabs{border:0;padding:0;margin:0 0 1.2rem;display:flex;flex-wrap:wrap;gap:.5rem}
.woocommerce div.product .woocommerce-tabs ul.tabs::before{border:0}
.woocommerce div.product .woocommerce-tabs ul.tabs li{
	border:1px solid var(--wp--preset--color--line) !important;background:var(--wp--preset--color--surface);border-radius:999px;margin:0;padding:0;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after{display:none !important;border:0 !important}
.woocommerce div.product .woocommerce-tabs ul.tabs li a{padding:.55em 1.2em !important;color:var(--wp--preset--color--ink-muted);font-weight:600}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:var(--wp--preset--color--brand-tint)}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:var(--wp--preset--color--brand-deep)}
.woocommerce div.product .related,.woocommerce div.product .upsells{grid-column:1/-1;margin-top:clamp(1.5rem,1rem + 2vw,3rem)}
.woocommerce div.product .related > h2,.woocommerce div.product .upsells > h2{font-size:clamp(1.4rem,1.2rem + 1vw,2rem);letter-spacing:-.02em;margin-bottom:1.2rem}

/* --- PANIER / CHECKOUT (blocs) 2026 --- */
.wp-block-woocommerce-cart,.wp-block-woocommerce-checkout{--wc-brand:var(--wp--preset--color--brand)}
.wc-block-cart-items,.wc-block-components-sidebar,.wc-block-checkout__sidebar .wc-block-components-totals-wrapper{
	border-radius:20px;
}
.wc-block-components-sidebar,.wc-block-checkout__sidebar > .wc-block-components-panel,
.wc-block-cart .wc-block-cart__totals-title + *{
	background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);
	border-radius:20px;padding:1.25rem;
}
.wc-block-components-button.contained{border-radius:999px !important;background:var(--wp--preset--color--brand) !important;color:var(--wp--preset--color--ink) !important;font-weight:700}
.wc-block-components-button.contained:hover{background:var(--wp--preset--color--brand-hover) !important}
.wc-block-components-totals-item__value{font-weight:700}
.wc-block-components-order-summary,.wc-block-components-totals-footer-item{font-weight:700}

/* Panier vide : icône à la charte */
.wc-block-cart__empty-cart__title,.cart-empty{font-weight:700}

/* --- COMPTE CLIENT : formulaires arrondis ---

   box-sizing n'est pas décoratif ici. WordPress ne remet pas box-sizing à
   border-box sur le contenu d'un thème de blocs, et WooCommerce laisse ses
   conteneurs de compte en content-box. Le panneau reçoit une largeur de 100 %
   de sa colonne ; la marge intérieure et la bordure s'ajoutaient par-dessus.
   Mesuré sur /mon-compte/ à 390 px de large : le panneau faisait 384 px dans
   une colonne de 374 px, et la page entière glissait de 10 px sur le côté —
   ce petit débordement horizontal qu'on sent au doigt sans savoir d'où il
   vient. Les formulaires de connexion sont dans le même cas : leur max-width
   de 520 px valait en réalité 584 px avec les marges intérieures. */
.woocommerce-account .woocommerce-MyAccount-content{
	background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);
	border-radius:20px;padding:clamp(1.2rem,1rem + 1vw,2rem);box-sizing:border-box;max-width:100%;
}
.woocommerce form .form-row label{font-weight:600}
.woocommerce-form-login,.woocommerce-form-register,.woocommerce-ResetPassword{
	background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);
	border-radius:20px;padding:clamp(1.2rem,1rem + 1vw,2rem);max-width:520px;box-sizing:border-box;
}

/* --- Titres de section e-commerce --- */
.woocommerce .products h2{letter-spacing:-.02em}

/* --- Bandeau d'avantages boutique --- */
.gohealt-shop-usp{
	display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;
	background:var(--wp--preset--color--surface);
	border:1px solid var(--wp--preset--color--line);border-radius:20px;
	padding:1.1rem 1.3rem;margin:0 0 clamp(1.5rem,1rem + 2vw,2.5rem);
	clear:both;
}
.gohealt-shop-usp .usp{display:flex;gap:.7rem;align-items:center}
.gohealt-shop-usp .usp-ic{
	flex:none;width:42px;height:42px;border-radius:999px;display:grid;place-items:center;
	background:var(--wp--preset--color--brand-tint);color:var(--wp--preset--color--brand-deep);
}
.gohealt-shop-usp .usp-t{display:flex;flex-direction:column;line-height:1.3}
.gohealt-shop-usp .usp-t strong{font-weight:700;font-size:.95rem}
.gohealt-shop-usp .usp-t span{font-size:.82rem;color:var(--wp--preset--color--ink-muted)}

/* =======================================================================
   BIBLIOTHÈQUE DE COMPOSANTS UX — refonte haut de gamme
   (utilisée dans les blocs wp:html des templates)
   ======================================================================= */
.gh-wrap{max-width:1200px;margin-inline:auto;padding-inline:clamp(1rem,.6rem + 2vw,1.5rem)}
.gh-narrow{max-width:820px}

/* En-tête de section */
.gh-head{max-width:760px;margin-bottom:clamp(1.75rem,1.2rem + 2vw,2.75rem)}
.gh-head.center{margin-inline:auto;text-align:center}
.gh-head .gh-kicker{
	display:inline-flex;align-items:center;gap:.5em;font-size:.8rem;font-weight:700;
	letter-spacing:.1em;text-transform:uppercase;color:var(--wp--preset--color--brand-strong);
	background:var(--wp--preset--color--brand-tint);border:1px solid color-mix(in srgb,var(--wp--preset--color--brand) 22%,transparent);
	padding:.4em .9em;border-radius:999px;margin-bottom:1rem;
}
.gh-head h2{font-size:clamp(1.9rem,1.5rem + 1.8vw,2.9rem);letter-spacing:-.03em;line-height:1.05;margin:0 0 .5rem}
.gh-head p{font-size:1.15rem;color:var(--wp--preset--color--ink-muted);margin:0}
.gh-head .gh-head-row{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;flex-wrap:wrap;max-width:none}
.gh-link{font-weight:700;color:var(--wp--preset--color--brand-strong);text-decoration:none;white-space:nowrap;display:inline-flex;align-items:center;gap:.35em}
.gh-link:hover{gap:.6em}

/* Grilles */
.gh-grid{display:grid;gap:clamp(.9rem,.6rem + 1vw,1.5rem)}
.gh-grid.c2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.gh-grid.c3{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.gh-grid.c4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.gh-grid.c6{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}

/* Pastille d'icône */
.gh-ico{flex:none;display:grid;place-items:center;width:52px;height:52px;border-radius:16px;
	background:var(--wp--preset--color--brand-tint);color:var(--wp--preset--color--brand-deep)}
.gh-ico svg{width:26px;height:26px}
.gh-ico.round{border-radius:999px;width:46px;height:46px}
.gh-ico.on-deep{background:rgba(255,255,255,.12);color:var(--wp--preset--color--accent)}

/* Carte catégorie */
.gh-cat{display:flex;flex-direction:column;align-items:center;gap:.8rem;text-align:center;text-decoration:none;
	color:var(--wp--preset--color--ink);background:var(--wp--preset--color--surface);
	border:1px solid var(--wp--preset--color--line);border-radius:20px;padding:1.5rem 1rem;
	transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.gh-cat:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(6,78,59,.12);border-color:var(--wp--preset--color--brand)}
.gh-cat b{font-weight:600;font-size:.98rem}

/* Carte feature / service */
.gh-feature{display:flex;flex-direction:column;gap:.85rem;background:var(--wp--preset--color--surface);
	border:1px solid var(--wp--preset--color--line);border-radius:22px;padding:1.6rem;
	transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.gh-feature:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(6,78,59,.10);border-color:color-mix(in srgb,var(--wp--preset--color--brand) 40%,var(--wp--preset--color--line))}
.gh-feature h3{font-size:1.2rem;margin:0;letter-spacing:-.01em}
.gh-feature p{margin:0;color:var(--wp--preset--color--ink-muted);font-size:.95rem;flex:1}
.gh-feature .gh-link{margin-top:.3rem}
.gh-feature .price-hint{font-weight:700;color:var(--wp--preset--color--brand-strong);font-size:.9rem}

/* Bandeau confiance */
.gh-trust{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1.25rem}
.gh-trust .ti{display:flex;gap:.8rem;align-items:center}
.gh-trust .ti b{display:block;font-weight:700;font-size:.95rem}
.gh-trust .ti span{font-size:.85rem;color:var(--wp--preset--color--ink-muted)}

/* Piliers santé (cocons) */
.gh-pillar{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;gap:1.2rem;
	min-height:190px;border-radius:22px;padding:1.5rem;text-decoration:none;color:#fff;
	background:linear-gradient(150deg,var(--wp--preset--color--brand-strong),var(--wp--preset--color--brand-deep));
	transition:transform .2s ease,box-shadow .2s ease}
.gh-pillar:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(6,78,59,.22)}
.gh-pillar h3{color:#fff;margin:0;font-size:1.3rem}
.gh-pillar span{color:var(--wp--preset--color--accent);font-size:.9rem}
.gh-pillar .gh-ico{background:rgba(255,255,255,.14);color:#fff}

/* Puces de réassurance (héros) */
.gh-chips{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;margin-top:1.5rem;list-style:none;padding:0}
.gh-chips li{display:inline-flex;align-items:center;gap:.45em;font-size:.9rem;font-weight:600;color:var(--wp--preset--color--brand-deep)}
.gh-chips svg{width:18px;height:18px;color:var(--wp--preset--color--brand)}

/* Statistiques */
.gh-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;text-align:center}
.gh-stat .n{font-size:clamp(1.8rem,1.4rem + 1.5vw,2.6rem);font-weight:800;letter-spacing:-.03em;color:var(--wp--preset--color--brand-deep)}
.gh-stat .l{font-size:.9rem;color:var(--wp--preset--color--ink-muted)}

/* Avis */
.gh-review{background:var(--wp--preset--color--base);border:1px solid var(--wp--preset--color--line);border-radius:20px;padding:1.5rem}
.gh-review .stars{color:#E0A83B;letter-spacing:2px;font-size:.95rem}
.gh-review p{margin:.7rem 0;font-size:1rem}
.gh-review .who{display:flex;align-items:center;gap:.6rem;font-size:.88rem;color:var(--wp--preset--color--ink-muted)}
.gh-review .av{width:38px;height:38px;border-radius:999px;background:var(--wp--preset--color--mist-deep);color:var(--wp--preset--color--brand-deep);display:grid;place-items:center;font-weight:700}

/* --- FOOTER refondu --- */
.gh-foot{background:var(--wp--preset--color--brand-deep);color:#CFEFE0}
.gh-foot a{color:#EAF7F0;text-decoration:none}
.gh-foot a:hover{color:#fff;text-decoration:underline}
.gh-foot .gh-wrap{padding-block:clamp(2.5rem,2rem + 2vw,4rem)}
.gh-foot-top{display:grid;grid-template-columns:1.6fr 1fr 1fr 1.1fr;gap:2rem}
.gh-foot h4{color:#fff;font-size:1rem;margin:0 0 1rem;letter-spacing:.02em}
.gh-foot ul{list-style:none;padding:0;margin:0;display:grid;gap:.55rem;font-size:.92rem}
.gh-foot .brand-blurb{max-width:36ch;color:#B7DECC;font-size:.92rem}
.gh-foot .flogo{font-size:1.5rem;font-weight:800;color:#fff;letter-spacing:-.03em;margin-bottom:.6rem;display:inline-flex;align-items:center;gap:.5rem}
.gh-foot .flogo svg{width:28px;height:28px}
.gh-foot .news{display:flex;gap:.5rem;margin-top:1rem;max-width:340px}
.gh-foot .news input{flex:1;min-width:0;border:0;border-radius:999px;padding:.7rem 1rem;font:inherit;color:var(--wp--preset--color--ink)}
.gh-foot .news button{border:0;border-radius:999px;padding:.7rem 1.15rem;font:inherit;font-weight:700;background:var(--wp--preset--color--brand);color:var(--wp--preset--color--ink);cursor:pointer;white-space:nowrap}
.gh-foot .news button:hover{background:var(--wp--preset--color--accent)}
.gh-foot .fcontact{display:grid;gap:.5rem;font-size:.92rem}
.gh-foot .fcontact .row{display:flex;gap:.6rem;align-items:flex-start}
.gh-foot .fcontact svg{width:18px;height:18px;flex:none;margin-top:.15rem;color:var(--wp--preset--color--accent)}
.gh-foot-bottom{margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.15);display:flex;justify-content:space-between;gap:1rem 2rem;flex-wrap:wrap;align-items:center;font-size:.82rem;color:#9FCBB9}
.gh-foot-bottom a{color:#9FCBB9}
.gh-pay{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.gh-pay .chip{background:rgba(255,255,255,.1);border-radius:8px;padding:.3rem .6rem;font-size:.72rem;font-weight:700;color:#EAF7F0;letter-spacing:.03em}
.gh-social{display:flex;gap:.5rem}
.gh-social a{width:36px;height:36px;border-radius:999px;background:rgba(255,255,255,.1);display:grid;place-items:center;color:#fff}
.gh-social a:hover{background:var(--wp--preset--color--brand);color:var(--wp--preset--color--ink)}
.gh-social svg{width:18px;height:18px}
@media(max-width:860px){.gh-foot-top{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.gh-foot-top{grid-template-columns:1fr}}

/* --- Marque d'en-tête : image, texte, ou les deux ---------------------------
 *
 * La place réservée au logo est une hauteur, pas une taille de fichier :
 * --gh-brand-h est écrite en ligne par le thème depuis le réglage
 * « Hauteur réservée », et c'est elle qui contraint aussi bien une image de
 * 3000 px de large qu'un nom de vingt-cinq lettres.
 *
 * Pour l'image, max-height + width:auto suffisent : le rapport est conservé et
 * rien ne déborde. Pour le texte, on n'a aucun moyen de mesurer un rendu en
 * CSS pur — mais on connaît le nombre de caractères, transmis en
 * --gh-brand-len. Un nom court garde donc sa pleine taille, un nom long
 * rétrécit progressivement, et le clamp() empêche les deux extrêmes : jamais
 * illisible, jamais démesuré.
 */
.gh-brand{
	--gh-brand-h:46px;
	display:inline-flex;align-items:center;gap:.55rem;min-width:0;
	max-width:min(100%,var(--gh-brand-max,340px));
	text-decoration:none;font-weight:800;letter-spacing:-.03em;
	color:var(--wp--preset--color--brand-deep)
}
.gh-brand:hover .gh-brandtext{color:var(--wp--preset--color--brand-strong)}
.gh-brandtext{
	color:var(--wp--preset--color--brand-deep);min-width:0;
	font-size:clamp(1rem,calc(26rem / max(var(--gh-brand-len,14),6)),1.45rem);
	line-height:1.15;overflow-wrap:anywhere
}
/* L'image du logo, quelle que soit sa taille d'origine. */
.gh-brandimg{
	display:block;width:auto;height:auto;
	max-height:var(--gh-brand-h);max-width:100%;
	object-fit:contain
}
/* Image + texte : l'image cède un peu de hauteur pour que l'ensemble tienne
   dans la même bande que le texte seul. */
.gh-brand.is-both .gh-brandimg{max-height:calc(var(--gh-brand-h) * .86)}
.gh-brand.is-both .gh-brandtext{font-size:clamp(.9rem,calc(20rem / max(var(--gh-brand-len,14),6)),1.2rem)}
.gh-logomark{display:inline-grid;place-items:center;border-radius:11px;
	width:clamp(28px,calc(var(--gh-brand-h) * .74),44px);
	height:clamp(28px,calc(var(--gh-brand-h) * .74),44px);
	background:var(--wp--preset--color--brand);color:var(--wp--preset--color--ink);flex:none}
.gh-logomark svg{width:58%;height:58%}
/* Sur un petit écran, la barre de recherche et le panier passent avant le
   logo : on lui reprend un peu de place plutôt que de laisser l'en-tête
   déborder. */
@media(max-width:600px){
	.gh-brand{--gh-brand-max:60vw}
	.gh-brandimg{max-height:calc(var(--gh-brand-h) * .8)}
}
/* Enveloppe <picture> des images optimisées : purement technique, elle ne doit
   rien changer à la mise en page héritée du <img> qu'elle contient. */
.gh-pic{display:contents}

/* --- Filtres boutique (chips catégories) --- */
.gohealt-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 clamp(1.25rem,1rem + 1.5vw,2rem);clear:both}
.gohealt-filters .chip{display:inline-flex;align-items:center;padding:.5rem 1rem;border-radius:999px;
	border:1.5px solid var(--wp--preset--color--line);background:var(--wp--preset--color--surface);
	color:var(--wp--preset--color--ink);text-decoration:none;font-size:.88rem;font-weight:600;transition:all .15s ease}
.gohealt-filters .chip:hover{border-color:var(--wp--preset--color--brand);color:var(--wp--preset--color--brand-strong)}
.gohealt-filters .chip.is-active{background:var(--wp--preset--color--brand);border-color:var(--wp--preset--color--brand);color:var(--wp--preset--color--ink)}

/* --- Cartes promotions --- */
.gh-promos{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:clamp(.9rem,.6rem + 1vw,1.25rem)}
@media(max-width:900px){.gh-promos{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.gh-promos{grid-template-columns:1fr}}
/* La carte est un <article> : le titre et le texte ne sont plus imbriqués dans
   une ancre. Seul le bouton est un vrai lien, étiré sur toute la carte par
   ::after — toute la surface reste cliquable, le HTML reste valide et aucun
   filtre de mise en forme ne peut dupliquer la carte. */
.gh-promo{position:relative;overflow:hidden;border-radius:22px;padding:1.8rem;min-height:210px;
	display:flex;flex-direction:column;justify-content:flex-end;gap:.2rem;color:#fff;
	transition:transform .2s ease,box-shadow .2s ease}
.gh-promo:hover{transform:translateY(-3px);box-shadow:0 20px 44px rgba(6,78,59,.24)}
.gh-promo:focus-within{box-shadow:0 0 0 3px var(--wp--preset--color--brand),0 20px 44px rgba(6,78,59,.24)}
.gh-promo .tag{position:absolute;top:1.4rem;left:1.8rem;display:inline-flex;align-items:center;gap:.4em;
	font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
	background:rgba(255,255,255,.2);padding:.3em .8em;border-radius:999px}
.gh-promo h3{color:#fff;font-size:clamp(1.35rem,1.1rem + 1vw,2rem);margin:0 0 .2rem;letter-spacing:-.02em;line-height:1.1}
.gh-promo p{color:rgba(255,255,255,.88);margin:0 0 1rem;font-size:.95rem}
.gh-promo .cta{align-self:flex-start;background:#fff;color:var(--wp--preset--color--brand-deep);font-weight:700;
	padding:.6rem 1.2rem;border-radius:999px;font-size:.9rem;text-decoration:none}
.gh-promo .cta::after{content:"";position:absolute;inset:0;border-radius:inherit}
.gh-promo .cta:focus-visible{outline:none}
.gh-promo.p1{background:linear-gradient(150deg,#0B8F66,#064E3B)}
.gh-promo.p2{background:linear-gradient(150deg,#0E7C99,#0A4A5C)}
.gh-promo.p3{background:linear-gradient(150deg,#C2410C,#7A2A0C)}

/* =======================================================================
   CHAT FLOTTANT · BADGE TÉLÉPHONE · IMAGES ADAPTATIVES
   ======================================================================= */

/* Bouton de chat flottant (WhatsApp / Telegram) */
.gohealt-chat{
	position:fixed;right:16px;bottom:16px;z-index:90;
	display:inline-flex;align-items:center;gap:.55rem;
	background:var(--wp--preset--color--brand);color:var(--wp--preset--color--ink);
	border-radius:999px;padding:.5rem;font-weight:700;font-size:.92rem;text-decoration:none;
	box-shadow:0 12px 30px rgba(6,78,59,.30);transition:transform .15s ease,box-shadow .15s ease;
}
.gohealt-chat:hover{transform:translateY(-2px);box-shadow:0 16px 38px rgba(6,78,59,.36)}
.gohealt-chat__ic{display:grid;place-items:center;width:42px;height:42px;border-radius:999px;background:rgba(10,21,18,.08);color:var(--wp--preset--color--brand-deep)}
.gohealt-chat__label{padding-right:.7rem}
@media(max-width:899px){
	.gohealt-chat{bottom:86px}          /* au-dessus de la barre CTA mobile */
	.gohealt-chat__label{display:none}  /* icône seule sur mobile */
}

/* Badge « contact téléphone » sur la fiche produit */
.gohealt-phone-badge{
	display:inline-flex;align-items:center;gap:.8rem;margin-top:1.1rem;
	background:var(--wp--preset--color--brand-tint);
	border:1px solid color-mix(in srgb,var(--wp--preset--color--brand) 25%,transparent);
	border-radius:16px;padding:.8rem 1.1rem;text-decoration:none;color:var(--wp--preset--color--brand-deep);
	transition:transform .15s ease,box-shadow .15s ease;
}
.gohealt-phone-badge:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(6,78,59,.12)}
.gohealt-phone-badge > svg{color:var(--wp--preset--color--brand-strong);flex:none}
.gohealt-phone-badge > span{display:flex;flex-direction:column;line-height:1.25}
.gohealt-phone-badge strong{font-weight:600;font-size:.85rem;color:var(--wp--preset--color--ink-muted)}
.gohealt-phone-badge > span > span{font-size:1.1rem;font-weight:800;color:var(--wp--preset--color--brand-strong)}

/* --- Images adaptatives : toute image s'ajuste à son cadre --- */
.wp-block-post-featured-image img{width:100%;height:100%;object-fit:cover}
.wp-block-image img{max-width:100%;height:auto}
figure.wp-block-image.is-style-rounded img,figure.wp-block-image img{border-radius:inherit}
/* Une image déposée comme 1er enfant d'une carte devient un fond couvrant.
   Accepte les deux formes : la balise <img> nue (HTML rédigé à la main) ET le
   bloc Image de Gutenberg, qui produit <figure class="wp-block-image">. Ainsi,
   dans l'éditeur, il suffit de glisser un bloc Image en tête d'une carte pour
   lui donner une image de fond — sans toucher au code.
   `isolation:isolate` crée un contexte d'empilement propre à la carte : le fond
   peut alors passer en z-index:-1 (donc derrière TOUT le contenu, y compris les
   futurs blocs ajoutés par le client) sans jamais disparaître sous la page. */
.gh-cat,.gh-feature,.gh-pillar,.gh-promo,.gohealt-card{position:relative;isolation:isolate}
.gh-cat > img:first-child,.gh-feature > img:first-child,
.gh-pillar > img:first-child,.gh-promo > img:first-child,
.gh-cat > figure.wp-block-image:first-child,.gh-feature > figure.wp-block-image:first-child,
.gh-pillar > figure.wp-block-image:first-child,.gh-promo > figure.wp-block-image:first-child{
	position:absolute;inset:0;width:100%;height:100%;margin:0;
	object-fit:cover;overflow:hidden;z-index:-1;border-radius:inherit;
}
.gh-cat > figure.wp-block-image:first-child img,.gh-feature > figure.wp-block-image:first-child img,
.gh-pillar > figure.wp-block-image:first-child img,.gh-promo > figure.wp-block-image:first-child img{
	/* `!important` assumé : l'éditeur écrit une largeur/hauteur en style
	   « inline » dès que l'image est redimensionnée à la souris, et une
	   image de FOND doit toujours couvrir la carte entière. */
	width:100%!important;height:100%!important;max-width:none;
	object-fit:cover;border-radius:inherit;
}
.gh-pillar > img:first-child,.gh-promo > img:first-child,
.gh-pillar > figure.wp-block-image:first-child,.gh-promo > figure.wp-block-image:first-child{opacity:.9}
/* Cadre média générique réutilisable (ratio + recadrage auto) */
.gh-frame{position:relative;overflow:hidden;border-radius:16px;background:var(--wp--preset--color--mist);aspect-ratio:4/3}
.gh-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* =======================================================================
   VARIATIONS PRODUIT — sélecteur moderne (taille, format, dosage…)
   ======================================================================= */
.woocommerce div.product form.cart .variations{
	width:100%;border:0;margin:0 0 1rem;border-collapse:collapse;display:block;
}
.woocommerce div.product form.cart .variations tbody{display:grid;gap:.9rem}
.woocommerce div.product form.cart .variations tr{display:grid;gap:.35rem;margin:0}
.woocommerce div.product form.cart .variations th.label{
	text-align:left;font-weight:700;font-size:.9rem;color:var(--wp--preset--color--ink);
	padding:0;width:auto;line-height:1.3;
}
.woocommerce div.product form.cart .variations td.value{padding:0;position:relative}
.woocommerce div.product form.cart .variations select{
	width:100%;min-height:50px;padding:.65em 2.6em .65em 1em;font:inherit;font-size:1rem;
	border:1.5px solid var(--wp--preset--color--border-strong);border-radius:14px;
	background-color:var(--wp--preset--color--surface);color:var(--wp--preset--color--ink);
	appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;
	background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23064E3B' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
	background-repeat:no-repeat;background-position:right 1em center;background-size:18px;
	transition:border-color .15s ease,box-shadow .15s ease;
}
.woocommerce div.product form.cart .variations select:hover{border-color:var(--wp--preset--color--brand)}
.woocommerce div.product form.cart .variations select:focus{
	border-color:var(--wp--preset--color--brand-strong);
	box-shadow:0 0 0 3px rgba(9,122,85,.25);outline:none;
}
.woocommerce div.product form.cart .reset_variations{
	display:inline-flex;align-items:center;gap:.3em;margin-top:.1rem;
	font-size:.85rem;font-weight:600;color:var(--wp--preset--color--brand-strong);text-decoration:none;
}
.woocommerce div.product form.cart .reset_variations:hover{text-decoration:underline}
/* Bloc prix + disponibilité de la variation choisie */
.woocommerce div.product .single_variation_wrap{margin-top:.3rem}
.woocommerce div.product .single_variation .woocommerce-variation-price{margin-bottom:.7rem}
.woocommerce div.product .single_variation .woocommerce-variation-price .price{
	font-size:1.7rem;font-weight:800;color:var(--wp--preset--color--ink);
}
.woocommerce div.product .single_variation .woocommerce-variation-availability{margin-bottom:.5rem}
.woocommerce div.product .single_variation .woocommerce-variation-availability .stock{
	display:inline-flex;align-items:center;gap:.4em;font-weight:600;font-size:.9rem;
}
.woocommerce div.product .single_variation .woocommerce-variation-availability .stock.in-stock{color:var(--wp--preset--color--brand-strong)}
.woocommerce div.product .single_variation .woocommerce-variation-availability .stock.out-of-stock{color:var(--wp--preset--color--garde)}
.woocommerce div.product .woocommerce-variation-description p{color:var(--wp--preset--color--ink-muted);font-size:.92rem;margin:.2rem 0 .6rem}

/* Swatches de variation (boutons cliquables — amélioration progressive du <select>) */
.gh-swatch-hidden{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.gh-swatches{display:flex;flex-wrap:wrap;gap:.5rem}
.gh-swatch{
	min-width:54px;padding:.62em 1.1em;font:inherit;font-weight:600;font-size:.95rem;line-height:1.2;
	border:1.5px solid var(--wp--preset--color--border-strong);border-radius:12px;
	background:var(--wp--preset--color--surface);color:var(--wp--preset--color--ink);
	cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease,box-shadow .15s ease,transform .1s ease;
}
.gh-swatch:hover{border-color:var(--wp--preset--color--brand);color:var(--wp--preset--color--brand-strong)}
.gh-swatch:active{transform:translateY(1px)}
.gh-swatch.is-selected{
	border-color:var(--wp--preset--color--brand);
	background:var(--wp--preset--color--brand-tint);
	color:var(--wp--preset--color--brand-deep);
	box-shadow:inset 0 0 0 1px var(--wp--preset--color--brand);
}
.gh-swatch.is-disabled{
	opacity:.4;cursor:not-allowed;text-decoration:line-through;
	border-color:var(--wp--preset--color--line);color:var(--wp--preset--color--ink-muted);background:var(--wp--preset--color--mist);
}
.gh-swatch:focus-visible{outline:3px solid var(--wp--preset--color--brand-strong);outline-offset:2px}

/* =======================================================================
   IMAGE PRODUIT — zoom (survol) et agrandissement (clic)
   -----------------------------------------------------------------------
   Ces deux comportements se règlent dans WooCommerce › Réglages › Produits.
   Décochés, le thème pose sur <body> la classe correspondante, et c'est elle
   qui déclenche les règles ci-dessous : rien ne s'applique lorsque le réglage
   est coché. Les scripts jquery-zoom et PhotoSwipe, eux, ne sont alors pas
   chargés du tout — voir inc/product-gallery.php.
   ======================================================================= */
/* Ces règles ne portent PAS d'ancêtre « .woocommerce div.product », et c'est
   volontaire. Vérifié dans le DOM : WooCommerce pose « woocommerce » sur <body>
   lui-même. Les règles ordinaires du thème s'écrivent donc bien « .woocommerce
   div.product … », le <body> fournissant l'ancêtre. Mais dès qu'on préfixe par
   une classe de <body> — « .gohealt-no-zoom .woocommerce div.product … » — on
   exige un « .woocommerce » DESCENDANT du <body> : le seul est l'enveloppe
   div.wp-block-group.woocommerce.product, qui porte « product » sur elle-même
   et ne contient aucun autre div.product. Le sélecteur ne désigne alors plus
   personne. La classe de <body> suffit d'ailleurs à cadrer la portée : elle
   n'est posée que sur une fiche produit, et seulement réglage décoché. */
/* Agrandissement au clic décoché : on retire le bouton loupe et on rend
   l'image non cliquable, pour qu'aucun clic ne mène nulle part. */
.gohealt-no-lightbox .woocommerce-product-gallery__trigger{display:none !important}
.gohealt-no-lightbox .woocommerce-product-gallery__image > a{pointer-events:none;cursor:default}
/* Zoom au survol décoché : curseur normal, l'image n'annonce plus de loupe.
   img.zoomImg est le calque que jquery-zoom insère au survol ; le neutraliser
   couvre le cas où une extension tierce charge le script malgré le réglage. */
.gohealt-no-zoom .woocommerce-product-gallery,
.gohealt-no-zoom .woocommerce-product-gallery img,
.gohealt-no-zoom .wp-block-woocommerce-product-image-gallery img{cursor:default !important}
.gohealt-no-zoom .woocommerce-product-gallery img.zoomImg{display:none !important}
/* Les vignettes (multi-images) restent cliquables pour changer d'image. */
.flex-control-thumbs li img{pointer-events:auto;cursor:pointer}

/* =======================================================================
   FICHE PRODUIT — gabarit « titre au-dessus / image / badges au-dessous »
   ======================================================================= */
/* Titre pleine largeur, au-dessus de l'image */
.woocommerce .wp-block-post-title{
	font-size:clamp(1.8rem,1.4rem + 1.6vw,2.6rem);letter-spacing:-.02em;line-height:1.1;margin:.2em 0 .7em;
}
/* Colonnes alignées en haut (permet le sticky du résumé) */
.gohealt-product-cols{align-items:flex-start;margin-top:0 !important}
/* Colonne média : image + courte description dessous */
.gohealt-product-media{max-width:340px}
/* Le statut de stock du plugin suit la description : on le masque ici et on le
   réaffiche à sa place normale (sous le prix) via [gohealt_stock]. */
.gohealt-product-media .gohealt-badges{display:none !important}
.gohealt-badges--summary{margin:.3rem 0 .5rem}
.gohealt-product-media .wp-block-post-excerpt{margin-top:1rem;color:var(--wp--preset--color--ink-muted);font-size:.95rem;line-height:1.55}
.gohealt-product-media .wp-block-post-excerpt p{margin:0}
/* Badges de confiance sous le bouton « Ajouter au panier » (colonne résumé) */
.gohealt-product-summary .gohealt-reassurance{margin-top:1.4rem}
.gohealt-product-summary .gohealt-phone-badge{margin-top:.9rem}

/* =======================================================================
   NOTATION ÉTOILES — moyenne calculée à partir des avis clients
   ======================================================================= */
.gohealt-rating{display:inline-flex;align-items:center;gap:.5rem;margin:.1rem 0 .6rem;font-size:.92rem}
.gohealt-stars{position:relative;display:inline-block;line-height:0;white-space:nowrap}
.gohealt-stars__off,.gohealt-stars__on{display:inline-flex}
.gohealt-stars__off{color:#DBE3DF}
.gohealt-stars__on{position:absolute;top:0;left:0;overflow:hidden;color:#E0A83B}
.gohealt-stars svg{width:18px;height:18px;fill:currentColor;flex:none}
.gohealt-rating__num{font-weight:800;color:var(--wp--preset--color--ink)}
.gohealt-rating__count{color:var(--wp--preset--color--brand-strong);text-decoration:none;font-weight:600}
.gohealt-rating__count:hover{text-decoration:underline}
.gohealt-rating__none{color:var(--wp--preset--color--ink-muted)}
/* Version compacte sur les cartes produit */
.gohealt-rating.is-compact{margin:.4rem .25rem 0;gap:.35rem;font-size:.82rem}
.gohealt-rating.is-compact .gohealt-stars svg{width:15px;height:15px}
@media(min-width:782px){
	.gohealt-product-summary{position:sticky;top:1.5rem}
}
/* Sur mobile, la colonne média reprend toute la largeur */
@media(max-width:781px){
	.gohealt-product-media{max-width:100%}
	.gohealt-product-media .woocommerce-product-gallery,
	.gohealt-product-media .wp-block-woocommerce-product-image-gallery{max-width:420px;margin-inline:auto}
}

/* =======================================================================
   RESPONSIVE — mobile & tablette (cartes, fiche produit, variations)
   ======================================================================= */
/* Tablette : la fiche produit passe en pleine largeur avant l'empilement natif */
@media(max-width:900px){
	.woocommerce div.product{max-width:640px}
	.woocommerce div.product .woocommerce-product-gallery,
	.woocommerce div.product .wp-block-woocommerce-product-image-gallery{max-width:100%;margin-inline:auto !important}
	.woocommerce div.product .single_add_to_cart_button{width:100%}
	.woocommerce div.product form.cart .quantity{display:block;margin-bottom:.7rem}
	.woocommerce div.product form.cart .quantity .qty{width:100%}
}
/* Mobile : 2 cartes par ligne bien lisibles, réassurance sur 1 colonne */
@media(max-width:600px){
	.woocommerce ul.products,
	.wp-block-woocommerce-product-template{
		grid-template-columns:repeat(2,1fr) !important;
		gap:.6rem !important;
	}
	.woocommerce ul.products li.product img,
	.wp-block-woocommerce-product-template img{height:116px !important;padding:.5rem !important}
	.woocommerce ul.products li.product .button,
	.woocommerce ul.products li.product .added_to_cart{font-size:.78rem;padding:.5em .6em !important;margin:.5rem .35rem .5rem !important}
	.gohealt-reassurance{grid-template-columns:1fr}
	.gohealt-shop-usp{grid-template-columns:1fr 1fr;gap:.7rem;padding:.9rem}
	.gohealt-shop-usp .usp-t span{font-size:.75rem}
	.woocommerce div.product .single_variation .woocommerce-variation-price .price{font-size:1.4rem}
}
/* Très petits écrans : la galerie et les CTA restent confortables */
@media(max-width:380px){
	.woocommerce ul.products li.product img,
	.wp-block-woocommerce-product-template img{height:104px !important}
}

/* =======================================================================
   SECTIONS DYNAMIQUES — rendues par inc/sections.php et inc/dynamic.php
   Chaque section produit un .gh-wrap ; quand elle n'a rien d'honnête à
   montrer elle renvoie une chaîne vide et la bande complète disparaît.
   ======================================================================= */
.gh-band{display:block;width:100%}
.gh-band > .gh-wrap{padding-block:clamp(2.75rem,2rem + 3vw,4.5rem)}
.gh-band--tight > .gh-wrap{padding-block:clamp(2rem,1.5rem + 2vw,3rem)}
/* Ton « plain » : le fond normal de la page. La règle est écrite explicitement
   plutôt que laissée implicite, pour qu'une bande neutre reste neutre même
   après avoir été déplacée entre deux bandes colorées dans l'éditeur. */
.gh-band--plain{background:var(--wp--preset--color--base)}
.gh-band--hero{background:linear-gradient(165deg,var(--wp--preset--color--mist,#F1F8F5) 0%,var(--wp--preset--color--base,#fff) 72%)}
.gh-band--surface{background:var(--wp--preset--color--surface);border-top:1px solid var(--wp--preset--color--line);border-bottom:1px solid var(--wp--preset--color--line)}
.gh-band--surface + .gh-band--surface{border-top:0}
.gh-band--tint{background:var(--wp--preset--color--brand-tint)}
.gh-band--dark{background:var(--wp--preset--color--brand-deep);color:#EAF7F0}
.gh-band--dark h2,.gh-band--dark h3{color:#fff}

/* --- Boutons maison --- */
.gh-btn{
	display:inline-flex;align-items:center;justify-content:center;gap:.5em;
	background:var(--wp--preset--color--brand-strong);color:#fff;font-weight:700;
	text-decoration:none;border:2px solid transparent;border-radius:999px;
	padding:.72em 1.5em;line-height:1.2;box-sizing:border-box;max-width:100%;
	transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease;
}
/* box-sizing, ici encore, n'est pas un détail : sur mobile les boutons de la
   bannière et de l'encart « garde » passent en width:100%, et la marge
   intérieure de 1,8 em plus les 2 px de bordure s'ajoutaient par-dessus. Mesuré
   sur un écran de 390 px : bouton de 403 px, page décalée de 30 px. */
.gh-btn:hover,.gh-btn:focus-visible{background:var(--wp--preset--color--brand-deep);color:#fff;transform:translateY(-2px);box-shadow:0 12px 26px rgba(6,78,59,.22)}
.gh-btn.is-lg{padding:.85em 1.8em;font-size:1.02rem}
.gh-btn.is-ghost{background:transparent;color:var(--wp--preset--color--brand-deep);border-color:color-mix(in srgb,var(--wp--preset--color--brand-deep) 35%,transparent)}
.gh-btn.is-ghost:hover,.gh-btn.is-ghost:focus-visible{background:var(--wp--preset--color--brand-tint);color:var(--wp--preset--color--brand-deep)}

/* --- Héros --- */
.gh-hero-grid{display:grid;grid-template-columns:1.2fr .85fr;gap:clamp(1.5rem,1rem + 3vw,3.5rem);align-items:center}
.gh-hero-main h1{font-size:clamp(2.2rem,1.6rem + 3vw,4rem);line-height:1.03;letter-spacing:-.035em;margin:.6rem 0 0}
.gh-hero-lead{font-size:clamp(1.02rem,.98rem + .4vw,1.22rem);color:var(--wp--preset--color--ink-muted);margin:1rem 0 0;max-width:46ch}
.gh-hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.75rem}
.gh-hero-card{
	background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);
	border-radius:24px;padding:clamp(1.25rem,1rem + 1vw,1.75rem);box-shadow:0 18px 44px rgba(6,78,59,.10);
}
.gh-hero-card h2{font-size:1.15rem;margin:0 0 .85rem;letter-spacing:-.01em}
.gh-chips.is-stacked{flex-direction:column;align-items:flex-start;gap:.7rem;margin-top:1.1rem}

/* --- Pourquoi nous choisir --- */
.gh-why{margin-bottom:clamp(1.75rem,1.2rem + 2vw,2.75rem)}
.gh-feature.is-surface{background:var(--wp--preset--color--surface)}

/* --- Catégories : compteur de produits --- */
.gh-cat-n{font-size:.8rem;color:var(--wp--preset--color--ink-muted)}

/* --- Sélection produits : la grille WooCommerce reprend la largeur --- */
.gh-selection ul.products{margin:0 !important;padding:0 !important}

/* --- Cartes d'articles santé --- */
.gh-article{
	display:flex;flex-direction:column;overflow:hidden;text-decoration:none;color:var(--wp--preset--color--ink);
	background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);
	border-radius:22px;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.gh-article:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(6,78,59,.12);border-color:var(--wp--preset--color--brand)}
.gh-article-img{display:block;background:var(--wp--preset--color--mist)}
.gh-article-img img{display:block;width:100%;height:170px;object-fit:cover}
.gh-article-b{display:flex;flex-direction:column;gap:.5rem;padding:1.25rem;flex:1}
.gh-article-d{font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--wp--preset--color--brand-strong)}
.gh-article h3{font-size:1.1rem;margin:0;letter-spacing:-.01em;line-height:1.25}
.gh-article p{margin:0;font-size:.92rem;color:var(--wp--preset--color--ink-muted);flex:1}

/* --- Bandeau « pharmacie de garde » --- */
.gh-cta-garde{
	display:flex;flex-wrap:wrap;gap:1.25rem;align-items:center;justify-content:space-between;
	background:linear-gradient(150deg,var(--wp--preset--color--brand-strong),var(--wp--preset--color--brand-deep));
	color:#fff;border-radius:24px;padding:clamp(1.5rem,1rem + 2vw,2.5rem);
}
.gh-cta-garde__body{display:flex;gap:1rem;align-items:center}
.gh-cta-garde__body .gh-ico{background:rgba(255,255,255,.14);color:#fff}
.gh-cta-garde h2{color:#fff;margin:0;font-size:clamp(1.3rem,1.1rem + 1vw,1.8rem);letter-spacing:-.02em}
.gh-cta-garde span{color:var(--wp--preset--color--accent);font-size:.95rem}
.gh-cta-garde .gh-btn{background:var(--wp--preset--color--brand);color:var(--wp--preset--color--ink)}
.gh-cta-garde .gh-btn:hover{background:var(--wp--preset--color--accent);color:var(--wp--preset--color--ink)}

/* --- Infolettre --- */
.gh-band--dark > .gh-wrap{max-width:720px;text-align:center}
.gh-newsletter h2{color:#fff;font-size:clamp(1.8rem,1.5rem + 1.6vw,2.6rem);letter-spacing:-.03em;margin:1rem 0 .5rem}
.gh-newsletter > p{color:var(--wp--preset--color--accent);margin:0 0 1.5rem}
.gh-newsletter .gh-kicker{
	display:inline-flex;font-size:.8rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
	background:rgba(255,255,255,.12);color:var(--wp--preset--color--accent);
	border:1px solid rgba(255,255,255,.2);padding:.4em .9em;border-radius:999px;
}
.gh-news-form{display:flex;gap:.5rem;max-width:460px;margin:0 auto;flex-wrap:wrap}
.gh-news-form input[type=email]{
	flex:1;min-width:200px;border:2px solid transparent;border-radius:999px;
	padding:.8rem 1.15rem;font:inherit;color:var(--wp--preset--color--ink);background:#fff;
}
.gh-news-form input[type=email]:focus-visible{outline:none;border-color:var(--wp--preset--color--brand)}
.gh-news-form button{
	border:0;border-radius:999px;padding:.8rem 1.6rem;font:inherit;font-weight:700;cursor:pointer;
	background:var(--wp--preset--color--brand);color:var(--wp--preset--color--ink);white-space:nowrap;
}
.gh-news-form button:hover{background:var(--wp--preset--color--accent)}
.gh-hp{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.gh-note{max-width:460px;margin:0 auto 1rem;border-radius:14px;padding:.75rem 1rem;font-size:.95rem;font-weight:600}
.gh-note.is-ok{background:rgba(16,185,129,.18);color:#EAF7F0;border:1px solid rgba(16,185,129,.45)}
.gh-note.is-error{background:rgba(239,68,68,.18);color:#FFECEC;border:1px solid rgba(239,68,68,.45)}
.gh-fineprint{margin:1.25rem 0 0;font-size:.85rem;color:var(--wp--preset--color--ink-muted)}
.gh-fineprint.is-dark{margin-top:1.5rem;font-size:.9rem}
.gh-band--dark .gh-fineprint{color:rgba(255,255,255,.72)}

/* --- Navigation principale (rendue en PHP) --- */
.gohealt-nav{margin-right:auto}
.gh-nav-toggle{
	display:none;align-items:center;gap:.5rem;background:transparent;border:1px solid var(--wp--preset--color--line);
	border-radius:12px;padding:.5rem .85rem;font:inherit;font-weight:600;cursor:pointer;color:inherit;
}
.gh-nav-toggle svg{width:20px;height:20px}
/* Barre de catégories : elle est encadrée en haut et en bas, donc un retour à
   la ligne y produit une seconde rangée orpheline (« Contact » seul sous les
   autres liens). On défile horizontalement plutôt que d'envelopper ; le clavier
   fait défiler nativement et aucun lien n'est jamais coupé. */
.gh-nav-list{
	/* L'écart est resserré à 1rem : les neuf entrées livrées tiennent alors
	   exactement dans la largeur maximale du conteneur (1200 px), donc aucun
	   défilement n'apparaît sur une mise en page standard. Le défilement reste
	   là comme filet de sécurité si le client ajoute des rubriques. */
	display:flex;flex-wrap:nowrap;align-items:center;gap:.35rem 1rem;
	list-style:none;margin:0;padding:0;
	overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;
}
.gh-nav-list::-webkit-scrollbar{display:none}
/* Un menu à sous-menus ne peut pas défiler horizontalement : overflow-x:auto
   crée un contexte de rognage qui coupe net le déroulant. Dès qu'une entrée a
   des enfants, on repasse donc en enveloppement. La classe est posée par le PHP
   au moment du rendu, pas devinée en JavaScript : le premier affichage est déjà
   le bon. */
.gohealt-nav.has-sub .gh-nav-list{flex-wrap:wrap;overflow:visible}
.gh-nav-item{
	position:relative;white-space:nowrap;
	display:inline-flex;align-items:center;gap:.15rem;
	color:inherit;font-weight:600;font-size:.95rem;
	border-bottom:2px solid transparent;
}
.gh-nav-item > a,.gh-nav-item > .gh-nav-label{
	display:inline-block;padding:.4rem .1rem;color:inherit;text-decoration:none;
}
.gh-nav-item:hover,.gh-nav-item:focus-within{color:var(--wp--preset--color--brand-strong);border-bottom-color:var(--wp--preset--color--brand)}
/* L'état « page courante » était posé sur le lien alors que la règle visait
   l'élément de liste : il ne s'est jamais affiché. On cible désormais les deux,
   pour que le repère fonctionne quelle que soit l'origine du menu. */
.gh-nav-item.is-current,.gh-nav-item:has(> [aria-current=page]){
	color:var(--wp--preset--color--brand-deep);border-bottom-color:var(--wp--preset--color--brand-strong);
}

/* --- Sous-menus déroulants --- */
.gh-nav-more{
	display:inline-flex;align-items:center;justify-content:center;
	width:24px;height:24px;padding:0;margin:0;
	background:transparent;border:0;border-radius:6px;
	color:inherit;cursor:pointer;line-height:0;
	transition:transform .18s ease;
}
.gh-nav-more:focus-visible{outline:2px solid var(--wp--preset--color--brand-strong);outline-offset:2px}
/* Un bouton qui n'a aucun effet ne doit pas être annoncé : sans le script, la
   bascule est inerte, on la retire et le survol prend le relais. */
.gohealt-nav:not(.has-js) .gh-nav-more{display:none}
.gh-nav-item.has-children > .gh-nav-more[aria-expanded=true]{transform:rotate(180deg)}
.gh-nav-sub{
	position:absolute;top:100%;left:0;z-index:60;
	min-width:230px;margin:0;padding:.4rem;
	list-style:none;
	background:var(--wp--preset--color--base,#fff);
	border:1px solid var(--wp--preset--color--line);
	border-radius:14px;
	box-shadow:0 2px 4px rgba(6,78,59,.06),0 18px 40px rgba(6,78,59,.12);
	/* Masqué sans être retiré de l'arbre : visibility coupe le focus clavier,
	   ce que display:none ferait aussi, mais ici la transition reste possible. */
	opacity:0;visibility:hidden;transform:translateY(-4px);
	transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s;
}
.gh-nav-item.has-children:hover > .gh-nav-sub,
.gh-nav-item.has-children > .gh-nav-more[aria-expanded=true] + .gh-nav-sub{
	opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s;
}
/* Sans JavaScript, le bouton ne peut pas changer d'état : le focus clavier est
   alors le seul moyen d'atteindre un sous-menu, d'où « :focus-within ». Dès que
   le script s'installe il pose « has-js » et cette règle s'efface, sinon la
   touche Échap replierait un menu que le focus revenu sur le bouton
   rouvrirait aussitôt. */
.gohealt-nav:not(.has-js) .gh-nav-item.has-children:focus-within > .gh-nav-sub{
	opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s;
}
.gh-nav-sub .gh-nav-item{
	display:block;width:100%;white-space:normal;border-bottom:0;
}
.gh-nav-sub .gh-nav-item > a{
	display:block;padding:.55rem .7rem;border-radius:9px;font-weight:500;
	/* 44 px de cible tactile : la recommandation WCAG 2.2 « Target Size ». */
	min-height:44px;line-height:1.5;
}
.gh-nav-sub .gh-nav-item > a:hover,.gh-nav-sub .gh-nav-item > a:focus-visible{
	background:var(--wp--preset--color--mist);color:var(--wp--preset--color--brand-deep);
}
/* Le dernier déroulant de la rangée sortirait de l'écran par la droite. */
.gh-nav-list > .gh-nav-item:last-child > .gh-nav-sub{left:auto;right:0}
@media (prefers-reduced-motion:reduce){
	.gh-nav-sub,.gh-nav-more{transition:none}
}

/* --- Barre supérieure & coordonnées ---
   Le bandeau d'annonce est posé sur « Vert profond » (#064E3B) dans l'en-tête.
   Un gris atténué (#46615A) y descendait à 1,3:1 de contraste — illisible et
   non conforme WCAG 2.2 AA. On hérite donc de la couleur du conteneur : clair
   sur fond sombre, encre sur fond clair si l'administrateur déplace le bloc.
   La hiérarchie visuelle passe par l'opacité, qui ne casse jamais le contraste
   au point de le rendre insuffisant. */
.gohealt-topbar-msg{margin:0;font-size:.85rem;color:inherit;opacity:.92}
.gh-contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.1rem}
.gh-contact-row{display:flex;gap:.8rem;align-items:center}
.gh-contact-row b{display:block;font-weight:700;font-size:.95rem}
.gh-contact-row span{font-size:.9rem;color:var(--wp--preset--color--ink-muted)}
.gh-contact-map{grid-column:1/-1;margin:.25rem 0 0}

/* --- Barre d'actions mobile (rendue en PHP) --- */
.gh-mcta{
	flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;
	text-decoration:none;color:var(--wp--preset--color--brand-deep);font-size:.72rem;font-weight:700;
	padding:.45rem .2rem;border-radius:14px;
}
.gh-mcta svg{width:20px;height:20px}
.gh-mcta.is-primary{background:var(--wp--preset--color--brand);color:var(--wp--preset--color--ink)}
/* La barre d'actions reste réservée au mobile. Cette règle arrivant APRÈS le
   « display:none » de la media query plus haut, elle doit être bornée sans
   quoi la barre réapparaît en bas de l'écran sur ordinateur. */
@media (max-width:899px){ .gohealt-mobile-cta{display:flex;gap:.4rem} }

/* --- Messages de repli & notes d'administration --- */
.gohealt-admin-hint{
	border:1px dashed color-mix(in srgb,var(--wp--preset--color--brand-deep) 35%,transparent);
	background:var(--wp--preset--color--brand-tint);color:var(--wp--preset--color--brand-deep);
	border-radius:14px;padding:.85rem 1.1rem;font-size:.9rem;
}
.gohealt-admin-hint strong{display:block;font-weight:800;margin-bottom:.15rem}
.gohealt-fallback-card{
	background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);
	border-radius:20px;padding:1.5rem;display:grid;gap:.75rem;
}
.gohealt-fallback-actions{display:flex;flex-wrap:wrap;gap:.6rem}
.gohealt-hours-fallback{list-style:none;margin:0;padding:0;display:grid;gap:.4rem;font-size:.95rem}
.gohealt-hours-fallback .row{display:flex;justify-content:space-between;gap:1rem}

/* --- Bandeau du haut : ce qui remplace le statut d'ouverture ---------------
 *
 * Cette bande fait une ligne de haut. Le contenu de remplacement — horaires,
 * message, téléphone, adresse — doit donc s'y ranger comme le statut qu'il
 * remplace : icône et texte côte à côte, jamais l'un au-dessus de l'autre.
 * C'est exactement ce que ne faisait pas l'ancien repli, qui réutilisait la
 * grille du pied de page.
 */
.gohealt-topline{display:inline-flex;align-items:center;gap:.5rem;min-width:0;line-height:1.2}
.gohealt-topline__item{display:inline-flex;align-items:center;gap:.4rem;min-width:0;color:inherit;text-decoration:none}
a.gohealt-topline__item:hover,a.gohealt-topline__item:focus-visible{text-decoration:underline}
.gohealt-topline svg{flex:none;opacity:.85}
/* Une adresse longue est tronquée proprement plutôt que de casser la bande en
   deux lignes ; le texte complet reste dans le DOM, donc lisible aux lecteurs
   d'écran et copiable. */
.gohealt-topline__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:600px){
	.gohealt-topline{max-width:100%}
}

/* --- Adaptations écrans intermédiaires et mobiles --- */
@media (max-width:900px){
	.gh-hero-grid{grid-template-columns:1fr}
	.gh-hero-aside{order:2}
	.gohealt-nav{width:100%;order:3}
	.gh-nav-toggle{display:inline-flex}
	/* Le menu déroulant mobile empile les liens : on annule le défilement
	   horizontal du bandeau de bureau, sinon la liste se retrouve tronquée. */
	.gh-nav-list{display:none;flex-direction:column;align-items:stretch;gap:0;width:100%;margin-top:.6rem;overflow-x:visible;flex-wrap:wrap}
	.gohealt-nav.is-open .gh-nav-list{display:flex}
	.gh-nav-item{display:flex;flex-wrap:wrap;align-items:center;padding:.35rem .25rem;border-bottom:1px solid var(--wp--preset--color--line);white-space:normal}
	.gh-nav-item > a,.gh-nav-item > .gh-nav-label{flex:1 1 auto;min-height:44px;display:flex;align-items:center}
	.gh-nav-item.is-current,.gh-nav-item:has(> [aria-current=page]){border-bottom-color:var(--wp--preset--color--brand-strong)}
	/* Sur mobile le déroulant n'a pas la place de flotter : il devient un
	   accordéon en flux, ouvert par le même bouton qu'au clavier sur bureau.
	   Le survol ne déclenche plus rien, sinon un simple effleurement du doigt
	   déplierait le menu sans que l'on ait rien demandé. */
	.gh-nav-more{width:44px;height:44px;flex:0 0 auto}
	.gh-nav-sub{
		display:none;position:static;flex:1 1 100%;min-width:0;margin:0 0 .3rem;padding:0 0 0 .8rem;
		border:0;border-left:2px solid var(--wp--preset--color--line);border-radius:0;
		box-shadow:none;background:none;transform:none;transition:none;
	}
	/* Replié, le sous-menu quitte le flux : garder « visibility:hidden » lui
	   laisserait sa hauteur et creuserait un trou blanc sous le parent. Le
	   survol n'ouvre rien ici, sinon un effleurement du doigt déplierait le
	   menu sans qu'on l'ait demandé. */
	.gh-nav-item.has-children:hover > .gh-nav-sub{display:none}
	.gh-nav-item.has-children > .gh-nav-more[aria-expanded=true] + .gh-nav-sub{display:block;opacity:1;visibility:visible;transform:none}
	/* Sans script, aucun bouton pour déplier : les sous-menus restent ouverts,
	   ce qui vaut mieux qu'une rubrique entière devenue inatteignable. */
	.gohealt-nav:not(.has-js) .gh-nav-sub{display:block;opacity:1;visibility:visible}
	.gh-nav-sub .gh-nav-item{border-bottom:0}
	.gh-foot-top{grid-template-columns:1fr 1fr}
}
@media (max-width:600px){
	.gh-hero-actions{flex-direction:column;align-items:stretch}
	.gh-hero-actions .gh-btn{width:100%}
	.gh-cta-garde{flex-direction:column;align-items:flex-start}
	.gh-cta-garde .gh-btn{width:100%}
	.gh-news-form{flex-direction:column}
	.gh-news-form button{width:100%}
	.gh-foot-top{grid-template-columns:1fr;gap:1.5rem}
	.gh-article-img img{height:150px}
	.gh-grid.c6{grid-template-columns:repeat(2,1fr)}
	.gohealt-mobile-cta{display:flex}
}

/* --- Encart de fin d'article & actions centrées --- */
.gh-article-cta{
	margin-top:clamp(2rem,1.5rem + 2vw,3rem);background:var(--wp--preset--color--brand-tint);
	border:1px solid color-mix(in srgb,var(--wp--preset--color--brand) 25%,transparent);
	border-radius:22px;padding:clamp(1.25rem,1rem + 1.5vw,2rem);
}
.gh-article-cta h2{margin:0 0 .4rem;font-size:clamp(1.25rem,1.1rem + .8vw,1.6rem);letter-spacing:-.02em}
.gh-article-cta p{margin:0;color:var(--wp--preset--color--ink-muted)}
.gh-article-cta .gh-hero-actions{margin-top:1.1rem}
.gh-hero-actions.is-center{justify-content:center}

/* =======================================================================
   TUNNEL DE COMMANDE : ÉTAPES, AIDE APRÈS ACHAT, CONDITIONS
   ======================================================================= */

/* --- Fil d'étapes panier → paiement → confirmation ---------------------
   Un client qui voit où il en est et combien d'étapes restent abandonne
   moins. Le repère est purement visuel : l'état réel est porté par
   aria-current="step", lu par les lecteurs d'écran. */
.gh-steps{margin:0 0 clamp(1.25rem,1rem + 1.5vw,2rem)}
.gh-steps__list{
	list-style:none;margin:0;padding:0;
	display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;
}
.gh-steps__item{
	display:flex;align-items:center;gap:.55rem;
	font-size:.9rem;font-weight:600;color:var(--wp--preset--color--ink-muted);
}
.gh-steps__item + .gh-steps__item::before{
	content:"";width:clamp(1rem,3vw,2.5rem);height:2px;border-radius:2px;
	background:var(--wp--preset--color--line);margin-right:.7rem;
}
.gh-steps__num{
	flex:none;width:1.85rem;height:1.85rem;border-radius:999px;
	display:inline-flex;align-items:center;justify-content:center;
	background:var(--wp--preset--color--mist);color:var(--wp--preset--color--ink-muted);
	border:1px solid var(--wp--preset--color--line);
	font-size:.85rem;font-weight:800;line-height:1;
}
.gh-steps__label{white-space:nowrap}
.gh-steps__item.is-done{color:var(--wp--preset--color--brand-deep)}
.gh-steps__item.is-done .gh-steps__num{
	background:var(--wp--preset--color--brand-tint);
	border-color:var(--wp--preset--color--brand);
	color:var(--wp--preset--color--brand-deep);
}
.gh-steps__item.is-done + .gh-steps__item::before{background:var(--wp--preset--color--brand)}
.gh-steps__item.is-current{color:var(--wp--preset--color--ink)}
.gh-steps__item.is-current .gh-steps__num{
	background:var(--wp--preset--color--brand-strong);
	border-color:var(--wp--preset--color--brand-strong);color:#fff;
}

@media (max-width:600px){
	/* Sur mobile, on garde les trois numéros — la position dans le tunnel —
	   mais seul le libellé de l'étape en cours reste affiché. */
	.gh-steps__list{gap:.4rem}
	.gh-steps__item + .gh-steps__item::before{width:.9rem;margin-right:.4rem}
	.gh-steps__item:not(.is-current) .gh-steps__label{
		position:absolute;width:1px;height:1px;overflow:hidden;
		clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;
	}
	.gh-steps__label{font-size:.85rem}
}

/* --- Aide affichée sous la confirmation de commande ---------------------
   Après un paiement, deux questions seulement : « et maintenant ? » et
   « qui puis-je appeler ? ». Le bloc répond aux deux et rouvre la boutique. */
.gh-order-help{
	margin-top:clamp(1.5rem,1.2rem + 1.5vw,2.5rem);
	background:var(--wp--preset--color--brand-tint);
	border:1px solid color-mix(in srgb,var(--wp--preset--color--brand) 25%,transparent);
	border-radius:22px;padding:clamp(1.25rem,1rem + 1.5vw,2rem);
}
.gh-order-help__text{margin:0;font-size:1.02rem;color:var(--wp--preset--color--ink)}
.gh-order-help__text a{font-weight:700;color:var(--wp--preset--color--brand-deep)}
.gh-order-help__actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.1rem}

@media (max-width:600px){
	.gh-order-help__actions{flex-direction:column;align-items:stretch}
	.gh-order-help__actions .wp-block-button__link{width:100%;text-align:center}
}

/* --- Conditions de livraison et de retrait (CGV) ------------------------
   Liste de définitions plutôt que tableau : le contenu est une paire
   terme/valeur, et il se replie proprement sur une colonne en mobile. */
.gh-terms{
	display:grid;grid-template-columns:minmax(9rem,auto) 1fr;gap:.55rem 1.25rem;
	margin:1.25rem 0;padding:1.1rem 1.3rem;
	background:var(--wp--preset--color--surface);
	border:1px solid var(--wp--preset--color--line);border-radius:18px;
}
.gh-terms dt{font-weight:700;color:var(--wp--preset--color--brand-deep)}
.gh-terms dd{margin:0;color:var(--wp--preset--color--ink-muted)}

@media (max-width:600px){
	.gh-terms{grid-template-columns:1fr;gap:.15rem}
	.gh-terms dd{margin-bottom:.6rem}
	.gh-terms dd:last-child{margin-bottom:0}
}

/* =======================================================================
   BOUTIQUE : GABARITS D'ARCHIVE ET PRODUITS SIMILAIRES
   ======================================================================= */

/* Le contenu WooCommerce classique est injecté par [gohealt_woo_content] :
   il faut donc lui rendre la largeur et l'espacement que les gabarits en
   blocs assuraient auparavant. */
.gohealt-shop > .woocommerce,
.gohealt-shop .woocommerce-notices-wrapper{width:100%}
.gohealt-shop .woocommerce-breadcrumb{
	font-size:.88rem;color:var(--wp--preset--color--ink-muted);margin-bottom:1rem;
}
.gohealt-shop .woocommerce-breadcrumb a{color:var(--wp--preset--color--brand-deep)}
.woocommerce .page-title,
.gohealt-shop .page-title{
	font-size:clamp(1.6rem,1.3rem + 1.6vw,2.4rem);
	letter-spacing:-.02em;margin:0 0 .75rem;
}
.gohealt-shop .term-description{color:var(--wp--preset--color--ink-muted);max-width:70ch}
.gohealt-shop .woocommerce-no-products-found{
	background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);
	border-radius:20px;padding:clamp(1.2rem,1rem + 1vw,2rem);
}
/* Bandeau de réassurance placé sous la grille, pleine largeur. */
.gohealt-shop-reassurance > .gohealt-reassurance,
.gohealt-shop-reassurance .gohealt-reassurance{margin-inline:auto}

/* =======================================================================
   PAGES DE COMMANDE : PANIER, PAIEMENT, CONFIRMATION, COMPTE
   =======================================================================

   Ces quatre pages partagent une contrainte que les autres n'ont pas : leur
   contenu est un tableau à deux colonnes (les articles à gauche, le
   récapitulatif à droite). Dans la largeur de lecture d'un article — 720 px —
   la colonne de droite tombait à 250 px : le total passait à la ligne, le
   bouton « Passer à la validation » se coupait en trois. Les gabarits leur
   donnent donc la largeur large (1200 px) ; ces règles s'assurent que les blocs
   WooCommerce l'occupent réellement au lieu de rester dans leur boîte.

   Le conteneur, lui, garde la borne de 1200 px : « max-width:100% » y avait été
   écrit par symétrie avec les blocs intérieurs, et cette seule ligne annulait
   tout le reste. Elle a la même spécificité que la règle de gabarit produite
   par WordPress (« .wp-container-… > .alignwide »), mais style.css est chargée
   après : le panier s'étalait sur toute la fenêtre — 1993 px sur un écran de
   2048 — pendant que le lien de retour, lui, s'arrêtait bien à 1200. Les blocs
   intérieurs conservent « 100 % » : ils se mesurent désormais sur un parent
   déjà borné, ce qui est exactement l'effet recherché. */
.gohealt-order-page .entry-content,
.gohealt-account-page .entry-content{width:100%;max-width:1200px;margin-inline:auto}
.gohealt-order-page .entry-content > .wp-block-woocommerce-cart,
.gohealt-order-page .entry-content > .wp-block-woocommerce-checkout,
.gohealt-order-page .entry-content > .woocommerce{width:100%;max-width:100%}
.gohealt-order-page .wc-block-cart__sidebar,
.gohealt-order-page .wc-block-checkout__sidebar{min-width:min(100%,320px)}
/* Le titre de la page et l'enveloppe .woocommerce du compte client, eux, sont
   bornés à 1000 px par la feuille « woocommerce-blocktheme » que WooCommerce
   injecte en ligne sur les thèmes de blocs. Elle vise le corps de page
   (« .woocommerce-cart .wp-block-post-title »), donc deux classes : à égalité
   avec toute règle de thème écrite en deux classes, et injectée après notre
   style.css. Le titre « Panier » commençait ainsi 100 px à droite du lien de
   retour, du fil d'étapes et du tableau — un décalage discret, mais présent sur
   chacune des quatre pages du tunnel. On passe donc à trois classes en
   ajoutant .wp-block-group, qui est déjà sur le conteneur. */
.wp-block-group.gohealt-order-page > .wp-block-post-title,
.wp-block-group.gohealt-account-page > .wp-block-post-title,
.wp-block-group.gohealt-account-page .entry-content > .woocommerce{
	width:100%;max-width:1200px;margin-inline:auto;
}
/* Le bandeau de messages WooCommerce — « Panier mis à jour », « Code promo
   appliqué » — se déclare « alignwide » mais WooCommerce le borne lui-même sur
   la largeur large GLOBALE du thème, pas sur celle du conteneur qui l'accueille.
   Sur ces quatre gabarits, où la largeur locale vaut 1200 px, il s'étalait donc
   sur toute la fenêtre : le message le plus important de la page était le seul
   élément désaligné. La sélection compte quatre classes pour passer devant
   celle de WooCommerce, qui en compte trois. */
.gohealt-order-page > .woocommerce.wc-block-store-notices.alignwide{
	max-width:1200px;margin-inline:auto;
}
/* Le récapitulatif est la pièce que le client relit avant de payer : on lui
   donne le même habillage de carte que le reste du site plutôt que le fond nu
   de WooCommerce. */
.gohealt-order-page .wc-block-components-sidebar .wc-block-components-order-summary,
.gohealt-order-page .wc-block-components-sidebar .wp-block-woocommerce-cart-order-summary-block,
.gohealt-order-page .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block{
	background:var(--wp--preset--color--surface);
	border:1px solid var(--wp--preset--color--line);
	border-radius:20px;padding:clamp(1rem,.85rem + .8vw,1.5rem);
}

/* Compte client : la colonne de navigation ne doit pas étrangler le contenu. */
.gohealt-account-page .entry-content > .woocommerce{max-width:100%}
@media(min-width:783px){
	.gohealt-account-page .woocommerce-MyAccount-navigation{width:clamp(200px,22%,260px)}
}

/* Chemin de retour — présent sur le panier, le paiement, la confirmation et le
   compte. Un tunnel sans porte de sortie ne retient personne : il fait fermer
   l'onglet. Le lien nomme sa destination, il n'imite pas le bouton
   « précédent » du navigateur, qui sur un formulaire de paiement provoque une
   demande de renvoi des données. */
.gh-back{
	display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1.25rem;
	width:100%;margin:0 auto clamp(.9rem,.7rem + .8vw,1.4rem);
}
.gh-back__link{
	display:inline-flex;align-items:center;gap:.45rem;
	font-weight:600;font-size:.95rem;text-decoration:none;
	color:var(--wp--preset--color--brand-deep);
	background:var(--wp--preset--color--surface);
	border:1px solid var(--wp--preset--color--line);
	border-radius:999px;padding:.45rem .95rem .45rem .7rem;
	transition:border-color .2s ease,background .2s ease,color .2s ease;
}
.gh-back__link:hover,
.gh-back__link:focus-visible{
	border-color:var(--wp--preset--color--brand);
	background:var(--wp--preset--color--mist);
	color:var(--wp--preset--color--brand-strong);
}
.gh-back__arrow{flex:none;transition:transform .2s ease}
.gh-back__link:hover .gh-back__arrow{transform:translateX(-2px)}
.gh-back__alt{
	font-size:.9rem;color:var(--wp--preset--color--ink-muted);
	text-decoration:underline;text-underline-offset:3px;
}
.gh-back__alt:hover,
.gh-back__alt:focus-visible{color:var(--wp--preset--color--brand-strong)}
@media(max-width:600px){
	.gh-back{gap:.35rem .8rem}
	.gh-back__link{font-size:.9rem;padding:.4rem .8rem .4rem .6rem}
	.gh-back__alt{font-size:.85rem}
}

/* Produits similaires : même habillage que les cartes de la boutique, donc
   aucune règle de carte à dupliquer ici — seulement le rythme vertical. */
.gohealt-related{margin-top:clamp(2rem,1.5rem + 2vw,3.25rem);clear:both}
.gohealt-related .related > h2,
.gohealt-related .up-sells > h2{
	font-size:clamp(1.3rem,1.15rem + .9vw,1.75rem);
	letter-spacing:-.02em;margin:0 0 1.1rem;
}

/* =======================================================================
   PAGE D'ACCUEIL CONVERTIE EN BLOCS
   -----------------------------------------------------------------------
   L'accueil est désormais une VRAIE page WordPress : chaque section est un
   assemblage de blocs natifs (Groupe, Titre, Paragraphe, Boutons, Liste…)
   que le client modifie comme n'importe quelle autre page — et sur lequel
   il peut donc déposer des images de fond.

   Deux différences de rendu apparaissent quand du HTML rédigé à la main
   devient des blocs, et ce bloc de règles les annule :

   1. L'ESPACEMENT. WordPress applique un « écart entre blocs » global via
      `:root :where(.is-layout-flow) > *{margin-block-start:var(--wp--style--block-gap)}`.
      Sa spécificité est (0,1,0) — À ÉGALITÉ avec une règle de thème à une
      seule classe : seul l'ordre du fichier trancherait, ce qui est fragile.
      La solution retenue ne se bat pas : elle met l'écart à 0 sur les
      conteneurs INTERNES des sections (là où le HTML d'origine gérait déjà
      ses marges), puis redonne explicitement les quelques vraies marges.
      L'écart reste NORMAL dans `.gh-band > .gh-wrap` : les blocs que le
      client ajoutera lui-même dans un bandeau respirent donc correctement.

   2. LES BALISES. L'éditeur ne produit ni <span> ni <a> orphelins : un
      lien devient un paragraphe contenant un lien, un élément de liste un
      <li> de bloc Liste. Les règles ci-dessous habillent ces équivalents
      pour un rendu identique au pixel.

   Toutes les règles sont écrites à une spécificité ≥ (0,2,0) afin de ne
   jamais dépendre de l'ordre de chargement des feuilles de style.
   ======================================================================= */

/* --- 1. Neutralisation de l'écart entre blocs dans les sections --- */
.gh-head,.gh-head-row,
.gh-hero-grid,.gh-hero-main,.gh-hero-aside,.gh-hero-card,
.gh-grid,.gh-promos,.gh-promo,.gh-feature,.gh-cat,.gh-pillar,
.gh-selection,.gh-newsletter,.gh-cta-garde,.gh-cta-garde__body,
.gh-chips,.gh-stats{--wp--style--block-gap:0px}

/* Les vraies marges du héros, restituées à (0,2,0). */
.gh-hero-main > h1{margin-block-start:.6rem}
.gh-hero-main > .gh-hero-lead{margin-block-start:1rem}
.wp-block-buttons.gh-hero-actions{gap:.75rem;margin-block-start:1.75rem}
.gh-hero-main > .gh-chips{margin-block-start:1.5rem}
.gh-hero-card > .gh-chips.is-stacked{margin-block-start:1.1rem}

/* L'en-tête de section garde son air en dessous. La marge d'origine est
   réduite ici car l'écart entre blocs du `.gh-wrap` s'y ajoute désormais.
   Portée limitée à `.wp-block-group` : les sections encore rendues en PHP
   (codes courts) conservent leur marge d'origine intacte. */
.gh-band > .gh-wrap.wp-block-group > .gh-head{margin-block-end:clamp(.5rem,.25rem + 1.4vw,1.5rem)}

/* --- 2. Le lien « voir tout » : un paragraphe, plus un <a> nu --- */
p.gh-link{margin:0;font-weight:700;display:flex;align-items:center;gap:.35em}
.gh-head p.gh-link,
.gh-feature p.gh-link{color:var(--wp--preset--color--brand-strong);font-size:.98rem;flex:0 0 auto}
.gh-feature p.gh-link{margin-block-start:.3rem}
p.gh-link > a{color:inherit;text-decoration:none}
p.gh-link::after{content:"→";line-height:1;transition:transform .18s ease}
p.gh-link:hover::after{transform:translateX(3px)}

/* --- 3. Cartes promo en blocs : étiquette et bouton --- */
.gh-promo p.tag{margin:0}
.gh-promo p.cta{
	margin:0;padding:0;background:none;color:inherit;font-size:inherit;
	position:static;align-self:flex-start;
}
.gh-promo p.cta > a{
	display:inline-flex;align-items:center;
	background:#fff;color:var(--wp--preset--color--brand-deep);
	font-weight:700;padding:.6rem 1.2rem;border-radius:999px;
	font-size:.9rem;text-decoration:none;
}
/* Toute la carte reste cliquable : la surcouche se cale sur la carte
   (`.gh-promo` est le seul ancêtre positionné). */
.gh-promo p.cta > a::after{content:"";position:absolute;inset:0;border-radius:22px}
/* … et la surcouche héritée de la version « raccourci » (où `.cta` ÉTAIT le lien)
   doit disparaître : posée sur le paragraphe, elle recouvrait toute la carte sans
   être cliquable et masquait celle du lien. */
.gh-promo p.cta::after{content:none}
.gh-promo p.cta > a:focus-visible{outline:2px solid #fff;outline-offset:2px}

/* --- 4. Bandeau garde : la ligne secondaire devient un paragraphe --- */
.gh-cta-garde .gh-cta-garde__sub{color:var(--wp--preset--color--accent);font-size:.95rem;margin:0}

/* --- 5. Puces du héros en bloc Liste : la coche est dessinée en CSS --- */
.gh-chips.is-plain{list-style:none;padding:0}
.gh-chips.is-plain > li::before{
	content:"";flex:0 0 auto;width:.5em;height:.85em;
	border:solid var(--wp--preset--color--brand);border-width:0 2px 2px 0;
	transform:rotate(45deg) translateY(-.12em);
}

/* --- 6. Infolettre : le surtitre est un paragraphe --- */
.gh-newsletter > p.gh-kicker{margin:0}

/* --- 7. Boutons natifs habillés comme les boutons maison --- */
.gh-hero-actions .wp-block-button:not(.is-style-outline) > .wp-block-button__link{
	background:var(--wp--preset--color--brand-strong);color:#fff;
}
.gh-hero-actions .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover,
.gh-hero-actions .wp-block-button:not(.is-style-outline) > .wp-block-button__link:focus-visible{
	background:var(--wp--preset--color--brand-deep);color:#fff;
}
.gh-hero-actions .wp-block-button.is-style-outline > .wp-block-button__link{
	background:transparent;color:var(--wp--preset--color--brand-deep);
	border-color:color-mix(in srgb,var(--wp--preset--color--brand-deep) 35%,transparent);
}
.gh-hero-actions .wp-block-button.is-style-outline > .wp-block-button__link:hover,
.gh-hero-actions .wp-block-button.is-style-outline > .wp-block-button__link:focus-visible{
	background:var(--wp--preset--color--brand-tint);
}
.gh-cta-garde .wp-block-button__link:hover,
.gh-cta-garde .wp-block-button__link:focus-visible{
	background:var(--wp--preset--color--accent);color:var(--wp--preset--color--ink);
}

@media(max-width:600px){
	.gh-hero-actions .wp-block-button,
	.gh-hero-actions .wp-block-button > .wp-block-button__link,
	.gh-cta-garde .wp-block-button,
	.gh-cta-garde .wp-block-button > .wp-block-button__link{width:100%}
	.gh-cta-garde .wp-block-buttons{width:100%}
}
