/* P2.9 — Polices de la boutique 1.6, relevées dans son <head> :
   Dosis 400/600/800 et Lato 700, servies par Google Fonts. */
@import url('https://fonts.googleapis.com/css2?family=Dosis:wght@400;600;800&family=Lato:wght@700&display=swap');

/* ══════════════════════════════════════════════════════════════════
   France Insectes — identité visuelle
   Reprise de la charte de la boutique 1.6 (voir docs/reference/HOME-REFERENCE.md)
   ══════════════════════════════════════════════════════════════════ */
:root {
  /* Vert dominant de la marque — boutons, prix, accents */
  --fi-vert:          #8DC63F;
  --fi-vert-fonce:    #6FA22B;
  --fi-vert-clair:    #F1F8E6;

  /* Les trois univers, repris des boutons d'en-tête */
  --fi-animalerie:    #F39200;   /* orange */
  --fi-peche:         #29ABE2;   /* bleu   */
  --fi-jardin:        #8DC63F;   /* vert   */

  /* Navigation principale */
  --fi-nav-fond:      #3B3B3B;   /* P2.7 — teinte relevée sur la 1.6 */
  --fi-nav-texte:     #FFFFFF;
  --fi-nav-actif:     var(--fi-vert);

  /* Bandeau d'annonce */
  --fi-annonce:       #E30613;
  /* Prix : couleur relevée sur customer-s5.css de la boutique 1.6 */
  --fi-prix:          #FF0000;

  --fi-texte:         #333333;
  --fi-texte-doux:    #777777;
  --fi-bord:          #E5E5E5;
  --fi-fond:          #FFFFFF;
  --fi-fond-doux:     #F7F7F7;

  --fi-rayon:         3px;
  --fi-ombre:         0 1px 3px rgba(0,0,0,.08);
}

body { color: var(--fi-texte); background: var(--fi-fond); }

