/*
 * Ferme des Vallons — thème enfant fdv-hummingbird (parent : hummingbird 2.1.x, Bootstrap 5.3)
 * Chargé automatiquement après theme.css du parent (FrontController::setMedia, priorité 1000).
 *
 * Hummingbird range tout son CSS dans des @layer (vendors, bs-*, ps-*, utilities).
 * Ce fichier n'est dans AUCUN layer : ses règles l'emportent sur celles du parent quelle que
 * soit leur spécificité. Exception : les utilitaires Bootstrap en !important (ex. .d-none)
 * restent prioritaires — ne pas tenter de les contrer ici, modifier plutôt le template.
 *
 * 1. Couleurs de la marque (variables CSS Bootstrap, pas de recompilation)
 * 2. En-tête : bandeau « marchés », barre haute, menu, recherche
 * 3. Accueil : diaporama
 * 4. Listes produits : badges, ruptures en niveaux de gris
 * 5. Fiche produit
 * 6. Panier / tunnel (6 bis : mini-panier)
 * 7. Pied de page
 * 8. Modules (blockwishlist, pscartbanner, blockreassurance)
 */

/* 1. Couleurs ------------------------------------------------------------ */
:root,
[data-bs-theme=light] {
  --fdv-green-dark: #2d5335;   /* vert principal (boutons, liens, prix) — contraste 8,7:1 sur blanc */
  --fdv-green-darker: #23422a; /* survol */
  --fdv-green: #587c4b;        /* bandeau (#698f5b éclairci en classic, assombri pour le contraste AA 4,8:1) */
  --fdv-green-light: #698f5b;  /* accents décoratifs */
  --fdv-green-subtle: #e6efe3;

  --bs-primary: var(--fdv-green-dark);
  --bs-primary-rgb: 45, 83, 53;
  --bs-primary-text-emphasis: var(--fdv-green-dark);
  --bs-primary-bg-subtle: var(--fdv-green-subtle);
  --bs-primary-border-subtle: #b5c9ae;
  --bs-link-color: var(--fdv-green-dark);
  --bs-link-color-rgb: 45, 83, 53;
  --bs-link-hover-color: var(--fdv-green-darker);
  --bs-link-hover-color-rgb: 35, 66, 42;
  --bs-focus-ring-color: rgba(45, 83, 53, .35);
}

.btn-primary {
  --bs-btn-bg: var(--fdv-green-dark);
  --bs-btn-border-color: var(--fdv-green-dark);
  --bs-btn-hover-bg: var(--fdv-green-darker);
  --bs-btn-hover-border-color: var(--fdv-green-darker);
  --bs-btn-active-bg: var(--fdv-green-darker);
  --bs-btn-active-border-color: var(--fdv-green-darker);
  --bs-btn-disabled-bg: var(--fdv-green-dark);
  --bs-btn-disabled-border-color: var(--fdv-green-dark);
  --bs-btn-focus-shadow-rgb: 45, 83, 53;
}

.btn-outline-primary {
  --bs-btn-color: var(--fdv-green-dark);
  --bs-btn-border-color: var(--fdv-green-dark);
  --bs-btn-hover-bg: var(--fdv-green-dark);
  --bs-btn-hover-border-color: var(--fdv-green-dark);
  --bs-btn-active-bg: var(--fdv-green-dark);
  --bs-btn-active-border-color: var(--fdv-green-dark);
  --bs-btn-disabled-color: var(--fdv-green-dark);
  --bs-btn-disabled-border-color: var(--fdv-green-dark);
  --bs-btn-focus-shadow-rgb: 45, 83, 53;
}

.btn-link,
.accordion,
.pagination,
.btn-close { --bs-btn-focus-shadow-rgb: 45, 83, 53; --bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(45, 83, 53, .25); --bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(45, 83, 53, .25); }
.dropdown-menu { --bs-dropdown-link-active-bg: var(--fdv-green-dark); }
.list-group { --bs-list-group-active-bg: var(--fdv-green-dark); --bs-list-group-active-border-color: var(--fdv-green-dark); }
.nav-pills { --bs-nav-pills-link-active-bg: var(--fdv-green-dark); }
.progress, .progress-stacked { --bs-progress-bar-bg: var(--fdv-green-dark); }

.form-check-input:checked,
.form-check-input[type=checkbox]:indeterminate {
  background-color: var(--fdv-green-dark);
  border-color: var(--fdv-green-dark);
}
.form-control:focus,
.form-select:focus,
.form-check-input:focus {
  border-color: var(--fdv-green-light);
  box-shadow: 0 0 0 .25rem rgba(45, 83, 53, .25);
}
.form-range::-webkit-slider-thumb { background-color: var(--fdv-green-dark); }
.form-range::-moz-range-thumb { background-color: var(--fdv-green-dark); }

