/* ===== IMPORTS & VARIABLES ===== */
@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;600;700;800;900&family=Chakra+Petch:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap');

:root {
  --kms-bg:        #080c18;
  --kms-bg-header: #04060f;
  --kms-bg-mid:    #060a14;
  --kms-bg-section:#0a0f1e;
  --kms-bg-banks:  #050810;
  --kms-bg-footer: #030508;
  --kms-bg-card:   #0d1530;
  --kms-blue:      #29d6ff;
  --kms-blue-d:    #0e86c4;
  --kms-blue-dd:   #0d2040;
  --kms-blue-glow: rgba(41,214,255,0.35);
  --kms-orange:    #ff7a12;
  --kms-orange-glow: rgba(255,122,18,0.4);
  --kms-green:     #7fff00;
  --kms-purple:    #bb44ff;
  --kms-text:      #d3e6ff;
  --kms-muted:     #4d84ba;
  --kms-border:    #16294a;
  --kms-font-display: 'Orbitron', 'Chakra Petch', sans-serif;
  --kms-font-body: 'Chakra Petch', 'Rajdhani', sans-serif;
  --kms-ease: cubic-bezier(.22, 1, .36, 1);
}

/* --- Animations globales --- */
@keyframes kms-fade-up {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes kms-glow-pulse {
  0%, 100% { filter: drop-shadow(0 0 6px currentColor); }
  50%      { filter: drop-shadow(0 0 16px currentColor); }
}
@keyframes kms-border-flow {
  0%   { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}
@keyframes kms-shimmer {
  0%   { transform: translateX(-120%); }
  100% { transform: translateX(120%); }
}

/* --- Masquage d'elements du theme parent --- */
/* FIX 20/10 : la page "commande" (checkout, body.page-order) n'utilise pas
   le header.tpl custom du theme enfant (nav/logo/panier KMS) - elle affiche
   le header-nav/logo d'origine du theme classic. Ce masquage global les
   rendait invisibles (hauteur 0, aucune nav, aucun logo) UNIQUEMENT sur
   cette page precise, puisqu'ailleurs c'est le header.tpl custom (qui n'a
   pas ces classes) qui s'affiche a la place. On exclut donc page-order de
   ce masquage pour que le header reste visible pendant le checkout. */
body:not(.page-order) .header-nav { display: none !important; }
body:not(.page-order) #_desktop_logo { display: none !important; }
body:not(.page-order) .header-top-right { display: none !important; }
/* FIX 20/10 (suite) : Max a decide de garder le header/footer generique du
   theme parent sur la page commande (pas de header.tpl/footer.tpl custom
   en checkout - cf. plantage du 20/10 suite a une tentative de header
   custom, abandonnee). Seul reste a corriger : ce header generique garde
   le fond blanc par defaut du theme classic (pas de classe .kms-header),
   ce qui jure avec le reste du site en dark. On repasse juste le fond (et
   le texte "Contactez-nous"/logo) en dark, sans toucher au contenu/HTML du
   header lui-meme. */
body.page-order #header {
  background: var(--kms-bg-header) !important;
}
body.page-order #header a,
body.page-order #header span {
  color: var(--kms-blue) !important;
}
body { background: var(--kms-bg) !important; color: var(--kms-text) !important; font-family: var(--kms-font-body) !important; }

/* --- Bug du theme PARENT trouve par Max (21/10 puis confirme 22/10) :
   classic/theme.css contient une regle mal "scopee" -
   .page-content.page-cms ul,p{color:#7a7a7a} - ou seul "ul" est prefixe par
   ".page-content.page-cms", le "p" qui suit la virgule n'est prefixe de rien
   et s'applique donc a TOUS les <p> du site entier (bug d'origine du theme,
   jamais corrige par PrestaShop). Resultat : n'importe quel <p> qui n'a pas
   deja sa propre regle plus specifique dans ce fichier retombe sur ce gris
   #7a7a7a, meme si "body" ci-dessus est en --kms-text : un <p> est cible
   DIRECTEMENT par cette regle du parent, et un ciblage direct (meme sans
   !important) gagne toujours face a une couleur heritee d'un ancetre (meme
   en !important) - c'est pour ca que mettre --kms-text sur un conteneur
   parent ne suffit jamais a corriger le texte des <p> a l'interieur. Plutot
   que corriger page par page a l'infini (deja fait au cas par cas sur
   #manufacturer-description le 21/10, sur les pages Mon compte le 22/10...),
   on neutralise le bug a la racine, une bonne fois : tout <p> qui n'a pas
   de regle plus specifique ailleurs dans ce fichier recupere --kms-text.
   Les regles plus specifiques existantes (ex: ".box p", "#order-detail .box
   p"...) restent prioritaires et continuent de s'appliquer normalement. */
p {
  color: var(--kms-text) !important;
}

#wrapper { background: var(--kms-bg) !important; }
#wrapper .container { max-width: 100% !important; padding: 0 !important; }
#main .container { max-width: 1400px !important; padding: 0 20px !important; }

/* --- Barre du haut (topbar) --- */
.kms-topbar {
  background: var(--kms-bg-footer);
  padding: 6px 28px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 12px !important;
  border-bottom: 1px solid #0a0f1f;
  font-family: var(--kms-font-body);
}
.kms-topbar a, .kms-topbar span { color: var(--kms-orange) !important; text-decoration: none; font-size: 13px !important; font-weight: 600; text-shadow: 0 0 8px rgba(255,122,18,0.35); transition: color .2s var(--kms-ease), text-shadow .2s var(--kms-ease); }
.kms-topbar a:hover { color: white !important; text-shadow: 0 0 12px rgba(255,122,18,0.6); }
.kms-topbar-right { display: flex; gap: 10px; align-items: center; }
.kms-lang { border: 1px solid #0d2a4e; padding: 2px 8px; font-size: 11px; color: var(--kms-blue); text-decoration: none; font-family: var(--kms-font-body); font-weight: 600; border-radius: 3px; transition: all .2s var(--kms-ease); }
.kms-lang.active {
  background: #0a1f3d; color: var(--kms-blue);
  border-color: var(--kms-blue-d);
  box-shadow: 0 0 10px var(--kms-blue-glow);
}

/* --- Header principal --- */
.kms-header {
  background: var(--kms-bg-header);
  padding: 18px 28px;
  display: flex;
  align-items: center;
  gap: 18px;
  position: relative;
  border-bottom: 2px solid transparent;
  background-clip: padding-box;
  animation: kms-fade-up .5s var(--kms-ease) both;
  /* 04/11 (bug mobile - page decalee a droite apres clic "quantite") :
     .kms-nav et .kms-search-wrap passent a flex-basis:100% des 900px (voir
     plus bas) pour forcer le retour a la ligne. Sur mobile, Chrome calcule
     leur taille "hypothetique" (avant reduction par flex-shrink) a partir
     de leur contenu non enroule, ce qui peut gonfler la largeur de
     scroll de .kms-header bien au-dela de l'ecran (375px -> ~1500px)
     MEME si l'affichage visuel reste correct. .kms-header n'ayant pas de
     coupure horizontale propre, ce surplus remontait jusqu'a <body> :
     combine au moindre scroll programmatique (ex: focus d'un champ), la
     page se retrouvait decalee sur la droite, avec impossibilite de
     revenir en arriere au toucher (seul le scroll vertical restait
     utilisable). overflow-x:hidden ici coupe ce surplus a la source. */
  overflow-x: hidden;
}
.kms-header .kms-search-wrap,
.kms-header .kms-actions {
  margin-left: auto;
}
.kms-header::after {
  content: '';
  position: absolute;
  /* 19/10 (Lighthouse - animations non compositees) : remplace l'ancienne
     version qui animait background-position (repeint a chaque frame, pas
     delegable au GPU) par un vrai deplacement "transform", seule propriete
     que le navigateur peut animer sur le compositeur. Technique : boite 4x
     plus large que la ligne (400%) contenant le MEME degrade repete 2 fois
     (background-size:50% + repeat-x) puis translatee de -50% de sa propre
     largeur (= -2x la largeur reelle de la ligne) -> strictement le meme
     mouvement visuel qu'avant, boucle toujours parfaitement fluide (debut =
     fin, pas de "saut"). Le debordement a droite est invisible : il tombe
     hors-page et html,body a deja overflow-x:hidden (voir plus bas dans ce
     fichier), comme pour les mascottes en offset negatif. */
  bottom: -2px; left: 0; width: 400%; height: 2px;
  background: linear-gradient(90deg, transparent, var(--kms-blue-d) 25%, var(--kms-orange) 50%, var(--kms-blue-d) 75%, transparent);
  background-size: 50% 100%;
  background-repeat: repeat-x;
  animation: kms-border-flow-x 6s linear infinite;
}
@keyframes kms-border-flow-x {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.kms-header, .kms-header a, .kms-header span, .kms-header input {
  color: var(--kms-blue) !important;
  text-shadow: 0 0 8px var(--kms-blue-glow) !important;
  font-family: var(--kms-font-body) !important;
}
.kms-header a:hover { color: white !important; text-shadow: 0 0 12px rgba(41,214,255,0.7) !important; }
.kms-header input { text-shadow: none !important; }

.kms-logo {
  font-size: 24px; font-weight: 800;
  color: var(--kms-blue);
  font-family: var(--kms-font-display);
  letter-spacing: 3px; flex-shrink: 0;
  text-decoration: none;
  text-shadow: 0 0 16px rgba(41,214,255,0.7), 0 0 32px rgba(41,214,255,0.3);
  transition: filter .3s var(--kms-ease);
}
.kms-logo:hover { filter: brightness(1.2); }
.kms-logo img {
  height: 108px !important;
  width: auto !important;
  display: block !important;
  filter: brightness(1.1) drop-shadow(0 0 10px rgba(41,214,255,0.35)) !important;
  transition: filter .3s var(--kms-ease), transform .3s var(--kms-ease);
}
.kms-logo:hover img { transform: scale(1.04); filter: brightness(1.25) drop-shadow(0 0 16px rgba(41,214,255,0.55)) !important; }

.kms-logo span:not(.kms-cart-badge) { display: none !important; }
.kms-logo { display: flex; align-items: center; }

/* --- Navigation --- */
.kms-nav { display: flex; flex-shrink: 0; }
.kms-nav a {
  padding: 9px 17px; font-size: 15px;
  color: var(--kms-blue) !important;
  text-decoration: none;
  font-weight: 600;
  border-bottom: 2px solid transparent;
  letter-spacing: .5px;
  font-family: var(--kms-font-body);
  transition: all .25s var(--kms-ease);
  text-shadow: 0 0 8px rgba(41,214,255,0.3) !important;
  position: relative;
}
.kms-nav a::after {
  content: '';
  position: absolute;
  left: 17px; right: 17px; bottom: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--kms-blue), var(--kms-orange));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s var(--kms-ease);
}
.kms-nav a:hover, .kms-nav a.active {
  color: white;
  text-shadow: 0 0 12px rgba(41,214,255,0.5);
}
.kms-nav a:hover::after, .kms-nav a.active::after { transform: scaleX(1); }

/* --- Barre de recherche --- */
.kms-search-wrap { flex: 1; }
#search_widget form, .kms-search-wrap form {
  display: flex !important; align-items: center !important;
  background: #0a0f1e !important;
  border: 1px solid #1a3050 !important;
  border-radius: 6px !important;
  padding: 9px 9px 9px 18px !important;
  gap: 8px !important;
  box-shadow: 0 0 0 1px rgba(41,214,255,0.08), 0 0 20px rgba(41,214,255,0.05) !important;
  transition: box-shadow .25s var(--kms-ease), border-color .25s var(--kms-ease) !important;
}
#search_widget form:focus-within, .kms-search-wrap form:focus-within {
  border-color: var(--kms-blue-d) !important;
  box-shadow: 0 0 0 1px rgba(41,214,255,0.25), 0 0 24px rgba(41,214,255,0.15) !important;
}
#search_widget input[type="text"], .kms-search-wrap input {
  flex: 1 !important; background: transparent !important;
  border: none !important; outline: none !important;
  color: var(--kms-blue) !important; font-size: 15px !important;
  font-family: var(--kms-font-body) !important; font-weight: 500 !important; box-shadow: none !important;
}
#search_widget input::placeholder, .kms-search-wrap input::placeholder { color: #5a93c7 !important; }
#search_widget button[type="submit"], .kms-search-wrap button {
  background: linear-gradient(135deg, #0a1f3d, #0d2a50) !important;
  border: 1px solid var(--kms-blue-d) !important;
  color: var(--kms-blue) !important;
  padding: 8px 18px !important; font-size: 11px !important;
  cursor: pointer !important; font-family: var(--kms-font-body) !important; font-weight: 700 !important;
  letter-spacing: 1px !important; box-shadow: 0 0 10px rgba(41,214,255,0.2) !important;
  border-radius: 4px !important; height: auto !important; width: auto !important;
  transition: all .25s var(--kms-ease) !important;
}
#search_widget button[type="submit"]:hover, .kms-search-wrap button:hover {
  box-shadow: 0 0 18px rgba(41,214,255,0.45) !important;
  color: white !important;
}
/* 20/10 : l'ancien bouton texte "SEARCH_" (qui masquait .material-icons
   via ::after) est mort depuis que header.tpl utilise l'icone Tabler
   ti-search directement dans le markup - regle retiree, l'icone s'affiche
   maintenant normalement (voir head.tpl pour le chargement de la police
   Tabler Icons, repasse en bloquant le 20/10 suite a un bug d'affichage). */
#search_widget button .ti { font-size: 16px; }

/* --- Actions (compte / panier) --- */
.kms-actions { display: flex; gap: 18px; align-items: center; flex-shrink: 0; }
.kms-action {
  color: var(--kms-blue); text-decoration: none;
  display: flex; align-items: center; gap: 5px;
  font-size: 13px; font-family: var(--kms-font-body); font-weight: 600;
  transition: color .25s var(--kms-ease), transform .25s var(--kms-ease);
}
.kms-action:hover { color: white; transform: translateY(-1px); }
.kms-action i { font-size: 19px; }
.kms-cart-badge {
  background: var(--kms-orange); color: white;
  border-radius: 50%; width: 16px; height: 16px;
  display: flex; align-items: center; justify-content: center;
  font-size: 9px; font-weight: 700; box-shadow: 0 0 10px rgba(255,122,18,0.6);
}