/* ── Barre supérieure ─────────────────────────────────────────── */
.fi-topbar {
  background: var(--fi-nav-fond); color: #DDD;
  font-size: .82rem; padding: .45rem 0;
}
.fi-topbar a { color: #DDD; }
.fi-topbar a:hover { color: var(--fi-vert); }
.fi-topbar__accroche { text-align: center; }

/* ── Les trois univers ────────────────────────────────────────── */
.fi-univers { display: flex; gap: .4rem; margin: .6rem 0; }
/* Les univers se rendent en <span> tant qu'aucune destination n'est
   configurée — voir _partials/univers.tpl. Les habillages visent donc les deux
   balises, sans quoi les trois bandes de couleur disparaîtraient. */
.fi-univers a, .fi-univers span {
  flex: 1; text-align: center; padding: .55rem 1rem;
  color: #FFF; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em; border-radius: var(--fi-rayon); text-decoration: none;
}
.fi-univers a:hover { filter: brightness(1.08); }
.fi-univers span { cursor: default; }
.fi-univers .fi-univers--animalerie { background: var(--fi-animalerie); }
.fi-univers .fi-univers--peche      { background: var(--fi-peche); }
.fi-univers .fi-univers--jardin     { background: var(--fi-jardin); }

/* ── Navigation principale ────────────────────────────────────── */
.fi-nav { background: var(--fi-nav-fond); }
.fi-nav a {
  color: var(--fi-nav-texte); text-transform: uppercase;
  font-weight: 600; font-size: .86rem; padding: .8rem 1rem; display: inline-block;
}
.fi-nav a:hover, .fi-nav .current a { color: var(--fi-nav-actif); }

/* ── Bandeau d'annonce ────────────────────────────────────────── */
.fi-annonce {
  color: var(--fi-annonce); text-align: center; font-weight: 700;
  font-size: 1.05rem; line-height: 1.45; padding: 1.1rem 1rem;
  background: var(--fi-fond);
}
.fi-annonce p { margin: 0 0 .2rem; }

/* ── Titres de section ────────────────────────────────────────── */
.fi-section__titre {
  text-align: center; text-transform: uppercase; font-weight: 700;
  letter-spacing: .03em; margin: 2rem 0 1.4rem; color: var(--fi-texte);
}

/* ── Produits ─────────────────────────────────────────────────── */
.product-price, .price { color: var(--fi-prix); font-weight: 700; }
.btn-primary, .add-to-cart {
  background: var(--fi-vert); border-color: var(--fi-vert); color: #FFF;
}
.btn-primary:hover, .add-to-cart:hover {
  background: var(--fi-vert-fonce); border-color: var(--fi-vert-fonce);
}
.product-miniature { border: 1px solid var(--fi-bord); border-radius: var(--fi-rayon); }
.product-miniature:hover { box-shadow: var(--fi-ombre); }

/* ── Bloc éditorial ───────────────────────────────────────────── */
.fi-editorial { background: var(--fi-vert-clair); padding: 2.2rem 1rem; text-align: center; }
.fi-editorial h2 { text-transform: uppercase; font-weight: 800; letter-spacing: .05em; }

/* ── Pied de page ─────────────────────────────────────────────── */
.fi-footer { background: #FAFAFA; color: #666; padding: 2.2rem 0 1rem; }
.fi-footer a { color: #444; }
.fi-footer a:hover { color: #3B3B3B; }
.fi-footer__legal { border-top: 1px solid #4A4A4A; margin-top: 1.4rem; padding-top: .9rem;
  text-align: center; font-size: .8rem; color: #999; }

/* ── Barre flottante droite ───────────────────────────────────── */
.fi-rightbar { position: fixed; right: 0; top: 42%; z-index: 900; }
.fi-rightbar a {
  display: block; background: var(--fi-vert); color: #FFF;
  padding: .7rem .55rem; text-align: center; font-size: .7rem;
  text-transform: uppercase; border-bottom: 1px solid rgba(255,255,255,.25);
}
.fi-rightbar a:hover { background: var(--fi-vert-fonce); }

/* ── Responsive ───────────────────────────────────────────────── */
@media (max-width: 767px) {
  .fi-univers { flex-direction: column; }
  .fi-annonce { font-size: .92rem; padding: .85rem .8rem; }
  .fi-nav a   { padding: .6rem .7rem; font-size: .8rem; }
}

/* ── Spécificité : Bootstrap applique une couleur héritée aux <p>,
      il faut cibler explicitement les enfants du bandeau. ───────── */
.fi-annonce,
.fi-annonce .container,
.fi-annonce p,
.fi-annonce span,
.fi-annonce div {
  color: var(--fi-annonce) !important;
  text-align: center;
}
.fi-annonce p { font-weight: 700; margin: 0 0 .25rem; }

/* La barre de navigation haute de classic est claire : on la passe
   au gris foncé de la boutique 1.6. */
.header-nav, #header .header-nav { background: var(--fi-nav-fond); color: #DDD; }
.header-nav a, #header .header-nav a { color: #DDD; }
.header-nav a:hover { color: var(--fi-vert); }
.fi-topbar__accroche { color: #DDD; font-size: .82rem; }

/* Menu principal sur fond sombre */
#header .header-top { background: #FFF; }
.menu-top, .top-menu.fi-menu,
#_desktop_top_menu .top-menu { background: var(--fi-nav-fond); }
/* P1.2 — La navigation de l'ancien site n'est PAS monochrome : chaque entrée
   a sa couleur, et trois d'entre elles ont une pastille de fond. J'avais tout
   écrasé avec un blanc uniforme. Couleurs relevées dans le <style> en ligne
   de la page d'accueil 1.6, entrée par entrée. */
.top-menu.fi-menu a,
#_desktop_top_menu .top-menu a { text-transform: uppercase; font-weight: 400; }

#lnk-insectes-reptiles > a,
#lnk-poules-oiseaux > a            { color: #FF6720 !important; }
#lnk-roule-tes-bouillettescom > a  { color: #FF0000 !important; }
#lnk-appats-de-peche > a           { color: #57B7DC !important; }
#lnk-jardinage > a                 { color: #00FF00 !important; }
#lnk-chat-chien > a                { color: #FFFFFF !important; }
#lnk-dons-centres-de-soins > a     { color: #000000 !important; background: #12B800; }
#lnk-concept-relais > a,
#lnk-liste-relais > a              { color: #FFFFFF !important; background: #FF6720; }

#lnk-insectes-reptiles > a:hover,
#lnk-poules-oiseaux > a:hover,
#lnk-roule-tes-bouillettescom > a:hover,
#lnk-appats-de-peche > a:hover,
#lnk-jardinage > a:hover           { color: #FFFFFF !important; }
#lnk-chat-chien > a:hover          { color: #06FF2E !important; }
#lnk-dons-centres-de-soins > a:hover { color: #12B800 !important; background: #FFFFFF; }
#lnk-concept-relais > a:hover,
#lnk-liste-relais > a:hover        { color: #3B3B3B !important; }

/* Prix et boutons au vert de la marque */
/* P1.5 — Les prix de l'ancien site sont ROUGES. all.css les met en vert
   #00a161, mais customer-s5.css est chargé APRÈS et impose #ff0000 : c'est
   cette dernière valeur qui s'affiche. J'avais appliqué le vert de la marque
   par erreur, sans relever la couleur d'origine. */
.product-price, .price, .product-miniature .price,
#our_price_display, .sale_percentage { color: var(--fi-prix) !important; }
.btn-primary { background-color: var(--fi-vert) !important; border-color: var(--fi-vert) !important; }
.btn-primary:hover { background-color: var(--fi-vert-fonce) !important; border-color: var(--fi-vert-fonce) !important; }

/* ── Bloc « Votre compte » ─────────────────────────────────────────
   La liste des liens de compte se déploie en permanence et chevauche
   l'accroche. On la replie et on la fait apparaître au survol, comme
   sur la boutique d'origine. */
#block_myaccount_infos { position: relative; }
#block_myaccount_infos .account-list,
#block_myaccount_infos ul.account-list {
  display: none;
  position: absolute; top: 100%; left: 0; z-index: 1000;
  min-width: 210px; padding: .5rem 0; margin: 0;
  background: #FFF; border: 1px solid var(--fi-bord);
  box-shadow: var(--fi-ombre); list-style: none;
}
#block_myaccount_infos:hover .account-list,
#block_myaccount_infos:focus-within .account-list { display: block; }
#block_myaccount_infos .account-list li a {
  display: block; padding: .4rem 1rem; color: var(--fi-texte);
  white-space: nowrap; font-size: .88rem;
}
#block_myaccount_infos .account-list li a:hover { background: var(--fi-vert-clair); color: var(--fi-vert-fonce); }
#block_myaccount_infos .myaccount-title { margin: 0; }

/* L'accroche doit rester lisible et ne pas être recouverte */
.fi-topbar__accroche { position: relative; z-index: 1; display: inline-block; line-height: 1.3; }

/* ── Bloc « LES + FRANCE INSECTES » (fiche produit) ───────────────── */
.fi-les-plus {
  /* La 1.6 rend ce bloc sur fond BLANC dans sa troisième colonne
     (#easycontent_14.block.easycontent.section), sans encadré ni filet
     latéral. C'est un encadré vert que le thème v8 avait introduit. */
  margin: 0 0 1.6rem;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
}
.fi-les-plus__titre {
  /* .block .title_block de la 1.6 : gris #666, majuscules, graisse NORMALE,
     1.333em. .section .title_block y ajoute un filet pointillé traversant
     (img/title_block_bg.png, tuile de 12x7), que le texte masque en se posant
     sur un fond blanc. Le fichier d'origine est repris tel quel. */
  color: #666;
  text-transform: uppercase;
  font-weight: 400;
  /* 1.333em sur la 1.6, dont la base est a 13 px : soit 17,3 px. La base du
     theme v8 etant a 16 px, reprendre 1.333em donnerait 21 px et ferait
     passer le titre sur deux lignes dans une colonne de 255 px. */
  font-size: 17px;
  line-height: 1.2;
  letter-spacing: 0;
  padding: 6px 0;
  margin: 0 0 6px;
  text-align: left;
  background: url('../img/fi-filet-titre.png') repeat-x left center;
}
.fi-les-plus__titre span,
.fi-les-plus__titre > * {
  display: inline-block;
  padding-right: 8px;
  background: #FFF;
}
.fi-les-plus__liste { list-style: none; margin: 0; padding: 0; }
.fi-les-plus__liste li { margin-bottom: .8rem; }
.fi-les-plus__liste li:last-child { margin-bottom: 0; }
.fi-les-plus__liste strong { display: block; color: var(--fi-texte); font-size: .95rem; }
.fi-les-plus__liste span { display: block; font-size: .86rem; color: var(--fi-texte-doux); line-height: 1.45; }

/* ── Barre supérieure : mise en page ──────────────────────────────────
   L'accroche est longue et la colonne de gauche étroite : sans contrainte
   elle passe sur deux lignes et chevauche le bloc « Votre compte ».
   On lui donne sa propre ligne, centrée, comme sur la boutique 1.6. */
/* classic impose max-height:50px sur cette barre : l'accroche placée sur sa
   propre ligne déborde alors dessous, en gris sur fond blanc. On lève la
   contrainte pour que la barre s'adapte à son contenu. */
#header .header-nav {
  padding: .35rem 0 .5rem;
  height: auto;
  max-height: none;
  min-height: 50px;
  overflow: visible;
}
#header .header-nav > .container { position: relative; }
#header .header-nav .row { align-items: center; }

.fi-topbar__accroche {
  display: block;
  width: 100%;
  text-align: center;
  font-size: .78rem;
  line-height: 1.35;
  padding: .25rem 0 0;
  color: #CFCFCF;
  white-space: normal;
}

/* Le titre « Votre compte » ne doit pas empiéter sur l'accroche */
#block_myaccount_infos .myaccount-title a { font-size: .82rem; letter-spacing: .02em; }
#header .header-nav .right-nav { display: flex; align-items: center; justify-content: flex-end; gap: .5rem; }

@media (min-width: 992px) {
  /* l'accroche occupe toute la largeur sous la rangée de liens */
  #header .header-nav .row > [class^="col-"] { padding-top: 0; padding-bottom: 0; }
}
@media (max-width: 991px) {
  .fi-topbar__accroche { font-size: .72rem; }
}

/* ── Pied de page ─────────────────────────────────────────────────── */
/* Le retrait lateral doit etre conserve : une .row imbriquee porte des marges
   negatives de 15 px que le padding du conteneur compense. En le mettant a 0,
   la rangee debordait de 15 px de chaque cote et faisait defiler la page
   horizontalement en telephone. */
.fi-footer__cols { background: #FAFAFA; border-top: 1px solid #FFF; padding: 2rem 15px 1rem; }
.fi-footer__col { margin-bottom: 1.4rem; }
.fi-footer__titre {
  color: #666; text-transform: uppercase; font-weight: 700;
  font-size: .95rem; letter-spacing: .04em; margin: 0 0 .7rem;
}
.fi-footer__texte { font-size: .84rem; line-height: 1.55; color: #666; margin: 0; }
.fi-footer__texte a { color: #444; }
.fi-footer__texte a:hover { text-decoration: underline; }

/* P1.1 — Le pied de page de l'ancien site est CLAIR, pas sombre.
   J'avais écrit ici « classic est clair : on le passe au gris foncé de la 1.6 »,
   ce qui était une supposition fausse. Relevé réel sur all.css :
   #footer-top{background:#fafafa}, corps blanc, titres #666, liens #444.
   Seule la bande basse #footer_info est grise. */
#footer, .footer-container { background: #FFF; color: #666; }
#footer a, .footer-container a { color: #444; }
#footer a:hover, .footer-container a:hover { color: #3B3B3B; }
#footer .h3, #footer h3, .footer-container .h3 {
  color: #666 !important; text-transform: uppercase;
  font-size: .95rem; letter-spacing: .04em;
}
.copyright, #footer .copyright, .footer-container .copyright {
  border-top: 1px solid #E5E5E5; margin-top: 1.2rem; padding-top: .9rem;
  text-align: center; font-size: .8rem; color: #888;
}

/* ══════════════════════════════════════════════════════════════════
   BANDEAU LOGO — alignement sur la boutique 1.6
   Ancien : grand logo bannière à gauche sur sa propre rangée, univers en
   petits boutons juste dessous, puis la barre de navigation pleine largeur.
   La v8 met le logo (col-md-2, 190 px) et le menu (col-md-10) côte à côte :
   on les empile.
   ══════════════════════════════════════════════════════════════════ */
#header .header-top { padding: .9rem 0 0; background: #FFF; }

/* La rangée doit autoriser le retour à la ligne, sinon les deux colonnes
   à 100 % restent côte à côte et le menu part hors écran (left: 1210px). */
#header .header-top > .container > .row { flex-wrap: wrap; }

/* Le logo prend sa largeur naturelle (sa bannière fait 320 px, col-md-2 n'en
   fait que 190) et la colonne de droite occupe le reste : recherche et panier
   s'y alignent à droite, comme dans .container.header_container de la 1.6.
   Le menu, lui, n'est plus ici : il est greffé sur displayNavFullWidth et
   dispose de sa propre rangée pleine largeur, sous cette rangée. */
#header .header-top > .container > .row > .col-md-2 {
  flex: 0 0 auto;
  width: auto;
  max-width: 60%;
  padding-left: 0;
  padding-right: 0;
}
#header .header-top > .container > .row > .header-top-right {
  flex: 1 1 0;
  min-width: 0;
  max-width: none;
  width: auto;
  padding-left: 0;
  padding-right: 0;
}

/* Le logo retrouve sa taille de bannière */
#header .header-top h1 { margin: 0; line-height: 1; }
#header .header-top h1 img,
#header .header-top .logo {
  width: 320px;
  max-width: 100%;
  height: auto;
  max-height: none;
}

/* Univers : petits, alignés sur la largeur du logo */
#header .fi-univers {
  max-width: 320px;
  margin: .4rem 0 .7rem;
  gap: .25rem;
}
#header .fi-univers a, #header .fi-univers span {
  padding: .3rem .4rem;
  font-size: .72rem;
  letter-spacing: .02em;
  border-radius: 2px;
}