/* 2. En-tête --------------------------------------------------------------- */
.fdv-banner {
  background-color: var(--fdv-green);
  color: #fff;
  text-align: center;
}
.fdv-banner__text {
  margin: 0 auto;
  padding: .375rem 1rem;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.5;
}
.fdv-banner__link,
.fdv-banner__link:hover,
.fdv-banner__link:focus {
  color: #fff;
  text-decoration: underline;
}
/* Mobile : texte sur 1 à 2 lignes selon la largeur ; hauteur de 2 lignes réservée d emblée pour éviter un décalage de mise en page
   (CLS) quand la police Inter remplace la police système. */
@media (max-width: 575.98px) {
  .fdv-banner {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: calc(2 * 1.35 * .8125rem + .5rem);
  }
  .fdv-banner__text {
    font-size: .8125rem;
    line-height: 1.35;
    padding-block: .25rem;
  }
}

.header-bottom .navbar-brand .logo { max-height: 3rem; max-width: 8.5rem; }
@media (min-width: 768px) {
  .header-bottom .navbar-brand .logo { max-width: 11rem; }
}

.ps-mainmenu__tree-link { text-transform: uppercase; font-weight: 500; }

/* 2 ter. En-tête condensé au défilement (templates/_partials/header.tpl, custom.js, retour client du 08/10).
   L'en-tête reste « sticky » mais décalé vers le haut de la hauteur du bandeau + ligne « Appelez-nous » (--fdv-hdr-hide,
   mesurée en JS) : ces deux bandes défilent avec la page, sans saut de mise en page. Une fois collé, les icônes compte et
   panier apparaissent à côté de la recherche (desktop ; en mobile elles y sont déjà). */
.header { top: calc(-1 * var(--fdv-hdr-hide, 0px)); transition: top .3s ease, box-shadow .3s ease; }
/* En remontant la page : l'en-tête complet (bandeau, « Appelez-nous », Connexion / Panier) redescend (custom.js). */
.fdv-hdr-reveal .header { top: 0; box-shadow: 0 .25rem 1rem -.5rem rgba(0, 0, 0, .18); }
.fdv-hdr-quick { display: none; }
@media (min-width: 768px) {
  .fdv-hdr-stuck .header { box-shadow: 0 .25rem 1rem -.5rem rgba(0, 0, 0, .18); }
  /* Icônes identiques à celles de la ligne du haut (même taille, même pastille), sans le libellé ; entrée en douceur :
     la zone s'ouvre (largeur) pendant que les icônes apparaissent en fondu. */
  .fdv-hdr-quick {
    display: flex; order: 3; gap: .75rem; max-width: 0; padding-inline: 0; overflow: hidden; opacity: 0; visibility: hidden;
    transform: translateX(.5rem);
    transition: max-width .35s ease, padding .35s ease, opacity .25s ease, transform .35s ease, visibility 0s linear .35s;
  }
  .fdv-hdr-stuck .fdv-hdr-quick {
    max-width: 10rem; padding-inline: calc(var(--bs-gutter-x) * .5); opacity: 1; visibility: visible; transform: none;
    transition: max-width .35s ease, padding .35s ease, opacity .25s ease .1s, transform .35s ease, visibility 0s;
  }
  .fdv-hdr-quick .header-block__action-btn { display: flex; align-items: center; gap: .35rem; white-space: nowrap; }
}
@media (prefers-reduced-motion: reduce) {
  .header, .fdv-hdr-quick { transition: none; }
}

/* 2 bis. Menu principal (surcharge modules/ps_mainmenu/ps_mainmenu.tpl) ----------------------------------
   Desktop (≥ 1200 px) : le menu passe sur sa propre ligne, pleine largeur, sous le logo et la recherche
   (7 entrées). Méga-menu : sous-catégories en colonnes à gauche, image à droite (changée au survol / focus). */