/* ===== BANNIERE (hero) ===== */
.kms-banner {
  background: var(--kms-bg-mid);
  position: relative; overflow: hidden;
  height: 220px;
  border-bottom: 1px solid var(--kms-border);
  display: flex; align-items: center; justify-content: center;
}
.kms-banner img {
  width: 100%; height: 100%; object-fit: cover;
  position: absolute; inset: 0;
}
.kms-banner-grid {
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(41,214,255,0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(41,214,255,0.03) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
}
.kms-banner-glow-l {
  position: absolute; left: -80px; top: 50%; transform: translateY(-50%);
  width: 350px; height: 350px;
  background: radial-gradient(ellipse, rgba(41,214,255,0.08), transparent 70%);
  pointer-events: none;
}
.kms-banner-glow-r {
  position: absolute; right: -80px; top: 50%; transform: translateY(-50%);
  width: 350px; height: 350px;
  background: radial-gradient(ellipse, rgba(255,122,18,0.06), transparent 70%);
  pointer-events: none;
}
.kms-banner-placeholder {
  position: relative; z-index: 1;
  border: 1px dashed #0d2040;
  padding: 14px 32px; font-size: 10px;
  color: #0d2040; letter-spacing: 2px;
  font-family: var(--kms-font-body);
}

/* --- Titre sur l'image de la banniere (figcaption.caption, module
   slider) : texte blanc, contour noir epais + ombre, pour rester lisible
   par-dessus n'importe quelle image. Centre mais decale vers la droite
   (le logo est positionne a gauche de la banniere). Selecteurs multiples
   pour couvrir la structure reelle du module (caption seule ou
   caption > h2). */
/* 08/10 (demande de Max) : fond legerement sombre derriere le texte,
   meme principe que .kms-promo-txt (grille promo accueil) - assure du
   contraste quelle que soit l'image en dessous, maintenant que le texte
   passe en bleu neon (cf. h2 plus bas) plutot qu'en blanc a fort
   contour. padding/border-radius ajoutes pour que le fond respire
   autour du texte au lieu de le coller pile. */
.kms-banner figcaption.caption,
.kms-banner .caption,
.homeslider-container .caption,
figcaption.caption {
  position: absolute !important;
  top: 50% !important;
  left: 58% !important;
  transform: translate(-50%, -50%) !important;
  z-index: 3 !important;
  text-align: center !important;
  max-width: 70% !important;
  pointer-events: none !important;
  background: rgba(4,8,18,0.55) !important;
  padding: 12px 22px !important;
  border-radius: 10px !important;
  -webkit-backdrop-filter: blur(4px) !important;
  backdrop-filter: blur(4px) !important;
}
/* 08/10 (demande de Max) : la police etait figee sur 3 paliers fixes
   (28px / 18px sous 900px / 13px sous 600px) - entre deux paliers (ex.
   701px, juste au-dessus du palier tablette) elle restait trop grande
   pour la largeur dispo, le texte passait alors sur 2 lignes et
   chevauchait le logo. clamp() fait varier la taille en continu avec la
   largeur d'ecran (min 13px, max 28px comme avant, partie du milieu
   proportionnelle a la largeur) - fini les paliers, la police "epouse"
   toujours sa boite quelle que soit la largeur. */
.kms-banner figcaption.caption h2,
.kms-banner .caption h2,
.homeslider-container .caption h2,
figcaption.caption h2 {
  margin: 0 !important;
  /* 08/10 (demande de Max) : blanc -> bleu neon, meme couleur/effet de
     lueur que .kms-txt-blue (grille promo accueil, "Nouvelles varietes"
     etc.) pour rester coherent avec le reste du site. Avec le fond
     sombre ajoute sur le figcaption ci-dessus, la lueur bleue ressort
     bien sans avoir besoin d'un gros contour noir. */
  color: var(--kms-blue) !important;
  font-family: var(--kms-font-display) !important;
  font-weight: 700 !important;
  /* 08/10 (demande de Max) : le h2 porte la classe Bootstrap
     .text-uppercase (texte force en majuscules, plus large qu'en
     minuscules/casse normale - contribuait au retour a la ligne qui
     chevauchait le logo) alors que Max a saisi le texte en minuscule
     cote PrestaShop - text-transform:none (plus specifique que la seule
     classe .text-uppercase) annule la fois le forcage ici ET celui de
     Bootstrap, le texte s'affiche tel que saisi. */
  text-transform: none !important;
  letter-spacing: 1.5px !important;
  /* 08/10 (suite, demande de Max) : la taille etait calibree pour du
     texte TOUT EN MAJUSCULES (hauteur de caps uniforme, parait "plus
     grand" a taille egale) - repassee en casse normale (cf. fix
     text-transform ci-dessus), le texte parait plus petit a l'oeil.
     Plafond du clamp remonte de 28px a 32px pour compenser sur desktop. */
  font-size: clamp(13px, 1.4vw + 8px, 32px) !important;
  line-height: 1.25 !important;
  /* 08/10 (suite, demande de Max) : plus besoin d'un contour noir epais
     pour se detacher de l'image maintenant qu'il y a un fond sombre
     derriere (cf. figcaption plus haut) - contour retire entierement,
     remplace par une vraie lueur neon (meme esprit que .kms-txt-blue) +
     une ombre sombre discrete pour la profondeur/lisibilite. */
  -webkit-text-stroke: 0 !important;
  text-shadow:
    0 0 14px rgba(41,214,255,0.85), 0 0 30px rgba(41,214,255,0.45),
    0 2px 6px rgba(0,0,0,0.85) !important;
}
.kms-banner figcaption.caption div,
.kms-banner .caption div,
.homeslider-container .caption div,
figcaption.caption div {
  color: #fff !important;
  font-weight: 600 !important;
  text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000, 0 2px 8px rgba(0,0,0,0.8) !important;
}
@media (max-width: 900px) {
  .kms-banner figcaption.caption h2,
  .kms-banner .caption h2,
  .homeslider-container .caption h2,
  figcaption.caption h2 {
    letter-spacing: 1px !important;
  }
}
@media (max-width: 600px) {
  .kms-banner figcaption.caption,
  .kms-banner .caption,
  .homeslider-container .caption,
  figcaption.caption {
    left: 60% !important;
    max-width: 62% !important;
    padding: 8px 14px !important;
  }
  /* 08/10 (demande de Max) : sur mobile le texte etait "presque
     illisible" - contour retire completement a cette taille (texte deja
     petit, un contour meme fin devient proportionnellement epais et
     bouche les traits), l'ombre ci-dessus assure seule le contraste sur
     la photo, meme principe que le fix kms-promo-cat plus haut dans ce
     fichier. */
  .kms-banner figcaption.caption h2,
  .kms-banner .caption h2,
  .homeslider-container .caption h2,
  figcaption.caption h2 {
    letter-spacing: 0.5px !important;
    -webkit-text-stroke: 0 !important;
  }
  .kms-banner figcaption.caption div,
  .kms-banner .caption div,
  .homeslider-container .caption div,
  figcaption.caption div {
    font-size: 10px !important;
  }
}

/* ===== BLOC STATISTIQUES (accueil) ===== */
.kms-middle {
  display: grid;
  grid-template-columns: 25% 50% 25%;
  min-height: 300px;
  background: var(--kms-bg-section);
  border-bottom: 1px solid var(--kms-border);
  width: 80vw;
  margin-left: calc(50% - 40vw);
  animation: kms-fade-up .6s var(--kms-ease) both;
}
.kms-stats-col {
  background: #050810;
  padding: 0;
  display: flex; flex-direction: column; gap: 0;
  border-right: 1px solid var(--kms-border);
}
.kms-stats-right { border-right: none; border-left: 1px solid var(--kms-border); }
.kms-stats-label {
  font-size: 9px; color: #0d2040;
  letter-spacing: 2px; font-family: var(--kms-font-body);
  margin-bottom: 4px;
}
.kms-stat-item {
  flex: 1;
  padding: 22px 18px;
  background: #08101f;
  border: none;
  border-bottom: 1px solid #0f1e38;
  position: relative;
  overflow: hidden;
  background-size: cover;
  background-position: center;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  transition: background-color .25s var(--kms-ease);
}
.kms-stat-item:hover { background-color: rgba(41,214,255,0.03); }
.kms-stat-item:last-child { border-bottom: none; }

.kms-stat-item {
  text-decoration: none !important;
  color: inherit !important;
  cursor: pointer !important;
}
.kms-stat-item::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.kms-stat-item::before {
  content: ''; position: absolute;
  left: 0; top: 0; bottom: 0; width: 3px;
}
.kms-stat-item.kms-blue::before {
  background: var(--kms-blue);
  box-shadow: 0 0 10px var(--kms-blue), 0 0 22px rgba(41,214,255,0.4);
}
.kms-stat-item.kms-orange::before {
  background: var(--kms-orange);
  box-shadow: 0 0 10px var(--kms-orange), 0 0 22px rgba(255,122,18,0.4);
}
.kms-stat-n {
  display: inline !important;
  width: auto !important;
  max-width: max-content !important;
  align-self: flex-start !important;
  font-size: 32px; font-weight: 800;
  letter-spacing: 1px; font-family: var(--kms-font-display);
  position: relative; z-index: 1;
  background: rgba(4, 8, 18, 0.45) !important;
  padding: 3px 9px !important;
  border-radius: 5px !important;
}
.kms-stat-item.kms-blue .kms-stat-n {
  color: var(--kms-blue);
  text-shadow: 0 0 14px rgba(41,214,255,0.65);
}
.kms-stat-item.kms-orange .kms-stat-n {
  color: var(--kms-orange);
  text-shadow: 0 0 14px rgba(255,122,18,0.65);
}
.kms-stat-l {
  display: inline !important;
  width: auto !important;
  max-width: max-content !important;
  align-self: flex-start !important;

  font-size: 11px;
  color: rgba(255,255,255,0.75);
  letter-spacing: 1.5px;
  margin-top: 5px;
  font-family: var(--kms-font-body);
  font-weight: 600;
  position: relative;
  z-index: 1;

  background: rgba(4, 8, 18, 0.45) !important;
  padding: 3px 9px !important;
  border-radius: 5px !important;
}

/* 08/10 (demande de Max, bascule prochaine de toutes les images en webp) :
   background-image accepte une liste - chaque image separee par une
   virgule est posee en COUCHE empilee (la 1ere listee est au-dessus).
   Si la 1ere (.webp) n'existe pas encore, son chargement echoue en
   silence et seule la 2eme (format actuel) reste visible dessous ; des
   que Max ajoute le .webp, il se charge et s'affiche par-dessus - bascule
   automatique, sans repasser par le code. stat-expedition/stat-europe
   sont deja en .webp pur (round precedent), pas besoin de 2eme couche. */
.kms-stat-item.kms-blue:first-child {
  background-image: url('../img/stat-references.webp');
}
.kms-stat-item.kms-orange:last-child {
  background-image: url('../img/stat-expedition.webp');
}
.kms-stats-right .kms-stat-item.kms-blue:first-child {
  background-image: url('../img/stat-banques.webp');
}
.kms-stats-right .kms-stat-item.kms-orange:last-child {
  background-image: url('../img/stat-europe.webp');
}

/* ===== GRILLE PROMO (4 tuiles) ===== */
.kms-promo-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr; gap: 1px;
  background: #0a0f1f;
}
.kms-promo {
  position: relative; cursor: pointer;
  overflow: hidden; min-height: 110px;
  display: flex; align-items: flex-end;
  padding: 16px 18px; background: #070b18;
  text-decoration: none; transition: background .3s var(--kms-ease), transform .3s var(--kms-ease);
}
.kms-promo:hover { background: #0a0f20; transform: scale(1.015); z-index: 2; }
.kms-promo-photo {
  position: absolute; inset: 0; z-index: 0;
  background-size: cover;
  background-position: center;
  opacity: 1;
  filter: saturate(1.1) contrast(1.03);
  transform: scale(1.04);
  transition: transform .5s var(--kms-ease), filter .3s var(--kms-ease);
}
.kms-promo:hover .kms-promo-photo { transform: scale(1.11); filter: saturate(1.25) contrast(1.08); }
/* Meme principe webp-en-couche-du-dessus que les .kms-stat-item plus haut
   (08/10, demande de Max). */
.kms-promo-photo-1 { background-image: url('../img/variete.webp'); }
.kms-promo-photo-2 { background-image: url('../img/promo.webp'); }
.kms-promo-photo-3 { background-image: url('../img/best.webp'); }
.kms-promo-photo-4 { background-image: url('../img/premium.webp'); }
.kms-promo-bg {
  position: absolute; inset: 0; z-index: 1; opacity: .12;
  mix-blend-mode: screen;
  transition: opacity .3s var(--kms-ease);
}
.kms-promo:hover .kms-promo-bg { opacity: .22; }
.kms-promo-bg-1 { background: linear-gradient(135deg, #0e86c4, transparent); }
.kms-promo-bg-2 { background: linear-gradient(135deg, #ff7a12, transparent); }
.kms-promo-bg-3 { background: linear-gradient(135deg, #7fff00, transparent); }
.kms-promo-bg-4 { background: linear-gradient(135deg, #bb44ff, transparent); }
.kms-promo-border {
  position: absolute; inset: 0; z-index: 1;
  border: 1px solid transparent; transition: border-color .3s var(--kms-ease);
}
.kms-promo:nth-child(1):hover .kms-promo-border { border-color: rgba(41,214,255,0.4); box-shadow: inset 0 0 24px rgba(41,214,255,0.12); }
.kms-promo:nth-child(2):hover .kms-promo-border { border-color: rgba(255,122,18,0.4); box-shadow: inset 0 0 24px rgba(255,122,18,0.12); }
.kms-promo:nth-child(3):hover .kms-promo-border { border-color: rgba(127,255,0,0.4); box-shadow: inset 0 0 24px rgba(127,255,0,0.1); }
.kms-promo:nth-child(4):hover .kms-promo-border { border-color: rgba(187,68,255,0.4); box-shadow: inset 0 0 24px rgba(187,68,255,0.1); }
.kms-promo-txt {
  position: relative; z-index: 2;
  display: inline-block;
  padding: 6px 11px;
  border-radius: 6px;
  background: rgba(4,8,18,0.6);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
/* kms-promo-cat restait visuellement gris malgre color:#fff !important
   (08/10, demande de Max) : la couleur etait bien appliquee, c'est le
   contour noir epais (-webkit-text-stroke 0.5px) cumule a 4 ombres de 1px
   formant un second contour qui "mangeait" le remplissage blanc sur du
   texte aussi petit (10px) - l'oeil percoit alors du gris, pas un bug de
   cascade. Le fond semi-transparent de .kms-promo-txt assure deja assez
   de contraste derriere le texte : contour retire, une seule ombre
   discrete suffit. */
.kms-promo-cat { font-size: 10px; color: #fff !important; letter-spacing: 2px; text-transform: uppercase; font-family: var(--kms-font-body); font-weight: 600; margin-bottom: 0 !important; text-shadow: 0 1px 3px rgba(0,0,0,0.6) !important; }
.kms-promo-name { font-size: 17px; font-weight: 700; letter-spacing: .3px; font-family: var(--kms-font-display); }
.kms-txt-blue   { color: var(--kms-blue);   text-shadow: 0 0 12px rgba(41,214,255,0.7), 0 1px 5px rgba(0,0,0,0.85); }
.kms-txt-orange { color: var(--kms-orange); text-shadow: 0 0 12px rgba(255,122,18,0.7), 0 1px 5px rgba(0,0,0,0.85); }
.kms-txt-green  { color: var(--kms-green);  text-shadow: 0 0 12px rgba(127,255,0,0.6), 0 1px 5px rgba(0,0,0,0.85); }
.kms-txt-purple { color: var(--kms-purple); text-shadow: 0 0 12px rgba(187,68,255,0.6), 0 1px 5px rgba(0,0,0,0.85); }
.kms-promo-badge {
  position: absolute; top: 12px; right: 12px;
  font-size: 9px; padding: 4px 11px;
  letter-spacing: 1px; font-weight: 700;
  font-family: var(--kms-font-body); z-index: 2;
  border-radius: 3px;
}
.kms-badge-blue   { background: var(--kms-blue-d); color: white; box-shadow: 0 0 10px rgba(14,134,196,0.6); }
.kms-badge-orange { background: var(--kms-orange);  color: white; box-shadow: 0 0 10px rgba(255,122,18,0.6); }
.kms-badge-green  { background: var(--kms-green);   color: #050810; box-shadow: 0 0 10px rgba(127,255,0,0.4); }
.kms-badge-purple { background: var(--kms-purple);  color: white; box-shadow: 0 0 10px rgba(187,68,255,0.4); }

/* 08/10 (demande de Max) : les 4 tuiles de .kms-promo-grid (Nouveautes /
   Promotions / Meilleures ventes / Genetics Premium, accueil) gardaient
   leur taille desktop (nom 17px, categorie 10px, badge 9px) sur mobile -
   aucun palier mobile n'existait ici. Sur une tuile deux fois plus
   etroite (grille 2 colonnes en dessous de 575px), ca paraissait trop
   gros. Tout resserre d'un cran : texte, badge et espace interieur de la
   tuile. */
@media (max-width: 575px) {
  .kms-promo {
    min-height: 90px !important;
    padding: 10px 12px !important;
  }
  .kms-promo-txt {
    padding: 4px 8px !important;
  }
  .kms-promo-cat {
    font-size: 8px !important;
    letter-spacing: 1px !important;
  }
  .kms-promo-name {
    font-size: 14px !important;
  }
  .kms-promo-badge {
    top: 8px !important;
    right: 8px !important;
    font-size: 8px !important;
    padding: 3px 8px !important;
  }
}

/* ===== SLOGAN ===== */
.kms-slogan-section {
  background: #060a14;
  padding: 34px 28px 10px; text-align: center;
  margin-bottom: 0 !important;
  border-top: 1px solid var(--kms-border);
  border-bottom: 1px solid var(--kms-border);
  position: relative; overflow: hidden;
}
.kms-slogan-glow {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at center, rgba(41,214,255,0.05), transparent 60%);
  pointer-events: none;
}
.kms-slogan {
  font-size: 32px; font-weight: 800;
  letter-spacing: 5px; text-transform: uppercase;
  color: white; font-family: var(--kms-font-display);
  position: relative;
}
.kms-bl { color: var(--kms-blue); text-shadow: 0 0 20px rgba(41,214,255,0.65), 0 0 40px rgba(41,214,255,0.3); animation: kms-glow-pulse 3.5s ease-in-out infinite; }
.kms-or { color: var(--kms-orange); text-shadow: 0 0 20px rgba(255,122,18,0.65), 0 0 40px rgba(255,122,18,0.3); animation: kms-glow-pulse 3.5s ease-in-out infinite 1.2s; }

.kms-slogan .kms-bl { color: var(--kms-blue) !important; }
.kms-slogan .kms-or { color: var(--kms-orange) !important; }
.kms-accroche {
  font-size: 17px; color: #8fc4e8;
  margin-top: 22px; letter-spacing: .8px;
  position: relative; font-family: var(--kms-font-body); font-weight: 600;
  text-shadow: 0 0 12px rgba(41,214,255,0.25);
}
.kms-accroche strong { color: var(--kms-blue); }

/* ===== BANQUES DE GRAINES - carousel (accueil) ===== */
.kms-brands-section {
  background: var(--kms-bg-banks);
  padding: 56px 16px;
  border-bottom: 1px solid var(--kms-border);
}

.kms-brands-header { text-align: center; margin-bottom: 18px; }
.kms-brands-deco {
  display: flex; align-items: center;
  justify-content: center; gap: 14px; margin-bottom: 10px;
}
.kms-brands-title {
  font-size: 40px !important; font-weight: 800 !important;
  letter-spacing: 5px !important;
  text-transform: uppercase !important;
  font-family: var(--kms-font-display) !important;
  margin: 0 !important;
  display: inline-block !important;

  background: linear-gradient(90deg,
    var(--kms-blue) 0%, var(--kms-orange) 25%, var(--kms-blue) 50%,
    var(--kms-orange) 75%, var(--kms-blue) 100%) !important;
  background-size: 250% auto !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  animation: kms-title-shift 6s linear infinite !important;
}

.kms-brands-title .kms-bl {
  color: inherit !important;
  text-shadow: none !important;
  animation: none !important;
}
@keyframes kms-title-shift {
  0%   { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

.kms-brands-title::after {
  content: '';
  display: block;
  height: 4px;
  width: min(70%, 320px);
  margin: 12px auto 0;
  border-radius: 3px;
  background: linear-gradient(90deg,
    var(--kms-blue) 0%, var(--kms-orange) 25%, var(--kms-blue) 50%,
    var(--kms-orange) 75%, var(--kms-blue) 100%);
  background-size: 250% auto;
  animation: kms-title-shift 6s linear infinite;
  box-shadow: 0 0 12px rgba(41,214,255,0.6), 0 0 14px rgba(255,122,18,0.4);
}
.kms-deco-line {
  width: 70px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--kms-blue-d));
}
.kms-deco-line.kms-deco-r { background: linear-gradient(90deg, var(--kms-blue-d), transparent); }
.kms-deco-dot {
  width: 6px; height: 6px;
  background: var(--kms-blue-d);
  box-shadow: 0 0 10px var(--kms-blue);
  border-radius: 50%;
  animation: kms-glow-pulse 2.4s ease-in-out infinite;
}
.kms-brands-sub {
  font-size: 17px !important; color: var(--kms-text) !important;
  letter-spacing: 1px; font-family: var(--kms-font-body); font-weight: 600 !important;
  margin-top: 14px !important;
  text-shadow: 0 0 10px rgba(41,214,255,0.3);
}
.kms-brands-carousel-wrap {
  position: relative;
  max-width: 1400px;
  margin: 0 auto;
  padding: 0 58px;
}
.kms-brands-carousel {
  width: 100%;
  overflow-x: auto;
  overflow-y: hidden;

  scroll-behavior: smooth;
  scrollbar-width: none;
  -ms-overflow-style: none;


  padding: 80px 10px;
}
.kms-brands-carousel::-webkit-scrollbar { display: none; height: 0; }
.kms-brands-track {
  display: grid;
  grid-template-rows: repeat(6, auto);
  grid-auto-flow: column;
  grid-auto-columns: 150px;
  gap: 8px 14px;
}

.kms-brands-arrow {
  position: absolute;
  top: 50%;
  width: 52px; height: 52px;
  margin-top: -26px;
  border-radius: 50%;
  border: 2px solid transparent;
  background:
    linear-gradient(rgba(13,32,64,0.88), rgba(13,32,64,0.88)) padding-box,
    linear-gradient(135deg, var(--kms-blue), var(--kms-orange)) border-box;
  color: var(--kms-blue);
  font-size: 26px;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 0 18px rgba(41,214,255,0.35), inset 0 0 14px rgba(41,214,255,0.1);
  transition: transform .25s var(--kms-ease), box-shadow .25s var(--kms-ease), color .25s var(--kms-ease), opacity .25s var(--kms-ease);
  z-index: 4;
}
.kms-brands-arrow-prev { left: 3px; }
.kms-brands-arrow-next { right: 3px; }
.kms-brands-arrow span { position: relative; z-index: 1; transform: translateY(-1px); }
.kms-brands-arrow::before {
  content: '';
  position: absolute;
  inset: -7px;
  border-radius: 50%;
  background: conic-gradient(from 0deg, var(--kms-blue), var(--kms-orange), var(--kms-blue));
  filter: blur(7px);
  opacity: 0;
  transition: opacity .3s var(--kms-ease);
  animation: kms-spin 4s linear infinite;
  pointer-events: none;
  z-index: -1;
}
.kms-brands-arrow:hover:not(:disabled) {
  color: white;
  transform: scale(1.12);
  box-shadow: 0 0 30px rgba(41,214,255,0.55), 0 0 16px rgba(255,122,18,0.4);
}
.kms-brands-arrow:hover:not(:disabled)::before { opacity: 0.9; }
.kms-brands-arrow:active:not(:disabled) { transform: scale(0.95); }
.kms-brands-arrow:disabled { opacity: 0.25; cursor: default; box-shadow: none; }
.kms-brands-arrow:disabled::before { display: none; }

.kms-brands-mascot {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  height: 100%;
  max-height: 350px;
  width: auto;
  /* 19/10 (Lighthouse - CLS) : mascotteleft.webp/mascotte right.webp font
     406x614 (pas carrees, contrairement aux autres mascottes du theme) -
     ratio exact pour que le navigateur calcule la largeur a partir de la
     hauteur (fluide, 100%) sans attendre le chargement de l'image. */
  aspect-ratio: 406 / 614;
  object-fit: contain;
  border-radius: 14px;
  pointer-events: none;
  user-select: none;
  z-index: 1;
  filter: drop-shadow(0 10px 22px rgba(0,0,0,0.5));
}
.kms-brands-mascot-left { left: -292px; }
.kms-brands-mascot-right { right: -292px; }
@media (max-width: 1600px) {
  .kms-brands-mascot { display: none; }
}

.kms-brands-progress {
  max-width: 1400px;
  margin: 0 auto;
  height: 2px;
  background: var(--kms-border);
  border-radius: 2px;
  overflow: hidden;
}
.kms-brands-progress-bar {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--kms-blue), var(--kms-orange));
  transition: width .2s linear;
}

@keyframes kms-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.kms-brand-card {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  cursor: pointer !important;
  padding: 2px !important;
  text-decoration: none !important;
  position: relative !important;
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  transition: transform 1.5s var(--kms-ease) !important;

  width: fit-content !important;
  justify-self: center !important;
  align-self: center !important;
}

.kms-brand-card::before {
  content: '' !important;
  position: absolute !important;
  top: 50% !important; left: 50% !important;
  width: 168px !important; height: 168px !important;
  margin: -84px 0 0 -84px !important;
  border-radius: 50% !important;
  background: conic-gradient(from 0deg,
    var(--kms-blue) 0%, var(--kms-blue) 42%, transparent 50%,
    var(--kms-orange) 50%, var(--kms-orange) 92%, transparent 100%) !important;
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 6px), #fff calc(100% - 6px)) !important;
          mask: radial-gradient(farthest-side, transparent calc(100% - 6px), #fff calc(100% - 6px)) !important;
  filter: drop-shadow(0 0 10px rgba(41,214,255,0.7)) drop-shadow(0 0 10px rgba(255,122,18,0.4)) !important;
  opacity: 0 !important;
  transition: opacity 1.5s var(--kms-ease) !important;
  animation: kms-spin 6s linear infinite !important;
  pointer-events: none !important;
  z-index: 0 !important;
}

.kms-brand-card::after {
  content: '' !important;
  position: absolute !important;
  top: 50% !important; left: 50% !important;
  width: 240px !important; height: 240px !important;
  margin: -120px 0 0 -120px !important;
  border-radius: 50% !important;
  background: radial-gradient(circle,
    var(--kms-bg-banks) 0%, var(--kms-bg-banks) 46%, transparent 84%) !important;
  opacity: 0 !important;
  transition: opacity 1.5s var(--kms-ease) !important;
  pointer-events: none !important;
  z-index: -1 !important;
}

.kms-brand-card:hover {
  transform: translateY(-8px) !important;
  z-index: 5 !important;
}
.kms-brand-card:hover::before { opacity: 1 !important; }
.kms-brand-card:hover::after { opacity: 1 !important; }
.kms-brand-card img {
  width: 108px !important;
  height: 74px !important;
  object-fit: contain !important;
  position: relative !important;
  z-index: 1 !important;
  filter: brightness(0.97) saturate(1.15) !important;
  transform: scale(1) !important;
  transition: filter 1.5s var(--kms-ease), transform 1.5s var(--kms-ease), box-shadow 1.5s var(--kms-ease) !important;

  background: #fff !important;
  border-radius: 8px !important;
  padding: 8px !important;
  box-sizing: border-box !important;
  box-shadow: 0 2px 10px rgba(0,0,0,0.35) !important;
}
.kms-brand-card:hover img {
  filter: brightness(1.25) saturate(1.35) drop-shadow(0 0 18px rgba(41,214,255,0.65)) !important;
  transform: scale(1.16) !important;
}
.kms-brand-card span {
  font-size: 12px !important;
  color: var(--kms-blue) !important;
  text-shadow: 0 0 8px rgba(41,214,255,0.6) !important;
  text-align: center !important;
  letter-spacing: .3px !important;
  text-transform: uppercase !important;
  font-family: var(--kms-font-body) !important;
  font-weight: 700 !important;
  position: relative !important;
  z-index: 1 !important;
  transform: scale(1) !important;
  transition: color 1.5s var(--kms-ease), text-shadow 1.5s var(--kms-ease), transform 1.5s var(--kms-ease) !important;
  line-height: 1.3 !important;
}
.kms-brand-card:hover span {
  color: white !important;
  text-shadow: 0 0 6px rgba(255,255,255,0.9), 0 0 16px rgba(41,214,255,0.95), 0 0 28px rgba(255,122,18,0.75) !important;
  transform: scale(1.08) !important;
}

/* ===== PRODUITS & FILTRES - premiers ajustements ===== */
.product-miniature {
  background: #08101f !important;
  border: 1px solid #0f1e38 !important;
  border-radius: 6px !important;
  transition: border-color .25s var(--kms-ease), box-shadow .25s var(--kms-ease), transform .25s var(--kms-ease) !important;
}
.product-miniature:hover { border-color: var(--kms-blue-d) !important; box-shadow: 0 10px 24px rgba(0,0,0,0.35), 0 0 14px rgba(41,214,255,0.15) !important; transform: translateY(-3px) !important; }
.product-miniature .product-title a { color: var(--kms-orange) !important; font-family: var(--kms-font-body) !important; font-size: 14px !important; font-weight: 600 !important; text-shadow: 0 0 6px rgba(255,122,18,0.4) !important; }
.product-miniature .price { color: var(--kms-orange) !important; font-family: var(--kms-font-display) !important; font-weight: 700 !important; text-shadow: 0 0 8px rgba(255,122,18,0.45) !important; font-size: 15px !important; }
.btn-primary, .add-to-cart, #add-to-cart {
  background: linear-gradient(135deg, #0a1f3d, #0d2a50) !important; border: 1px solid var(--kms-blue-d) !important;
  color: var(--kms-blue) !important; border-radius: 4px !important;
  font-family: var(--kms-font-body) !important; font-weight: 700 !important; letter-spacing: 1px !important;
  box-shadow: 0 0 10px rgba(41,214,255,0.18) !important;
  transition: all .25s var(--kms-ease) !important;
}
.btn-primary:hover, .add-to-cart:hover {
  background: linear-gradient(135deg, #0d2a50, #123a68) !important; box-shadow: 0 0 20px rgba(41,214,255,0.3) !important; color: white !important;
}

#left-column { background: #050810 !important; border: 1px solid var(--kms-border) !important; border-radius: 6px !important; padding: 18px !important; }
#search_filters .facet .facet-title {
  font-size: 11px !important; font-weight: 700 !important; color: var(--kms-blue) !important;
  text-transform: uppercase !important; letter-spacing: 2px !important;
  font-family: var(--kms-font-body) !important;
  border-bottom: 1px solid var(--kms-border) !important; padding-bottom: 8px !important; margin-bottom: 10px !important;
}
#search_filters .facet-label a { color: var(--kms-muted) !important; font-family: var(--kms-font-body) !important; font-size: 13px !important; transition: color .2s var(--kms-ease) !important; }
#search_filters .facet-label a:hover { color: var(--kms-blue) !important; }

.breadcrumb { background: #050810 !important; border: 1px solid var(--kms-border) !important; border-radius: 6px !important; padding: 8px 16px !important; font-family: var(--kms-font-body) !important; font-size: 13px !important; }
.breadcrumb a { color: var(--kms-blue) !important; }
.breadcrumb .current { color: var(--kms-muted) !important; }

.page-list li a { border: 1px solid var(--kms-border) !important; color: var(--kms-muted) !important; border-radius: 4px !important; background: #050810 !important; font-family: var(--kms-font-body) !important; font-weight: 600 !important; transition: all .2s var(--kms-ease) !important; }
.page-list li.current a { background: var(--kms-blue-d) !important; color: white !important; border-color: var(--kms-blue) !important; box-shadow: 0 0 10px rgba(41,214,255,0.25) !important; }

#footer { background: var(--kms-bg-footer) !important; }
#footer a { color: #2a5a94 !important; font-size: 13px !important; font-family: var(--kms-font-body) !important; transition: color .2s var(--kms-ease) !important; }
#footer a:hover { color: var(--kms-blue) !important; }

#footer p { color: #2a5a94 ; font-family: var(--kms-font-body) !important; }

/* ===== FOOTER ===== */
.kms-footer-bottom {
  border-top: 1px solid #1a2040; padding: 16px 28px;
  display: flex; justify-content: space-between; align-items: center;
  font-size: 13px; color: var(--kms-orange);
  font-family: var(--kms-font-body); font-weight: 700;
  background: #020306;
  text-shadow: 0 0 10px rgba(255,122,18,0.45);
}
.kms-footer-bottom-link {
  position: relative;
  color: #0d2040;
  text-decoration: none;
  transition: color .25s var(--kms-ease);
}
.kms-footer-bottom-link::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -3px;
  height: 2px;
  background: linear-gradient(90deg, var(--kms-blue), var(--kms-orange));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s var(--kms-ease);
}
.kms-footer-bottom-link:hover { color: white; }
.kms-footer-bottom-link:hover::after { transform: scaleX(1); }
.kms-footer-brand-link {
  position: relative;
  left: 120px;
  display: inline-block;
  margin-bottom: 14px;
}
.kms-footer-brand-link::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -4px;
  height: 2px;
  background: linear-gradient(90deg, var(--kms-blue), var(--kms-orange));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s var(--kms-ease);
}
.kms-footer-brand-link:hover::after { transform: scaleX(1); }
.kms-pay { display: flex; gap: 8px; }
.kms-pay span { background: rgba(255,122,18,0.08); border: 1px solid rgba(255,122,18,0.3); padding: 4px 12px; border-radius: 3px; font-size: 12px; color: var(--kms-orange); font-family: var(--kms-font-body); font-weight: 600; text-shadow: 0 0 6px rgba(255,122,18,0.3); }

.kms-footer-grid {
  padding: 44px 32px 26px;
  display: grid;
  grid-template-columns: 2.5fr 1fr 1fr 1fr 1fr 1fr; /* 07/10 : LIVRAISON separee de PAIEMENT (6 colonnes au lieu de 5), 2.5fr pour garder la meme largeur relative de logo qu'avant */
  gap: 32px;
  background: var(--kms-bg-footer);
}
.kms-footer-desc {
  font-size: 13px; color: var(--kms-orange) !important;
  line-height: 1.7; margin-bottom: 10px;
  font-family: var(--kms-font-body); font-weight: 500;}

.kms-footer-legal {
  font-size: 18px ; color: var(--kms-green)!important;
  line-height: 1.6; font-family: var(--kms-font-body);
}
.kms-footer-h {
  color: var(--kms-orange) !important;
  font-size: 14px !important; font-weight: 700 !important;
  letter-spacing: 2px !important; text-transform: uppercase !important;
  font-family: var(--kms-font-display) !important;
  margin-bottom: 16px !important;
  padding-bottom: 10px !important;
  text-shadow: 0 0 12px rgba(255,122,18,0.5) !important;
  position: relative !important;
  display: inline-block !important;
}
.kms-footer-h::after {
  content: '' !important;
  position: absolute !important;
  left: 0 !important; bottom: 0 !important;
  width: 100% !important; height: 2px !important;
  background: linear-gradient(90deg, var(--kms-orange), transparent) !important;
  box-shadow: 0 0 8px rgba(255,122,18,0.6) !important;
}

.kms-footer-livraison-link {
  display: block !important;
  text-decoration: none !important;
  cursor: pointer !important;
  border-radius: 6px !important;
  margin: -6px -8px 0 !important;
  padding: 6px 8px !important;
  transition: background-color .2s var(--kms-ease) !important;
}
.kms-footer-livraison-link:hover {
  background-color: rgba(255,122,18,0.06) !important;
}
.kms-footer-livraison-link:hover .kms-footer-p {
  color: var(--kms-blue) !important;
}
.kms-footer-link {
  display: block; font-size: 13px;
  color: #4da6ff; margin-bottom: 7px;
  text-decoration: none;
  font-family: var(--kms-font-body); font-weight: 500;
  transition: color .2s var(--kms-ease), padding-left .2s var(--kms-ease);
  position: relative;
  width: fit-content;
}
.kms-footer-link::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -1px;
  height: 2px;
  background: linear-gradient(90deg, var(--kms-blue), var(--kms-orange));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s var(--kms-ease);
}
.kms-footer-link:hover { color: white !important; padding-left: 4px; }
.kms-footer-link:hover::after { transform: scaleX(1); }
.kms-footer-link-blue { color: var(--kms-blue-d) !important; }
.kms-footer-link-orange { color: #a5541c !important; }
.kms-footer-link-blue:hover { color: var(--kms-blue) !important; }
.kms-footer-link-orange:hover { color: var(--kms-orange) !important; }
.kms-footer-p {
  font-size: 13px; color: #4da6ff;
  margin-bottom: 6px; font-family: var(--kms-font-body); font-weight: 500;
}
.kms-nav-new { color: var(--kms-blue) !important; }
.kms-nav-promo { color: var(--kms-orange) !important; }

#kms-popup-18 { position: fixed; inset: 0; z-index: 99999; }
.kms-popup-overlay { position: absolute; inset: 0; background: rgba(3,5,15,0.97); backdrop-filter: blur(6px); }

/* ===== POPUP (fenetre promo) ===== */
.kms-popup-box {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%,-50%);
  background: #08101f;
  border: 1px solid rgba(41,214,255,0.3);
  border-radius: 10px; padding: 44px 38px;
  max-width: 480px; width: 90%; text-align: center;
  box-shadow: 0 24px 80px rgba(0,0,0,0.8), 0 0 44px rgba(41,214,255,0.1);
  animation: kmsPopIn .35s var(--kms-ease);
}
@keyframes kmsPopIn {
  from { opacity:0; transform:translate(-50%,-52%) scale(.96); }
  to   { opacity:1; transform:translate(-50%,-50%) scale(1); }
}
.kms-popup-brand { font-size: 26px; font-weight: 800; color: var(--kms-blue); font-family: var(--kms-font-display); letter-spacing: 3px; margin-bottom: 14px; text-shadow: 0 0 16px rgba(41,214,255,0.6); }
.kms-popup-title { font-size: 17px !important; font-weight: 500 !important; color: var(--kms-text) !important; margin: 0 0 4px !important; font-family: var(--kms-font-body) !important; }
.kms-popup-sub { font-size: 12px; color: var(--kms-muted); margin-bottom: 22px; font-family: var(--kms-font-body); }
.kms-popup-warning { display: flex; align-items: center; justify-content: center; gap: 8px; background: rgba(255,122,18,0.08); border: 1px solid rgba(255,122,18,0.25); color: var(--kms-orange); padding: 11px 16px; border-radius: 5px; font-size: 13px; font-weight: 600; margin-bottom: 18px; font-family: var(--kms-font-body); }
.kms-popup-text { font-size: 13px; color: var(--kms-muted); line-height: 1.6; margin-bottom: 26px; font-family: var(--kms-font-body); }
.kms-popup-text strong { color: var(--kms-text); }
.kms-popup-btns { display: flex; flex-direction: column; gap: 11px; margin-bottom: 18px; }
.kms-popup-yes { background: linear-gradient(135deg, #0a1f3d, #0d2a50); color: var(--kms-blue); border: 1px solid var(--kms-blue-d); padding: 14px 24px; border-radius: 5px; font-size: 13px; font-weight: 700; cursor: pointer; font-family: var(--kms-font-body); letter-spacing: 1px; box-shadow: 0 0 14px rgba(41,214,255,0.22); transition: box-shadow .25s var(--kms-ease), transform .25s var(--kms-ease); }
.kms-popup-yes:hover { box-shadow: 0 0 24px rgba(41,214,255,0.45); transform: translateY(-1px); }
.kms-popup-no { display: block; padding: 11px; font-size: 12px; color: var(--kms-muted); text-decoration: none; border: 1px solid #0d2040; border-radius: 5px; font-family: var(--kms-font-body); transition: color .2s var(--kms-ease); }
.kms-popup-no:hover { color: #6ea3d4; }
.kms-popup-legal { font-size: 10px; color: #0d2040; font-family: var(--kms-font-body); }
.kms-popup-legal a { color: var(--kms-muted); }

.kms-badge { font-family: var(--kms-font-body) !important; font-weight: 700 !important; border-radius: 4px !important; font-size: 11px !important; letter-spacing: 1px !important; }
.kms-badge-genetics { background: rgba(41,214,255,0.1) !important; color: var(--kms-blue) !important; border: 1px solid var(--kms-blue-d) !important; text-shadow: 0 0 8px rgba(41,214,255,0.5) !important; }
.kms-badge-culture { background: rgba(255,122,18,0.1) !important; color: var(--kms-orange) !important; border: 1px solid rgba(255,122,18,0.3) !important; text-shadow: 0 0 8px rgba(255,122,18,0.5) !important; }
.kms-badge-effects { background: rgba(41,214,255,0.1) !important; color: var(--kms-blue) !important; border: 1px solid var(--kms-blue-d) !important; text-shadow: 0 0 8px rgba(41,214,255,0.5) !important; }
.kms-badge-type { background: rgba(255,122,18,0.1) !important; color: var(--kms-orange) !important; border: 1px solid rgba(255,122,18,0.3) !important; text-shadow: 0 0 8px rgba(255,122,18,0.5) !important; }
.kms-feature-label { color: #6fb8e8 !important; font-family: var(--kms-font-body) !important; }
.kms-feature-value { color: var(--kms-blue) !important; font-family: var(--kms-font-body) !important; font-weight: 700 !important; text-shadow: 0 0 6px rgba(41,214,255,0.4) !important; }
.kms-total-block strong { color: var(--kms-orange) !important; text-shadow: 0 0 8px rgba(255,122,18,0.3) !important; }

/* ===== TICKER BANQUES (bande defilante) ===== */
.kms-ticker-wrap {
  background: var(--kms-bg) !important;
  border-top: 1px solid #0d1a3a;
  border-bottom: 1px solid #0d1a3a;
  overflow: hidden;

  padding: 4px 0;
  position: relative;
  width: 100vw !important;
  margin-left: calc(-50vw + 50%) !important;
  max-width: none !important;
  box-sizing: border-box !important;
}
.kms-ticker-wrap::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 90px; z-index: 2;
  background: linear-gradient(90deg, var(--kms-bg), transparent);
  pointer-events: none;
}
.kms-ticker-wrap::after {
  content: '';
  position: absolute;
  right: 0; top: 0; bottom: 0;
  width: 90px; z-index: 2;
  background: linear-gradient(90deg, transparent, var(--kms-bg));
  pointer-events: none;
}
.kms-ticker {
  display: flex;
  align-items: center;
  gap: 32px;
  animation: kms-ticker-scroll 120s linear infinite;
  width: max-content;
}
.kms-ticker:hover { animation-play-state: paused; }
@keyframes kms-ticker-scroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.kms-ticker-item {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 132px;
  height: 84px;
  background: transparent;
  border: none;
  padding: 0;
  text-decoration: none;
  transition: transform .3s var(--kms-ease);
  position: relative;
  z-index: 1;
}
.kms-ticker-item:hover {
  transform: scale(1.35);
  z-index: 50;
}
.kms-ticker-item img {
  max-width: 100px;
  max-height: 62px;
  width: auto;
  height: auto;
  object-fit: contain;
  filter: brightness(1.1) saturate(1.1);
  border-radius: 4px;
  box-shadow: 0 0 0 1px rgba(41,214,255,0.3), 0 0 8px rgba(41,214,255,0.12);
  transition: box-shadow .3s var(--kms-ease), filter .3s var(--kms-ease);

  background: #fff;
  padding: 6px;
  box-sizing: content-box;
}
.kms-ticker-item:hover img {
  box-shadow: 0 0 0 2px rgba(41,214,255,0.85), 0 0 22px rgba(41,214,255,0.55);
  filter: brightness(1.25) saturate(1.25);
}

/* --- Vitesse du ticker sur mobile (question de Max, 07/10) : la duree
   d'animation (120s) et la largeur des logos (132px fixes) sont
   identiques sur tous les ecrans, donc la vitesse en px/seconde est
   exactement la meme en mobile qu'en desktop - ce n'est pas un bug
   cote CSS. Mais avec un viewport etroit, on ne voit que 2-3 logos a
   la fois au lieu d'une dizaine en desktop, ce qui donne une
   impression de lenteur (moins de mouvement visible simultanement),
   meme si la vitesse physique n'a pas change. Duree raccourcie ici
   uniquement sur mobile pour compenser cette impression. */
@media (max-width: 767px) {
  .kms-ticker {
    animation-duration: 70s;
    gap: 18px !important;
  }
}

/* ===== CAROUSEL BANNIERE SECONDAIRE ===== */
.kms-carousel-wrap {
  width: 80vw;
  height: 335px;
  margin-top: 18px;
  margin-bottom: 18px;
  margin-left: calc(50% - 40vw);
  display: block;
  overflow: hidden;
  position: relative;
  border-radius: 10px;
  animation: kms-fade-up .55s var(--kms-ease) both;
}
.kms-carousel-wrap::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 10px;
  padding: 1px;
  background: linear-gradient(120deg, var(--kms-blue-d), var(--kms-orange), var(--kms-blue-d));
  background-size: 200% 200%;
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  animation: kms-border-flow 8s linear infinite;
  pointer-events: none;
  opacity: .6;
}
.kms-carousel-wrap #carousel,
.kms-carousel-wrap .carousel {
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  left: 0 !important;
  border-radius: 10px !important;
  overflow: hidden !important;
}
.kms-carousel-wrap .carousel-inner,
.kms-carousel-wrap .carousel-item,
.kms-carousel-wrap figure {
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
}
.kms-carousel-wrap figure img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}

/* --- Carousel banniere secondaire sur mobile (round mobile, 07/10 -
   trouve par Max lui-meme via DevTools) : hauteur fixe 260px + object-fit
   cover ci-dessus ne laissait voir que le centre de l'image une fois
   ramene a la largeur d'un ecran mobile (c'etait CE carousel-la, pas le
   homeslider ps_imageslider, qui posait probleme depuis le debut).
   Hauteur ramenee a 100px (ajuste de 120 a 100 apres retour de Max). Une
   bande blanche est apparue en dessous : padding-bottom residuel sur
   .carousel/.carousel.slide (Bootstrap), neutralise. Caption repositionnee
   en bas (bottom:20px, centree sur le point 60% comme sur le reste du
   site) plutot qu'au centre vertical (top:50%), qui ne laissait plus
   assez de place sur une hauteur aussi reduite. */
@media (max-width: 767px) {
  .kms-carousel-wrap {
    height: 100px !important;
  }
  .kms-carousel-wrap .carousel,
  .kms-carousel-wrap .carousel.slide,
  .kms-carousel-wrap #carousel {
    padding-bottom: 0 !important;
  }
  /* 08/10 (demande de Max) : avec un texte plus long qu'un autre slide, le
     centrage se cassait. Cause reelle (verifiee en live) : le caption a
     nativement right:0 en plus de son left - la largeur de la boite est
     donc toujours calculee entre left et right (right:0 jamais remis a
     zero ici), pas sur son propre contenu. Resultat : la boite restait
     collee au bord droit de l'image (de 60% a 100%), jamais vraiment
     centree - ca ne "passait" que par coincidence sur un texte court.
     Fix : right:auto + width:max-content pour que la boite epouse son
     texte (fonctionne pareil quelle que soit la longueur du texte, sur
     chaque slide). 08/10 (suite, demande de Max) : le centrage pur
     (left:50%) fonctionne mais chevauche le logo incruste sur la partie
     gauche de la photo de la banniere - left:60% decale l'ancre vers la
     droite (comme avant le fix, mais cette fois combine avec right:auto/
     width:max-content ci-dessus, donc ca tient quelle que soit la
     longueur du texte - avant le fix ca ne marchait que par coincidence
     sur un texte court). 08/10 (suite 2, demande de Max) : top:auto +
     bottom:20px (cale le texte 20px au-dessus du bas de la banniere,
     100px de haut sur mobile) empechait un vrai centrage vertical -
     remplace par top:50% + transform:translate(-50%,-50%) (X et Y a la
     fois), qui centre verticalement sur la hauteur reelle de la
     banniere quelle qu'elle soit, au lieu d'une position fixe en px. */
  /* 08/10 (demande de Max) : Max avait ajoute un padding-left/right:25px
     en inline sur UNE figcaption (une seule slide) parce que son texte
     etait "coupe dans le vide" en se retrecissant - cause reelle : avec
     left:60% + transform:translate(-50%,...), la boite est centree SUR
     le point 60%, donc son bord droit va jusqu'a 60% + (max-width/2).
     A 90% ca donnait 60% + 45% = 105% : 5% de la boite (donc du texte
     sur les slides au texte assez long) depassait le bord droit de
     l'image - #carousel a overflow:hidden (ligne ~1192), ce qui coupait
     ce debordement net, sans retour a la ligne visible. max-width
     ramene a 75% : bord droit max = 60% + 37.5% = 97.5%, toujours a
     l'interieur de l'image quel que soit le texte, sur toutes les
     slides (pas seulement celle corrigee a la main) - le padding
     inline ajoute par Max sur cette slide peut etre retire, il n'est
     plus necessaire. */
  .kms-carousel-wrap figcaption.caption,
  .kms-carousel-wrap .caption {
    top: 50% !important;
    left: 60% !important;
    right: auto !important;
    transform: translate(-50%, -50%) !important;
    margin: 0 !important;
    width: max-content !important;
    max-width: 75% !important;
    text-align: center !important;
  }
  .kms-carousel-wrap .carousel-indicators {
    display: none !important;
  }
}

/* 08/10 (demande de Max) : la zone tablette (768-900px) n'etait couverte
   par AUCUN des deux blocs caption ci-dessus - le bloc juste au-dessus
   s'arrete a 767px (hauteur de banniere compressee, bottom:20px adapte a
   ca), le bloc generique figcaption.caption plus haut dans ce fichier ne
   decale pas assez (left:58%, max-width:70%, transform:translate(-50%,
   -50%)) une fois le texte plus large a cause de la police qui restait a
   18px sur cette plage - le texte centre sur ce point avec une boite
   aussi large depassait a gauche sur le logo. Le point vertical (top:50%)
   et le transform complet restent corrects ici (banniere pas compressee
   sur tablette, contrairement a 767px et moins) - seuls left/max-width
   sont resserres, meme logique que le bloc mobile juste au-dessus (decaler
   vers la droite + boite plus etroite pour laisser la place au logo). */
@media (min-width: 768px) and (max-width: 900px) {
  .kms-carousel-wrap figcaption.caption,
  .kms-carousel-wrap .caption {
    left: 63% !important;
    max-width: 52% !important;
  }
}

/* --- Responsive (carousel / ticker / stats) --- */
@media (max-width: 1200px) {
  .kms-middle { width: 92vw; margin-left: calc(50% - 46vw); grid-template-columns: 180px 1fr 180px; }
  .kms-carousel-wrap { width: 92vw; margin-left: calc(50% - 46vw); }
}
@media (max-width: 900px) {
  .kms-brands-carousel-wrap { padding: 0 52px; }
  .kms-brands-carousel { padding: 80px 10px; }
  .kms-brands-track { grid-template-rows: repeat(7, auto); grid-auto-columns: 130px; }
  .kms-brands-arrow { width: 46px; height: 46px; margin-top: -23px; font-size: 24px; }
  .kms-brands-arrow-prev { left: 3px; }
  .kms-brands-arrow-next { right: 3px; }
  .kms-middle { width: 94vw; margin-left: calc(50% - 47vw); grid-template-columns: 1fr; }
  .kms-carousel-wrap { width: 94vw; margin-left: calc(50% - 47vw); }
  .kms-stats-col { display: grid; grid-template-columns: auto 1fr 1fr; gap: 8px; align-items: center; }
  .kms-nav { display: none; }
  .kms-slogan { font-size: 20px; letter-spacing: 2px; }
  .kms-brands-title { font-size: 26px !important; letter-spacing: 2px !important; }
}
@media (max-width: 600px) {
  .kms-brands-carousel-wrap { padding: 0 26px; }
  .kms-brands-carousel { padding: 10px 6px; }
  .kms-brands-track { grid-template-rows: repeat(8, auto); grid-auto-columns: 70px; gap: 6px 10px; }
  .kms-brand-card img { width: 52px !important; height: 36px !important; padding: 4px !important; }
  .kms-brand-card span { font-size: 9px !important; }
  .kms-brands-arrow { width: 30px; height: 30px; margin-top: -15px; font-size: 16px; }
  .kms-brands-arrow-prev { left: 1px; }
  .kms-brands-arrow-next { right: 1px; }
  .kms-brands-title { font-size: 27px !important; letter-spacing: 1px !important; }
  .kms-brands-sub { font-size: 13px !important; margin-top: 8px !important; }
}

@media (max-width: 767px) {
  .kms-stats-col { display: none !important; }
}

/* --- Banniere (round mobile, 07/10 - CORRECTIF v2) : la 1ere tentative
   ciblait .kms-banner, classe MORTE (aucun gabarit ne l'utilise). Le vrai
   conteneur (module ps_imageslider, confirme dans slider.tpl + lib JS
   responsiveslides avec namespace "homeslider", voir homeslider.js) est
   .homeslider-container > ul.rslides(.homeslider) > li.slide > (a>) img.
   Demande de Max (precision apres le 1er correctif, qui n'a visiblement
   rien change a l'affichage) : l'image doit garder EXACTEMENT les
   dimensions/ratio de celle uploadee dans l'admin, toute la largeur
   visible, zero recadrage - juste la hauteur qui s'adapte en
   consequence. Donc plus de max-height ici (un cap pouvait re-forcer un
   recadrage sur les images tres hautes) : width 100%, height auto,
   object-fit:contain en securite si une regle plus specifique forcait
   malgre tout une hauteur fixe sur li/container. Si apres upload +
   vidage du cache CCC (Parametres avances > Performances > Cache) ca
   reste identique, le souci n'est pas dans ce fichier. */
@media (max-width: 767px) {
  .homeslider-container,
  .homeslider-container .rslides,
  .homeslider-container .rslides li,
  .homeslider-container .rslides li a {
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
  }
  .homeslider-container .rslides li img {
    display: block !important;
    position: static !important;
    float: none !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    max-height: none !important;
    object-fit: contain !important;
  }
}

/* --- Reduction generale des marges/paddings (mobile) --- */
@media (max-width: 767px) {
  .kms-slogan-section { padding: 18px 16px 8px; }
  .kms-accroche { margin-top: 12px; }
  .kms-brands-section { padding: 28px 12px; }
  .kms-brands-header { margin-bottom: 10px; }
  #main .container { padding: 0 12px !important; }
  /* 08/10 (demande de Max) : sur la fiche produit, le panier (zone
     #content-wrapper, bloc .product-add-to-cart) semblait "sortir de sa
     div" quand on reduisait beaucoup la largeur de l'ecran. Cause reelle
     (verifiee en live) : product.tpl utilise un <main> SANS id="main"
     (contrairement aux autres pages, qui ont <section id="main">) - la
     regle #main .container juste au-dessus (qui redonne un padding a
     #wrapper .container, mis a 0 partout par defaut plus haut dans ce
     fichier) ne matchait donc jamais ici. Sans ce padding, la gouttiere
     Bootstrap (.row avec margin:-15px) n'etait plus compensee, et
     #content-wrapper depassait le viewport de 15px de chaque cote - le
     panier n'etait pas "trop grand", c'est son conteneur qui debordait
     de l'ecran et le coupait. Meme valeur (12px) que la regle #main
     .container ci-dessus, ciblee ici via la classe body de la page
     produit. */
  body.page-product .container {
    padding: 0 12px !important;
  }
}

h2, h3, h4, h5, h6,

/* ===== TITRES GENERIQUES (h1-h6) ===== */
.h2, .h3, .h4, .h5, .h6 {
  color: var(--kms-blue) !important;
}

h1, .h1 {
  color: var(--kms-orange) !important;
}
.page-content h1, h1.h1, #content h1 {
  font-family: var(--kms-font-display) !important;
  letter-spacing: 2px !important;
  text-transform: uppercase !important;
  text-shadow: 0 0 16px rgba(41,214,255,0.4) !important;
}

.breadcrumb a { position: relative !important; display: inline-block !important; }
.breadcrumb a::after {
  content: '' !important; position: absolute !important;
  left: 0 !important; right: 0 !important; bottom: -3px !important; height: 1px !important;
  background: linear-gradient(90deg, var(--kms-blue), var(--kms-orange)) !important;
  transform: scaleX(0) !important; transform-origin: left !important;
  transition: transform .3s var(--kms-ease) !important;
}
.breadcrumb a:hover { color: white !important; }
.breadcrumb a:hover::after { transform: scaleX(1) !important; }

#search_filters,
#search_filters_wrapper,
#subcategories,
.block-category,

/* ===== CATEGORIE / SOUS-CATEGORIES ===== */
.tabs {
  background: var(--kms-bg-card) !important;
  color: var(--kms-text) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
}
#subcategories { padding: 20px !important; }
.block-category {
  padding: 20px 24px !important;
  margin-bottom: 20px !important;
}
.block-category h1.h1 {
  color: var(--kms-blue) !important;
  text-shadow: 0 0 16px rgba(41,214,255,0.45) !important;
}
.block-category #category-description,
.block-category #category-description p {
  color: var(--kms-text) !important;
}
.block-category .category-cover {
  border: 1px solid var(--kms-border) !important;
  border-radius: 6px !important;
  overflow: hidden !important;
  background: #fff !important;
}

.quickview .modal-content {
  background: var(--kms-bg-card) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 10px !important;
  box-shadow: 0 24px 80px rgba(0,0,0,0.7), 0 0 40px rgba(41,214,255,0.08) !important;
}
.quickview .modal-header { border-bottom: 1px solid var(--kms-border) !important; }
.quickview .modal-footer { border-top: 1px solid var(--kms-border) !important; }
.quickview .close { color: var(--kms-blue) !important; opacity: 1 !important; text-shadow: none !important; }
.quickview .close:hover { color: white !important; }
.quickview h1.h1 { color: var(--kms-orange) !important; text-shadow: 0 0 14px rgba(255,122,18,0.4) !important; }
.quickview #product-description-short,
.quickview #product-description-short p { color: var(--kms-text) !important; }

.quickview #product-description-short {
  max-height: 130px !important;
  overflow-y: auto !important;
  padding-right: 6px !important;
}
.quickview #product-description-short::-webkit-scrollbar { width: 6px; }
.quickview #product-description-short::-webkit-scrollbar-thumb {
  background: var(--kms-blue-d); border-radius: 3px;
}
.quickview .kms-total-block { margin-top: 14px !important; }

.subcategory-heading {
  color: var(--kms-orange) !important;
  font-family: var(--kms-font-display) !important;
  letter-spacing: 2px !important;
  text-transform: uppercase !important;
  font-size: 15px !important;
  border-bottom: 1px solid var(--kms-border) !important;
  padding-bottom: 10px !important;
  margin-bottom: 16px !important;
  text-shadow: 0 0 10px rgba(255,122,18,0.4) !important;
}

.subcategories-list { display: flex !important; flex-wrap: wrap !important; gap: 18px !important; list-style: none !important; padding: 0 !important; margin: 0 !important; }
.subcategories-list li {
  width: 150px !important;
  text-align: center !important;
  padding: 14px 10px !important;
  background: #08101f !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
  transition: border-color .2s var(--kms-ease), box-shadow .2s var(--kms-ease), transform .2s var(--kms-ease) !important;
}
.subcategories-list li:hover {
  border-color: var(--kms-blue-d) !important;
  box-shadow: 0 6px 18px rgba(0,0,0,0.35), 0 0 12px rgba(41,214,255,0.15) !important;
  transform: translateY(-2px) !important;
}
.subcategory-image {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  height: 78px !important;
  margin-bottom: 8px !important;
  background: #fff !important;
  border-radius: 5px !important;
  overflow: hidden !important;
}
.subcategory-image img {
  max-width: 100% !important;
  max-height: 78px !important;
  width: auto !important;
  height: auto !important;
  object-fit: contain !important;
  transition: transform .25s var(--kms-ease) !important;
}
.subcategories-list li:hover .subcategory-image img {
  transform: scale(1.06) !important;
}
.subcategory-fallback {
  font-family: var(--kms-font-display) !important;
  font-size: 22px !important;
  font-weight: 800 !important;
  color: var(--kms-blue) !important;
  text-shadow: 0 0 10px rgba(41,214,255,0.5) !important;
}
.subcategory-image:has(.subcategory-fallback) { background: #08101f !important; }
.subcategory-name {
  color: var(--kms-blue) !important;
  text-decoration: none !important;
  transition: color .3s var(--kms-ease), text-shadow .3s var(--kms-ease) !important;
}
.subcategories-list li:hover .subcategory-name {
  color: white !important;
  text-shadow: 0 0 10px rgba(41,214,255,0.7) !important;
}

#search_filters .custom-checkbox i { color: var(--kms-blue) !important; }
#search_filters .facet-label a { color: #6fb8e8 !important; }
#search_filters .facet-label.active a { color: var(--kms-orange) !important; text-shadow: 0 0 8px rgba(255,122,18,0.4) !important; }
#search_filters .facet-label:hover a,
#search_filters .facet-label:hover { color: white !important; }
.faceted-slider p { color: var(--kms-text) !important; }

/* ===== FILTRES DE RECHERCHE (facettes) ===== */
#js-active-search-filters.active_filters {
  background: var(--kms-bg-card) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
  padding: 12px 16px !important;
  margin-bottom: 16px !important;
}
#js-active-search-filters .active-filter-title { color: #6fb8e8 !important; font-size: 12px !important; text-transform: uppercase !important; letter-spacing: 1px !important; }
#js-active-search-filters .filter-block {
  background: rgba(41,214,255,0.08) !important;
  border: 1px solid var(--kms-blue-d) !important;
  color: var(--kms-blue) !important;
  border-radius: 4px !important;
  padding: 4px 10px !important;
  font-size: 12px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
}
#js-active-search-filters .filter-block a { color: var(--kms-orange) !important; }
.js-search-filters-clear-all {
  background: transparent !important;
  border: 1px solid var(--kms-border) !important;
  color: var(--kms-orange) !important;
}
.js-search-filters-clear-all:hover { border-color: var(--kms-orange) !important; box-shadow: 0 0 10px rgba(255,122,18,0.3) !important; }
.ui-slider { background: var(--kms-border) !important; border: none !important; height: 4px !important; }
.ui-slider-range { background: linear-gradient(90deg, var(--kms-blue), var(--kms-orange)) !important; }
.ui-slider-handle {
  background: var(--kms-blue) !important;
  border: 2px solid #041018 !important;
  box-shadow: 0 0 10px rgba(41,214,255,0.6) !important;
}
.products-sort-order .select-title {
  background: var(--kms-bg-card) !important;
  border: 1px solid var(--kms-border) !important;
  color: var(--kms-text) !important;
  border-radius: 4px !important;
}
.products-sort-order .dropdown-menu {
  background: var(--kms-bg-card) !important;
  border: 1px solid var(--kms-border) !important;
}
.products-sort-order .dropdown-menu a {
  color: var(--kms-text) !important;
}
.products-sort-order .dropdown-menu a:hover {
  background: rgba(41,214,255,0.1) !important;
  color: var(--kms-blue) !important;
}
.total-products, .showing, .sort-by { color: var(--kms-muted) !important; }

.product-miniature .product-title a { position: relative !important; display: inline-block !important; }

/* ===== CARDS PRODUIT - titre, apercu rapide ===== */
.product-miniature .product-title a::after {
  content: '' !important; position: absolute !important;
  left: 0 !important; right: 0 !important; bottom: -2px !important; height: 1px !important;
  background: linear-gradient(90deg, var(--kms-blue), var(--kms-orange)) !important;
  transform: scaleX(0) !important; transform-origin: left !important;
  transition: transform .3s var(--kms-ease) !important;
}

.product-miniature:hover .product-title a::after { transform: scaleX(1) !important; }

.product-miniature .quick-view {
  color: var(--kms-orange) !important;
  font-weight: 800 !important;
  font-size: 13px !important;
  -webkit-text-stroke: 0.6px #000 !important;
  text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000, 0 2px 4px rgba(0,0,0,0.4) !important;
}
.product-miniature .quick-view i {
  color: var(--kms-orange) !important;
  filter: drop-shadow(0 0 1.5px #000) drop-shadow(0 1px 2px rgba(0,0,0,0.5)) !important;
}
.wishlist-button-add { background: rgba(13,32,64,0.75) !important; border: 1px solid var(--kms-border) !important; transition: all .25s var(--kms-ease) !important; }
.wishlist-button-add i { color: var(--kms-blue) !important; }
.wishlist-button-add:hover { border-color: var(--kms-blue) !important; box-shadow: 0 0 12px rgba(41,214,255,0.35) !important; }

/* --- Loupe (quick-view) : revenu en arriere sur demande de Max (07/10) -
   la loupe reste toujours a cote du bouton panier (kms-quick-view-inline),
   la duplication en haut de card (kms-quick-view-top, a cote du coeur
   wishlist sur mobile + promo) est desactivee. Element laisse dans le
   template mais masque en permanence. */
.thumbnail-container { position: relative; }
.kms-quick-view-top { display: none !important; }

.nav-tabs { border-bottom: 1px solid var(--kms-border) !important; }

/* --- Onglets fiche produit / quantite / prix --- */
.nav-tabs .nav-link {
  color: var(--kms-muted) !important;
  background: transparent !important;
  border: none !important;
  font-family: var(--kms-font-body) !important;
  font-weight: 700 !important;
  letter-spacing: 1px !important;
  text-transform: uppercase !important;
  font-size: 12px !important;
}
.nav-tabs .nav-link.active {
  color: var(--kms-blue) !important;
  background: transparent !important;
  border-bottom: 2px solid var(--kms-blue) !important;
  text-shadow: 0 0 8px rgba(41,214,255,0.5) !important;
}
.tab-pane, .tab-pane p, .tab-pane li, .tab-pane span { color: var(--kms-text) !important; }
#quantity_wanted {
  background: #050810 !important;
  border: 1px solid var(--kms-border) !important;
  color: var(--kms-text) !important;
}
.product-quantity .input-group-btn-vertical button { background: #050810 !important; border: 1px solid var(--kms-border) !important; color: var(--kms-blue) !important; }
.product-minimal-quantity, .product-available-quantity, .js-product-availability { color: var(--kms-muted) !important; }
.product-comments, #idTab2, .comment { color: var(--kms-text) !important; }
.comment-card, .comment { background: var(--kms-bg-card) !important; border: 1px solid var(--kms-border) !important; }
.btn-secondary { background: linear-gradient(135deg, #0a1f3d, #0d2a50) !important; color: var(--kms-blue) !important; border: 1px solid var(--kms-blue-d) !important; }
.btn-secondary:hover { color: white !important; box-shadow: 0 0 14px rgba(41,214,255,0.3) !important; }
.share-button-facebook, .share-button-twitter, .share-button-pinterest { filter: grayscale(1) brightness(1.6) !important; opacity: .75 !important; transition: opacity .25s var(--kms-ease), filter .25s var(--kms-ease) !important; }
.share-button-facebook:hover, .share-button-twitter:hover, .share-button-pinterest:hover { filter: none !important; opacity: 1 !important; }

.product-prices .current-price-value,
.product-prices .product-price {
  color: var(--kms-orange) !important;
  font-family: var(--kms-font-display) !important;
  font-weight: 700 !important;
  text-shadow: 0 0 10px rgba(255,122,18,0.45) !important;
}
.product-prices .discount,
.product-prices .regular-price { color: var(--kms-muted) !important; }
.product-prices .tax-shipping-delivery-label,
.product-prices .delivery-information,
.product-prices .product-unit-price { color: var(--kms-muted) !important; }

/* ===== FICHE PRODUIT - IMAGE ===== */
#main h1.h1, .product-container h1.h1 {
  color: var(--kms-blue) !important;
  text-shadow: 0 0 16px rgba(41,214,255,0.45) !important;
}

.data-sheet dt.name { color: #6fb8e8 !important; font-family: var(--kms-font-body) !important; font-weight: 600 !important; }
.data-sheet dd.value { color: var(--kms-blue) !important; font-family: var(--kms-font-body) !important; font-weight: 600 !important; }
.product-manufacturer label, .product-reference label,
.product-quantities label, .product-availability-date label,
.product-condition label { color: #6fb8e8 !important; }
.product-manufacturer span, .product-reference span,
.product-quantities span, .product-availability-date span,
.product-condition span { color: var(--kms-text) !important; }

.images-container, .js-qv-mask {
  background: transparent !important;
}

.product-cover {
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
  overflow: hidden !important;
  background: radial-gradient(ellipse at center, #a9d3ec 0%, #4a95c4 50%, #0a2e4d 100%) !important;
  padding: 24px !important;
  box-sizing: border-box !important;
}

.product-cover picture {
  display: block !important;
  overflow: hidden !important;
  border-radius: 4px !important;
}

.images-container:not(:has(.thumb-container:nth-child(2))) .product-cover img,
.images-container:has(.thumb-container:nth-child(2)):not(:has(.thumb-container:nth-child(3))) .product-cover img {
  transform: scale(1.4) !important;
}

body#product .product-cover {
  background: transparent !important;
  border-color: transparent !important;
}
body#product .images-container:not(:has(.thumb-container:nth-child(2))) .product-cover img,
body#product .images-container:has(.thumb-container:nth-child(2)):not(:has(.thumb-container:nth-child(3))) .product-cover img {
  transform: none !important;
}

@media (min-width: 768px) {
  .product-container.js-product-container > .col-md-6:first-child {
    flex: 0 0 33.3333% !important;
    max-width: 33.3333% !important;
  }
  .product-container.js-product-container > .col-md-6:last-child {
    flex: 0 0 66.6667% !important;
    max-width: 66.6667% !important;
  }
}

.quickview .images-container,
.quickview .js-qv-mask {
  max-width: 340px !important;
  height: auto !important;
  margin: 0 auto !important;
}

.quickview .product-cover {
  flex: none !important;
  width: 340px !important;
  height: 340px !important;
  padding: 10px !important;
  margin: 0 !important;
  align-self: center !important;
  background: transparent !important;
  border-color: transparent !important;
}
.quickview .product-cover picture,
.quickview .product-cover img {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
}
.quickview .images-container:not(:has(.thumb-container:nth-child(2))) .product-cover img,
.quickview .images-container:has(.thumb-container:nth-child(2)):not(:has(.thumb-container:nth-child(3))) .product-cover img {
  transform: none !important;
}
.thumb-container {
  background: #fff !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 4px !important;
  overflow: hidden !important;
  transition: border-color .2s var(--kms-ease), box-shadow .2s var(--kms-ease) !important;
}
.thumb-container .thumb.selected, .thumb-container .thumb:hover {
  border-color: var(--kms-blue-d) !important;
}
.thumb-container.js-thumb-container {
  box-shadow: none !important;
}
.product-images .thumb-container.js-thumb-container:has(.selected) {
  box-shadow: 0 0 0 2px var(--kms-blue-d) !important;
}

/* ===== FICHE PRODUIT - INFORMATION / CARACTERISTIQUES ===== */
.kms-info-carac {
  display: grid !important;
  grid-template-columns: 1.3fr 1fr !important;
  gap: 32px !important;
  margin-top: 32px !important;
  padding-top: 28px !important;
  border-top: 1px solid var(--kms-border) !important;
}
.kms-section-title {
  font-family: var(--kms-font-display) !important;
  font-size: 15px !important;
  letter-spacing: 1.5px !important;
  text-transform: uppercase !important;
  color: var(--kms-blue) !important;
  text-shadow: 0 0 10px rgba(41,214,255,0.35) !important;
  padding-bottom: 10px !important;
  margin-bottom: 16px !important;
  border-bottom: 1px solid var(--kms-border) !important;
}
.kms-long-description,
.kms-long-description p,
.kms-long-description li,
.kms-long-description span,
.kms-long-description strong {
  color: var(--kms-text) !important;
  line-height: 1.7 !important;
}
.kms-long-description h2,
.kms-long-description h3 {
  color: var(--kms-blue) !important;
  font-size: 16px !important;
  margin-top: 20px !important;
}
.kms-no-description {
  color: var(--kms-muted) !important;
  font-style: italic !important;
}

/* Tableau caracteristiques : grille CSS 2 colonnes sur .kms-carac-table.
   Les blocs intermediaires du theme (product-manufacturer, data-sheet...)
   passent en display:contents pour que leurs enfants (label + valeur)
   deviennent directement des items de cette grille. */
.kms-carac-table {
  display: grid !important;
  grid-template-columns: auto auto !important;
  width: fit-content !important;
  max-width: 100% !important;
  margin: 0 auto !important;
  background: var(--kms-bg-card) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
  overflow: hidden !important;
}
.kms-carac-table #product-details,
.kms-carac-table .product-manufacturer,
.kms-carac-table .product-reference,
.kms-carac-table .product-quantities,
.kms-carac-table .product-availability-date,
.kms-carac-table .product-out-of-stock,
.kms-carac-table .product-condition,
.kms-carac-table .product-features,
.kms-carac-table .data-sheet {
  display: contents !important;
}
.kms-carac-table .product-manufacturer label,
.kms-carac-table .product-manufacturer span,
.kms-carac-table .product-reference label,
.kms-carac-table .product-reference span,
.kms-carac-table .product-quantities label,
.kms-carac-table .product-quantities span,
.kms-carac-table .product-availability-date label,
.kms-carac-table .product-availability-date span,
.kms-carac-table .product-condition label,
.kms-carac-table .product-condition span,
.kms-carac-table .data-sheet dt.name,
.kms-carac-table .data-sheet dd.value {
  display: block !important;
  text-align: center !important;
  padding: 10px 22px !important;
  margin: 0 !important;
  border-bottom: 1px solid var(--kms-border) !important;
  background: transparent !important;
}
.kms-carac-table .data-sheet dt.name:nth-of-type(odd),
.kms-carac-table .data-sheet dd.value:nth-of-type(odd) {
  background: rgba(41,214,255,0.04) !important;
}
@media (max-width: 480px) {
  /* Garde les 2 colonnes (label a gauche / valeur a droite, ex. "En
     stock" / "Genetique" a gauche et sa valeur a droite) sur mobile ;
     seul le padding et la police sont resserres. */
  .kms-carac-table .product-manufacturer label,
  .kms-carac-table .product-manufacturer span,
  .kms-carac-table .product-reference label,
  .kms-carac-table .product-reference span,
  .kms-carac-table .product-quantities label,
  .kms-carac-table .product-quantities span,
  .kms-carac-table .product-availability-date label,
  .kms-carac-table .product-availability-date span,
  .kms-carac-table .product-condition label,
  .kms-carac-table .product-condition span,
  .kms-carac-table .data-sheet dt.name,
  .kms-carac-table .data-sheet dd.value {
    padding: 8px 10px !important;
    font-size: 12px !important;
    word-break: break-word !important;
  }
}
.kms-attachments,
.kms-extra-content {
  margin-top: 24px !important;
  padding-top: 20px !important;
  border-top: 1px solid var(--kms-border) !important;
}

/* --- Responsive (info / caracteristiques) --- */
@media (max-width: 991px) {
  .kms-info-carac { grid-template-columns: 1fr !important; gap: 24px !important; }
}

/* ===== CARDS CATEGORIE - complements ===== */
.kms-card-excerpt {
  display: none !important;
}
/* 08/10 (demande de Max) : a tres faible largeur d'ecran (ex. 323px,
   verifie par Max en DevTools), le prix "A PARTIR DE XX,XX EUR" et le
   bouton panier rond (34px, flex-shrink:0) ne tenaient plus ensemble sur
   une seule ligne - rien ne pouvant retrecir (prix en min-width:
   max-content, bouton en flex-shrink:0), le bouton debordait hors de sa
   card au lieu de s'adapter. flex-wrap:wrap laisse le bouton passer sur
   sa propre ligne quand la place manque, sans jamais depasser la card -
   ne change rien tant que tout rentre sur une ligne (desktop/tablette/
   mobile normal). */
.product-miniature .product-price-and-shipping {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  justify-content: space-between !important;
  text-align: left !important;
  gap: 8px !important;
}
.kms-quick-add-form { margin: 0 !important; }
.kms-quick-add-btn {
  width: 34px !important;
  height: 34px !important;
  padding: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 50% !important;
  flex-shrink: 0 !important;
}
.kms-quick-add-btn i.shopping-cart { font-size: 18px !important; }

.thumbnail-container {

  background: linear-gradient(160deg, #c2d3ea, #93aecb) !important;
  border-radius: 6px 6px 0 0 !important;
}

#products .products,
.products.row { align-items: stretch !important; }
.js-product { display: flex !important; }
.product-miniature {
  display: flex !important;
  flex-direction: column !important;
  width: 100% !important;
  height: 100% !important;
}
.product-miniature .thumbnail-container { display: flex !important; flex-direction: column !important; flex: none !important; }
.product-miniature .product-description {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 !important;
}
.product-miniature .product-price-and-shipping { margin-top: auto !important; }

.product-miniature .thumbnail-top { min-height: 170px !important; display: flex !important; align-items: center !important; justify-content: center !important; padding: 10px !important; }
.product-miniature .product-thumbnail img { max-height: 160px !important; width: auto !important; max-width: 90% !important; margin: 0 auto !important; }

.product-miniature .product-title a {
  font-size: 16px !important;
  font-weight: 800 !important;
  letter-spacing: .3px !important;
  text-shadow: 0 0 10px rgba(41,214,255,0.55), 0 0 22px rgba(41,214,255,0.25) !important;
}

/* ===== PAGINATION ===== */
.pagination {
  background: transparent !important;
  padding: 24px 0 8px !important;
  color: var(--kms-muted) !important;
  font-family: var(--kms-font-body) !important;
}
.pagination .page-list {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 6px !important;
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
.pagination .page-list li a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  min-width: 36px !important;
  height: 36px !important;
  padding: 0 12px !important;
  background: var(--kms-bg-card) !important;
  border: 1px solid var(--kms-border) !important;
  color: var(--kms-blue) !important;
  border-radius: 4px !important;
  font-weight: 700 !important;
  transition: all .2s var(--kms-ease) !important;
}
.pagination .page-list li a:hover {
  border-color: var(--kms-blue-d) !important;
  color: white !important;
  box-shadow: 0 0 10px rgba(41,214,255,0.25) !important;
}
.pagination .page-list li.current a {
  background: linear-gradient(135deg, var(--kms-blue-d), #123a68) !important;
  color: white !important;
  border-color: var(--kms-blue) !important;
  box-shadow: 0 0 12px rgba(41,214,255,0.3) !important;
}
.pagination .page-list li a.disabled { opacity: .35 !important; pointer-events: none !important; }
.pagination .page-list .spacer { color: var(--kms-muted) !important; padding: 0 4px !important; display: inline-flex !important; align-items: center !important; }

/* ===== FICHE PRODUIT - INFORMATION / CARACTERISTIQUES (complements) ===== */
.kms-info-carac {
  max-width: 1200px !important;
  margin: 40px auto 0 !important;
}
.kms-carac-table {
  background: linear-gradient(160deg, #0d1530, #0a1226) !important;
  box-shadow: 0 0 0 1px rgba(41,214,255,0.06) inset !important;
}
.kms-section-title {
  font-size: 17px !important;
  text-shadow: 0 0 12px rgba(41,214,255,0.55), 0 0 26px rgba(41,214,255,0.2) !important;
}
.kms-long-description,
.kms-long-description p,
.kms-long-description li,
.kms-long-description span,
.kms-long-description strong {
  color: var(--kms-text) !important;
  font-size: 15px !important;
  line-height: 1.8 !important;
}
.kms-carac-table .data-sheet dt.name {
  color: #8fc9ee !important;
  font-size: 13px !important;
}
.kms-carac-table .data-sheet dd.value {
  color: var(--kms-blue) !important;
  font-size: 14px !important;
  text-shadow: 0 0 6px rgba(41,214,255,0.35) !important;
}
.kms-carac-table .product-manufacturer label,
.kms-carac-table .product-quantities label,
.kms-carac-table .product-availability-date label {
  color: #8fc9ee !important;
  font-size: 13px !important;
}
.kms-carac-table .product-manufacturer span,
.kms-carac-table .product-quantities span,
.kms-carac-table .product-availability-date span {
  color: var(--kms-orange) !important;
  font-weight: 700 !important;
}

.product-prices .current-price-value,
.product-prices .product-price,
.kms-total-block strong {
  color: var(--kms-orange) !important;
  text-shadow: 0 0 10px rgba(255,122,18,0.5) !important;
}

.block-category-inner:empty { display: none !important; }

.product-miniature .product-description {
  background: transparent !important;
}
.product-miniature .highlighted-informations {
  background: transparent !important;
}
.pagination .page-list {
  background: transparent !important;
}

.breadcrumb li span {
  color: var(--kms-blue) !important;
}

.total-products p {
  color: var(--kms-blue) !important;
}

.page-cms p,
.page-cms li,
.page-cms td,
.page-cms span {
  color: var(--kms-text) !important;
}
.page-cms h2, .page-cms h3, .page-cms h4 {
  color: var(--kms-blue) !important;
  text-shadow: 0 0 10px var(--kms-blue-glow) !important;
}
.page-cms h1 {
  color: var(--kms-orange) !important;
  text-shadow: 0 0 10px rgba(255,122,18,0.4) !important;
}

[id^="product-description-short-"] {
  color: var(--kms-blue) !important;
  text-shadow: 0 0 8px rgba(41,214,255,0.25) !important;
}

/* --- Bloc prix total / formulaire commande --- */
.kms-total-block {
  color: var(--kms-blue) !important;
}

.product-add-to-cart .control-label {
  color: var(--kms-blue) !important;
}

.blockreassurance_product .block-title {
  color: var(--kms-blue) !important;
  font-weight: 700 !important;
  text-shadow: 0 0 8px rgba(41,214,255,0.3) !important;
}
.blockreassurance_product p {
  color: var(--kms-text) !important;
}

/* ===== PAGES CMS / CONTACT / INSCRIPTION ===== */
section.page-content.page-cms {
  background: var(--kms-bg-card) !important;
  border-radius: 6px !important;
  box-shadow: 0 0 0 1px rgba(41,214,255,0.08) inset !important;
}

.contact-rich .block .data {
    color: var(--kms-blue) !important;
}

.page-contact #content.page-content {
  background: var(--kms-bg-card) !important;
  border-radius: 8px !important;
  box-shadow: 0 0 0 1px rgba(41,214,255,0.08) inset !important;
}
.page-contact .contact-form h3 {
  color: var(--kms-blue) !important;
  text-shadow: 0 0 10px rgba(41,214,255,0.3) !important;
}
.page-contact .form-control-label,
.page-contact .form-control-comment {
  color: var(--kms-muted) !important;
}
.page-contact .form-control,
.page-contact input,
.page-contact textarea,
.page-contact select {
  background: #050810 !important;
  border: 1px solid var(--kms-border) !important;
  color: var(--kms-text) !important;
}
.page-contact ::placeholder {
  color: var(--kms-muted) !important;
  opacity: 1 !important;
}

.page-contact .contact-form {
  background: transparent !important;
}

.page-authentication #content.page-content,
.page-registration #content.page-content {
  background: var(--kms-bg-card) !important;
  color: var(--kms-text) !important;
  border-radius: 8px !important;
  box-shadow: 0 0 0 1px rgba(41,214,255,0.08) inset !important;
}
.page-authentication .form-control-label,
.page-authentication .form-control-comment,
.page-authentication label,
.page-registration .form-control-label,
.page-registration .form-control-comment,
.page-registration label {
  color: var(--kms-muted) !important;
}
.page-authentication .form-control,
.page-authentication input,
.page-authentication textarea,
.page-authentication select,
.page-registration .form-control,
.page-registration input,
.page-registration textarea,
.page-registration select {
  background: #050810 !important;
  border: 1px solid var(--kms-border) !important;
  color: var(--kms-text) !important;
}
.page-authentication ::placeholder,
.page-registration ::placeholder {
  color: var(--kms-muted) !important;
  opacity: 1 !important;
}

/* --- Quantite, prix, variantes (fiche produit) --- */
.product-quantity.clearfix {
  flex-wrap: wrap !important;
}
.product-quantity .qty {
  order: 1 !important;
}
.product-quantity .add {
  order: 3 !important;
}

.kms-total-seeds-inline {
  color: var(--kms-blue) !important;
  font-weight: 700 !important;
  font-size: 13px !important;
  text-shadow: 0 0 8px rgba(41,214,255,0.3) !important;
}

.product-prices.js-product-prices {
  display: none !important;
}

.product-variants-item .control-label {
  color: var(--kms-blue) !important;
  font-weight: 700 !important;
  font-family: var(--kms-font-body) !important;
  text-shadow: 0 0 8px rgba(41,214,255,0.3) !important;
}
.product-variants-item select.form-control {
  background: linear-gradient(160deg, #0a1f3d, #0d2a50) !important;
  color: var(--kms-orange) !important;
  border: 1px solid var(--kms-blue-d) !important;
  border-radius: 5px !important;
  font-weight: 700 !important;
  font-family: var(--kms-font-body) !important;
  box-shadow: 0 0 10px rgba(41,214,255,0.15) !important;
}
.product-variants-item select.form-control option {
  background: #0a1f3d !important;
  color: var(--kms-orange) !important;
}

.kms-product-badges {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
  margin-bottom: 10px !important;
}
.kms-badge {
  font-size: 13px !important;
  padding: 6px 14px !important;
}
.kms-badge-genetics,
.kms-badge-culture,
.kms-badge-effects,
.kms-badge-type {
  background: rgba(255,122,18,0.12) !important;
  color: var(--kms-orange) !important;
  border: 1px solid rgba(255,122,18,0.4) !important;
  text-shadow: 0 0 8px rgba(255,122,18,0.5) !important;
}

.kms-desc-more {
  color: var(--kms-orange) !important;
  font-weight: 700 !important;
  cursor: pointer !important;
  text-decoration: underline !important;
  text-shadow: 0 0 8px rgba(255,122,18,0.4) !important;
}

/* ===== CARDS PRODUIT - mise en page (hover, badges) ===== */
.product-miniature {
  background: linear-gradient(165deg, #0a1220, #050a14) !important;
  border: 1px solid rgba(255,122,18,0.5) !important;
  box-shadow: 0 0 12px rgba(255,122,18,0.18) !important;
}
.product-miniature:hover {
  border-color: var(--kms-orange) !important;
  box-shadow: 0 10px 26px rgba(0,0,0,0.4), 0 0 22px rgba(255,122,18,0.45) !important;
  transform: translateY(-3px) !important;
}

.product-miniature .thumbnail-container {
  flex: 1 !important;
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
  padding-bottom: 0 !important;
  margin-bottom: 0 !important;
}
.product-miniature { padding-bottom: 0 !important; }

.product-miniature .thumbnail-container {
  background: radial-gradient(ellipse at center, #c2d3ea 0%, #93aecb 55%, #3d5570 100%) !important;
  border-radius: 5px 5px 0 0 !important;
}

.product-miniature .highlighted-informations,
.product-miniature .highlighted-informations.no-variants {
  background: transparent !important;
  position: absolute !important;
  top: auto !important;
  bottom: 10px !important;
  right: 10px !important;
  left: auto !important;
  width: auto !important;
  height: auto !important;
  padding: 0 !important;
  text-align: right !important;
  opacity: 0 !important;
  transform: translateY(6px) !important;
  transition: opacity .25s var(--kms-ease), transform .25s var(--kms-ease) !important;
}
.product-miniature .thumbnail-container:hover .highlighted-informations,
.product-miniature .thumbnail-container:hover .highlighted-informations.no-variants,
.product-miniature .thumbnail-container:focus .highlighted-informations,
.product-miniature .thumbnail-container:focus .highlighted-informations.no-variants {
  top: auto !important;
  opacity: 1 !important;
  transform: translateY(0) !important;
}

.product-miniature .highlighted-informations .quick-view {
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  background: rgba(5,10,20,0.88) !important;
  border: 1px solid var(--kms-orange) !important;
  border-radius: 20px !important;
  padding: 5px 12px !important;
  box-shadow: 0 0 10px rgba(255,122,18,0.4) !important;
  font-size: 12px !important;
}

.product-miniature .thumbnail-container {
  background: radial-gradient(ellipse at center, #e3f1ff 0%, #7fc4ec 50%, #145f8c 100%) !important;
  box-shadow: inset 0 -18px 26px -12px rgba(255,122,18,0.28) !important;
}

.product-miniature .thumbnail-container {
  position: relative !important;
}
.product-miniature .highlighted-informations,
.product-miniature .highlighted-informations.no-variants {
  top: 50% !important;
  bottom: auto !important;
  left: 50% !important;
  right: auto !important;
  transform: translate(-50%, -50%) translateY(6px) !important;
  text-align: center !important;
}
.product-miniature .thumbnail-container:hover .highlighted-informations,
.product-miniature .thumbnail-container:hover .highlighted-informations.no-variants,
.product-miniature .thumbnail-container:focus .highlighted-informations,
.product-miniature .thumbnail-container:focus .highlighted-informations.no-variants {
  transform: translate(-50%, -50%) translateY(0) !important;
}

.product-images.js-qv-product-images:not(:has(.thumb-container:nth-child(2))),
.product-images.js-qv-product-images:has(.thumb-container:nth-child(2)):not(:has(.thumb-container:nth-child(3))) {
  display: none !important;
}

/* ===== GARANTIES (blockreassurance) ===== */
.blockreassurance_product {
  text-align: left !important;
}

.blockreassurance_product .clearfix {
  display: none !important;
}
.blockreassurance_product > div {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  text-align: center !important;
  width: 100% !important;
  float: none !important;
  padding: 18px !important;
  margin-bottom: 10px !important;
  background: var(--kms-bg-card) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
  transition: border-color .25s var(--kms-ease), box-shadow .25s var(--kms-ease) !important;
}
.blockreassurance_product > div:hover {
  border-color: var(--kms-blue-d) !important;
  box-shadow: 0 0 14px rgba(41,214,255,0.15) !important;
}
.blockreassurance_product > div:last-child {
  margin-bottom: 0 !important;
}
.blockreassurance_product .item-product {
  float: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  height: auto !important;
  margin: 0 0 10px 0 !important;
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
.blockreassurance_product .item-product img {
  width: 64px !important;
  height: 64px !important;
  object-fit: contain !important;
  filter: drop-shadow(0 0 10px rgba(41,214,255,0.35)) !important;
}
.blockreassurance_product .block-title {
  display: block !important;
  text-align: center !important;
  color: var(--kms-blue) !important;
  font-weight: 700 !important;
  text-shadow: 0 0 8px rgba(41,214,255,0.3) !important;
  line-height: 1.5 !important;
  margin-bottom: 4px !important;
}
.blockreassurance_product .block-title::after {

  content: '' !important;
}
.blockreassurance_product p {
  display: block !important;
  text-align: center !important;
  color: var(--kms-text) !important;
  line-height: 1.5 !important;
  margin: 0 !important;
}

.blockreassurance_product {
  display: flex !important;
  flex-direction: row !important;
  align-items: stretch !important;
  gap: 12px !important;
}
.blockreassurance_product > div {
  width: auto !important;
  flex: 1 1 0 !important;
  margin-bottom: 0 !important;
}
@media (max-width: 767px) {
  /* 3 colonnes resserrees (au lieu d'un empilement plein-largeur trop
     grand) pour "Garanties securite / Livraison / Graines de collection". */
  .blockreassurance_product {
    flex-direction: row !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
  }
  .blockreassurance_product > div {
    width: calc(33.333% - 6px) !important;
    flex: 0 0 calc(33.333% - 6px) !important;
    padding: 10px 6px !important;
    margin-bottom: 0 !important;
  }
  .blockreassurance_product > div:last-child {
    margin-bottom: 0 !important;
  }
  .blockreassurance_product .item-product img {
    width: 34px !important;
    height: 34px !important;
  }
  .blockreassurance_product .block-title {
    font-size: 11px !important;
    margin-bottom: 2px !important;
  }
  .blockreassurance_product p {
    font-size: 10px !important;
    line-height: 1.3 !important;
  }
}

/* --- Selecteur de sachet - fleche personnalisee --- */
/* Le premier calque liste dans background-image est peint au-dessus des
   suivants : la fleche SVG doit donc etre listee avant le degrade. */
.product-variants-item select.form-control {
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  appearance: none !important;
  background-color: #0a1f3d !important;

  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23ff7a12' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"),
    linear-gradient(160deg, #0a1f3d, #0d2a50) !important;
  background-repeat: no-repeat !important;
  background-position: right 14px center, 0 0 !important;
  background-size: 11px 7px, 100% 100% !important;
  padding-right: 36px !important;
}

.product-quantity.clearfix {
  display: flex !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 14px !important;
}

/* --- Bouton wishlist - repositionne apres la quantite --- */
/* order superieur a celui des boutons existants (qty, add) pour que le
   bouton wishlist passe toujours en dernier, quelle que soit sa position
   dans le DOM. */
.product-quantity.clearfix .wishlist-button-add {
  order: 99 !important;
  margin-left: auto !important;
}
.product-quantity.clearfix > *:has(.wishlist-button-add) {
  order: 99 !important;
  margin-left: auto !important;
}

/* --- Titre H1 fiche produit (couleur) --- */
body#product h1.h1 {
  color: var(--kms-orange) !important;
  font-size: 32px !important;
  text-decoration: underline !important;
  text-decoration-color: var(--kms-orange) !important;
  text-decoration-thickness: 3px !important;
  text-underline-offset: 6px !important;
  text-shadow: 0 0 16px rgba(255,122,18,0.5) !important;
}

#main .block-category h1.h1,

/* ===== CATEGORIE - titre, cards complements ===== */
.block-category h1.h1 {
  color: var(--kms-orange) !important;
  font-size: 32px !important;
  text-decoration: underline !important;
  text-decoration-color: var(--kms-orange) !important;
  text-decoration-thickness: 3px !important;
  text-underline-offset: 6px !important;
  text-shadow: 0 0 16px rgba(255,122,18,0.5) !important;
}

.product-miniature .product-price-and-shipping {
  background: linear-gradient(135deg, #0a1a35, #0d2444) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
  padding: 8px 10px !important;
}

.thumbnail-container,
.product-miniature .thumbnail-container {
  background: radial-gradient(ellipse at center, #a9d3ec 0%, #4a95c4 50%, #0a2e4d 100%) !important;
}

.product-miniature .highlighted-informations {
  position: static !important;
  opacity: 1 !important;
  transform: none !important;
  background: transparent !important;
}

.kms-card-actions {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-left: auto !important;
  flex-shrink: 0 !important;
}

/* Sur mobile, le inline-flex force les actions (quick-view, etc.) a
   rester sur la meme ligne que le prix et ca casse l'affichage sur
   petit ecran. On annule le display ici pour que ca redevienne clair
   (retour Max 10/10). */
@media (max-width: 767px) {
  .kms-card-actions {
    display: block !important;
  }
}

.kms-quick-view-inline {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 30px !important;
  height: 30px !important;
  border-radius: 50% !important;
  background: rgba(41,214,255,0.12) !important;
  border: 1px solid var(--kms-blue-d) !important;
  color: var(--kms-blue) !important;
  flex-shrink: 0 !important;
  transition: all .25s var(--kms-ease) !important;
}
.kms-quick-view-inline i { font-size: 16px !important; }

.product-price-and-shipping .kms-quick-view-inline.quick-view,
.product-price-and-shipping .kms-quick-view-inline.quick-view i {
  color: var(--kms-blue) !important;
  -webkit-text-stroke: 0 !important;
  text-shadow: none !important;
  filter: none !important;
}
.product-price-and-shipping .kms-quick-view-inline.quick-view:hover,
.product-price-and-shipping .kms-quick-view-inline.quick-view:hover i {
  color: white !important;
}
.kms-quick-view-inline:hover {
  border-color: var(--kms-blue) !important;
  box-shadow: 0 0 10px rgba(41,214,255,0.4) !important;
  color: white !important;
}

/* ===== ESPACE CLIENT (mon compte) ===== */
.page-my-account .link-item {
  background: var(--kms-bg-card) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
  color: var(--kms-text) !important;
  transition: border-color .25s var(--kms-ease), box-shadow .25s var(--kms-ease) !important;
}
.page-my-account a:hover .link-item {
  border-color: var(--kms-blue) !important;
  box-shadow: 0 0 14px rgba(41,214,255,0.25) !important;
}
.page-my-account .link-item i.material-icons {
  color: var(--kms-blue) !important;
  text-shadow: 0 0 10px rgba(41,214,255,0.4) !important;
}
.page-my-account #content,
.page-my-account .page-content { background: transparent !important; }
.page-my-account h1 { color: var(--kms-orange) !important; }
.page-my-account h3 { color: var(--kms-blue) !important; }
.page-my-account .form-control,
.page-my-account input, .page-my-account textarea, .page-my-account select {
  background: #050810 !important;
  border: 1px solid var(--kms-border) !important;
  color: var(--kms-text) !important;
}
.page-my-account label { color: var(--kms-muted) !important; }
.page-my-account .card, .page-my-account .box { background: var(--kms-bg-card) !important; color: var(--kms-text) !important; }

/* ===== PAGE 404 ===== */
.page-not-found {
  background: transparent !important;
  padding: 24px !important;
}
.page-not-found h4 {
  color: var(--kms-blue) !important;
  text-shadow: 0 0 10px rgba(41,214,255,0.3) !important;
}
.page-not-found p { color: var(--kms-text) !important; }

/* ===== PAGES VITRINE PROMO (couleurs) ===== */
.kms-promo-txt {
  background: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  padding: 0 !important;
}

.kms-promo-name.kms-txt-blue,
.kms-promo-name.kms-txt-orange,
.kms-promo-name.kms-txt-green,
.kms-promo-name.kms-txt-purple {
  display: inline-block !important;
  background: rgba(4,8,18,0.45) !important;
  padding: 3px 9px !important;
  border-radius: 5px !important;
}

.kms-brands-title {
  background: linear-gradient(90deg,
    var(--kms-blue) 0%, var(--kms-orange) 50%, var(--kms-blue) 100%) !important;
  background-size: 200% auto !important;

  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
}
.kms-brands-title::after {
  background: linear-gradient(90deg,
    var(--kms-blue) 0%, var(--kms-orange) 50%, var(--kms-blue) 100%);
  background-size: 200% auto;
}

#footer {
  padding-top: 10px !important;
}

.product-miniature .product-title a {
  color: white !important;
  font-size: 18px !important;
  text-decoration: underline !important;
  text-decoration-color: white !important;
  text-decoration-thickness: 2px !important;
  text-underline-offset: 4px !important;
  text-shadow: 0 0 10px rgba(41,214,255,0.5) !important;
}

.block-category.card-block {
  padding: 28px 24px 24px !important;
}
.block-category.card-block h1.h1 {
  margin-top: 0 !important;
  margin-bottom: 14px !important;
}

.cart-container,
.cart-summary,

/* ===== PANIER / COMMANDE ===== */
#js-checkout-summary {
  background: var(--kms-bg-banks) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
  box-shadow: none !important;
  color: var(--kms-text) !important;
}
.cart-container .card-block,
.cart-summary .card-block {
  background: transparent !important;
}
.cart-container hr.separator {
  border-color: var(--kms-border) !important;
  opacity: 0.5 !important;
}
.cart-overview .no-items {
  color: var(--kms-muted) !important;
}

.cart-grid-body > a.label {
  color: var(--kms-blue) !important;
  display: inline-flex !important;
  align-items: center !important;
  margin-top: 14px !important;
  transition: color .2s var(--kms-ease) !important;
}
.cart-grid-body > a.label:hover { color: white !important; }
.cart-grid-body > a.label .material-icons { color: inherit !important; }

.cart-summary-line { border-color: var(--kms-border) !important; }

.cart-summary-line .label,
.cart-summary-line .value,
.cart-summary-line small {
  color: var(--kms-text) !important;
}
.cart-summary-line .text-muted,
.cart-summary-line small.text-muted {
  color: var(--kms-muted) !important;
}
.cart-summary-totals .cart-total .label,
.cart-summary-totals .cart-total .value {
  color: var(--kms-blue) !important;
  font-weight: 700 !important;
}
.cart-detailed-actions .btn.btn-primary {
  background: var(--kms-blue) !important;
  border-color: var(--kms-blue) !important;
  color: #061426 !important;
  font-weight: 700 !important;
}
.cart-detailed-actions .btn.btn-primary.disabled,
.cart-detailed-actions .btn.btn-primary:disabled {
  background: var(--kms-border) !important;
  border-color: var(--kms-border) !important;
  color: var(--kms-muted) !important;
  opacity: .6 !important;
}

.cart-grid-right .blockreassurance_product {
  flex-direction: column !important;
}
.cart-grid-right .blockreassurance_product > div {
  width: 100% !important;
  flex: 1 1 auto !important;
  margin-bottom: 10px !important;
}
.cart-grid-right .blockreassurance_product > div:last-child {
  margin-bottom: 0 !important;
}
.block-category.card-block .block-category-inner {
  margin-top: 2px !important;
}
.block-category.card-block #category-description {
  line-height: 1.7 !important;
}

/* ===== GRILLE CATEGORIE - complements ===== */
.products.row > .product {
  margin-bottom: 24px !important;
}

.product-miniature .thumbnail.product-thumbnail {
  outline: none !important;
}
.product-miniature .thumbnail.product-thumbnail:focus-visible {
  outline: 2px solid var(--kms-blue) !important;
  outline-offset: 2px !important;
}

.product-miniature .thumbnail-container {
  background: #ffffff !important;
}

.product-miniature .product-title a {
  color: var(--kms-orange) !important;
  text-decoration-color: var(--kms-orange) !important;
  text-shadow: 0 0 8px rgba(255,122,18,0.45) !important;
}

.product-miniature .product-thumbnail img[alt*="Anaconda Seeds"] {
  transform: scale(1.9) !important;
  transform-origin: center !important;
}

/* ===== PAGE CMS LIVRAISON ===== */
.kms-ship-intro {
  background: linear-gradient(135deg, rgba(41,214,255,0.08), rgba(255,122,18,0.05));
  border: 1px solid var(--kms-border);
  border-radius: 8px;
  padding: 20px 24px;
  margin-bottom: 24px;
}
.kms-ship-intro p { color: var(--kms-text) !important; margin: 0 0 8px; }
.kms-ship-intro p:last-child { margin-bottom: 0; }

.kms-ship-section { margin: 30px 0; }
.kms-ship-section h2 {
  font-family: var(--kms-font-display);
  font-size: 20px !important;
  letter-spacing: .5px;
  border-left: 3px solid var(--kms-orange);
  padding-left: 12px;
  margin-bottom: 14px !important;
}

.kms-ship-table-wrap { overflow-x: auto; border-radius: 8px; border: 1px solid var(--kms-border); }
table.kms-ship-table { width: 100%; border-collapse: collapse; background: var(--kms-bg-mid); }
table.kms-ship-table th {
  background: var(--kms-bg-header);
  color: var(--kms-orange) !important;
  text-transform: uppercase;
  font-size: 12px;
  letter-spacing: .5px;
  padding: 12px 16px;
  text-align: left;
  border-bottom: 1px solid var(--kms-border);
}
table.kms-ship-table td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--kms-border);
  color: var(--kms-text) !important;
}
table.kms-ship-table tr:last-child td { border-bottom: none; }
table.kms-ship-table td.kms-ship-pending {
  color: var(--kms-muted) !important;
  font-style: italic;
}

.kms-ship-callout {
  display: flex; align-items: flex-start; gap: 16px;
  background: var(--kms-bg-card);
  border: 1px solid rgba(41,214,255,0.25);
  border-radius: 8px;
  padding: 18px 22px;
}
.kms-ship-callout-icon {
  font-size: 28px; line-height: 1; flex-shrink: 0;
  filter: drop-shadow(0 0 8px var(--kms-blue-glow));
}
.kms-ship-callout p { color: var(--kms-text) !important; margin: 0; }

.kms-ship-steps {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 14px;
}
.kms-ship-step {
  background: var(--kms-bg-card);
  border: 1px solid var(--kms-border);
  border-radius: 8px;
  padding: 16px;
  text-align: center;
}
.kms-ship-step-n {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--kms-orange); color: #060a14 !important;
  font-weight: 800; font-family: var(--kms-font-display);
  margin-bottom: 8px;
}
.kms-ship-step p { color: var(--kms-text) !important; font-size: 13px; margin: 0; }

@media (max-width: 767px) {
  .kms-ship-steps { grid-template-columns: repeat(2, 1fr); }
}

/* ===== FICHE PRODUIT - libelle pack / grille de packs ===== */
.kms-card-pack {
  display: block;
  color: var(--kms-muted) !important;
  font-family: var(--kms-font-body) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  margin: 2px 0 6px !important;
}

.kms-pack-cards {
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
  width: 100%;
  margin-top: 4px;
}

.kms-pack-card-item {
  display: block !important;
  margin: 0 !important;
  width: 100%;
  /* 04/11 (bug mobile - page decalee a droite apres clic "quantite") :
     ajoute pour servir de repere de positionnement (containing block) a
     .kms-pack-card-input ci-dessous, qui est en position:absolute. */
  position: relative;
}

.kms-pack-card-input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
  /* 04/11 (bug mobile - page decalee a droite apres clic "quantite") :
     sans top/left, un element en position:absolute se place a sa
     position "statique" (la ou il serait dans le flux normal) - ici,
     comme .kms-pack-card-item (son parent direct) n'avait pas de
     position:relative, ce repere remontait jusqu'a un ancetre bien plus
     haut dans la page, placant ce champ invisible de 1x1px tout au bord
     droit de l'ecran (confirme : left=375px pile sur un viewport de
     375px). Au toucher, le navigateur mobile tente de "faire defiler
     jusqu'a l'element qui recoit le focus" - comme ce champ est juste
     hors-ecran, cela decalait toute la page vers la droite, sans retour
     possible (seul le scroll vertical restait utilisable). top/left:0
     fixe ce champ dans le coin de sa ligne, toujours visible. */
  top: 0;
  left: 0;
}

.kms-pack-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 16px;
  border: 1px solid var(--kms-border);
  border-radius: 8px;
  background: var(--kms-bg-card);
  cursor: pointer;
  transition: border-color .18s var(--kms-ease), box-shadow .18s var(--kms-ease), background .18s var(--kms-ease);
}

.kms-pack-card-item:hover .kms-pack-card {
  border-color: var(--kms-blue-d);
}

.kms-pack-card-name {
  font-family: var(--kms-font-body) !important;
  font-weight: 600 !important;
  color: var(--kms-text) !important;
  font-size: 14px !important;
  letter-spacing: .02em;
}

.kms-pack-card-price {
  font-family: var(--kms-font-display) !important;
  font-weight: 500 !important;
  color: var(--kms-blue) !important;
  font-size: 14px !important;
  margin-left: auto;
  margin-right: 10px;
  white-space: nowrap;
}

.kms-pack-card-check {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  min-width: 20px;
  border-radius: 50%;
  border: 1px solid var(--kms-border);
  color: transparent;
  font-size: 12px;
  line-height: 1;
  transition: color .15s var(--kms-ease), border-color .15s var(--kms-ease), background .15s var(--kms-ease), box-shadow .15s var(--kms-ease);
}

.kms-pack-card-item:has(.kms-pack-card-input:checked) .kms-pack-card {
  border-color: var(--kms-blue) !important;
  box-shadow: 0 0 0 1px var(--kms-blue), 0 0 14px var(--kms-blue-glow) !important;
  background: var(--kms-blue-dd) !important;
}

.kms-pack-card-item:has(.kms-pack-card-input:checked) .kms-pack-card-check {
  color: #04060f !important;
  background: var(--kms-blue) !important;
  border-color: var(--kms-blue) !important;
}

.kms-pack-card-input:focus-visible ~ .kms-pack-card {
  outline: 2px solid var(--kms-blue);
  outline-offset: 2px;
}

/* ===== PANIER - ligne produit ===== */
.kms-cart-line {
  padding: 16px 0 !important;
  border-bottom: 1px solid var(--kms-border) !important;

  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
}
.kms-cart-line > .product-line-grid-left,
.kms-cart-line > .product-line-grid-body,
.kms-cart-line > .product-line-grid-right {
  align-self: center !important;
}
.kms-cart-line-image {
  display: block !important;
  border: 1px solid var(--kms-border);
  border-radius: 10px;
  overflow: hidden;
  background: var(--kms-bg-card);
  padding: 0 !important;
}
.kms-cart-line-image picture,
.kms-cart-line-image img {
  border-radius: 6px;
}
/* Neutralise le col-md-3 Bootstrap (25% de large) herite du parent sur la
   colonne image du panier en desktop : l'image cart_default fait 125x125
   (cf. ps_image_type), donc une colonne a 25% de la largeur de la ligne
   est bien plus large que l'image, qui se retrouve plaquee a gauche avec
   du vide a droite - visible surtout sur les visuels non "plein cadre"
   (logo sur fond blanc, ex. Automatic Northern Sky). Repere par Max via
   F12 sur l'image du panier, 20/10. */
@media (min-width: 768px) {
  .kms-cart-line > .product-line-grid-left.col-md-3 {
    width: 125px !important;
    max-width: 125px !important;
    flex: 0 0 125px !important;
  }
}
.kms-cart-line-image {
  text-align: center !important;
}
.kms-cart-line-name {

  color: var(--kms-orange) !important;
  font-family: var(--kms-font-body) !important;
  font-weight: 700 !important;
  font-size: 16px !important;
  text-decoration: none !important;
  transition: color .18s var(--kms-ease) !important;
}
.kms-cart-line-name:hover {
  color: var(--kms-blue) !important;
}

.kms-cart-pack-badge {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin: 4px 0 0 !important;
  padding: 7px 16px !important;
  border: 1px solid var(--kms-blue-d) !important;
  border-radius: 999px !important;
  background: var(--kms-blue-dd) !important;
  font-family: var(--kms-font-body) !important;
  font-size: 14px !important;
  line-height: 1.4 !important;
}
.kms-cart-pack-badge-text {
  color: var(--kms-blue) !important;
  font-weight: 700 !important;
}

.kms-cart-line-price .current-price .price {
  color: var(--kms-text) !important;
  font-weight: 600 !important;
}
.kms-cart-line-price .regular-price {
  color: var(--kms-muted) !important;
}

.kms-cart-line-total strong {
  color: var(--kms-blue) !important;
  font-family: var(--kms-font-display) !important;
  font-weight: 600 !important;
}

.kms-cart-line .js-cart-line-product-quantity {
  background: var(--kms-bg-card) !important;
  border: 1px solid var(--kms-border) !important;
  color: var(--kms-text) !important;
  border-radius: 6px !important;
}
.kms-cart-line .remove-from-cart .material-icons {
  color: var(--kms-muted) !important;
  transition: color .18s var(--kms-ease) !important;
}
.kms-cart-line .remove-from-cart:hover .material-icons {
  color: var(--kms-orange) !important;
}

/* --- Panier (mobile) : marges + bouton +/- colle au chiffre --- */
@media (max-width: 767px) {
  .kms-cart-line {
    padding: 0 !important;
    gap: 10px !important;
  }
  .kms-cart-line .bootstrap-touchspin,
  .kms-cart-line .input-group.bootstrap-touchspin {
    display: flex !important;
    align-items: stretch !important;
  }
  .kms-cart-line .js-cart-line-product-quantity {
    margin: 0 !important;
    border-right: none !important;
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
  }
  .kms-cart-line .input-group-btn-vertical {
    margin-left: 0 !important;
    display: flex !important;
    flex-direction: column !important;
  }
  .kms-cart-line .input-group-btn-vertical button {
    border-top-left-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
  }
}

/* --- Panier (round 2, 07/10) : quantite/prix/poubelle a droite de
   l'image au lieu de passer en dessous sur mobile - reconstruit le 07/10
   suite a une perte de cette revision dans le fichier. Structure reelle
   verifiee dans checkout/_partials/cart-detailed-product-line.tpl :
   .kms-cart-line > .product-line-grid-left (image) / -body (nom, badge
   pack, remise) / -right (qte, prix, poubelle, via des col-xs-* Bootstrap
   a neutraliser pour passer en grid). */
@media (max-width: 767px) {
  .kms-cart-line {
    display: grid !important;
    grid-template-columns: 84px 1fr !important;
    grid-template-areas:
      "image body"
      "image actions" !important;
    align-items: start !important;
    column-gap: 12px !important;
    row-gap: 8px !important;
  }
  .kms-cart-line > .product-line-grid-left {
    grid-area: image !important;
    width: auto !important;
    max-width: none !important;
    flex: none !important;
  }
  .kms-cart-line > .product-line-grid-body {
    grid-area: body !important;
    width: auto !important;
    max-width: none !important;
    flex: none !important;
  }
  .kms-cart-line > .product-line-grid-right {
    grid-area: actions !important;
    width: auto !important;
    max-width: none !important;
    flex: none !important;
  }
  .kms-cart-line .product-line-grid-right .row {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 0 !important;
  }
  .kms-cart-line .product-line-grid-right .col-xs-4.hidden-md-up {
    display: none !important;
  }
  .kms-cart-line .product-line-grid-right .col-md-10.col-xs-6 {
    width: auto !important;
    flex: 1 1 auto !important;
  }
  .kms-cart-line .product-line-grid-right .col-md-2.col-xs-2 {
    width: auto !important;
    flex: none !important;
  }
}

/* --- Prix "a partir de" sur les cards --- */
.kms-price-from {

  font-size: 12px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: 0 !important;
  color: #ffffff !important;
  display: block !important;
  white-space: nowrap !important;
}

.product-miniature .product-price-and-shipping .price {
  min-width: max-content !important;
}

/* ===== PAGES VITRINE - en-tete & mascottes ===== */
.kms-promo-header-row {
  display: flex;
  align-items: stretch;
  gap: 20px;
  margin-bottom: 24px;
}

.kms-promo-header-image {
  flex: 0 0 380px;
  width: 380px;
  height: 250px;
  border-radius: 12px;
  background-size: cover;
  background-position: center;
  border: 1px solid var(--kms-border);
}
.kms-promo-header {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  max-height: 250px;
  display: flex;
  align-items: center;
  gap: 24px;
  background: var(--kms-bg-card);
  border: 1px solid var(--kms-border);
  border-radius: 12px;
  padding: 5px 38px;
  overflow: hidden;
}
.kms-promo-header-body {
  flex: 1 1 auto;
  min-width: 0;
}
.kms-promo-header-title {
  margin: 0 0 6px !important;
  font-family: var(--kms-font-display) !important;
  font-size: 26px !important;
  font-weight: 800 !important;
  letter-spacing: .3px !important;
  text-decoration: underline !important;
  text-underline-offset: 5px !important;
  text-decoration-thickness: 3px !important;
}
.kms-promo-header-text {
  margin: 0 !important;
  max-width: 620px;
  color: var(--kms-text) !important;
  font-family: var(--kms-font-body) !important;
  font-size: 14.5px !important;
  line-height: 1.5 !important;
  opacity: .9;
}
.kms-promo-header-mascot {
  flex: none;
  width: auto;
  max-height: 150px;
  margin-left: auto;
  filter: drop-shadow(0 0 14px rgba(41,214,255,0.25));
  /* 19/10 (Lighthouse - CLS, "dimensions d'image absentes") : toutes les
     mascottes d'en-tete (new/promo/premium/best header) sont carrees
     (500x500) - aspect-ratio permet au navigateur de reserver le bon
     espace avant meme le chargement de l'image, sans rien changer au
     rendu actuel (width:auto + max-height continuent a fonctionner). */
  aspect-ratio: 1 / 1;
}

.kms-promo-header-blue,
.kms-promo-header-image.kms-promo-header-blue   { border-color: rgba(41,214,255,0.35); }
.kms-promo-header-blue   { box-shadow: 0 0 28px rgba(41,214,255,0.08); }
.kms-promo-header-blue   .kms-promo-header-title { color: var(--kms-blue) !important; text-decoration-color: var(--kms-blue) !important; text-shadow: 0 0 14px rgba(41,214,255,0.5); }
.kms-promo-header-orange,
.kms-promo-header-image.kms-promo-header-orange { border-color: rgba(255,122,18,0.35); }
.kms-promo-header-orange { box-shadow: 0 0 28px rgba(255,122,18,0.08); }
.kms-promo-header-orange .kms-promo-header-title { color: var(--kms-orange) !important; text-decoration-color: var(--kms-orange) !important; text-shadow: 0 0 14px rgba(255,122,18,0.5); }
.kms-promo-header-green,
.kms-promo-header-image.kms-promo-header-green  { border-color: rgba(127,255,0,0.3); }
.kms-promo-header-green  { box-shadow: 0 0 28px rgba(127,255,0,0.07); }
.kms-promo-header-green  .kms-promo-header-title { color: var(--kms-green) !important; text-decoration-color: var(--kms-green) !important; text-shadow: 0 0 14px rgba(127,255,0,0.4); }
.kms-promo-header-purple,
.kms-promo-header-image.kms-promo-header-purple { border-color: rgba(187,68,255,0.35); }
.kms-promo-header-purple { box-shadow: 0 0 28px rgba(187,68,255,0.08); }
.kms-promo-header-purple .kms-promo-header-title { color: var(--kms-purple) !important; text-decoration-color: var(--kms-purple) !important; text-shadow: 0 0 14px rgba(187,68,255,0.5); }

@media (max-width: 991px) {
  .kms-promo-header-mascot { width: 90px; }
  .kms-promo-header-image { flex-basis: 180px; }
}
@media (max-width: 767px) {
  .kms-promo-header-row { flex-wrap: wrap; }
  .kms-promo-header-image { flex-basis: 100%; min-height: 140px; }
  .kms-promo-header { flex-wrap: wrap; padding: 18px 20px; }
  .kms-promo-header-mascot { display: none; }
  .kms-promo-header-title { font-size: 22px !important; }
}

.kms-promo-products-mascot {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: auto;
  height: 280px;
  /* 19/10 (Lighthouse - CLS) : images carrees (500x500), meme logique que
     .kms-promo-header-mascot ci-dessus. */
  aspect-ratio: 1 / 1;
  /* FIX (02/10, Max : "la mascotte est minuscule/toute fine") : en dessous de
     1400px (voir regles plus bas), width ET height etaient tous les deux
     contraints (max-width + height fixe) sans object-fit -> l'image etait
     ecrasee horizontalement au lieu de rester proportionnelle. object-fit:
     contain garde le ratio naturel de l'image dans la boite, quelle que
     soit la combinaison de width/height/max-width appliquee par breakpoint. */
  object-fit: contain;
  pointer-events: none;
  z-index: 3;
  filter: drop-shadow(0 0 14px rgba(41,214,255,0.2));
}
.kms-promo-products-mascot-left  { left: -230px; }
.kms-promo-products-mascot-right { right: -230px; }

/* Rétrécissement progressif : au-dessus de 1400px, #main .container (plafonné
   à 1400px) laisse de la marge à l'extérieur de la grille produits ->
   les mascottes y flottent (offset négatif, comme ci-dessus) sans jamais
   réduire la largeur de la grille elle-même. */
@media (max-width: 1850px) {
  .kms-promo-products-mascot { height: 220px; }
  .kms-promo-products-mascot-left  { left: -130px; }
  .kms-promo-products-mascot-right { right: -130px; }
}
@media (max-width: 1600px) {
  .kms-promo-products-mascot { height: 170px; }
  .kms-promo-products-mascot-left  { left: -70px; }
  .kms-promo-products-mascot-right { right: -70px; }
}

/* En dessous de 1400px, le container passe en pleine largeur (plus de marge
   disponible à l'extérieur) : un offset négatif finirait soit hors écran
   (overflow-x:hidden le masque), soit - pire - À L'INTÉRIEUR de la grille,
   superposé aux cards produit (bug remonté par Max : "la mascotte est dans
   le produit"). À partir d'ici on change de technique : #products se voit
   réserver un vrai padding gauche/droite (classe .kms-has-promo-mascots,
   ajoutée en JS seulement sur ces pages vitrine - voir
   kms-promo-products-mascots.tpl), et les mascottes se positionnent DANS
   cet espace réservé (offset positif, jamais superposé à la grille, qui est
   mécaniquement rétrécie d'autant). Visibles en continu jusqu'au seuil
   mobile du site (900px, même bascule que le menu burger). */
@media (max-width: 1400px) {
  #products.kms-has-promo-mascots { padding-left: 110px; padding-right: 110px; }
  .kms-promo-products-mascot { height: 165px; max-width: 90px; }
  .kms-promo-products-mascot-left  { left: 12px; }
  .kms-promo-products-mascot-right { right: 12px; }
}
@media (max-width: 1200px) {
  #products.kms-has-promo-mascots { padding-left: 90px; padding-right: 90px; }
  .kms-promo-products-mascot { height: 135px; max-width: 74px; }
  .kms-promo-products-mascot-left  { left: 10px; }
  .kms-promo-products-mascot-right { right: 10px; }
}
@media (max-width: 1000px) {
  #products.kms-has-promo-mascots { padding-left: 70px; padding-right: 70px; }
  .kms-promo-products-mascot { height: 105px; max-width: 58px; }
  .kms-promo-products-mascot-left  { left: 8px; }
  .kms-promo-products-mascot-right { right: 8px; }
}
@media (max-width: 900px) {
  #products.kms-has-promo-mascots { padding-left: 0; padding-right: 0; }
  .kms-promo-products-mascot { display: none; }
}

.kms-cms-mascot {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: auto;
  height: 350px;
  pointer-events: none;
  z-index: 3;
  filter: drop-shadow(0 0 14px rgba(41,214,255,0.2));
  /* 19/10 (Lighthouse - CLS) : images carrees (500x500), meme logique que
     .kms-promo-header-mascot. */
  aspect-ratio: 1 / 1;
}
.kms-cms-mascot-left  { left: -350px; }
.kms-cms-mascot-right { right: -350px; }
@media (max-width: 1500px) {
  .kms-cms-mascot { display: none; }
}

/* ===== RESPONSIVE MOBILE ===== */
/* --- Footer (round 2, 07/10 : les 3 .kms-footer-col passent en grille 2
   colonnes, logo + texte legal centres en pleine largeur au-dessus -
   reconstruit le 07/10 suite a une perte de cette revision dans le
   fichier) --- */
@media (max-width: 767px) {
  .kms-footer-grid {
    grid-template-columns: 1fr 1fr !important;
    padding: 32px 20px 20px !important;
    gap: 20px 16px !important;
  }
  .kms-footer-brand {
    grid-column: 1 / -1 !important;
    text-align: center !important;
  }
  .kms-footer-brand-link {
    left: 0 !important;
    display: inline-flex !important;
    justify-content: center !important;
    width: 100% !important;
  }
  .kms-footer-bottom {
    flex-direction: column !important;
    gap: 12px !important;
    text-align: center !important;
    padding: 18px 20px !important;
  }
}

/* --- Menu burger --- */
.kms-burger {
  display: none;
  background: transparent;
  border: 1px solid var(--kms-blue-d);
  border-radius: 4px;
  width: 42px;
  height: 38px;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-direction: column;
  gap: 4px;
  flex-shrink: 0;
}
.kms-burger span {
  display: block;
  width: 20px;
  height: 2px;
  background: var(--kms-blue);
  box-shadow: 0 0 6px var(--kms-blue-glow);
}

/* --- Burger : pulse + lueur orange (mobile), s'arrete quand le menu est
   ouvert (attribut aria-expanded deja bascule par le JS de header.tpl) --- */
@keyframes kms-burger-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.12); }
}
@keyframes kms-burger-glow {
  0%, 100% { opacity: 0; }
  50% { opacity: 1; }
}
.kms-burger {
  position: relative;
}
.kms-burger::before {
  content: '';
  position: absolute;
  inset: -9px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,122,18,0.55), transparent 72%);
  opacity: 0;
  z-index: -1;
  pointer-events: none;
}
@media (max-width: 900px) {
  .kms-burger {
    animation: kms-burger-pulse 1.8s ease-in-out infinite;
  }
  .kms-burger::before {
    animation: kms-burger-glow 1.8s ease-in-out infinite;
  }
  .kms-burger[aria-expanded="true"] {
    animation: none;
    transform: scale(1);
    border-color: var(--kms-orange);
  }
  .kms-burger[aria-expanded="true"]::before {
    animation: none;
    opacity: 0;
  }
}

/* --- Header (recherche, nav) --- */
@media (max-width: 900px) {
  .kms-header {
    flex-wrap: wrap;
    padding: 14px 16px;
    gap: 10px;
  }
  .kms-logo img { height: 56px !important; }
  .kms-burger { display: flex; order: 1; }
  .kms-actions { order: 2; margin-left: auto !important; }
  .kms-search-wrap {
    order: 3;
    flex: 1 1 100% !important;
    min-width: 0;
    margin-left: 0 !important;
  }
  .kms-search-wrap form,
  #search_widget form { min-width: 0 !important; }
  .kms-search-wrap input,
  #search_widget input[type="text"] { min-width: 0 !important; }
  .kms-nav {
    display: none;
    order: 4;
    flex: 1 1 100%;
    flex-direction: column;
    background: var(--kms-bg-header);
    border-top: 1px solid var(--kms-border);
    margin-top: 4px;
    width: 100%;
  }
  .kms-nav.kms-nav-open { display: flex !important; }
  .kms-nav a {
    width: 100%;
    padding: 13px 8px;
    border-bottom: 1px solid rgba(41,214,255,0.08);
  }
  .kms-nav a::after { display: none; }
  .kms-topbar { flex-wrap: wrap; gap: 6px; padding: 8px 16px; }
}

html, body { overflow-x: hidden !important; max-width: 100%; }

/* --- Debordement horizontal (filet de securite) --- */
.kms-brands-carousel-wrap, .kms-brands-carousel {
  min-width: 0;
  max-width: 100%;
}

/* --- Panneau de filtres recherche (masque sur mobile UNIQUEMENT quand il
   est vide) --- #left-column s'affichait comme un bloc vide entre le fil
   d'Ariane et le titre de categorie sur certaines pages (col-xs-12 = pleine
   largeur, premier dans le DOM avant #content-wrapper qui est deja pleine
   largeur independamment). Masquer #left-column sans condition cassait le
   bouton "Filtrer" mobile sur les pages qui ont de vrais filtres (bug
   signale par Max le 07/10) : :not(:has(*)) ne cible que le wrapper
   reellement vide (aucun enfant), une colonne de filtres populee garde son
   affichage/comportement natif. */
@media (max-width: 767px) {
  #left-column:not(:has(*)) {
    display: none !important;
  }
}

/* --- Filtres mobile (panneau "Filtrer") : marge interieure (round
   mobile, 07/10). Contenu reel confirme dans l'override
   modules/ps_facetedsearch/views/templates/front/catalog/facets.tpl :
   tout est encapsule dans #search_filters, qui n'etait pas concerne par
   le padding de #left-column (le panneau "Filtrer" sur mobile est affiche
   par PrestaShop dans un contexte/modal different de la sidebar desktop,
   en dehors du padding de #left-column) -> premiere lettre des titres de
   filtre (DISPONIBILITE, PRIX...) collee au bord de l'ecran. Padding
   ajoute directement sur #search_filters, qui reste present quel que
   soit le contexte d'affichage. */
@media (max-width: 767px) {
  #search_filters {
    padding: 0 16px !important;
  }
}

/* --- Marges negatives natives PrestaShop sur mobile (regle du theme
   parent, themes/classic/assets/css/theme.css :
   #category #left-column #search_filters_wrapper { margin-left/-right:
   -30px }) : ca fait deborder le panneau de filtres hors de sa colonne
   et casse la mise en page mobile (demande de Max, 08/10). custom.css
   est charge apres theme.css, donc une regle de meme specificite ici
   suffit a reprendre le dessus sans !important - ajoute quand meme pour
   rester coherent avec le reste de ce bloc mobile. */
@media (max-width: 767px) {
  #category #left-column #search_filters_wrapper {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* --- Grille produits (2 par ligne, mobile, avec marges + gap) ---
   (round 2, 07/10 - reconstruit le 07/10 suite a une perte de cette
   revision dans le fichier ; round 1 passait a 4 colonnes/25%, jugee trop
   serree par Max, revu ici en 2 colonnes/50% avec tailles remontees) */
@media (max-width: 575px) {
  .js-product.col-xs-12 {
    width: 50% !important;
    flex: 0 0 50% !important;
    max-width: 50% !important;
    padding-left: 8px !important;
    padding-right: 8px !important;
    margin-bottom: 18px !important;
  }
  #products .products,
  .products.row {
    margin-left: -8px !important;
    margin-right: -8px !important;
  }
  .product-miniature .thumbnail-top {
    min-height: 120px !important;
    padding: 10px !important;
  }
  .product-miniature .product-thumbnail img {
    max-height: 100px !important;
    position: relative !important;
    bottom: 10px !important;
  }
  .product-miniature .product-title a {
    font-size: 13px !important;
    line-height: 1.3 !important;
  }
  .product-miniature .price {
    font-size: 13px !important;
  }
  .kms-card-pack {
    font-size: 10px !important;
  }
  .kms-price-from {
    font-size: 10px !important;
  }
  .kms-quick-add-btn {
    width: 32px !important;
    height: 32px !important;
  }
  .kms-quick-add-btn i.shopping-cart {
    font-size: 16px !important;
  }
  .product-miniature .quick-view {
    font-size: 12px !important;
  }
  .product-miniature .product-price-and-shipping {
    padding: 6px 8px !important;
    gap: 6px !important;
  }
  /* Taille de police homogene meme avec une promo (prix barre + badge
     reduction), pour que la div ne change pas de forme vs. un produit
     sans promo. */
  .product-miniature .regular-price {
    font-size: 10px !important;
  }
  .product-miniature .discount-percentage,
  .product-miniature .discount-amount {
    font-size: 9px !important;
    padding: 1px 5px !important;
  }
}

/* 08/10 (demande de Max, verifie par lui en DevTools a 323px) : meme a
   32px (palier 575px ci-dessus), le bouton panier rond ne tenait plus a
   cote du prix sur une card aussi etroite (2 colonnes sur un ecran de
   323px, carte ~140px de large) - encore resserre ici, en complement du
   flex-wrap:wrap pose plus haut sur .product-price-and-shipping (filet de
   securite si meme cette taille ne suffisait pas). */
@media (max-width: 360px) {
  .kms-quick-add-btn {
    width: 28px !important;
    height: 28px !important;
  }
  .kms-quick-add-btn i.shopping-cart {
    font-size: 14px !important;
  }
  .kms-price-from {
    font-size: 9px !important;
  }
  .product-miniature .price {
    font-size: 12px !important;
  }
  .product-miniature .product-price-and-shipping {
    padding: 5px 6px !important;
    gap: 4px !important;
  }
}

/* --- Fiche produit (titre, image, sections resserrees) --- */
@media (max-width: 767px) {
  body#product h1.h1 {
    font-size: 22px !important;
    line-height: 1.25 !important;
  }
  body#product .images-container {
    max-width: 240px !important;
    margin: 0 auto !important;
  }
  .kms-info-carac {
    margin-top: 20px !important;
    padding-top: 16px !important;
    gap: 20px !important;
  }
  .kms-section-title {
    font-size: 13px !important;
    padding-bottom: 6px !important;
    margin-bottom: 10px !important;
  }
  .kms-long-description,
  .kms-long-description p {
    font-size: 14px !important;
    line-height: 1.55 !important;
  }
  .kms-pack-cards {
    margin-top: 2px !important;
  }
  .kms-attachments,
  .kms-extra-content {
    margin-top: 16px !important;
    padding-top: 14px !important;
  }
}

