/*
 * Surcouche CSS de la template storefront — chargée APRÈS les CSS Grogin, elle corrige et
 * complète le rendu sans toucher au thème. Éditable librement.
 * Injectée sur toutes les pages par storefront/src/renderers/chrome.mjs.
 */

/* Tokens transversaux : une seule échelle pour les pages éditoriales, les
   accordéons et le footer. Les composants conservent la couleur marque du
   thème, mais ne reposent plus sur des tailles ou espacements isolés. */

:root {
  --primary: #2F5D3A;
  --primary-dark: #234830;
  --primary-tint: #eef4f0;
  --primary-tint-2: #e4efe7;
  --primary-line: #c5d9cb;
  --sf-ink: #17211b;
  --sf-surface: #f4f7f5;
  --sf-line: #c5d9cb;
}
:root {
  --sf-ink: #17211b;
  --sf-muted: #58645d;
  --sf-line: #d5dde3;
  --sf-surface: #f6f8f6;
  --sf-page-gutter: clamp(18px, 4vw, 40px);
  --sf-content-width: 940px;
  --sf-space-1: 8px;
  --sf-space-2: 12px;
  --sf-space-3: 16px;
  --sf-space-4: 24px;
  --sf-space-5: 32px;
  --sf-space-6: 48px;
  --sf-title-xl: clamp(28px, 3.2vw, 42px);
  --sf-title-lg: clamp(22px, 2.2vw, 30px);
  --sf-title-md: clamp(18px, 1.6vw, 22px);
  --sf-body: 16px;
  --sf-body-sm: 14px;
  --sf-radius: 12px;
  --sf-button-padding-y: 11px;
  --sf-button-padding-x: 14px;
  --sf-button-radius: 999px;
  --sf-button-line-height: 21px;
}

/* ===========================================================================
 * REBRAND — Bandeau topbar (.global-notification) : le HTML hérité du thème mirror
 * l'affiche encore dans l'ancien vert marque hérité. On force la couleur marque
 * actuelle (--primary = #2F5D3A). Override CSS uniquement, mirror non touché.
 * (GAP P0.2 — L'Univers du Jardin)
 * ========================================================================= */
.global-notification,
.global-notification .global-notification-inner {
  background-color: var(--primary) !important;
}

/* ===========================================================================
 * REBRAND — Résidus de l'ancien vert marque hérités des <style> inline du thème
 * mirror (GAP P1.1). On neutralise les variables de thème + les rares sélecteurs
 * qui référencent encore l'ancien vert (menu actif, prix promo <ins>). Le hex
 * littéral est en outre remplacé au build (scrubLegacyBrand). Override CSS seul ici.
 * ========================================================================= */
:root {
  --theme-primary-color: var(--primary);
  --theme-primary-active-color: var(--primary-dark);
  --theme-secondary-color: var(--primary);
  --theme-secondary-active-color: var(--primary-dark);
}
.site-header.header-type4 .header-row .site-menu .menu > .menu-item.current-menu-item > a,
.site-header.header-type4 .header-row .site-menu .menu > .menu-item.current-menu-item > a::before {
  color: var(--primary) !important;
  background-color: var(--primary) !important;
}
.single-product-wrapper .product-detail .product-price-wrapper .price ins {
  color: var(--primary) !important;
}

/* ===========================================================================
 * REBRAND — Badge de note « 4,7/5 · 1389 avis vérifiés » sur panier & checkout
 * (GAP P1.2). Injecté par page.mjs en tête du contenu commerce.
 * ========================================================================= */
.sf-commerce-rating {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: 0 0 18px;
  padding: 10px 14px;
  background: var(--primary-tint);
  border: 1px solid var(--primary-line);
  border-radius: var(--sf-radius);
  font-size: 13.5px;
  color: var(--sf-muted);
}
.sf-commerce-rating-stars { display: inline-flex; gap: 1px; color: #d69200; }
.sf-commerce-rating-star { width: 16px; height: 16px; fill: currentColor; }
.sf-commerce-rating-text { display: inline-flex; align-items: baseline; gap: 6px; }
.sf-commerce-rating-text > strong { color: var(--sf-ink); font-size: 15px; font-weight: 700; }
.sf-commerce-rating-text > span::before { content: "·"; margin-right: 6px; color: var(--sf-muted); }

/* ===========================================================================
 * GABARIT DE CARTE PRODUIT — un seul style, identique et aligné sur TOUTES les
 * grilles (boutique, catégorie, Top Ventes, De retour en stock, produits associés…).
 * Règle : toutes les cartes ont la même hauteur, chaque info au même niveau, le
 * bouton toujours en bas. Antifragile : marche même si un produit n'a pas d'avis,
 * pas de prix, ou un titre long/court.
 * ========================================================================= */
.products .product { display: flex !important; align-self: stretch; }
.products .product > .product-wrapper { display: flex !important; flex-direction: column; flex: 1 1 auto; width: 100%; }
.products .product .product-inner { display: flex !important; flex-direction: column; flex: 1 1 auto; }
.products .product .thumbnail-wrapper { flex: 0 0 auto; }
/* SOURCE DU BUG D'ÉLÉVATION : les images produit ont des ratios différents et rendaient des
   hauteurs différentes (ex. Worx 236px vs 195px), ce qui décalait titre/note/prix vers le bas.
   → Zone image en RATIO CARRÉ (aspect-ratio:1/1) : elle grandit/rétrécit avec la largeur de la
   carte (RESPONSIVE), tout en restant identique pour toutes les cartes d'une même rangée →
   prix alignés à tout viewport, sans hauteur figée qui laisse du vide sur mobile. */
.products .product a.product-thumbnail {
  display: flex !important; align-items: center; justify-content: center;
  width: 100%; aspect-ratio: 1 / 1; height: auto; overflow: hidden;
}
.products .product a.product-thumbnail img {
  width: auto !important; height: auto !important;
  max-width: 100%; max-height: 100%; object-fit: contain;
}
.products .product .content-wrapper { display: flex !important; flex-direction: column; flex: 1 1 auto; position: static !important; line-height: normal !important; top: 0 !important; }

/* Titre : 2 lignes fixes → hauteur de titre identique partout. */
.products .product .product-title {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  min-height: 2.7em; line-height: 1.35; margin-bottom: 6px !important;
}
/* Note : toujours réservée (0 étoile si aucun avis) → alignement constant. */
.products .product .product-rating { display: flex !important; align-items: center; gap: 6px; min-height: 20px; margin-bottom: 10px !important; }
/* Prix : hauteur mini réservée + espace net avant le bouton. */
.products .product .product-price-wrapper { min-height: 1.7em; margin: 0 0 0 0; }
/* Bouton toujours en bas, avec un espace garanti au-dessus (jamais collé au prix). */
.products .product .product-cart { margin-top: auto !important; padding-top: 16px; }

/* Libellé « Prix sur demande » pour un produit sans prix. */
.price-on-request { color: var(--primary, var(--primary)); font-weight: 600; }

/* --- Bordures de grille COHÉRENTES quel que soit le nombre de colonnes (responsive) ---
   Le thème dessinait un `border-left` par carte, mais la règle "pas de bord à gauche en début
   de rangée" était calée sur un nombre de colonnes fixe → 1re carte des rangées 2+ gardait un
   trait, lignes désalignées. Solution robuste : le CONTENEUR dessine les bords haut+gauche,
   chaque CARTE dessine ses bords droit+bas → une seule ligne partout, aucune manquante. */
.shop-products-wrapper .products,
.products.column-6, .products.column-5, .products.column-4,
.products.column-3, .products.column-2 {
  border-top: 1px solid #ececec; border-left: 1px solid #ececec;
}
.products > .product {
  border: 0 !important;
  border-right: 1px solid #ececec !important;
  border-bottom: 1px solid #ececec !important;
}

/* Les listes de catalogue ne doivent jamais étirer les rares cartes d'une dernière
   ligne. Le miroir utilise des cartes compactes : on conserve donc une largeur
   plafond et des colonnes régulières, y compris quand il reste deux produits. */
.shop-products-wrapper .products {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(160px, 224px));
  justify-content: start;
}
.shop-products-wrapper .products > .product {
  width: 100% !important;
  max-width: 224px;
}
@media (max-width: 575.98px) {
  /* Le catalogue du miroir affiche deux cartes par rangée à 390 px. La règle auto-fit
     plafonnait les cartes à 224 px et ne pouvait donc en placer qu'une seule. */
  .shop-products-wrapper .products {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    justify-content: stretch;
  }
  .shop-products-wrapper .products > .product { max-width: none; }
}

/* Produits associés : le miroir les présente en deux cartes par rangée, quelle
   que soit la largeur. La grille ne doit donc jamais se dégrader en liste. */
#related-products .products { display: grid !important; }
#related-products .products > .product {
  width: 100% !important;
}

/* Bento promotionnel de l'accueil : le CSS Elementor propre à cette section n'est
   pas présent dans le miroir local. On rétablit donc ses quatre cartes, sans
   appliquer cette grille aux autres bannières du site. */