/* ── Navigation principale ─────────────────────────────────────────
   Elle passe sur deux lignes plutôt que de déborder : la boutique 1.6
   avait elle aussi deux barres (6 entrées puis les 3 liens relais). */
.top-menu.fi-menu,
#_desktop_top_menu .top-menu {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  background: var(--fi-nav-fond);
  margin: 0;
  padding: 0 .5rem;
  border-radius: 2px;
}
.top-menu.fi-menu > li,
#_desktop_top_menu .top-menu > li { flex: 0 0 auto; }
.top-menu.fi-menu > li > a,
#_desktop_top_menu .top-menu > li > a {
  padding: .7rem .7rem;
  font-size: .8rem;
  white-space: nowrap;
}

@media (max-width: 991px) {
  #header .header-top h1 img { width: 250px; }
  #header .fi-univers { max-width: 250px; }
  .top-menu.fi-menu > li > a,
#_desktop_top_menu .top-menu > li > a { font-size: .74rem; padding: .55rem .5rem; }
}

/* ══════════════════════════════════════════════════════════════════
   P1.3 — MÉGA-MENU ET SOUS-MENUS
   La boutique 1.6 ouvre un méga-menu de 5 colonnes sur « Insectes Reptiles »
   et un sous-menu simple sur « Appats de Pêche ». ps_mainmenu ne sait pas les
   produire sur des liens personnalisés : le menu est rendu par le thème
   (voir modules/ps_mainmenu/.../ps_mainmenu.tpl).
   ══════════════════════════════════════════════════════════════════ */
#_desktop_top_menu .fi-menu { position: relative; }
.fi-menu__item { position: static; }

/* La barre passe sur DEUX rangées, comme la 1.6. Un panneau calé en
   `top: 100%` sur le <ul> s'ouvrait donc sous les DEUX rangées, à 36 px
   sous l'élément survolé : le pointeur perdait le survol en traversant
   ce vide et le menu se refermait avant d'être atteint.

   La 1.6 cale son panneau sur la hauteur d'UNE rangée (`top: 36px`), au
   contact de l'élément. On fait pareil, sans figer de valeur : l'élément
   parent devient le repère, donc `top: 100%` vaut « bas de la rangée
   survolée ». La largeur pleine du conteneur est rendue par deux
   variables que le script pose et tient à jour au redimensionnement. */
.fi-menu__item--parent { position: relative; }
.fi-menu__item--parent > a::after {
  content: " ▾"; font-size: .7em; opacity: .75;
}

/* ── Méga-menu, pleine largeur sous la barre ─────────────────────── */
.fi-mega {
  display: none;
  position: absolute;
  top: 100%;
  left: var(--fi-mega-gauche, 0);
  right: auto;
  width: var(--fi-mega-largeur, 100%);
  z-index: 1000;
  background: #FFF;
  border: 1px solid var(--fi-bord);
  border-top: 3px solid var(--fi-vert);
  box-shadow: 0 6px 18px rgba(0,0,0,.12);
  padding: 1.2rem 1.4rem;
}
.fi-menu__item--parent:hover > .fi-mega,
.fi-menu__item--parent:focus-within > .fi-mega { display: block; }

.fi-mega__grille {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  /* Relevé sur la 1.6 : colonnes de 232 px quasi jointives. Un écart plus
     large rétrécit les colonnes et fait passer les libellés sur deux lignes. */
  gap: .5rem;
}
.fi-mega__titre {
  display: block;
  color: var(--fi-vert-fonce) !important;
  font-weight: 700;
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .02em;
  padding-bottom: .45rem;
  margin-bottom: .55rem;
  border-bottom: 1px solid var(--fi-bord);
  line-height: 1.3;
}
/* ── Visuels du méga-menu ─────────────────────────────────────────
   La 1.6 pose une photo de catégorie en tête de colonne et une vignette
   devant chaque produit. Relevé sur la production le 31/08 : toutes ces
   images viennent de `img/cms/`, en 150×100 et 50×50. */
.fi-mega__photo {
  display: block;
  width: 150px; height: 100px;
  object-fit: cover;
  margin: 0 0 .5rem;
}
.fi-mega__vignette {
  flex: 0 0 50px;
  width: 50px; height: 50px;
  object-fit: contain;
  margin-right: .5rem;
}

.fi-mega__liste { list-style: none; margin: 0; padding: 0; }
.fi-mega__liste li { margin: 0 0 .28rem; }
.fi-mega__liste a {
  color: var(--fi-texte) !important;
  font-size: 12px;
  text-transform: none !important;
  font-weight: 400 !important;
  line-height: 18px;
  /* `!important` volontaire : `classic` pose
     `.top-menu a:not([data-depth="0"]) { display: block }`, plus spécifique,
     et le libellé retombait alors sous la vignette au lieu de se placer à
     côté. Les autres propriétés de ce bloc portent la même marque, pour la
     même raison. */
  display: flex !important;
  align-items: center;
  gap: .1rem;
}
.fi-mega__liste a > span { min-width: 0; }
.fi-mega__liste a:hover { color: var(--fi-vert-fonce) !important; text-decoration: underline; }

/* ── Sous-menu simple ────────────────────────────────────────────── */
.fi-sous-menu {
  display: none;
  position: absolute;
  top: 100%; left: 0;
  z-index: 1000;
  min-width: 230px;
  margin: 0; padding: .4rem 0;
  list-style: none;
  background: #FFF;
  border: 1px solid var(--fi-bord);
  border-top: 3px solid var(--fi-vert);
  box-shadow: 0 6px 18px rgba(0,0,0,.12);
}
.fi-menu__item--parent:hover > .fi-sous-menu,
.fi-menu__item--parent:focus-within > .fi-sous-menu { display: block; }
.fi-sous-menu li { margin: 0; }
.fi-sous-menu a {
  display: block;
  padding: .45rem 1rem;
  color: var(--fi-texte) !important;
  font-size: .82rem;
  text-transform: none !important;
  font-weight: 400 !important;
  white-space: nowrap;
}
.fi-sous-menu a:hover { background: var(--fi-vert-clair); color: var(--fi-vert-fonce) !important; }

@media (max-width: 991px) {
  .fi-mega, .fi-sous-menu { position: static; box-shadow: none; border: 0; }
  /* Le menu se déplie dans le flux : les variables de calage du bureau
     figeraient une largeur en pixels et un décalage négatif. */
  .fi-mega { left: auto; width: auto; }
  .fi-mega__grille { grid-template-columns: 1fr; gap: .8rem; }
  /* Le menu déplié est déjà long sur téléphone : on garde les vignettes,
     qui aident à reconnaître un produit, et on retire la photo de tête. */
  .fi-mega__photo { display: none; }
}

/* ══════════════════════════════════════════════════════════════════
   P1.6 / P2.4 / P1.9 — VIGNETTE PRODUIT
   ══════════════════════════════════════════════════════════════════ */