/* --- Pastilles PrestaShop natives (-10%, Nouveau, Rupture de stock...)
   trop grosses sur mobile, elles cachent le logo/visuel en haut de
   l'image (retour de Max, 07/10 - CORRECTIF v2 : le 1er essai ne
   reduisait que .font-size et etait scope a body#product uniquement ;
   insuffisant car le theme parent fixe aussi min-width:3.125rem,
   min-height:1.875rem et margin-top:.625rem sur chaque pastille
   (theme.css, independant du font-size) et .product-flags est en
   position:absolute;top:0;left:0;width:100% - donc meme en reduisant
   juste le texte, chaque pastille restait grosse et empilee tout en
   haut de l'image. Ce round : min-width/min-height remis a 0,
   padding/margin-top fortement reduits, ET le scope est etendu a TOUT
   le site mobile (plus seulement body#product) car les cards grille
   2 colonnes (categorie/recherche) ont le meme probleme, les images y
   etant encore plus petites. Markup natif du theme parent
   (catalog/_partials/product-flags.tpl, pas d'override) :
   <ul class="product-flags"><li class="product-flag TYPE">. */
@media (max-width: 767px) {
  .product-flags .product-flag {
    font-size: 9px !important;
    min-width: 0 !important;
    min-height: 0 !important;
    padding: 2px 6px !important;
    margin-top: 4px !important;
    letter-spacing: 0.2px !important;
  }
  .product-flags li.product-flag.online-only {
    font-size: 8px !important;
    padding: 2px 5px !important;
  }
}