@media (min-width: 1200px) {
  .header-bottom { position: relative; }
  .header-bottom__row { flex-wrap: wrap; }
  .header-bottom .ps-mainmenu--desktop {
    order: 10;
    flex: 0 0 100%;
    max-width: 100%;
    border-top: 1px solid var(--bs-border-color);
    margin-top: .5rem;
  }
  .ps-mainmenu:is(.ps-mainmenu--desktop) .ps-mainmenu__desktop { width: 100%; }
  .ps-mainmenu:is(.ps-mainmenu--desktop) .ps-mainmenu__tree { justify-content: space-between; gap: 0; flex-wrap: nowrap; }
  .ps-mainmenu:is(.ps-mainmenu--desktop) .ps-mainmenu__tree > li .ps-mainmenu__tree-link {
    padding: .9rem .125rem .9rem .375rem;
    color: var(--bs-body-color);
    font-size: .875rem;
    white-space: nowrap;
  }
  .ps-mainmenu:is(.ps-mainmenu--desktop) .ps-mainmenu__tree > li .ps-mainmenu__tree-dropdown-toggle { padding: .9rem .25rem .9rem 0; color: var(--bs-body-color); }
  .ps-mainmenu:is(.ps-mainmenu--desktop) .ps-mainmenu__tree > li:hover .ps-mainmenu__tree-link,
  .ps-mainmenu:is(.ps-mainmenu--desktop) .ps-mainmenu__tree > li.current .ps-mainmenu__tree-link { color: var(--fdv-green-dark); }
  .ps-mainmenu:is(.ps-mainmenu--desktop) .ps-mainmenu__tree > li { position: static; border-bottom: 3px solid transparent; }
  .ps-mainmenu:is(.ps-mainmenu--desktop) .ps-mainmenu__tree > li:hover,
  .ps-mainmenu:is(.ps-mainmenu--desktop) .ps-mainmenu__tree > li:has([aria-expanded="true"]) { border-bottom-color: var(--fdv-green-dark); }
}
.ps-mainmenu:is(.ps-mainmenu--desktop) .submenu.fdv-mega { border-top-color: var(--fdv-green-subtle); }
/* Panneau : en-tête (catégorie + « Tout voir » à droite) puis une colonne par sous-catégorie (titre + produits).
   --fdv-cols (posé par le template) : n ≤ 6 → une ligne de n colonnes ; 7-8 → 4 par ligne. Colonnes de largeur
   fixe (13rem au plus, réduites pour tenir sur une ligne) ; le panneau prend la largeur de ses colonnes : pas de
   colonne vide. Pas d'image. Survol comme les liens du site : texte vert de la marque + soulignement, sans fond. */