/* Bouton d'ajout au panier — vert #12b800 relevé sur la boutique 1.6 */
.product-miniature .fi-miniature-cart { display: inline-block; margin: 0; }
.product-miniature .fi-add {
  width: 30px; height: 30px; padding: 0;
  background: #12B800; color: #FFF; border: 0; border-radius: 0;
  display: inline-flex; align-items: center; justify-content: center;
}
.product-miniature .fi-add:hover { background: #3B3B3B; color: #FFF; }
.product-miniature .fi-add .material-icons { font-size: 16px; line-height: 1; }

/* Extrait de description, comme sur l'ancienne vignette */
.fi-miniature__desc {
  font-size: .76rem; line-height: 1.4; color: var(--fi-texte-doux);
  margin: .25rem 0 .35rem; text-align: center;
}

/* P1.9 — Grille : l'ancien site tient 4 vignettes par ligne en bureau,
   3 sur tablette et 2 sur téléphone. La v8 n'en met qu'une sous 576 px. */
#products .product, .featured-products .product,
.product-miniature.js-product-miniature { }
#js-product-list .products > .product,
.featured-products .products > .product,
.products > .js-product {
  flex: 0 0 50%; max-width: 50%;
}
@media (min-width: 768px) {
  #js-product-list .products > .product,
  .featured-products .products > .product,
  .products > .js-product { flex: 0 0 33.3333%; max-width: 33.3333%; }
}
@media (min-width: 992px) {
  #js-product-list .products > .product,
  .featured-products .products > .product,
  .products > .js-product { flex: 0 0 25%; max-width: 25%; }
}

/* Sous 991 px le bouton d'achat reste visible en permanence (comme en 1.6) */
@media (max-width: 991px) {
  .product-miniature .highlighted-informations { opacity: 1 !important; visibility: visible !important; }
}

/* P1.8 — Bannières promotionnelles sous « Produits phares » (hauteur 278 px
   relevée sur la boutique 1.6). */
.fi-bannieres { margin: 1.6rem auto 2rem; }
.fi-banniere { margin-bottom: 1rem; }
.fi-banniere a { display: block; overflow: hidden; }
.fi-banniere img {
  width: 100%; height: 278px; object-fit: cover; display: block;
  transition: transform .3s ease;
}
.fi-banniere a:hover img { transform: scale(1.03); }
@media (max-width: 767px) { .fi-banniere img { height: 200px; } }

/* ══════════════════════════════════════════════════════════════════
   P2.1 / P2.2 — MOBILE : SEUIL DE BASCULE ET MENU EN TIROIR
   Ancien : bascule à 991 px, et le menu s'ouvre en tiroir latéral de 300 px
   (250 px sous 480 px) avec un voile sombre, le contenu restant visible.
   Nouveau avant correction : bascule à 767 px, et l'ouverture MASQUAIT
   #wrapper et #footer — toute la page disparaissait.
   ══════════════════════════════════════════════════════════════════ */
@media (max-width: 991px) {
  /* seuil de bascule aligné sur l'ancien site */
  #header .header-nav .hidden-sm-down { display: none !important; }
  #header .header-nav .hidden-md-up.mobile { display: block !important; }
  #_desktop_logo, #_desktop_top_menu { display: none !important; }

  /* le menu devient un tiroir latéral, pas un écran plein */
  /* Le tiroir est déplacé par transform et non par « left » : la position
     « left » de cet élément reste épinglée à sa valeur initiale, même avec
     un style en ligne !important. transform contourne le problème et c'est
     de toute façon la technique adaptée à un panneau latéral (composé sur le
     GPU, pas de recalcul de mise en page). */
  #mobile_top_menu_wrapper {
    display: block !important;
    position: fixed; top: 0; left: 0;
    width: 300px; height: 100%;
    overflow-y: auto;
    z-index: 901;
    background: #FFF;
    box-shadow: 2px 0 12px rgba(0,0,0,.15);
    transform: translateX(-100%);
    transition: transform .4s ease;
    padding: 1rem;
  }
  #header.is-open #mobile_top_menu_wrapper { transform: translateX(0); }

  /* voile sombre, comme sur la boutique 1.6 */
  #header.is-open::after {
    content: ""; position: fixed; inset: 0;
    background: rgba(0,0,0,.2); z-index: 900;
  }

  /* le contenu reste visible sous le voile */
  #notifications, #wrapper, #footer { display: block !important; }

  /* le méga-menu s'aplatit en accordéon */
  #mobile_top_menu_wrapper .fi-mega,
  #mobile_top_menu_wrapper .fi-sous-menu {
    position: static; display: block; border: 0; box-shadow: none;
    padding: 0 0 0 .8rem; min-width: 0;
  }
  #mobile_top_menu_wrapper .fi-mega__grille { grid-template-columns: 1fr; gap: .6rem; }
  #mobile_top_menu_wrapper .top-menu { background: transparent; flex-direction: column; }
  #mobile_top_menu_wrapper .top-menu > li > a { padding: .55rem 0; }
}
@media (max-width: 480px) {
  /* Le tiroir se rétrécit sous 480 px. */
  #mobile_top_menu_wrapper { width: 250px; }
}

/* P2.3 — L'ancien site ne met pas les noms de produits en Capitale Initiale */
.product-miniature .product-title,
.product-miniature .product-title a { text-transform: none !important; }

/* ══════════════════════════════════════════════════════════════════
   P2.7 / P2.8 / P2.9 — BARRE DE NAVIGATION
   Ancien : bande pleine largeur #3B3B3B sans arrondi, contenu CENTRÉ,
   police Dosis 400 à ~17 px sur une hauteur de ligne de 36 px.
   ══════════════════════════════════════════════════════════════════ */
/* P2.7 — la bande occupe toute la largeur.
   Elle vient de `.fi-nav-rangee`, qui est hors conteneur et porte déjà
   `background: var(--fi-nav-fond)`.

   Il y avait ici un second dispositif qui faisait la même chose autrement :
   une ombre portée de 100vw d'étalement, rognée verticalement par
   `clip-path: inset(0 -100vw)`. Redondant — et surtout **il découpait le
   méga-menu** : le panneau est posé sous la barre (`top: 100%`), donc en
   dehors de la découpe, et il ne s'affichait jamais. Seul le liseré du haut
   dépassait. Retiré le 31/08/2026 ; la bande est identique sans lui. */
.top-menu.fi-menu,
#_desktop_top_menu .top-menu {
  border-radius: 0;
  padding: 0;
}

/* P2.8 — navigation centrée, pas alignée à gauche */
.top-menu.fi-menu,
#_desktop_top_menu .top-menu { justify-content: center; }

/* P2.9 — typographie d'origine */
.top-menu.fi-menu a,
#_desktop_top_menu .top-menu a {
  font-family: "Dosis", Tahoma, sans-serif, Arial;
  font-weight: 400;
}
.top-menu.fi-menu > li > a,
#_desktop_top_menu .top-menu > li > a {
  font-size: 1rem;
  line-height: 36px;
  padding: 0 14px;
}

@media (max-width: 1199px) {
  .top-menu.fi-menu > li > a,
  #_desktop_top_menu .top-menu > li > a { font-size: .92rem; padding: 0 9px; }
}

/* ══════════════════════════════════════════════════════════════════
   P2.5 / P2.6 — SÉLECTEUR 32/64 ET BASCULE GRILLE / LISTE
   Les deux existent sur la boutique 1.6 et avaient disparu en v8.
   ══════════════════════════════════════════════════════════════════ */
.fi-nb-items { display: flex; align-items: center; gap: .4rem; }
.fi-nb-items__label { margin: 0; font-size: .82rem; color: var(--fi-texte-doux); white-space: nowrap; }
.fi-nb-items select { max-width: 5rem; }