/* --- Prix barre + nom produit sur les cards PROMO mobile (round mobile,
   07/10 - CORRECTIF v2, bug trouve apres retour de Max "le prix est au
   dessus du nom au lieu d'etre sur la meme ligne") : le v1 avait
   flex-wrap:wrap sur le h3, donc dès que le nom + prix barre ne
   rentraient pas sur une ligne (cards 2 colonnes = tres etroites), le
   nom entier passait a la ligne suivante -> prix seul en haut, nom
   seul en dessous, exactement le bug signale. Fix : flex-wrap:nowrap
   sur le h3 (le prix barre ne doit jamais declencher de retour a la
   ligne), et c'est le <a> du nom qui peut wrapper SON PROPRE texte sur
   plusieurs lignes si besoin (min-width:0 + white-space normal), tout
   en restant sur la meme ligne de depart que le prix barre, colle a
   gauche. Le script JS (header.tpl) insere .regular-price comme
   PREMIER enfant de .product-title (avant le <a> du nom). Scope mobile
   uniquement (575px, meme seuil que la grille 2 colonnes), uniquement
   sur les cards qui ont un prix barre (:has, le JS ne touche pas les
   autres). */
@media (max-width: 575px) {
  .product-title:has(.kms-regular-price-beside-title) {
    display: flex !important;
    flex-wrap: nowrap !important;
    align-items: baseline !important;
    justify-content: flex-start !important;
    text-align: left !important;
    gap: 6px !important;
  }
  .product-title:has(.kms-regular-price-beside-title) a {
    text-align: left !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    white-space: normal !important;
  }
  .kms-regular-price-beside-title {
    display: inline !important;
    text-align: left !important;
    flex-shrink: 0 !important;
    white-space: nowrap !important;
    margin: 0 !important;
    flex-shrink: 0 !important;
  }
}