.sf-home-promo-bento > .e-con-inner { display: grid !important; gap: 16px !important; }
.sf-home-promo-bento > .e-con-inner > .e-con { width: auto !important; min-width: 0; }
.sf-home-promo-card { min-width: 0; }
.sf-home-promo-bento .site-banner { position: relative; height: 340px; min-height: 0; }
.sf-home-promo-bento .site-banner .entry-media,
.sf-home-promo-bento .site-banner .entry-media img {
  width: 100%; height: 100%;
}
.sf-home-promo-bento .site-banner .entry-media img { display: block; object-fit: cover; }
@media (min-width: 768px) {
  .sf-home-promo-bento > .e-con-inner { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 992px) {
  .sf-home-promo-bento > .e-con-inner { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
  .sf-home-promo-bento .site-banner { height: var(--banner-mobile-height, 200px); }
}

/* Le miroir ne conserve qu'une bannière mobile, dont l'image archivée est un
   pixel transparent, et masque les quatre vraies cartes de catégories. On
   rétablit ces cartes à partir des vrais assets locaux : une colonne lisible
   sur téléphone, deux colonnes sur tablette, toujours avec le même espace. */
@media (max-width: 991.98px) {
  .sf-home-promo-bento > .e-con-inner { grid-template-columns: minmax(0, 1fr) !important; }
  .sf-home-promo-bento > .e-con-inner > .e-con { display: block !important; width: auto !important; }
  .sf-home-promo-bento > .e-con-inner > .e-con > .sf-home-promo-card { display: block !important; }
  .sf-home-promo-bento > .e-con-inner > .sf-home-promo-card { display: none !important; }
}
@media (min-width: 768px) and (max-width: 991.98px) {
  .sf-home-promo-bento > .e-con-inner { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* Promotions catégories de l'accueil (Tracteurs tondeuses, Bois de chauffage,
   Abris de jardin…) : une section différente du bento promotionnel précédent.
   Le `gap` est porté par son vrai conteneur, donc visible aussi sur téléphone réel. */
@media (max-width: 991.98px) {
  .sf-home-category-promo-bento > .e-con-inner {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 16px !important;
  }
  .sf-home-category-promo-bento > .e-con-inner > .sf-home-category-promo-card {
    width: auto !important;
    min-width: 0;
    margin: 0 !important;
  }
}

/* Bento Conseil / Services, distinct de la promotion ci-dessus : l'export
   Elementor a perdu sa définition de grille. Sans ce bloc les trois bannières
   prennent chacune toute la largeur et leurs images deviennent démesurées. */
.sf-home-expert-bento > .e-con-inner {
  display: grid !important;
  /* L'export Elementor force trois pistes même à 390 px. On l'emporte aussi
     sur cette règle afin que chaque carte reste réellement lisible sur mobile. */
  grid-template-columns: minmax(0, 1fr) !important;
  /* L'export définit aussi DEUX rangées, laissant une rangée vide (grand blanc
     mort sous les cartes). On force une hauteur de rangée automatique. */
  grid-template-rows: auto !important;
  grid-auto-rows: auto !important;
  gap: 16px !important;
  align-items: stretch;
}
.sf-home-expert-bento > .e-con-inner > .sf-home-expert-card {
  width: auto !important;
  min-width: 0;
}
.sf-home-expert-bento .site-banner,
.sf-home-expert-bento .site-banner .entry-media,
.sf-home-expert-bento .site-banner .entry-media img {
  width: 100%;
}
.sf-home-expert-bento .site-banner .entry-media img { display: block; object-fit: cover; }
@media (min-width: 768px) {
  .sf-home-expert-bento > .e-con-inner { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}
/* espace au-dessus du bento experts : ne plus le coller à la section produits */
.sf-home-expert-bento { margin-top: 48px !important; }
/* lisibilité : dégradé vert (couleur exacte du visuel) derrière le texte,
   le visuel reste visible à droite sans recouvrir les mots */
.sf-home-expert-bento .site-banner .entry-wrapper {
  background: linear-gradient(90deg, var(--primary-tint) 0%, var(--primary-tint) 55%, rgba(234, 243, 234, .55) 74%, rgba(234, 243, 234, 0) 90%);
}
.sf-home-expert-bento .site-banner { min-height: 210px; }
@media (max-width: 767.98px) {
  .sf-home-expert-bento { margin-top: 30px !important; }
  .sf-home-expert-bento .site-banner .entry-wrapper {
    background: linear-gradient(90deg, var(--primary-tint) 0%, var(--primary-tint) 54%, rgba(234, 243, 234, .4) 76%, rgba(234, 243, 234, 0) 92%);
  }
}

/* La section associée reprend le rythme vertical des autres sections produit. */
#related-products,
#recently-viewed,
.recently-viewed,
.site-module.recently-viewed { padding-top: calc(var(--sf-space-6) + var(--sf-space-3)); }

/* Badge "Stock Limité" du hero : pastille propre, texte parfaitement centré. */
.banner-badge { display: inline-flex; align-items: center; justify-content: center; padding: 7px 16px; border-radius: 999px; font-size: 12px; font-weight: 700; line-height: 1; letter-spacing: .2px; text-align: center; vertical-align: middle; }
.banner-badge.green { background: var(--primary, var(--primary)) !important; color: #fff !important; box-shadow: none !important; }

/* --- Tiroir panier OFF-CANVAS plein hauteur à droite (piloté par custom/storefront.js) --- */
/* On n'utilise plus le mini-cart déroulant du thème : on injecte notre propre panneau #sf-drawer. */
.mini-cart-holder { display: none !important; }
.mini-cart-button { position: relative; }
.sf-drawer-overlay {
  position: fixed; inset: 0; background: rgba(17,24,39,.45);
  opacity: 0; visibility: hidden; transition: opacity .3s ease; z-index: 99998;
}
body.sf-drawer-open .sf-drawer-overlay { opacity: 1; visibility: visible; }
.sf-drawer {
  position: fixed; top: 0; right: 0; height: 100%; width: 420px; max-width: 92vw;
  background: #fff; box-shadow: -14px 0 44px rgba(0,0,0,.20);
  transform: translateX(100%); transition: transform .32s cubic-bezier(.4,0,.2,1);
  z-index: 99999; display: flex; flex-direction: column;
}
body.sf-drawer-open .sf-drawer { transform: translateX(0); }
.sf-drawer-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; border-bottom: 1px solid #eef0f2; flex: 0 0 auto; }
.sf-drawer-head h3 { margin: 0; font-size: 17px; font-weight: 800; color: #111827; }
.sf-drawer-close { border: 0; background: none; font-size: 28px; line-height: 1; cursor: pointer; color: #6b7280; padding: 0 4px; }
.sf-drawer-close:hover { color: #111827; }
.sf-drawer-body { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
@media (prefers-reduced-motion: reduce) { .sf-drawer, .sf-drawer-overlay { transition: none; } }
.sf-cart-panel { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.sf-cart-panel .klb-cart-free-shipping { padding: 14px 16px; margin: 0; background: var(--primary-tint); }
.sf-cart-panel .cart-notice-progress { height: 6px; background: #e2e8e4; border-radius: 4px; margin-top: 8px; overflow: hidden; }
.sf-cart-panel .cart-notice-progress span { display: block; height: 100%; background: var(--primary, var(--primary)); transition: width .3s; }
.sf-free-ok { color: var(--primary, var(--primary)); }
.sf-cart-items { overflow-y: auto; padding: 6px 0; flex: 1 1 auto; min-height: 0; }
.sf-cart-item { display: grid; grid-template-columns: 56px 1fr 24px; gap: 12px; align-items: center; padding: 12px 16px; border-bottom: 1px solid #f1f2f4; }
.sf-ci-img img { width: 56px; height: 56px; object-fit: contain; border: 1px solid #eef0f2; border-radius: 8px; }
.sf-ci-name { font-size: 13px; font-weight: 600; color: #1f2937; line-height: 1.3; display: block; }
.sf-ci-line { display: flex; align-items: center; justify-content: space-between; margin-top: 8px; }
.sf-ci-qty { display: inline-flex; align-items: center; gap: 8px; border: 1px solid #e5e7eb; border-radius: 999px; padding: 2px 8px; }
.sf-ci-qty .sf-q { border: 0; background: none; font-size: 15px; cursor: pointer; color: #374151; line-height: 1; padding: 2px 4px; }
.sf-ci-price { font-weight: 700; color: #111827; font-size: 13px; }
.sf-ci-remove { border: 0; background: none; font-size: 20px; cursor: pointer; color: #9ca3af; line-height: 1; }
.sf-ci-remove:hover { color: #dc2626; }
.sf-cart-footer { padding: 14px 16px; border-top: 1px solid #eef0f2; background: #fff; }
.sf-cart-subtotal { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; font-size: 15px; }
.sf-cart-subtotal strong { font-size: 18px; }
.sf-cart-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.sf-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 45px; padding: var(--sf-button-padding-y) var(--sf-button-padding-x); border-radius: var(--sf-button-radius); font-weight: 600; font-size: 14px; line-height: var(--sf-button-line-height); text-align: center; cursor: pointer; }
.sf-btn-primary { background: var(--primary, var(--primary)); color: #fff; }
.sf-btn-primary:hover { background: var(--primary-dark); }
.sf-btn-outline { border: 1px solid var(--primary, var(--primary)); color: var(--primary, var(--primary)); }
.sf-btn-outline:hover { background: var(--primary-tint); }
.sf-cart-empty { padding: 28px 16px; text-align: center; color: #6b7280; }
.sf-cart-empty .sf-btn { margin-top: 12px; }

/* ===== Sections au-dessus du footer (réassurance / newsletter / paiement) ===== */
.sf-footer-extras .container { width: min(100% - 32px, 1360px); margin-inline: auto; }
/* Le footer avait une marge haute de 60px → bandeau blanc disgracieux au-dessus. Collé au bloc. */
.sf-footer-extras + .site-footer { margin-top: 0 !important; }
/* Respiration au-dessus de la 1re section (réassurance) : évite le "collé de partout". */
.sf-footer-extras { margin-top: 56px; }
.sf-reassure { padding-top: 48px; padding-bottom: 40px; }

/* Badge de remise sur les images produit : pastille rouge « -X % » en haut à gauche (storefront). */
.products .product .thumbnail-wrapper { position: relative; }
.thumbnail-badges { position: absolute; top: 10px; left: 10px; z-index: 3; display: flex; flex-direction: column; gap: 6px; pointer-events: none; }
.thumbnail-badges .badge, .product-badges .badge, .banner-badge.sale, .badge.sale {
  font-size: 12.5px !important; font-weight: 700 !important; padding: 5px 9px !important;
  border-radius: 6px !important; line-height: 1 !important;
}
.thumbnail-badges .badge.sale, .badge.sale { background: #e02b2b !important; color: #fff !important; box-shadow: 0 2px 6px rgba(224,43,43,.28); }
.thumbnail-badges .badge.rupture, .badge.rupture {
  background: #4b5563 !important; color: #fff !important; box-shadow: 0 2px 6px rgba(75,85,99,.28);
  text-transform: uppercase; letter-spacing: .02em;
}
.products .product.outofstock {
  opacity: .62; filter: grayscale(.35);
}
.products .product.outofstock .product-thumbnail img,
.products .product.outofstock .thumbnail-wrapper img {
  filter: grayscale(.25);
}
.products .product.outofstock .sf-oos-disabled,
.single-product .sf-oos-disabled,
form.cart .sf-oos-disabled {
  background: #9ca3af !important; border-color: #9ca3af !important; color: #fff !important;
  pointer-events: none; cursor: not-allowed; opacity: .95;
}
.single-product.outofstock .woocommerce-product-gallery,
.product.outofstock .woocommerce-product-gallery {
  opacity: .75; filter: grayscale(.2);
}

/* Deux liens ajoutés à droite de la barre de navigation principale. */
.sf-nav-right { margin-left: auto !important; margin-right: 24px; gap: 26px; flex: 0 0 auto !important; }
.sf-nav-right a { font-weight: 600; font-size: 14px; color: #030712; white-space: nowrap; }
.sf-nav-right a:hover { color: var(--primary, var(--primary)); }

/* Pages de contenu : le texte ne doit jamais coller au bord gauche → padding sur le bloc.
   IMPORTANT : on NE limite PAS la largeur des pages éditoriales/service. Elles contiennent
   des bannières Elementor (grogin-banner-box) à hauteur fixe : les rétrécir faisait passer
   le titre sur 3 lignes → le contenu débordait et le sur-titre "Conseil/Service" était rogné.
   Seules les pages LÉGALES reçoivent une largeur de lecture confortable. */
[data-elementor-type="wp-page"] {
  padding-left: clamp(18px, 4vw, 40px) !important;
  padding-right: clamp(18px, 4vw, 40px) !important;
  box-sizing: border-box !important;
}
/* La FAQ du miroir s'étend d'un bord à l'autre sur mobile. Le padding global de
   pages écrasait sa largeur utile, puis ses grands intitulés semblaient disproportionnés. */
.sf-ptype-faq [data-elementor-type="wp-page"] {
  padding-left: 0 !important;
  padding-right: 0 !important;
}
.sf-ptype-legal [data-elementor-type="wp-page"] {
  max-width: 980px !important;
  margin-left: auto !important; margin-right: auto !important;
}
/* Bannière éditoriale ANTIFRAGILE : le texte est aligné en HAUT de la carte (au lieu d'être
   centré verticalement). Ainsi, même si le contenu venait à dépasser la hauteur de l'image,
   c'est le bas qui déborderait — jamais le sur-titre "Conseil/Service" en haut. On conserve
   la hauteur d'origine (définie par l'image) → rendu fidèle à l'oracle. Scopé aux pages de contenu. */
.sf-ptype-editorial .elementor-widget-grogin-banner-box .entry-wrapper,
.sf-ptype-service   .elementor-widget-grogin-banner-box .entry-wrapper {
  align-items: flex-start !important;
}

/* ===== Fiche produit : vrais onglets (même structure que le miroir) ===== */
/* Onglets classiques : le soulignement actif repose SUR la ligne de séparation
   (marge négative), une seule barre visible au lieu de deux. */
.woocommerce-tabs .wc-tabs { gap: 1.5rem; margin: 0 0 1.4rem; padding: 0; border-bottom: 1px solid var(--sf-line, var(--sf-line)); }
.woocommerce-tabs .wc-tabs li { margin: 0 0 -1px; border: 0 !important; }
/* le thème dessine son propre indicateur actif via des pseudo-éléments : on
   neutralise tout pour ne garder qu'un seul soulignement (celui du lien) */
.woocommerce-tabs .wc-tabs li::before,
.woocommerce-tabs .wc-tabs li::after,
.woocommerce-tabs .wc-tabs li a::before,
.woocommerce-tabs .wc-tabs li a::after { content: none !important; display: none !important; }
.woocommerce-tabs .wc-tabs li a { display: inline-block; padding: 0 2px 12px; border-bottom: 2px solid transparent; border-radius: 0; font-size: 16px; font-weight: 700; color: var(--sf-ink, #111827); cursor: pointer; text-decoration: none !important; }
.woocommerce-tabs .wc-tabs li a:hover { color: var(--sf-ink, #111827); }
.woocommerce-tabs .wc-tabs li.active a { border-bottom-color: var(--primary, var(--primary)); color: var(--primary, var(--primary)); }
.woocommerce-tabs .wc-tabs li a:focus-visible { outline: 2px solid var(--primary, var(--primary)); outline-offset: 4px; border-radius: 2px; }
.woocommerce-tabs .wc-tab[hidden] { display: none !important; }
.woocommerce-tabs .wc-tab:not([hidden]) { display: block !important; }
.woocommerce-tabs > .sf-product-reviews-permanent {
  display: block !important;
  margin-top: var(--sf-space-5);
  padding-top: var(--sf-space-4);
  border-top: 1px solid var(--sf-line);
}
.sf-review-confirmation {
  margin: 0 0 var(--sf-space-3);
  padding: var(--sf-space-3);
  border: 1px solid var(--primary-line);
  border-radius: 8px;
  background: var(--primary-tint);
  color: #14663a;
  font-size: var(--sf-body-sm);
  font-weight: 600;
}
@media (min-width: 576px) { .woocommerce-tabs .wc-tabs { gap: 1.875rem; } }

/* Barre d'achat fixe de la fiche produit : le montant courant accompagne le CTA
   uniquement sur mobile, là où le prix principal disparaît au défilement. */
.sf-sticky-price { display: none; }
@media (max-width: 991.98px) {
  form.cart.single-ajax .single_add_to_cart_button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    white-space: nowrap;
  }
  form.cart.single-ajax .sf-sticky-price {
    display: inline-block;
    padding-left: 8px;
    border-left: 1px solid rgba(255, 255, 255, .42);
    font-weight: 800;
    font-variant-numeric: tabular-nums;
  }
}

/* Réassurance (4 points) */
.sf-reassure { padding: 40px 0; border-top: 1px solid #eef0f2; }
.sf-reassure-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }
.sf-reassure-item { display: flex; gap: 14px; align-items: flex-start; }
.sf-reassure-ic { flex: 0 0 auto; width: 40px; height: 40px; color: var(--primary, var(--primary)); }
.sf-reassure-ic svg { width: 40px; height: 40px; }
.sf-reassure-title { margin: 0 0 4px; font-weight: 700; font-size: 15px; color: #111827; }
.sf-reassure-text { margin: 0; font-size: 13px; line-height: 1.5; color: #6b7280; }
@media (max-width: 900px) { .sf-reassure-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .sf-reassure-grid { grid-template-columns: 1fr; } }

/* Newsletter */
.sf-newsletter { background: #1c1f24; padding: 34px 0; }
.sf-newsletter-inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.sf-newsletter-title { margin: 0 0 6px; color: #fff; font-size: 20px; font-weight: 800; }
.sf-newsletter-sub { margin: 0; color: #9ca3af; font-size: 14px; }
.sf-newsletter-form { display: flex; gap: 10px; flex: 1 1 380px; max-width: 520px; align-items: stretch; }
/* Champ ET bouton EXACTEMENT la même hauteur (le thème gonflait le <button>). */
.sf-newsletter-input { flex: 1; height: 50px !important; padding: 0 16px !important; box-sizing: border-box; border-radius: 8px; border: 1px solid #3a3f47; background: #2a2e35; color: #fff; font-size: 14px; }
.sf-newsletter-input::placeholder { color: #9ca3af; }
.sf-newsletter-btn { height: 50px !important; padding: 0 28px !important; box-sizing: border-box; border-radius: 8px; border: 0; background: var(--primary, var(--primary)); color: #fff; font-weight: 700; font-size: 14px; line-height: 1 !important; cursor: pointer; white-space: nowrap; }
.sf-newsletter-btn:hover { background: #00522c; }

/* Paiement */
.sf-payment { background: var(--primary, var(--primary)); padding: 14px 0; }
.sf-payment-inner { display: flex; align-items: center; justify-content: center; gap: 24px; flex-wrap: wrap; color: #fff; }
.sf-payment-secure { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; }
.sf-payment-badges { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
/* pastille de paiement unifiée (fiche produit, pré-footer, checkout) :
   fond blanc, bord doux, sans ombre portée */
.sf-pay { display: inline-flex; align-items: center; justify-content: center; height: 34px; padding: 5px 10px; background: #fff; border: 1px solid #e6ece7; border-radius: 8px; box-shadow: none; }
.sf-pay img { height: 20px; width: auto; max-width: 46px; display: block; }

/* ===== Recherche produits (dropdown typeahead) ===== */
.sf-search-results {
  position: absolute; top: calc(100% + 8px); left: 0; right: 0; z-index: 1100;
  background: #fff; border: 1px solid #eef0f2; border-radius: 12px;
  box-shadow: 0 20px 50px rgba(0,0,0,.16); overflow: hidden; max-height: 70vh; overflow-y: auto;
}
.sf-search-item { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-bottom: 1px solid #f4f5f6; }
.sf-search-item:hover { background: var(--primary-tint); }
.sf-search-thumb img { width: 44px; height: 44px; object-fit: contain; border: 1px solid #eef0f2; border-radius: 8px; }
.sf-search-thumb { width: 44px; height: 44px; flex: 0 0 auto; }
.sf-search-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sf-search-name { font-size: 13px; font-weight: 600; color: #1f2937; line-height: 1.3; }
.sf-search-price { font-size: 13px; font-weight: 700; color: var(--primary, var(--primary)); }
.sf-search-brand { font-size: 12px; font-weight: 600; color: #4b5563; }
.sf-search-all { display: block; padding: 11px 14px; text-align: center; font-weight: 700; font-size: 13px; color: var(--primary, var(--primary)); background: #f7f8f8; }
.sf-search-all:hover { background: #eef2ee; }
.sf-search-empty { padding: 18px 14px; text-align: center; color: #6b7280; font-size: 13px; }
.sf-search-heading { margin: 0 0 14px; padding: 12px 14px; font-size: 15px; color: #374151; background: #f7f8f8; border-radius: 10px; }
.sf-card-brand { margin: 4px 0 0; color: #4b5563; font-size: 12px; font-weight: 600; line-height: 1.2; }

/* Pagination : ne plus coller en bas de la grille */
.shop-products-wrapper {
  padding-bottom: 28px;
}
.shop-products-wrapper .woocommerce-pagination,
.woocommerce-pagination {
  display: flex;
  justify-content: center;
  margin: 28px 0 40px;
  padding: 18px 12px 28px;
}
.woocommerce-pagination ul.page-numbers {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}
body.sf-search-mode .woocommerce-pagination { display: none !important; }

/* Filtre marques (sidebar) */
.sf-brand-filter { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--sf-line, #dfe4e7); }
.sf-brand-filter .widget-title { margin: 0 0 10px; font-size: 14px; font-weight: 700; color: var(--sf-ink, #111827); }
.sf-brand-filter-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.sf-brand-opt {
  appearance: none;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: 0;
  padding: 8px 10px;
  border: 1px solid var(--sf-line, #dfe4e7);
  border-radius: 8px;
  background: #fff;
  color: #4b5563;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
}
.sf-brand-opt:hover { border-color: #b7c0c5; color: var(--primary, var(--primary)); }
.sf-brand-opt.is-active {
  border-color: var(--primary, var(--primary));
  background: #f3f8f5;
  color: var(--primary, var(--primary));
}
.sf-brand-opt-count {
  color: #6b7280;
  font-size: 12px;
  font-weight: 600;
}
.shop-products-wrapper .products > .product.sf-filter-brand { display: none !important; }

/* Fiche produit — marque au-dessus du titre + à droite des avis */
.product-detail-inner .sf-product-brand-top {
  margin: 4px 0 14px;
  padding: 0 0 12px;
  border-bottom: 1px solid #d1d5db;
}
.product-detail-inner .sf-product-brand-link {
  color: #4b5563;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.3;
  text-decoration: none;
}
.product-detail-inner .sf-product-brand-link:hover {
  color: var(--primary, var(--primary));
  text-decoration: underline;
}
.product-detail-inner .woocommerce-product-rating {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 12px;
}
.product-detail-inner .sf-product-brand-inline {
  margin-left: auto;
}
.product-detail-inner .sf-product-brand-inline .sf-product-brand-link,
.product-detail-inner .sf-product-brand-inline-row .sf-product-brand-link {
  color: #4b5563;
  font-size: 13.5px;
  font-weight: 600;
}
.product-detail-inner .sf-product-brand-inline-row {
  margin: 0 0 8px;
}

/* ===== Comparateur : masquer tout résidu injecté côté client (feature retirée) ===== */
.klbcp-btn, .compare-button, .quick-button.compare, .site-compare, .klb-compare,
.klbcp-bar, .klbcp-compare-bar, [class*="add-to-compare"], a[href*="/compare"] { display: none !important; }

/* ===== Pages Panier & Checkout (rendues côté client depuis localStorage) ===== */
.sf-shop-page { padding: 8px 0 40px; }
.sf-page-head { margin: 0 0 24px; }
.sf-page-head h1 { font-size: clamp(22px, 3vw, 30px); font-weight: 800; color: #111827; margin: 0 0 6px; }
.sf-page-head p { margin: 0; color: #6b7280; font-size: 14px; }
.sf-empty-block { text-align: center; padding: 60px 20px; }
.sf-empty-block .sf-empty-ic { width: 64px; height: 64px; margin: 0 auto 18px; color: #cbd5e1; }
.sf-empty-block p { color: #6b7280; margin: 0 0 20px; font-size: 15px; }

/* Layout 2 colonnes (contenu + récap) */
.sf-cart-layout, .sf-checkout-layout { display: grid; grid-template-columns: minmax(0,1fr) 360px; gap: 32px; align-items: start; }
@media (max-width: 900px) { .sf-cart-layout, .sf-checkout-layout { grid-template-columns: 1fr; } }

/* Tableau panier */
/* Carte panier arrondie (même langage visuel que le bento « Total panier »). */
.sf-cart-card { border: 1px solid #eef0f2; border-radius: 14px; overflow: hidden; background: #fff; }
.sf-cart-table { width: 100%; border-collapse: collapse; }
/* On neutralise les bordures de cellules du thème (grille disgracieuse) : on gère tout nous-mêmes. */
.sf-cart-table th, .sf-cart-table td { border: 0 !important; }
.sf-cart-table thead th { text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: .5px; color: #9ca3af; font-weight: 700; padding: 15px 16px; background: #fafbfc; border-bottom: 1px solid #eef0f2 !important; vertical-align: middle; }
.sf-cart-table tbody td { padding: 18px 16px; border-bottom: 1px solid #f3f4f6 !important; vertical-align: middle; font-size: 14px; color: #374151; }
.sf-cart-table tbody tr:last-child td { border-bottom: 0 !important; }
.sf-cart-table td[data-label="Prix"], .sf-cart-table td.sf-cell-total { white-space: nowrap; font-variant-numeric: tabular-nums; }
.sf-cart-table td.sf-cell-total { font-weight: 700; color: #111827; }
.sf-cart-prod { display: flex; align-items: center; gap: 14px; }
.sf-cart-prod img { width: 64px; height: 64px; object-fit: contain; border: 1px solid #eef0f2; border-radius: 10px; flex: 0 0 auto; background: #fff; }
.sf-cart-prod a { font-weight: 600; color: #1f2937; font-size: 14px; line-height: 1.4; }
.sf-cart-prod a:hover { color: var(--primary, var(--primary)); }
.sf-qtybox { display: inline-flex; align-items: center; border: 1px solid #e5e7eb; border-radius: 999px; padding: 2px 6px; }
.sf-qtybox button { border: 0; background: none; font-size: 17px; cursor: pointer; color: #374151; padding: 4px 8px; line-height: 1; }
.sf-qtybox span { min-width: 22px; text-align: center; font-weight: 600; }
.sf-cell-total { font-weight: 700; color: #111827; white-space: nowrap; }
.sf-cell-remove button { border: 0; background: none; color: #9ca3af; font-size: 20px; cursor: pointer; }
.sf-cell-remove button:hover { color: #dc2626; }
.sf-cart-tools { display: flex; justify-content: space-between; align-items: center; margin-top: 18px; flex-wrap: wrap; gap: 12px; }

/* Carte récapitulatif (sticky) */
.sf-summary { border: 1px solid #eef0f2; border-radius: 14px; padding: 22px; background: #fff; position: sticky; top: 24px; }
.sf-summary h3 { margin: 0 0 16px; font-size: 16px; font-weight: 800; color: #111827; }
.sf-sum-line { display: flex; justify-content: space-between; font-size: 14px; color: #4b5563; padding: 8px 0; }
.sf-sum-total { display: flex; justify-content: space-between; font-size: 18px; font-weight: 800; color: #111827; padding: 14px 0 6px; border-top: 1px solid #eef0f2; margin-top: 8px; }
.sf-summary .sf-btn { width: 100%; margin-top: 16px; padding: 14px; }
.sf-free-note { font-size: 12.5px; color: var(--primary, var(--primary)); margin: 10px 0 0; text-align: center; }
.sf-free-note.warn { color: #b45309; }
.sf-ship-bar { height: 6px; background: #eef0f2; border-radius: 4px; overflow: hidden; margin: 8px 0 0; }
.sf-ship-bar span { display: block; height: 100%; background: var(--primary, var(--primary)); transition: width .3s; }

/* Formulaire checkout */
.sf-form-card { border: 1px solid #eef0f2; border-radius: 14px; padding: 24px; }
.sf-form-card h3 { margin: 0 0 18px; font-size: 16px; font-weight: 800; color: #111827; }
.sf-field { margin-bottom: 16px; }
.sf-field label { display: block; font-size: 13px; font-weight: 600; color: #374151; margin-bottom: 6px; }
.sf-field input, .sf-field textarea, .sf-field select { width: 100%; box-sizing: border-box; height: 46px; padding: 0 14px; border: 1px solid #e5e7eb; border-radius: 8px; font-size: 14px; background: #fff; }
.sf-field textarea { height: auto; padding: 12px 14px; min-height: 80px; }
.sf-field input:focus, .sf-field textarea:focus { outline: none; border-color: var(--primary, var(--primary)); box-shadow: 0 0 0 3px rgba(47,93,58,.12); }
/* Prénom + Nom : même rythme vertical que les autres champs (le margin des
   .sf-field internes créait un double espacement, surtout empilés en mobile) */
.sf-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.sf-field-row .sf-field { margin-bottom: 0; }
.sf-demo-note { display: flex; gap: 10px; align-items: flex-start; background: var(--primary-tint); border: 1px solid var(--primary-line); color: var(--primary-dark); border-radius: 10px; padding: 12px 14px; font-size: 13px; line-height: 1.5; margin-top: 4px; }
.sf-checkout-ok { text-align: center; padding: 50px 20px; }
.sf-checkout-ok .sf-ok-ic { width: 72px; height: 72px; margin: 0 auto 20px; color: var(--primary, var(--primary)); }
.sf-checkout-ok h2 { font-size: 24px; font-weight: 800; margin: 0 0 10px; color: #111827; }
.sf-checkout-ok p { color: #6b7280; margin: 0 auto 8px; max-width: 460px; }
.sf-mini-item { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid #f1f2f4; }
.sf-mini-item img { width: 48px; height: 48px; object-fit: contain; border: 1px solid #eef0f2; border-radius: 6px; }
.sf-mini-item .sf-mi-name { font-size: 13px; font-weight: 600; color: #374151; line-height: 1.3; }
.sf-mini-item .sf-mi-qty { font-size: 12px; color: #9ca3af; }
.sf-mini-item .sf-mi-price { margin-left: auto; font-weight: 700; font-size: 13px; color: #111827; white-space: nowrap; }
.sf-search-heading { margin: 0 0 14px; padding: 12px 14px; font-size: 15px; color: #374151; background: #f7f8f8; border-radius: 10px; }

/* ===== Responsive mobile pour nos composants injectés ===== */
@media (max-width: 680px) {
  /* Panier : le tableau 5 colonnes → cartes empilées (jamais de scroll horizontal). */
  .sf-cart-card { border: 0; border-radius: 0; overflow: visible; } /* évite la carte-dans-carte */
  .sf-cart-table thead { display: none; }
  .sf-cart-table, .sf-cart-table tbody, .sf-cart-table tr, .sf-cart-table td { display: block; width: 100%; }
  .sf-cart-table tr { position: relative; border: 1px solid #eef0f2; border-radius: 12px; padding: 14px 44px 14px 14px; margin-bottom: 14px; }
  .sf-cart-table td { border: 0 !important; padding: 5px 0; display: flex; align-items: center; justify-content: space-between; }
  .sf-cart-table td.sf-cell-prod { display: block; padding-bottom: 10px; }
  .sf-cart-table td[data-label]::before { content: attr(data-label); font-weight: 600; color: #6b7280; font-size: 13px; }
  .sf-cart-table td.sf-cell-total { font-size: 16px; }
  .sf-cart-table td.sf-cell-remove { position: absolute; top: 8px; right: 8px; width: auto; padding: 0; }
  .sf-cart-tools { flex-direction: column; align-items: stretch; }
  .sf-cart-tools .sf-btn { width: 100%; }
}
@media (max-width: 520px) {
  /* Formulaire checkout : prénom/nom, CP/ville passent en pleine largeur. */
  .sf-field-row { grid-template-columns: 1fr; }
  .sf-drawer { width: 100%; max-width: 100%; }
  .sf-page-head h1 { font-size: 22px; }
}

/* ============================================================================
 * PANIER & CHECKOUT — refonte fidèle aux maquettes (boutons rectangulaires,
 * bandeau livraison, options d'expédition, bento commande).
 * ========================================================================== */
/* Les pages boutique réemploient le bouton principal global : même hauteur,
   même rayon, même couleur que le tiroir panier et les autres CTA. */
.sf-btn-dark { background: #111827; color: #fff; }
.sf-btn-dark:hover { background: #000; }
.sf-btn-light { background: #f3f4f6; color: #374151; }
.sf-btn-light:hover { background: #e5e7eb; }
.sf-block { width: 100%; }
/* Boutons de la ligne outils du panier (réduction / supprimer) : format compact, pas géants. */
.sf-cart-tools .sf-btn { padding: 0 18px; height: 44px; font-size: 13px; }
.sf-discount-input { height: 44px; box-sizing: border-box; }

/* Bandeau livraison gratuite (haut du panier). */
.sf-ship-banner { background: var(--primary-tint); border: 1px solid var(--primary-line); border-radius: 12px; padding: 16px 20px; margin: 0 0 26px; }
.sf-ship-banner-top { display: flex; align-items: center; gap: 10px; color: #1c7a45; }
.sf-ship-banner-top p { margin: 0; font-size: 15px; color: #14663a; }
.sf-ship-banner-ic { display: inline-flex; color: var(--primary, var(--primary)); }
.sf-ship-progress { height: 8px; background: #cfe8d8; border-radius: 5px; overflow: hidden; margin-top: 12px; }
.sf-ship-progress span { display: block; height: 100%; background: var(--primary, var(--primary)); border-radius: 5px; transition: width .3s; }

/* Table panier : colonne de suppression en tête de ligne. */
.sf-cart-table td.sf-cell-remove { width: 34px; text-align: center; }
.sf-cart-table th:first-child { width: 34px; }
.sf-cart-main { min-width: 0; }

/* Ligne outils : réduction (gauche) + supprimer le panier (droite). */
.sf-discount { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.sf-discount-label { font-weight: 600; color: #374151; font-size: 14px; }
.sf-discount-input { height: 46px; padding: 0 14px; border: 1px solid #e5e7eb; border-radius: 8px; font-size: 14px; min-width: 200px; }
.sf-discount-input:focus { outline: none; border-color: var(--primary, var(--primary)); box-shadow: 0 0 0 3px rgba(47,93,58,.12); }
.sf-discount-msg { margin: 10px 2px 0; font-size: 13px; min-height: 0; }
.sf-discount-msg.err { color: #b45309; }

/* Options de livraison (radios) — partagées panier & checkout. */
.sf-ship-opts { display: grid; grid-template-columns: auto 1fr; gap: 4px 14px; align-items: start; padding: 14px 0; border-top: 1px solid #eef0f2; margin-top: 8px; }
.sf-ship-envoi { color: #9ca3af; font-size: 13px; padding-top: 4px; }
.sf-ship-list { display: flex; flex-direction: column; gap: 10px; }
.sf-ship-opt { display: flex; align-items: flex-start; gap: 9px; font-size: 14px; color: #374151; cursor: pointer; text-align: right; justify-content: flex-end; }
.sf-ship-opt input { margin: 3px 0 0; accent-color: var(--primary, var(--primary)); flex: 0 0 auto; order: 2; }
.sf-ship-label { order: 1; }
.sf-ship-note { grid-column: 2; margin: 2px 0 0; font-size: 12px; color: #9ca3af; text-align: right; }

/* Carte « Total panier » (droite du panier). */
.sf-cart-summary h3 { font-size: 17px; }

/* Bento « Votre commande » (droite du checkout). */
.sf-order-bento .sf-bento-products { border-bottom: 1px solid #eef0f2; padding-bottom: 8px; margin-bottom: 8px; }
.sf-bento-item { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 0; font-size: 13px; color: #4b5563; }
.sf-bento-item .sf-ci-img img { width: 48px; height: 48px; }
.sf-bento-name { min-width: 0; line-height: 1.4; }
.sf-bento-x { color: #9ca3af; white-space: nowrap; }
.sf-bento-price { font-weight: 600; color: #111827; white-space: nowrap; }
.sf-pay-method { border-top: 1px solid #eef0f2; margin-top: 8px; padding-top: 14px; }
.sf-pay-opt { display: flex; align-items: center; gap: 9px; font-size: 15px; font-weight: 600; color: #111827; cursor: pointer; }
.sf-pay-opt input { accent-color: var(--primary, var(--primary)); }
.sf-pay-note { margin: 6px 0 0 26px; font-size: 13px; color: #6b7280; }
.sf-commander { margin-top: 14px; padding: var(--sf-button-padding-y) var(--sf-button-padding-x) !important; border-radius: var(--sf-button-radius) !important; }

/* Marqueurs obligatoire / facultatif sur les libellés. */
.sf-req { color: #dc2626; font-weight: 700; }
.sf-opt { color: #9ca3af; font-weight: 400; text-transform: none; }

/* Sections du formulaire checkout (titre souligné, comme la maquette). */
.sf-form-section + .sf-form-section { margin-top: 22px; }
.sf-form-section h3 { margin: 0 0 20px; padding-bottom: 14px; border-bottom: 1px solid #eef0f2; font-size: 17px; font-weight: 800; color: #111827; }
.sf-field select { appearance: auto; }
/* notes de commande : champ bas + interligne sain (le thème force un line-height
   géant via --theme-form-input-height, ce qui gonflait la hauteur à ~110px) */
.sf-field textarea { min-height: 56px; height: 56px; line-height: 1.4 !important; }
#sf-checkout-page .sf-form-section:last-child h3 { margin-bottom: 16px; }

/* Note de paiement sécurisé au-dessus du bouton Commander. */
.sf-secure-note { display: flex; align-items: flex-start; gap: 8px; margin: 16px 0 0; font-size: 12.5px; line-height: 1.45; color: #6b7280; }
.sf-secure-note svg { flex: 0 0 auto; margin-top: 1px; color: var(--primary, var(--primary)); }

/* Checkout : mêmes proportions que les pages de boutique, avec un récapitulatif
   suffisamment généreux pour les produits, montants et réassurances. */
#sf-checkout-page { max-width: 1180px; margin-inline: auto; }
.sf-checkout-layout { grid-template-columns: minmax(0, 1fr) minmax(380px, 400px); }
.sf-checkout-layout .sf-form-card { align-self: start; }
.sf-checkout-reassurance { margin: 0 0 18px; }
.sf-delivery-note { margin-bottom: 0; color: var(--primary, var(--primary)); }
.sf-delivery-note strong { font-weight: 700; }

@media (max-width: 900px) {
  /* Bento & sidebar passent sous le contenu ; options de livraison à gauche. */
  .sf-checkout-layout { grid-template-columns: 1fr; }
  .sf-ship-opt, .sf-ship-note { text-align: left; justify-content: flex-start; }
  .sf-ship-opt input { order: 0; }
  .sf-ship-label { order: 1; }
}
@media (max-width: 680px) {
  .sf-form-card { padding: var(--sf-space-3); }
}

/* ===== Filtres boutique : plus de scroll interne (inutile et disgracieux) ===== */
.widget_price_filter,
.widget_price_filter .price_slider_wrapper,
.filter-sidebar-body,
.shop-sidebar .site-scroll,
.filter-widgets,
.widget-area .site-scroll { overflow: visible !important; max-height: none !important; height: auto !important; }

/* ===== Bloc PROMOTIONS de la navbar : en ORANGE (au lieu de rouge) ===== */
.sf-promo-link { color: #ea6100 !important; font-weight: 700; display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
.sf-promo-link:hover { color: #c85400 !important; }
.badge.sf-promo-badge,
.sf-promo-badge { background: #ea6100 !important; background-image: none !important; color: #fff !important; border-radius: 6px; padding: 4px 9px !important; font-weight: 800; font-size: 11px; letter-spacing: .3px; }

/* ============================================================================
 * PAGES DE CONTENU (À propos, Livraison, Retours, Garantie, Guides, Recrutement,
 * Centre logistique) — typographie soignée et composants réutilisables (.sf-doc).
 * ========================================================================== */
.sf-doc { max-width: 940px; margin: 0 auto; color: #374151; font-size: 15.5px; line-height: 1.72; }
.sf-doc-title, .sf-doc > h1 { font-size: clamp(26px, 4vw, 34px); font-weight: 800; color: #111827; margin: 0 0 10px; line-height: 1.15; }
.sf-doc .sf-lead { font-size: 18px; color: #4b5563; margin: 0 0 30px; line-height: 1.6; }
.sf-doc h2 { font-size: 21px; font-weight: 800; color: #111827; margin: 38px 0 14px; }
.sf-doc h3 { font-size: 16px; font-weight: 700; color: #1f2937; margin: 0 0 8px; }
.sf-doc p { margin: 0 0 16px; }
.sf-doc a { color: var(--primary, var(--primary)); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
.sf-doc a:hover { color: var(--primary-dark); }
.sf-doc-hr { border: 0; border-top: 1px solid #eef0f2; margin: 36px 0 4px; }
.sf-doc ul { margin: 0 0 18px; padding: 0; list-style: none; }
.sf-doc ul li { position: relative; padding-left: 26px; margin-bottom: 10px; }
.sf-doc ul li::before { content: ""; position: absolute; left: 3px; top: 9px; width: 8px; height: 8px; border-radius: 50%; background: var(--primary, var(--primary)); }
.sf-doc ol.sf-doc-steps { margin: 0 0 18px; padding: 0; list-style: none; counter-reset: step; }
.sf-doc ol.sf-doc-steps li { position: relative; padding-left: 44px; margin-bottom: 14px; min-height: 30px; }
.sf-doc ol.sf-doc-steps li::before { counter-increment: step; content: counter(step); position: absolute; left: 0; top: 0; width: 30px; height: 30px; border-radius: 50%; background: var(--primary, var(--primary)); color: #fff; font-weight: 700; font-size: 14px; display: flex; align-items: center; justify-content: center; }
.sf-doc .sf-callout { display: flex; gap: 12px; background: var(--primary-tint); border: 1px solid var(--primary-line); border-left: 4px solid var(--primary, var(--primary)); border-radius: 10px; padding: 15px 18px; margin: 24px 0; }
.sf-doc .sf-callout p { margin: 0; font-size: 14.5px; color: var(--primary-dark); }
.sf-doc .sf-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; margin: 22px 0; }
.sf-doc .sf-card { border: 1px solid #eef0f2; border-radius: 12px; padding: 20px; background: #fff; }
.sf-doc .sf-card p { margin: 0; font-size: 14px; color: #6b7280; line-height: 1.55; }
.sf-doc .sf-card a { font-size: 14px; }
.sf-doc .sf-cta { margin: 40px 0 8px; padding: 30px 28px; background: #0f1b14; border-radius: 16px; text-align: center; }
.sf-doc .sf-cta h2 { color: #fff; margin: 0 0 8px; }
.sf-doc .sf-cta p { color: #c4d3c9; margin: 0 auto 18px; max-width: 560px; font-size: 15px; }
.sf-doc .sf-cta .sf-btn { display: inline-block; background: var(--primary, var(--primary)); color: #fff; padding: 13px 28px; border-radius: 8px; font-weight: 700; text-decoration: none; }
.sf-doc .sf-cta .sf-btn:hover { background: #00522c; color: #fff; }

/* ============================================================================
 * ROUND 5 — finition globale : pages statiques, accordéons produit/FAQ, footer.
 * Les règles ci-dessous passent par les tokens partagés définis en tête de fichier.
 * ========================================================================== */

/* --- Rythme commun des pages de contenu --- */
.sf-static-main { box-sizing: border-box; }
.sf-static-hero { max-width: var(--sf-content-width); margin: 0 auto var(--sf-space-5); }
.sf-static-hero h1 {
  margin: 0 0 var(--sf-space-2); color: var(--sf-ink); font-size: var(--sf-title-xl);
  font-weight: 700; line-height: 1.12; letter-spacing: -.02em;
}
.sf-eyebrow {
  margin: 0 0 var(--sf-space-1); color: var(--primary, var(--primary)); font-size: 12px;
  font-weight: 600; letter-spacing: .08em; line-height: 1.3; text-transform: uppercase;
}
.sf-static-lead { max-width: 760px; margin: 0; color: var(--sf-muted); font-size: 18px; line-height: 1.58; }

/* Pages légales et de service : une largeur de lecture, des respirations égales,
   et une taille qui reste confortable sur téléphone. */
.sf-doc {
  max-width: var(--sf-content-width); color: #374151; font-size: var(--sf-body);
  line-height: 1.68;
}
.sf-doc-title, .sf-doc > h1 {
  margin: 0 0 var(--sf-space-2); color: var(--sf-ink); font-size: var(--sf-title-xl);
  font-weight: 700; line-height: 1.12;
}
.sf-doc .sf-lead { margin: 0 0 var(--sf-space-5); color: var(--sf-muted); font-size: 18px; line-height: 1.58; }
.sf-doc h2 { margin: var(--sf-space-6) 0 var(--sf-space-2); color: var(--sf-ink); font-size: var(--sf-title-lg); font-weight: 700; line-height: 1.22; }
.sf-doc h3 { margin: 0 0 var(--sf-space-1); color: var(--sf-ink); font-size: var(--sf-title-md); font-weight: 600; line-height: 1.3; }
.sf-doc p { margin: 0 0 var(--sf-space-3); }
.sf-doc-hr { margin: 0 0 var(--sf-space-5); border-color: var(--sf-line); }
.sf-doc ul { margin-bottom: var(--sf-space-4); }
.sf-doc ul li { margin-bottom: var(--sf-space-2); }
.sf-doc .sf-callout { margin: var(--sf-space-4) 0; border-color: #cfe0d3; border-radius: var(--sf-radius); padding: var(--sf-space-3) var(--sf-space-4); }
.sf-doc .sf-cards { gap: var(--sf-space-3); margin: var(--sf-space-4) 0; }
.sf-doc .sf-card { border-color: var(--sf-line); border-radius: var(--sf-radius); padding: var(--sf-space-4); }
.sf-doc .sf-cta { margin: var(--sf-space-6) 0 0; border-radius: 16px; padding: var(--sf-space-5); }
.sf-readable-section > .e-con-inner { max-width: var(--sf-content-width) !important; margin-inline: auto !important; }
.sf-readable-section .elementor-widget-text-editor { color: #374151; font-size: var(--sf-body); line-height: 1.68; }
.sf-readable-section .elementor-widget-text-editor p { margin-bottom: var(--sf-space-3); }
.sf-legacy-heading { margin: var(--sf-space-5) 0 var(--sf-space-2); color: var(--sf-ink); font-size: var(--sf-title-lg); font-weight: 700; line-height: 1.22; }
.sf-ptype-legal .sf-static-main p > strong:only-child,
.sf-ptype-legal .sf-static-main p > b:only-child { display: block; margin-top: var(--sf-space-5); color: var(--sf-ink); font-size: var(--sf-title-md); font-weight: 700; line-height: 1.3; }

/* --- À propos : une seule histoire, puis des preuves et services en grille --- */
.sf-ptype-editorial [data-elementor-type="wp-page"] { padding-top: var(--sf-space-6); padding-bottom: var(--sf-space-6); }
.sf-about { max-width: var(--sf-content-width); margin: 0 auto; }
.sf-about-hero { padding-bottom: var(--sf-space-5); border-bottom: 1px solid var(--sf-line); }
.sf-about-intro { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sf-space-3) var(--sf-space-5); margin: var(--sf-space-5) 0; color: var(--sf-muted); font-size: var(--sf-body); line-height: 1.65; }
.sf-about-intro p { margin: 0; }
.sf-about-promise { max-width: 700px; margin: var(--sf-space-5) 0; }
.sf-about-promise h2 { margin: 0 0 var(--sf-space-2); color: var(--sf-ink); font-size: var(--sf-title-lg); font-weight: 700; line-height: 1.22; }
.sf-about-promise p { margin: 0; color: var(--sf-muted); font-size: var(--sf-body); line-height: 1.65; white-space: pre-line; }
.sf-about-services { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sf-space-3); margin: var(--sf-space-5) 0 var(--sf-space-6); }
.sf-about-service { display: flex; flex-direction: column; min-height: 216px; padding: var(--sf-space-4); border: 1px solid var(--sf-line); border-radius: var(--sf-radius); background: var(--sf-surface); }
.sf-about-service h2 { margin: 0 0 var(--sf-space-2); color: var(--sf-ink); font-size: var(--sf-title-md); font-weight: 700; line-height: 1.3; }
.sf-about-service > p:not(.sf-eyebrow) { margin: 0 0 var(--sf-space-4); color: var(--sf-muted); font-size: var(--sf-body-sm); line-height: 1.55; }
.sf-about-service a { align-self: flex-start; margin-top: auto; color: var(--primary, var(--primary)); font-size: var(--sf-body-sm); font-weight: 600; text-decoration: none; }
.sf-about-service a:hover { text-decoration: underline; text-underline-offset: 3px; }
.sf-about .sf-doc { max-width: none; }

/* --- Contact : hero clair, véritable formulaire conservé, coordonnées en carte --- */
.sf-ptype-contact [data-elementor-type="wp-page"] { padding-top: var(--sf-space-6); padding-bottom: var(--sf-space-6); }
.sf-contact-page { max-width: var(--sf-content-width); margin: 0 auto; }
.sf-contact-layout { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(260px, .72fr); gap: var(--sf-space-5); align-items: start; }
.sf-contact-form, .sf-contact-details { border: 1px solid var(--sf-line); border-radius: var(--sf-radius); background: #fff; }
.sf-contact-form { padding: clamp(20px, 3vw, 32px); }
.sf-contact-details { padding: var(--sf-space-4); background: var(--sf-surface); }
.sf-contact-details h2 { margin: 0 0 var(--sf-space-2); color: var(--sf-ink); font-size: var(--sf-title-md); font-weight: 700; }
.sf-contact-details p { margin: 0 0 var(--sf-space-3); color: var(--sf-muted); font-size: var(--sf-body-sm); line-height: 1.55; }
.sf-contact-details a { color: var(--primary, var(--primary)); font-size: var(--sf-body); font-weight: 600; overflow-wrap: anywhere; }
.sf-contact-form .wpforms-container { margin: 0 !important; }
.sf-contact-form .wpforms-field { padding: 0 0 var(--sf-space-3) !important; }
.sf-contact-form .wpforms-field-label, .sf-contact-form .wpforms-field-sublabel { color: var(--sf-ink) !important; font-size: var(--sf-body-sm) !important; font-weight: 600 !important; }
.sf-contact-form input, .sf-contact-form textarea { border-color: var(--sf-line) !important; border-radius: 8px !important; font-size: var(--sf-body) !important; }
.sf-contact-form textarea { min-height: 152px !important; }
.sf-contact-form .wpforms-submit { min-height: 46px !important; padding: 0 24px !important; border-radius: 8px !important; background: var(--primary, var(--primary)) !important; font-size: var(--sf-body-sm) !important; font-weight: 600 !important; }
.sf-contact-form input:focus, .sf-contact-form textarea:focus { border-color: var(--primary, var(--primary)) !important; box-shadow: 0 0 0 3px rgba(47,93,58,.12) !important; }

/* --- FAQ : cartes compactes et lisibles, avec états ouvert/fermé explicites --- */
.sf-ptype-faq [data-elementor-type="wp-page"] { max-width: 1020px; margin: 0 auto; padding: var(--sf-space-6) var(--sf-page-gutter) !important; }
.sf-ptype-faq .elementor-widget-heading { max-width: 760px; margin: 0 auto var(--sf-space-4) !important; }
.sf-ptype-faq .elementor-widget-heading h1.elementor-heading-title,
.sf-ptype-faq .elementor-widget-heading h2.elementor-heading-title,
.sf-ptype-faq .elementor-widget-heading h3.elementor-heading-title,
.sf-ptype-faq .elementor-widget-heading h4.elementor-heading-title,
.sf-ptype-faq .elementor-widget-heading h5.elementor-heading-title,
.sf-ptype-faq .elementor-widget-heading h6.elementor-heading-title { margin: 0 0 var(--sf-space-1) !important; color: var(--sf-ink); font-size: var(--sf-title-lg) !important; font-weight: 700 !important; line-height: 1.2 !important; }
.sf-ptype-faq .elementor-widget-heading p.elementor-heading-title,
.sf-ptype-faq .elementor-widget-heading p { margin: 0 !important; color: var(--sf-muted) !important; font-size: var(--sf-body) !important; font-weight: 400 !important; line-height: 1.55 !important; }
.sf-ptype-faq .elementor-widget-n-accordion { max-width: 760px; margin: 0 auto !important; }
.sf-ptype-faq .e-n-accordion-item { margin: 0 0 var(--sf-space-2) !important; border: 1px solid var(--sf-line) !important; border-radius: var(--sf-radius) !important; background: #fff; overflow: hidden; }
.sf-ptype-faq .e-n-accordion-item-title { display: flex !important; flex-direction: row !important; align-items: center !important; justify-content: flex-start !important; gap: var(--sf-space-3) !important; min-height: 58px; padding: var(--sf-space-3) var(--sf-space-4) !important; color: var(--sf-ink) !important; cursor: pointer; }
.sf-ptype-faq .e-n-accordion-item-title-header { order: 1; min-width: 0; flex: 1 1 auto; margin-right: auto !important; text-align: left !important; }
.sf-ptype-faq .e-n-accordion-item-title-text { display: block; width: 100%; color: inherit !important; font-size: var(--sf-body) !important; font-weight: 600 !important; line-height: 1.4 !important; text-align: left !important; }
.sf-ptype-faq .e-n-accordion-item-title-icon { order: 2; flex: 0 0 auto; width: 16px; height: 16px; margin-left: auto; }
.sf-ptype-faq .e-n-accordion-item-title:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: -3px; }
.sf-ptype-faq .e-n-accordion-item [role="region"] { padding: 0 var(--sf-space-4) var(--sf-space-4) !important; color: var(--sf-muted); font-size: var(--sf-body-sm); line-height: 1.6; }
.sf-ptype-faq .e-n-accordion-item [role="region"] p,
.sf-ptype-faq .e-n-accordion-item [role="region"] ul,
.sf-ptype-faq .e-n-accordion-item [role="region"] ol { margin: 0; padding-inline: var(--sf-space-4) !important; }
.sf-ptype-faq .e-n-accordion-item[open] { border-color: var(--primary-line) !important; box-shadow: 0 5px 16px rgba(20, 65, 35, .06); }
.sf-ptype-faq .e-n-accordion-item[open] .e-n-accordion-item-title { background: var(--sf-surface); }

/* --- Fiche produit : accordéon natif seulement sur téléphone --- */
.sf-product-accordion { display: none; }
.sf-sticky-price { font-weight: 500 !important; }
@media (max-width: 1023.98px) {
  /* Le formulaire d'achat reste EN FLUX (bouton visible après le prix). La barre
     fixe est un élément dédié (.sf-buybar) piloté au défilement. On neutralise
     donc le position:fixed du thème. */
  .single .product-type-simple form.cart,
  form.cart.single-ajax {
    position: static !important;
    inset: auto !important;
    z-index: auto !important;
    box-shadow: none !important;
    background: transparent !important;
  }
  form.cart.single-ajax { display: flex !important; align-items: stretch !important; gap: var(--sf-space-2) !important; margin: 4px 0 0 !important; padding: 0 !important; min-height: 0 !important; }
  form.cart.single-ajax .quantity { width: 96px !important; min-width: 96px !important; height: auto !important; margin: 0 !important; }
  form.cart.single-ajax .quantity .qty { font-size: var(--sf-body-sm) !important; }
  form.cart.single-ajax .single_add_to_cart_button { flex: 1 1 auto !important; width: auto !important; min-height: 54px !important; padding: 0 var(--sf-space-3) !important; font-size: 15px !important; font-weight: 700 !important; }
  /* le prix est déjà affiché au-dessus : inutile de le répéter dans le bouton en flux */
  form.cart.single-ajax .sf-sticky-price { display: none !important; }
}
@media (max-width: 767.98px) {
  .woocommerce-tabs > .wc-tabs { display: none !important; }
  .woocommerce-tabs > .wc-tab { display: none !important; }
  .woocommerce-tabs > .sf-product-reviews-permanent { display: block !important; }
  .sf-product-accordion { display: grid; gap: var(--sf-space-2); }
  .sf-product-accordion-item { border: 1px solid var(--sf-line); border-radius: var(--sf-radius); background: #fff; overflow: hidden; }
  .sf-product-accordion-item > summary { display: flex; align-items: center; justify-content: space-between; gap: var(--sf-space-3); min-height: 56px; padding: var(--sf-space-3) var(--sf-space-4); color: var(--sf-ink); font-size: var(--sf-body); font-weight: 600; line-height: 1.35; cursor: pointer; list-style: none; }
  .sf-product-accordion-item > summary::-webkit-details-marker { display: none; }
  .sf-product-accordion-item > summary::after { content: "+"; color: var(--primary, var(--primary)); font-size: 22px; font-weight: 400; line-height: 1; }
  .sf-product-accordion-item[open] > summary { background: var(--sf-surface); }
  .sf-product-accordion-item[open] > summary::after { content: "−"; }
  .sf-product-accordion-item > summary:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: -3px; }
  .sf-product-accordion-panel { padding: 0 var(--sf-space-4) var(--sf-space-4); }
  .sf-product-accordion-panel .wc-tab { display: block !important; margin: 0 !important; }
  .sf-product-accordion-panel .wc-tab > h2 { margin-top: var(--sf-space-2); font-size: var(--sf-title-md); line-height: 1.3; }
}

/* --- Footer : grille stable, newsletter compacte, moyens de paiement lisibles --- */
.sf-footer-extras { margin-top: var(--sf-space-6); }
.sf-reassure { padding: var(--sf-space-5) 0; }
.sf-newsletter { padding: 22px 0; }
.sf-newsletter-inner { gap: var(--sf-space-4); }
.sf-newsletter-title { margin-bottom: 3px; font-size: var(--sf-body); font-weight: 600; line-height: 1.35; }
.sf-newsletter-sub { font-size: var(--sf-body-sm); line-height: 1.45; }
.sf-newsletter-form { max-width: 460px; }
.sf-newsletter-input, .sf-newsletter-btn { height: 44px !important; font-size: var(--sf-body-sm) !important; }
.sf-newsletter-btn { padding: 0 20px !important; font-weight: 600 !important; }
.sf-payment { padding: 12px 0; }
.sf-payment-inner { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: var(--sf-space-3); flex-wrap: nowrap; }
.sf-payment-secure { font-size: 12px; font-weight: 500; white-space: nowrap; }
.sf-payment-secure:last-child { justify-self: end; }
.sf-payment-badges { gap: 6px; flex-wrap: nowrap; }
.sf-pay { width: 42px; height: 27px; padding: 3px 4px; border-radius: 5px; }
.sf-pay img { max-width: 36px; height: 19px; }
.site-footer .footer-widgets { padding: 44px 0 36px; }
.site-footer .footer-inner { align-items: start; }
.site-footer .footer-contact-block .widget-body > p:first-child { margin: 0 0 var(--sf-space-3); }
.site-footer .footer-contact-block img { display: block; width: 164px !important; height: auto !important; max-width: 100%; margin: 0; }
.site-footer .footer-contact-block .widget-body > p { margin: 0 0 var(--sf-space-2); color: inherit !important; }
.site-footer .footer-contact-block strong { font-size: var(--sf-body-sm); font-weight: 600 !important; }
.site-footer .footer-contact-block .contact-detail p { margin: 0; font-size: var(--sf-body-sm); line-height: 1.55; }
.site-footer .widget-title { margin: 0 0 var(--sf-space-3) !important; font-size: 13px !important; font-weight: 600 !important; letter-spacing: .04em; line-height: 1.3; text-transform: uppercase; }
.site-footer .widget_nav_menu .menu li { margin-bottom: 9px; }
.site-footer .widget_nav_menu .menu a { font-size: var(--sf-body-sm); line-height: 1.4; }
.site-footer .footer-copyright { padding: 18px 0; }

@media (max-width: 767.98px) {
  .sf-static-hero { margin-bottom: var(--sf-space-4); }
  .sf-static-lead, .sf-doc .sf-lead { font-size: 16px; line-height: 1.58; }
  .sf-ptype-editorial [data-elementor-type="wp-page"], .sf-ptype-contact [data-elementor-type="wp-page"] { padding-top: var(--sf-space-5); padding-bottom: var(--sf-space-5); }
  .sf-about-promise { margin: var(--sf-space-4) 0; }
  .sf-about-intro { grid-template-columns: 1fr; gap: var(--sf-space-3); margin: var(--sf-space-4) 0; }
  .sf-about-services { grid-template-columns: 1fr; margin: var(--sf-space-4) 0 var(--sf-space-5); }
  .sf-about-service { min-height: 0; padding: var(--sf-space-4); }
  .sf-contact-layout { grid-template-columns: 1fr; gap: var(--sf-space-3); }
  .sf-contact-form { padding: var(--sf-space-4); }
  .sf-contact-details { padding: var(--sf-space-4); }
  .sf-ptype-faq [data-elementor-type="wp-page"] { padding-top: var(--sf-space-5) !important; padding-bottom: var(--sf-space-5) !important; }
  .sf-ptype-faq .e-n-accordion-item-title { min-height: 54px; padding: var(--sf-space-3) !important; }
  .sf-ptype-faq .e-n-accordion-item [role="region"] { padding: 0 0 var(--sf-space-3) !important; }
  .sf-ptype-faq .e-n-accordion-item [role="region"] p,
  .sf-ptype-faq .e-n-accordion-item [role="region"] ul,
  .sf-ptype-faq .e-n-accordion-item [role="region"] ol { padding-inline: var(--sf-space-3) !important; }
  form.cart.single-ajax { min-height: 0 !important; padding: 0 !important; }
  form.cart.single-ajax .quantity { width: 92px !important; min-width: 92px !important; height: auto !important; }
  form.cart.single-ajax .single_add_to_cart_button { min-height: 52px !important; font-size: var(--sf-body-sm) !important; }
  .sf-footer-extras { margin-top: var(--sf-space-5); }
  .sf-reassure { padding: var(--sf-space-4) 0; }
  .sf-newsletter { padding: var(--sf-space-4) 0; }
  .sf-newsletter-inner { align-items: stretch; }
  .sf-newsletter-form { flex: 1 1 100%; max-width: none; }
  .sf-payment-inner { grid-template-columns: 1fr; justify-items: center; gap: var(--sf-space-2); }
  .sf-payment-secure:last-child { justify-self: center; }
  .sf-payment-badges { width: 100%; justify-content: center; }
  .sf-pay { width: 40px; height: 26px; }
  .sf-pay img { max-width: 34px; height: 18px; }
  .site-footer .footer-widgets { padding: var(--sf-space-5) 0; }
  .site-footer .footer-contact-block { margin-bottom: var(--sf-space-5); }
  .site-footer .footer-contact-block img { width: 150px !important; }
  .site-footer .footer-widgets-block .widget-col { margin-bottom: var(--sf-space-4); }
  .site-footer .widget-title { margin-bottom: var(--sf-space-2) !important; }
}

/* ============================================================================
 * ROUND 6 — composants éditoriaux et navigation mobile partagés.
 * ========================================================================== */

/* Toutes les pages issues du renderer de contenus reçoivent le même souffle au
   départ. Cela corrige les titres collés sous le header, y compris les services
   et les pages légales, sans règle page-par-page. */
.sf-static-main {
  box-sizing: border-box;
  padding: var(--sf-space-6) var(--sf-page-gutter) !important;
}

/* FAQ unique : l'accueil et /foire-aux-questions/ partagent strictement les
   mêmes classes et les mêmes dimensions de composant. */
.sf-faq-section .sf-faq-heading {
  max-width: 760px;
  margin: 0 auto var(--sf-space-4) !important;
}
.sf-faq-section .sf-faq-heading .site-module-header,
.sf-faq-section .sf-faq-heading .site-module-header > .col { display: block !important; }
.sf-faq-section .sf-faq-heading .entry-title,
.sf-faq-section .sf-faq-heading .elementor-heading-title:is(h1, h2, h3, h4, h5, h6) {
  margin: 0 0 var(--sf-space-1) !important;
  color: var(--sf-ink) !important;
  font-size: var(--sf-title-lg) !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
}
.sf-faq-section .sf-faq-heading p,
.sf-faq-section .sf-faq-heading .elementor-heading-title:is(p) {
  margin: 0 !important;
  color: var(--sf-muted) !important;
  font-size: var(--sf-body) !important;
  font-weight: 400 !important;
  line-height: 1.55 !important;
}
.sf-faq-accordion { max-width: 760px; margin: 0 auto !important; }
.sf-faq-accordion .e-n-accordion-item {
  margin: 0 0 var(--sf-space-2) !important;
  border: 1px solid var(--sf-line) !important;
  border-radius: var(--sf-radius) !important;
  background: #fff;
  overflow: hidden;
}
.sf-faq-accordion .e-n-accordion-item-title {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: var(--sf-space-3) !important;
  min-height: 58px;
  padding: var(--sf-space-3) var(--sf-space-4) !important;
  color: var(--sf-ink) !important;
  cursor: pointer;
}
.sf-faq-accordion .e-n-accordion-item-title-header { order: 1; min-width: 0; flex: 1 1 auto; margin-right: auto !important; text-align: left !important; }
.sf-faq-accordion .e-n-accordion-item-title-text { display: block; width: 100%; color: inherit !important; font-size: var(--sf-body) !important; font-weight: 600 !important; line-height: 1.4 !important; text-align: left !important; }
.sf-faq-accordion .e-n-accordion-item-title-icon { order: 2; flex: 0 0 auto; width: 16px; height: 16px; margin-left: auto; color: var(--primary, var(--primary)); }
.sf-faq-accordion .e-n-accordion-item-title-icon svg { fill: currentColor; }
.sf-faq-accordion .e-n-accordion-item-title:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: -3px; }
.sf-faq-accordion .e-n-accordion-item [role="region"] { padding: 14px var(--sf-space-4) var(--sf-space-4) !important; color: var(--sf-muted); font-size: var(--sf-body-sm); line-height: 1.65; }
.sf-faq-accordion .e-n-accordion-item [role="region"] p,
.sf-faq-accordion .e-n-accordion-item [role="region"] ul,
.sf-faq-accordion .e-n-accordion-item [role="region"] ol { margin: 0; padding-inline: 0 !important; }
.sf-faq-accordion .e-n-accordion-item[open] { border-color: var(--primary-line) !important; box-shadow: 0 5px 16px rgba(20, 65, 35, .06); }
.sf-faq-accordion .e-n-accordion-item[open] .e-n-accordion-item-title { background: var(--sf-surface); }
.sf-home-faq > .e-con-inner { max-width: 1020px; margin-inline: auto; padding-inline: var(--sf-page-gutter); }

/* Hero éditorial sans nouvelle image : le dégradé vert marque reprend la
   fonction de contraste d'un hero photo tout en restant 100 % projet. */
.sf-rich-hero {
  max-width: none;
  margin-bottom: var(--sf-space-4);
  padding: clamp(32px, 6vw, 72px);
  border: 1px solid #1d5e38;
  border-radius: 18px;
  background: radial-gradient(circle at 88% 15%, rgba(151, 197, 106, .36), transparent 33%), linear-gradient(135deg, #0f2d1c, #075833 58%, #0b6a3b);
}
.sf-rich-hero .sf-eyebrow { color: #b9e2bd; }
.sf-rich-hero h1 { color: #fff; max-width: 780px; }
.sf-rich-hero .sf-static-lead { color: #d8eadc; max-width: 690px; }
.sf-key-figures { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; margin: 0 0 var(--sf-space-5); overflow: hidden; border-radius: var(--sf-radius); background: #20472f; }
.sf-key-figures p { display: grid; gap: 3px; min-height: 110px; margin: 0; padding: var(--sf-space-4); align-content: center; background: #172a1c; text-align: center; }
.sf-key-figures strong { color: #a9dfa0; font-size: clamp(24px, 3vw, 34px); font-weight: 700; line-height: 1; }
.sf-key-figures span { color: #e3eee4; font-size: var(--sf-body-sm); line-height: 1.4; }

/* Page recrutement : hero, valeurs sous forme de cartes, puis les métiers et
   la candidature issus du contenu réel déjà présent dans les données. */
.sf-recruitment-page { max-width: var(--sf-content-width); margin: 0 auto; }
.sf-recruitment-content { max-width: none; }
.sf-recruitment-content > h2:first-child { margin-top: 0; }
.sf-recruitment-content > ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sf-space-3); margin: var(--sf-space-4) 0 var(--sf-space-6); padding: 0; list-style: none; }
.sf-recruitment-content > ul li { min-height: 96px; margin: 0; padding: var(--sf-space-4); border: 1px solid var(--sf-line); border-radius: var(--sf-radius); background: var(--sf-surface); line-height: 1.55; }
.sf-recruitment-content > ul li::before { content: ""; display: inline-block; width: 8px; height: 8px; margin: 0 9px 1px 0; border-radius: 50%; background: var(--primary, var(--primary)); }
.sf-recruitment-content .sf-cards { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* Contact : vrai formulaire conservé à gauche, informations réellement utiles
   et lien vers la FAQ à droite. */
.sf-contact-details { display: grid; gap: var(--sf-space-3); padding: 0; border: 0; background: transparent; }
.sf-contact-info-card { padding: var(--sf-space-4); border: 1px solid var(--sf-line); border-radius: var(--sf-radius); background: var(--sf-surface); }
.sf-contact-info-card h2 { margin: 0 0 var(--sf-space-3); }
.sf-contact-info-row { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 10px; align-items: start; }
.sf-contact-info-row + .sf-contact-info-row { margin-top: var(--sf-space-3); }
.sf-contact-info-row > span:last-child { color: var(--sf-ink); font-size: var(--sf-body-sm); font-weight: 600; line-height: 1.5; }
.sf-contact-info-row small { display: block; color: var(--sf-muted); font-size: 12px; font-weight: 500; }
.sf-contact-info-row { align-items: center; }
.sf-contact-icon { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 9px; background: var(--primary-tint-2); color: var(--primary, var(--primary)); line-height: 0; }
.sf-contact-icon svg { width: 18px; height: 18px; display: block; }
.sf-contact-faq-short p { margin-bottom: var(--sf-space-2); }
.sf-contact-faq-short > a { font-size: var(--sf-body-sm); }

/* Footer : bloc horaires compact directement sous la signature. */
.site-footer .sf-opening-hours { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 10px; margin: 0 0 var(--sf-space-3); padding: 11px 0; border-top: 1px solid rgba(23, 33, 27, .12); border-bottom: 1px solid rgba(23, 33, 27, .12); color: inherit; }
.site-footer .sf-opening-hours svg { width: 21px; height: 21px; margin-top: 2px; fill: none; stroke: var(--primary, var(--primary)); stroke-width: 1.8; }
.site-footer .sf-opening-hours div { display: grid; gap: 2px; }
.site-footer .sf-opening-hours strong { color: var(--sf-ink); font-size: var(--sf-body-sm); font-weight: 700 !important; }
.site-footer .sf-opening-hours span { font-size: 13px; line-height: 1.4; }

/* Burger -> croix : le même contrôle conserve son emplacement fermé et passe
   au-dessus du panneau lorsqu’il est ouvert. */
.sf-visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
.header-main .menu-drawer-toggle.sf-menu-toggle { display: inline-grid !important; width: 44px !important; height: 44px !important; place-items: center; padding: 0 !important; border: 0 !important; background: transparent !important; }
.sf-menu-toggle-icon { display: grid; width: 20px; height: 16px; align-content: space-between; }
.sf-menu-toggle-icon > span { display: block; width: 20px; height: 2px; border-radius: 2px; background: var(--sf-ink); transform-origin: center; transition: transform .2s ease, opacity .16s ease; }
body.site-menu-drawer-active .header-main .menu-drawer-toggle.sf-menu-toggle { position: fixed !important; top: 10px !important; right: 14px !important; left: auto !important; z-index: 10000000 !important; background: #fff !important; border-radius: 50% !important; box-shadow: 0 2px 12px rgba(15, 45, 28, .14) !important; }
body.site-menu-drawer-active .sf-menu-toggle-icon > span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
body.site-menu-drawer-active .sf-menu-toggle-icon > span:nth-child(2) { opacity: 0; }
body.site-menu-drawer-active .sf-menu-toggle-icon > span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
@media (max-width: 767.98px) {
  .sf-static-main { padding: var(--sf-space-5) var(--sf-page-gutter) !important; }
  .sf-home-faq > .e-con-inner { padding-inline: 0; }
  .sf-faq-accordion .e-n-accordion-item-title { min-height: 54px; padding: var(--sf-space-3) !important; }
  .sf-faq-accordion .e-n-accordion-item [role="region"] { padding: 0 var(--sf-space-3) var(--sf-space-3) !important; }
  .sf-key-figures { grid-template-columns: 1fr; gap: 1px; margin-bottom: var(--sf-space-4); }
  .sf-key-figures p { min-height: 86px; padding: var(--sf-space-3); }
  .sf-rich-hero { padding: var(--sf-space-5) var(--sf-space-4); border-radius: var(--sf-radius); }
  .sf-recruitment-content > ul, .sf-recruitment-content .sf-cards { grid-template-columns: 1fr; }
  .sf-recruitment-content > ul { margin-bottom: var(--sf-space-5); }
  .site-footer .sf-opening-hours { margin-bottom: var(--sf-space-3); }
}

@media (prefers-reduced-motion: reduce) {
  .sf-menu-toggle-icon > span { transition: none; }
}

/* ROUND 7 — derniers ajustements des composants partagés. */
/* Les conteneurs Elementor de réponse sont exportés en inline : leur padding
   n'indente donc pas leurs enfants. On les rétablit comme vrais panneaux, sur
   l'accueil comme sur la page FAQ, puis on laisse un seul retrait de composant. */
.sf-faq-accordion .e-n-accordion-item [role="region"] {
  display: block !important;
  box-sizing: border-box;
}
.sf-faq-accordion .e-n-accordion-item [role="region"] p,
.sf-faq-accordion .e-n-accordion-item [role="region"] ul,
.sf-faq-accordion .e-n-accordion-item [role="region"] ol {
  padding-inline: 0 !important;
}

/* Chaque colonne de footer part de la même ligne de référence. Les liens ne
   reçoivent plus le décalage Bootstrap de 15 px qui les séparait de la marque. */
.site-footer .footer-inner,
.site-footer .footer-contact-block,
.site-footer .footer-contact-block .widget-body,
.site-footer .footer-widgets-block,
.site-footer .footer-widgets-block .widget-col,
.site-footer .footer-widgets-block .widget,
.site-footer .footer-widgets-block .menu {
  text-align: left !important;
}
.site-footer .footer-inner {
  padding-block: 0 !important;
}
.site-footer .footer-widgets-block .widget-col {
  padding-inline: 0 !important;
}
.site-footer .footer-contact-block .widget-body > p,
.site-footer .footer-contact-block .sf-opening-hours,
.site-footer .footer-contact-block .footer-contact {
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* ============================================================================
 * ROUND 8 - details produit, checkout, contact et tri natif.
 * ========================================================================== */

/* Fiche produit : lecture continue des details, puis avis. */
.woocommerce-tabs > .sf-product-detail-section {
  display: block !important;
  margin: 0;
}
.woocommerce-tabs > .sf-product-detail-section + .sf-product-detail-section {
  margin-top: var(--sf-space-5);
  padding-top: var(--sf-space-4);
  border-top: 1px solid var(--sf-line);
}

/* Les miniatures restent de vraies vignettes, et non une seconde galerie. */
.single-product-wrapper .klb-flexslider-thumbnail .flex-control-thumbs li,
.single-product-wrapper .flex-control-thumbs > li {
  width: 64px !important;
  height: 64px !important;
  flex: 0 0 64px !important;
}
.single-product-wrapper .klb-flexslider-thumbnail .flex-control-thumbs li img,
.single-product-wrapper .flex-control-thumbs > li img {
  display: block;
  width: 64px !important;
  height: 64px !important;
  object-fit: cover;
  border-radius: 8px;
}

/* Le bento de livraison est commun au panier et au checkout. */
@media (max-width: 680px) {
  .sf-ship-banner {
    padding: var(--sf-space-2) 14px;
    margin-bottom: var(--sf-space-4);
    border-radius: 10px;
  }
  .sf-ship-banner-top { gap: 8px; }
  .sf-ship-banner-top svg { width: 17px; height: 17px; }
  .sf-ship-banner-top p { font-size: 13px; line-height: 1.4; }
  .sf-ship-progress { height: 6px; margin-top: 8px; }
}

/* Le select natif est le seul niveau d'interaction du tri. */
.shop-sorting-wrapper .sf-sort-control {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.shop-sorting-wrapper .sf-sort-control > span {
  margin: 0;
  color: #374151;
  font-size: 13px;
  font-weight: 600;
}
.shop-sorting-wrapper .sf-sort-control .woocommerce-ordering { margin: 0; }
.shop-sorting-wrapper .sf-sort-control .orderby {
  min-height: 46px;
  padding: 0 38px 0 14px;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  background-color: #fff;
  color: #374151;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.3;
  box-shadow: none;
  cursor: pointer;
}
.shop-sorting-wrapper .sf-sort-control .orderby:focus {
  outline: none;
  border-color: var(--primary, var(--primary));
  box-shadow: 0 0 0 3px rgba(47,93,58,.12);
}

/* Contact : meme conteneur, memes champs et meme rythme que le checkout. */
.sf-form-card,
.sf-contact-form {
  border: 1px solid #eef0f2;
  border-radius: 14px;
  padding: 24px;
  background: #fff;
}
.sf-contact-form .wpforms-container { margin: 0 !important; }
.sf-contact-form-title {
  margin: 0 0 20px;
  padding-bottom: 14px;
  border-bottom: 1px solid #eef0f2;
  color: #111827;
  font-size: 17px;
  font-weight: 800;
  line-height: 1.3;
}
.sf-contact-form .wpforms-field {
  margin: 0 0 16px;
  padding: 0 !important;
}
.sf-contact-form .wpforms-field-email,
.sf-contact-form .sf-contact-subject,
.sf-contact-form .wpforms-field-email input,
.sf-contact-form .sf-contact-subject input {
  width: 100% !important;
  max-width: none !important;
}
.sf-contact-form .sf-contact-name-field fieldset {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
.sf-contact-form .sf-contact-group-label {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}
.sf-contact-form .wpforms-field-row {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  width: 100% !important;
  max-width: none !important;
}
.sf-contact-form .wpforms-field-row-block {
  width: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  clear: none !important;
}
.sf-contact-form .wpforms-field-row::before,
.sf-contact-form .wpforms-field-row::after {
  display: none !important;
  content: none !important;
}
.sf-contact-form .wpforms-field-label,
.sf-contact-form .wpforms-field-sublabel {
  display: block;
  margin: 0 0 6px !important;
  color: #374151 !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  line-height: 1.35 !important;
}
.sf-contact-form input,
.sf-contact-form textarea {
  box-sizing: border-box !important;
  width: 100% !important;
  min-height: 46px;
  margin: 0 !important;
  padding: 0 14px !important;
  border: 1px solid #e5e7eb !important;
  border-radius: 8px !important;
  background: #fff !important;
  color: #374151;
  font-size: 14px !important;
}
.sf-contact-form textarea {
  min-height: 132px !important;
  padding: 12px 14px !important;
}
.sf-contact-form input:focus,
.sf-contact-form textarea:focus {
  outline: none;
  border-color: var(--primary, var(--primary)) !important;
  box-shadow: 0 0 0 3px rgba(47,93,58,.12) !important;
}
.sf-contact-form .wpforms-submit {
  min-height: 46px !important;
  padding: 0 24px !important;
  border-radius: var(--sf-button-radius) !important;
  background: var(--primary, var(--primary)) !important;
  font-size: 14px !important;
  font-weight: 600 !important;
}
.sf-contact-details { gap: var(--sf-space-3); }
.sf-contact-info-card {
  padding: 24px;
  border: 1px solid #eef0f2;
  border-radius: 14px;
  background: #fff;
}

/* Une seule croix, dans l'entete du tiroir : elle reste au-dessus du panneau
   meme sur l'accueil, ou le bouton du header appartient a un autre contexte. */
body.site-menu-drawer-active .header-main .menu-drawer-toggle.sf-menu-toggle { display: none !important; }
#menu-drawer .site-button.close-button { display: block !important; }
#menu-drawer .sf-menu-drawer-close {
  display: inline-grid;
  width: 40px;
  height: 40px;
  place-items: center;
  padding: 0;
  border: 1px solid var(--sf-line);
  border-radius: 50%;
  background: #fff;
  color: var(--sf-ink);
  cursor: pointer;
}
#menu-drawer .sf-menu-drawer-close > span,
#menu-drawer .sf-menu-drawer-close > span::after {
  display: block;
  width: 16px;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  content: "";
  transform: rotate(45deg);
}
#menu-drawer .sf-menu-drawer-close > span::after { transform: rotate(90deg); }
#menu-drawer .sf-menu-drawer-close:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: 3px; }

/* Menu de tri direct : un seul clic ouvre la liste complete des options. */
.shop-sorting-wrapper .sf-sort-menu {
  position: relative;
  min-width: 230px;
}
.shop-sorting-wrapper .sf-sort-menu > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 46px;
  padding: 0 14px;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  background: #fff;
  color: #374151;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.3;
  cursor: pointer;
  list-style: none;
}
.shop-sorting-wrapper .sf-sort-menu > summary::-webkit-details-marker { display: none; }
.shop-sorting-wrapper .sf-sort-menu > summary svg {
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
  margin-left: var(--sf-space-3);
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  transition: transform .16s ease;
}
.shop-sorting-wrapper .sf-sort-menu[open] > summary {
  border-color: var(--primary, var(--primary));
  box-shadow: 0 0 0 3px rgba(47,93,58,.12);
}
.shop-sorting-wrapper .sf-sort-menu[open] > summary svg { transform: rotate(180deg); }
.shop-sorting-wrapper .sf-sort-menu > summary:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: 3px; }
.shop-sorting-wrapper .sf-sort-options {
  position: absolute;
  z-index: 30;
  top: calc(100% + 6px);
  right: 0;
  left: 0;
  padding: 6px;
  border: 1px solid var(--sf-line);
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 12px 28px rgba(15, 45, 28, .14);
}
.shop-sorting-wrapper .sf-sort-option {
  display: block;
  width: 100%;
  padding: 10px 12px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #374151;
  font: inherit;
  font-size: 13px;
  line-height: 1.35;
  text-align: left;
  cursor: pointer;
}
.shop-sorting-wrapper .sf-sort-option:hover,
.shop-sorting-wrapper .sf-sort-option:focus-visible { background: var(--sf-surface); color: var(--primary, var(--primary)); outline: none; }
.shop-sorting-wrapper .sf-sort-option[aria-current="true"] { color: var(--primary, var(--primary)); font-weight: 700; }

@media (max-width: 767.98px) {
  .woocommerce-tabs > .sf-product-detail-section { display: block !important; }
  .woocommerce-tabs > .sf-product-detail-section + .sf-product-detail-section {
    margin-top: var(--sf-space-4);
    padding-top: var(--sf-space-3);
  }
  .woocommerce-tabs > .sf-product-reviews-permanent {
    margin-top: var(--sf-space-4);
    padding-top: var(--sf-space-3);
  }
  #related-products,
  #recently-viewed,
  .recently-viewed,
  .site-module.recently-viewed { padding-top: var(--sf-space-5); }
  .single-product-wrapper .klb-flexslider-thumbnail .flex-control-thumbs li,
  .single-product-wrapper .flex-control-thumbs > li {
    width: 44px !important;
    height: 44px !important;
    flex-basis: 44px !important;
  }
  .single-product-wrapper .klb-flexslider-thumbnail .flex-control-thumbs li img,
  .single-product-wrapper .flex-control-thumbs > li img {
    width: 44px !important;
    height: 44px !important;
    border-radius: 6px;
  }
  .shop-sorting-wrapper { width: 100%; }
  .before-shop-loop { flex-wrap: wrap; gap: var(--sf-space-2); }
  .before-shop-loop .sf-sort-column { width: 100%; flex: 1 0 100%; order: -1; }
  .before-shop-loop .shop-sorting-wrapper { display: block !important; }
  .shop-sorting-wrapper .sf-sort-control { width: 100%; justify-content: space-between; }
  .shop-sorting-wrapper .sf-sort-control .woocommerce-ordering { min-width: 0; flex: 1 1 auto; }
  .shop-sorting-wrapper .sf-sort-control .orderby { width: 100%; min-height: 44px; font-size: 13px; }
  .shop-sorting-wrapper .sf-sort-menu { min-width: 0; flex: 1 1 auto; }
  .shop-sorting-wrapper .sf-sort-menu > summary { min-height: 44px; font-size: 13px; }
  .shop-sorting-wrapper .sf-sort-options { position: static; margin-top: 6px; box-shadow: none; }
  .sf-contact-form,
  .sf-contact-info-card { padding: var(--sf-space-3); border-radius: 12px; }
  .sf-contact-form-title { margin-bottom: var(--sf-space-3); padding-bottom: var(--sf-space-2); font-size: 16px; }
  .sf-contact-form .wpforms-field-row { grid-template-columns: 1fr; gap: var(--sf-space-3); }
  .sf-contact-form textarea { min-height: 120px !important; }
}

/* ============================================================================
 * ROUND 9 — composants existants, avec contrats desktop et mobile distincts.
 * ========================================================================== */

/* Une largeur de carte bornée, commune à la boutique, aux catégories, à l'accueil
   et aux produits associés. Les pistes AUTO-FILL restent présentes quand une
   rangée est incomplète : l'espace libre demeure à droite, jamais dans les cartes. */
.sf-product-grid-bounded {
  display: grid !important;
  justify-content: start !important;
  align-items: stretch;
}
.sf-product-grid-bounded > .product {
  min-width: 0;
  width: 100% !important;
}
@media (min-width: 1024px) {
  .sf-product-grid-bounded {
    grid-template-columns: repeat(auto-fill, minmax(190px, 240px)) !important;
  }
  .sf-product-grid-bounded > .product { max-width: 240px !important; }

  /* Les bentos suivent exactement le conteneur commun des sections, sans marge
     arbitraire ni largeur interne rétrécie. */
  .sf-home-promo-bento,
  .sf-home-category-promo-bento {
    width: min(calc(100% - (2 * var(--sf-page-gutter))), 1360px) !important;
    max-width: 1360px !important;
    margin-inline: auto !important;
    padding-inline: 0 !important;
    box-sizing: border-box;
  }
  .sf-home-promo-bento > .e-con-inner,
  .sf-home-category-promo-bento > .e-con-inner {
    width: 100% !important;
    max-width: none !important;
    margin-inline: 0 !important;
    padding: 0 !important;
    box-sizing: border-box;
  }
  .sf-home-category-promo-bento > .e-con-inner {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: var(--sf-space-3) !important;
  }
  .sf-home-category-promo-bento > .e-con-inner > .sf-home-category-promo-card {
    width: auto !important;
    min-width: 0;
    margin: 0 !important;
  }
  .sf-home-promo-bento .sf-home-promo-card { width: 100% !important; margin: 0 !important; }
}
@media (max-width: 430px) {
  .sf-product-grid-bounded {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    justify-content: stretch !important;
  }
  .sf-product-grid-bounded > .product { max-width: none !important; }

  .sf-home-promo-bento,
  .sf-home-category-promo-bento {
    width: calc(100% - (2 * var(--sf-page-gutter))) !important;
    max-width: none !important;
    margin-inline: auto !important;
    padding-inline: 0 !important;
    box-sizing: border-box;
  }
  .sf-home-promo-bento > .e-con-inner,
  .sf-home-category-promo-bento > .e-con-inner {
    width: 100% !important;
    max-width: none !important;
    margin-inline: 0 !important;
    padding: 0 !important;
    box-sizing: border-box;
  }
  .sf-home-category-promo-bento > .e-con-inner {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: var(--sf-space-3) !important;
  }
  .sf-home-promo-bento .sf-home-promo-card { width: 100% !important; margin: 0 !important; }
}

/* Le filtre prix est un bloc complet : aucune zone de défilement imbriquée. */
.widget_price_filter,
.widget_price_filter .price_slider_wrapper,
.widget_price_filter .ui-slider,
.filter-sidebar-body,
.filter-sidebar-body .site-scroll,
.shop-sidebar .site-scroll,
.filter-widgets,
.widget-area .site-scroll {
  overflow: visible !important;
  overflow-y: visible !important;
  max-height: none !important;
  height: auto !important;
}

/* Les CTA principaux réemploient la base .sf-btn : même vert, hauteur, pilule
   et typographie du panier au checkout, des cartes à l'achat fixe produit. */
.sf-btn-primary,
.sf-btn-dark,
.products .product .add_to_cart_button,
form.cart .single_add_to_cart_button,
form.cart button[name="add-to-cart"] {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-height: 45px !important;
  padding: var(--sf-button-padding-y) var(--sf-button-padding-x) !important;
  border: 0 !important;
  border-radius: var(--sf-button-radius) !important;
  background: var(--primary, var(--primary)) !important;
  color: #fff !important;
  font: inherit;
  font-size: 14px !important;
  font-weight: 600 !important;
  line-height: var(--sf-button-line-height) !important;
  text-align: center;
}
.sf-btn-primary:hover,
.sf-btn-dark:hover,
.products .product .add_to_cart_button:hover,
form.cart .single_add_to_cart_button:hover,
form.cart button[name="add-to-cart"]:hover { background: var(--primary-dark) !important; color: #fff !important; }
.sf-btn-primary:focus-visible,
.sf-btn-dark:focus-visible,
.products .product .add_to_cart_button:focus-visible,
form.cart .single_add_to_cart_button:focus-visible,
form.cart button[name="add-to-cart"]:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: 3px; }
.products .product .add_to_cart_button { width: 100%; }
.sf-summary .sf-btn,
.sf-cart-tools .sf-btn,
.sf-commander { min-height: 45px !important; height: auto !important; padding: var(--sf-button-padding-y) var(--sf-button-padding-x) !important; }
@media (min-width: 1024px) {
  form.cart .single_add_to_cart_button,
  form.cart button[name="add-to-cart"] { min-height: 45px !important; border-radius: var(--sf-button-radius) !important; }
}
@media (max-width: 430px) {
  form.cart.single-ajax .single_add_to_cart_button { min-height: 45px !important; border-radius: var(--sf-button-radius) !important; }
}

/* Les avis ont un aperçu court : les trois premiers restent visibles et le bouton
   reprend le bouton secondaire déjà employé par le panier. */
.sf-reviews-toggle { margin-top: var(--sf-space-3); }

/* Mobile panier : une vraie ligne produit compacte, jamais les trois grandes
   lignes Prix / Quantité / Total. Le total répété disparaît, le prix unitaire
   reste à côté du sélecteur et la suppression reste accessible. */
@media (max-width: 430px) {
  .sf-cart-card { border: 0; border-radius: 0; overflow: visible; }
  .sf-cart-table thead { display: none; }
  .sf-cart-table, .sf-cart-table tbody { display: block; width: 100%; }
  .sf-cart-table tr {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "product remove" "quantity price";
    gap: 8px 12px;
    width: 100%;
    box-sizing: border-box;
    position: relative;
    margin: 0 0 var(--sf-space-2);
    padding: 10px 12px;
    border: 1px solid #eef0f2;
    border-radius: 12px;
    background: #fff;
  }
  .sf-cart-table td { display: block !important; width: auto !important; min-width: 0; padding: 0 !important; border: 0 !important; }
  .sf-cart-table td[data-label]::before { display: none !important; content: none !important; }
  .sf-cart-table td.sf-cell-prod { grid-area: product; padding-right: 8px !important; }
  .sf-cart-table td[data-label="Quantité"] { grid-area: quantity; align-self: center; }
  .sf-cart-table td[data-label="Prix"] { grid-area: price; align-self: center; justify-self: end; color: #111827; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
  .sf-cart-table td.sf-cell-total { display: none !important; }
  .sf-cart-table td.sf-cell-remove { grid-area: remove; width: auto; align-self: start; justify-self: end; }
  .sf-cell-remove button { display: inline-grid; width: 28px; height: 28px; place-items: center; padding: 0; border-radius: 50%; }
  .sf-cart-prod { gap: 10px; }
  .sf-cart-prod img { width: 54px; height: 54px; border-radius: 8px; }
  .sf-cart-prod a { display: -webkit-box; overflow: hidden; color: #1f2937; font-size: 13px; line-height: 1.35; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
  .sf-qtybox { min-height: 32px; padding: 1px 4px; }
  .sf-qtybox button { padding: 3px 7px; }
}

/* Le récapitulatif de livraison du checkout est volontairement plus dense en
   mobile : il garde tous ses messages, mais ne concurrence plus le formulaire. */
@media (max-width: 430px) {
  #sf-checkout-page .sf-ship-banner { padding: 10px 12px; margin-bottom: var(--sf-space-3); }
  #sf-checkout-page .sf-ship-banner-top { gap: 7px; }
  #sf-checkout-page .sf-ship-banner-top p { font-size: 12.5px; line-height: 1.35; }
  #sf-checkout-page .sf-order-bento { padding: var(--sf-space-3); }
  #sf-checkout-page .sf-order-bento .sf-bento-item { grid-template-columns: 40px minmax(0, 1fr) auto; gap: 9px; padding: 8px 0; }
  #sf-checkout-page .sf-order-bento .sf-bento-item .sf-ci-img img { width: 40px; height: 40px; }
  #sf-checkout-page .sf-order-bento .sf-delivery-note { margin-top: 10px; font-size: 12px; line-height: 1.35; }
  #sf-checkout-page .sf-order-bento .sf-secure-note { margin-top: 10px; font-size: 12px; line-height: 1.35; }
}

/* ============================================================================
 * TOUR 10 — contrats visuels contrôlés par les captures pleine page.
 * ========================================================================== */

/* Le vrai carrousel promotionnel est distinct du bento de catégories. Il prend
   toute la largeur de son conteneur, garde une hauteur utile et son image reste
   au premier plan, plutôt qu'une tuile réduite à quelques pixels. */
.sf-home-hero-promo > .e-con-inner,
.sf-home-hero-promo .elementor-widget-container,
.sf-home-hero-promo .site-slider {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
}
.sf-home-hero-promo .site-slider { max-height: none !important; }
.sf-home-hero-promo .site-banner {
  min-height: 360px;
  height: 360px;
}
.sf-home-hero-promo .site-banner .entry-media,
.sf-home-hero-promo .site-banner .entry-media img {
  width: 100%;
  height: 100%;
}
.sf-home-hero-promo .site-banner .entry-media img { display: block; object-fit: cover; }
.sf-home-hero-promo .site-banner .entry-wrapper {
  inset: 0;
  display: flex;
  align-items: center;
}
@media (max-width: 767.98px) {
  .sf-home-hero-promo .elementor-hidden-tablet.elementor-hidden-mobile { display: block !important; }
  /* bento plus haut et plus aéré, contenu centré verticalement, textes agrandis */
  .sf-home-hero-promo .site-banner { min-height: 360px; height: auto; }
  .sf-home-hero-promo .site-banner .entry-wrapper { padding: 30px 20px !important; align-items: center !important; }
  .sf-home-hero-promo .site-banner .entry-inner { max-width: 74% !important; }
  .sf-home-hero-promo .site-banner .entry-title { font-size: 31px !important; line-height: 1.14 !important; }
  .sf-home-hero-promo .site-banner .entry-content p { font-size: 15px !important; line-height: 1.5 !important; }
}

/* Le défilement appartenait au parent .site-scroll, non au widget testé jusque-là. */
.filter-sidebar .site-scroll,
.filter-sidebar .theiaStickySidebar,
.filter-sidebar .filter-sidebar-body,
.filter-sidebar .widget_price_filter,
.filter-sidebar .price_slider_wrapper {
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  overflow-y: visible !important;
}

/* Même pilule que le sélecteur du tiroir panier, fiche produit et barre fixe incluses. */
.sf-ci-qty,
.sf-qtybox,
form.cart .quantity,
form.cart.single-ajax .quantity {
  border-radius: 999px !important;
}

/* Code de réduction : une action secondaire, intégrée au bento du total. */
.sf-cart-summary .sf-discount { margin-top: 14px; }
.sf-discount-control { display: flex; align-items: stretch; width: 100%; }
.sf-discount-control .sf-discount-input {
  min-width: 0;
  width: 100%;
  border-radius: 8px 0 0 8px;
}
.sf-discount-apply {
  display: inline-grid;
  width: 44px;
  min-width: 44px;
  height: 46px;
  place-items: center;
  padding: 0;
  border: 1px solid #e5e7eb;
  border-left: 0;
  border-radius: 0 8px 8px 0;
  background: #fff !important;
  color: #4b5563 !important;
  font-size: 19px;
  line-height: 1;
  cursor: pointer;
}
.sf-discount-apply:hover { background: #f3f4f6 !important; color: #17211b !important; }
.sf-discount-apply:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: 2px; }
.sf-cart-reassurance { margin-top: 14px; }
.sf-cart-reassurance .sf-secure-note { margin-top: 8px; }
.sf-cart-reassurance + .sf-btn { margin-top: 16px; }

/* Les pictogrammes remplacent les emojis ; ils suivent la couleur sans changer la ligne. */
.sf-inline-icon,
.sf-content-icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  margin-right: .35em;
  vertical-align: -.125em;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.sf-free-ok .sf-inline-icon { fill: currentColor; stroke: currentColor; stroke-width: 1.2; }

/* ROUND 11 — une seule piste promo du miroir, visible et navigable à toutes
   les largeurs. Les cartes statiques de secours ne sont plus rendues. */
.sf-home-hero-promo .site-slider .slick-list { overflow: hidden !important; }
.sf-home-hero-promo .site-slider .slick-track { display: flex !important; }
.sf-home-hero-promo .site-slider .slick-slide { height: auto; }
.sf-home-hero-promo .site-slider .slick-slide > div,
.sf-home-hero-promo .site-slider .slider-item { height: 100%; }

/* Point 2 : les associés réemploient la grille produit bornée du catalogue. */
@media (min-width: 1024px) {
  #related-products .products.sf-product-grid-bounded {
    grid-template-columns: repeat(auto-fill, minmax(190px, 240px)) !important;
    justify-content: start !important;
  }
  #related-products .products.sf-product-grid-bounded > .product { max-width: 240px !important; }
}
@media (max-width: 430px) {
  #related-products .products.sf-product-grid-bounded { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  #related-products .products.sf-product-grid-bounded > .product { max-width: none !important; }
}

/* Point 3 : le filtre est une colonne fluide, jamais un panneau défilant. */
.filter-sidebar .site-scroll,
.filter-sidebar .filter-sidebar-body,
.filter-sidebar .widget_price_filter { display: flow-root !important; padding-bottom: 2px !important; }

/* Point 4 : les trois zones du haut suivent les mêmes repères que logo, centre
   et panier. La règle mobile reste volontairement compacte. */
@media (min-width: 1024px) {
  .global-notification .container { width: 100% !important; max-width: none !important; padding-inline: 40px !important; }
  .global-notification .global-notification-inner {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    min-height: 40px;
    padding-block: 0 !important;
  }
  .global-notification .global-notification-inner > p { justify-self: start; margin: 0; text-align: left !important; }
  .global-notification .notification-countdown { justify-self: center; }
  .global-notification .global-notification-inner > .sf-topbar-support { justify-self: end; font-weight: 600; }
  .header-topbar .header-inner { display: grid !important; grid-template-columns: minmax(0, 1fr) auto; min-height: 40px; }
  .sf-topbar-guarantee { display: inline-flex; align-items: center; justify-self: start; color: inherit; }
  .sf-topbar-guarantee strong { margin-left: 4px; color: var(--primary, var(--primary)); }
  .sf-topbar-utility { justify-self: end; min-width: 0; }
}

/* Point 5 : note/étoiles et lien explicite pointent sur la même section Avis. */
#sf-product-reviews { scroll-margin-top: 88px; }
.product-detail-inner .woocommerce-product-rating { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.sf-rating-anchor { display: inline-flex; align-items: center; gap: 7px; color: inherit; text-decoration: none; }
.sf-rating-anchor:hover .star-rating,
.sf-rating-anchor:focus-visible .star-rating { filter: brightness(.82); }
.sf-rating-anchor:focus-visible,
.sf-review-jump:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: 3px; border-radius: 3px; }
.sf-review-jump { color: var(--primary, var(--primary)); font-size: 13px; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

/* Point 7 : avis issus de reviews.json, en défilement horizontal contrôlable. */
.sf-checkout-reviews { margin-top: var(--sf-space-3); padding: var(--sf-space-3); border: 1px solid #d9e9dc; border-radius: 12px; background: #fff; }
.sf-checkout-reviews-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sf-space-2); margin-bottom: var(--sf-space-2); }
.sf-checkout-reviews h3 { margin: 0; color: var(--sf-ink); font-size: 15px; }
.sf-checkout-reviews-head p { margin: 3px 0 0; color: var(--sf-muted); font-size: 12px; line-height: 1.35; }
.sf-checkout-review-controls { display: inline-flex; gap: 6px; }
.sf-checkout-review-controls button { display: inline-grid; width: 30px; height: 30px; place-items: center; padding: 0; border: 1px solid var(--primary-line); border-radius: 50%; background: #fff; color: var(--primary, var(--primary)); cursor: pointer; }
.sf-checkout-review-controls button:hover { background: #e4f2e7; }
.sf-checkout-review-controls button:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: 2px; }
.sf-checkout-review-track { display: flex; gap: var(--sf-space-2); overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: x mandatory; scrollbar-width: none; }
.sf-checkout-review-track::-webkit-scrollbar { display: none; }
.sf-checkout-review-card { flex: 0 0 100%; min-width: 0; min-height: 112px; padding: 12px; border: 1px solid var(--sf-line); border-radius: 9px; background: #fff; scroll-snap-align: start; }
.sf-checkout-review-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--sf-ink); font-size: 13px; }
.sf-checkout-review-stars { color: #9a6700; font-weight: 700; white-space: nowrap; }
.sf-checkout-review-card p { margin: 8px 0 0; color: var(--sf-muted); font-size: 12.5px; line-height: 1.45; }
.sf-checkout-layout > *,
.sf-checkout-review-track { min-width: 0; }

/* Une section dans la fiche est un item du flex parent : elle reprend toute la
   ligne avant d'appliquer la grille produit commune. */
#related-products { flex: 0 0 100%; width: 100% !important; }

@media (max-width: 430px) {
  .global-notification .global-notification-inner { justify-content: center !important; gap: 2px 12px; }
  .global-notification .sf-topbar-support { display: none !important; }
  .sf-rating-anchor { gap: 5px; }
  .sf-review-jump { flex-basis: auto; }
  .sf-checkout-reviews { padding: 12px; }
  .sf-checkout-review-card { min-height: 104px; }
}

/* ============================================================================
 * ROUND 12 — contrats issus des captures plein écran.
 * ========================================================================== */

/* FILTRE PRIX — la cause racine n'était pas le widget mais `.site-scroll` : le
   thème lui redonnait `overflow:auto`, `height:100%` et une gouttière de 10 px
   via `.scrollbar-active`. Toute la chaîne est donc un flux sans zone scrollable.
   Le slider lui-même garde une vraie hauteur : `height:auto` l'écrasait à 0 px
   alors que ses poignées restaient dessinées, ce qui créait le faux débordement. */
.filter-sidebar,
.filter-sidebar .theiaStickySidebar,
.filter-sidebar .site-scroll,
.filter-sidebar .filter-sidebar-body,
.filter-sidebar .widget_price_filter,
.filter-sidebar .widget_price_filter form,
.filter-sidebar .price_slider_wrapper {
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  overflow-y: visible !important;
}
.filter-sidebar { align-self: flex-start !important; }
.filter-sidebar .site-scroll.scrollbar-active { padding-right: 0 !important; }
.filter-sidebar .price_slider,
.filter-sidebar .ui-slider {
  height: 8px !important;
  min-height: 8px !important;
  max-height: none !important;
  overflow: visible !important;
  overflow-y: visible !important;
}

/* Déclencheur filtre : visible sous desktop, panneau off-canvas jusqu’à 992 px (thème Grogin). */
@media (min-width: 992px) {
  .sf-mobile-filter-toggle { display: none !important; }
}

@media (max-width: 991.98px) {
  .shop-sorting-wrapper {
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    width: 100%;
  }
  .shop-sorting-wrapper .sf-mobile-filter-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    min-height: 48px;
    padding: 10px 14px;
    border: 1px solid var(--primary, var(--primary));
    border-radius: 999px;
    background: #fff;
    color: var(--primary, var(--primary));
    font: inherit;
    font-size: 15px;
    font-weight: 800;
    cursor: pointer;
  }
  .shop-sorting-wrapper .sf-mobile-filter-toggle svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-linecap: round;
    stroke-width: 2;
  }
  .shop-sorting-wrapper .sf-sort-control {
    display: flex;
    width: 100%;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
  }
  .shop-sorting-wrapper .sf-sort-control > span {
    flex: 0 0 auto;
    font-size: 14px;
  }
  .shop-sorting-wrapper .sf-sort-menu {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
    width: auto;
    max-width: none;
  }
  .shop-sorting-wrapper .sf-sort-menu > summary {
    width: 100%;
    min-height: 48px;
    padding: 0 14px;
    font-size: 15px;
    box-sizing: border-box;
  }
  .shop-sorting-wrapper .sf-sort-menu > summary > span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .shop-sorting-wrapper .sf-sort-options {
    position: absolute;
    left: 0;
    right: 0;
    z-index: 40;
  }

  body.sf-mobile-filters-open,
  body.filtered-sidebar-active { overflow: hidden; }
  body.sf-mobile-filters-open #main.main-content,
  body.filtered-sidebar-active #main.main-content { z-index: auto !important; }

  #sidebar.filter-sidebar.sf-category-filter-panel {
    position: fixed !important;
    top: 0;
    left: 0;
    width: min(100%, 22rem) !important;
    height: 100% !important;
    max-height: none !important;
    padding: 0 18px 24px;
    background: #fff;
    z-index: 1000 !important;
    transform: translateX(-105%) !important;
    transition: transform .28s ease, box-shadow .28s ease;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }
  body.sf-mobile-filters-open #sidebar.filter-sidebar.sf-category-filter-panel,
  body.filtered-sidebar-active #sidebar.filter-sidebar.sf-category-filter-panel {
    transform: translateX(0) !important;
    box-shadow: 10px 0 34px rgba(23, 33, 27, .22);
  }
  body.sf-mobile-filters-open .mobile-overlay,
  body.filtered-sidebar-active .mobile-overlay {
    z-index: 999 !important;
    opacity: 0.6 !important;
    visibility: visible !important;
    pointer-events: auto !important;
  }
  body:not(.sf-mobile-filters-open):not(.filtered-sidebar-active) .mobile-overlay {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    z-index: 3 !important;
  }
  #sidebar.filter-sidebar.sf-category-filter-panel .filter-sidebar-header {
    display: flex !important;
    margin-inline: -18px;
    padding-inline: 18px;
  }
  #sidebar.filter-sidebar.sf-category-filter-panel .filter-sidebar-header .entry-title { font-size: 16px; }
  #sidebar.filter-sidebar.sf-category-filter-panel .filter-sidebar-body,
  #sidebar.filter-sidebar.sf-category-filter-panel .site-scroll {
    width: 100%;
    height: auto !important;
    max-height: none !important;
    padding-right: 0 !important;
    overflow: visible !important;
  }
}

@media (max-width: 575.98px) {
  #sidebar.filter-sidebar.sf-category-filter-panel { width: 100% !important; }
}

@media (min-width: 1024px) {
  .site-header .custom-button-holder .products > .product { min-width: 0; }
  .site-header .custom-button-holder .products .product .product-inner,
  .site-header .custom-button-holder .products .product .content-wrapper { min-width: 0; }
  .site-header .custom-button-holder .products .product .product-cart {
    position: static !important;
    width: 100%;
    margin-top: auto !important;
    padding-top: 16px !important;
  }
  .site-header .custom-button-holder .products .product .add_to_cart_button {
    position: relative !important;
    display: inline-flex !important;
    width: 100% !important;
    min-height: 45px !important;
    padding: var(--sf-button-padding-y) var(--sf-button-padding-x) !important;
    border-radius: var(--sf-button-radius) !important;
    font-size: 14px !important;
    line-height: var(--sf-button-line-height) !important;
  }
  .site-header .custom-button-holder .products .product .added_to_cart { display: none !important; }
  .sf-cart-panel .klb-cart-free-shipping > p {
    margin: 0;
    font-size: 15px !important;
    font-weight: 600;
    line-height: 1.45;
  }
}

/* Avis checkout : section autonome sur toute la largeur de la zone commande,
   jamais imbriquée dans le bento de paiement. */
#sf-checkout-page > .sf-checkout-reviews {
  display: grid;
  grid-template-columns: minmax(180px, 210px) minmax(0, 1fr);
  gap: 24px;
  width: 100%;
  margin-top: 26px;
  padding: 22px 0 2px;
  border: 0;
  border-top: 1px solid #e6ece7;
  border-radius: 0;
  background: transparent;
}
#sf-checkout-page .sf-checkout-reviews-summary { align-self: center; }
#sf-checkout-page .sf-checkout-reviews-eyebrow {
  margin: 0 0 5px;
  color: var(--sf-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
#sf-checkout-page .sf-checkout-reviews h2 {
  margin: 0;
  color: var(--sf-ink);
  font-size: 17px;
  line-height: 1.2;
}
#sf-checkout-page .sf-checkout-reviews-score {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin: 10px 0 3px;
  color: var(--sf-ink);
}
#sf-checkout-page .sf-checkout-reviews-score strong {
  font-size: 30px;
  font-weight: 800;
  letter-spacing: -.04em;
  line-height: .95;
}
#sf-checkout-page .sf-checkout-reviews-score span { color: var(--sf-muted); font-size: 14px; font-weight: 600; }
#sf-checkout-page .sf-checkout-reviews-count { margin: 9px 0 0; color: var(--sf-muted); font-size: 14px; }
#sf-checkout-page .sf-checkout-review-track {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  min-width: 0;
  overflow: visible;
  scroll-snap-type: none;
}
#sf-checkout-page .sf-checkout-review-card {
  min-width: 0;
  min-height: 0;
  padding: 17px;
  border: 1px solid var(--sf-line);
  border-radius: 12px;
  background: #fff;
}
#sf-checkout-page .sf-checkout-review-meta { display: flex; align-items: center; gap: 10px; color: var(--sf-ink); }
#sf-checkout-page .sf-checkout-review-avatar {
  display: inline-grid;
  flex: 0 0 36px;
  width: 36px;
  height: 36px;
  place-items: center;
  border-radius: 50%;
  background: #e1f0e4;
  color: var(--primary, var(--primary));
  font-size: 12px;
  font-weight: 800;
}
#sf-checkout-page .sf-checkout-review-author { display: grid; min-width: 0; gap: 2px; }
#sf-checkout-page .sf-checkout-review-author strong { font-size: 14px; }
#sf-checkout-page .sf-checkout-review-author time { color: var(--sf-muted); font-size: 12px; line-height: 1.25; }
#sf-checkout-page .sf-checkout-review-verified {
  margin-left: auto;
  padding: 4px 7px;
  border-radius: 999px;
  background: #e7f4e9;
  color: #17663a;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.2;
  white-space: nowrap;
}
#sf-checkout-page .sf-checkout-review-stars {
  display: inline-flex;
  gap: 2px;
  margin-top: 14px;
  color: #d69200;
}
#sf-checkout-page .sf-checkout-review-stars svg { width: 16px; height: 16px; fill: currentColor; stroke: currentColor; stroke-width: 1.2; }
#sf-checkout-page .sf-checkout-review-card p { margin: 10px 0 0; color: var(--sf-muted); font-size: 13px; line-height: 1.5; }
@media (min-width: 1024px) {
  #sf-checkout-page .sf-checkout-review-track { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* BENTO PROMO mobile : la carte fixe de 220 px centrait un contenu de 265 px,
   d'où les prix rognés et les espaces erratiques. La carte suit désormais son
   contenu et les deux prix ont un vrai gap plutôt qu'une marge fragile. */
@media (max-width: 430px) {
  .sf-home-hero-promo {
    display: block !important;
    margin-block: var(--sf-space-3) !important;
  }
  .sf-home-hero-promo .site-banner {
    min-height: 0 !important;
    height: auto !important;
  }
  .sf-home-hero-promo .site-banner .entry-wrapper {
    position: relative !important;
    inset: auto !important;
    align-items: flex-start !important;
    min-height: 0 !important;
    padding: var(--sf-space-4) var(--sf-space-3) !important;
  }
  .sf-home-hero-promo .site-banner .entry-media { position: absolute; inset: 0; height: 100% !important; }
  .sf-home-hero-promo .site-banner .entry-inner { max-width: 68% !important; }
  .sf-home-hero-promo .site-banner .banner-price { margin-top: 0; }
  .sf-home-hero-promo .site-banner .banner-price .price {
    display: inline-flex !important;
    align-items: baseline;
    gap: 10px !important;
  }
  .sf-home-hero-promo .site-banner .banner-price .price del { margin-left: 0 !important; }

  .sf-home-hero-promo + .sf-home-category-grid { margin-top: 0 !important; }
  .sf-home-category-grid { margin-bottom: var(--sf-space-3) !important; }
  .sf-home-category-grid .site-module,
  .sf-home-category-grid .site-module-body { overflow: visible !important; }
  .sf-home-category-grid .site-slider {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: var(--sf-space-2) !important;
    max-height: none !important;
    overflow: visible !important;
  }
  .sf-home-category-grid .site-slider::after,
  .sf-home-category-grid .site-slider > .slick-nav { display: none !important; }
  .sf-home-category-grid .site-slider > .slider-item {
    display: block !important;
    width: auto !important;
    min-width: 0;
    opacity: 1 !important;
    visibility: visible !important;
  }

  /* Grille principale catégorie : même contrat deux colonnes que les articles
     récemment consultés, sans étirer une carte isolée. */
  #primary .shop-products-wrapper .products.sf-product-grid-bounded {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    justify-content: stretch !important;
  }
  #primary .shop-products-wrapper .products.sf-product-grid-bounded > .product { max-width: none !important; min-width: 0; }

  .sf-mobile-filter-toggle:focus-visible,
  .sf-mobile-filter-close:focus-visible { outline: 3px solid rgba(47,93,58,.32); outline-offset: 3px; }
  .sf-cart-panel .klb-cart-free-shipping > p { font-size: 13px !important; line-height: 1.4; }

  #sf-checkout-page > .sf-checkout-reviews {
    display: block;
    margin-top: 24px;
    padding: 20px;
    border: 1px solid var(--sf-line, var(--sf-line));
    border-radius: 14px;
    background: #fff;
  }
  #sf-checkout-page .sf-checkout-reviews-score strong { font-size: 48px; }
  #sf-checkout-page .sf-checkout-review-track { grid-template-columns: minmax(0, 1fr); margin-top: 20px; }
  #sf-checkout-page .sf-checkout-review-card { padding: 16px; }
  #sf-checkout-page .sf-checkout-review-verified { font-size: 10px; }
}

/* ============================================================================
 * ROND 14 — /decouvrir/ compose uniquement les primitives storefront existantes.
 * ========================================================================== */
body.sf-ptype-discover .sf-discover-hero { margin: 0 !important; }
body.sf-ptype-discover .sf-discover-hero .entry-title,
body.sf-ptype-discover .sf-discover-feature-banner .entry-title { color: #fff !important; }
body.sf-ptype-discover .sf-discover-hero-secondary {
  border: 1px solid #fff !important;
  background: transparent !important;
  color: #fff !important;
}
body.sf-ptype-discover .sf-discover-hero-secondary:hover { background: rgba(255, 255, 255, .12) !important; }
body.sf-ptype-discover .sf-discover-hero-badges {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sf-space-1);
  width: 100%;
  margin-top: var(--sf-space-3);
}
body.sf-ptype-discover .sf-discover-hero-badges .banner-badge { padding: 6px 10px; font-size: 11px; }

body.sf-ptype-discover .sf-discover-reassurance {
  margin: 0;
  padding: var(--sf-space-3) 0;
  border: 0;
  background: var(--primary, var(--primary));
}
body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-ic,
body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-title,
body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-text { color: #fff; }
body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-title { margin-bottom: 2px; }
body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-text { opacity: .84; }

body.sf-ptype-discover .sf-discover-stats { margin: 0; border: 0; background: var(--sf-surface); }
body.sf-ptype-discover .sf-discover-stats .site-iconbox-detail { width: 100%; }
body.sf-ptype-discover .sf-discover-stats .entry-title { color: var(--primary, var(--primary)); }

body.sf-ptype-discover .sf-discover-brands > .site-module-header,
body.sf-ptype-discover .sf-discover-univers > .site-module-header { margin-bottom: var(--sf-space-3); }
body.sf-ptype-discover .sf-discover-univers > .e-con-inner > * { width: auto !important; min-width: 0; }
body.sf-ptype-discover .sf-discover-univers .site-banner,
body.sf-ptype-discover .sf-discover-univers .site-banner .entry-media,
body.sf-ptype-discover .sf-discover-univers .site-banner .entry-media img { height: 100% !important; }
body.sf-ptype-discover .sf-discover-univers .site-banner .entry-media img { object-fit: cover; }

body.sf-ptype-discover .sf-discover-split .sf-about-intro { align-items: center; }
body.sf-ptype-discover .sf-discover-split .sf-discover-split-media { min-height: 340px; height: 100%; margin: 0; }
body.sf-ptype-discover .sf-discover-split .sf-discover-split-media .entry-media,
body.sf-ptype-discover .sf-discover-split .sf-discover-split-media .entry-media img { height: 100% !important; }
body.sf-ptype-discover .sf-discover-split .sf-discover-split-media .entry-media img { object-fit: cover; }
body.sf-ptype-discover .sf-discover-services .site-module-header {
  grid-column: 1 / -1;
  margin-bottom: var(--sf-space-3);
}

/* Les cartes d’avis de découverte reprennent exactement la variante vérifiée du
   checkout, sans changer son rendu ni ses données. */
body.sf-ptype-discover .sf-discover-reviews {
  display: grid;
  grid-template-columns: minmax(180px, 210px) minmax(0, 1fr);
  gap: var(--sf-space-4);
  width: min(calc(100% - (2 * var(--sf-page-gutter))), 1360px);
  margin: var(--sf-space-6) auto 0;
  padding: var(--sf-space-4) 0 2px;
  border: 0;
  border-top: 1px solid var(--sf-line);
  border-radius: 0;
  background: transparent;
}
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-reviews-summary { align-self: center; }
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-reviews-eyebrow {
  margin: 0 0 5px;
  color: var(--sf-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
body.sf-ptype-discover .sf-discover-reviews h2 { margin: 0; color: var(--sf-ink); font-size: 17px; line-height: 1.2; }
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-reviews-score {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin: 10px 0 3px;
  color: var(--sf-ink);
}
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-reviews-score strong {
  font-size: 30px;
  font-weight: 800;
  letter-spacing: -.04em;
  line-height: .95;
}
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-reviews-score span,
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-reviews-count { color: var(--sf-muted); font-size: 14px; font-weight: 600; }
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-reviews-count { margin: 9px 0 0; font-weight: 400; }
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-track {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sf-space-3);
  min-width: 0;
  overflow: visible;
  scroll-snap-type: none;
}
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-card {
  min-width: 0;
  min-height: 0;
  padding: 17px;
  border: 1px solid var(--sf-line);
  border-radius: var(--sf-radius);
  background: #fff;
}
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-meta { display: flex; align-items: center; gap: 10px; color: var(--sf-ink); }
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-avatar {
  display: inline-grid;
  flex: 0 0 36px;
  width: 36px;
  height: 36px;
  place-items: center;
  border-radius: 50%;
  background: #e1f0e4;
  color: var(--primary, var(--primary));
  font-size: 12px;
  font-weight: 800;
}
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-author { display: grid; min-width: 0; gap: 2px; }
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-author strong { font-size: 14px; }
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-author time { color: var(--sf-muted); font-size: 12px; line-height: 1.25; }
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-verified {
  margin-left: auto;
  padding: 4px 7px;
  border-radius: 999px;
  background: #e7f4e9;
  color: #17663a;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.2;
  white-space: nowrap;
}
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-stars {
  display: inline-flex;
  gap: 2px;
  margin-top: 14px;
  color: #d69200;
}
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-stars svg { width: 16px; height: 16px; fill: currentColor; stroke: currentColor; stroke-width: 1.2; }
body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-card p { margin: 10px 0 0; color: var(--sf-muted); font-size: 13px; line-height: 1.5; }

@media (min-width: 1024px) {
  body.sf-ptype-discover .sf-discover-univers > .e-con-inner {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    grid-template-rows: repeat(2, minmax(0, 170px));
    gap: var(--sf-space-3) !important;
  }
  body.sf-ptype-discover .sf-discover-univers > .e-con-inner > .sf-discover-univers-featured { grid-column: span 2; grid-row: span 2; }
  body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-track { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 430px) {
  body.sf-ptype-discover .sf-discover-hero .site-banner .entry-inner { max-width: none !important; }
  body.sf-ptype-discover .sf-discover-hero .entry-footer { display: grid !important; grid-template-columns: minmax(0, 1fr); align-items: stretch !important; }
  body.sf-ptype-discover .sf-discover-hero .entry-footer > .btn { justify-content: center; }
  body.sf-ptype-discover .sf-discover-hero-badges { display: grid; grid-template-columns: minmax(0, 1fr); }
  body.sf-ptype-discover .sf-discover-hero-badges .banner-badge { justify-content: flex-start; }

  body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-grid,
  body.sf-ptype-discover .sf-discover-stats .sf-reassure-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sf-space-2); }
  body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-item { gap: var(--sf-space-1); }
  body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-ic,
  body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-ic svg { width: 28px; height: 28px; }
  body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-title { font-size: 12px; line-height: 1.25; }
  body.sf-ptype-discover .sf-discover-reassurance .sf-reassure-text { display: none; }
  body.sf-ptype-discover .sf-discover-stats { padding: var(--sf-space-3) 0; }
  body.sf-ptype-discover .sf-discover-stats .entry-title { font-size: 23px; }
  body.sf-ptype-discover .sf-discover-stats .text-13 { font-size: 11px; line-height: 1.25; }

  body.sf-ptype-discover .sf-discover-univers > .e-con-inner { grid-template-columns: minmax(0, 1fr) !important; grid-template-rows: none; }
  body.sf-ptype-discover .sf-discover-univers > .e-con-inner > .sf-discover-univers-featured { grid-column: auto; grid-row: auto; }
  body.sf-ptype-discover .sf-discover-univers .site-banner { height: var(--banner-mobile-height, 220px) !important; }

  body.sf-ptype-discover .sf-discover-split .sf-about-intro { gap: var(--sf-space-4); margin: var(--sf-space-5) 0; }
  body.sf-ptype-discover .sf-discover-split .sf-discover-split-media { min-height: 220px; }
  body.sf-ptype-discover .sf-discover-services .sf-reassure-grid { grid-template-columns: 1fr; }
  body.sf-ptype-discover .sf-discover-reviews { display: block; width: calc(100% - (2 * var(--sf-page-gutter))); margin-top: var(--sf-space-5); padding: var(--sf-space-4) 0 0; }
  body.sf-ptype-discover .sf-discover-reviews .sf-checkout-reviews-score strong { font-size: 48px; }
  body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-track { grid-template-columns: minmax(0, 1fr); margin-top: var(--sf-space-4); }
  body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-card { padding: var(--sf-space-3); }
  body.sf-ptype-discover .sf-discover-reviews .sf-checkout-review-verified { font-size: 10px; }
}

/* ============================================================================
 * ROND 15 — fiche produit : achat, preuves de confiance et onglets enrichis.
 * ========================================================================== */
.single-product-wrapper .product-detail-inner > .product-meta {
  margin: 0 0 var(--sf-space-2);
}
.single-product-wrapper .product-detail-inner > .product-meta:empty { display: none; }
.single-product-wrapper .product-detail-inner .woocommerce-product-rating { margin: 0; }
.single-product-wrapper .product-detail-inner .product_title { margin-top: 0; }

.sf-product-short-description {
  margin: var(--sf-space-2) 0 0;
  color: var(--sf-muted);
  font-size: var(--sf-body-sm);
  line-height: 1.5;
}
.sf-product-short-description ul,
.sf-product-short-description ol {
  display: grid;
  gap: 5px;
  margin: 0;
  padding: 0 !important;
  list-style: none !important;
}
.sf-product-short-description li {
  display: block !important;
  margin: 0 !important;
  text-transform: none !important;
}
.sf-product-short-description li i { margin-right: 5px !important; color: var(--primary, var(--primary)); font-size: .95em !important; }
.sf-product-short-description strong { color: var(--sf-ink); font-weight: 600; }

.product-detail-inner .sf-product-reassurance {
  display: block !important;
  margin: var(--sf-space-3) 0;
  padding: var(--sf-space-3) 0;
  border-top: 1px solid var(--sf-line);
  border-bottom: 1px solid var(--sf-line);
}
.product-detail-inner .sf-product-reassurance ul {
  display: grid !important;
  gap: 8px;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
.product-detail-inner .sf-product-reassurance li {
  display: flex !important;
  align-items: center;
  gap: 9px;
  margin: 0 !important;
  padding: 0 !important;
}
.product-detail-inner .sf-product-reassurance .notice-icon {
  /* le thème force 42px + margin-right 19px : on neutralise pour recoller
     l'icône au texte (alignement identique aux lignes courtes au-dessus) */
  display: inline-grid !important;
  flex: 0 0 22px !important;
  width: 22px !important;
  height: 22px !important;
  margin: 0 !important;
  padding: 0 !important;
  place-items: center;
  color: var(--primary, var(--primary));
}
.product-detail-inner .sf-product-reassurance .notice-icon svg { width: 19px; height: 19px; }
.product-detail-inner .sf-product-reassurance .notice-detail p {
  margin: 0;
  color: var(--sf-ink);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.3;
}

.product-detail-inner .product-price { display: flex; align-items: center; flex-direction: row !important; flex-wrap: wrap; gap: 10px; }
/* prix + badge promo sur UNE seule ligne (le <p> du thème prenait 100 % et
   rejetait le badge en dessous) */
.product-detail-inner .product-price p.price,
.product-detail-inner .product-price .price { display: inline-flex; align-items: baseline; flex-wrap: wrap; gap: 8px; width: auto; margin: 0; }
/* bouton principal étendu : il occupe toute la largeur restante à côté du
   sélecteur de quantité */
.product-detail-inner form.cart button.single_add_to_cart_button,
.product-detail-inner form.cart button[name="add-to-cart"] { flex: 1 1 auto !important; justify-content: center; }
/* preuve sociale : « 5,0/5 (17 avis) » sans encadré du thème */
.product-detail-inner .woocommerce-product-rating .rating-count { display: inline-flex; align-items: baseline; gap: 5px; margin: 0; padding: 0 !important; border: 0 !important; background: none !important; box-shadow: none !important; }
.product-detail-inner .woocommerce-product-rating .rating-count .rating { margin: 0; padding: 0 !important; border: 0 !important; background: none !important; box-shadow: none !important; color: var(--sf-ink, #111827); font-size: 13px; font-weight: 800; line-height: 1.2; }
.product-detail-inner .woocommerce-product-rating .rating-count .count-text { color: var(--sf-muted, #58645d); font-size: 13px; }
.sf-product-price-discount {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 4px 9px;
  border-radius: 999px;
  background: #fdeceb;
  color: #e02b27;
  font-size: 13.5px;
  font-weight: 800;
  line-height: 1;
}
.sf-price-request-wrapper { margin: var(--sf-space-3) 0 0; }
.sf-price-request { margin: 0; color: var(--sf-ink); font-size: 25px; font-weight: 800; line-height: 1.15; }
.sf-price-request-note { margin: 5px 0 0; color: var(--sf-muted); font-size: 13px; line-height: 1.45; }

.sf-product-purchase-extras { display: grid; gap: 20px; margin-top: 20px; min-width: 0; }

/* colonne d'achat un peu plus étroite : la galerie photo respire davantage
   (le wrapper a un gap de 40px : chaque colonne en absorbe la moitié) */
@media (min-width: 1024px) {
  .single-product-wrapper > .column.vertical { flex: 0 0 calc(61.5% - 20px); max-width: calc(61.5% - 20px); }
  .single-product-wrapper > .column.product-detail { flex: 0 0 calc(38.5% - 20px); max-width: calc(38.5% - 20px); }
}

/* encart de rareté sous le bouton (une seule mention, gris, agrandi) —
   frère du formulaire, donc jamais dans la barre d'achat fixe mobile */
.product-detail-inner .sf-stock-hot {
  display: flex;
  align-items: center;
  gap: 11px;
  margin: 12px 0 0;
  padding: 13px 16px;
  border: 1px solid #ececec;
  border-radius: 12px;
  background: #f5f5f5;
}
.product-detail-inner .sf-stock-hot .sf-stock-hot-ic { display: inline-flex; flex: 0 0 auto; color: #e8792b; }
.product-detail-inner .sf-stock-hot .sf-stock-hot-ic svg { width: 23px; height: 23px; }
.product-detail-inner .sf-stock-hot .sf-stock-hot-copy { display: grid; gap: 2px; min-width: 0; }
.product-detail-inner .sf-stock-hot strong { color: #4b5563; font-size: 14.5px; font-weight: 700; line-height: 1.2; }
.product-detail-inner .sf-stock-hot small { color: #e02b27; font-size: 13.5px; font-weight: 700; line-height: 1.2; }

/* Onglet « Livraison et envoi » : visuel logistique + points structurés,
   sur le modèle éprouvé des fiches à forte conversion. */
.sf-shipping-split { display: grid; grid-template-columns: minmax(260px, 400px) minmax(0, 1fr); gap: 28px; align-items: stretch; }
/* dans ce split, les deux sections de texte s'empilent (le style cartes 2 colonnes
   du conteneur d'onglet ne s'applique pas ici) */
.sf-shipping-split .sf-product-tab-copy { display: grid !important; grid-template-columns: 1fr !important; gap: 14px; }
/* la photo occupe toute la hauteur du texte de droite */
.sf-shipping-media { display: flex; margin: 0; overflow: hidden; border: 1px solid var(--sf-line, var(--sf-line)); border-radius: 12px; }
.sf-shipping-media img { display: block; width: 100%; height: 100%; min-height: 250px; max-height: none; object-fit: cover; }
.sf-shipping-split .sf-product-tab-copy section + section { margin-top: 18px; }
.sf-shipping-split h3 { margin: 0 0 7px; font-size: 16px; }
.sf-shipping-split p { margin: 0 0 8px; color: var(--sf-muted, #58645d); font-size: 13.5px; line-height: 1.55; }
.sf-shipping-points { display: grid; gap: 8px; margin: 6px 0 0; padding: 0 0 0 18px; color: var(--sf-muted, #58645d); font-size: 13.5px; line-height: 1.55; }
.sf-shipping-points strong { color: var(--sf-ink, #111827); }
@media (max-width: 767.98px) {
  .sf-shipping-split { grid-template-columns: 1fr; gap: 14px; }
  .sf-shipping-media img { min-height: 0; max-height: 210px; }
}
.sf-product-payment-row {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 30px;
  padding: 0 0 var(--sf-space-2);
  border-bottom: 1px solid var(--sf-line);
}
/* logos de paiement : plus petits, sans contour, répartis sur la largeur */
.sf-product-payment-row { border-bottom: 0; padding-bottom: 4px; }
.sf-product-payment-row .sf-product-payment-badges { display: flex; width: 100%; gap: 8px; }
.sf-product-payment-row .sf-pay { flex: 1 1 0; height: 26px; padding: 2px 6px; border: 0; border-radius: 6px; box-shadow: none; background: transparent; }
.sf-product-payment-row .sf-pay img { height: 17px; max-width: 42px; }

/* --- Fiche produit : espacements & tailles (prix, avis, bouton) --- */
/* prix plus aéré (au-dessus et en dessous) */
.product-detail-inner .product-price-wrapper { margin: 12px 0 16px; }
/* logos de paiement rapprochés de la ligne d'achat */
.sf-product-purchase-extras { margin-top: 12px; }
/* preuve sociale au-dessus du titre : étoiles + texte légèrement agrandis */
.product-detail-inner .woocommerce-product-rating { margin-bottom: 8px; }
.product-detail-inner .woocommerce-product-rating .star-rating { font-size: 16px; }
.product-detail-inner .woocommerce-product-rating .rating-count .rating { font-size: 15px; }
.product-detail-inner .woocommerce-product-rating .rating-count .count-text { font-size: 14px; }
.product-detail-inner .woocommerce-product-rating a { font-size: 14px; }
/* bouton d'achat un peu plus généreux sur desktop */
@media (min-width: 1024px) {
  .product-detail-inner form.cart button[name="add-to-cart"],
  .product-detail-inner form.cart .single_add_to_cart_button { min-height: 52px !important; }
}

.sf-product-trust-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sf-space-2);
  padding: 4px 0;
}
.sf-product-trust-item { display: flex; min-width: 0; align-items: flex-start; gap: 9px; }
.sf-product-trust-item > svg { flex: 0 0 22px; width: 22px; height: 22px; color: var(--primary, var(--primary)); }
.sf-product-trust-item > div { display: grid; min-width: 0; gap: 3px; }
.sf-product-trust-item strong { color: var(--sf-ink); font-size: 12px; font-weight: 600; line-height: 1.2; text-transform: uppercase; letter-spacing: .01em; }
.sf-product-trust-item span { color: var(--sf-muted); font-size: 12px; line-height: 1.3; }

.sf-product-value-bento {
  display: grid;
  overflow: hidden;
  border: 1px solid #d5dde3 !important;
  border-radius: var(--sf-radius);
  background: #fff;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}
.sf-product-value-row {
  display: grid;
  grid-template-columns: 27px minmax(0, 1fr) minmax(84px, auto);
  align-items: center;
  gap: 12px;
  min-width: 0;
  padding: 16px 16px;
}
.sf-product-value-row + .sf-product-value-row { border-top: 1px solid var(--sf-line); }
.sf-product-value-row > svg { width: 21px; height: 21px; color: var(--primary, var(--primary)); }
.sf-product-value-row > span { display: grid; min-width: 0; gap: 3px; }
.sf-product-value-row strong { color: var(--sf-ink); font-size: 13.5px; font-weight: 600; line-height: 1.3; }
.sf-product-value-row small { color: var(--sf-muted); font-size: 12.5px; line-height: 1.35; }
.sf-product-value-row b { color: var(--primary, var(--primary)); font-size: 12px; font-weight: 700; line-height: 1.25; text-align: right; }

.sf-product-seller-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sf-space-2);
  padding: 16px 18px;
  border: 1px solid #d5dde3 !important;
  border-radius: var(--sf-radius);
  background: #fff;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}
.sf-product-seller-vendor { display: flex; min-width: 0; flex-direction: column; gap: 8px; }
.sf-product-seller-label { margin: 0; color: var(--sf-ink); font-size: 12.5px; font-weight: 600; line-height: 1.25; }
.sf-product-seller-brand-row { display: flex; align-items: center; gap: 10px; }
.sf-product-seller-brand-row img { display: block; height: 42px; width: auto; max-width: 150px; object-fit: contain; object-position: left center; }
.sf-product-seller-check { width: 18px; height: 18px; flex-shrink: 0; color: var(--primary, var(--primary)); }
.sf-product-seller-line { width: 1px; height: 52px; flex-shrink: 0; margin: 0 18px 0 auto; background: var(--sf-line, var(--sf-line)); }
.sf-product-seller-rating { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; color: var(--sf-muted); font-size: 11.5px; line-height: 1.15; text-align: right; white-space: nowrap; }
.sf-product-seller-rating > strong { color: var(--sf-ink); font-size: 13.5px; font-weight: 600; }
.sf-product-seller-stars { display: inline-flex; gap: 1px; color: #d69200; }
.sf-product-seller-star { width: 15px; height: 15px; fill: currentColor; stroke: currentColor; stroke-width: 1.2; }

/* Ligne de confiance au-dessus du prix — seul « Prix TTC » est en gras. */
.product-detail-inner .sf-buy-trustline { margin: 4px 0 0; color: #444; font-size: 13.5px; font-weight: 400; line-height: 1.5; }
.product-detail-inner .sf-buy-trustline strong { color: var(--sf-ink, #111827); font-weight: 700; }

.woocommerce-tabs .wc-tabs { display: flex; flex-wrap: wrap; gap: 0; border-bottom: 1px solid var(--sf-line); }
.woocommerce-tabs .wc-tabs li { margin: 0 !important; list-style: none; }
.woocommerce-tabs .wc-tabs li a { display: block; padding: 0 0 12px; margin-right: 26px; color: var(--sf-ink) !important; font-size: 16px !important; font-weight: 700 !important; line-height: 1.25; text-transform: none; }
.woocommerce-tabs .wc-tabs li.active a { color: var(--primary, var(--primary)) !important; box-shadow: inset 0 -2px 0 var(--primary, var(--primary)); }
.sf-product-tab-copy { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sf-space-3); }
.sf-product-tab-copy section { padding: var(--sf-space-3); border: 1px solid var(--sf-line); border-radius: var(--sf-radius); background: #fff; }
.sf-product-tab-copy h3 { margin: 0 0 6px; color: var(--sf-ink); font-size: 14px; line-height: 1.3; }
.sf-product-tab-copy p { margin: 0; color: var(--sf-muted); font-size: 14px; line-height: 1.55; }
.sf-product-faq { display: grid; gap: 8px; }
.sf-product-faq-item { overflow: hidden; border: 1px solid var(--sf-line); border-radius: var(--sf-radius); background: #fff; }
.sf-product-faq-item summary { display: flex; align-items: center; justify-content: space-between; gap: var(--sf-space-3); min-height: 50px; padding: 12px 14px; color: var(--sf-ink); font-size: 14px; font-weight: 700; line-height: 1.35; cursor: pointer; list-style: none; }
.sf-product-faq-item summary::-webkit-details-marker { display: none; }
.sf-product-faq-item summary::after { content: "+"; flex: 0 0 auto; color: var(--primary, var(--primary)); font-size: 20px; font-weight: 400; }
.sf-product-faq-item[open] summary { background: var(--sf-surface); }
.sf-product-faq-item[open] summary::after { content: "−"; }
.sf-product-faq-item summary:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: -3px; }
.sf-product-faq-item > div { padding: 0 14px 14px; }
.sf-product-faq-item p { margin: 0; color: var(--sf-muted); font-size: 14px; line-height: 1.55; }
.sf-product-faq-item a { color: var(--primary, var(--primary)); font-weight: 700; }

@media (max-width: 767.98px) {
  .single-product-wrapper .product-detail-inner > .product-meta { margin-bottom: 10px; }
  .sf-product-short-description { margin-top: 10px; }
  .product-detail-inner .sf-product-reassurance { margin: var(--sf-space-2) 0; padding: var(--sf-space-2) 0; }
  .sf-product-purchase-extras { gap: var(--sf-space-3); margin-top: var(--sf-space-3); }
  /* espace entre la ligne « Prix TTC • … » et le prix */
  .product-detail-inner .sf-buy-trustline { margin: 6px 0 10px; font-size: 13px; }
  .sf-product-trust-strip { gap: 10px; padding: 14px 10px; }
  .sf-product-trust-item { gap: 8px; }
  .sf-product-trust-item > svg { flex-basis: 20px; width: 20px; height: 20px; }
  .sf-product-trust-item strong { font-size: 11px; }
  .sf-product-trust-item span { font-size: 11px; }
  .sf-product-value-row { grid-template-columns: 24px minmax(0, 1fr) minmax(72px, auto); gap: 10px; padding: 14px 12px; }
  .sf-product-value-row > svg { width: 19px; height: 19px; }
  .sf-product-value-row strong { font-size: 12.5px; }
  .sf-product-value-row small { font-size: 11.5px; }
  .sf-product-value-row b { font-size: 11px; }
  .sf-product-seller-card { padding: 14px; }
  .sf-product-seller-label { font-size: 11px; }
  .sf-product-seller-brand-row img { height: 30px; }
  .sf-product-seller-line { height: 40px; margin: 0 10px 0 auto; }
  .sf-product-tab-copy { grid-template-columns: 1fr; gap: var(--sf-space-2); }
  .sf-product-tab-copy section { padding: var(--sf-space-3); }
}

@media (max-width: 430px) {
  .sf-product-payment-row .sf-product-payment-badges { gap: 4px; }
  .sf-product-payment-row .sf-pay { height: 23px; padding: 3px 4px; }
  .sf-product-payment-row .sf-pay img { height: 15px; max-width: 31px; }
  .sf-product-seller-brand-row img { height: 26px; }
  .sf-product-seller-label { font-size: 10.5px; }
}

/* ============================================================================
 * ROND 15 — checkout : récapitulatif de confiance et étapes de commande.
 * ========================================================================== */
#sf-checkout-page .sf-checkout-side {
  display: grid;
  gap: var(--sf-space-3);
  min-width: 0;
  position: sticky;
  top: 24px;
}
#sf-checkout-page .sf-checkout-side .sf-summary { position: static; top: auto; }
#sf-checkout-page .sf-checkout-security-card,
#sf-checkout-page .sf-checkout-useful {
  border: 1px solid var(--primary-line);
  border-radius: var(--sf-radius);
  background: #fff;
  box-shadow: 0 8px 24px rgba(23, 33, 27, .04);
}
#sf-checkout-page .sf-checkout-security-card { padding: 18px; }
#sf-checkout-page .sf-checkout-security-card > header,
#sf-checkout-page .sf-checkout-useful > header {
  display: flex;
  align-items: center;
  gap: 11px;
}
#sf-checkout-page .sf-checkout-security-shield,
#sf-checkout-page .sf-checkout-useful > header > span {
  display: inline-grid;
  flex: 0 0 38px;
  width: 38px;
  height: 38px;
  place-items: center;
  border-radius: 50%;
  background: var(--primary-tint);
  color: var(--primary, var(--primary));
}
#sf-checkout-page .sf-checkout-security-shield svg,
#sf-checkout-page .sf-checkout-useful > header > span svg { width: 20px; height: 20px; }
#sf-checkout-page .sf-checkout-security-card h3,
#sf-checkout-page .sf-checkout-useful h2 { margin: 0; color: var(--sf-ink); font-size: 16px; line-height: 1.2; }
#sf-checkout-page .sf-checkout-security-card > header p { display: flex; align-items: center; gap: 6px; margin: 4px 0 0; color: var(--sf-muted); font-size: 12px; line-height: 1.2; }
#sf-checkout-page .sf-checkout-security-card > header p strong { color: var(--sf-ink); font-weight: 700; }
#sf-checkout-page .sf-checkout-security-stars { display: inline-flex; gap: 1px; color: #d69200; }
#sf-checkout-page .sf-checkout-security-stars svg { width: 12px; height: 12px; fill: currentColor; stroke: currentColor; stroke-width: 1.2; }
#sf-checkout-page .sf-checkout-security-rows { display: grid; gap: 0; margin-top: 15px; border-top: 1px solid var(--sf-line); }
#sf-checkout-page .sf-checkout-security-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 11px 0;
}
#sf-checkout-page .sf-checkout-security-row + .sf-checkout-security-row { border-top: 1px solid var(--sf-line); }
#sf-checkout-page .sf-checkout-security-row > svg { flex: 0 0 19px; width: 19px; height: 19px; margin-top: 1px; color: var(--primary, var(--primary)); }
#sf-checkout-page .sf-checkout-security-row > div { display: grid; gap: 2px; min-width: 0; }
#sf-checkout-page .sf-checkout-security-row strong { color: var(--sf-ink); font-size: 13px; line-height: 1.25; }
#sf-checkout-page .sf-checkout-security-row span { color: var(--sf-muted); font-size: 12px; line-height: 1.35; }
#sf-checkout-page .sf-checkout-security-pill {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 5px 0 0;
  padding: 9px 10px;
  border-radius: 8px;
  background: var(--primary-tint);
  color: var(--primary-dark);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.3;
}
#sf-checkout-page .sf-checkout-security-pill svg { flex: 0 0 15px; width: 15px; height: 15px; }

#sf-checkout-page .sf-form-section h3 {
  display: flex;
  align-items: center;
  gap: 9px;
}
#sf-checkout-page .sf-step-number {
  display: inline-grid;
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  place-items: center;
  border-radius: 50%;
  background: var(--primary, var(--primary));
  color: #fff;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
}

#sf-checkout-page .sf-checkout-useful {
  width: min(100%, 660px);
  margin-top: var(--sf-space-4);
  padding: 18px;
}
#sf-checkout-page .sf-checkout-useful > header { align-items: flex-start; }
#sf-checkout-page .sf-checkout-useful > header p { margin: 4px 0 0; color: var(--sf-muted); font-size: 12px; line-height: 1.4; }
#sf-checkout-page .sf-checkout-useful-rows { display: grid; gap: 0; margin-top: 14px; border-top: 1px solid var(--sf-line); }
#sf-checkout-page .sf-checkout-useful-row { display: flex; align-items: flex-start; gap: 10px; padding: 11px 0; }
#sf-checkout-page .sf-checkout-useful-row + .sf-checkout-useful-row { border-top: 1px solid var(--sf-line); }
#sf-checkout-page .sf-checkout-useful-row > svg { flex: 0 0 19px; width: 19px; height: 19px; margin-top: 1px; color: var(--primary, var(--primary)); }
#sf-checkout-page .sf-checkout-useful-row > div { min-width: 0; }
#sf-checkout-page .sf-checkout-useful-row strong { display: block; color: var(--sf-ink); font-size: 13px; line-height: 1.25; }
#sf-checkout-page .sf-checkout-useful-row p { margin: 2px 0 0; color: var(--sf-muted); font-size: 12px; line-height: 1.35; }
#sf-checkout-page .sf-checkout-useful-row a { color: var(--primary, var(--primary)); font-weight: 700; }

@media (max-width: 900px) {
  /* mobile : le formulaire d'abord, puis le récapitulatif (Commander), puis
     les cartes de réassurance — jamais le récap avant le formulaire */
  #sf-checkout-page .sf-checkout-side { position: static; order: 0; gap: var(--sf-space-4); }
  /* libellés de champs un peu plus grands (lisibilité) */
  #sf-checkout-page .sf-field label { font-size: 14.5px; }
  /* espace naturel « plus » après le bouton Commander, avant la carte suivante */
  #sf-checkout-page .sf-checkout-security-card { margin-top: 8px; padding: 20px 18px; }
  /* aération interne de « Achat sécurisé » : lignes plus espacées */
  #sf-checkout-page .sf-checkout-security-rows { margin-top: 16px; }
  #sf-checkout-page .sf-checkout-security-row { gap: 12px; padding: 14px 0; }
  #sf-checkout-page .sf-checkout-security-row strong { font-size: 14px; line-height: 1.35; }
  #sf-checkout-page .sf-checkout-security-row span { font-size: 12.5px; line-height: 1.5; }
  #sf-checkout-page .sf-checkout-security-card > header p { font-size: 13px; }
}
@media (max-width: 430px) {
  #sf-checkout-page .sf-checkout-security-card,
  #sf-checkout-page .sf-checkout-useful { padding: 18px 16px; }
  #sf-checkout-page .sf-checkout-security-card h3,
  #sf-checkout-page .sf-checkout-useful h2 { font-size: 15.5px; }
  #sf-checkout-page .sf-checkout-security-row { gap: 11px; padding: 13px 0; }
  #sf-checkout-page .sf-checkout-security-row strong,
  #sf-checkout-page .sf-checkout-useful-row strong { font-size: 13.5px; }
  #sf-checkout-page .sf-checkout-security-row span,
  #sf-checkout-page .sf-checkout-useful-row p { font-size: 12px; }
  #sf-checkout-page .sf-checkout-security-pill { padding: 8px; font-size: 10px; }
  #sf-checkout-page .sf-checkout-useful { margin-top: var(--sf-space-3); }
}

/* ============================================================================
 * ROND 16 — /decouvrir/ : contraste et modules éditoriaux autonomes.
 * Ces règles restent strictement limitées à la page Découvrir.
 * ========================================================================== */
body.sf-ptype-discover .sf-discover-hero .entry-title,
body.sf-ptype-discover .sf-discover-hero .entry-subtitle,
body.sf-ptype-discover .sf-discover-hero .entry-content,
body.sf-ptype-discover .sf-discover-hero .entry-content p {
  color: var(--sf-ink) !important;
  text-shadow: none !important;
}
body.sf-ptype-discover .sf-discover-hero-secondary {
  border-color: var(--sf-ink) !important;
  background: rgba(255, 255, 255, .72) !important;
  color: var(--sf-ink) !important;
}
body.sf-ptype-discover .sf-discover-hero-secondary:hover {
  background: #fff !important;
  color: var(--sf-ink) !important;
}
body.sf-ptype-discover .sf-discover-hero-badges .banner-badge {
  border: 1px solid #c9decf;
  background: rgba(255, 255, 255, .9) !important;
  color: var(--sf-ink) !important;
  box-shadow: none;
}

body.sf-ptype-discover .sf-discover-univers {
  width: min(calc(100% - (2 * var(--sf-page-gutter))), 1360px) !important;
  margin: var(--sf-space-6) auto 0 !important;
  padding: 0 !important;
}
body.sf-ptype-discover .sf-discover-univers-header { margin-bottom: var(--sf-space-3); }
body.sf-ptype-discover .sf-discover-univers-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sf-space-3);
}
body.sf-ptype-discover .sf-discover-universe-card {
  position: relative;
  display: block;
  min-width: 0;
  aspect-ratio: 1.34 / 1;
  overflow: hidden;
  border: 1px solid var(--sf-line);
  border-radius: var(--sf-radius);
  background: #eff7f0;
  isolation: isolate;
}
body.sf-ptype-discover .sf-discover-universe-card img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
body.sf-ptype-discover .sf-discover-universe-card:focus-visible {
  outline: 3px solid rgba(47,93,58,.38);
  outline-offset: 3px;
}
body.sf-ptype-discover .sf-discover-universe-label {
  position: absolute;
  right: 12px;
  bottom: 12px;
  left: 12px;
  z-index: 1;
  display: block;
  width: fit-content;
  max-width: calc(100% - 24px);
  padding: 7px 10px;
  border-radius: 7px;
  background: rgba(255, 255, 255, .96);
  color: var(--sf-ink);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.25;
  box-shadow: 0 3px 12px rgba(23, 33, 27, .12);
}

body.sf-ptype-discover .sf-discover-feature-banner {
  margin: var(--sf-space-6) 0 0;
  padding: 0;
}
body.sf-ptype-discover .sf-discover-feature-card {
  display: grid;
  grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr);
  align-items: center;
  min-height: 340px;
  overflow: hidden;
  border: 1px solid #d6e7d9;
  border-radius: var(--sf-radius);
  background: #eef7f0;
}
body.sf-ptype-discover .sf-discover-feature-copy {
  display: grid;
  justify-items: start;
  gap: var(--sf-space-2);
  padding: clamp(24px, 4vw, 52px);
}
body.sf-ptype-discover .sf-discover-feature-copy .sf-eyebrow {
  margin: 0;
  color: var(--primary, var(--primary));
}
body.sf-ptype-discover .sf-discover-feature-copy h2 {
  max-width: 560px;
  margin: 0;
  color: var(--sf-ink);
  font-size: clamp(26px, 3vw, 42px);
  line-height: 1.08;
}
body.sf-ptype-discover .sf-discover-feature-description {
  max-width: 470px;
  margin: 0 0 var(--sf-space-1);
  color: var(--sf-muted);
  font-size: 15px;
  line-height: 1.5;
}
body.sf-ptype-discover .sf-discover-feature-media {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 340px;
  padding: 18px;
}
body.sf-ptype-discover .sf-discover-feature-media img {
  display: block;
  width: 100%;
  max-width: 620px;
  max-height: 304px;
  object-fit: contain;
}

@media (min-width: 1024px) {
  body.sf-ptype-discover .sf-discover-univers-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  body.sf-ptype-discover .sf-discover-products .product .product-cart .button {
    width: auto !important;
    min-width: 164px;
    padding-inline: 14px !important;
    white-space: nowrap !important;
  }
}

@media (prefers-reduced-motion: no-preference) {
  body.sf-ptype-discover .sf-discover-universe-card img { transition: transform .2s ease; }
  body.sf-ptype-discover .sf-discover-universe-card:hover img { transform: scale(1.035); }
}

@media (max-width: 767.98px) {
  body.sf-ptype-discover .sf-discover-univers { margin-top: var(--sf-space-5) !important; }
  body.sf-ptype-discover .sf-discover-univers-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  body.sf-ptype-discover .sf-discover-universe-card { aspect-ratio: 1.18 / 1; }
  body.sf-ptype-discover .sf-discover-universe-label {
    right: 8px;
    bottom: 8px;
    left: 8px;
    max-width: calc(100% - 16px);
    padding: 6px 8px;
    font-size: 12px;
  }

  body.sf-ptype-discover .sf-discover-feature-banner { margin-top: var(--sf-space-5); }
  body.sf-ptype-discover .sf-discover-feature-card {
    grid-template-columns: minmax(0, 1fr);
    min-height: 0;
  }
  body.sf-ptype-discover .sf-discover-feature-copy { padding: 26px 24px 20px; }
  body.sf-ptype-discover .sf-discover-feature-copy h2 { font-size: 28px; }
  body.sf-ptype-discover .sf-discover-feature-media {
    min-height: 220px;
    height: 220px;
    padding: 12px 24px 20px;
  }
  body.sf-ptype-discover .sf-discover-feature-media img { max-height: 188px; }
}

/* --- Page de confirmation de commande --------------------------------- */
.sf-order-meta { display: flex; flex-wrap: wrap; justify-content: center; margin: 24px auto 0; max-width: 900px; padding: 18px 10px; border: 1px solid var(--sf-line, var(--sf-line)); border-radius: 12px; background: #fff; text-align: left; }
.sf-order-meta > div { display: grid; gap: 4px; min-width: 150px; padding: 4px 22px; border-left: 1px solid var(--sf-line, var(--sf-line)); }
.sf-order-meta > div:first-child { border-left: 0; }
.sf-order-meta span { color: var(--sf-muted, #58645d); font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; }
.sf-order-meta strong { color: var(--sf-ink, #111827); font-size: 14px; font-weight: 600; }
.sf-order-recap { position: static !important; top: auto !important; max-width: 560px; margin: 22px auto 0; text-align: left; }
.sf-order-recap h3 { margin: 0 0 6px; }
.sf-order-line { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--sf-line, var(--sf-line)); color: var(--sf-ink, #111827); font-size: 13.5px; }
.sf-order-line b { color: var(--sf-muted, #58645d); font-weight: 600; }
.sf-order-line strong { font-weight: 600; white-space: nowrap; }
.sf-order-sub { margin-top: 4px; }
.sf-order-total { border-bottom: 0; font-size: 15px; }
.sf-order-total strong { color: var(--primary, var(--primary)); font-weight: 800; }
.sf-order-demo { margin-top: 16px; color: var(--sf-muted, #58645d); font-size: 12px; }
.sf-ok-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 20px; }
@media (max-width: 767.98px) {
  .sf-order-meta > div { flex: 1 1 100%; padding: 10px 8px; border-left: 0; border-top: 1px solid var(--sf-line, var(--sf-line)); }
  .sf-order-meta > div:first-child { border-top: 0; }
}

/* ============================================================================
 * ROND 18 — responsive mobile : héro home pleine largeur, boutons cartes,
 * vignettes catégories. Aucun effet au-dessus de 767.98 px (PC intact).
 * ========================================================================== */
@media (max-width: 767.98px) {
  /* héro home : bento centré symétriquement sur la page (pas de décalage) */
  .elementor-3074 .elementor-element-a17a6a5 { margin: 14px 0 !important; padding: 0 !important; }
  .elementor-3074 .elementor-element-a17a6a5 > .e-con-inner { padding: 10px 0 !important; max-width: none !important; width: 100% !important; }
  .sf-home-hero-promo-card .banner-price .price { font-size: 24px; }
  .sf-home-hero-promo-card .banner-price .price-description { font-size: 12px !important; opacity: .65; }

  /* cartes catalogue : « Ajouter au panier » sur une seule ligne, interligne serré */
  .products .product .button.add_to_cart_button,
  .button.add_to_cart_button { font-size: 12px !important; line-height: 1.2 !important; white-space: nowrap !important; padding: 11px 10px !important; }

  /* vignettes catégories : libellé lisible sous l'image, sans chevauchement */
  .store-category-box .category-detail .entry-title a { display: block; font-size: 12px; line-height: 1.25; overflow-wrap: break-word; }
  /* léger contour sur les vignettes catégories cliquables (mobile) */
  .sf-home-category-grid .store-category-box.style-1,
  .sf-home-category-band .store-category-box.style-1 {
    padding: 12px 8px 10px;
    border: 1px solid #e4ebe4;
    border-radius: 12px;
    background: #fff;
    transition: border-color .15s ease, box-shadow .15s ease;
  }
  .sf-home-category-grid .store-category-box.style-1:active {
    border-color: var(--primary, var(--primary));
    box-shadow: 0 4px 14px rgba(47,93,58,.08);
  }
}

/* ============================================================================
 * ROND 20 — Accueil : FAQ pleine largeur, bande de bénéfices, avis clients.
 * (carte « Informations pratiques » retirée : trop marketing / pas alignée.)
 * ========================================================================== */
/* bande de bénéfices sous la FAQ */
.sf-home-benefits { padding: 0 18px; margin: 40px auto 0; max-width: 1290px; }
.sf-home-benefits-inner {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 22px;
  padding: 26px;
  border: 1px solid var(--sf-line, var(--sf-line));
  border-radius: 16px;
  background: var(--sf-surface, #f6f8f6);
}
.sf-home-benefit { display: flex; align-items: flex-start; gap: 12px; min-width: 0; }
.sf-home-benefit-ic { display: inline-grid; flex: 0 0 44px; width: 44px; height: 44px; place-items: center; border-radius: 12px; background: var(--primary-tint); color: var(--primary, var(--primary)); }
.sf-home-benefit-ic svg { width: 22px; height: 22px; }
.sf-home-benefit strong { display: block; color: var(--sf-ink, #111827); font-size: 14.5px; font-weight: 700; line-height: 1.25; }
.sf-home-benefit p { margin: 4px 0 0; color: var(--sf-muted, #58645d); font-size: 12.5px; line-height: 1.4; }

/* section avis clients sur l'accueil (mêmes cartes que le checkout, mise en page dédiée) */
.sf-home-reviews { display: grid; grid-template-columns: minmax(190px, 220px) minmax(0, 1fr); gap: 28px; width: auto; margin: 40px auto 8px; max-width: 1290px; padding: 26px 18px; border: 0; border-top: 1px solid #e6ece7; border-radius: 0; background: transparent; }
.sf-home-reviews .sf-checkout-reviews-summary { align-self: center; }
.sf-home-reviews .sf-checkout-reviews-eyebrow { margin: 0 0 6px; color: var(--sf-muted, #58645d); font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.sf-home-reviews .sf-checkout-reviews-summary h2 { margin: 0; color: var(--sf-ink, #111827); font-size: 22px; font-weight: 800; }
.sf-home-reviews .sf-checkout-reviews-score { display: flex; align-items: baseline; gap: 6px; margin: 8px 0 4px; }
.sf-home-reviews .sf-checkout-reviews-score strong { color: var(--sf-ink, #111827); font-size: 44px; font-weight: 800; line-height: 1; }
.sf-home-reviews .sf-checkout-reviews-score span { color: var(--sf-muted, #58645d); font-size: 14px; }
.sf-home-reviews .sf-checkout-review-stars { display: inline-flex; gap: 2px; color: #d69200; }
.sf-home-reviews .sf-checkout-review-stars svg { width: 17px; height: 17px; }
.sf-home-reviews .sf-checkout-reviews-count { margin: 6px 0 0; color: var(--sf-muted, #58645d); font-size: 13px; }
.sf-home-reviews .sf-checkout-review-track { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.sf-home-reviews .sf-checkout-review-card { min-width: 0; padding: 16px; border: 1px solid var(--sf-line); border-radius: 12px; background: #fff; }
.sf-home-reviews .sf-checkout-review-meta { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.sf-home-reviews .sf-checkout-review-avatar { display: inline-grid; flex: 0 0 36px; width: 36px; height: 36px; place-items: center; border-radius: 50%; background: var(--primary-tint); color: var(--primary, var(--primary)); font-size: 12px; font-weight: 800; }
.sf-home-reviews .sf-checkout-review-author { display: grid; gap: 1px; min-width: 0; }
.sf-home-reviews .sf-checkout-review-author strong { color: var(--sf-ink, #111827); font-size: 13.5px; }
.sf-home-reviews .sf-checkout-review-author time { color: var(--sf-muted, #58645d); font-size: 11.5px; }
.sf-home-reviews .sf-checkout-review-verified { margin-left: auto; padding: 3px 8px; border-radius: 999px; background: var(--primary-tint); color: var(--primary-dark); font-size: 10.5px; font-weight: 700; white-space: nowrap; }
.sf-home-reviews .sf-checkout-review-card > p { margin: 8px 0 0; color: var(--sf-ink, #111827); font-size: 13px; line-height: 1.55; }

@media (max-width: 991.98px) {
  .sf-home-reviews { grid-template-columns: 1fr; gap: 18px; }
  .sf-home-reviews .sf-checkout-review-track { grid-template-columns: 1fr; }
}
@media (max-width: 767.98px) {
  .sf-home-benefits-inner { grid-template-columns: 1fr 1fr; gap: 16px; padding: 18px; }
  .sf-home-benefits { margin-top: 30px; }
  .sf-home-reviews { margin-top: 30px; padding: 20px 16px; }
}
@media (max-width: 480px) {
  .sf-home-benefits-inner { grid-template-columns: 1fr; }
}

/* ============================================================================
 * ROND 21 — Barre d'achat fixe mobile dédiée (.sf-buybar) : n'apparaît que
 * lorsque le bouton « Ajouter au panier » en flux quitte l'écran.
 * ========================================================================== */
.sf-buybar {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 1200;
  display: none;
  align-items: center;
  gap: 12px;
  padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px));
  background: #fff;
  border-top: 1px solid var(--sf-line, var(--sf-line));
  box-shadow: 0 -6px 20px rgba(17, 24, 39, .08);
}
.sf-buybar.is-visible { display: flex; }
.sf-buybar-info { display: grid; gap: 1px; min-width: 0; flex: 0 0 auto; }
.sf-buybar-info .sf-buybar-label { color: var(--sf-muted, #58645d); font-size: 11px; line-height: 1.1; }
.sf-buybar-info .sf-buybar-price { color: var(--sf-ink, #111827); font-size: 17px; font-weight: 800; line-height: 1.1; }
.sf-buybar-btn {
  flex: 1 1 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 50px;
  padding: 0 16px;
  border: 0;
  border-radius: 999px;
  background: var(--primary, var(--primary));
  color: #fff;
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
}
.sf-buybar-btn:active { background: var(--primary-dark); }
.sf-buybar-btn svg { width: 18px; height: 18px; }
/* la barre fixe n'existe que sur petit écran */
@media (min-width: 1024px) { .sf-buybar { display: none !important; } }
/* de l'air en bas de page pour ne pas masquer le contenu derrière la barre */
@media (max-width: 1023.98px) {
  body.sf-buybar-active { padding-bottom: 76px; }
}

/* ============================================================================
 * ROND 19 — pages de contenu : on retire l'aspect « template / docs » (encadrés
 * verts en admonition, pastilles trop marquées) pour rester sur le vocabulaire
 * visuel du reste du site : boîtes sobres (surface + filet fin, comme la carte
 * "Coordonnées" du Contact et les cartes "À propos"), liens verts, et de vraies
 * icônes cohérentes avec la barre de réassurance.
 * ========================================================================== */

/* --- Encadrés : boîte neutre, plate, sans teinte verte ni barre d'accent --- */
.sf-doc .sf-callout {
  position: relative;
  gap: 0;
  background: var(--sf-surface);
  border: 1px solid var(--sf-line);
  border-left: 1px solid var(--sf-line);
  border-radius: 10px;
  color: var(--sf-muted);
}
.sf-doc .sf-callout p { color: var(--sf-muted); font-size: var(--sf-body-sm); line-height: 1.6; }
.sf-doc .sf-callout a { color: var(--primary, var(--primary)); font-weight: 600; }

/* Petite icône « courrier » sur les blocs qui donnent l'adresse de contact,
   dans le même trait que les icônes de réassurance du site. */
.sf-doc .sf-callout:has(a[href^="mailto"]) { padding-left: 48px; }
.sf-doc .sf-callout:has(a[href^="mailto"])::before {
  content: "";
  position: absolute;
  left: 18px;
  top: 16px;
  width: 20px;
  height: 20px;
  background: center / contain no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232F5D3A' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='m3 7 9 6 9-6'/%3E%3C/svg%3E");
}

/* --- Cartes services : filet fin, même arrondi que les cartes du site, + icône --- */
.sf-doc .sf-cards { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.sf-doc .sf-card {
  background: var(--sf-surface);
  border: 1px solid var(--sf-line);
  border-radius: 10px;
}
.sf-doc .sf-card h3 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: var(--sf-space-2);
}
.sf-doc .sf-card h3::before {
  content: "";
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  background: center / contain no-repeat;
}
.sf-doc .sf-card:has(a[href*="service-apres-vente"]) h3::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232F5D3A' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7 3v5c0 4.2-3 7.4-7 8.4-4-1-7-4.2-7-8.4V6l7-3z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E");
}
.sf-doc .sf-card:has(a[href*="depannage-urgence"]) h3::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232F5D3A' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2 4 14h7l-1 8 9-12h-7l1-8z'/%3E%3C/svg%3E");
}
.sf-doc .sf-card:has(a[href*="assistance-technique"]) h3::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232F5D3A' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 14v-1a8 8 0 0 1 16 0v1'/%3E%3Crect x='2.5' y='14' width='4' height='6' rx='1.2'/%3E%3Crect x='17.5' y='14' width='4' height='6' rx='1.2'/%3E%3C/svg%3E");
}

/* --- Étapes : puce numérotée discrète (contour vert) plutôt qu'une pastille pleine --- */
.sf-doc ol.sf-doc-steps li::before {
  background: #fff;
  color: var(--primary, var(--primary));
  border: 1.5px solid var(--primary, var(--primary));
  width: 26px;
  height: 26px;
  font-size: 13px;
}
.sf-doc ol.sf-doc-steps li { padding-left: 40px; min-height: 26px; }

/* ============================================================================
 * GLOBAL — grille catégorie 4/3/2, filtre disponibilité/promo, tuiles mobile,
 * barre de tri/filtre. (Modifs template globale.)
 * ========================================================================== */

/* Grille catalogue/catégorie : colonnes FORCÉES et régulières — desktop 4,
   écran intermédiaire 3, mobile 2. Les cartes dessinent leurs propres filets
   (pas de gouttière) → table nette, aucune carte étirée ni « mangée ». */
#primary .shop-products-wrapper .products.sf-product-grid-bounded,
.shop-products-wrapper .products.sf-product-grid-bounded {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  justify-content: stretch !important;
  gap: 0 !important;
}
#primary .shop-products-wrapper .products.sf-product-grid-bounded > .product,
.shop-products-wrapper .products.sf-product-grid-bounded > .product {
  max-width: none !important;
  min-width: 0 !important;
  width: 100% !important;
}
@media (max-width: 1199.98px) {
  #primary .shop-products-wrapper .products.sf-product-grid-bounded,
  .shop-products-wrapper .products.sf-product-grid-bounded {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
}
@media (max-width: 767.98px) {
  #primary .shop-products-wrapper .products.sf-product-grid-bounded,
  .shop-products-wrapper .products.sf-product-grid-bounded {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

/* Masquage indépendant des filtres (prix + disponibilité), cumulables. */
.shop-products-wrapper .products > .product.sf-filter-price,
.shop-products-wrapper .products > .product.sf-filter-stock,
.shop-products-wrapper .products > .product.sf-filter-brand { display: none !important; }

/* Contrôle segmenté « Tout / En stock / En promo ». */
.sf-stock-filter { display: inline-flex; align-items: stretch; margin: 10px 0 0; border: 1px solid var(--sf-line, #dfe4e7); border-radius: 999px; overflow: hidden; background: #fff; }
.sf-stock-opt { appearance: none; border: 0; background: transparent; margin: 0; padding: 7px 14px; font: inherit; font-size: 13px; font-weight: 600; color: var(--sf-muted, #58645d); cursor: pointer; line-height: 1.2; }
.sf-stock-opt + .sf-stock-opt { border-left: 1px solid var(--sf-line, #dfe4e7); }
.sf-stock-opt:hover { color: var(--primary, var(--primary)); }
.sf-stock-opt.is-active { background: var(--primary, var(--primary)); color: #fff; }
.sf-stock-opt:focus-visible { outline: 3px solid rgba(47,93,58,.3); outline-offset: -2px; }

/* Espacement de la barre de tri/filtre : « Filtrer » ne colle plus à « Trier par ». */
.shop-sorting-wrapper .sf-mobile-filter-toggle { margin-right: 12px; }

/* Tuiles catégories de l'accueil : 2 colonnes nettes sur mobile (fini le
   carrousel/3 colonnes trop étroites qui empilaient le texte lettre par lettre). */
@media (max-width: 767.98px) {
  .sf-home-category-grid .site-slider {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
    max-height: none !important;
    overflow: visible !important;
  }
  .sf-home-category-grid .site-slider::after,
  .sf-home-category-grid .site-slider > .slick-nav,
  .sf-home-category-grid .site-slider .slick-dots { display: none !important; }
  .sf-home-category-grid .site-slider > .slider-item { display: block !important; width: auto !important; min-width: 0; opacity: 1 !important; visibility: visible !important; }
  .store-category-box .category-detail .entry-title a { font-size: 13px; line-height: 1.3; }

  /* Barre de tri/filtre : le bloc gauche (compteur + filtre dispo) calé à gauche,
     le tri en dessous, avec de l'air entre « Filtrer » et « Trier par ». */
  .before-shop-loop { flex-wrap: wrap; row-gap: 12px; }
  .before-shop-loop > .column:first-child { width: 100%; flex-wrap: wrap; justify-content: flex-start !important; align-items: center; gap: 12px; }
  .before-shop-loop .sf-stock-filter { margin-top: 0; }
  .shop-sorting-wrapper .sf-mobile-filter-toggle { margin-right: 0; margin-bottom: 4px; }
}

/* ============================================================================
 * ROUND 10 — barre de catalogue, menu « Tous nos produits » et colonne d'achat.
 * ========================================================================== */

/* --- Menus déroulants en forme de bouton -----------------------------------
   Le libellé occupe la place disponible, le chevron reste collé au bord droit
   quelle que soit la longueur du texte (« Tri par défaut » vs « Tri du plus
   récent au plus ancien » ne décalent plus la flèche). */
.shop-sorting-wrapper .sf-sort-control > span { font-size: 15px; }
.shop-sorting-wrapper .sf-sort-menu {
  min-width: 200px;
  max-width: 280px;
}
.shop-sorting-wrapper .sf-sort-menu > summary {
  min-height: 48px;
  padding: 0 14px;
  gap: 12px;
  border-color: #d7dbdd;
  background: #fff;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.35;
  box-shadow: 0 1px 2px rgba(23, 33, 27, .07);
}
.shop-sorting-wrapper .sf-sort-menu > summary:hover { border-color: #c2c8cb; }
.shop-sorting-wrapper .sf-sort-menu > summary > span {
  min-width: 0;
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* Le chevron est un repère, pas du texte : il reste gris (il héritait sinon de
   la couleur du libellé et pesait autant que lui) et calé au bord droit par
   `margin-left: auto`, quelle que soit la longueur du libellé. */
.shop-sorting-wrapper .sf-sort-menu > summary svg {
  width: 20px;
  height: 20px;
  margin-left: auto;
  color: #9199a0;
  stroke: currentColor;
  stroke-width: 2;
}
.shop-sorting-wrapper .sf-sort-menu[open] > summary { background: #fff; }
.shop-sorting-wrapper .sf-sort-menu[open] > summary svg { color: var(--primary, var(--primary)); }
.shop-sorting-wrapper .sf-sort-options { padding: 8px; }
.shop-sorting-wrapper .sf-sort-option {
  padding: 13px 14px;
  font-size: 15px;
  line-height: 1.5;
}

/* --- « Tout / En stock / En promo » ----------------------------------------
   Aligné sur l'axe vertical du compteur de résultats (le `margin-top` le
   décalait vers le bas) et détaché du nombre d'articles. */
.sf-stock-filter {
  align-self: center;
  margin: 0 0 0 18px;
}
.sf-stock-opt {
  padding: 9px 18px;
  font-size: 14px;
}
.before-shop-loop .woocommerce-result-count { margin: 0; }

/* --- Raccourci « Voir tous les produits » en tête du déroulant catalogue --- */
.site-menu .menu-item.sf-menu-see-all > a { font-weight: 700; }
.site-menu .sub-menu > .menu-item.sf-menu-see-all { border-bottom: 1px solid var(--sf-line, #dfe4e7); }

/* --- Colonne d'achat : une seule échelle typographique ---------------------
   Référence = l'encart « Stock bientôt épuisé » (titre 14.5px / détail 13.5px).
   Le bandeau de garanties, le bento d'engagements et la carte vendeur suivaient
   chacun sa propre taille (11.5 → 13.5px) : tout est ramené sur cette échelle. */
.sf-product-trust-item strong {
  font-size: 14.5px;
  font-weight: 700;
  text-transform: none;
  letter-spacing: 0;
}
.sf-product-trust-item span { font-size: 13.5px; }
.sf-product-value-row strong { font-size: 14.5px; font-weight: 700; }
.sf-product-value-row small { font-size: 13.5px; }
.sf-product-value-row b { font-size: 13.5px; }
.sf-product-seller-label { font-size: 14.5px; font-weight: 700; }
.sf-product-seller-rating { font-size: 13.5px; }
.sf-product-seller-rating > strong { font-size: 14.5px; font-weight: 700; }

/* Bandeau de garanties : une seule ligne de trois, pictogramme au-dessus et
   textes centrés sous lui. */
.sf-product-trust-strip {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  padding: 8px 0;
}
.sf-product-trust-item {
  flex-direction: column;
  align-items: center;
  gap: 7px;
  text-align: center;
}
.sf-product-trust-item > svg { flex: 0 0 auto; width: 24px; height: 24px; }
.sf-product-trust-item > div { justify-items: center; gap: 2px; }

/* Galerie produit sous 992 px : le thème choisit la disposition des vignettes
   (`.vertical` en superposition à gauche, `.horizontal` en bande sous l'image)
   une seule fois, au chargement, et ne réévalue jamais son choix. Après un
   passage du desktop au mobile, la bande restait donc en `.vertical`, en
   position absolue par-dessus la photo. On impose la disposition en ligne à
   partir de la feuille de style, indépendamment de la classe posée par le JS. */
@media (max-width: 991.98px) {
  .single-product-wrapper .klb-flexslider-thumbnail.vertical {
    position: static !important;
    width: auto !important;
    height: auto !important;
    margin-top: 10px;
  }
  .single-product-wrapper .klb-flexslider-thumbnail.vertical .flex-viewport {
    height: auto !important;
  }
  .single-product-wrapper .klb-flexslider-thumbnail.vertical .flex-control-thumbs {
    position: static !important;
    display: flex !important;
    width: auto !important;
    height: auto !important;
    flex-wrap: wrap;
    gap: 8px;
    transform: none !important;
  }
}

@media (max-width: 767.98px) {
  /* Le thème sort `.shop-sorting-wrapper` du flux (position: absolute) sous
     768 px : la barre « Filtrer + Trier par » se superposait alors à la
     première rangée de cartes, qui apparaissaient rognées. On la remet dans le
     flux pour qu'elle pousse réellement la grille vers le bas. */
  .before-shop-loop .shop-sorting-wrapper { position: static !important; }
  /* La disponibilité est le filtre principal : elle reste en tête, « Filtrer » et
     « Trier par » suivent (un `order: -1` posé sur la colonne de tri la renvoyait
     en dernier, sous le tri). */
  .before-shop-loop > .column:first-child { order: -2; }
  .before-shop-loop .sf-sort-column { order: -1; }
  .sf-stock-filter { margin: 0 0 4px; }
  .sf-stock-opt { padding: 9px 16px; font-size: 14px; }
  .shop-sorting-wrapper .sf-sort-menu > summary { min-height: 50px; font-size: 15.5px; }
  .shop-sorting-wrapper .sf-sort-option { font-size: 15px; }
}

/* ============================================================================
 * ROUND 12 — menus déroulants de navigation (barre principale).
 * ========================================================================== */

/* Le thème rend chaque entrée de sous-menu en `inline-flex` calé sur la largeur
   du texte, et son chevron est un `::after` en police d'icônes posé en flux
   normal avec `margin-left: 15px`. Résultat : la flèche suivait la fin du
   libellé — « Divers » la plaçait à 131 px quand « Entretenir le Jardin » la
   mettait à 210 px. On passe l'entrée en ligne pleine largeur et on pousse le
   chevron au bord droit, indépendamment de la longueur du libellé. */
/* Les règles du thème (`.site-header .primary-menu > ul .sub-menu a`) l'emportent
   en spécificité sur un simple `.site-menu .sub-menu a` : la largeur du panneau
   et la taille du texte sont donc forcées explicitement. */
.site-menu .sub-menu { min-width: 260px !important; background: #fff; }
.site-menu .sub-menu > .menu-item > a {
  display: flex !important;
  width: 100%;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 11px 18px !important;
  background: #fff;
  color: var(--sf-ink, #111827);
  font-size: 15px !important;
  font-weight: 500;
  line-height: 1.5 !important;
}
.site-menu .sub-menu > .menu-item > a::after {
  margin-left: auto !important;
  flex: 0 0 auto;
  color: #9199a0;
}
/* Fond blanc en toutes circonstances : le survol se lit à la couleur du
   libellé et du chevron, pas à un aplat. */
.site-menu .sub-menu > .menu-item > a:hover,
.site-menu .sub-menu > .menu-item > a:focus-visible,
.site-menu .sub-menu > .menu-item:hover > a {
  background: #fff;
  color: var(--primary, var(--primary));
}
.site-menu .sub-menu > .menu-item > a:hover::after,
.site-menu .sub-menu > .menu-item:hover > a::after { color: var(--primary, var(--primary)); }
.site-menu .sub-menu > .menu-item > a:focus-visible {
  outline: 3px solid rgba(47,93,58,.3);
  outline-offset: -3px;
}

/* Raccourci « Voir tous les produits » : même gabarit de bouton, sans chevron. */
.site-menu .sub-menu > .menu-item.sf-menu-see-all > a { font-weight: 700; }

/* Entrées de premier niveau de la barre : mêmes proportions de texte. */
.site-header .site-menu.primary-menu > ul.menu > .menu-item > a { font-size: 15px; }

/* ============================================================================
 * PAGE À PROPOS / CONTACT / FAQ — hero + images produit, cartes, gallery,
 * bloc contact réutilisé, FAQ. Ton sobre, cohérent avec le reste du site.
 * ========================================================================== */
.sf-about2 { max-width: var(--sf-content-width, 1120px); margin: 0 auto; padding: 0 0 clamp(40px, 6vw, 72px); }
.sf-about2 .sf-eyebrow { display: block; margin: 0 0 10px; color: var(--primary, var(--primary)); font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.sf-about2 a { color: var(--primary, var(--primary)); }

.sf-about2-hero { padding: clamp(26px, 5vw, 48px) 0 clamp(18px, 3vw, 28px); }
.sf-about2-hero h1 { margin: 0 0 16px; max-width: 780px; color: var(--sf-ink, #111827); font-size: clamp(28px, 4.4vw, 44px); font-weight: 800; line-height: 1.12; }
.sf-about2-lead, .sf-about2-lead-2 { margin: 0 0 12px; max-width: 640px; color: var(--sf-muted, #4b5563); font-size: clamp(15px, 1.5vw, 17px); line-height: 1.65; }
.sf-about2-lead-2 { margin-bottom: 0; }
.sf-about2-hero-split { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(22px, 4vw, 40px); align-items: center; }
.sf-about2-hero-media { margin: 0; overflow: hidden; border-radius: 18px; border: 1px solid var(--sf-line, var(--sf-line)); background: #f3f7f4; aspect-ratio: 4 / 3; }
.sf-about2-hero-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.sf-about2-hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }

.sf-about2-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; margin: 8px 0 clamp(36px, 5vw, 56px); }
.sf-about2-card { padding: 26px; border: 1px solid var(--sf-line, var(--sf-line)); border-radius: 16px; background: #fff; }
.sf-about2-card-ic { display: inline-grid; place-items: center; width: 46px; height: 46px; margin-bottom: 14px; border-radius: 12px; background: #e7f4ea; color: var(--primary, var(--primary)); }
.sf-about2-card-ic svg { width: 24px; height: 24px; }
.sf-about2-card h2 { margin: 0 0 8px; color: var(--sf-ink, #111827); font-size: 19px; font-weight: 800; }
.sf-about2-card p { margin: 0 0 14px; color: var(--sf-muted, #4b5563); font-size: 15px; line-height: 1.6; }
.sf-about2-link { display: inline-flex; align-items: center; gap: 6px; color: var(--primary, var(--primary)); font-size: 14px; font-weight: 700; text-decoration: none; }
.sf-about2-link::after { content: "\2192"; }
.sf-about2-link:hover { text-decoration: underline; }

.sf-about2-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(22px, 4vw, 40px); align-items: center; margin: 0 0 clamp(36px, 5vw, 56px); }
.sf-about2-split-reverse { direction: rtl; }
.sf-about2-split-reverse > * { direction: ltr; }
.sf-about2-split-media { margin: 0; overflow: hidden; border-radius: 18px; border: 1px solid var(--sf-line, var(--sf-line)); background: #f3f7f4; aspect-ratio: 5 / 4; }
.sf-about2-split-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.sf-about2-split-copy h2 { margin: 0 0 14px; color: var(--sf-ink, #111827); font-size: clamp(22px, 2.6vw, 30px); font-weight: 800; line-height: 1.2; }
.sf-about2-split-copy > p { margin: 0 0 12px; color: var(--sf-muted, #4b5563); font-size: 15.5px; line-height: 1.7; }
.sf-about2-note { margin-top: 14px !important; font-size: 14px !important; }
.sf-about2-cols-inline { margin-top: 18px; }

.sf-about2-figures { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; margin: 0 0 clamp(36px, 5vw, 56px); overflow: hidden; border-radius: 16px; background: #1d3f29; }
.sf-about2-figures p { display: grid; gap: 6px; min-height: 118px; margin: 0; padding: 22px 16px; align-content: center; text-align: center; background: #16301f; }
.sf-about2-figures strong { color: #a9dfa0; font-size: clamp(24px, 3vw, 34px); font-weight: 800; line-height: 1; }
.sf-about2-figures span { color: #dcebde; font-size: 13.5px; line-height: 1.4; }

.sf-about2-gallery { margin: 0 0 clamp(36px, 5vw, 56px); }
.sf-about2-gallery-head { margin-bottom: 20px; max-width: 720px; }
.sf-about2-gallery-head h2 { margin: 0 0 10px; color: var(--sf-ink, #111827); font-size: clamp(22px, 2.6vw, 30px); font-weight: 800; }
.sf-about2-gallery-head p { margin: 0; color: var(--sf-muted, #4b5563); font-size: 15px; line-height: 1.6; }
.sf-about2-gallery-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.sf-about2-gallery-grid figure { margin: 0; overflow: hidden; border: 1px solid var(--sf-line, var(--sf-line)); border-radius: 14px; background: #fff; }
.sf-about2-gallery-grid img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; background: #f3f7f4; }
.sf-about2-gallery-grid figcaption { padding: 10px 12px 12px; color: var(--sf-ink, #111827); font-size: 13px; font-weight: 700; }

.sf-about2-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.sf-about2-col { padding: 20px; border: 1px solid var(--sf-line, var(--sf-line)); border-radius: 14px; background: var(--sf-surface, #f7faf8); }
.sf-about2-col h3 { margin: 0 0 12px; color: var(--sf-ink, #111827); font-size: 16px; font-weight: 800; }
.sf-about2-col ul { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.sf-about2-col li { position: relative; padding-left: 22px; color: var(--sf-muted, #4b5563); font-size: 14px; line-height: 1.55; }
.sf-about2-col li::before { content: ""; position: absolute; left: 0; top: 7px; width: 7px; height: 7px; border-radius: 50%; background: var(--primary, var(--primary)); }

.sf-about2-contact-block { margin: 0 0 clamp(36px, 5vw, 56px); padding: clamp(22px, 3vw, 32px); border: 1px solid var(--sf-line, var(--sf-line)); border-radius: 18px; background: #fff; }
.sf-about2-contact-head { margin-bottom: 22px; max-width: 760px; }
.sf-about2-contact-head h2 { margin: 0 0 10px; color: var(--sf-ink, #111827); font-size: clamp(22px, 2.6vw, 30px); font-weight: 800; }
.sf-about2-contact-head p { margin: 0; color: var(--sf-muted, #4b5563); font-size: 15px; line-height: 1.65; }
.sf-about2-contact-block .sf-contact-layout { margin: 0; }
.sf-about2-contact-block .sf-contact-form,
.sf-about2-contact-block .sf-contact-details { border: 1px solid var(--sf-line, var(--sf-line)); border-radius: 14px; background: var(--sf-surface, #f7faf8); }
.sf-about2-contact-block .sf-contact-form { padding: clamp(18px, 2.5vw, 26px); background: #fff; }
.sf-about2-contact-block .sf-contact-details { padding: 0; background: transparent; border: 0; display: grid; gap: 14px; }
.sf-about2-contact-block .sf-contact-info-card { padding: 18px; border: 1px solid var(--sf-line, var(--sf-line)); border-radius: 14px; background: var(--sf-surface, #f7faf8); }
.sf-contact-fallback { margin: 0; color: var(--sf-muted, #4b5563); font-size: 15px; line-height: 1.6; }

.sf-about2-faq { max-width: 820px; margin: 0 auto; }
.sf-about2-faq > h2 { margin: 0 0 10px; color: var(--sf-ink, #111827); font-size: clamp(22px, 2.6vw, 30px); font-weight: 800; }
.sf-about2-faq-intro { margin: 0 0 20px; color: var(--sf-muted, #4b5563); font-size: 15px; line-height: 1.6; }
.sf-about2-faq-list { display: grid; gap: 12px; }
.sf-about2-faq-item { border: 1px solid var(--sf-line, var(--sf-line)); border-radius: 12px; background: #fff; overflow: hidden; }
.sf-about2-faq-item summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 18px; color: var(--sf-ink, #111827); font-size: 15.5px; font-weight: 700; cursor: pointer; list-style: none; }
.sf-about2-faq-item summary::-webkit-details-marker { display: none; }
.sf-about2-faq-sign { position: relative; flex: 0 0 16px; width: 16px; height: 16px; }
.sf-about2-faq-sign::before, .sf-about2-faq-sign::after { content: ""; position: absolute; background: var(--primary, var(--primary)); transition: transform .2s ease; }
.sf-about2-faq-sign::before { top: 7px; left: 0; width: 16px; height: 2px; }
.sf-about2-faq-sign::after { top: 0; left: 7px; width: 2px; height: 16px; }
.sf-about2-faq-item[open] .sf-about2-faq-sign::after { transform: scaleY(0); }
.sf-about2-faq-body { padding: 0 18px 18px; }
.sf-about2-faq-body p { margin: 0; color: var(--sf-muted, #4b5563); font-size: 14.5px; line-height: 1.65; }

.sf-about2-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 0 22px; border-radius: 999px; background: var(--primary, var(--primary)); color: #fff !important; font-size: 14.5px; font-weight: 700; text-decoration: none; }
.sf-about2-btn:hover { background: var(--primary-dark); color: #fff !important; }
.sf-about2-btn-light { background: #fff; border: 1px solid var(--sf-line, var(--sf-line)); color: var(--sf-ink, #111827) !important; }
.sf-about2-btn-light:hover { background: #eef4ef; color: var(--sf-ink, #111827) !important; }

.sf-contact-page.sf-about2 { max-width: var(--sf-content-width, 1120px); }
.sf-faq-page-hero { margin-bottom: 8px; }
.sf-faq-heading-hidden { display: none !important; }
.sf-faq-page-section { margin-top: 12px; }

@media (max-width: 900px) {
  .sf-about2-hero-split,
  .sf-about2-split,
  .sf-about2-cards,
  .sf-about2-cols { grid-template-columns: 1fr; }
  .sf-about2-split-reverse { direction: ltr; }
  .sf-about2-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sf-about2-figures { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
  .sf-about2-figures,
  .sf-about2-gallery-grid { grid-template-columns: 1fr 1fr; }
}


/* Filtre marques : recherche + liste scrollable (pas tout d’un coup) */
.sf-brand-search {
  width: 100%; box-sizing: border-box; margin: 0 0 10px; padding: 9px 11px;
  border: 1px solid var(--sf-line, #d5dde3); border-radius: 8px;
  background: #fff; font: inherit; font-size: 13px; color: var(--sf-ink, #111827);
}
.sf-brand-search:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(27,95,168,.12); }
.sf-brand-filter-list {
  max-height: 220px; overflow-y: auto; overscroll-behavior: contain;
  padding-right: 2px;
}
.sf-brand-opt.is-hidden-brand { display: none !important; }
.sf-brand-filter-empty { display: none; margin: 6px 2px 0; font-size: 12.5px; color: #6b7280; }
.sf-brand-filter-empty.is-visible { display: block; }


/* Footer marque : fond clair (pas de gris, pas de pastille blanche) — logos texte noir lisibles */
.site-footer.sf-footer-brand,
.site-footer.sf-footer-brand .footer-widgets,
.site-footer.sf-footer-brand .footer-copyright {
  background: #ffffff !important;
  color: #1f2937 !important;
}
.site-footer.sf-footer-brand .widget-title,
.site-footer.sf-footer-brand a,
.site-footer.sf-footer-brand .footer-contact-block strong,
.site-footer.sf-footer-brand .sf-opening-hours strong {
  color: #111827 !important;
}
.site-footer.sf-footer-brand a:hover { color: var(--primary, #2F5D3A) !important; }
.site-footer.sf-footer-brand .sf-opening-hours {
  border-top-color: #e5e7eb !important;
  border-bottom-color: #e5e7eb !important;
  color: #4b5563 !important;
}
.site-footer.sf-footer-brand .sf-opening-hours span,
.site-footer.sf-footer-brand .footer-contact-block .contact-detail p,
.site-footer.sf-footer-brand .footer-contact-block .widget-body > p {
  color: #4b5563 !important;
}

/* Logo footer : pas de bento / pastille */
.site-footer.sf-footer-brand .footer-contact-block img,
.site-footer.sf-footer-brand .klbfooterwidget.widget_text img {
  display: block;
  max-height: 48px;
  width: auto !important;
  max-width: min(200px, 100%);
  height: auto !important;
  object-fit: contain;
  background: transparent !important;
  padding: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

/* Header / vendu par */
.header-main .custom-logo,
.header-main .site-brand img,
.header-main .site-logo img,
.site-header .custom-logo {
  max-height: 52px !important;
  width: auto !important;
  max-width: min(220px, 58vw);
  object-fit: contain;
  object-position: left center;
}
.sf-product-seller-brand-row img {
  height: 40px;
  max-width: 180px;
  width: auto;
  object-fit: contain;
  object-position: left center;
  background: transparent !important;
}

/* Flèches discrètes galerie produit (multi-images) */
.woocommerce-product-gallery.sf-gallery-has-nav .flex-viewport,
.woocommerce-product-gallery.sf-gallery-has-nav {
  position: relative;
}
.sf-gallery-nav {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
}
.sf-gallery-nav-btn {
  pointer-events: auto;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 34px;
  height: 34px;
  margin: 0;
  padding: 0;
  display: inline-grid;
  place-items: center;
  border: 0;
  border-radius: 999px;
  background: rgba(255, 255, 255, .82);
  color: #1f2937;
  box-shadow: 0 1px 4px rgba(15, 23, 42, .14);
  cursor: pointer;
  opacity: .55;
  transition: opacity .15s ease, background .15s ease, transform .15s ease;
}
.sf-gallery-nav-btn:hover,
.sf-gallery-nav-btn:focus-visible {
  opacity: 1;
  background: #fff;
  outline: none;
}
.sf-gallery-nav-prev { left: 10px; }
.sf-gallery-nav-next { right: 10px; }
@media (max-width: 767.98px) {
  .sf-gallery-nav-btn { width: 30px; height: 30px; opacity: .7; }
  .sf-gallery-nav-prev { left: 6px; }
  .sf-gallery-nav-next { right: 6px; }
}