.fi-display { display: flex; align-items: center; gap: .25rem; justify-content: flex-end; }
.fi-display__btn {
  width: 34px; height: 34px; padding: 0;
  border: 1px solid var(--fi-bord); background: #FFF; color: var(--fi-texte-doux);
  display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
}
.fi-display__btn.is-active { background: var(--fi-vert); border-color: var(--fi-vert); color: #FFF; }
.fi-display__btn:hover { border-color: var(--fi-vert); }
.fi-display__btn .material-icons { font-size: 18px; }

/* Vue liste : visuel à gauche, informations à droite */
#js-product-list.fi-vue-liste .products > .js-product,
#js-product-list.fi-vue-liste .products > .product { flex: 0 0 100%; max-width: 100%; }
#js-product-list.fi-vue-liste .product-miniature .thumbnail-container { display: flex; align-items: flex-start; gap: 1rem; }
#js-product-list.fi-vue-liste .product-miniature .thumbnail-top { flex: 0 0 200px; max-width: 200px; }
#js-product-list.fi-vue-liste .product-miniature .product-description { flex: 1; text-align: left; padding-top: .3rem; }
#js-product-list.fi-vue-liste .product-miniature .product-title,
#js-product-list.fi-vue-liste .fi-miniature__desc { text-align: left; }
@media (max-width: 575px) {
  #js-product-list.fi-vue-liste .product-miniature .thumbnail-container { flex-direction: column; }
  #js-product-list.fi-vue-liste .product-miniature .thumbnail-top { flex: 0 0 auto; max-width: 100%; }
}

/* P2.14 — Le bloc « LES + » de la 1.6 porte un visuel de paiement sécurisé,
   deux icônes et des passages en gras à l'intérieur des textes. */
.fi-les-plus__paiement { display: block; max-width: 272px; width: 100%; height: auto; margin: 0 0 .9rem; }
.fi-les-plus__icone {
  font-size: 18px; vertical-align: -4px; margin-right: .35rem; color: var(--fi-vert-fonce);
}
.fi-les-plus__liste span strong { color: var(--fi-texte); font-weight: 700; }

/* ── P2.16 / P2.17 — BLOC D'ACHAT DE LA FICHE PRODUIT ──────────────
   Ancien : boutons - et + horizontaux de 33 px encadrant le champ, aucun
   libellé, et la quantité disponible affichée sous le prix. */
.product-quantity .fi-qte-btn {
  width: 33px; height: 33px; line-height: 31px; padding: 0;
  font-size: 1.3em; background: #FFF; border: 1px solid var(--fi-bord);
  color: var(--fi-texte);
}
.product-quantity .fi-qte-btn:hover { background: var(--fi-vert); border-color: var(--fi-vert); color: #FFF; }
.product-quantity #quantity_wanted { height: 33px; text-align: center; }

.fi-stock-dispo { margin: .5rem 0 .2rem; font-size: .88rem; }
.fi-stock-dispo__nb { font-weight: 700; color: var(--fi-vert-fonce); }
.fi-stock-dispo__txt { color: var(--fi-texte-doux); }

/* P2.10 — Devise et lien « Aide » dans la barre supérieure, comme sur la 1.6.
   Le sélecteur de langue n'est pas rétabli : la boutique est monolingue. */
.fi-aide { font-size: .82rem; margin-left: .6rem; white-space: nowrap; }
#header .header-nav .currency-selector { font-size: .82rem; }
#header .header-nav .currency-selector .dropdown-menu { min-width: 8rem; }


/* ------------------------------------------------------------------
   PIED DE PAGE — seconde rangée et bandeau de bas de page
   Valeurs relevées sur la boutique 1.6 (#footer-primary et #footer_info),
   couleurs échantillonnées dans la capture de référence.
   ------------------------------------------------------------------ */

/* Bootstrap 4 fait flotter les colonnes du pied : quand leurs hauteurs
   diffèrent, la troisième décroche sous la premiere au lieu de rester en
   ligne. La 1.6 aligne quatre colonnes egales — on repasse la rangee en
   flex pour obtenir le meme resultat quelles que soient les hauteurs. */
.footer-container > .container > .row {
  display: flex;
  flex-wrap: wrap;
}
.footer-container .links.wrapper,
.footer-container .block_newsletter,
.footer-container .block-social {
  float: none;
  flex: 0 0 25%;
  max-width: 25%;
}

/* Chevron des listes de liens : la 1.6 prefixe chaque entree d un guillemet
   simple droit, en gris. */
#footer .links ul li a::before,
.footer-container .links ul li a::before {
  content: "\00BB\00A0\00A0";
  color: #666;
}

/* --- Newsletter -------------------------------------------------- */
.footer-container .block_newsletter #block-newsletter-label.fi-newsletter__accroche {
  font-size: .84rem;
  line-height: 1.55;
  color: #666;
  margin: 0 0 .7rem;
  font-weight: 400;
}
.footer-container .block_newsletter .fi-newsletter__champ {
  position: relative;
  width: 100%;
  max-width: 258px;
}
.footer-container .block_newsletter .fi-newsletter__champ input[type="email"] {
  display: block;
  width: 100%;
  height: 35px;
  border: 2px solid #E5E5E5;
  background: #FFF;
  box-shadow: none;
  padding: 0 5.2rem 0 .6rem;
  font-size: .84rem;
  color: #444;
}
.footer-container .block_newsletter .fi-newsletter__envoi {
  position: absolute;
  right: 0;
  top: 0;
  height: 35px;
  line-height: 31px;
  padding: 0 .9rem;
  border: 0;
  border-radius: 0;
  background: #666;
  color: #FFF;
  font-size: .84rem;
  text-transform: none;
  box-shadow: none;
}
.footer-container .block_newsletter .fi-newsletter__envoi:hover {
  background: #3B3B3B;
}
/* Mention de desinscription ajoutee par PrestaShop 8 et absente de la 1.6 :
   conservee volontairement (arbitrage A.7, decision juridique du client). */
.footer-container .block_newsletter .fi-newsletter__mention {
  font-size: .74rem;
  line-height: 1.5;
  color: #999;
  margin: .8rem 0 0;
}

/* --- Reseaux sociaux ---------------------------------------------- */
/* 1.6 : .stsocial_list li a { height:26px; line-height:26px; min-width:26px;
   color:#666666 } et survol #00A161. */
.footer-container .block-social ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.footer-container .block-social li {
  display: inline-block;
  padding-right: 8px;
  padding-bottom: 6px;
}
.footer-container .block-social li a {
  display: inline-block;
  height: 26px;
  line-height: 26px;
  min-width: 26px;
  background-size: 26px 26px;
  background-position: center;
  text-align: center;
  color: #666;
}
.footer-container .block-social li a:hover {
  color: #00A161;
}

/* --- Bandeau de bas de page --------------------------------------- */
.fi-footer__bandeau {
  background: #666666;
  color: #FFFFFF;
  padding: 1.05rem 0;
}
.fi-footer__bandeau a {
  color: #FFFFFF;
}
.fi-footer__copyright {
  margin: 0;
  font-size: .8rem;
  color: #FFFFFF;
  text-align: left;
}

/* En dessous de la bascule mobile du site (992 px), les quatre colonnes
   s empilent, comme sur la 1.6. */
@media (max-width: 991px) {
  .footer-container .links.wrapper,
  .footer-container .block_newsletter,
  .footer-container .block-social {
    flex: 0 0 100%;
    max-width: 100%;
  }
  .fi-footer__copyright { text-align: center; }
}

/* Le sprite des reseaux sociaux de classic est pose sur le <li>, en tuiles de
   2,5 rem sur fond #f6f6f6, alignees a droite. La 1.6 affiche des glyphes de
   26 px sans fond, alignes a gauche. On redimensionne la tuile.
   Reserve : le survol de la 1.6 recolore le glyphe en #00A161 ; un sprite ne
   se recolore pas en CSS, on se contente d une legere accentuation. */
.footer-container .block-social { text-align: left; }
.footer-container .block-social ul li {
  width: 26px;
  height: 26px;
  margin: 0 8px 6px 0;
  background-color: transparent;
  background-size: 26px 26px;
  background-position: center;
  /* Les SVG de classic sont des glyphes BLANCS, prevus pour la tuile coloree
     qu on vient de retirer : sans teinture ils deviennent invisibles sur le
     fond clair du pied. brightness(0) les passe en noir, invert(.4) les
     remonte a #666666, la valeur de la 1.6 (.stsocial_list li a). */
  filter: brightness(0) invert(.4);
  transition: filter .15s ease;
}
.footer-container .block-social ul li:hover {
  background-color: transparent;
  /* La 1.6 recolore le glyphe en #00A161 au survol. Un SVG servi en
     background-image ne se recolore pas ; on l assombrit, faute de mieux.
     Reserve consignee dans docs/MIGRATION.md. */
  filter: brightness(0) invert(.25);
}


/* ------------------------------------------------------------------
   VIGNETTE DE L ACCUEIL — carte horizontale
   P1.9 et P1.10. L accueil de la 1.6 et sa page categorie n ont jamais eu
   la meme vignette : la categorie est verticale (image au-dessus du texte),
   l accueil est HORIZONTAL et compact. Le theme v8 reutilisait la vignette
   de categorie partout ; on retablit la distinction.

   Valeurs relevees dans le thème transformer :
     .col-lg-2-4      { width: 20% }                     -> 5 par ligne
     .itemlist_left   { width: 100px; float: left }
     .itemlist_right  { margin-left: 110px }
     .itemlist_right .s_title_block { height: 2.666em; line-height: 1.333em }
     .ajax_block_product .s_title_block { font-size: 1.166em }
     .price_container .price { font-size: 1.333em; font-weight: bold }
     .itemlist_action a { width: 30px; height: 30px; line-height: 30px }
   Mesure au navigateur sur le clone : carte 240x151, image 100x115.
   ------------------------------------------------------------------ */

.fi-produits-phares .products.row {
  display: flex;
  flex-wrap: wrap;
}

/* 5 par ligne au-dela de 1200 px, comme col-lg-2-4 en Bootstrap 3. */
.fi-produits-phares .products > .product,
.fi-produits-phares .products > .js-product {
  flex: 0 0 20%;
  max-width: 20%;
  padding: 0 8px;
  margin-bottom: 14px;
}

/* La carte : image a gauche, texte a droite. */
.fi-produits-phares .product-miniature {
  border: 0;
  border-radius: 0;
  height: auto;
}
.fi-produits-phares .product-miniature:hover { box-shadow: none; }
.fi-produits-phares .thumbnail-container {
  display: flex;
  align-items: flex-start;
  width: auto;
  height: auto;
  background: transparent;
  box-shadow: none;
}
.fi-produits-phares .thumbnail-top {
  flex: 0 0 100px;
  width: 100px;
  position: relative;
}
.fi-produits-phares .thumbnail-top img {
  width: 100px;
  height: auto;
}
.fi-produits-phares .product-description {
  flex: 1 1 auto;
  /* Sans min-width:0, un element flex ne descend jamais sous la largeur de son
     contenu : la vignette debordait de l ecran en telephone (document a 405 px
     pour une fenetre de 390). */
  min-width: 0;
  margin-left: 10px;
  padding: 0;
  position: static;
  text-align: left;
  width: auto;
  height: auto;
}

/* Nom : deux lignes au plus, coupe net, comme .s_title_block. */
.fi-produits-phares .product-title {
  font-size: 1.166em;
  font-weight: 400;
  line-height: 1.333em;
  height: 2.666em;
  overflow: hidden;
  margin: 0 0 10px;
  text-transform: none;
}
.fi-produits-phares .product-title a {
  display: block;
  color: #444;
}

/* Prix : rouge, comme partout ailleurs sur la 1.6 (P1.5). */
.fi-produits-phares .product-price-and-shipping {
  margin: 0 0 6px;
  text-align: left;
}
.fi-produits-phares .product-price-and-shipping .price {
  font-size: 1.333em;
  font-weight: 700;
  color: var(--fi-prix);
}

/* Bouton d achat : carre de 30 px, toujours visible, sous le prix.
   La 1.6 le sert en #12B800 (echantillonne dans la capture de reference).
   Il est branche sur --fi-vert pour qu un seul changement suffise le jour
   ou l arbitrage A.1 sur le vert de marque sera tranche. */
.fi-produits-phares .highlighted-informations {
  position: static;
  opacity: 1;
  transform: none;
  height: auto;
  box-shadow: none;
  background: transparent;
  border: 0;
  text-align: left;
}
.fi-produits-phares .fi-miniature-cart { margin: 0; }
.fi-produits-phares .fi-add {
  width: 30px;
  height: 30px;
  line-height: 30px;
  min-width: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: var(--fi-vert);
  color: #FFF;
  text-align: center;
  box-shadow: none;
}
.fi-produits-phares .fi-add:hover { background: var(--fi-vert-fonce); }
.fi-produits-phares .fi-add .material-icons {
  font-size: 18px;
  line-height: 30px;
  vertical-align: top;
}

/* La 1.6 n a pas de liste d envies sur la vignette d accueil. */
.fi-produits-phares .wishlist-button-add,
.fi-produits-phares .product-miniature .wishlist-button-add { display: none; }

/* Paliers repris de Bootstrap 3, que suivait la 1.6 :
   col-lg-2-4 (>=1200) 5 · col-md-3 (>=992) 4 · col-sm-4 (>=768) 3 · col-xs-6 2 */
@media (max-width: 1199px) {
  .fi-produits-phares .products > .product,
  .fi-produits-phares .products > .js-product { flex: 0 0 25%; max-width: 25%; }
}
@media (max-width: 991px) {
  .fi-produits-phares .products > .product,
  .fi-produits-phares .products > .js-product { flex: 0 0 33.3333%; max-width: 33.3333%; }
}
@media (max-width: 767px) {
  .fi-produits-phares .products > .product,
  .fi-produits-phares .products > .js-product { flex: 0 0 50%; max-width: 50%; }
}

/* La 1.6 ne pose aucune pastille (« PACK », « RUPTURE DE STOCK ») sur la
   vignette d accueil : elles se superposaient a l image et au nom. */
.fi-produits-phares .product-flags { display: none; }

/* Le bouton d achat est desormais rendu dans la colonne de droite : la zone
   qui le portait au-dessus de l image n a plus rien a occuper. */
.fi-produits-phares .thumbnail-top .highlighted-informations { display: none; }
.fi-produits-phares .product-description .fi-miniature-cart { margin: 0; }

/* Resserrer la carte : la 1.6 tient en 151 px de haut. */
.fi-produits-phares .product-miniature { margin-bottom: 0; }
.fi-produits-phares .thumbnail-top img { max-height: 115px; object-fit: contain; }

/* ------------------------------------------------------------------
   FICHE PRODUIT — trois colonnes et onglets pleine largeur
   P1.12, P2.12. Relevé sur la 1.6 : #primary_block porte pb-left-column
   (col-md-4), pb-center-column (col-md-5) et pb-right-column (col-md-3).
   Les onglets sont dans #bottom_more_info_block, HORS de #primary_block.
   ------------------------------------------------------------------ */
.fi-colonne-plus { padding-top: 0; }
.fi-onglets-rangee { margin-top: 1.6rem; }
.fi-onglets-rangee .tabs {
  padding: 0;
  background: transparent;
  box-shadow: none;
}

/* La 1.6 ecrit « 3,70 € TTC » sur une seule ligne (#our_price_display suivi de
   la mention de taxe). PrestaShop 8 rejette la mention sur sa propre ligne. */
.product-prices .product-price,
.product-prices .tax-shipping-delivery-label {
  display: inline-block;
  vertical-align: baseline;
  margin: 0;
}
.product-prices .tax-shipping-delivery-label {
  margin-left: .4rem;
  font-size: .9rem;
  color: var(--fi-texte-doux);
}
.product-prices { margin-bottom: .5rem; }

/* Quantite disponible : la 1.6 l affiche entre le prix et la rangee d achat. */
.fi-stock-dispo { margin: 0 0 .7rem; font-size: .9rem; color: var(--fi-texte-doux); }
.fi-stock-dispo__nb { font-weight: 700; color: var(--fi-texte); margin-right: .25rem; }

/* ------------------------------------------------------------------
   EN-TÊTE — recherche et panier dans la rangée du logo
   P1.13 et P1.14. Relevé sur la 1.6 (.container.header_container) :
   col-md-4 pour le logo, col-md-8 text-right pour .search_block_mod
   suivi de .blockcart_wrap. Le thème v8 les avait remontés dans la
   barre sombre, laissant la rangée du logo vide à droite.
   Couleurs échantillonnées dans la capture de référence :
     barre du haut #444444 (la barre de NAVIGATION, elle, est #3B3B3B)
     boutons vert #12B800  ·  pastille du panier #FF0000
     champ #FBFBFB, bordure #BDBDBD
   ------------------------------------------------------------------ */

/* La barre supérieure de la 1.6 est un ton plus clair que sa barre de
   navigation : #444444 contre #3B3B3B. Le thème v8 leur donnait la même. */
.header-nav, #header .header-nav { background: #444444; }

/* La rangée du logo aligne recherche et panier à droite, sur une ligne. */
#header .header-top-right {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  /* Sans align-content, les deux lignes du conteneur (recherche+panier d une
     part, menu de l autre) se repartissent sur toute la hauteur imposee par le
     logo : la recherche descendait au bas de la rangee. */
  align-content: flex-start;
  justify-content: flex-end;
  gap: 0;
}
#header .header-top-right > #search_widget { order: 1; }
#header .header-top-right > #_desktop_cart  { order: 2; }