/* --- Panier mobile : marges pour eviter que les elements soient colles
   aux bords de l'ecran / de leur div (round mobile, 07/10). Complete le
   padding existant de .kms-cart-line (round 1, 14px/10px) et la
   restructuration grid (round 2 reconstruit) sans les remplacer. */
@media (max-width: 767px) {
  .cart-container,
  .cart-summary {
    padding-left: 14px !important;
    padding-right: 14px !important;
  }
  .kms-cart-line {
    padding: 0 !important;
  }
  .kms-cart-line .product-line-grid-right .row {
    padding-right: 4px !important;
  }
  .cart-summary-line {
    padding: 10px 10px !important;
  }
}

/* --- Pages catalogue/marque/CMS sur mobile : le titre natif PrestaShop
   (.page-header, provient de templates/page.tpl - utilise par les pages
   CMS type "Livraison"/"Mentions legales", pas par les pages
   categorie/marque qui ont leur propre gabarit) et le bloc de description
   marque touchaient les bords de l'ecran, aucun padding natif sur mobile
   (round mobile, 07/10, demande de Max). #products (zone de grille
   produits) touchait aussi les bords.
   08/10 (demande de Max) : le TITRE de la page marque (<h1>, dans
   manufacturer.tpl) n'a lui aucune classe/id - contrairement au titre des
   pages categorie (dans .block-category) ou CMS (dans .page-header) - et
   touchait donc toujours les bords. Cible via :has() sur son frere
   #manufacturer-short_description pour ne viser que ce titre precis, sans
   toucher les autres <h1> du site (categorie, recherche...).
   08/10 (suite, demande de Max) : le bloc de description marque n'a lui
   non plus aucune classe propre - verifie en live (document.getElementById
   confirme), c'est un ID (#manufacturer-description), pas une classe
   (.manufacturer-description ne matchait donc jamais rien, d'ou le padding
   toujours a 0 malgre une regle en apparence correcte). */