.fdv-mega__inner {
  --fdv-col-w: 13rem;
  --fdv-gap: 2rem;
  width: 100%;
  max-width: max(32rem, calc(var(--fdv-cols) * var(--fdv-col-w) + (var(--fdv-cols) - 1) * var(--fdv-gap)));
  margin-inline: auto;
  padding-block: 1.25rem 1.5rem;
}
.fdv-mega__head {
  display: flex;
  align-items: baseline;
  justify-content: flex-end; /* pas de titre (doublon avec l'onglet) : seul « Tout voir » à droite */
  gap: 1rem;
  margin-bottom: .75rem;
}
.fdv-mega__all { color: var(--fdv-green-dark); font-weight: 500; text-decoration: none; white-space: nowrap; }
.fdv-mega__all:hover { color: var(--fdv-green-darker); text-decoration: underline; text-underline-offset: .2em; }
.fdv-mega__arrow { display: inline-block; margin-left: .375rem; transition: transform .2s ease; }
.fdv-mega__all:hover .fdv-mega__arrow { transform: translateX(.2rem); }
.fdv-mega__cols {
  display: grid;
  grid-template-columns: repeat(var(--fdv-cols), minmax(0, var(--fdv-col-w)));
  justify-content: space-between;
  gap: 1.5rem var(--fdv-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}
.fdv-mega__col { min-width: 0; }
.fdv-mega__heading {
  display: block;
  margin-bottom: .375rem;
  color: var(--bs-body-color);
  font-weight: 600;
  line-height: 1.3;
  text-decoration: none;
}
.fdv-mega__list { margin: 0; padding: 0; list-style: none; }
.fdv-mega__link {
  display: block;
  padding: .1875rem 0;
  color: var(--bs-secondary-color);
  font-size: .9375rem;
  line-height: 1.35;
  text-decoration: none;
}
.fdv-mega__link--cat { font-weight: 500; color: var(--bs-body-color); }
.fdv-mega__link--more { color: var(--fdv-green-dark); font-size: .875rem; }
.fdv-mega__heading:hover,
.fdv-mega__heading.is-current,
.fdv-mega__link:hover {
  color: var(--fdv-green-dark);
  text-decoration: underline;
  text-underline-offset: .2em;
  text-decoration-thickness: 1px;
}
.fdv-mega__heading:focus-visible,
.fdv-mega__link:focus-visible,
.fdv-mega__all:focus-visible { outline: .125rem solid var(--fdv-green-dark); outline-offset: .125rem; border-radius: var(--bs-border-radius-sm); }
@media (prefers-reduced-motion: reduce) { .fdv-mega__arrow { transition: none; } }

/* Mobile : accordéon (offcanvas de hummingbird), sans image */
.ps-mainmenu--mobile .offcanvas-header { padding-inline: 1rem .75rem; }
.ps-mainmenu:is(.ps-mainmenu--mobile) .fdv-acc__nav { height: auto; flex: 1 1 auto; overflow-y: auto; padding: 0 1rem; }
.fdv-acc { margin: 0; padding: 0; list-style: none; }
.fdv-acc__nav > .fdv-acc > .fdv-acc__item { border-bottom: 1px solid var(--bs-border-color); }
.fdv-acc__summary,
.fdv-acc__link--top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 3rem;
  padding: .75rem 0;
  color: var(--bs-body-color);
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  list-style: none;
}
.fdv-acc__summary::-webkit-details-marker { display: none; }
.fdv-acc__summary::after {
  content: "";
  flex: 0 0 auto;
  width: .55rem;
  height: .55rem;
  margin: 0 .35rem 0 1rem;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-25%) rotate(45deg);
  transition: transform .2s ease;
}
.fdv-acc__details[open] > .fdv-acc__summary::after { transform: translateY(25%) rotate(-135deg); }
.fdv-acc__details[open] > .fdv-acc__summary { color: var(--fdv-green-dark); }
.fdv-acc__summary:focus-visible,
.fdv-acc__link:focus-visible { outline: .125rem solid var(--fdv-green-dark); outline-offset: .125rem; border-radius: var(--bs-border-radius-sm); }
.fdv-acc--sub { padding: 0 0 .5rem .75rem; }
.fdv-acc--sub .fdv-acc__link { display: block; min-height: 2.75rem; padding: .6rem 0; color: var(--bs-secondary-color); text-decoration: none; }
.fdv-acc--sub .fdv-acc__summary { min-height: 2.75rem; padding: .6rem 0; font-weight: 500; }
.fdv-acc__details--d1 > .fdv-acc--sub { padding-left: .875rem; border-left: 1px solid var(--bs-border-color); margin-left: .125rem; }
.fdv-acc__link--product { font-size: .9375rem; }
.fdv-acc__link--more { color: var(--fdv-green-dark) !important; font-size: .9375rem; }
.fdv-acc__link--all { font-weight: 600; color: var(--fdv-green-dark) !important; }
.fdv-acc [aria-current="page"] { color: var(--fdv-green-dark); font-weight: 600; }
@media (prefers-reduced-motion: reduce) { .fdv-acc__summary::after { transition: none; } }