/* --- Champ de recherche --- */
#header .search-widgets {
  margin: 1.1rem 0 0;
  padding: 0;
  width: auto;
  /* classic pose overflow:auto sur ce bloc. Combine a un retrecissement flex,
     le conteneur tombait a 208 px pour 243 px de contenu et COUPAIT le bouton
     vert : il n en restait que 16 px visibles. */
  overflow: visible;
  flex: 0 0 auto;
}
#header .search-widgets form {
  display: flex;
  align-items: stretch;
  position: relative;
}
/* Dans le DOM de classic, la loupe precede le champ. La 1.6 l accole a
   DROITE, en bouton vert. On reordonne sans toucher au gabarit du module. */
#header .search-widgets input[type="text"] { order: 1; }
#header .search-widgets .material-icons.search { order: 2; }
#header .search-widgets input[type="text"] {
  width: 265px;
  max-width: 100%;
  height: 38px;
  background: #FBFBFB;
  border: 1px solid #BDBDBD;
  border-radius: 0;
  padding: 0 .7rem;
  font-size: .88rem;
  color: #444;
}
#header .search-widgets input[type="text"]::placeholder { color: #999; }
/* La loupe de classic est posée en absolu dans le champ ; la 1.6 la met
   dans un bouton vert accolé, portant le libellé « Recherche ». */