@media (max-width: 767px) {
  .page-header,
  #manufacturer-description,
  h1:has(+ #manufacturer-short_description) {
    padding: 10px !important;
  }
  #products {
    color: #7a7a7a !important;
    padding: 10px 10px !important;
  }
}

/* --- Texte de la description marque (#manufacturer-description /
   #manufacturer-short_description) affiche en gris fonce au lieu de la
   couleur du theme (21/10, demande de Max, bug trouve par Max). Cause :
   le theme PARENT (classic/theme.css) contient une regle mal "scopee" -
   .page-content.page-cms ul,p{color:#7a7a7a} - ou seul "ul" est prefixe
   par ".page-content.page-cms", le "p" qui suit la virgule s'applique a
   TOUS les <p> du site (bug du theme d'origine, jamais corrige par
   PrestaShop). Invisible partout ailleurs car chaque bloc custom a deja
   sa propre couleur de texte plus specifique qui l'ecrase - mais ces deux
   blocs marque n'avaient jamais eu de contenu avant Botafarm, donc rien
   ne corrigeait cette regle par defaut. On ne touche pas au theme parent,
   on neutralise juste l'effet ici, sur tous les ecrans (le bug n'est pas
   limite au mobile). */
#manufacturer-description,
#manufacturer-short_description {
  color: var(--kms-text) !important;
}
#manufacturer-description p,
#manufacturer-description ul,
#manufacturer-description li,
#manufacturer-short_description p,
#manufacturer-short_description ul,
#manufacturer-short_description li {
  color: var(--kms-text) !important;
}