/* 3. Accueil : diaporama — la légende se place sur l'aplat vert à gauche des visuels */
.ps-imageslider__figcaption.carousel-caption {
  backdrop-filter: none;
  background: transparent;
  left: 9%;
  right: auto;
  bottom: auto;
  top: 50%;
  transform: translateY(-50%);
  max-width: 34%;
  padding: 0;
  text-align: left;
  color: #fff;
}
.ps-imageslider__figcaption h2 { color: #fff; font-size: 2.5rem; font-weight: 700; margin-bottom: .25rem; }
.ps-imageslider__figcaption h3 { font-size: 1.125rem; margin-bottom: .5rem; }
.ps-imageslider__figcaption p { font-size: .8125rem !important; color: #fff; }
.ps-imageslider__figcaption h2,
.ps-imageslider__figcaption p { text-shadow: 0 1px 3px rgba(0, 0, 0, .35); }

/* 3 bis. Accueil : accroche mobile et bandeau de réassurance (templates/index.tpl, retour client du 06/10).
   Les sections de displayHome sont des enfants directs de #content : on les met en colonne pour placer le bandeau
   juste sous le diaporama, l'accroche mobile en tête. Diaporama masqué sur mobile (remplacé par l'accroche). */
.page-content--home { display: flex; flex-direction: column; }
.page-content--home > * { order: 3; }
.page-content--home > .fdv-hero { order: 0; }
.page-content--home > .ps-imageslider,
.page-content--home > #ps_imageslider,
.page-content--home > section:has(#ps_imageslider) { order: 1; }
.page-content--home > .fdv-assurance-wrap { order: 2; }
/* Carrousel « temps forts » (fdv_homeslider, remplace ps_imageslider quand il est activé) : en tête sur toutes les
   tailles ; sur mobile, l'accroche est réduite à ses deux boutons, placés juste sous le carrousel. */
.page-content--home > .fdv-hs { order: 1; }
.page-content--home > .fdv-hero--compact { order: 2; padding-top: 0; padding-bottom: 1.25rem; }
@media (max-width: 767.98px) {
  .page-content--home > .ps-imageslider,
  .page-content--home > section:has(#ps_imageslider) { display: none; }
}
.fdv-hero { padding-top: 1.25rem; padding-bottom: 1rem; }
.fdv-hero__title { margin: 0 0 .375rem; font-size: 1.5rem; font-weight: 700; line-height: 1.2; color: var(--bs-body-color); }
.fdv-hero__sub { margin: 0 0 1rem; color: var(--bs-secondary-color); }
.fdv-hero__actions { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.fdv-hero__actions .btn { min-height: 3rem; display: flex; align-items: center; justify-content: center; font-weight: 600; }
.fdv-assurance {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
  margin: 1.5rem 0 2rem;
  padding: 1rem 1.25rem;
  list-style: none;
  background: var(--fdv-green-subtle);
  border-radius: var(--bs-border-radius-lg);
}
.fdv-assurance__item { display: flex; align-items: center; gap: .625rem; font-size: .9375rem; line-height: 1.3; }
.fdv-assurance__icon { flex: 0 0 auto; font-size: 1.75rem; color: var(--fdv-green-dark); }
@media (max-width: 991.98px) { .fdv-assurance { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767.98px) {
  .fdv-assurance { margin: 0 0 1.5rem; padding: .875rem 1rem; gap: .75rem; }
  .fdv-assurance__item { font-size: .875rem; }
}

/* 4. Listes produits --------------------------------------------------------- */
/* Hiérarchie nom / prix (retour client 06/10) : le nom du produit porte l'accent (gras), le prix reste lisible mais en
   graisse fine 300 (retour client du 06/10 : un prix en gras est perçu comme plus élevé). */
.product-miniature__title { color: var(--bs-body-color); font-weight: 700; }
.product-miniature__title:hover { color: var(--fdv-green-dark); }
.product-miniature__price { color: var(--fdv-green-dark); font-weight: 300; }
/* quantité indicative et prix au kilo sous le prix (fdv_productinfo) */
.product-miniature__qty { margin-top: .125rem; font-size: .8125rem; color: var(--bs-secondary-color); }
.page-product .fdv-qty { font-weight: 600; color: var(--bs-body-color); }

/* badges : rupture en gris, nouveauté / promo en vert */
.product-flags .badge:not(.discount) { background-color: var(--fdv-green-dark); border-color: var(--fdv-green-dark); }
.product-flags .badge.out_of_stock { background-color: #636363; border-color: #636363; text-transform: uppercase; }
.product-miniature .product-flags { padding-right: 3rem; }
.product-miniature .product-flags .badge { white-space: normal; text-align: left; }
.product-flags .badge.discount { color: var(--fdv-green-dark); border-color: var(--fdv-green-dark); }
/* « Sur demande » : distinct de la rupture (gris) et des badges verts pleins — contour vert, fond clair, photo non grisée */
.product-flags .badge.fdv-on-demand { background-color: #fff; color: var(--fdv-green-dark); border: 1px solid var(--fdv-green-dark); text-transform: uppercase; }
/* Produits de saison (module fdv_seasonal) : « De saison » en vert clair, « Hors saison » en brun (contraste 7,7:1 sur blanc) */
.product-flags .badge.fdv-in-season { background-color: var(--fdv-green-subtle); color: var(--fdv-green-dark); border: 1px solid var(--fdv-green-dark); text-transform: uppercase; }
.product-flags .badge.fdv-off-season { background-color: #fff; color: #6b4e16; border: 1px solid #6b4e16; text-transform: uppercase; }

/* produit épuisé : photo en niveaux de gris (remplace la classe .oos-blur de fdv-classicchild,
   sans surcharger le template de miniature grâce à :has()) */
.product-miniature:has(.badge.out_of_stock) .product-miniature__image,
.product__carousel:has(.badge.out_of_stock) .carousel-item img {
  filter: brightness(.85) grayscale(1);
}

/* sous-catégories sans image (vignette « Aucune image » retirée du template) */
.subcategory__link--with-image:not(:has(img)) { justify-content: center; text-align: center; min-height: 4.5rem; }

/* 5. Fiche produit ----------------------------------------------------------- */
.page-product .product__name { font-weight: 700; }
.page-product .product__price { color: var(--fdv-green-dark); font-weight: 300; }
.page-product .product__unit-price { color: var(--fdv-green); }
.product__thumbnail.active,
.product__thumbnail:hover { --bs-border-color: var(--fdv-green-dark); }
/* Produit « sur demande » (« Disponible à la vente » décoché, prix affiché) : encart à la place du bloc d'achat */
.fdv-on-demand-box {
  margin-bottom: 1rem;
  padding: 1rem 1.25rem;
  border: 1px solid var(--bs-primary-border-subtle);
  border-left: 4px solid var(--fdv-green-dark);
  border-radius: var(--bs-border-radius);
  background: var(--fdv-green-subtle);
}
.fdv-on-demand-box__title { display: flex; align-items: center; gap: .5rem; margin: 0 0 .25rem; font-weight: 600; color: var(--fdv-green-dark); }
.fdv-on-demand-box__text { margin: 0 0 .75rem; }
.fdv-on-demand-box__tel { font-weight: 600; white-space: nowrap; }
.fdv-on-demand-box__btn { display: inline-flex; align-items: center; gap: .5rem; }
.fdv-off-season-box { border-left-color: #6b4e16; background: #faf6ee; }
/* Épuisé : même encart, ton neutre ; actions côte à côte */
.fdv-oos-box { border-left-color: #636363; background: #f5f5f4; }
.fdv-oos-box .fdv-on-demand-box__title { color: #3d3d3d; }
.fdv-on-demand-box__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; }
.fdv-on-demand-box__alt { padding-inline: 0; }
/* produit épuisé : pas de plage de livraison (fdv_delivery) puisqu'on ne peut pas commander */
.js-product-actions:has(.fdv-oos-box) .fdv-delivery { display: none !important; }
/* en saison : période du module fdv_seasonal */
.fdv-season-line { display: flex; align-items: center; gap: .375rem; margin: 0 0 .5rem; font-size: .9375rem; color: var(--fdv-green-dark); font-weight: 600; }
.fdv-season-line .material-icons { font-size: 1.125rem; }
.fdv-off-season-box .fdv-on-demand-box__title { color: #6b4e16; }
/* Rôtis au poids (fdv_bulkweight) passés « sur demande » : le sélecteur de poids du module (créé en JS) n'a plus
   d'objet puisque la commande en ligne est fermée — masqué, le prix au kilo reste affiché. */
.js-product-actions:has(.fdv-on-demand-box) .fdv-bw-widget { display: none !important; }

/* Réassurance juste sous le bloc d'achat (déplacée depuis le bas de la fiche) : 3 points sur une ligne, compacts */
.fdv-reassurance-top { margin-top: 1rem; }
.fdv-reassurance-top .blockreassurance_product,
.fdv-reassurance-top .blockreassurance-product { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; margin: 0; padding: .75rem 0 0; border-top: 1px solid var(--bs-border-color); }
.fdv-reassurance-top .blockreassurance_product > div,
.fdv-reassurance-top .blockreassurance-product > div { display: flex; align-items: center; gap: .5rem; margin: 0; font-size: .875rem; }
.fdv-reassurance-top img,
.fdv-reassurance-top svg { width: 1.75rem; height: 1.75rem; }
/* blockreassurance (PS 9) : balisage .blockreassurance--product > .reassurance (image + titre + description).
   Liste aérée sous le bloc d'achat, icônes à leur taille de lecture (retour client du 09/10 : « tout petit »). */
.fdv-reassurance-top .blockreassurance--product { display: grid; gap: .875rem; margin: 0; padding: 1rem 0 0; border-top: 1px solid var(--bs-border-color); }
.fdv-reassurance-top .reassurance { display: grid; grid-template-columns: 3rem minmax(0, 1fr); align-items: center; gap: .875rem; margin: 0; }
.fdv-reassurance-top .reassurance__image img { width: 3rem; height: 3rem; object-fit: contain; }
.fdv-reassurance-top .reassurance__content { display: flex; flex-direction: column; gap: .125rem; line-height: 1.35; }
.fdv-reassurance-top .reassurance__content br { display: none; }
.fdv-reassurance-top .reassurance__title { font-weight: 600; }
.fdv-reassurance-top .reassurance__desc { color: var(--bs-secondary-color); font-size: .875rem; }

/* Barre d'achat fixe (mobile) */
.fdv-buybar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1030;
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .625rem 1rem calc(.625rem + env(safe-area-inset-bottom));
  background: #fff;
  border-top: 1px solid var(--bs-border-color);
  box-shadow: 0 -.25rem 1rem rgba(0, 0, 0, .08);
}
.fdv-buybar[hidden] { display: none; }
.fdv-buybar__info { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; line-height: 1.25; }
.fdv-buybar__name { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fdv-buybar__price { color: var(--fdv-green-dark); font-weight: 300; }
.fdv-buybar__btn { flex: 0 0 auto; display: inline-flex; align-items: center; gap: .375rem; min-height: 3rem; }
body.fdv-has-buybar { padding-bottom: 4.5rem; }
@media (min-width: 768px) { .fdv-buybar { display: none !important; } }

/* Détails du produit : lignes fdv_productinfo (ingrédients longs sur toute la largeur disponible) */
.details__item--fdv-ingredients .details__right,
.details__item--fdv-allergens .details__right,
.details__item--fdv-packaging .details__right,
.details__item--fdv-storage .details__right { text-align: start; }
.details__item--fdv-ingredients strong { font-weight: 700; }

/* 6. Panier / tunnel ---------------------------------------------------------- */
.cart-summary .btn-primary,
.cart-detailed-actions .btn-primary { text-transform: uppercase; }

/* 6 bis. Mini-panier (modules/ps_shoppingcart/ps_shoppingcart.tpl, custom.js) */
.fdv-minicart { --bs-offcanvas-width: min(420px, 100vw); }
.fdv-minicart .offcanvas-header { border-bottom: 1px solid var(--bs-border-color); }
.fdv-minicart .offcanvas-title { margin: 0; color: var(--fdv-green-dark); }
.fdv-minicart__badge { font-weight: 400; color: var(--bs-secondary-color); font-size: .85em; }
.fdv-minicart .offcanvas-body { display: flex; flex-direction: column; padding: 0; transition: opacity .15s; }
.fdv-minicart .offcanvas-body.is-busy { opacity: .55; pointer-events: none; }
.fdv-minicart__error { margin: .75rem 1rem 0; padding: .5rem .75rem; border-radius: 4px; background: #f8eeee; color: #8a2e2e; font-size: .9rem; }
.fdv-minicart__list { list-style: none; margin: 0; padding: 0 1rem; flex: 1 1 auto; overflow-y: auto; }
.fdv-minicart__item { display: flex; gap: .75rem; padding: .9rem 0; border-bottom: 1px solid var(--bs-border-color); }
.fdv-minicart__item:last-child { border-bottom: 0; }
.fdv-minicart__img { flex: none; width: 72px; }
.fdv-minicart__img img { width: 72px; height: 72px; object-fit: cover; border-radius: 4px; background: #f6f6f6; }
.fdv-minicart__info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .15rem; font-size: .9rem; }
.fdv-minicart__name { font-weight: 700; color: var(--bs-body-color); text-decoration: none; line-height: 1.3; }
.fdv-minicart__name:hover { color: var(--fdv-green-dark); text-decoration: underline; }
.fdv-minicart__attr, .fdv-minicart__unit, .fdv-minicart__info .fdv-bw-cart-tol { color: var(--bs-secondary-color); font-size: .85rem; }
.fdv-minicart__row { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-top: .35rem; }
.fdv-minicart__qty { display: inline-flex; align-items: center; border: 1px solid var(--bs-border-color); border-radius: 4px; }
.fdv-minicart__step { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border: 0; background: none; color: var(--fdv-green-dark); }
.fdv-minicart__step:hover { background: var(--fdv-green-subtle); }
.fdv-minicart__step .material-icons { font-size: 1.15rem; }
.fdv-minicart__count { min-width: 2ch; text-align: center; font-weight: 600; }
.fdv-minicart__total { font-weight: 700; color: var(--fdv-green-dark); white-space: nowrap; }
.fdv-minicart__remove { align-self: flex-start; padding: 0; border: 0; background: none; color: var(--bs-secondary-color); font-size: .8rem; text-decoration: underline; }
.fdv-minicart__remove:hover { color: #8a2e2e; }
.fdv-minicart__empty { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .5rem; padding: 2rem 1rem; color: var(--bs-secondary-color); }
.fdv-minicart__empty .material-icons { font-size: 3rem; opacity: .4; }
.fdv-minicart__foot { flex: none; display: grid; gap: .5rem; padding: 1rem; border-top: 1px solid var(--bs-border-color); background: #fafaf8; }
.fdv-minicart__sum { display: flex; justify-content: space-between; align-items: baseline; font-size: 1.05rem; }
.fdv-minicart__sum strong { color: var(--fdv-green-dark); font-size: 1.2rem; }
.fdv-minicart__note { margin: 0 0 .25rem; font-size: .8rem; color: var(--bs-secondary-color); }

/* Pages légales : encadrés (garanties légales, formulaire de rétractation) et tableaux, bordure complète. */
.fdv-legal-box { margin: 1rem 0; padding: 1rem 1.25rem; border: 1px solid var(--bs-border-color); border-radius: var(--bs-border-radius); background: var(--bs-tertiary-bg, #f8f9fa); }
.fdv-legal-box p:last-child { margin-bottom: 0; }
.page-cms .table { font-size: .9rem; }
@media (max-width: 767.98px) { .page-cms .table { display: block; overflow-x: auto; } }

/* 7. Pied de page ------------------------------------------------------------- */
.footer__main { background: var(--fdv-green-dark); }
.footer__main a { color: #e9efe7; }
.footer__main a:hover,
.footer__main a:focus { color: #fff; text-decoration: underline; }
.footer__main .footer-block__title { color: #fff; text-transform: uppercase; }
.copyright, .copyright a { color: #e9efe7; }
/* 5 blocs (Produits, Notre société, Nos recettes, Votre compte, Informations) sur une seule ligne en grand écran */
@media (min-width: 1200px) {
  .footer__main-top > .footer-block,
  .footer__main-top > [class*="col-"] { flex: 1 1 0; max-width: none; width: auto; }
}
.ps-socialfollow a { color: var(--fdv-green-dark); }
.ps-socialfollow a:hover { color: var(--fdv-green-darker); }

/* 8. Modules --------------------------------------------------------------- */
/* blockwishlist (non supporté officiellement par hummingbird, gardé actif) :
   sa modale Bootstrap 3 reste visible avec Bootstrap 5 (hummingbird#994) */
.wishlist-modal { display: none !important; }
.wishlist-modal.show { display: block !important; }

/* pscartbanner (« Récupérer votre commande sur nos marchés ! », hook displayContentWrapperTop).
   La couleur de bordure reste celle réglée dans le module (style en ligne du module). */
.card.pscartbanner { margin-bottom: 1.5rem; }
.pscartbanner .card-block { padding: 1rem 1.25rem; }
.pscartbanner .card-block p:last-child { margin-bottom: 0; }
.pscartbanner .material-icons { vertical-align: middle; color: var(--fdv-green-dark); }

/* blockwishlist chargé à la demande (assets/js/fdv-wishlist-loader.js) : cœur provisoire dessiné avant le chargement du
   module. Styles du composant Vue du module (injectés par son JS, absents tant qu'il n'est pas chargé), recopiés pour
   un rendu identique ; ceux de theme.css (!important) s'appliquent par-dessus comme pour le vrai bouton. */
.fdv-wl-ph.wishlist-button-product { margin-left: 1.25rem; }
.fdv-wl-ph.wishlist-button-add {
  display: flex; align-items: center; justify-content: center;
  height: 2.5rem; width: 2.5rem; min-width: 2.5rem; padding-top: .1875rem;
  background-color: #fff; box-shadow: .125rem -.125rem .25rem 0 rgba(0, 0, 0, .2); border-radius: 50%;
  cursor: pointer; transition: .2s ease-out; border: none;
}
.fdv-wl-ph.wishlist-button-add:hover { opacity: .7; }
.fdv-wl-ph.wishlist-button-add:active { transform: scale(1.2); }
.fdv-wl-ph.wishlist-button-add i { color: #7a7a7a; }
.fdv-wl-ph.fdv-wl-loading { opacity: .6; cursor: progress; }

/* 9. Police d'icônes ------------------------------------------------------- */
/* Sous-ensemble de Material Icons (210 icônes : celles du site + marge de sécurité, 11 Ko au lieu de 125 Ko),
   ligatures (rlig) et points de code conservés. Même famille et mêmes descripteurs que la règle du parent
   (theme.css) : déclarée après, elle la remplace et la police complète n'est plus téléchargée.
   Liste, outil de régénération et vérification : post-bascule/FRONT.md, tools/subset-material-icons.sh,
   tools/icons-check.mjs. Préchargée par assets/preload.html.
   Retour arrière : supprimer ce bloc et assets/preload.html (la police complète du parent revient). */
@font-face {
  font-display: swap;
  font-family: "Material Icons";
  font-style: normal;
  font-weight: 400;
  src: url(../fonts/MaterialIcons-fdv-1.woff2) format("woff2"), url(../fonts/MaterialIcons-fdv-1.woff) format("woff");
}