#header .search-widgets .material-icons.search {
  position: static;
  flex: 0 0 52px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 38px;
  margin: 0;
  background: var(--fi-vert);
  color: #FFF;
  font-size: 20px;
  cursor: pointer;
  pointer-events: none;
}
#header .search-widgets .material-icons.clear { display: none; }

/* --- Panier --- */
#header #_desktop_cart {
  margin: 1.1rem 0 0;
  padding: 0;
}
#header .blockcart {
  position: relative;
  display: block;
  height: 38px;
  padding: 0 .9rem;
  margin-left: 4px;
  background: var(--fi-vert);
  border-radius: 0;
}
#header .blockcart .header {
  display: flex;
  align-items: center;
  gap: .35rem;
  height: 38px;
  color: #FFF;
  font-size: .86rem;
  white-space: nowrap;
}
#header .blockcart a, #header .blockcart .header span { color: #FFF; }
#header .blockcart .material-icons { font-size: 19px; color: #FFF; }
/* La 1.6 pose le compte dans une pastille rouge en haut a droite du bouton. */
#header .blockcart .cart-products-count {
  position: absolute;
  top: -8px;
  right: -8px;
  min-width: 19px;
  height: 19px;
  line-height: 19px;
  padding: 0 4px;
  border-radius: 50%;
  background: var(--fi-prix);
  color: #FFF;
  font-size: .7rem;
  font-weight: 700;
  text-align: center;
}

@media (max-width: 991px) {
  #header .header-top-right { justify-content: center; }
  #header .search-widgets input[type="text"] { width: 100%; }
}

/* La rangée du menu : fond sombre d un bord a l autre, entrees centrees dans
   le conteneur. Le fond etait jusqu ici porte par un box-shadow etale sur le
   bloc lui-meme ; il vit maintenant sur la rangee, ce qui est plus simple. */
.fi-nav-rangee { background: var(--fi-nav-fond); }
.fi-nav-rangee > .container { padding-left: 15px; padding-right: 15px; }

/* La pastille du panier est posee en debord (-8 px) : au bord droit de l ecran
   en telephone, elle poussait le document a 405 px de large. On la rentre. */
@media (max-width: 991px) {
  #header .blockcart .cart-products-count { top: -6px; right: 0; }
  /* L image de la vignette d accueil se resserre pour laisser la place au texte. */
  .fi-produits-phares .thumbnail-top { flex: 0 0 76px; width: 76px; }
  .fi-produits-phares .thumbnail-top img { width: 76px; }
}

/* Le tiroir mobile est une .row : ses marges negatives de 15 px le decalaient
   hors ecran a l ouverture, coupant la premiere entree. */
#mobile_top_menu_wrapper { margin-left: 0; margin-right: 0; }

/* ------------------------------------------------------------------
   PAGE CATEGORIE — habillage repris de la 1.6
   ------------------------------------------------------------------ */

/* Le titre : la 1.6 ecrit .heading.page-heading.product-listing a 1.333em sur
   une base de 13 px, soit 17,3 px — pas les 30 px de classic. */
#js-product-list-header .fi-cat-titre {
  font-size: 18px;
  font-weight: 400;
  color: #444;
  text-transform: uppercase;
  margin: .6rem 0 .9rem;
  padding: 0;
  background: transparent;
  border: 0;
}
/* Le cadre blanc de classic autour du titre n existe pas sur la 1.6. */
#js-product-list-header .block-category,
#js-product-list-header .card,
#js-product-list-header .card-block { background: transparent; border: 0; padding: 0; box-shadow: none; }
.fi-cat-bloc { margin-bottom: 1rem; }

/* Bandeau court des pages interieures : une seule ligne, centree. */
.fi-annonce--courte { padding: .6rem 1rem; }
.fi-annonce--courte p { margin: 0; font-size: .95rem; }