/* --- Footer bottom (copyright) sur mobile : le bloc etait une seule
   ligne de texte collee (copyright + mentions + marque deposee), illisible
   une fois repliee sur un ecran etroit. Decoupee en 3 lignes dans
   footer.tpl (spans kms-footer-copy-line1/2/3), ici on les passe en bloc
   centre uniquement sur mobile (round mobile, 07/10, demande de Max) --
   en desktop elles restent inline, flux inchange. */
@media (max-width: 767px) {
  .kms-footer-copy-line1,
  .kms-footer-copy-line2,
  .kms-footer-copy-line3 {
    display: block !important;
    text-align: center !important;
  }
}

/* ===== PAGE CONFIRMATION DE COMMANDE (apres paiement) =====
   Page jamais visitee avant le 1er test d'achat reel (20/10) : aucune
   des deux cartes de cette page n'a de classe/scope dediee, elle heritait
   donc telle quelle du theme Classic parent (fond blanc, police generique).
   #content-hook_order_confirmation (bloc "commande confirmee") n'a pas la
   classe .page-order-confirmation (seule #content.page-content l'a), d'ou
   le scope via l'id de body #order-confirmation (php_self du controleur
   PrestaShop, stable) qui couvre les deux blocs + le retour de paiement
   (#content-hook_payment_return, injecte par le module de paiement) et le
   footer de confirmation (#content-hook-order-confirmation-footer). */
#order-confirmation #content-hook_order_confirmation,
#order-confirmation #content.page-content.page-order-confirmation,
#order-confirmation #content-hook_payment_return,
#order-confirmation #content-hook-order-confirmation-footer {
  background: var(--kms-bg-card) !important;
  color: var(--kms-text) !important;
  font-family: var(--kms-font-body) !important;
  border-radius: 8px !important;
  box-shadow: 0 0 0 1px rgba(41,214,255,0.08) inset !important;
}

#order-confirmation .card-title,
#order-confirmation #order-details h3 {
  color: var(--kms-blue) !important;
  font-family: var(--kms-font-display) !important;
  text-shadow: 0 0 10px rgba(41,214,255,0.3) !important;
}

#order-confirmation .card-title .done {
  color: var(--kms-green) !important;
  text-shadow: 0 0 10px rgba(127,255,0,0.4) !important;
}

#order-confirmation p,
#order-confirmation li,
#order-confirmation span,
#order-confirmation td,
#order-confirmation .order-confirmation-table {
  color: var(--kms-text) !important;
}

#order-confirmation a {
  color: var(--kms-blue) !important;
}
#order-confirmation a:hover {
  color: var(--kms-orange) !important;
}

#order-confirmation hr,
#order-confirmation .order-line {
  border-color: var(--kms-border) !important;
  opacity: 0.8 !important;
}

#order-confirmation .total-value td,
#order-confirmation #order-reference-value {
  color: var(--kms-orange) !important;
  font-weight: 700 !important;
}

/* ===== BLOC REDUCTION APPLIQUEE (panier/checkout) =====
   22/10, demande de Max : depuis l'ajout de la regle panier automatique
   "livraison gratuite des 40€", une nouvelle ligne apparait dans le bloc
   promo (cart-voucher.tpl, theme PARENT classic, non surcharge) : <ul
   class="promo-name card-block"><li class="cart-summary-line"><span
   class="label">...</span><div class="float-xs-right">Livraison
   gratuite</div></li></ul>. Par defaut le theme parent pousse le contenu
   (.float-xs-right) tout a droite, ce qui laisse un grand vide a gauche
   vu que le label est vide pour une regle automatique (pas de code).
   On passe la ligne en flex centre au lieu de la laisser collee a
   droite. Reste compatible avec un futur code promo saisi manuellement
   (label + montant + icone de suppression centres ensemble). */
.promo-name.card-block .cart-summary-line {
  display: flex !important;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 4px;
}

.promo-name.card-block .cart-summary-line .float-xs-right {
  float: none !important;
  display: flex;
  align-items: center;
  gap: 4px;
}

/* ===== PAGES "MON COMPTE" (infos perso / adresses / historique / detail commande) =====
   22/10, demande de Max : check complet de contraste sur toutes les pages Mon compte.
   Meme cause que le fix #order-confirmation du 20/10 : ces controleurs PrestaShop
   (IdentityController, AddressesController, AddressController, HistoryController,
   OrderDetailController) n'ont aucun scope dedie dans le theme enfant, ils heritent
   donc tels quels du theme parent Classic : fond blanc (#content.page-content, .box,
   article.address) + texte gris quasi-noir (labels, th de tableau, liens de pied de
   carte). Comme --kms-text (#d3e6ff, bleu tres clair) est pense pour un fond sombre,
   le texte devenait illisible une fois pose sur ces fonds blancs residuels (d'ou
   l'effet "tout en gris" signale par Max). On applique le meme traitement que la
   page de confirmation : fond carte sombre (--kms-bg-card) + texte clair partout,
   sur les 5 pages concernees (id de body = php_self du controleur, stable). */
#identity #content.page-content,
#addresses #content.page-content,
#address #content.page-content,
#history #content.page-content,
#order-detail #content.page-content,
#identity .box,
#addresses .box,
#address .box,
#history .box,
#order-detail .box,
#addresses article.address {
  background: var(--kms-bg-card) !important;
  color: var(--kms-text) !important;
  font-family: var(--kms-font-body) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
}

/* Libelles de formulaire (Titre, Prenom, Nom, Alias, Adresse...) : noirs par defaut */
#identity label,
#addresses label,
#address label,
#history label,
#order-detail label,
#order-detail address,
#addresses article.address h4 {
  color: var(--kms-text) !important;
}

/* Champs de saisie (input/select/textarea) : fond gris clair + texte gris */
#identity .form-control,
#addresses .form-control,
#address .form-control,
#history .form-control,
#order-detail .form-control {
  background: var(--kms-bg) !important;
  color: var(--kms-text) !important;
  border-color: var(--kms-border) !important;
}
#identity .form-control::placeholder,
#address .form-control::placeholder {
  color: var(--kms-muted) !important;
}

/* Textes secondaires (mentions "Optionnel", aide de saisie, paragraphes gris,
   pied de formulaire) : gris generique du theme parent -> gris-bleu de la
   palette KMS, qui reste lisible sur fond sombre tout en gardant une hierarchie
   visuelle avec le texte principal. */
#identity small,
#addresses small,
#address small,
#history small,
#order-detail small,
#identity .form-footer,
#address .form-footer,
#order-detail .box p,
#addresses .addresses-footer a,
#addresses article.address .address-footer a {
  color: var(--kms-muted) !important;
}

/* Tableaux (historique des commandes, suivi "pas a pas", liste des articles) */
#history table th,
#order-detail table th {
  background: var(--kms-bg) !important;
  color: var(--kms-muted) !important;
  border-color: var(--kms-border) !important;
}
#history table td,
#order-detail table td,
#history table tr,
#order-detail table tr {
  background: transparent !important;
  color: var(--kms-text) !important;
  border-color: var(--kms-border) !important;
}

/* Titres de section (ex: "SUIVRE VOTRE COMMANDE PAS A PAS", "Adresse de livraison") */
#order-detail .box h3,
#order-detail .box h4 {
  color: var(--kms-blue) !important;
  font-family: var(--kms-font-display) !important;
}

/* Liens generiques dans ces blocs (Modifier/Mettre a jour/Supprimer, Commander a
   nouveau...) : coherents avec le reste du site (bleu nav, orange au survol) */
#identity a,
#addresses a,
#address a,
#history a,
#order-detail a {
  color: var(--kms-blue) !important;
}
#identity a:hover,
#addresses a:hover,
#address a:hover,
#history a:hover,
#order-detail a:hover {
  color: var(--kms-orange) !important;
}

/* ===== AUTRES PAGES "MON COMPTE" (avoirs / bons de reduction / listes d'envies /
   donnees personnelles RGPD) =====
   22/10 (suite), demande de Max : meme traitement que les 5 pages precedentes,
   sur les 4 dernieres pages du menu "Votre compte" jamais traitees non plus :
   #order-slip (Avoirs), #discount (Bons de reduction), #module-blockwishlist-lists
   (Mes listes d'envies, module tiers blockwishlist), #module-psgdpr-gdpr (Mes
   donnees personnelles, module tiers psgdpr avec son propre encart gris clair
   .psgdprinfo17, distinct du fond #content). */
#order-slip #content.page-content,
#discount #content.page-content,
#module-blockwishlist-lists #content.page-content,
#module-psgdpr-gdpr #content.page-content {
  background: var(--kms-bg-card) !important;
  color: var(--kms-text) !important;
  font-family: var(--kms-font-body) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 8px !important;
}

#order-slip h1,
#discount h1,
#module-blockwishlist-lists h1,
#module-psgdpr-gdpr h1,
#module-psgdpr-gdpr h2 {
  color: var(--kms-orange) !important;
  font-family: var(--kms-font-display) !important;
}

/* Encarts "vide" (alert-info Bootstrap : "Vous n'avez reçu aucun avoir",
   "Vous ne possédez pas de bon de réduction") */
#order-slip .alert-info,
#discount .alert-info {
  background: var(--kms-bg) !important;
  color: var(--kms-text) !important;
  border-color: var(--kms-border) !important;
}

/* Liste de souhaits : titre de liste force en noir par le CSS propre au
   module blockwishlist */
#module-blockwishlist-lists .wishlist-list-item-title {
  color: var(--kms-text) !important;
}
#module-blockwishlist-lists .wishlist-list-item {
  border-color: var(--kms-border) !important;
}

/* RGPD : encart gris clair propre au module psgdpr (fond a lui, distinct du
   fond #content deja fonce par la regle ci-dessus) */
#module-psgdpr-gdpr .psgdprinfo17 {
  background: var(--kms-bg) !important;
  color: var(--kms-text) !important;
  border: 1px solid var(--kms-border) !important;
  border-radius: 6px !important;
}

#order-slip a:not(.btn),
#discount a:not(.btn),
#module-blockwishlist-lists a:not(.btn),
#module-psgdpr-gdpr a:not(.btn) {
  color: var(--kms-blue) !important;
}
#order-slip a:not(.btn):hover,
#discount a:not(.btn):hover,
#module-blockwishlist-lists a:not(.btn):hover,
#module-psgdpr-gdpr a:not(.btn):hover {
  color: var(--kms-orange) !important;
}

/* ===== BULLE D'AIDE "FORCE DU MOT DE PASSE" (popover Bootstrap/Tether) =====
   22/10, demande de Max : la bulle qui s'affiche au clic dans le champ mot
   de passe ("Ajoutez un autre mot ou deux...") est un popover Bootstrap
   generique (theme parent, classic/theme.css) : fond blanc fixe
   (background-color:#fff) alors que PrestaShop injecte le texte avec la
   couleur heritee du site (--kms-text, bleu tres clair) -> texte quasi
   invisible sur fond blanc. Pas scope a une page en particulier : ce widget
   peut apparaitre partout ou PrestaShop affiche un champ "mot de passe"
   (Mon compte, creation de compte au checkout...), d'ou un fix global
   plutot que scope a #identity. La "fleche" du popover est faite avec des
   bordures ::before/::after (pas d'element .arrow separe dans ce theme) :
   on recolore les 4 directions sans se soucier de laquelle est active,
   seule celle avec une largeur non nulle s'affiche reellement. */
.popover {
  background: var(--kms-bg-card) !important;
  border: 1px solid var(--kms-border) !important;
  box-shadow: 0 0 16px rgba(41,214,255,0.15) !important;
}
.popover-title,
.popover-content,
.popover-header,
.popover-body {
  background: transparent !important;
  color: var(--kms-text) !important;
  font-family: var(--kms-font-body) !important;
}
.popover::before {
  border-top-color: var(--kms-border) !important;
  border-bottom-color: var(--kms-border) !important;
  border-left-color: var(--kms-border) !important;
  border-right-color: var(--kms-border) !important;
}
.popover::after {
  border-top-color: var(--kms-bg-card) !important;
  border-bottom-color: var(--kms-bg-card) !important;
  border-left-color: var(--kms-bg-card) !important;
  border-right-color: var(--kms-bg-card) !important;
}
.popover .popover-title::before {
  border-bottom-color: var(--kms-border) !important;
}

/* ===== BOUTON "AFFICHER / MASQUER" (champ mot de passe) =====
   Meme demande : le bouton de bascule de visibilite du mot de passe est un
   ".btn" Bootstrap generique (gris plein, pas de couleur du theme) - pas
   scope non plus, meme widget utilisable partout ou un champ mot de passe
   apparait. */
button[data-action="show-password"] {
  background: linear-gradient(135deg, #0a1f3d, #0d2a50) !important;
  border: 1px solid var(--kms-blue-d) !important;
  color: var(--kms-blue) !important;
  font-family: var(--kms-font-body) !important;
  font-weight: 700 !important;
}
button[data-action="show-password"]:hover {
  background: linear-gradient(135deg, #0d2a50, #123a68) !important;
  color: white !important;
}

/* ===== BALAYAGE GLOBAL DU GRIS DU THEME PARENT (classic/theme.css) =====
   22/10, demande de Max : "on peut vérifier partout où PrestaShop veut
   mettre du gris dégueu on met nos couleurs ?" - audit du theme.css parent
   pour les classes generiques qui forcent du gris/blanc sans que le theme
   enfant les ait jamais recolorees. Liste trouvee (couleur d'origine entre
   parentheses) :
   - .text-muted (#7a7a7a, !important) : classe Bootstrap generique pour
     texte secondaire, utilisee un peu partout par PrestaShop.
   - .form-control-comment (#7a7a7a) : texte d'aide sous un champ de
     formulaire (trouve par Max sous le mot de passe).
   - .custom-select (#7a7a7a, fond blanc) : liste deroulante native
     PrestaShop (ex: pays dans un formulaire d'adresse).
   - .checkbox-checked (icone material-icons, #232323 presque noir) + la
     case elle-meme (bordure grise ~#979797) : la coche de confirmation
     d'une checkbox (ex: "Recevoir notre newsletter") - signalee par Max
     comme invisible sur fond sombre.
   - .btn-tertiary au survol (texte #232323 sur fond #ddd). */
.text-muted {
  color: var(--kms-muted) !important;
}

.form-control-comment {
  color: var(--kms-muted) !important;
}

.custom-select {
  background-color: var(--kms-bg) !important;
  color: var(--kms-text) !important;
  border-color: var(--kms-border) !important;
}

/* Case a cocher / bouton radio "maison" (icone material-icons dans un
   <span>, pas le .custom-control-indicator standard de Bootstrap) */
label input[type="checkbox"] + span,
label input[type="radio"] + span {
  border-color: var(--kms-border) !important;
}
.checkbox-checked,
.radio-checked {
  color: var(--kms-blue) !important;
}

.btn-tertiary:hover,
.btn-tertiary:focus,
.btn-tertiary.focus {
  color: var(--kms-bg) !important;
  background-color: var(--kms-blue) !important;
}