/* --- Sous-categories : vignettes encadrees, nom dessous --- */
.fi-souscat { margin: 0 0 1.4rem; }
.fi-souscat__liste { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; }
.fi-souscat__item { margin-bottom: 1rem; text-align: center; }
.fi-souscat__vignette {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 105px;
  padding: .5rem;
  border: 1px solid var(--fi-bord);
  background: #FFF;
}
.fi-souscat__vignette img { max-height: 100%; width: auto; }
.fi-souscat__vide { color: #999; font-size: .86rem; line-height: 1.3; }
.fi-souscat__nom { margin: .45rem 0 0; font-size: .82rem; text-transform: uppercase; }
.fi-souscat__nom a { color: #444; }
/* Le titre existe pour les lecteurs d ecran, il ne s affiche pas — comme la
   classe `hidden` que la 1.6 pose sur le sien. */
.fi-souscat .sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* --- Vignette de la liste : ni cadre ni pastille sur la 1.6 --- */
#products .product-miniature,
.products .product-miniature {
  border: 0;
  border-radius: 0;
  background: transparent;
}
#products .product-miniature:hover,
.products .product-miniature:hover { box-shadow: none; }
#products .product-flags,
.featured-products .product-flags { display: none; }

/* ------------------------------------------------------------------
   BARRE D OUTILS DE LISTE — reprise de la 1.6
   Compteur sur sa ligne, puis bascule grille/liste a GAUCHE et tri a
   DROITE. L ensemble est repete sous la liste, en ordre inverse.
   ------------------------------------------------------------------ */
.fi-outils { margin: 0 0 1rem; }
.fi-outils--bas { margin: 1.4rem 0 0; }

.fi-compteur {
  margin: 0 0 .5rem;
  font-size: .84rem;
  color: var(--fi-texte-doux);
}
.fi-outils--bas .fi-compteur { margin: .5rem 0 0; }

.fi-barre {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  padding: .5rem 0;
  border-top: 1px solid var(--fi-bord);
  border-bottom: 1px solid var(--fi-bord);
}
.fi-barre__droite {
  display: flex;
  align-items: center;
  gap: .8rem;
  margin-left: auto;
}
.fi-barre__droite .products-sort-order,
.fi-barre__droite .fi-nb-items {
  display: flex;
  align-items: center;
  gap: .4rem;
  padding: 0;
  margin: 0;
  width: auto;
  max-width: none;
  float: none;
}
.fi-nb-items__label,
.fi-barre__droite .sort-by {
  margin: 0;
  font-size: .84rem;
  color: var(--fi-texte-doux);
  white-space: nowrap;
}
.fi-nb-items select { width: auto; min-width: 64px; }

.fi-display { display: flex; gap: 2px; }
.fi-display__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  padding: 0;
  border: 1px solid var(--fi-bord);
  background: #FFF;
  color: #999;
  cursor: pointer;
}
.fi-display__btn.is-active { background: var(--fi-vert); border-color: var(--fi-vert); color: #FFF; }
.fi-display__btn .material-icons { font-size: 18px; }

@media (max-width: 767px) {
  .fi-barre { justify-content: center; }
  .fi-barre__droite { margin-left: 0; flex-wrap: wrap; justify-content: center; }
}

/* Etat du produit, rendu comme la 1.6 : une etiquette grise discrete sous la
   description courte (.editable.sm_lable dans #product_condition). */
.fi-etat { margin: .7rem 0; }
.fi-etat__badge {
  display: inline-block;
  padding: .18rem .55rem;
  background: #F2F2F2;
  border: 1px solid var(--fi-bord);
  font-size: .8rem;
  color: #666;
}

/* La 1.6 ne pose pas de liste d envies sur les vignettes de liste : elle ne
   la propose qu en toutes lettres sur la fiche produit. */
#products .wishlist-button-add,
.featured-products .wishlist-button-add,
#products .product-miniature .wishlist-button-add { display: none; }

/* ------------------------------------------------------------------
   CARROUSEL « autres produits dans la meme categorie »
   La 1.6 en montre quatre a la fois, avec deux fleches a droite du titre.
   Defilement en scroll-snap : aucune bibliotheque ajoutee.
   ------------------------------------------------------------------ */
.fi-carrousel { margin: 2rem 0 1rem; }
.fi-carrousel__titre {
  color: #666;
  text-transform: uppercase;
  font-weight: 400;
  font-size: 17px;
  line-height: 1.2;
  padding: 6px 0;
  margin: 0 0 .8rem;
  background: url('../img/fi-filet-titre.png') repeat-x left center;
}
.fi-carrousel__titre span { display: inline-block; padding-right: 8px; background: #FFF; }

.fi-carrousel__cadre { position: relative; }
.fi-carrousel__piste {
  display: flex;
  gap: 0;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.fi-carrousel__piste::-webkit-scrollbar { display: none; }
.fi-carrousel__piste > .product,
.fi-carrousel__piste > .js-product {
  flex: 0 0 25%;
  max-width: 25%;
  padding: 0 8px;
  scroll-snap-align: start;
}

.fi-carrousel__fleche {
  position: absolute;
  top: -44px;
  width: 26px;
  height: 26px;
  padding: 0;
  border: 1px solid var(--fi-bord);
  background: #FFF;
  color: #666;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.fi-carrousel__fleche:hover { background: var(--fi-vert); border-color: var(--fi-vert); color: #FFF; }
.fi-carrousel__fleche[disabled] { opacity: .35; cursor: default; }
.fi-carrousel__fleche[disabled]:hover { background: #FFF; border-color: var(--fi-bord); color: #666; }
.fi-carrousel__fleche--prec { right: 30px; }
.fi-carrousel__fleche--suiv { right: 0; }
.fi-carrousel__fleche .material-icons { font-size: 18px; }

@media (max-width: 991px) {
  .fi-carrousel__piste > .product,
  .fi-carrousel__piste > .js-product { flex: 0 0 33.3333%; max-width: 33.3333%; }
}
@media (max-width: 767px) {
  .fi-carrousel__piste > .product,
  .fi-carrousel__piste > .js-product { flex: 0 0 50%; max-width: 50%; }
}

/* Les vignettes du carrousel de la 1.6 ne portent QUE l image et le nom :
   ni prix, ni description, ni liste d envies, ni cadre. */
.fi-carrousel .product-miniature {
  border: 0;
  background: transparent;
  box-shadow: none;
}
.fi-carrousel .thumbnail-container { background: transparent; box-shadow: none; }
.fi-carrousel .product-price-and-shipping,
.fi-carrousel .fi-miniature__desc,
.fi-carrousel .wishlist-button-add,
.fi-carrousel .highlighted-informations,
.fi-carrousel .product-flags { display: none; }
.fi-carrousel .product-title {
  font-size: .88rem;
  font-weight: 400;
  text-align: center;
  margin: .6rem 0 0;
  text-transform: none;
}
.fi-carrousel .product-title a { color: #444; }

/* Icone maison en tete de navigation, comme sur la 1.6. */
.fi-menu__item--accueil > a { padding-left: .8rem; padding-right: .8rem; }
.fi-menu__item--accueil .material-icons { font-size: 18px; vertical-align: -4px; }

/* La 1.6 propose « Ajouter à ma liste d envies » EN TOUTES LETTRES sous le
   bouton d achat ; PrestaShop 8 n en garde qu un coeur. Le bouton est monte
   par le JavaScript du module blockwishlist : on ne peut pas y inserer de
   libelle depuis le gabarit sans risquer qu il soit remplace au montage.
   Le libelle est donc pose sur le conteneur, que le module ne reecrit pas.
   (« Ajouter au comparateur », l autre lien de la 1.6, reste suspendu a
   l arbitrage A.5.) */
/* Le module remplace le <div class="wishlist-button"> du gabarit par un
   <button class="wishlist-button-add wishlist-button-product"> : c'est LUI
   qu'il faut viser. Le libelle se pose a l interieur du bouton, donc
   cliquable, comme le lien en toutes lettres de la 1.6. */
/* Le module dessine ce bouton comme la pastille ronde des vignettes :
   `position:absolute`, fond blanc, ombre portée et `border-radius:50%`.
   Sur la fiche produit le bouton porte en plus un libellé, donc il mesure
   131×40 : un rayon de 50 % en fait alors une ELLIPSE blanche, posée de
   travers autour du texte, l'icône restant à l'écart. C'est le défaut
   d'affichage relevé le 27/08.

   La 1.6 propose la liste d'envies en toutes lettres, sans cartouche. On
   reprend cette forme : un lien discret, cœur et libellé alignés. Les
   `!important` ne sont pas un confort — ils désarment les règles du module,
   chargé après le thème. */
/* Le conteneur doit autoriser le retour à la ligne, sans quoi `flex-basis:100%`
   comprimerait le bouton d'achat au lieu de renvoyer le lien en dessous. */
.product-actions .product-add-to-cart,
.product-add-to-cart .product-quantity { flex-wrap: wrap; }

button.wishlist-button-add.wishlist-button-product,
.wishlist-button-product {
  position: static !important;
  display: inline-flex !important;
  align-items: center;
  gap: .4rem;
  width: auto !important;
  height: auto !important;
  padding: 0 !important;
  margin-left: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: #444;
  line-height: 1.2;
  /* La 1.6 pose ce lien SOUS le bouton d'achat, aligné à gauche de la
     colonne — mesuré sur sa fiche produit : bouton à y=566, lien à y=639.
     On reprend cette disposition. Le garder sur la même rangée ne tenait
     pas : le parent flex ne laisse que 150 px après « Ajouter au panier »,
     le libellé en demande 198, et il débordait sur la colonne de droite. */
  flex: 0 0 100% !important;
  margin-top: .9rem !important;
  white-space: nowrap;
  /* aligné à gauche de la colonne, comme sur la 1.6 (lien à x=535, bord de
     colonne) et non centré sur la largeur de la rangée */
  justify-content: flex-start;
}
.wishlist-button-product .material-icons { font-size: 20px; color: #8DC63F; }
.wishlist-button-product:hover { color: #000; }
.wishlist-button-product:hover .material-icons { color: #6FA22B; }
.wishlist-button-product::after {
  content: "Ajouter à ma liste d'envies";
  font-size: .86rem;
  color: inherit;
  white-space: nowrap;
  text-decoration: underline;
  text-underline-offset: 2px;
}
@media (max-width: 575px) {
  .wishlist-button-product::after { display: none; }
  .wishlist-button-product { margin-left: .5rem !important; }
}

/* ══════════════════════════════════════════════════════════════════
   LOGO — une variante par fond, parce qu'il y en a deux

   La rangée du logo est BLANCHE sur grand écran (`#header .header-top`,
   comme sur l'ancien site) mais le gabarit de PrestaShop place le logo
   mobile À L'INTÉRIEUR de la barre sombre `.header-nav` (#444444).

   Un seul fichier ne peut donc pas convenir aux deux. Le 27/08, le logo
   déployé était la version claire : invisible sur le blanc du bureau —
   la rangée ne montrait rien du tout. La version sombre est désormais
   servie par défaut (contraste 10,7:1 sur blanc), et la claire reprise
   ici pour la barre mobile (contraste 8,1:1 sur #444444).

   `content` sur une balise <img> remplace la ressource affichée sans
   toucher au gabarit : c'est la seule voie, PrestaShop ne rendant qu'une
   seule image, celle de PS_LOGO.
   ══════════════════════════════════════════════════════════════════ */
/* La bascule ne se joue pas à la largeur d'écran mais à l'endroit où le logo
   atterrit. PrestaShop le place dans `.header-nav` (#444444) dans deux cas :
   sur téléphone, et dans le tunnel de commande — où le gabarit `checkout`
   remonte `#_desktop_logo` de `.header-top` (blanc, col-md-2) vers
   `.header-nav` (sombre, col-md-6). Le second cas nous a valu un en-tête de
   tunnel illisible, sombre sur sombre.

   On vise donc le conteneur, pas la taille de la fenêtre : partout où le logo
   est dans la barre sombre, c'est la variante claire qui sert. */
.header-nav #_mobile_logo img.logo,
.header-nav #_desktop_logo img.logo,
.header-nav .logo.img-fluid {
  content: url("/img/france-insectes-logo-2026-clair.png");
}

/* ══════════════════════════════════════════════════════════════════
   FICHE PRODUIT — le logo de marque en tête de colonne

   La boutique d'origine le pose en 171 × 106 au-dessus du visuel de
   paiement. PrestaShop 8 le laissait dans l'onglet « Détails du produit »,
   où il s'étalait en 1140 × 462 tout en bas de la page.
   ══════════════════════════════════════════════════════════════════ */
.fi-les-plus__marque {
  display: block;
  margin: 0 0 .7rem;
}
.fi-les-plus__marque img {
  max-width: 171px;
  height: auto;
  display: block;
}

/* ══════════════════════════════════════════════════════════════════
   TABLEAUX DE RELAIS — défilement propre sur téléphone

   Les listes de magasins comptent quatre colonnes, dont deux noms longs
   (« MAXI ZOO Charleville-Mézières »). Sur un écran de 390 px la page
   entière débordait de 96 px : le contrôle responsive du 28/08 l'a
   attrapé. Le tableau défile désormais dans sa propre boîte, la page ne
   bouge plus.
   ══════════════════════════════════════════════════════════════════ */
.fi-tableau-defilant {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
}
.fi-tableau-defilant table { margin-bottom: 0; }
@media (max-width: 767px) {
  .fi-tableau-defilant table { font-size: .84rem; }
  .fi-tableau-defilant td,
  .fi-tableau-defilant th { padding: .35rem .5rem; white-space: nowrap; }
}
