/** Shopify CDN: Minification failed

Line 22:50 Unexpected "headline"

**/
/* ════════════════════════════════════════════════════════════
   MNL GLOBAL — styles transversaux (toutes pages)
   ════════════════════════════════════════════════════════════ */

/* Smooth scroll universel */
html { scroll-behavior: smooth; }

/* ════════════════════════════════════════════════════════════
   V599 : SYSTÈME TYPO — grands titres Rajdhani (Bold/SemiBold),
   corps de texte Inter (descriptions, ingrédients, paragraphes).
   Les wrappers de section posent Inter ; les titres sémantiques
   h1/h2/h3 héritent puis basculent ici en Rajdhani.
   ════════════════════════════════════════════════════════════ */
body { font-family: var(--mnl-ft-body, 'Archivo'), system-ui, sans-serif; } /* V1337 : suit le jeton */
/* ═══════════ V785 : SYSTÈME TYPO (demande fondateur 2026-06-05) — TITRES = Space Grotesk · TEXTE = Manrope · PRIX/DOSAGES/BOUTONS importants = Sora. Ex-Anton (titres). Override !important (bat les 'DM Sans'/'Inter' codés en dur dans les ~84 sections : l'importance prime sur la spécificité). RÉVERSIBLE. ═══════════ */
:root{ --mnl-ft-body:'Archivo', system-ui, -apple-system, 'Segoe UI', sans-serif; --mnl-ft-title:'Anton', Impact, 'Arial Narrow', sans-serif; --mnl-ft-accent:'IBM Plex Mono', ui-monospace, monospace; } /* V1337 (fondateur : « les polices d'écriture partent sur le site ») : Archivo corps · Anton titres · Plex Mono données */
/* TITRES = Space Grotesk (h1-3, classes *title*/*headline*, + les 2 titres héros .mnl-pp3__h1/__h2 non capturés par *title*) */
body h1:not(#_mnlz_), body h2:not(#_mnlz_), body h3:not(#_mnlz_), body h4:not(#_mnlz_), body h5:not(#_mnlz_), body h6:not(#_mnlz_), /* V973 */ body .mnl-pp3__h1:not(#_mnlz_), body .mnl-pp3__h2:not(#_mnlz_),
body [class*="title"]:not([class*="subtitle"]):not(#_mnlz_),
body [class*="headline"]:not(#_mnlz_) { font-family: var(--mnl-ft-title) !important; font-weight: 400 !important; letter-spacing: .01em !important; text-transform: uppercase; } /* V1337 : Anton = graisse unique 400, affiche en capitales */
/* :not(#_mnlz_) = hack de spécificité ID (1,x,x) → bat une règle concurrente !important (≥0,2,1) du CSS PDP qui remettait les titres en inherit. #_mnlz_ n'existe pas → matche tout. */
/* TEXTE COURANT = Manrope — liste d'éléments explicite (PAS de :where/:not que le minifieur Shopify casse) ; spécificité (0,0,2) → titres (0,2,1) + accents (0,1,0) gagnent. code/pre/mono non listés = gardent leur police. */
body p, body li, body span, body a, body div, body ul, body ol, body td, body th, body dd, body dt, body label, body input, body textarea, body select, body button, body small, body strong, body b, body em, body i, body blockquote, body figcaption { font-family: var(--mnl-ft-body) !important; }
/* PRIX · DOSAGES · BOUTONS IMPORTANTS = Sora (spécificité 0,1,0 > l'override Manrope 0,0,1) */
.mnl-pp3-atc-hero__price, .mnl-pp3-atc-hero__price-sub, .mnl-pp3-atc-hero__price-from, .mnl-pp3-atc-hero__promo-pill,
.mnl-price-block__main, .mnl-price-block__sub, .mnl-subscribe__price, .mnl-fmt__lbl, .mnl-fmt__sub,
.mnl-pp3-trust__num, .mnl-ing-dose-val, .mnl-ing-dose-unit,
[class*="price"], [class*="__num"], [class*="__price"], [class*="montant"],
.mnl-atc, .mnl-atc-btn, .mnl-cta-btn, .mnl-quiz-cta, .mnl-pw__atc, .mnl-sticky-atc__btn,
.mnl-pp3-atc-hero__btn, .mnl-pp3-sticky__btn, .mnl-pp3-sticky__btn-txt, .mnl-pp3-cta__btn, .mnl-pp3-cta__btn--ghost,
.mnl-cta__btn--primary, .mnl-btn--primary, a.mnl-cta,
.mnl-ai-formula__btn, .mnl-ai-sticky-atc__btn, .mnl-ai-send, .mnl-ai-upsell__btn { font-family: var(--mnl-ft-accent) !important; }
/* V792 (fondateur 2026-06-05 « Prix / mg / chiffres → Sora ») : extension Sora aux VALEURS numériques (dosages mg/g, %, prix, quantités, sous-totaux) non couvertes par la liste V785. On cible la VALEUR (cellule/strong/span de droite), JAMAIS le libellé (qui reste Manrope). :not(#_mnlz_) = hack spécificité ID pour battre tout !important concurrent d'une section + le broad-override Manrope sur span/strong/td/input. tabular-nums = chiffres alignés. */
[class*="__val"]:not(#_mnlz_),
.mnl-pp3-compo-table__dose:not(#_mnlz_),
.mnl-pp3-persona__dose-row span:last-child:not(#_mnlz_),
.mnl-pp3-gloss-card__dose strong:not(#_mnlz_),
.mnl-pp3-sticky__discount:not(#_mnlz_),
.mnl-summary-ing__dose:not(#_mnlz_),
.mnl-cart__details-row strong:not(#_mnlz_),
.mnl-cart__totals-row strong:not(#_mnlz_),
.mnl-cart__qty input:not(#_mnlz_),
.mnl-hd-cart__details-row strong:not(#_mnlz_),
.mnl-hd-cart__total-val:not(#_mnlz_),
.mnl-hd-cart__item-qty span:not(#_mnlz_),
.mnl-obj-act__dose:not(#_mnlz_), /* V973 : doses configurateur */
.mnl-pp3__rating-val:not(#_mnlz_) /* V973 : note moyenne PDP */ { font-family: var(--mnl-ft-accent) !important; font-variant-numeric: tabular-nums; }

/* ════════════════════════════════════════════════════════════
   V477 : UNIVERSAL FALLBACK Android Chrome <button> safety
   ════════════════════════════════════════════════════════════
   Couverture pour les <button class="mnl-*"> qui n'ont pas reçu
   d'appearance:none explicite dans leur CSS spécifique.
   Pattern minimal : juste retirer les artefacts natifs Android Chrome
   (rendu bouton gris natif override custom + rectangle bleu tap).
   N'override PAS les styles existants (just suppr defaults browser).
   Couvre : page-1rm-calculator, page-achievements, page-bundle-builder,
   page-search, et toute future section MNL avec <button class="mnl-*">.
   ════════════════════════════════════════════════════════════ */
button[class*="mnl-"] {
  -webkit-tap-highlight-color: transparent;
}
button[class*="mnl-"]:not([class*="appearance"]) {
  /* Safety fallback : seulement si pas déjà fixé */
}

/* ════════════════════════════════════════════════════════════
   Vague 87 : ANTI-CLIP italique gradient text
   ════════════════════════════════════════════════════════════
   BUG : les glyphes italiques (e, f, j, k, q, y, z…) s'inclinent
   et leur queue dépasse à droite du character box. Quand combiné
   avec `background-clip: text` + `-webkit-text-fill-color: transparent`
   (utilisé dans 30+ titres MNL pour l'effet gradient), la queue
   est CLIPPÉE → "marre" devient "marr" tronqué.
   FIX : padding-right minuscule sur tout em/i pour donner de l'air.
   - 0.05em sur petit texte = ~1px à 20px font (imperceptible)
   - 0.08em sur gros titres = ~6px à 80px font (suffit largement)
   ════════════════════════════════════════════════════════════ */
em, i {
  padding-right: 0.05em;
}
/* Renfort sur les gros titres où le clipping est le plus visible */
h1 em, h1 i,
[class*="__hero-title"] em, [class*="__hero-title"] i,
[class*="__title"] em, [class*="__title"] i,
[class*="__h1"] em, [class*="__h1"] i {
  padding-right: 0.08em;
}

/* ════════════════════════════════════════════════════════════
   PERF vague 61 : content-visibility:auto sur listes longues
   Gain typique 30-50% sur LCP & INP mobile.
   contain-intrinsic-size : hauteur estimée pour scrollbar correct.
   Apply uniquement si supporté (Chromium-based + Safari 18+).
   ════════════════════════════════════════════════════════════ */
@supports (content-visibility: auto) {
  .mnl-faq__item,
  .mnl-glossary__entry,
  .mnl-glossaire__item,
  .mnl-lb__row,
  .mnl-rev__card,
  .mnl-rv__card,
  .mnl-blog__card,
  .mnl-coll__card,
  .mnl-ugc__card,
  .mnl-press__article,
  .mnl-recettes__card,
  .mnl-stories__card {
    content-visibility: auto;
    contain-intrinsic-size: 0 240px;
  }
  /* Ajustement plus précis pour rows compactes leaderboard / FAQ */
  .mnl-faq__item,
  .mnl-lb__row {
    contain-intrinsic-size: 0 80px;
  }
}

/* Fade-in universal pour images chargées */
img { opacity: 1; transition: opacity .35s ease; }
img.mnl-lazy { opacity: 0; }
img.mnl-lazy.is-loaded { opacity: 1; }

/* V544 fluidité (PC + mobile) : content-visibility sur les sections de contenu de la HOME (page la plus visitée).
   Le navigateur skip layout/paint + met en pause les animations des sections hors-écran. Le sélateur frère général
   `A ~ A` cible toutes les sections template SAUF la 1ère (le hero reste rendu instantanément, pas de containment paint
   qui pourrait clipper ses éléments décoratifs). Scopé à body.template-index. Testé live : sélecteur = 7 sections,
   0 hauteur nulle, 0 overflow clippé, rendu correct au scroll. Dégrade proprement si non supporté. */
body.template-index .shopify-section[id^="shopify-section-template"] ~ .shopify-section[id^="shopify-section-template"] {
  content-visibility: auto;
  contain-intrinsic-size: auto 620px;
}

/* Page transition — fade-in subtil au load */
body.mnl-page-loading { opacity: 0; }
body { opacity: 1; transition: opacity .25s ease; }

/* Smooth focus ring partout — meilleur a11y */
*:focus-visible {
  outline: 2px solid #E84E1B;
  outline-offset: 2px;
  /* V1261 : `border-radius: 4px` RETIRÉ (cf. le même retrait dans mnl-polish.css et
     layout/theme.liquid — les trois règles *:focus-visible du thème portaient la même ligne).
     Elle écrasait la forme de l'élément au focus clavier : une pilule à 100 px devenait un
     rectangle à 4 px. C'est exactement le défaut décrit l.1308 (V547), rustiné là-bas au cas
     par cas avec !important. `outline` suit déjà le border-radius réel de l'élément. */
}

/* Vague 126 : input validation invalide visual + shake animation */
.mnl-news-popup__input.is-invalid {
  border-color: #dc2626 !important;
  background: #fef2f2;
  color: #991b1b;
}
.mnl-news-popup__input.is-invalid:focus {
  border-color: #dc2626 !important;
  box-shadow: 0 0 0 3px rgba(220,38,38,.18) !important;
}
@keyframes mnl-shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-6px); }
  50% { transform: translateX(6px); }
  75% { transform: translateX(-3px); }
}
@media (prefers-reduced-motion: reduce) {
  @keyframes mnl-shake { 0%, 100% { transform: none; } }
}

/* Vague 125 : message d'erreur format téléphone FR invalide */
.mnl-phone-invalid {
  margin-top: 6px;
  padding: 6px 10px;
  background: #fef2f2;
  border: 1px solid rgba(239,68,68,.3);
  border-radius: 8px;
  font-size: 11px;
  font-weight: 600;
  color: #dc2626;
  line-height: 1.4;
  animation: mnl-phone-invalid-in .2s ease;
}
@keyframes mnl-phone-invalid-in {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .mnl-phone-invalid { animation: none; }
}

/* Vague 128 : sub status banner — home page, slim notification top */
.mnl-sub-banner {
  position: relative;
  z-index: 80;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 16px;
  background: linear-gradient(90deg, #1e1b4b, #0f172a);
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  border-bottom: 1px solid rgba(255,255,255,.08);
  animation: mnl-sub-banner-in .4s cubic-bezier(.34,1.56,.64,1);
}
.mnl-sub-banner__icon { font-size: 18px; flex-shrink: 0; }
.mnl-sub-banner__msg { flex: 1; min-width: 0; }
.mnl-sub-banner__cta {
  background: #C2410C; /* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */
  color: #fff;
  text-decoration: none;
  padding: 6px 14px;
  border-radius: 100px;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
  transition: transform .15s ease;
}
.mnl-sub-banner__cta:hover { transform: translateY(-1px); }
.mnl-sub-banner__close {
  background: transparent;
  border: none;
  color: rgba(255,255,255,.55);
  font-size: 18px;
  cursor: pointer;
  padding: 4px 8px;
  font-family: inherit;
  line-height: 1;
  border-radius: 4px;
  transition: background .15s ease, color .15s ease;
}
.mnl-sub-banner__close:hover { background: rgba(255,255,255,.08); color: #fff; }
.mnl-sub-banner__close:focus-visible { outline: 2px solid #fbbf24; outline-offset: 2px; }
@keyframes mnl-sub-banner-in {
  from { transform: translateY(-100%); }
  to { transform: translateY(0); }
}
@media (max-width: 580px) {
  .mnl-sub-banner { flex-wrap: wrap; padding: 8px 12px; }
  .mnl-sub-banner__msg { font-size: 12px; flex-basis: 100%; order: 2; }
  .mnl-sub-banner__icon { order: 1; }
  .mnl-sub-banner__cta { order: 3; }
  .mnl-sub-banner__close { order: 4; }
}
@media (prefers-reduced-motion: reduce) {
  .mnl-sub-banner { animation: none; }
}

/* Vague 145 : welcome back banner — top page, returning users >24h, dismissible */
.mnl-welcomeback {
  position: relative;
  z-index: 79;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 18px;
  background: #F2F3F5; /* V1037 : charte Coach */
  color: #0f172a;
  font-size: 13px;
  font-weight: 600;
  border-bottom: 1px solid rgba(15,23,42,.08);
  animation: mnl-welcomeback-in .45s cubic-bezier(.34,1.56,.64,1);
  transform: translateY(0);
  transition: transform .3s ease;
}
.mnl-welcomeback__icon { font-size: 18px; flex-shrink: 0; line-height: 1; }
.mnl-welcomeback__txt { flex: 1; min-width: 0; display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.mnl-welcomeback__txt strong { font-weight: 800; color: #0f172a; }
.mnl-welcomeback__txt span { color: rgba(15,23,42,.7); font-weight: 500; }
.mnl-welcomeback__cta {
  background: #0f172a;
  color: #fbbf24;
  text-decoration: none;
  padding: 6px 14px;
  border-radius: 100px;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
  transition: transform .15s ease, background .15s ease;
}
.mnl-welcomeback__cta:hover { transform: translateY(-1px); background: #1e293b; }
.mnl-welcomeback__cta:focus-visible { outline: 2px solid #fbbf24; outline-offset: 2px; }
.mnl-welcomeback__close {
  background: transparent;
  border: none;
  color: rgba(15,23,42,.55);
  font-size: 18px;
  cursor: pointer;
  padding: 4px 8px;
  font-family: inherit;
  line-height: 1;
  border-radius: 4px;
  transition: background .15s ease, color .15s ease;
}
.mnl-welcomeback__close:hover { background: rgba(15,23,42,.08); color: #0f172a; }
.mnl-welcomeback__close:focus-visible { outline: 2px solid #E84E1B; outline-offset: 2px; }
@keyframes mnl-welcomeback-in {
  from { transform: translateY(-100%); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}
@media (max-width: 580px) {
  .mnl-welcomeback { flex-wrap: wrap; padding: 8px 12px; gap: 8px; }
  .mnl-welcomeback__txt { font-size: 12px; flex-basis: 100%; order: 2; }
  .mnl-welcomeback__icon { order: 1; }
  .mnl-welcomeback__cta { order: 3; font-size: 11px; padding: 5px 10px; }
  .mnl-welcomeback__close { order: 4; }
}
@media (prefers-reduced-motion: reduce) {
  .mnl-welcomeback { animation: none; }
}
/* V880 : bloc @media (prefers-color-scheme: dark) RETIRÉ. Le site est volontairement clair-seulement
   (cf. ligne ~1860 « mode sombre neutralisé » : :root ne remappe rien en dark). Ce bandeau était le SEUL
   reste qui réagissait encore à l'OS sombre → il passait son texte en quasi-blanc (#f1f5f9) sur son propre
   fond crème clair = texte illisible pour tout visiteur dont l'OS est en mode sombre (signalé par le fondateur).
   On le laisse donc TOUJOURS en styles clairs (titre #0f172a navy sur crème = fort contraste). */

/* Vague 132 : pull-to-refresh indicator (mobile only, déclenché par data-mnl-ptr sur body/sections) */
.mnl-ptr-indicator {
  position: fixed;
  top: -80px;
  left: 50%;
  transform: translateY(0);
  z-index: 9999;
  background: rgba(15,23,42,.95);
  color: #fff;
  padding: 10px 20px;
  border-radius: 100px;
  font-size: 12px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  box-shadow: 0 8px 20px rgba(0,0,0,.25);
  opacity: 0;
  transition: opacity .2s ease, transform .25s ease;
  pointer-events: none;
  margin-left: -100px;
}
.mnl-ptr-indicator.is-ready {
  background: linear-gradient(135deg, #22c55e, #16a34a);
}
.mnl-ptr-indicator.is-refreshing .mnl-ptr-indicator__icon {
  animation: mnl-ptr-spin .8s linear infinite;
}
.mnl-ptr-indicator__icon {
  font-size: 18px;
  line-height: 1;
}
@keyframes mnl-ptr-spin {
  to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  .mnl-ptr-indicator.is-refreshing .mnl-ptr-indicator__icon { animation: none; }
}

/* Vague 128 : LQIP blur placeholder pour images lazy — fade-in smooth + shimmer pendant load */
img.mnl-img-loading {
  background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 50%, #f1f5f9 100%);
  background-size: 200% 100%;
  animation: mnl-img-shimmer 1.6s ease-in-out infinite;
  filter: blur(8px);
  transition: filter .4s ease, opacity .4s ease;
  opacity: .85;
}
img.mnl-img-loaded {
  filter: blur(0);
  opacity: 1;
  background: none;
  animation: none;
  transition: filter .4s ease, opacity .4s ease;
}
@keyframes mnl-img-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
@media (prefers-reduced-motion: reduce) {
  img.mnl-img-loading { animation: none; filter: none; opacity: .7; }
}

/* Vague 124 : badge "Voulez-vous dire X ?" — typo suggest email (gmial → gmail) */
.mnl-email-typo {
  margin-top: 6px;
  padding: 8px 12px;
  background: linear-gradient(135deg, rgba(34,197,94,.08), rgba(249,115,22,.06));
  border: 1px solid rgba(34,197,94,.25);
  border-radius: 8px;
  font-size: 12px;
  font-weight: 500;
  color: #15803d;
  line-height: 1.4;
  animation: mnl-email-typo-in .2s ease;
}
.mnl-email-typo__btn {
  background: transparent;
  border: none;
  padding: 2px 6px;
  margin: 0 2px;
  color: #16a34a;
  font-family: inherit;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
  border-bottom: 1.5px solid rgba(22,163,74,.35);
  border-radius: 0;
  transition: border-color .15s ease;
}
.mnl-email-typo__btn:hover { border-bottom-color: #16a34a; }
.mnl-email-typo__btn:focus-visible {
  outline: 2px solid #16a34a;
  outline-offset: 2px;
  border-bottom-color: transparent;
}
@keyframes mnl-email-typo-in {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .mnl-email-typo { animation: none; }
}

/* Vague 123 : badge Caps Lock warning sur password inputs (UX standard 2025) */
.mnl-capslock-warn {
  position: absolute;
  right: 52px; /* laisse la place au bouton toggle (~44px) */
  top: 50%;
  transform: translateY(-50%);
  background: linear-gradient(135deg, #fef3c7, #fde68a);
  color: #92400e;
  border: 1px solid rgba(180,83,9,.35);
  border-radius: 100px;
  padding: 4px 10px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .01em;
  white-space: nowrap;
  pointer-events: none;
  box-shadow: 0 4px 10px rgba(180,83,9,.18);
  z-index: 5;
  animation: mnl-capslock-in .2s ease;
}
@keyframes mnl-capslock-in {
  from { opacity: 0; transform: translateY(-50%) scale(.85); }
  to { opacity: 1; transform: translateY(-50%) scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .mnl-capslock-warn { animation: none; }
}
@media (max-width: 480px) {
  /* Sur mobile : badge passe en dessous de l'input pour pas chevaucher */
  .mnl-capslock-warn { position: static; transform: none; display: inline-block; margin-top: 6px; }
}

/* Vague 117 : disable pull-to-refresh accidentel en PWA standalone
   (Chrome Android refresh la page si user pull-down depuis le top → perte de state cart/wishlist).
   `overscroll-behavior-y: contain` empêche le geste de remonter à la nav navigateur tout en gardant le scroll normal. */
@media all and (display-mode: standalone) {
  html, body {
    overscroll-behavior-y: contain;
  }
}
/* Aussi pour mode minimal-ui (Twa Android) et iOS PWA (safe-area + standalone fallback) */
@media all and (display-mode: minimal-ui) {
  html, body { overscroll-behavior-y: contain; }
}
/* Vague 117 : fallback focus pour Safari < 15.4 / WebKit ancien — le polyfill JS ajoute .mnl-focus-visible sur <html>
   quand l'user navigue au clavier ; on mime alors le comportement natif :focus-visible. */
/* V1266 — LE CINQUIÈME ANNEAU. V1261 avait retiré `border-radius: 4px` des trois
   `*:focus-visible` concurrents, mais celui-ci n'est pas écrit en
   `:focus-visible` : il est en `:focus` sous une classe, spécificité (0,2,1). Il
   battait donc l'anneau canonique de mnl-motion.css §4 — y compris ses variantes
   d'élément en (0,1,1) — et continuait de dessiner un rectangle à coins 4 px
   autour d'un CTA en pilule (border-radius 100px), le `box-shadow` du halo
   suivant la mauvaise forme.
   `border-radius` est RETIRÉ : un anneau `outline` épouse nativement le rayon
   réel de l'élément, il n'a jamais eu besoin qu'on le lui impose.
   Largeur, décalage et halo alignés sur l'anneau canonique — sur les moteurs
   visés par ce polyfill (Safari < 15.4, iOS 13-14), la règle §4 est intégralement
   invalidée par ses sélecteurs `:focus-visible` inconnus : cette règle-ci EST
   l'anneau du site, elle doit donc lui ressembler exactement. */
html.mnl-focus-visible *:focus {
  outline: 3px solid #E84E1B;
  outline-offset: 2px;
  box-shadow: 0 0 0 5px rgba(232, 78, 27, .25);
}
/* Et on retire l'outline disgracieux dans les autres cas (souris/touch) sur les browsers sans :focus-visible natif */
html:not(.mnl-focus-visible) *:focus:not(:focus-visible) {
  outline: none;
}

/* [SUPPRIMÉ] Floating coach button — doublon avec mobile bottom nav. CSS purgé. */

/* ═══════ NEWSLETTER POPUP — exit intent + delay trigger ═══════ */
.mnl-news-popup {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, .65);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9500;
  padding: 24px;
  opacity: 0;
  pointer-events: none;
  transition: opacity .35s ease;
}
.mnl-news-popup.is-open { opacity: 1; pointer-events: auto; }
.mnl-news-popup__panel {
  background: #fff;
  border-radius: 24px;
  max-width: 440px;
  width: 100%;
  padding: 36px 32px;
  position: relative;
  box-shadow: 0 32px 80px rgba(0, 0, 0, .4);
  text-align: center;
  transform: translateY(20px) scale(.94);
  transition: transform .4s cubic-bezier(.34, 1.56, .64, 1);
}
.mnl-news-popup.is-open .mnl-news-popup__panel { transform: translateY(0) scale(1); }

/* Vague 133 : success state inline newsletter (replace form après inscription OK) */
.mnl-news-popup__success { text-align: center; padding: 16px 8px; animation: mnl-news-success-in .4s cubic-bezier(.34,1.56,.64,1); }
.mnl-news-popup__success-icon { font-size: 64px; margin-bottom: 8px; line-height: 1; animation: mnl-news-success-bounce 1s ease-in-out 2; display: inline-block; }
.mnl-news-popup__success-title { font-size: 22px; font-weight: 900; margin: 0 0 8px; color: #0f172a; letter-spacing: -.015em; }
.mnl-news-popup__success-sub { font-size: 14px; color: #1a1a1a; margin: 0 0 20px; line-height: 1.5; }
.mnl-news-popup__success-code { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 14px 18px; background: linear-gradient(135deg, rgba(251,191,36,.12), rgba(232,78,27,.08)); border: 2px dashed rgba(232,78,27,.4); border-radius: 14px; margin-bottom: 18px; }
.mnl-news-popup__success-code-lbl { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; color: #1a1a1a; }
.mnl-news-popup__success-code-val { font-family: 'SF Mono', 'Monaco', monospace; font-size: 22px; font-weight: 900; color: #C93F12; letter-spacing: .04em; user-select: all; }
.mnl-news-popup__success-copy { background: #fff; border: 1px solid #e2e8f0; border-radius: 50%; width: 32px; height: 32px; font-size: 14px; cursor: pointer; font-family: inherit; transition: all .15s ease; }
.mnl-news-popup__success-copy:hover { transform: scale(1.1); border-color: #C93F12; }
.mnl-news-popup__success-cta { display: inline-block; padding: 14px 24px; background: #C2410C; /* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */ color: #fff; border-radius: 100px; text-decoration: none; font-weight: 800; font-size: 14px; box-shadow: 0 12px 28px rgba(232,78,27,.35); transition: transform .15s ease; }
.mnl-news-popup__success-cta:hover { transform: translateY(-2px); color: #fff; }
.mnl-news-popup__success-close { display: block; margin: 12px auto 0; background: transparent; border: none; color: #1a1a1a; font-size: 12px; font-weight: 600; cursor: pointer; font-family: inherit; padding: 6px 12px; }
.mnl-news-popup__success-close:hover { color: #0f172a; }
@keyframes mnl-news-success-in { from { opacity: 0; transform: scale(.9); } to { opacity: 1; transform: scale(1); } }
@keyframes mnl-news-success-bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@media (prefers-reduced-motion: reduce) {
  .mnl-news-popup__success { animation: none; }
  .mnl-news-popup__success-icon { animation: none; }
}
.mnl-news-popup__close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(15, 23, 42, .06);
  border: none;
  color: #0f172a;
  font-size: 22px;
  cursor: pointer;
  font-family: inherit;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all .2s ease;
  font-weight: 300;
  line-height: 1;
  /* V465 fix : Android Chrome rendait le <button> rond natif au lieu du custom — appearance:none + tap-highlight transparent */
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  -webkit-tap-highlight-color: transparent;
  padding: 0;
  outline: none;
  box-sizing: border-box;
}
.mnl-news-popup__close:hover { background: rgba(239, 68, 68, .15); transform: rotate(90deg); color: #ef4444; }
.mnl-news-popup__close:focus-visible { outline: 2px solid #E84E1B; outline-offset: 2px; }
.mnl-news-popup__icon {
  font-size: 56px;
  line-height: 1;
  margin-bottom: 12px;
  filter: drop-shadow(0 4px 12px rgba(251, 191, 36, .35));
}
.mnl-news-popup__title {
  font-size: 26px;
  font-weight: 900;
  letter-spacing: -.02em;
  color: #0f172a;
  margin: 0 0 8px;
  line-height: 1.2;
}
.mnl-news-popup__title em {
  font-style: italic;
  color: #E84E1B; /* V1037 : aplat V974 (ex-clip dégradé jaune→orange hors palette) */
}
.mnl-news-popup__sub {
  font-size: 14px;
  color: #1a1a1a;
  margin: 0 0 22px;
  line-height: 1.5;
  font-weight: 500;
}
.mnl-news-popup__form { display: flex; flex-direction: column; gap: 8px; }
.mnl-news-popup__input {
  padding: 14px 18px;
  background: #fff;
  border: 2px solid #e5e7eb;
  border-radius: 12px;
  color: #0f172a;
  font-size: 14px;
  font-weight: 500;
  font-family: inherit;
  outline: none;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.mnl-news-popup__input:focus { border-color: #E84E1B; box-shadow: 0 0 0 4px rgba(232,78,27,.15); } /* V1037 : focus charte (ex-jaune) */
.mnl-news-popup__btn {
  padding: 16px 24px;
  background: #C2410C; /* V1037 : aplat V974 (ex-dégradé jaune→orange) */ /* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */
  color: #fff;
  border: none;
  border-radius: 12px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 900;
  cursor: pointer;
  letter-spacing: -.005em;
  text-transform: uppercase;
  box-shadow: 0 8px 22px rgba(232,78,27,.35);
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.mnl-news-popup__btn:hover { transform: translateY(-2px); background: #C93F12; box-shadow: 0 12px 28px rgba(232,78,27,.45); }
.mnl-news-popup__btn:disabled { opacity: .6; cursor: wait; transform: none; }
.mnl-news-popup__no {
  background: none;
  border: none;
  color: rgba(15, 23, 42, .5);
  font-size: 12px;
  font-weight: 600;
  margin-top: 12px;
  cursor: pointer;
  font-family: inherit;
  text-decoration: underline;
}
.mnl-news-popup__msg {
  margin-top: 12px;
  font-size: 13px;
  font-weight: 700;
  color: #15803d;
  display: none;
}
.mnl-news-popup__msg.is-success { display: block; }

/* Vague 151 : MOBILE OVERFLOW FIX newsletter popup
   Bug user : "newsletter overlay le bouton trop à droite et ça le coupe"
   Cause : panel padding 36px 32px + max-width 440px → sur petits écrans (320-360px) le contenu interne
   manquait de marge sécurité, le success-cta "Configurer ma formule →" pouvait déborder horizontalement.
   Fix : padding réduit, panel full-width safe, CTA en block + white-space normal. */
@media (max-width: 720px) {
  .mnl-news-popup { padding: 16px; }
  .mnl-news-popup__panel {
    padding: 28px 18px 22px;
    max-width: calc(100vw - 32px);
    width: 100%;
    border-radius: 18px;
  }
  .mnl-news-popup__title { font-size: 22px; }
  .mnl-news-popup__sub { font-size: 13px; margin-bottom: 16px; }
  .mnl-news-popup__icon { font-size: 44px; margin-bottom: 8px; }
  .mnl-news-popup__input, .mnl-news-popup__btn { width: 100%; box-sizing: border-box; }
  .mnl-news-popup__btn { padding: 14px 16px; font-size: 13px; letter-spacing: 0; }
  .mnl-news-popup__close { top: 10px; right: 10px; width: 32px; height: 32px; font-size: 20px; }
  /* Success state : CTA passe en block full-width pour éviter overflow horizontal */
  .mnl-news-popup__success-cta {
    display: block;
    width: 100%;
    box-sizing: border-box;
    padding: 14px 12px;
    font-size: 13px;
    white-space: normal;
    line-height: 1.3;
  }
  .mnl-news-popup__success-code { padding: 12px 14px; flex-wrap: wrap; gap: 8px; }
  .mnl-news-popup__success-code-val { font-size: 18px; word-break: break-all; }
  .mnl-news-popup__success-title { font-size: 18px; }
  .mnl-news-popup__success-icon { font-size: 48px; }
}

/* ═══════ TRUST STRIP (sticky bar top of page) ═══════ */
.mnl-trust-strip {
  background: linear-gradient(90deg, #0f172a, #1e293b);
  color: #fff;
  padding: 8px 16px;
  font-size: 12px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  letter-spacing: -.005em;
  flex-wrap: wrap;
  text-align: center;
}
.mnl-trust-strip__item { display: inline-flex; align-items: center; gap: 5px; }
.mnl-trust-strip__item strong { color: #fbbf24; font-weight: 800; }
@media (max-width: 720px) {
  .mnl-trust-strip { font-size: 11px; gap: 12px; padding: 6px 10px; }
}

/* ═══════ SMOOTH SECTION REVEALS (scroll-triggered) ═══════ */
.mnl-reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .8s ease, transform .8s cubic-bezier(.22, 1, .36, 1);
}
.mnl-reveal.is-visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
  .mnl-reveal, body, img { transition: none !important; opacity: 1 !important; transform: none !important; }
}

/* ════════ Vague 84 : prefers-contrast support (WCAG 2.2 + low-vision) ════════
   Active sur Windows High Contrast, macOS Increase Contrast, iOS Smart Invert.
   Boost contraste général, force outlines visibles, augmente épaisseur borders.
   Plus utile pour ~3% des users (low-vision, daltoniens contraste-sensitifs). */
@media (prefers-contrast: more) {
  :root {
    --mnl-text-strong: #000;
    --mnl-bg-strong: #fff;
  }
  /* Force outlines visibles sur tous les éléments interactifs (au-delà du :focus-visible) */
  a, button, input, select, textarea, [role="button"], [tabindex]:not([tabindex="-1"]) {
    outline-offset: 2px !important;
  }
  /* V1269 — LE SIXIÈME ANNEAU DE FOCUS EST PARTI D'ICI.
     Il y avait là `a:focus, button:focus, … { outline: 3px solid currentColor
     !important }`. Il ne déformait rien — même épaisseur, même décalage que
     l'anneau canonique — mais il faisait un anneau de plus, et deux défauts
     propres : il était écrit en `:focus` (donc il s'allumait aussi au CLIC de
     souris, ce que le reste du site ne fait pas) et en `!important`, ce qui le
     rendait inatteignable depuis la feuille qui centralise les anneaux.
     La variante « fort contraste » de l'anneau canonique vit désormais avec les
     autres, dans mnl-motion.css §4.3, sans un seul !important : à spécificité
     égale et plus bas dans le document, elle gagne toute seule.
     Le `outline-offset: 2px !important` de la règle au-dessus est CONSERVÉ : il
     ne concerne pas le focus mais tout contour éventuel, et il pose la même
     valeur que l'anneau canonique — il ne peut donc rien contredire. */
  /* Borders + 1px partout pour distinguer mieux les zones */
  .mnl-tag, .mnl-card, .mnl-prod__card, .mnl-coll__card, [class*="__btn"]:not([class*="--ghost"]) {
    border-width: 2px !important;
  }
  /* Texte secondaire (gris) → foncé sur fond clair / clair sur fond foncé */
  .mnl-text-muted, .text-muted, [class*="__sub"], [class*="__meta"] {
    color: #000 !important;
    opacity: 1 !important;
  }
  /* Liens : underline forcé partout (pas seulement au hover) */
  a:not(.mnl-btn):not([class*="__btn"]):not(.mnl-coll__card):not(.mnl-cart__upsell-card) {
    text-decoration: underline !important;
    text-decoration-thickness: 2px !important;
  }
}

/* ════════ MOBILE BOTTOM NAV (sticky bar mobile) ════════ */
/* Vague 149 : bnav mobile DÉSACTIVÉE — display:none forcé sur toutes tailles. JS ne la build plus, mais cette garde
   protège si une version cachée existe encore dans le DOM (cache browser/SW). Pour réactiver : retirer ce !important + JS buildBottomNav. */
/* V542 fluidité mobile : bottom-nav fixe = 2e barre floutée mobile-only. Le backdrop-filter blur(16px) recompose
   le flou de TOUT le contenu qui scrolle derrière, à chaque frame → jank. Fond quasi-opaque (.985), zéro blur. */
.mnl-bnav{display:none !important;position:fixed;bottom:0;left:0;right:0;background:rgba(255,255,255,.985);border-top:1px solid rgba(15,23,42,.08);z-index:8500;padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -4px 16px rgba(15,23,42,.08)}
.mnl-bnav__row{display:flex;flex:1}
/* Vague 144 : Coach IA FAB globale (lab, glossaire, recettes, blog) — pill bottom-right avec label */
.mnl-global-coach-fab {
  position: fixed;
  bottom: max(24px, env(safe-area-inset-bottom, 24px));
  right: max(16px, env(safe-area-inset-right, 24px));
  z-index: 88;
  background: #101418; /* V1037 : charte Coach */
  color: #fff;
  border: 3px solid #fff;
  border-radius: 100px;
  cursor: pointer;
  font-family: inherit;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 18px;
  font-size: 13px;
  font-weight: 800;
  box-shadow: 0 12px 28px rgba(16,20,24,.35), 0 4px 10px rgba(16,20,24,.2); /* V1037 : charte Coach */
  transition: transform .2s cubic-bezier(.34,1.56,.64,1), box-shadow .2s ease;
  animation: mnl-global-fab-attn 4s ease-in-out infinite 5s;
}
.mnl-global-coach-fab:hover {
  transform: scale(1.06) translateY(-2px);
  box-shadow: 0 16px 36px rgba(16,20,24,.45), 0 6px 14px rgba(16,20,24,.28); /* V1037 : charte Coach */
}
.mnl-global-coach-fab:focus-visible { outline: 3px solid #fbbf24; outline-offset: 4px; }
.mnl-global-coach-fab__icon { font-size: 18px; line-height: 1; }
.mnl-global-coach-fab__lbl { font-size: 12px; }
@keyframes mnl-global-fab-attn {
  0%, 92%, 100% { transform: scale(1); }
  94% { transform: scale(1.08); }
  96% { transform: scale(1); }
}
@media (max-width: 720px) {
  /* Vague 150 : Coach FAB global CACHÉ sur mobile — chevauchait avec les cards produit + faisait doublon
     avec l'icône Coach déjà accessible via le header burger menu. UX plus propre sans flotter sur le contenu. */
  .mnl-global-coach-fab { display: none !important; }
}
@media (prefers-reduced-motion: reduce) {
  .mnl-global-coach-fab { animation: none; transition: none; }
}

/* Vague 144 : bnav scroll-hide — translate down quand user scroll vers le bas pour libérer viewport */
.mnl-bnav{transition:transform .3s cubic-bezier(.4,0,.2,1)}
.mnl-bnav.is-hidden-scroll{transform:translateY(100%);box-shadow:none}
@media (prefers-reduced-motion:reduce){
  .mnl-bnav{transition:none}
}
.mnl-bnav__btn{flex:1;background:none;border:none;padding:10px 4px;min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-family:inherit;color:#1a1a1a;cursor:pointer;text-decoration:none;transition:color .2s ease,transform .15s ease,background .2s ease;position:relative;border-radius:8px}
.mnl-bnav__btn:active{transform:scale(.94);background:rgba(232,78,27,.06)}
.mnl-bnav__btn:focus-visible{outline:none;background:rgba(232,78,27,.08);box-shadow:inset 0 0 0 2px rgba(232,78,27,.4)}
.mnl-bnav__btn.is-active{color:#C93F12;background:rgba(249,115,22,.05)}
.mnl-bnav__btn.is-active::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:32px;height:3px;background:#E84E1B;border-radius:0 0 4px 4px;box-shadow:0 2px 6px rgba(249,115,22,.35)}
.mnl-bnav__btn.is-active .mnl-bnav__icon{transform:scale(1.08);transition:transform .2s ease}
.mnl-bnav__btn.is-active .mnl-bnav__lbl{font-weight:800}
/* Vague 122 : Coach IA bouton actif → bordure pulse subtile au lieu du underline (le bouton est déjà rond gradient) */
.mnl-bnav__btn--coach.is-active{background:transparent}
.mnl-bnav__btn--coach.is-active::before{display:none}
.mnl-bnav__btn--coach.is-active .mnl-bnav__icon{box-shadow:0 4px 12px rgba(232,78,27,.4),0 0 0 4px rgba(232,78,27,.18);animation:mnl-bnav-coach-pulse 2s ease-in-out infinite}
@keyframes mnl-bnav-coach-pulse{
  0%,100%{box-shadow:0 4px 12px rgba(232,78,27,.4),0 0 0 4px rgba(232,78,27,.18)}
  50%{box-shadow:0 4px 12px rgba(232,78,27,.5),0 0 0 8px rgba(232,78,27,.08)}
}
@media (prefers-reduced-motion:reduce){
  .mnl-bnav__btn--coach.is-active .mnl-bnav__icon{animation:none}
}
.mnl-bnav__icon{font-size:22px;line-height:1;height:22px;display:inline-flex;align-items:center;justify-content:center}
.mnl-bnav__lbl{font-size:10px;font-weight:700;letter-spacing:-.005em;line-height:1}
.mnl-bnav__badge{position:absolute;top:2px;right:50%;margin-right:-16px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;font-size:9px;font-weight:900;min-width:16px;height:16px;padding:0 4px;border-radius:100px;display:inline-flex;align-items:center;justify-content:center;border:2px solid #fff;line-height:1}
.mnl-bnav__btn--coach .mnl-bnav__icon{width:38px;height:38px;border-radius:50%;background:#E84E1B;color:#fff;margin-top:-8px;box-shadow:0 4px 12px rgba(232,78,27,.4);font-size:18px}
@media (max-width:720px){
  /* Vague 149 BUG FIX : bnav supprimée → padding-bottom 70px laissait un espace vide sous TOUT le contenu mobile
     (FAB coach IA flottait au-dessus de ce vide → mal positionné). Retiré complètement.
     Pour le sticky ATC seul (PDP V3 sticky bar), 70px suffit (sa hauteur réelle). */
  body{padding-bottom:0}
  body:has(.mnl-pp3-sticky.is-visible){padding-bottom:70px}
}

/* ════════ SCROLL PROGRESS BAR (top of viewport) ════════ */
.mnl-scroll-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:9999;background:transparent;pointer-events:none}
.mnl-scroll-progress__fill{height:100%;width:0;background:#E84E1B;border-radius:0 3px 3px 0;transition:width .15s linear;box-shadow:0 0 8px rgba(232,78,27,.5)}/* V985c : aplat (ex-dégradé tricolore) */

/* ════════ WISHLIST FLOATING (right side) ════════ */
.mnl-wishlist-toggle{position:fixed;top:100px;right:24px;width:48px;height:48px;border-radius:50%;background:#fff;border:2px solid rgba(15,23,42,.1);cursor:pointer;font-family:inherit;display:none;align-items:center;justify-content:center;z-index:8000;box-shadow:0 8px 22px rgba(15,23,42,.12);transition:all .25s ease;font-size:20px}
.mnl-wishlist-toggle.is-active{display:inline-flex}
.mnl-wishlist-toggle:hover{transform:scale(1.1);border-color:#ef4444;box-shadow:0 12px 28px rgba(239,68,68,.25)}
.mnl-wishlist-toggle__count{position:absolute;top:-4px;right:-4px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;font-size:10px;font-weight:900;width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;border:2px solid #fff;line-height:1}
@media (max-width:720px){.mnl-wishlist-toggle{display:none!important}}

/* ════════ SEARCH OVERLAY (Cmd+K) ════════ */
.mnl-search-overlay{position:fixed;inset:0;background:rgba(15,23,42,.65);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:none;align-items:flex-start;justify-content:center;z-index:9700;padding:80px 16px 16px;opacity:0;transition:opacity .25s ease}
.mnl-search-overlay.is-open{display:flex;opacity:1}
.mnl-search-overlay__panel{background:#fff;border-radius:20px;width:100%;max-width:640px;box-shadow:0 32px 80px rgba(0,0,0,.5);overflow:hidden;transform:translateY(-20px) scale(.96);transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-search-overlay.is-open .mnl-search-overlay__panel{transform:translateY(0) scale(1)}
.mnl-search-overlay__inputbox{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid rgba(15,23,42,.08)}
.mnl-search-overlay__icon{font-size:20px;color:#101418;line-height:1}/* V1037 : charte Coach */
.mnl-search-overlay__input{flex:1;border:none;outline:none;background:none;font-family:inherit;font-size:18px;font-weight:600;color:#0f172a;padding:4px 0}
.mnl-search-overlay__input::placeholder{color:rgba(15,23,42,.4);font-weight:500}
.mnl-search-overlay__shortcut{font-size:11px;font-weight:700;color:rgba(15,23,42,.5);background:rgba(15,23,42,.06);padding:4px 10px;border-radius:6px;letter-spacing:.04em}
.mnl-search-overlay__results{max-height:60vh;overflow-y:auto;padding:12px}
.mnl-search-overlay__cat{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:rgba(15,23,42,.5);padding:12px 12px 6px}
.mnl-search-overlay__item{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;text-decoration:none;color:#0f172a;background:transparent;border:none;width:100%;text-align:left;font-family:inherit;cursor:pointer;transition:background .15s ease}
.mnl-search-overlay__item:hover,.mnl-search-overlay__item.is-active{background:#F2F3F5}/* V1037 : charte Coach */
.mnl-search-overlay__item-icon{width:36px;height:36px;border-radius:10px;background:#F2F3F5;color:#101418;display:inline-flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}/* V1037 : charte Coach */
.mnl-search-overlay__item-body{flex:1;min-width:0}
.mnl-search-overlay__item-title{font-size:14px;font-weight:800;letter-spacing:-.005em;margin:0}
.mnl-search-overlay__item-sub{font-size:12px;color:rgba(15,23,42,.55);font-weight:500;margin:2px 0 0}
.mnl-search-overlay__item-arrow{font-size:16px;color:rgba(15,23,42,.3);font-weight:700}
.mnl-search-overlay__hint{padding:14px 22px;background:rgba(15,23,42,.04);font-size:11px;color:rgba(15,23,42,.55);font-weight:600;display:flex;justify-content:space-between;align-items:center;border-top:1px solid rgba(15,23,42,.06);flex-wrap:wrap;gap:8px}
.mnl-search-overlay__hint kbd{background:#fff;padding:2px 8px;border-radius:4px;font-family:monospace;font-size:10px;font-weight:700;border:1px solid rgba(15,23,42,.1)}

/* ════════ ANIMATED STATS COUNTER ════════ */
.mnl-stat-num{display:inline-block;font-variant-numeric:tabular-nums;transition:opacity .3s ease}

/* ════════ TOAST QUEUE (notifications globales) ════════ */
.mnl-toast-stack{position:fixed;top:20px;right:20px;z-index:100000;display:flex;flex-direction:column;gap:10px;pointer-events:none;max-width:340px}/* V787 : z 9800→100000. Le toast « Complétez votre formule » (ATC formule incomplète) rendait DERRIÈRE l'overlay configurateur (z-9998) → invisible → user croit que « panier reste à 0 » sans feedback. Doit passer au-dessus de tous les overlays (config 9998, picker 99997, coach 99998, tiroir 99999). */
@media (max-width:580px){.mnl-toast-stack{top:auto;bottom:90px;right:12px;left:12px;max-width:none;align-items:stretch}}
/* Vague 92 : retiré `mnl-toast-out .4s ease 4s forwards` de l'animation shorthand.
   Avant : animation CSS hardcodée à 4s retirait le toast même si JS dispose d'un `duration > 4000ms`
   (mnlToastError=6000ms, mnlToastWarn=5500ms) → flicker visuel.
   Maintenant : seul mnl-toast-in joue à l'apparition, JS contrôle la sortie via `.is-removing` (L341). */
/* V708 : toasts refaits en carte blanche épurée (demande fondateur, réf. 2e screen) — fond blanc, icône en cercle, bord gauche coloré sémantique, couleurs MNL. */
.mnl-toast{background:#fff;color:#0f172a;border-radius:16px;padding:15px 16px;display:flex;align-items:center;gap:13px;box-shadow:0 12px 34px rgba(15,23,42,.16);pointer-events:auto;animation:mnl-toast-in .4s cubic-bezier(.34,1.56,.64,1);border:1px solid rgba(15,23,42,.06);border-left:4px solid #101418;max-width:100%;position:relative;overflow:hidden;cursor:default;touch-action:pan-y}/* V1037 : charte Coach */
.mnl-toast::after{content:"";position:absolute;left:0;bottom:0;height:3px;width:100%;background:#101418;opacity:.25;transform-origin:left;animation:mnl-toast-progress 4.5s linear forwards}/* V1037 : charte Coach */
.mnl-toast--success{border-left-color:#16a34a}
.mnl-toast--success::after{background:#16a34a}
.mnl-toast--error{border-left-color:#dc2626}
.mnl-toast--error::after{background:#dc2626}
.mnl-toast--warn{border-left-color:#f59e0b}
.mnl-toast--warn::after{background:#f59e0b}
.mnl-toast--info{border-left-color:#101418}/* V1037 : charte Coach */
.mnl-toast--info::after{background:#101418}/* V1037 : charte Coach */
.mnl-toast.is-removing{animation:mnl-toast-out .3s ease forwards}
.mnl-toast.is-swiping{transition:transform .15s ease}
@keyframes mnl-toast-in{from{opacity:0;transform:translateX(40px) scale(.92)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes mnl-toast-out{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(40px);max-height:0;padding:0;margin:0;border:0}}
@keyframes mnl-toast-progress{from{transform:scaleX(1)}to{transform:scaleX(0)}}
.mnl-toast__icon{font-size:18px;line-height:1;flex-shrink:0;width:38px;height:38px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#F2F3F5}/* V1037 : charte Coach */
.mnl-toast--success .mnl-toast__icon{background:rgba(22,163,74,.14)}
.mnl-toast--error .mnl-toast__icon{background:rgba(220,38,38,.12)}
.mnl-toast--warn .mnl-toast__icon{background:rgba(245,158,11,.16)}
.mnl-toast--info .mnl-toast__icon{background:#F2F3F5}/* V1037 : charte Coach */
.mnl-toast__txt{flex:1;min-width:0}
.mnl-toast__title{font-size:14px;font-weight:800;letter-spacing:-.01em;margin:0;color:#0f172a}
.mnl-toast__sub{font-size:12px;color:#1a1a1a;font-weight:500;margin:2px 0 0;line-height:1.4}
.mnl-toast__action{background:#101418;border:none;color:#fff;font-family:inherit;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:7px 13px;border-radius:100px;cursor:pointer;transition:background .2s ease;flex-shrink:0;text-decoration:none;display:inline-flex;align-items:center}/* V1037 : charte Coach */
.mnl-toast__action:hover{background:#000}/* V1037 : charte Coach */
/* V520 WCAG : 28→44 (touch target dismissible mobile sans frustration) */
.mnl-toast__close{background:none;border:none;color:#1a1a1a;font-size:18px;cursor:pointer;font-family:inherit;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:color .2s ease;border-radius:6px;flex-shrink:0}
.mnl-toast__close:hover{color:#0f172a;background:rgba(15,23,42,.06)}
.mnl-toast.is-paused::after{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){.mnl-toast{animation:none}.mnl-toast::after{animation-duration:6s}}

@keyframes mnl-spinner-rot{to{transform:rotate(360deg)}}

/* Loading state pour boutons (data-loading="true") */
button[data-loading="true"],a[data-loading="true"]{position:relative;color:transparent !important;pointer-events:none;cursor:wait}
button[data-loading="true"]::after,a[data-loading="true"]::after{content:"";position:absolute;top:50%;left:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border:2px solid #fff;border-right-color:transparent;border-radius:50%;animation:mnl-spinner-rot .7s linear infinite;color:#fff}

/* ════════ FORM VALIDATION UX (live error/success states) ════════ */
.mnl-field{position:relative;margin-bottom:18px}
.mnl-field__label{display:block;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#1a1a1a;margin-bottom:6px}
.mnl-field__input,.mnl-field__textarea,.mnl-field__select{width:100%;padding:14px 16px;background:#fff;border:1.5px solid #e2e8f0;border-radius:10px;font-family:inherit;font-size:15px;color:#0f172a;transition:border-color .2s ease,box-shadow .2s ease;-webkit-appearance:none;appearance:none}
.mnl-field__input:hover,.mnl-field__textarea:hover{border-color:#cbd5e1}
.mnl-field__input:focus,.mnl-field__textarea:focus,.mnl-field__select:focus{outline:none;border-color:#E84E1B;box-shadow:0 0 0 4px rgba(232,78,27,.12)}
.mnl-field--has-icon .mnl-field__input{padding-right:44px}
.mnl-field__icon{position:absolute;right:14px;top:50%;transform:translateY(-50%);width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;font-size:14px;font-weight:900;border-radius:50%;opacity:0;transition:opacity .25s ease,transform .25s cubic-bezier(.34,1.56,.64,1);pointer-events:none}
.mnl-field--success .mnl-field__input{border-color:#22c55e;padding-right:44px}
.mnl-field--success .mnl-field__icon{opacity:1;background:#22c55e;color:#fff}
.mnl-field--success .mnl-field__icon::before{content:"✓"}
.mnl-field--error .mnl-field__input,.mnl-field--error .mnl-field__textarea{border-color:#ef4444;padding-right:44px;animation:mnl-field-shake .35s cubic-bezier(.36,.07,.19,.97)}
.mnl-field--error .mnl-field__input:focus,.mnl-field--error .mnl-field__textarea:focus{box-shadow:0 0 0 4px rgba(239,68,68,.12)}
.mnl-field--error .mnl-field__icon{opacity:1;background:#ef4444;color:#fff}
.mnl-field--error .mnl-field__icon::before{content:"!"}
.mnl-field__msg{margin:6px 0 0;font-size:12px;font-weight:600;line-height:1.45;display:flex;align-items:flex-start;gap:6px;min-height:18px}
.mnl-field--error .mnl-field__msg{color:#dc2626}
.mnl-field--success .mnl-field__msg{color:#16a34a}
.mnl-field__hint{color:#1a1a1a;font-weight:500}
@keyframes mnl-field-shake{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(3px)}30%,50%,70%{transform:translateX(-5px)}40%,60%{transform:translateX(5px)}}
/* Required indicator */
.mnl-field__label[data-required="true"]::after{content:" *";color:#ef4444}
/* Character counter */
.mnl-field__counter{position:absolute;right:14px;bottom:-18px;font-size:11px;color:#1a1a1a;font-weight:600}
.mnl-field--error .mnl-field__counter{color:#ef4444}

/* ════════ IMAGE ZOOM LIGHTBOX (clic pour agrandir) ════════ */
.mnl-zoom-overlay{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:99995;display:none;align-items:center;justify-content:center;padding:20px;cursor:zoom-out;animation:mnl-zoom-fade .25s ease;backdrop-filter:blur(8px)}
.mnl-zoom-overlay.is-open{display:flex}
.mnl-zoom-overlay__img{max-width:96%;max-height:92vh;object-fit:contain;cursor:zoom-out;transition:transform .35s cubic-bezier(.34,1.56,.64,1);box-shadow:0 32px 80px rgba(0,0,0,.4);border-radius:8px;animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-zoom-overlay__close{position:absolute;top:16px;right:16px;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:#fff;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease}
.mnl-zoom-overlay__close:hover{background:rgba(255,255,255,.2)}
.mnl-zoom-overlay__nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);color:#fff;font-size:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease;font-weight:900}
.mnl-zoom-overlay__nav:hover{background:rgba(255,255,255,.25)}
.mnl-zoom-overlay__nav--prev{left:16px}
.mnl-zoom-overlay__nav--next{right:16px}
.mnl-zoom-overlay__counter{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);background:rgba(255,255,255,.1);color:#fff;font-size:13px;font-weight:700;padding:8px 16px;border-radius:100px;border:1px solid rgba(255,255,255,.15)}
@keyframes mnl-zoom-fade{from{opacity:0}to{opacity:1}}
@keyframes mnl-zoom-pop{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}
@media (max-width:580px){.mnl-zoom-overlay__nav{width:40px;height:40px;font-size:18px}}

/* Indicateur "clic pour agrandir" sur images zoomables */
img[data-mnl-zoom]{cursor:zoom-in;transition:opacity .2s ease}
img[data-mnl-zoom]:hover{opacity:.92}

/* ════════ REVEAL ON SCROLL (intersection observer staggered) ════════ */
.mnl-reveal{opacity:0;transform:translateY(24px);transition:opacity .7s cubic-bezier(.16,.84,.44,1),transform .7s cubic-bezier(.16,.84,.44,1);transition-delay:var(--mnl-reveal-delay,0ms)}
.mnl-reveal.is-visible{opacity:1;transform:translateY(0)}
.mnl-reveal--left{transform:translateX(-24px)}
.mnl-reveal--right{transform:translateX(24px)}
.mnl-reveal--scale{transform:scale(.92)}
.mnl-reveal--left.is-visible,.mnl-reveal--right.is-visible{transform:translateX(0)}
.mnl-reveal--scale.is-visible{transform:scale(1)}
/* Stagger : enfants successifs prennent 60ms de délai */
.mnl-reveal-stagger > *{opacity:0;transform:translateY(16px);transition:opacity .55s cubic-bezier(.16,.84,.44,1),transform .55s cubic-bezier(.16,.84,.44,1)}
.mnl-reveal-stagger.is-visible > *{opacity:1;transform:translateY(0)}
.mnl-reveal-stagger.is-visible > *:nth-child(1){transition-delay:0ms}
.mnl-reveal-stagger.is-visible > *:nth-child(2){transition-delay:60ms}
.mnl-reveal-stagger.is-visible > *:nth-child(3){transition-delay:120ms}
.mnl-reveal-stagger.is-visible > *:nth-child(4){transition-delay:180ms}
.mnl-reveal-stagger.is-visible > *:nth-child(5){transition-delay:240ms}
.mnl-reveal-stagger.is-visible > *:nth-child(6){transition-delay:300ms}
.mnl-reveal-stagger.is-visible > *:nth-child(7){transition-delay:360ms}
.mnl-reveal-stagger.is-visible > *:nth-child(8){transition-delay:420ms}
@media (prefers-reduced-motion:reduce){.mnl-reveal,.mnl-reveal-stagger > *{opacity:1 !important;transform:none !important;transition:none !important}}

/* ════════ MICRO-INTERACTIONS BOUTONS / CARDS ════════ */
.mnl-btn-pulse{position:relative;overflow:hidden}
.mnl-btn-pulse::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,rgba(255,255,255,.4) 0%,transparent 60%);opacity:0;pointer-events:none;transition:opacity .4s ease}
.mnl-btn-pulse:active::after{opacity:1;transition:none}
/* Hover lift uniforme pour cards interactives */
.mnl-hover-lift{transition:transform .25s cubic-bezier(.16,.84,.44,1),box-shadow .25s cubic-bezier(.16,.84,.44,1)}
.mnl-hover-lift:hover{transform:translateY(-3px)}
/* Underline animée pour liens text */
.mnl-link-underline{position:relative;text-decoration:none}
.mnl-link-underline::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1.5px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .35s cubic-bezier(.86,0,.07,1)}
.mnl-link-underline:hover::after{transform:scaleX(1);transform-origin:left}
/* Card tilt subtle 3D au hover */
.mnl-tilt{transition:transform .35s cubic-bezier(.16,.84,.44,1)}
.mnl-tilt:hover{transform:perspective(1000px) rotateX(2deg) rotateY(-2deg) translateY(-3px)}

/* ════════ SCROLL UX (smooth scroll iOS-friendly + scroll-margin) ════════ */
html{scroll-behavior:smooth;scroll-padding-top:80px}
@supports (-webkit-touch-callout:none){html{scroll-behavior:auto}/* iOS perf : smooth manuel via JS si besoin */}
[id]{scroll-margin-top:80px}/* Tous les anchors ont un offset header */
@media (max-width:720px){[id]{scroll-margin-top:60px}}

/* Vague 151 P0 fix : safety net anti-overflow horizontal global
   Cause typique : éléments full-bleed avec width:100vw + scrollbar verticale Windows/Chrome
   crée différence 100vw - 100% = ~17px → horizontal scroll non-désiré.
   overflow-x:hidden sur html+body bloque ça sans casser le layout interne. */
/* V743 : overflow-x CLIP (et non hidden) — `hidden` force overflow-y:auto → body/html deviennent des conteneurs de défilement
   qui CASSENT le position:sticky du header (signalé fondateur « le header ne suit pas au scroll sur mobile »).
   `clip` bloque le scroll horizontal SANS créer de conteneur → sticky préservé. Fallback `hidden` pour vieux navigateurs. */
html, body { overflow-x: hidden; overflow-x: clip; max-width: 100vw; }
/* Évite que le scroll position:sticky soit cassé par overflow-x sur certains parents */
body > * { max-width: 100vw; }

/* ════════ PAGE TRANSITION ════════
   V324 — FIX SACCADE sur notre-histoire / engagements (et autres pages "denses") :
   Avant : `body{animation:mnl-page-enter .35s ease}` fire unconditionnellement sur chaque
   page load. Conflictait avec (1) `body.mnl-page-loading{opacity:0}` ligne 66, (2) `body{opacity:1;
   transition:opacity .25s}` ligne 67, (3) `body.mnl-page-loading{opacity:.85}` ligne 2674 (RETIRÉE V324),
   (4) `body.mnl-page-leaving{opacity:0}` ligne suivante. 3-4 règles concurrentes sur body opacity =
   browser paint conflicts = saccade visible quand la page-cible est lourde et que son render commence
   AVANT que l'animation soit terminée (cas notre-histoire 505 lignes, engagements 413 lignes).

   Maintenant : animation entrée RETIRÉE (la page apparaît instantanément, comportement natif browser).
   Le fade-out `body.mnl-page-leaving` reste pour la transition sortante propre. Le keyframes reste
   au cas où une class spécifique le ré-active à l'avenir (opt-in plutôt qu'unconditionnel). */
@keyframes mnl-page-enter{from{opacity:0}to{opacity:1}}
body.mnl-page-leaving{opacity:0;transition:opacity .25s ease;pointer-events:none}
@media (prefers-reduced-motion:reduce){body.mnl-page-leaving{transition:none;opacity:1}}

/* V552 : micro-feedback tactile UNIVERSEL au clic sur boutons / CTA / cartes-boutons. transform GPU (compositor,
   zéro coût layout), instantané (on n'ajoute PAS de transition pour ne pas écraser celles déjà définies sur les
   boutons), désactivé en reduced-motion. Donne une sensation de réactivité (surtout mobile) sans alourdir. */
@media (prefers-reduced-motion: no-preference) {
  button:active,
  a[class*="cta"]:active,
  a[class*="btn"]:active,
  [role="button"]:active { transform: scale(.97); }
}

/* [SUPPRIMÉ] CSS .mnl-back-top : remplacé par .mnl-back-to-top (plus bas dans ce fichier, vague 9). */

/* ════════ TOOLTIPS contextuels (data-mnl-tooltip="texte") ════════ */
[data-mnl-tooltip]{position:relative;cursor:help;border-bottom:1px dotted currentColor}
[data-mnl-tooltip]::before,[data-mnl-tooltip]::after{position:absolute;left:50%;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease,transform .2s cubic-bezier(.34,1.56,.64,1);pointer-events:none;z-index:9700}
[data-mnl-tooltip]::before{content:attr(data-mnl-tooltip);bottom:calc(100% + 10px);transform:translateX(-50%) translateY(4px);background:#0f172a;color:#fff;padding:8px 12px;border-radius:8px;font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap;max-width:280px;box-shadow:0 12px 28px rgba(0,0,0,.25)}
[data-mnl-tooltip][data-mnl-tooltip-multiline="true"]::before{white-space:normal;width:240px;max-width:240px}
[data-mnl-tooltip]::after{content:"";bottom:calc(100% + 4px);transform:translateX(-50%) translateY(4px);width:0;height:0;border:6px solid transparent;border-top-color:#0f172a}
[data-mnl-tooltip]:hover::before,[data-mnl-tooltip]:hover::after,[data-mnl-tooltip]:focus::before,[data-mnl-tooltip]:focus::after{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
@media (max-width:580px){[data-mnl-tooltip]::before{font-size:11px;padding:6px 10px}}

/* ════════ PERSONNALISATION : greeting + recently viewed widget ════════ */
.mnl-greeting{display:inline-block;font-weight:700}
.mnl-greeting__name{color:#C93F12}

.mnl-rv-widget{position:fixed;bottom:140px;right:16px;width:64px;height:64px;border-radius:50%;background:#fff;border:2px solid rgba(232,78,27,.25);box-shadow:0 8px 24px rgba(0,0,0,.12);z-index:8350;cursor:pointer;display:none;align-items:center;justify-content:center;font-size:28px;transition:transform .2s ease,box-shadow .2s ease;animation:mnl-rv-attract 3s ease-in-out infinite 4s}
.mnl-rv-widget.is-active{display:flex}
.mnl-rv-widget:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 12px 32px rgba(232,78,27,.25)}
.mnl-rv-widget__badge{position:absolute;top:-4px;right:-4px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;font-size:10px;font-weight:900;min-width:20px;height:20px;padding:0 5px;border-radius:100px;display:inline-flex;align-items:center;justify-content:center;border:2px solid #fff}
.mnl-rv-panel{position:fixed;bottom:220px;right:16px;width:300px;max-width:calc(100vw - 32px);background:#fff;border-radius:16px;box-shadow:0 24px 60px rgba(0,0,0,.2);z-index:8351;padding:16px;display:none;border:1px solid rgba(15,23,42,.08)}
.mnl-rv-panel.is-open{display:block;animation:mnl-rv-pop .35s cubic-bezier(.34,1.56,.64,1)}
@keyframes mnl-rv-pop{from{opacity:0;transform:translateY(12px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes mnl-rv-attract{0%,90%,100%{transform:scale(1)}5%{transform:scale(1.08)}}
.mnl-rv-panel__title{font-size:13px;font-weight:800;color:#0f172a;margin:0 0 10px;letter-spacing:-.005em}
.mnl-rv-panel__list{display:flex;flex-direction:column;gap:8px}
.mnl-rv-panel__item{display:flex;align-items:center;gap:10px;padding:8px;background:#f8fafc;border-radius:10px;text-decoration:none;color:#0f172a;transition:background .15s ease}
.mnl-rv-panel__item:hover{background:#FDEDE6}
.mnl-rv-panel__item-icon{width:34px;height:34px;border-radius:8px;background:#E84E1B;display:flex;align-items:center;justify-content:center;font-size:16px;color:#fff;flex-shrink:0}
.mnl-rv-panel__item-text{flex:1;min-width:0;font-size:13px;font-weight:700;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mnl-rv-panel__close{position:absolute;top:6px;right:6px;background:none;border:none;color:#1a1a1a;cursor:pointer;width:24px;height:24px;font-size:16px;display:flex;align-items:center;justify-content:center;border-radius:6px}
.mnl-rv-panel__close:hover{color:#0f172a;background:#f1f5f9}
/* Vague 150 BUG FIX : SWEEP — TOUS les FABs décoratifs CACHÉS sur mobile pour épurer.
   Seul scroll-to-top reste visible (utile + auto-adjust au-dessus sticky-cta).
   Accès produits via header burger + recherche. Accès Coach via burger menu. */
@media (max-width:720px){
  .mnl-rv-widget,
  .mnl-rv-panel,
  .mnl-fab,
  .mnl-floating-coach,
  .mnl-loyalty-badge { display:none !important; }
}
@media print{.mnl-rv-widget,.mnl-rv-panel{display:none !important}}

/* ════════ WISHLIST HEART TOGGLE (data-mnl-wishlist="handle") ════════ */
.mnl-wishlist-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;background:rgba(255,255,255,.95);border:1.5px solid rgba(15,23,42,.08);border-radius:50%;cursor:pointer;font-size:18px;color:#cbd5e1;transition:all .25s cubic-bezier(.34,1.56,.64,1);font-family:inherit;backdrop-filter:blur(8px);position:relative;overflow:hidden;-webkit-appearance:none;appearance:none}
.mnl-wishlist-btn:hover{transform:scale(1.08);border-color:rgba(232,78,27,.4);color:#C93F12;box-shadow:0 6px 16px rgba(232,78,27,.2)}
.mnl-wishlist-btn.is-active{color:#C93F12;border-color:#E84E1B;background:rgba(232,78,27,.05)}
.mnl-wishlist-btn.is-active:hover{color:#C93F12}
.mnl-wishlist-btn.is-just-added{animation:mnl-heart-pop .55s cubic-bezier(.34,1.56,.64,1)}
.mnl-wishlist-btn.is-just-added::after{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,rgba(232,78,27,.6) 0%,transparent 60%);animation:mnl-heart-burst .6s ease forwards}
@keyframes mnl-heart-pop{0%,100%{transform:scale(1)}40%{transform:scale(1.35)}70%{transform:scale(.92)}}
@keyframes mnl-heart-burst{0%{opacity:1;transform:scale(.6)}100%{opacity:0;transform:scale(1.8)}}
@media (max-width:580px){.mnl-wishlist-btn{width:40px;height:40px;font-size:16px}}/* V953 (audit) : 36→40px cible tactile mobile */
/* Position absolue dans card produit */
.mnl-wishlist-btn--floating{position:absolute;top:12px;right:12px;z-index:5;box-shadow:0 4px 12px rgba(0,0,0,.1)}

/* ════════ QUANTITY STEPPER (data-mnl-stepper réutilisable) ════════ */
.mnl-stepper{display:inline-flex;align-items:center;background:#f1f5f9;border-radius:100px;padding:4px;gap:0;border:1px solid rgba(15,23,42,.06)}
/* V520 WCAG : 32→44 (touch target WCAG 2.5.5 AAA + cart conversion mobile direct gain) */
.mnl-stepper__btn{width:44px;height:44px;background:#fff;border:none;border-radius:50%;font-family:inherit;font-size:18px;font-weight:900;color:#1a1a1a;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,color .15s ease,transform .1s ease;-webkit-appearance:none;appearance:none;box-shadow:0 1px 3px rgba(15,23,42,.08)}
.mnl-stepper__btn:hover:not(:disabled){background:#101418;color:#fff}/* V1037 : charte Coach */
.mnl-stepper__btn:active:not(:disabled){transform:scale(.92)}
.mnl-stepper__btn:disabled{opacity:.4;cursor:not-allowed}
.mnl-stepper__val{min-width:36px;text-align:center;font-size:14px;font-weight:800;color:#0f172a;padding:0 4px;font-variant-numeric:tabular-nums}
.mnl-stepper__val.is-flashing{animation:mnl-stepper-flash .4s ease}
@keyframes mnl-stepper-flash{0%,100%{transform:scale(1);color:#0f172a}50%{transform:scale(1.25);color:#C93F12}}
.mnl-stepper--lg .mnl-stepper__btn{width:40px;height:40px;font-size:18px}
.mnl-stepper--lg .mnl-stepper__val{min-width:44px;font-size:16px;padding:0 6px}
@media (max-width:580px) and (pointer:coarse){.mnl-stepper__btn{width:44px;height:44px;font-size:18px}}

/* ════════ NEWSLETTER INLINE CONFIRMATION (no page reload) ════════ */
.mnl-nl-confirm{display:none;animation:mnl-nl-pop .4s cubic-bezier(.34,1.56,.64,1);text-align:center;padding:16px;background:linear-gradient(135deg,#dcfce7,#bbf7d0);border:1px solid rgba(34,197,94,.4);border-radius:14px;color:#166534;font-weight:700;font-size:14px}
.mnl-nl-confirm.is-visible{display:block}
.mnl-nl-confirm__icon{font-size:32px;margin-bottom:8px;line-height:1;display:block}
.mnl-nl-confirm__title{font-size:15px;font-weight:900;margin:0 0 4px;letter-spacing:-.005em}
.mnl-nl-confirm__sub{font-size:12px;font-weight:600;color:#15803d;margin:0;line-height:1.45}
.mnl-nl-confirm__code{display:inline-block;margin-top:10px;padding:6px 14px;background:#0f172a;color:#fbbf24;font-family:monospace;font-weight:900;font-size:14px;letter-spacing:.1em;border-radius:8px;cursor:pointer}
@keyframes mnl-nl-pop{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}

/* ════════ QUICK VIEW MODAL pour product cards ════════ */
.mnl-qv-trigger{position:absolute;bottom:12px;right:12px;background:rgba(255,255,255,.95);border:none;color:#0f172a;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:8px 14px;border-radius:100px;cursor:pointer;opacity:0;transform:translateY(8px);transition:opacity .25s ease,transform .25s ease;backdrop-filter:blur(8px);box-shadow:0 4px 12px rgba(0,0,0,.15);z-index:4;font-family:inherit}
.mnl-qv-trigger:hover{background:#101418;color:#fff}/* V1037 : charte Coach */
*:hover > .mnl-qv-trigger,.mnl-qv-trigger:focus{opacity:1;transform:translateY(0)}
@media (pointer:coarse){.mnl-qv-trigger{opacity:1;transform:translateY(0);font-size:10px;padding:6px 10px}}

.mnl-qv{position:fixed;inset:0;background:rgba(15,23,42,.7);backdrop-filter:blur(12px);z-index:99994;display:none;align-items:center;justify-content:center;padding:20px;animation:mnl-qv-fade .25s ease}
.mnl-qv.is-open{display:flex}
.mnl-qv__panel{background:#fff;border-radius:24px;max-width:920px;width:100%;max-height:88vh;overflow:auto;display:grid;grid-template-columns:1fr 1fr;box-shadow:0 32px 80px rgba(0,0,0,.4);animation:mnl-qv-slide .35s cubic-bezier(.34,1.56,.64,1);position:relative}
@media (max-width:720px){.mnl-qv__panel{grid-template-columns:1fr;max-height:92vh}}
.mnl-qv__close{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;background:rgba(15,23,42,.08);border:none;color:#0f172a;font-size:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;transition:background .2s ease}
.mnl-qv__close:hover{background:rgba(239,68,68,.15);color:#ef4444}
.mnl-qv__media{background:#f8fafc;display:flex;align-items:center;justify-content:center;padding:32px;min-height:300px}
.mnl-qv__media img{max-width:100%;max-height:380px;object-fit:contain}
.mnl-qv__body{padding:32px;display:flex;flex-direction:column;gap:14px}
@media (max-width:720px){.mnl-qv__body{padding:24px}.mnl-qv__media{padding:24px;min-height:200px}}
@keyframes mnl-qv-fade{from{opacity:0}to{opacity:1}}
@keyframes mnl-qv-slide{from{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}

/* Vague 93 : skeleton loading state pour QV modal pendant fetch /products/{handle}.js.
   Avant : modal s'ouvrait vide → flash 200-800ms (selon latence) → effet "produit non chargé".
   Maintenant : skeleton pulse → user sait que ça charge, transition fluide vers contenu réel. */
.mnl-qv.is-loading .mnl-qv__media{
  background:linear-gradient(110deg,#f1f5f9 30%,#e2e8f0 50%,#f1f5f9 70%);
  background-size:200% 100%;
  animation:mnl-qv-skel 1.4s linear infinite;
}
.mnl-qv.is-loading .mnl-qv__media img{visibility:hidden;}
.mnl-qv.is-loading .mnl-qv__title::before,
.mnl-qv.is-loading .mnl-qv__price::before,
.mnl-qv.is-loading .mnl-qv__desc::before{
  content:"";display:block;
  background:linear-gradient(110deg,#f1f5f9 30%,#e2e8f0 50%,#f1f5f9 70%);
  background-size:200% 100%;
  animation:mnl-qv-skel 1.4s linear infinite;
  border-radius:6px;
}
.mnl-qv.is-loading .mnl-qv__title::before{height:28px;width:75%;margin-bottom:4px;}
.mnl-qv.is-loading .mnl-qv__price::before{height:24px;width:35%;}
.mnl-qv.is-loading .mnl-qv__desc::before{height:14px;width:100%;margin-bottom:6px;box-shadow:0 22px 0 -8px rgba(241,245,249,1),0 22px 0 0 rgba(241,245,249,1);}
.mnl-qv.is-loading .mnl-qv__cta{pointer-events:none;opacity:.4;}
@keyframes mnl-qv-skel{0%{background-position:200% 0;}100%{background-position:-200% 0;}}
@media (prefers-reduced-motion: reduce){
  .mnl-qv.is-loading .mnl-qv__media,
  .mnl-qv.is-loading .mnl-qv__title::before,
  .mnl-qv.is-loading .mnl-qv__price::before,
  .mnl-qv.is-loading .mnl-qv__desc::before{animation:none;}
}

/* ════════ STICKY TABLE OF CONTENTS (long pages) ════════ */
.mnl-toc{position:sticky;top:80px;max-height:calc(100vh - 100px);overflow-y:auto;padding:18px;background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:14px;font-family:inherit;font-size:13px;width:240px;flex-shrink:0;display:none}
@media (min-width:1100px){.mnl-toc{display:block}}
.mnl-toc__title{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#1a1a1a;margin:0 0 12px}
.mnl-toc__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.mnl-toc__list a{display:block;padding:7px 10px;color:#1a1a1a;text-decoration:none;border-radius:6px;border-left:2px solid transparent;font-weight:600;transition:all .2s ease;line-height:1.35}
.mnl-toc__list a:hover{color:#101418;background:rgba(16,20,24,.06);border-left-color:rgba(16,20,24,.35)}/* V1037 : charte Coach */
.mnl-toc__list a.is-active{color:#C93F12;background:rgba(232,78,27,.08);border-left-color:#E84E1B;font-weight:800}
.mnl-toc__list .mnl-toc__h3{padding-left:22px;font-size:12px;color:#1a1a1a}
.mnl-toc__list .mnl-toc__h3.is-active{color:#C93F12}

/* ════════ STOCK INDICATOR (low stock urgency réelle, basée sur Shopify inventory) ════════ */
.mnl-stock{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:100px;font-size:12px;font-weight:800;letter-spacing:.02em;border:1px solid;margin:8px 0}
.mnl-stock--ok{background:rgba(34,197,94,.08);color:#15803d;border-color:rgba(34,197,94,.3)}
.mnl-stock--low{background:rgba(251,191,36,.1);color:#a16207;border-color:rgba(251,191,36,.4);animation:mnl-stock-pulse 2.5s ease-in-out infinite}
.mnl-stock--out{background:rgba(239,68,68,.1);color:#b91c1c;border-color:rgba(239,68,68,.4)}
.mnl-stock__dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex-shrink:0;box-shadow:0 0 0 0 currentColor;animation:mnl-stock-dot-pulse 2s ease-in-out infinite}
@keyframes mnl-stock-pulse{0%,100%{box-shadow:0 0 0 0 rgba(251,191,36,.4)}50%{box-shadow:0 0 0 6px rgba(251,191,36,0)}}
@keyframes mnl-stock-dot-pulse{0%,100%{box-shadow:0 0 0 0 currentColor;opacity:1}70%{box-shadow:0 0 0 6px transparent;opacity:.7}}
.mnl-stock--out .mnl-stock__dot{animation:none}

/* ════════ LOADING BAR TOP (page transitions Nprogress-style) ════════ */
.mnl-loading-bar{position:fixed;top:0;left:0;height:3px;background:#E84E1B;box-shadow:0 0 8px rgba(232,78,27,.6);z-index:99999;width:0;opacity:0;transition:width .35s ease,opacity .25s ease;transform-origin:left;border-radius:0 3px 3px 0}/* V985c : aplat (ex-dégradé tricolore) */
.mnl-loading-bar.is-loading{opacity:1}

/* ════════ MINI CART HOVER PREVIEW (desktop, header cart icon) ════════ */
.mnl-mc-hover{position:absolute;top:calc(100% + 12px);right:0;background:#fff;border-radius:14px;width:340px;padding:16px;box-shadow:0 24px 60px rgba(15,23,42,.18);border:1px solid rgba(15,23,42,.08);opacity:0;visibility:hidden;transform:translateY(-8px) scale(.96);transform-origin:top right;transition:opacity .2s ease,visibility .2s ease,transform .25s cubic-bezier(.34,1.56,.64,1);z-index:9100;pointer-events:none}
.mnl-mc-hover::before{content:"";position:absolute;top:-12px;right:24px;width:0;height:0;border:6px solid transparent;border-bottom-color:#fff;filter:drop-shadow(0 -2px 2px rgba(15,23,42,.08))}
.mnl-mc-hover.is-visible{opacity:1;visibility:visible;transform:translateY(0) scale(1);pointer-events:auto}
.mnl-mc-hover__title{font-size:13px;font-weight:800;letter-spacing:-.005em;margin:0 0 12px;color:#0f172a;display:flex;align-items:center;justify-content:space-between}
.mnl-mc-hover__title small{color:#1a1a1a;font-weight:600;font-size:11px}
.mnl-mc-hover__items{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;max-height:280px;overflow-y:auto}
.mnl-mc-hover__item{display:flex;align-items:center;gap:10px;padding:8px;background:#f8fafc;border-radius:10px}
.mnl-mc-hover__item-img{width:40px;height:40px;border-radius:8px;background:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;overflow:hidden}
.mnl-mc-hover__item-img img{width:100%;height:100%;object-fit:cover}
.mnl-mc-hover__item-info{flex:1;min-width:0}
.mnl-mc-hover__item-name{font-size:12px;font-weight:700;color:#0f172a;margin:0;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mnl-mc-hover__item-meta{font-size:11px;color:#1a1a1a;margin:1px 0 0;font-weight:600}
.mnl-mc-hover__total{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-top:1px dashed rgba(15,23,42,.08);font-size:14px;font-weight:800;color:#0f172a;margin-bottom:10px}
.mnl-mc-hover__total strong{font-size:16px;background:#E84E1B;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.mnl-mc-hover__cta{display:block;text-align:center;padding:12px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;text-decoration:none;border-radius:10px;font-size:13px;font-weight:800;letter-spacing:-.005em;transition:transform .2s ease}
.mnl-mc-hover__cta:hover{transform:translateY(-1px)}
.mnl-mc-hover__empty{text-align:center;padding:20px 12px;font-size:13px;color:#1a1a1a;font-weight:600}
@media (max-width:720px){.mnl-mc-hover{display:none !important}/* Mobile : drawer prend le relais */}

/* ════════ WISHLIST COUNT BADGE (header) ════════ */
.mnl-wl-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;font-size:10px;font-weight:900;border-radius:100px;line-height:1;border:2px solid #fff;position:absolute;top:-4px;right:-6px}
.mnl-wl-count-badge[data-count="0"]{display:none}
.mnl-wl-count-badge.is-bumping{animation:mnl-cd-count-bump .4s cubic-bezier(.34,1.56,.64,1)}

/* ════════ ESTIMATED DELIVERY DATE WIDGET ════════ */
.mnl-eta{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;background:#F2F3F5;border:1px solid #E5E8EC;border-radius:10px;font-size:13px;font-weight:700;color:#1a1a1a;line-height:1.35} /* V1037 : charte Coach (info date, pas argent — ex-crème/orange V802) */
.mnl-eta__icon{font-size:16px}
.mnl-eta strong{color:#0f172a}

/* ════════ CART TOTAL SAVINGS (cart drawer) ════════ */
.mnl-cd__savings{margin:8px 0;padding:10px 14px;background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid rgba(251,191,36,.4);border-radius:10px;font-size:12px;font-weight:800;color:#92400e;display:flex;align-items:center;gap:8px}
.mnl-cd__savings-icon{font-size:16px}

/* ════════ AUTO-RESIZE TEXTAREA ════════ */
textarea[data-mnl-autosize]{overflow:hidden;resize:none;min-height:80px;transition:height .15s ease}

/* ════════ FORM DRAFT INDICATOR ════════ */
.mnl-form-draft{display:none;margin-top:6px;font-size:11px;color:#1a1a1a;font-weight:600;align-items:center;gap:6px}
.mnl-form-draft.is-active{display:inline-flex}
.mnl-form-draft__dot{width:6px;height:6px;border-radius:50%;background:#22c55e;animation:mnl-stock-dot-pulse 2s ease-in-out infinite}

/* ════════ CONFIRM DIALOG (replaces window.confirm) ════════ */
.mnl-confirm-overlay{position:fixed;inset:0;background:rgba(15,23,42,.6);backdrop-filter:blur(8px);z-index:99996;display:none;align-items:center;justify-content:center;padding:20px;animation:mnl-zoom-fade .25s ease}
.mnl-confirm-overlay.is-open{display:flex}
.mnl-confirm-box{background:#fff;border-radius:20px;max-width:420px;width:100%;padding:32px 28px;text-align:center;box-shadow:0 32px 80px rgba(0,0,0,.3);animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-confirm-box__icon{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#fef3c7,#fde68a);color:#b45309;display:flex;align-items:center;justify-content:center;font-size:32px;margin:0 auto 16px}
.mnl-confirm-box--danger .mnl-confirm-box__icon{background:linear-gradient(135deg,#fee2e2,#fecaca);color:#dc2626}
.mnl-confirm-box--info .mnl-confirm-box__icon{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#2563eb}
.mnl-confirm-box__title{font-size:20px;font-weight:900;color:#0f172a;margin:0 0 8px;letter-spacing:-.02em}
.mnl-confirm-box__msg{font-size:14px;color:#1a1a1a;line-height:1.55;margin:0 0 24px}
.mnl-confirm-box__actions{display:flex;gap:10px;justify-content:center}
.mnl-confirm-box__btn{flex:1;padding:14px 20px;border:none;border-radius:100px;font-family:inherit;font-size:14px;font-weight:800;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;letter-spacing:-.005em}
.mnl-confirm-box__btn--cancel{background:#f1f5f9;color:#1a1a1a}
.mnl-confirm-box__btn--cancel:hover{background:#e2e8f0;color:#0f172a}
.mnl-confirm-box__btn--confirm{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;box-shadow:0 8px 20px rgba(232,78,27,.35)}
.mnl-confirm-box__btn--confirm:hover{transform:translateY(-1px);box-shadow:0 12px 28px rgba(232,78,27,.45)}
.mnl-confirm-box--danger .mnl-confirm-box__btn--confirm{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 8px 20px rgba(239,68,68,.35)}
/* Vague 198 : input/textarea pour mnlPrompt + bouton solo pour mnlAlert */
.mnl-confirm-box__input{display:block;width:100%;padding:12px 14px;margin:0 0 18px;border:1.5px solid #e2e8f0;border-radius:12px;font-family:inherit;font-size:14px;color:#0f172a;background:#f8fafc;outline:none;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;box-sizing:border-box}
.mnl-confirm-box__input:focus{border-color:#E84E1B;background:#fff;box-shadow:0 0 0 3px rgba(232,78,27,.12)}
.mnl-confirm-box__input[readonly]{background:#f1f5f9;color:#1a1a1a;cursor:text;user-select:all;-webkit-user-select:all}
.mnl-confirm-box__input--textarea{resize:vertical;min-height:80px;font-family:'DM Sans',-apple-system,sans-serif;line-height:1.45}
.mnl-confirm-box__btn--solo{flex:0 1 auto;min-width:140px}
.mnl-confirm-box--success .mnl-confirm-box__icon{background:linear-gradient(135deg,#dcfce7,#bbf7d0);color:#15803d}
.mnl-confirm-box--success .mnl-confirm-box__btn--confirm{background:linear-gradient(135deg,#22c55e,#16a34a);box-shadow:0 8px 20px rgba(34,197,94,.35)}

/* ════════ KEYBOARD SHORTCUTS HELP PANEL (? key) ════════ */
.mnl-kbd-help{position:fixed;inset:0;background:rgba(15,23,42,.7);backdrop-filter:blur(10px);z-index:99997;display:none;align-items:center;justify-content:center;padding:20px;animation:mnl-zoom-fade .2s ease}
.mnl-kbd-help.is-open{display:flex}
.mnl-kbd-help__box{background:#fff;border-radius:20px;max-width:520px;width:100%;max-height:80vh;overflow:auto;padding:28px;box-shadow:0 32px 80px rgba(0,0,0,.3);animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1);position:relative}
.mnl-kbd-help__title{font-size:18px;font-weight:900;color:#0f172a;margin:0 0 6px;display:flex;align-items:center;gap:10px}
.mnl-kbd-help__sub{font-size:13px;color:#1a1a1a;margin:0 0 24px;font-weight:500}
.mnl-kbd-help__close{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;background:#f1f5f9;border:none;color:#1a1a1a;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.mnl-kbd-help__close:hover{background:#e2e8f0;color:#0f172a}
.mnl-kbd-help__group{margin-bottom:18px}
.mnl-kbd-help__group:last-child{margin-bottom:0}
.mnl-kbd-help__group-title{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#1a1a1a;margin:0 0 10px}
.mnl-kbd-help__list{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.mnl-kbd-help__row{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#f8fafc;border-radius:10px;font-size:13px;font-weight:600;color:#0f172a}
.mnl-kbd-help__row-label{flex:1}
.mnl-kbd-help__row-keys{display:inline-flex;gap:4px;align-items:center}
.mnl-kbd-help kbd{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;background:#fff;border:1px solid rgba(15,23,42,.15);border-bottom-width:2px;border-radius:6px;font-family:'DM Sans',monospace;font-size:11px;font-weight:800;color:#0f172a;box-shadow:0 1px 2px rgba(15,23,42,.06)}

/* ════════ NETWORK STATUS INDICATOR (offline banner) ════════ */
.mnl-net-status{position:fixed;top:0;left:0;right:0;background:#dc2626;color:#fff;text-align:center;font-size:13px;font-weight:700;padding:8px 16px;z-index:99998;transform:translateY(-100%);transition:transform .35s cubic-bezier(.34,1.56,.64,1);font-family:inherit;display:flex;align-items:center;justify-content:center;gap:8px}
.mnl-net-status.is-visible{transform:translateY(0)}
.mnl-net-status--slow{background:#f59e0b}
.mnl-net-status__icon{font-size:14px}

/* ════════ IMAGE FALLBACK (img cassée → placeholder) ════════ */
.mnl-img-broken{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);display:flex;align-items:center;justify-content:center;color:#1a1a1a;font-size:24px;border-radius:8px;min-height:60px;position:relative}
.mnl-img-broken::after{content:"";font-size:32px}

/* ════════ TAB SWITCHING ANIMATION (smooth) ════════ */
[data-mnl-tab-content]{animation:mnl-tab-fade-in .35s cubic-bezier(.16,.84,.44,1)}
@keyframes mnl-tab-fade-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ════════ RECENTLY VIEWED STRIP (sur fiche produit) ════════ */
.mnl-rv-strip{margin:48px 0;padding:24px;background:linear-gradient(135deg,#fafafa,#f8fafc);border-radius:16px;border:1px solid rgba(15,23,42,.06)}
.mnl-rv-strip__title{font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#1a1a1a;margin:0 0 16px;display:flex;align-items:center;gap:8px}
.mnl-rv-strip__list{display:flex;gap:12px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;padding-bottom:8px}
.mnl-rv-strip__list::-webkit-scrollbar{height:6px}
.mnl-rv-strip__list::-webkit-scrollbar-thumb{background:rgba(232,78,27,.3);border-radius:3px}
.mnl-rv-strip__item{flex:0 0 140px;display:flex;flex-direction:column;text-decoration:none;color:inherit;background:#fff;border-radius:12px;border:1px solid rgba(15,23,42,.06);padding:10px;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.mnl-rv-strip__item:hover{transform:translateY(-2px);border-color:rgba(232,78,27,.35);box-shadow:0 6px 16px rgba(232,78,27,.15)}
.mnl-rv-strip__item-icon{width:60px;height:60px;border-radius:8px;background:linear-gradient(135deg,#FDEDE6,#ffe4ec);display:flex;align-items:center;justify-content:center;font-size:28px;margin:0 auto 8px}
.mnl-rv-strip__item-name{font-size:11px;font-weight:700;color:#0f172a;text-align:center;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
/* Vague 93 : image produit dans recently-viewed strip (avant : emoji générique partout) */
.mnl-rv-strip__item-img{width:60px;height:60px;border-radius:8px;object-fit:cover;background:#f1f5f9;display:block;margin:0 auto 8px;}
.mnl-rv-strip__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px;}
.mnl-rv-strip__head .mnl-rv-strip__title{margin:0;}
.mnl-rv-strip__clear{background:transparent;border:1px solid rgba(15,23,42,.12);color:#1a1a1a;font-family:inherit;font-size:11px;font-weight:700;padding:6px 12px;border-radius:100px;cursor:pointer;letter-spacing:.04em;text-transform:uppercase;transition:all .2s ease;}
.mnl-rv-strip__clear:hover{border-color:#ef4444;color:#ef4444;}
/* Vague 93 : image produit dans recently-viewed PANEL (popup floating) */
.mnl-rv-panel__item-img{width:34px;height:34px;border-radius:8px;object-fit:cover;background:#f1f5f9;flex-shrink:0;display:block;}
.mnl-rv-panel__clear{display:block;width:100%;margin-top:10px;padding:8px 12px;background:transparent;border:1px solid rgba(15,23,42,.12);color:#1a1a1a;font-family:inherit;font-size:11px;font-weight:700;border-radius:8px;cursor:pointer;text-align:center;transition:all .2s ease;}
.mnl-rv-panel__clear:hover{border-color:#ef4444;color:#ef4444;background:rgba(239,68,68,.04);}

/* ════════ TAB TITLE FLASH (cart count change quand tab inactif) ════════ */
/* Géré JS — pas de CSS */

/* ════════ STICKY SUB-NAV PRODUCT PAGE (jump to sections) ════════ */
/* Vague 149 BUG FIX : subnav doit être collée au bord supérieur du navigateur (top:0) et passer AU-DESSUS du header sticky.
   Avant : top:60px → flottait à 60px sous le bord ; z-index:90 < header 100 → header pouvait masquer. Maintenant : top:0, z-index:120. */
.mnl-subnav{position:sticky;top:0;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(15,23,42,.08);z-index:120;padding:8px 0;margin-bottom:24px;transform:translateY(-100%);opacity:0;transition:transform .35s cubic-bezier(.34,1.56,.64,1),opacity .25s ease;pointer-events:none;box-shadow:0 6px 20px -8px rgba(15,23,42,.18)}
.mnl-subnav.is-visible{transform:translateY(0);opacity:1;pointer-events:auto}
.mnl-subnav__inner{max-width:1200px;margin:0 auto;padding:0 clamp(16px,4vw,32px);display:flex;align-items:center;gap:14px}
.mnl-subnav__list{display:flex;gap:4px;flex:1;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;list-style:none;padding:0;margin:0}
.mnl-subnav__list::-webkit-scrollbar{display:none}
.mnl-subnav__link{padding:8px 14px;font-size:13px;font-weight:700;color:#1a1a1a;text-decoration:none;border-radius:100px;white-space:nowrap;transition:all .2s ease;font-family:inherit}
.mnl-subnav__link:hover{color:#101418;background:rgba(16,20,24,.06)}/* V1037 : charte Coach */
.mnl-subnav__link.is-active{color:#fff;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */box-shadow:0 4px 12px rgba(232,78,27,.3)}
/* V547 : l'anneau focus global (*:focus-visible) impose border-radius:4px → écrasait la pill en rectangle arrondi au focus.
   On garde la forme pill + un anneau rose cohérent avec la marque (au lieu du bleu #F97316 qui jurait sur le sommaire). */
.mnl-subnav__link:focus-visible,.mnl-subnav__cta:focus-visible{border-radius:100px !important;outline-color:#E84E1B !important;outline-offset:3px !important;}
.mnl-subnav__cta{padding:8px 18px;background:linear-gradient(135deg,#0f172a,#1e293b);color:#fff;text-decoration:none;border-radius:100px;font-size:12px;font-weight:800;letter-spacing:.02em;flex-shrink:0;transition:transform .2s ease;font-family:inherit;border:none;cursor:pointer}
.mnl-subnav__cta:hover{transform:translateY(-1px)}
@media (max-width:720px){.mnl-subnav{top:0;padding:6px 0}.mnl-subnav__link{padding:6px 12px;font-size:12px}.mnl-subnav__cta{padding:6px 14px;font-size:11px}}

/* ════════ VARIANT SWATCHES (color/size standardisés) ════════ */
.mnl-swatches{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.mnl-swatches--color .mnl-swatch{width:40px;height:40px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1.5px rgba(15,23,42,.12),0 4px 10px rgba(0,0,0,.08);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;-webkit-appearance:none;appearance:none;font-family:inherit;position:relative;overflow:hidden}
.mnl-swatches--color .mnl-swatch:hover{transform:scale(1.08)}
.mnl-swatches--color .mnl-swatch.is-active{box-shadow:0 0 0 2px #E84E1B,0 4px 10px rgba(232,78,27,.3);transform:scale(1.05)}
.mnl-swatches--size .mnl-swatch{min-width:48px;height:40px;padding:0 12px;background:#fff;border:1.5px solid rgba(15,23,42,.12);border-radius:8px;font-size:13px;font-weight:800;color:#0f172a;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;font-family:inherit}
.mnl-swatches--size .mnl-swatch:hover{border-color:#E84E1B;color:#C93F12}
.mnl-swatches--size .mnl-swatch.is-active{background:#0f172a;color:#fff;border-color:#0f172a}
.mnl-swatch.is-unavailable{opacity:.4;cursor:not-allowed;position:relative}
.mnl-swatch.is-unavailable::after{content:"";position:absolute;left:10%;right:10%;top:50%;height:2px;background:currentColor;transform:rotate(-25deg)}
.mnl-swatch.is-low-stock::before{content:"";position:absolute;top:-2px;right:-2px;width:8px;height:8px;border-radius:50%;background:#fbbf24;border:2px solid #fff}

/* ════════ STAR RATING INPUT INTERACTIF (review submit) ════════ */
.mnl-stars-input{display:inline-flex;direction:rtl;gap:4px;justify-content:flex-end}
.mnl-stars-input input{position:absolute;opacity:0;pointer-events:none}
.mnl-stars-input label{font-size:32px;color:#e2e8f0;cursor:pointer;transition:color .15s ease,transform .15s ease;line-height:1}
.mnl-stars-input label:hover,.mnl-stars-input label:hover ~ label{color:#fbbf24}
.mnl-stars-input input:checked ~ label{color:#fbbf24}
.mnl-stars-input label:hover{transform:scale(1.15)}
.mnl-stars-input input:focus-visible ~ label{outline:2px dashed #E84E1B;outline-offset:4px;border-radius:4px}

/* ════════ MAGNIFIER GLASS PRODUCT IMAGE (desktop) ════════ */
.mnl-magnify{position:relative;display:inline-block;cursor:zoom-in;overflow:hidden}
.mnl-magnify__lens{position:absolute;width:160px;height:160px;border:2px solid rgba(255,255,255,.9);border-radius:50%;box-shadow:0 8px 28px rgba(0,0,0,.25),inset 0 0 0 1px rgba(15,23,42,.08);background-repeat:no-repeat;background-color:#fff;pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:5}
.mnl-magnify.is-active .mnl-magnify__lens{opacity:1}
@media (max-width:720px) or (pointer:coarse){.mnl-magnify{cursor:default}.mnl-magnify__lens{display:none}}

/* ════════ SAVE FOR LATER (cart drawer item) ════════ */
.mnl-cd__sfl{display:inline-flex;align-items:center;gap:5px;background:none;border:none;color:#1a1a1a;font-size:11px;font-weight:700;cursor:pointer;padding:4px 8px;border-radius:6px;transition:color .2s ease,background .2s ease;font-family:inherit}
.mnl-cd__sfl:hover{color:#101418;background:rgba(16,20,24,.06)}/* V1037 : charte Coach */
.mnl-cd__sfl-section{margin-top:14px;padding-top:14px;border-top:1px dashed rgba(15,23,42,.08)}
.mnl-cd__sfl-title{font-size:11px;font-weight:800;color:#1a1a1a;letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px}

/* ════════ NOTIFICATION CENTER (in-app messages) ════════ */
.mnl-notif-center{position:fixed;top:80px;right:20px;width:360px;max-width:calc(100vw - 40px);max-height:75vh;background:#fff;border-radius:16px;box-shadow:0 24px 60px rgba(15,23,42,.18);border:1px solid rgba(15,23,42,.08);z-index:9300;opacity:0;visibility:hidden;transform:translateY(-12px) scale(.96);transform-origin:top right;transition:all .3s cubic-bezier(.34,1.56,.64,1);overflow:hidden;display:flex;flex-direction:column}
.mnl-notif-center.is-open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.mnl-notif-center__header{padding:16px 18px;border-bottom:1px solid rgba(15,23,42,.06);display:flex;justify-content:space-between;align-items:center}
.mnl-notif-center__title{font-size:14px;font-weight:900;color:#0f172a;margin:0;display:flex;align-items:center;gap:8px}
.mnl-notif-center__count{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;font-size:10px;font-weight:900;padding:2px 8px;border-radius:100px;min-width:18px;text-align:center}
.mnl-notif-center__clear{background:none;border:none;color:#1a1a1a;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit}
.mnl-notif-center__clear:hover{color:#ef4444}
.mnl-notif-center__list{overflow-y:auto;flex:1;padding:8px}
.mnl-notif-center__empty{text-align:center;padding:40px 20px;color:#1a1a1a;font-size:13px;font-weight:600}
.mnl-notif{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:#f8fafc;border-radius:10px;margin-bottom:6px;border-left:3px solid #E84E1B}
.mnl-notif--success{border-left-color:#22c55e}
.mnl-notif--error{border-left-color:#ef4444}
.mnl-notif--info{border-left-color:#F97316}
.mnl-notif__icon{font-size:16px;flex-shrink:0}
.mnl-notif__body{flex:1;min-width:0}
.mnl-notif__title{font-size:12px;font-weight:800;color:#0f172a;margin:0;line-height:1.3}
.mnl-notif__sub{font-size:11px;color:#1a1a1a;margin:2px 0 0;line-height:1.4}
.mnl-notif__time{font-size:10px;color:#1a1a1a;font-weight:600;margin-top:3px}
@media (max-width:720px){.mnl-notif-center{top:70px;right:12px;left:12px;max-height:70vh}}

/* ════════ AUTO-PROMO BANNER (URL ?discount=X auto-apply confirmation) ════════ */
.mnl-promo-banner{position:fixed;top:0;left:0;right:0;background:linear-gradient(135deg,#16a34a,#22c55e);color:#fff;text-align:center;padding:10px 20px;font-size:13px;font-weight:800;z-index:99997;transform:translateY(-100%);transition:transform .35s cubic-bezier(.34,1.56,.64,1);font-family:inherit;display:flex;align-items:center;justify-content:center;gap:10px;letter-spacing:-.005em}
.mnl-promo-banner.is-visible{transform:translateY(0)}
.mnl-promo-banner code{background:rgba(0,0,0,.2);padding:3px 10px;border-radius:6px;font-family:monospace;font-weight:900;font-size:13px;letter-spacing:.1em}

/* ════════ WAITLIST OUT-OF-STOCK ════════ */
.mnl-waitlist{margin:14px 0;padding:18px;background:linear-gradient(135deg,#fef3c7,#fde68a);border:1.5px solid rgba(251,191,36,.4);border-radius:14px;text-align:center}
.mnl-waitlist__icon{font-size:32px;line-height:1;margin-bottom:8px;display:block}
.mnl-waitlist__title{font-size:15px;font-weight:900;color:#92400e;margin:0 0 6px;letter-spacing:-.01em}
.mnl-waitlist__sub{font-size:12px;color:#a16207;margin:0 0 14px;line-height:1.45;font-weight:600}
.mnl-waitlist__form{display:flex;gap:6px}
.mnl-waitlist__form input{flex:1;padding:10px 14px;border:1px solid rgba(146,64,14,.2);border-radius:100px;font-size:13px;font-family:inherit;background:#fff;color:#0f172a}
.mnl-waitlist__form input:focus{outline:none;border-color:#a16207;box-shadow:0 0 0 3px rgba(161,98,7,.15)}
.mnl-waitlist__form button{padding:10px 18px;background:#92400e;color:#fff;border:none;border-radius:100px;font-size:12px;font-weight:800;cursor:pointer;font-family:inherit;letter-spacing:.02em;text-transform:uppercase}
.mnl-waitlist__form button:hover{background:#78350f}
.mnl-waitlist__success{display:none;color:#15803d;font-size:13px;font-weight:800;padding:12px;background:rgba(34,197,94,.1);border-radius:10px}
.mnl-waitlist.is-success .mnl-waitlist__form{display:none}
.mnl-waitlist.is-success .mnl-waitlist__success{display:block}

/* ════════ STICKY VARIANT SELECTOR mobile ════════ */
@media (max-width:720px){
.mnl-sticky-variants{position:fixed;left:0;right:0;background:rgba(255,255,255,.97);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid rgba(15,23,42,.08);box-shadow:0 -4px 16px rgba(15,23,42,.08);padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));z-index:8800;transform:translateY(100%);transition:transform .35s cubic-bezier(.34,1.56,.64,1);bottom:0}
.mnl-sticky-variants.is-visible{transform:translateY(0)}
.mnl-sticky-variants__row{display:flex;gap:8px;align-items:center}
.mnl-sticky-variants__label{font-size:10px;font-weight:800;color:#1a1a1a;letter-spacing:.08em;text-transform:uppercase;flex-shrink:0}
.mnl-sticky-variants__chips{display:flex;gap:4px;flex:1;overflow-x:auto;-webkit-overflow-scrolling:touch}
.mnl-sticky-variants__chip{padding:6px 10px;background:#f1f5f9;border:1px solid transparent;color:#1a1a1a;font-size:11px;font-weight:700;border-radius:100px;cursor:pointer;font-family:inherit;white-space:nowrap}
.mnl-sticky-variants__chip.is-active{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;border-color:transparent}
}

/* ════════ €/dose CALCULATOR DISPLAY ════════ */
.mnl-price-per-dose{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:rgba(34,197,94,.08);border:1px solid rgba(34,197,94,.25);border-radius:100px;font-size:12px;font-weight:700;color:#15803d;margin-top:6px}
.mnl-price-per-dose__icon{font-size:14px}
.mnl-price-per-dose strong{color:#0f172a;font-weight:900}
.mnl-price-per-dose__compare{color:#1a1a1a;font-weight:600;text-decoration:line-through;font-size:11px;margin-left:4px}

/* ════════ COMPARE WIDGET (up to 3) ════════ */
.mnl-compare-bar{position:fixed;bottom:0;left:0;right:0;background:#0f172a;color:#fff;padding:14px 20px;z-index:8900;transform:translateY(100%);transition:transform .35s cubic-bezier(.34,1.56,.64,1);box-shadow:0 -8px 24px rgba(0,0,0,.25);font-family:inherit}
.mnl-compare-bar.is-visible{transform:translateY(0)}
.mnl-compare-bar__inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.mnl-compare-bar__title{font-size:13px;font-weight:800;flex-shrink:0}
.mnl-compare-bar__items{display:flex;gap:8px;flex:1;flex-wrap:wrap}
.mnl-compare-bar__item{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:rgba(255,255,255,.08);border-radius:100px;font-size:12px;font-weight:700}
.mnl-compare-bar__item-remove{background:none;border:none;color:rgba(255,255,255,.6);cursor:pointer;font-size:14px;padding:0;font-family:inherit}
.mnl-compare-bar__item-remove:hover{color:#ef4444}
.mnl-compare-bar__cta{padding:10px 20px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;text-decoration:none;border-radius:100px;font-size:12px;font-weight:800;border:none;cursor:pointer;font-family:inherit}
.mnl-compare-bar__cta:disabled{opacity:.5;cursor:not-allowed}
@media (max-width:720px){.mnl-compare-bar{bottom:calc(70px + env(safe-area-inset-bottom));padding:10px 12px}.mnl-compare-bar__title{display:none}}

/* ════════ ANIMATED SVG ICONS (helpers réutilisables) ════════ */
.mnl-icon{display:inline-block;width:1em;height:1em;vertical-align:-.125em;fill:currentColor}
.mnl-icon--lg{width:1.5em;height:1.5em}
.mnl-icon--xl{width:2em;height:2em}

/* ════════ ORDER TRACKING VISUAL STEPPER ════════ */
.mnl-tracker{display:flex;align-items:flex-start;gap:0;margin:24px 0;padding:24px 16px;background:linear-gradient(135deg,#FDEDE6,#ffe4ec);border-radius:16px;border:1px solid rgba(232,78,27,.2);position:relative;overflow:hidden}
.mnl-tracker__step{flex:1;text-align:center;position:relative;z-index:1}
.mnl-tracker__step::before{content:"";position:absolute;top:18px;left:calc(-50% + 18px);right:calc(50% + 18px);height:2px;background:#e2e8f0;z-index:-1}
.mnl-tracker__step:first-child::before{display:none}
.mnl-tracker__step.is-done::before,.mnl-tracker__step.is-current::before{background:linear-gradient(90deg,#22c55e,#16a34a)}
.mnl-tracker__icon{width:36px;height:36px;border-radius:50%;background:#fff;border:2px solid #e2e8f0;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:900;color:#cbd5e1;margin:0 auto 8px;transition:all .35s cubic-bezier(.34,1.56,.64,1);position:relative}
.mnl-tracker__step.is-done .mnl-tracker__icon{background:linear-gradient(135deg,#22c55e,#16a34a);border-color:#22c55e;color:#fff}
.mnl-tracker__step.is-current .mnl-tracker__icon{background:#C2410C;border-color:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;box-shadow:0 0 0 6px rgba(232,78,27,.18);animation:mnl-tracker-pulse 2s ease-in-out infinite}
@keyframes mnl-tracker-pulse{0%,100%{box-shadow:0 0 0 6px rgba(232,78,27,.18)}50%{box-shadow:0 0 0 10px rgba(232,78,27,.08)}}
.mnl-tracker__label{font-size:11px;font-weight:800;color:#1a1a1a;letter-spacing:.04em;line-height:1.3;margin:0 0 2px;text-transform:uppercase}
.mnl-tracker__step.is-done .mnl-tracker__label,.mnl-tracker__step.is-current .mnl-tracker__label{color:#0f172a}
.mnl-tracker__time{font-size:10px;color:#1a1a1a;font-weight:600}
@media (max-width:580px){.mnl-tracker{padding:16px 8px}.mnl-tracker__icon{width:30px;height:30px;font-size:12px}.mnl-tracker__label{font-size:10px}.mnl-tracker__time{display:none}}

/* ════════ GEO WELCOME BANNER ════════ */
.mnl-geo-banner{position:fixed;bottom:90px;left:16px;right:16px;max-width:380px;margin:0 auto;background:#fff;border:1px solid rgba(15,23,42,.1);border-radius:14px;padding:14px 18px 14px 14px;box-shadow:0 16px 40px rgba(0,0,0,.15);z-index:8200;transform:translateY(20px);opacity:0;visibility:hidden;transition:all .35s cubic-bezier(.34,1.56,.64,1);display:flex;align-items:center;gap:12px;font-family:inherit}
.mnl-geo-banner.is-visible{transform:translateY(0);opacity:1;visibility:visible}
.mnl-geo-banner__flag{font-size:32px;line-height:1;flex-shrink:0}
.mnl-geo-banner__body{flex:1;min-width:0}
.mnl-geo-banner__title{font-size:12px;font-weight:800;color:#0f172a;margin:0;line-height:1.3}
.mnl-geo-banner__sub{font-size:11px;color:#1a1a1a;margin:2px 0 0;line-height:1.4;font-weight:500}
.mnl-geo-banner__close{background:none;border:none;color:#1a1a1a;cursor:pointer;font-size:18px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:6px;flex-shrink:0;font-family:inherit}
.mnl-geo-banner__close:hover{color:#0f172a;background:#f1f5f9}
@media (min-width:768px){.mnl-geo-banner{bottom:24px;left:24px;right:auto;width:340px}}

/* ════════ COOKIE PREFERENCES MODAL (granular consent) ════════ */
.mnl-cookie-prefs{position:fixed;inset:0;background:rgba(15,23,42,.7);backdrop-filter:blur(8px);z-index:99998;display:none;align-items:center;justify-content:center;padding:20px;animation:mnl-zoom-fade .25s ease}/* V953 (audit) : 99996→99998 pour rester AU-DESSUS du bandeau cookies parent (remonté à 99996) */
.mnl-cookie-prefs.is-open{display:flex}
.mnl-cookie-prefs__box{background:#fff;border-radius:18px;max-width:520px;width:100%;max-height:88vh;overflow:auto;padding:28px;box-shadow:0 32px 80px rgba(0,0,0,.3);animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-cookie-prefs__title{font-size:18px;font-weight:900;color:#0f172a;margin:0 0 8px;letter-spacing:-.01em}
.mnl-cookie-prefs__sub{font-size:13px;color:#1a1a1a;margin:0 0 22px;line-height:1.55}
.mnl-cookie-prefs__cat{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid #f1f5f9}
.mnl-cookie-prefs__cat:last-child{border:none}
.mnl-cookie-prefs__cat-info{flex:1;min-width:0}
.mnl-cookie-prefs__cat-name{font-size:14px;font-weight:800;color:#0f172a;margin:0 0 4px;display:flex;align-items:center;gap:6px}
.mnl-cookie-prefs__cat-name small{font-size:10px;font-weight:600;color:#1a1a1a;background:#f1f5f9;padding:2px 6px;border-radius:6px;letter-spacing:.04em;text-transform:uppercase}
.mnl-cookie-prefs__cat-desc{font-size:12px;color:#1a1a1a;margin:0;line-height:1.5}
/* V463 fix : Android Chrome/Pixel forçait le rendu natif rond du <button> au lieu du toggle pill custom.
   `-webkit-appearance:none` + `appearance:none` suppriment le styling natif (équivalent input[type=checkbox]).
   `-webkit-tap-highlight-color:transparent` retire le rectangle bleu Android au tap. Box-sizing border-box
   garantit que width 44px reste 44px même avec border. */
.mnl-cookie-prefs__toggle{flex:0 0 auto;width:44px;min-width:44px;max-width:44px;height:24px;min-height:24px;max-height:24px;background:#e2e8f0;border-radius:100px;border:none;cursor:pointer;position:relative;transition:background .25s ease;font-size:0;line-height:0;font-family:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;box-sizing:border-box;padding:0;margin:0;outline:none;display:inline-block;vertical-align:middle;align-self:center;overflow:visible}
.mnl-cookie-prefs__toggle::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .25s cubic-bezier(.34,1.56,.64,1);box-shadow:0 1px 3px rgba(0,0,0,.2);box-sizing:border-box}
.mnl-cookie-prefs__toggle.is-on{background:linear-gradient(135deg,#22c55e,#16a34a)}
.mnl-cookie-prefs__toggle.is-on::after{transform:translateX(20px)}
.mnl-cookie-prefs__toggle:disabled{opacity:.5;cursor:not-allowed}
.mnl-cookie-prefs__toggle:focus-visible{outline:2px solid #E84E1B;outline-offset:2px}
.mnl-cookie-prefs__actions{display:flex;gap:10px;margin-top:24px;flex-wrap:wrap}
.mnl-cookie-prefs__btn{flex:1;min-width:120px;padding:12px 18px;border:none;border-radius:100px;font-family:inherit;font-size:13px;font-weight:800;cursor:pointer;transition:all .2s ease}
.mnl-cookie-prefs__btn--save{background:linear-gradient(135deg,#0f172a,#1e293b);color:#fff}
.mnl-cookie-prefs__btn--save:hover{transform:translateY(-1px)}
.mnl-cookie-prefs__btn--accept-all{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;box-shadow:0 8px 18px rgba(232,78,27,.3)}
.mnl-cookie-prefs__btn--reject-all{background:#f1f5f9;color:#1a1a1a}

/* ════════ IMAGE BEFORE/AFTER SLIDER ════════ */
.mnl-compare-slider{position:relative;width:100%;max-width:600px;aspect-ratio:1;overflow:hidden;border-radius:16px;cursor:ew-resize;user-select:none;background:#000;margin:20px auto;box-shadow:0 16px 40px rgba(0,0,0,.15)}
.mnl-compare-slider img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.mnl-compare-slider__after{clip-path:inset(0 0 0 50%)}
.mnl-compare-slider__handle{position:absolute;top:0;bottom:0;left:50%;width:3px;background:#fff;transform:translateX(-50%);box-shadow:0 0 0 1px rgba(0,0,0,.2),0 4px 12px rgba(0,0,0,.3);pointer-events:none}
.mnl-compare-slider__handle::before{content:"⇆";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:900;color:#0f172a;box-shadow:0 4px 14px rgba(0,0,0,.25)}
.mnl-compare-slider__label{position:absolute;top:14px;background:rgba(15,23,42,.85);color:#fff;font-size:11px;font-weight:800;letter-spacing:.08em;padding:6px 12px;border-radius:100px;text-transform:uppercase;backdrop-filter:blur(4px)}
.mnl-compare-slider__label--before{left:14px}
.mnl-compare-slider__label--after{right:14px}

/* ════════ NUTRITION FACTS COLLAPSIBLE ════════ */
.mnl-nutri{background:#fff;border:2px solid #0f172a;border-radius:14px;font-family:inherit;font-size:13px;color:#0f172a;max-width:380px}
.mnl-nutri__head{padding:14px 16px;border-bottom:8px solid #0f172a;cursor:pointer;display:flex;justify-content:space-between;align-items:center;background:none;border-top:none;border-left:none;border-right:none;width:100%;font-family:inherit;text-align:left}
.mnl-nutri__title{font-size:18px;font-weight:900;letter-spacing:-.02em;margin:0;text-transform:uppercase}
.mnl-nutri__toggle{font-size:18px;font-weight:900;color:#0f172a;transition:transform .3s ease}
.mnl-nutri.is-open .mnl-nutri__toggle{transform:rotate(180deg)}
.mnl-nutri__body{max-height:0;overflow:hidden;transition:max-height .4s cubic-bezier(.16,.84,.44,1);padding:0 16px}
.mnl-nutri.is-open .mnl-nutri__body{max-height:1200px;padding:14px 16px}
.mnl-nutri__row{display:flex;justify-content:space-between;align-items:baseline;padding:8px 0;border-bottom:1px solid #e2e8f0}
.mnl-nutri__row:last-child{border:none}
.mnl-nutri__row--bold{font-weight:800;font-size:14px;border-bottom-width:4px;border-bottom-color:#0f172a}
.mnl-nutri__row--indent{padding-left:14px;font-size:12px;color:#1a1a1a}
.mnl-nutri__pct{color:#1a1a1a;font-weight:600;font-size:11px}
.mnl-nutri__servings{font-size:11px;color:#1a1a1a;font-weight:700;margin:6px 0 12px}

/* ════════ WORKOUT TIMER WIDGET (rest between sets) ════════ */
.mnl-timer{position:fixed;bottom:90px;right:16px;width:200px;background:linear-gradient(135deg,#0f172a,#1e293b);color:#fff;border-radius:14px;padding:14px;box-shadow:0 16px 40px rgba(0,0,0,.3);z-index:8300;display:none;font-family:inherit;border:1px solid rgba(232,78,27,.3)}
.mnl-timer.is-active{display:block;animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-timer__title{font-size:11px;font-weight:800;color:rgba(255,255,255,.7);letter-spacing:.08em;text-transform:uppercase;margin:0 0 6px}
.mnl-timer__display{font-size:36px;font-weight:900;letter-spacing:-.03em;margin:0;font-variant-numeric:tabular-nums;text-align:center;background:#E84E1B;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.mnl-timer__display.is-warning{color:#ef4444;-webkit-text-fill-color:initial;background:none;animation:mnl-stock-pulse 1s ease-in-out infinite}
.mnl-timer__btns{display:flex;gap:6px;margin-top:8px}
.mnl-timer__btn{flex:1;padding:8px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);color:#fff;font-family:inherit;font-size:11px;font-weight:700;border-radius:6px;cursor:pointer;transition:background .2s ease}
.mnl-timer__btn:hover{background:rgba(255,255,255,.2)}
.mnl-timer__close{position:absolute;top:6px;right:6px;background:none;border:none;color:rgba(255,255,255,.5);font-size:18px;cursor:pointer;width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:inherit}
.mnl-timer__close:hover{color:#fff;background:rgba(255,255,255,.1)}
@media (max-width:720px){.mnl-timer{bottom:160px;right:14px;width:180px}}

/* ════════ SMART RECOMMENDATIONS CAROUSEL ════════ */
.mnl-recos{margin:48px 0}
.mnl-recos__head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:18px;padding:0 4px}
.mnl-recos__title{font-size:22px;font-weight:900;letter-spacing:-.02em;color:#0f172a;margin:0}
.mnl-recos__nav{display:inline-flex;gap:6px}
.mnl-recos__nav-btn{width:36px;height:36px;border-radius:50%;background:#fff;border:1.5px solid rgba(15,23,42,.1);color:#0f172a;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:all .2s ease}
.mnl-recos__nav-btn:hover{border-color:#101418;color:#101418}/* V1037 : charte Coach */
.mnl-recos__nav-btn:disabled{opacity:.3;cursor:not-allowed}
.mnl-recos__track{display:flex;gap:14px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x mandatory;padding-bottom:8px}
.mnl-recos__track::-webkit-scrollbar{display:none}
.mnl-recos__card{flex:0 0 240px;scroll-snap-align:start;background:#fff;border:1px solid rgba(15,23,42,.06);border-radius:14px;overflow:hidden;text-decoration:none;color:inherit;transition:transform .25s ease,box-shadow .25s ease}
.mnl-recos__card:hover{transform:translateY(-3px);box-shadow:0 14px 32px rgba(15,23,42,.1)}
.mnl-recos__card-img{width:100%;aspect-ratio:1;object-fit:cover;background:#f8fafc}
.mnl-recos__card-body{padding:12px 14px}
.mnl-recos__card-name{font-size:13px;font-weight:800;color:#0f172a;margin:0 0 4px;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.mnl-recos__card-price{font-size:14px;font-weight:900;color:#C93F12}
.mnl-recos__card-was{font-size:11px;color:#1a1a1a;text-decoration:line-through;margin-left:4px;font-weight:600}
@media (max-width:580px){.mnl-recos__card{flex-basis:160px}.mnl-recos__title{font-size:18px}}

/* ════════ DRAG-TO-REORDER (wishlist) ════════ */
.mnl-draggable{transition:transform .2s ease,box-shadow .2s ease}
.mnl-draggable.is-dragging{opacity:.5;transform:scale(.98)}
.mnl-draggable.is-drop-target{border-color:#E84E1B !important;box-shadow:0 0 0 2px rgba(232,78,27,.3) !important}
.mnl-drag-handle{cursor:grab;color:#cbd5e1;padding:4px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;transition:color .15s ease,background .15s ease}
.mnl-drag-handle:hover{color:#1a1a1a;background:#f1f5f9}
.mnl-drag-handle:active{cursor:grabbing}

/* ════════ FLY-TO-CART ANIMATION ════════ */
/* V1266 : `will-change:transform,opacity` RETIRÉ (1/11 du recensement, voir
   mnl-motion.css §8.2). L'élément est animé en transform/opacity : le moteur le
   promeut de lui-même PENDANT l'animation. `will-change` n'ajoutait qu'une couche
   maintenue avant et après — le motif exact de l'incident V1213. */
.mnl-fly{position:fixed;width:60px;height:60px;border-radius:8px;object-fit:cover;background:#fff;border:2px solid #E84E1B;box-shadow:0 8px 24px rgba(232,78,27,.4);z-index:99990;pointer-events:none}

/* ════════ BRANDED CHECKBOX & RADIO ════════ */
.mnl-checkbox,.mnl-radio{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-family:inherit;font-size:14px;color:#0f172a;font-weight:600;line-height:1.3;-webkit-tap-highlight-color:transparent}
.mnl-checkbox input,.mnl-radio input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.mnl-checkbox__box,.mnl-radio__box{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:2px solid #cbd5e1;background:#fff;transition:all .2s cubic-bezier(.34,1.56,.64,1);flex-shrink:0;position:relative}
.mnl-checkbox__box{border-radius:6px}
.mnl-radio__box{border-radius:50%}
.mnl-checkbox:hover .mnl-checkbox__box,.mnl-radio:hover .mnl-radio__box{border-color:#E84E1B}
.mnl-checkbox input:checked + .mnl-checkbox__box,.mnl-radio input:checked + .mnl-radio__box{background:#E84E1B;border-color:transparent;box-shadow:0 4px 10px rgba(232,78,27,.3)}
.mnl-checkbox__box::after{content:"";width:5px;height:10px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg) scale(0);transform-origin:center;transition:transform .2s cubic-bezier(.34,1.56,.64,1);margin-top:-2px}
.mnl-checkbox input:checked + .mnl-checkbox__box::after{transform:rotate(45deg) scale(1)}
.mnl-radio__box::after{content:"";width:9px;height:9px;border-radius:50%;background:#fff;transform:scale(0);transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.mnl-radio input:checked + .mnl-radio__box::after{transform:scale(1)}
.mnl-checkbox input:focus-visible + .mnl-checkbox__box,.mnl-radio input:focus-visible + .mnl-radio__box{outline:3px solid rgba(232,78,27,.4);outline-offset:2px}
.mnl-checkbox input:disabled ~ *,.mnl-radio input:disabled ~ *{opacity:.5;cursor:not-allowed}

/* Switch toggle (alt à checkbox) */
.mnl-switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-family:inherit;font-size:14px;color:#0f172a;font-weight:600}
.mnl-switch input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.mnl-switch__track{position:relative;width:44px;height:24px;background:#e2e8f0;border-radius:100px;transition:background .25s ease;flex-shrink:0}
.mnl-switch__track::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .25s cubic-bezier(.34,1.56,.64,1)}
.mnl-switch input:checked + .mnl-switch__track{background:linear-gradient(135deg,#22c55e,#16a34a)}
.mnl-switch input:checked + .mnl-switch__track::after{transform:translateX(20px)}
.mnl-switch input:focus-visible + .mnl-switch__track{outline:3px solid rgba(34,197,94,.4);outline-offset:2px}

/* ════════ ONBOARDING TOUR ════════ */
.mnl-tour-overlay{position:fixed;inset:0;background:rgba(15,23,42,.7);backdrop-filter:blur(2px);z-index:99980;display:none;animation:mnl-zoom-fade .3s ease}
.mnl-tour-overlay.is-active{display:block}
.mnl-tour-spotlight{position:absolute;border-radius:12px;box-shadow:0 0 0 9999px rgba(15,23,42,.7),0 0 0 4px rgba(232,78,27,.6);transition:all .4s cubic-bezier(.34,1.56,.64,1);pointer-events:none}
.mnl-tour-card{position:absolute;background:#fff;border-radius:14px;padding:20px;max-width:320px;box-shadow:0 16px 40px rgba(0,0,0,.3);z-index:99981;font-family:inherit;animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-tour-card__step{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#1a1a1a;margin:0 0 4px}
.mnl-tour-card__title{font-size:16px;font-weight:900;color:#0f172a;margin:0 0 8px;letter-spacing:-.01em}
.mnl-tour-card__msg{font-size:13px;color:#1a1a1a;margin:0 0 16px;line-height:1.5}
.mnl-tour-card__actions{display:flex;justify-content:space-between;align-items:center;gap:10px}
.mnl-tour-card__skip{background:none;border:none;color:#1a1a1a;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;padding:6px 8px}
.mnl-tour-card__skip:hover{color:#0f172a}
.mnl-tour-card__nav{display:flex;gap:6px}
.mnl-tour-card__btn{padding:8px 16px;border:none;border-radius:100px;font-family:inherit;font-size:12px;font-weight:800;cursor:pointer;transition:all .2s ease}
.mnl-tour-card__btn--prev{background:#f1f5f9;color:#1a1a1a}
.mnl-tour-card__btn--next{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;box-shadow:0 4px 12px rgba(232,78,27,.3)}
.mnl-tour-card__btn--next:hover{transform:translateY(-1px)}
.mnl-tour-card__progress{display:flex;gap:4px;margin-top:14px}
.mnl-tour-card__dot{width:6px;height:6px;border-radius:50%;background:#e2e8f0;transition:all .25s ease}
.mnl-tour-card__dot.is-active{background:#E84E1B;width:18px}

/* ════════ STICKY DISMISSIBLE PROMO BAR ════════ */
.mnl-promo-strip{position:relative;background:linear-gradient(135deg,#0f172a,#1e1b4b);color:#fff;padding:10px 44px 10px 16px;text-align:center;font-size:13px;font-weight:700;font-family:inherit;letter-spacing:-.005em;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;line-height:1.35}
.mnl-promo-strip[hidden]{display:none}
.mnl-promo-strip code{background:rgba(251,146,60,.22);color:#fb923c;padding:2px 8px;border-radius:6px;font-family:monospace;font-weight:900;font-size:12px;letter-spacing:.1em}
.mnl-promo-strip a{color:#fb923c;font-weight:800;text-decoration:underline;text-underline-offset:2px}
.mnl-promo-strip__close{position:absolute;top:50%;right:12px;transform:translateY(-50%);width:28px;height:28px;background:rgba(255,255,255,.1);border:none;color:#fff;font-size:16px;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:background .2s ease}
.mnl-promo-strip__close:hover{background:rgba(255,255,255,.2)}
@media (max-width:580px){.mnl-promo-strip{font-size:12px;padding:8px 38px 8px 12px}}

/* ════════ FILTER CHIPS DISMISSIBLE ════════ */
.mnl-filter-chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0;align-items:center}
.mnl-filter-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 6px 6px 12px;background:rgba(232,78,27,.08);border:1px solid rgba(232,78,27,.3);color:#C93F12;font-size:12px;font-weight:700;border-radius:100px;font-family:inherit}
.mnl-filter-chip__label{line-height:1}
.mnl-filter-chip__remove{background:none;border:none;color:#C93F12;cursor:pointer;font-size:16px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-family:inherit;line-height:1;padding:0}
.mnl-filter-chip__remove:hover{background:rgba(131,24,67,.15)}
.mnl-filter-chips__clear{padding:6px 10px;background:none;border:none;color:#1a1a1a;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;text-decoration:underline;text-underline-offset:2px}
.mnl-filter-chips__clear:hover{color:#ef4444}

/* ════════ RANGE SLIDER (price filter) ════════ */
.mnl-range{padding:8px 0}
.mnl-range__display{display:flex;justify-content:space-between;font-size:13px;font-weight:800;color:#0f172a;margin-bottom:12px}
.mnl-range__display strong{color:#C93F12}
.mnl-range__track-wrap{position:relative;height:32px;display:flex;align-items:center}
.mnl-range__track{position:absolute;left:0;right:0;height:4px;background:#e2e8f0;border-radius:2px}
.mnl-range__fill{position:absolute;height:4px;background:#E84E1B;/* V1037 : aplat V974 */border-radius:2px}
.mnl-range input[type="range"]{position:absolute;left:0;right:0;width:100%;-webkit-appearance:none;appearance:none;background:none;outline:none;pointer-events:none;height:32px}
.mnl-range input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:#fff;border:2px solid #E84E1B;box-shadow:0 4px 10px rgba(232,78,27,.3);cursor:pointer;pointer-events:auto;transition:transform .15s ease}
.mnl-range input[type="range"]::-webkit-slider-thumb:hover{transform:scale(1.15)}
.mnl-range input[type="range"]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#fff;border:2px solid #E84E1B;box-shadow:0 4px 10px rgba(232,78,27,.3);cursor:pointer;pointer-events:auto;transition:transform .15s ease}

/* ════════ INFINITE SCROLL TRIGGER ════════ */
.mnl-infinite-trigger{display:block;height:60px;text-align:center;font-size:12px;color:#1a1a1a;font-weight:600;padding:20px;letter-spacing:.04em}
.mnl-infinite-trigger::before{content:"";display:inline-block;width:18px;height:18px;border:2px solid #E84E1B;border-right-color:transparent;border-radius:50%;animation:mnl-spinner-rot .7s linear infinite;vertical-align:-3px;margin-right:8px}
.mnl-infinite-trigger.is-done{display:none}

/* ════════ TOUR SHADER pour spotlight cible */
[data-mnl-tour-target].mnl-tour-active{position:relative;z-index:99979}

/* ════════ CUSTOM SELECT DROPDOWN ════════ */
.mnl-select{position:relative;display:inline-block;min-width:180px;font-family:inherit}
.mnl-select__btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;background:#fff;border:1.5px solid #e2e8f0;border-radius:10px;cursor:pointer;font-size:14px;font-weight:700;color:#0f172a;font-family:inherit;text-align:left;transition:border-color .2s ease,box-shadow .2s ease}
.mnl-select__btn:hover{border-color:#cbd5e1}
.mnl-select__btn:focus-visible{outline:none;border-color:#E84E1B;box-shadow:0 0 0 4px rgba(232,78,27,.12)}
.mnl-select.is-open .mnl-select__btn{border-color:#E84E1B;box-shadow:0 0 0 4px rgba(232,78,27,.12)}
.mnl-select__caret{font-size:10px;color:#1a1a1a;transition:transform .25s ease}
.mnl-select.is-open .mnl-select__caret{transform:rotate(180deg)}
.mnl-select__panel{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:10px;box-shadow:0 16px 40px rgba(15,23,42,.12);z-index:9000;display:none;max-height:280px;overflow:auto;padding:6px}
.mnl-select.is-open .mnl-select__panel{display:block;animation:mnl-zoom-pop .25s cubic-bezier(.34,1.56,.64,1)}
.mnl-select__option{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;cursor:pointer;border-radius:8px;font-size:13px;font-weight:600;color:#0f172a;transition:background .15s ease}
.mnl-select__option:hover,.mnl-select__option.is-focused{background:#F2F3F5;color:#101418}/* V1037 : charte Coach */
.mnl-select__option.is-selected{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff}
.mnl-select__option.is-selected::after{content:"✓";font-weight:900;font-size:13px}
.mnl-select__search{padding:8px 12px;border-bottom:1px solid #f1f5f9;margin-bottom:4px}
.mnl-select__search input{width:100%;padding:6px 10px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;font-family:inherit;outline:none}
.mnl-select__search input:focus{border-color:#E84E1B}
.mnl-select__empty{padding:12px;text-align:center;color:#1a1a1a;font-size:12px;font-weight:600}

/* ════════ PWA INSTALL PROMPT ════════ */
.mnl-pwa-install{position:fixed;bottom:90px;left:16px;right:16px;max-width:380px;margin:0 auto;background:#0f172a;color:#fff;border-radius:16px;padding:18px;box-shadow:0 16px 40px rgba(0,0,0,.25);z-index:8200;transform:translateY(20px);opacity:0;visibility:hidden;transition:all .35s cubic-bezier(.34,1.56,.64,1);display:flex;align-items:center;gap:14px;font-family:inherit;border:1px solid rgba(232,78,27,.3)}
.mnl-pwa-install.is-visible{transform:translateY(0);opacity:1;visibility:visible}
.mnl-pwa-install__icon{width:48px;height:48px;border-radius:12px;background:#E84E1B;display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0;color:#fff}
.mnl-pwa-install__body{flex:1;min-width:0}
.mnl-pwa-install__title{font-size:13px;font-weight:900;margin:0 0 2px;letter-spacing:-.005em}
.mnl-pwa-install__sub{font-size:11px;color:rgba(255,255,255,.7);margin:0;line-height:1.4}
.mnl-pwa-install__actions{display:flex;gap:6px;flex-shrink:0}
.mnl-pwa-install__btn{padding:8px 12px;border-radius:8px;font-family:inherit;font-size:11px;font-weight:800;cursor:pointer;border:none;letter-spacing:.02em;text-transform:uppercase}
.mnl-pwa-install__btn--accept{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff}
.mnl-pwa-install__btn--later{background:rgba(255,255,255,.1);color:rgba(255,255,255,.8)}
@media (min-width:768px){.mnl-pwa-install{bottom:24px;left:24px;right:auto;width:380px}}

/* ════════ BRANDED SCROLLBARS (neutres encre) ════════ */
*{scrollbar-width:thin;scrollbar-color:rgba(16,20,24,.28) transparent}/* V1037 : charte Coach */
*::-webkit-scrollbar{width:8px;height:8px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:rgba(16,20,24,.25);border-radius:100px;border:2px solid transparent;background-clip:content-box;transition:background-color .2s ease}/* V1037 : charte Coach */
*::-webkit-scrollbar-thumb:hover{background:rgba(16,20,24,.45);background-clip:content-box}/* V1037 : charte Coach */
*::-webkit-scrollbar-corner{background:transparent}

/* ════════ VIDEO PLAYER WITH CUSTOM CONTROLS ════════ */
.mnl-video{position:relative;background:#0f172a;border-radius:16px;overflow:hidden;cursor:pointer;font-family:inherit}
.mnl-video__player{display:block;width:100%;height:auto;background:#0f172a}
.mnl-video__poster{position:absolute;inset:0;background-size:cover;background-position:center;background-repeat:no-repeat;display:flex;align-items:center;justify-content:center;transition:opacity .35s ease}
.mnl-video.is-playing .mnl-video__poster{opacity:0;pointer-events:none}
.mnl-video__play{width:80px;height:80px;border-radius:50%;background:rgba(255,255,255,.95);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:24px;color:#0f172a;box-shadow:0 12px 36px rgba(0,0,0,.3);transition:transform .2s ease;font-family:inherit;padding-left:6px}
.mnl-video__play:hover{transform:scale(1.08)}
.mnl-video__play::before{content:"";display:inline-block;width:0;height:0;border-style:solid;border-width:14px 0 14px 22px;border-color:transparent transparent transparent #0f172a}
.mnl-video__controls{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(to top,rgba(0,0,0,.7) 0%,transparent 100%);display:flex;align-items:center;gap:10px;opacity:0;transition:opacity .2s ease;color:#fff;font-size:12px}
.mnl-video.is-playing:hover .mnl-video__controls,.mnl-video.is-playing.is-paused .mnl-video__controls,.mnl-video__controls:focus-within{opacity:1}
.mnl-video__btn{background:none;border:none;color:#fff;cursor:pointer;font-size:16px;padding:4px 8px;border-radius:6px;font-family:inherit;transition:background .15s ease;display:flex;align-items:center;justify-content:center;line-height:1}
.mnl-video__btn:hover{background:rgba(255,255,255,.15)}
.mnl-video__progress{flex:1;height:4px;background:rgba(255,255,255,.25);border-radius:2px;cursor:pointer;position:relative;overflow:hidden}
.mnl-video__progress-fill{height:100%;width:0;background:#E84E1B;border-radius:2px;transition:width .1s linear}/* V985c : aplat (ex-dégradé) */
.mnl-video__time{font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;color:rgba(255,255,255,.85);min-width:80px;text-align:right}

/* ════════ SMART PAGINATION ════════ */
.mnl-pagination{display:flex;justify-content:center;align-items:center;gap:6px;margin:32px 0;flex-wrap:wrap;font-family:inherit}
.mnl-pagination__btn,.mnl-pagination__page{min-width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;background:#fff;border:1.5px solid rgba(15,23,42,.1);border-radius:10px;color:#0f172a;font-size:13px;font-weight:700;text-decoration:none;cursor:pointer;font-family:inherit;transition:all .2s ease;padding:0 10px}
.mnl-pagination__btn:hover:not(:disabled),.mnl-pagination__page:hover{border-color:#101418;color:#101418}/* V1037 : charte Coach */
.mnl-pagination__btn:disabled{opacity:.4;cursor:not-allowed}
.mnl-pagination__page.is-current{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;border-color:transparent;box-shadow:0 4px 12px rgba(232,78,27,.3)}
.mnl-pagination__dots{padding:0 6px;color:#1a1a1a;font-weight:600}
.mnl-pagination__jump{display:inline-flex;align-items:center;gap:6px;margin-left:14px;font-size:12px;color:#1a1a1a;font-weight:600}
.mnl-pagination__jump input{width:50px;padding:6px 8px;border:1px solid rgba(15,23,42,.1);border-radius:6px;font-size:13px;font-weight:700;text-align:center;font-family:inherit}
.mnl-pagination__jump input:focus{outline:none;border-color:#E84E1B;box-shadow:0 0 0 3px rgba(232,78,27,.15)}
@media (max-width:580px){.mnl-pagination__jump{display:none}.mnl-pagination__btn,.mnl-pagination__page{min-width:44px;height:44px;font-size:13px}}

/* ════════ STICKY HEADER SMART COLLAPSE ════════ */
.mnl-hd-collapse-target{will-change:transform;transition:transform .3s cubic-bezier(.16,.84,.44,1)}
.mnl-hd-collapse-target.is-collapsed{transform:translateY(-100%)}
.mnl-hd-collapse-target.is-pinned{transform:translateY(0) !important}

/* ════════ LIVE SHIPPING ZONE CALCULATOR ════════ */
.mnl-shipping-calc{padding:14px 16px;background:linear-gradient(135deg,#FDEDE6,#ffe4ec);border:1px solid rgba(232,78,27,.25);border-radius:12px;font-family:inherit;font-size:13px;display:flex;align-items:center;gap:12px}
.mnl-shipping-calc__icon{font-size:24px;line-height:1}
.mnl-shipping-calc__body{flex:1;min-width:0}
.mnl-shipping-calc__title{font-size:13px;font-weight:800;color:#C93F12;margin:0;line-height:1.3}
.mnl-shipping-calc__detail{font-size:11px;color:#7c2d12;margin:2px 0 0;font-weight:600}
.mnl-shipping-calc__free{color:#15803d}
.mnl-shipping-calc__progress{height:4px;background:rgba(232,78,27,.15);border-radius:2px;margin-top:6px;overflow:hidden}
.mnl-shipping-calc__progress-fill{height:100%;background:#E84E1B;border-radius:2px;transition:width .35s cubic-bezier(.16,.84,.44,1)}/* V985c : aplat (ex-dégradé) */

/* ════════ SCROLL RESTORATION + SMART BACK ════════ */
/* CSS-only — JS sauve scrollY au unload */

/* ════════ FLOATING LABELS INPUTS ════════ */
.mnl-float{position:relative;font-family:inherit;margin-bottom:18px}
.mnl-float input,.mnl-float textarea,.mnl-float select{width:100%;padding:18px 14px 8px;background:#fff;border:1.5px solid #e2e8f0;border-radius:10px;font-family:inherit;font-size:15px;color:#0f172a;transition:border-color .2s ease,box-shadow .2s ease;-webkit-appearance:none;appearance:none}
.mnl-float input:focus,.mnl-float textarea:focus,.mnl-float select:focus{outline:none;border-color:#E84E1B;box-shadow:0 0 0 4px rgba(232,78,27,.12)}
.mnl-float label{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:14px;color:#1a1a1a;font-weight:600;pointer-events:none;transition:all .2s cubic-bezier(.34,1.56,.64,1);background:#fff;padding:0 4px}
.mnl-float input:focus + label,.mnl-float input:not(:placeholder-shown) + label,
.mnl-float textarea:focus + label,.mnl-float textarea:not(:placeholder-shown) + label,
.mnl-float select:focus + label,.mnl-float select.has-value + label,
.mnl-float input[type="date"] + label,.mnl-float input[type="time"] + label{top:0;font-size:11px;font-weight:800;color:#C93F12;letter-spacing:.04em;text-transform:uppercase;transform:translateY(-50%)}
.mnl-float textarea{min-height:80px;padding-top:24px}
.mnl-float textarea + label{top:18px;transform:none}
.mnl-float textarea:focus + label,.mnl-float textarea:not(:placeholder-shown) + label{top:0;transform:translateY(-50%)}
.mnl-float--has-icon input{padding-right:44px}
.mnl-float__icon{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:#1a1a1a;pointer-events:none;font-size:16px}

/* ════════ AUTO-FILL DETECTION (chrome auto-fill background fix) ════════ */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active{
  -webkit-box-shadow:0 0 0 30px #fff inset !important;
  -webkit-text-fill-color:#0f172a !important;
  caret-color:#0f172a;
  transition:background-color 5000s ease-in-out 0s;
}
.mnl-float input:-webkit-autofill + label{top:0 !important;font-size:11px !important;font-weight:800 !important;color:#C93F12 !important;letter-spacing:.04em !important;text-transform:uppercase !important;transform:translateY(-50%) !important}

/* ════════ TOOLTIP AUTO-POSITIONING (force avec data-mnl-tooltip-pos) ════════ */
[data-mnl-tooltip][data-mnl-tooltip-pos="bottom"]::before{bottom:auto;top:calc(100% + 10px)}
[data-mnl-tooltip][data-mnl-tooltip-pos="bottom"]::after{bottom:auto;top:calc(100% + 4px);border-top-color:transparent;border-bottom-color:#0f172a}
[data-mnl-tooltip][data-mnl-tooltip-pos="left"]::before{bottom:auto;top:50%;left:auto;right:calc(100% + 10px);transform:translateY(-50%) translateX(4px)}
[data-mnl-tooltip][data-mnl-tooltip-pos="left"]::after{bottom:auto;top:50%;left:auto;right:calc(100% + 4px);transform:translateY(-50%) translateX(4px);border-top-color:transparent;border-left-color:#0f172a}
[data-mnl-tooltip][data-mnl-tooltip-pos="left"]:hover::before,[data-mnl-tooltip][data-mnl-tooltip-pos="left"]:hover::after{transform:translateY(-50%) translateX(0)}
[data-mnl-tooltip][data-mnl-tooltip-pos="right"]::before{bottom:auto;top:50%;left:calc(100% + 10px);transform:translateY(-50%) translateX(-4px)}
[data-mnl-tooltip][data-mnl-tooltip-pos="right"]::after{bottom:auto;top:50%;left:calc(100% + 4px);transform:translateY(-50%) translateX(-4px);border-top-color:transparent;border-right-color:#0f172a}
[data-mnl-tooltip][data-mnl-tooltip-pos="right"]:hover::before,[data-mnl-tooltip][data-mnl-tooltip-pos="right"]:hover::after{transform:translateY(-50%) translateX(0)}
/* Anti-overflow horizontal : aligne le tooltip à gauche/droite si trop près des bords du viewport */
[data-mnl-tooltip][data-mnl-tooltip-align="left"]::before{left:0;transform:translateX(0) translateY(4px)}
[data-mnl-tooltip][data-mnl-tooltip-align="left"]:hover::before{transform:translateX(0) translateY(0)}
[data-mnl-tooltip][data-mnl-tooltip-align="right"]::before{left:auto;right:0;transform:translateX(0) translateY(4px)}
[data-mnl-tooltip][data-mnl-tooltip-align="right"]:hover::before{transform:translateX(0) translateY(0)}

/* ════════ BACK-TO-TOP FAB ════════ */
/* V1141 : position de base pilotable via variables CSS (réglées depuis le customizer → Footer MNL →
   « Bouton retour en haut »). Les règles contextuelles plus bas (bulle Coach, sticky-CTA, mobile) gardent
   la priorité via leur spécificité pour éviter tout chevauchement. */
.mnl-back-to-top{position:fixed;bottom:calc(var(--btt-bottom,20px) + var(--btt-lift,0px));right:var(--btt-right,20px);left:var(--btt-left,auto);margin-inline:var(--btt-mx,0);width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#0f172a,#1e293b);color:#fff;border:none;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 12px 28px rgba(15,23,42,.3);z-index:9500;opacity:0;transform:translateY(20px) scale(.8);transition:opacity .25s ease,transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease;pointer-events:none;font-family:inherit}
.mnl-back-to-top.is-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}
.mnl-back-to-top:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 18px 36px rgba(15,23,42,.4);background:#101418}/* V1037 : charte Coach */
.mnl-back-to-top:active{transform:translateY(-1px) scale(1.02)}
.mnl-back-to-top:focus-visible{outline:3px solid #fbbf24;outline-offset:3px}
/* V1142 : la bulle Coach IA réduite (60px, DÉPLAÇABLE dans n'importe quel coin) pouvait recouvrir la flèche
   « retour en haut ». L'ancienne parade « passer la flèche à gauche » échouait si la bulle était elle aussi à
   gauche. Nouvelle approche robuste : on REMONTE la flèche de 80px (au-dessus de la bulle) quel que soit le côté,
   en la laissant sur son coin configuré (customizer). Le lift s'additionne à la position de base via --btt-lift. */
body:has(#mnl-ai-bubble) .mnl-back-to-top { --btt-lift: 80px; }
@media (max-width:580px){
  .mnl-back-to-top{--btt-bottom:max(16px,env(safe-area-inset-bottom));--btt-right:16px;width:42px;height:42px}
  /* Vague 150 : si sticky-cta visible, back-to-top remonte au-dessus de la bar */
  body:has(.mnl-sticky-cta.is-visible) .mnl-back-to-top{bottom:calc(76px + env(safe-area-inset-bottom));}
}
/* V985c : Pages formule (mnl-fbuy) — la barre ATC sticky (z 9990, ~66px+safe-area, visible <920px via .is-on)
   enterrait le back-to-top (z 9500) → on le remonte au-dessus, même pattern que .mnl-sticky-cta.
   Scopé <920px (plage réelle de la barre) : ≥920px la barre est display:none et .is-on posé par le JS ne doit pas décaler le FAB. */
@media (max-width:919px){
  body:has(.mnl-fbuy__sticky.is-on) .mnl-back-to-top{bottom:calc(76px + env(safe-area-inset-bottom,0px))}
}
@media (prefers-reduced-motion:reduce){.mnl-back-to-top{transition:opacity .15s ease}.mnl-back-to-top:hover{transform:none}}
@media print{.mnl-back-to-top{display:none}}

/* ════════ PRINT SCOPED (data-mnl-print="selector") ════════ */
/* Quand body a .mnl-print-scoped, on cache tout sauf le mnl-print-target et ses ancêtres */
@media print {
  body.mnl-print-scoped > *:not(.mnl-print-target):not(:has(.mnl-print-target)) { display: none !important; }
  body.mnl-print-scoped .mnl-print-target { box-shadow: none !important; padding: 0 !important; margin: 0 !important; }
}

/* ════════ Vague 84 : Print stylesheet GLOBAL ════════
   Use case principal : user qui imprime sa formule perso pour partager avec son coach,
   ou une recette/plan workout. Avant : page imprimait avec gradients sombres + sticky bars
   → encre gaspillée + lisibilité 0.
   Après : fond blanc, texte noir, tout sticky/floating viré, urls en clair sous les liens. */
@media print {
  /* Fond blanc + texte noir partout pour économie d'encre + lisibilité */
  *, *::before, *::after {
    background: transparent !important;
    color: #000 !important;
    text-shadow: none !important;
    box-shadow: none !important;
  }
  body { background: #fff !important; padding: 0 !important; margin: 0 !important; font-size: 11pt; line-height: 1.4; }

  /* Hide tout ce qui n'est pas du contenu utile : sticky bars, drawers, modals, ads, animations */
  header, footer, nav, aside,
  .mnl-cd, .mnl-cart-drawer, .mnl-search-overlay, .mnl-so,
  .mnl-bnav, .mnl-back-to-top, .mnl-sticky-atc, .mnl-pp3-sticky,
  .mnl-toast, .mnl-toast-stack, .mnl-rv-widget, .mnl-rv-panel,
  .mnl-skip-links, .mnl-cookie-banner, .mnl-newsletter-popup,
  [data-mnl-feedback], [data-mnl-checkout-progress], [data-mnl-tip-rotator],
  [class*="__btn"][href*="checkout"], [class*="__cta"], button:not([type="submit"]),
  iframe, video, audio,
  .mnl-error-banner, .mnl-kbd-seq-indicator, .mnl-confetti,
  .shopify-payment-button, [class*="--floating"] {
    display: none !important;
  }

  /* Forcer break sensible (pas couper en plein milieu d'un titre/card) */
  h1, h2, h3 { page-break-after: avoid; break-after: avoid; }
  img, svg, table, .mnl-card, .mnl-prod__card, .mnl-coll__card,
  blockquote, pre, .mnl-faq__item { page-break-inside: avoid; break-inside: avoid; }

  /* URLs visibles après les liens (utile sur papier) — sauf liens internes ancres */
  a[href]:not([href^="#"]):not([href^="javascript:"]):after {
    content: " (" attr(href) ")";
    font-size: 9pt;
    color: #555 !important;
    word-break: break-all;
  }

  /* Liens et headings ne doivent pas être colorés en accent (gaspille encre couleur imprimante) */
  a, h1, h2, h3, h4, h5, h6 { color: #000 !important; text-decoration: none !important; }
  a[href]:not([href^="#"]) { text-decoration: underline !important; }

  /* Marges de page propres */
  @page { margin: 1.5cm; }

  /* Image : max 100% width, jamais débord */
  img { max-width: 100% !important; height: auto !important; }
}

/* ════════ KEYBOARD SEQUENCES INDICATOR ════════ */
.mnl-kbd-seq-indicator{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);background:rgba(15,23,42,.92);color:#fff;padding:10px 16px;border-radius:10px;font-family:'DM Sans',monospace;font-size:13px;font-weight:800;letter-spacing:.1em;box-shadow:0 8px 24px rgba(0,0,0,.3);z-index:99500;display:none;animation:mnl-kbd-seq-in .15s ease;border:1px solid rgba(232,78,27,.3)}
.mnl-kbd-seq-indicator.is-active{display:block}
.mnl-kbd-seq-indicator kbd{display:inline-block;padding:2px 8px;background:rgba(255,255,255,.15);border-radius:4px;margin:0 2px;color:#fbbf24}
@keyframes mnl-kbd-seq-in{from{opacity:0;transform:translateX(-50%) translateY(8px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}

/* ════════ ERROR BOUNDARY UI (catch JS errors) ════════ */
.mnl-error-banner{position:fixed;bottom:90px;right:16px;left:16px;max-width:380px;margin:0 auto;background:#fef2f2;border:1px solid #fca5a5;border-left:3px solid #dc2626;color:#7f1d1d;padding:14px 16px;border-radius:10px;font-family:inherit;font-size:13px;z-index:99500;display:flex;align-items:flex-start;gap:10px;box-shadow:0 8px 24px rgba(220,38,38,.15);animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-error-banner__icon{font-size:18px;flex-shrink:0}
.mnl-error-banner__body{flex:1;min-width:0}
.mnl-error-banner__title{font-weight:800;margin:0 0 2px;font-size:13px}
.mnl-error-banner__msg{font-size:12px;color:#991b1b;margin:0;line-height:1.4}
.mnl-error-banner__close{background:none;border:none;color:#991b1b;cursor:pointer;font-size:18px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-family:inherit}
@media (min-width:768px){.mnl-error-banner{right:24px;left:auto;width:380px}}

/* ════════ LIVE TIME RELATIVE (data-mnl-time-relative="ISO") ════════ */
[data-mnl-time-relative]{display:inline-block}

/* ════════ DARK MODE TOGGLE + CSS VARS ════════ */
/* V974 — Direction 03 « Fiche Labo » (choix fondateur 2026-07-07) : tokens globaux basculés (gris technique #F2F3F5, encre #101418, filets #DDE0E4). */
:root{--mnl-bg:#fff;--mnl-bg-soft:#F2F3F5;--mnl-text:#101418;--mnl-text-muted:#1a1a1a;--mnl-border:#DDE0E4;--mnl-card:#fff;--mnl-shadow:rgba(16,20,24,.08)}
/* Mode sombre neutralisé (demande user) : plus de remap des variables en dark → le site reste toujours clair, même si data-theme="dark" est posé par l'OS. */
.mnl-theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);color:#fbbf24;cursor:pointer;font-size:18px;transition:all .25s ease;font-family:inherit;position:relative;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;padding:0;outline:none;box-sizing:border-box}
.mnl-theme-toggle:hover{transform:scale(1.08);background:rgba(255,255,255,.18)}
.mnl-theme-toggle:focus-visible{outline:2px solid #fbbf24;outline-offset:2px}
.mnl-theme-toggle__icon{transition:transform .35s cubic-bezier(.34,1.56,.64,1),opacity .15s ease;display:inline-block}
.mnl-theme-toggle.is-rotating .mnl-theme-toggle__icon{transform:rotate(180deg)}

/* ════════ READ MORE / LESS ════════ */
.mnl-readmore{position:relative;overflow:hidden;transition:max-height .4s cubic-bezier(.16,.84,.44,1);max-height:120px}
.mnl-readmore.is-expanded{max-height:none}
.mnl-readmore:not(.is-expanded)::after{content:"";position:absolute;bottom:0;left:0;right:0;height:60px;background:linear-gradient(to bottom,transparent 0%,#fff 100%);pointer-events:none}
html[data-theme="dark"] .mnl-readmore:not(.is-expanded)::after{background:linear-gradient(to bottom,transparent 0%,var(--mnl-bg) 100%)}
.mnl-readmore__btn{display:inline-flex;align-items:center;gap:6px;background:none;border:none;color:#C93F12;font-size:13px;font-weight:800;cursor:pointer;font-family:inherit;padding:8px 0;text-decoration:underline;text-underline-offset:3px}
.mnl-readmore__btn:hover{color:#C93F12}
.mnl-readmore__btn::after{content:"↓";transition:transform .25s ease}
.mnl-readmore.is-expanded + .mnl-readmore__btn::after{transform:rotate(180deg)}

/* ════════ FILE UPLOAD DRAG-AND-DROP ════════ */
.mnl-upload{position:relative;border:2px dashed #cbd5e1;border-radius:14px;padding:32px 20px;text-align:center;background:#f8fafc;cursor:pointer;transition:all .25s ease;font-family:inherit}
.mnl-upload:hover,.mnl-upload.is-hover{border-color:#101418;background:#F2F3F5;transform:translateY(-1px)}/* V1037 : charte Coach */
.mnl-upload.is-dragging{border-color:#E84E1B;background:rgba(232,78,27,.1);border-style:solid}
.mnl-upload input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.mnl-upload__icon{font-size:36px;line-height:1;margin-bottom:10px;display:inline-block;color:#1a1a1a}
.mnl-upload.is-dragging .mnl-upload__icon{color:#C93F12;animation:mnl-stock-pulse 1s ease-in-out infinite}
.mnl-upload__title{font-size:14px;font-weight:800;color:#0f172a;margin:0 0 4px;letter-spacing:-.005em}
.mnl-upload__sub{font-size:12px;color:#1a1a1a;margin:0;font-weight:500;line-height:1.45}
.mnl-upload__sub strong{color:#C93F12}
.mnl-upload__previews{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;margin-top:14px}
.mnl-upload__preview{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;background:#fff;border:1px solid rgba(15,23,42,.08);animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-upload__preview img{width:100%;height:100%;object-fit:cover}
.mnl-upload__preview-remove{position:absolute;top:4px;right:4px;width:22px;height:22px;background:rgba(15,23,42,.7);color:#fff;border:none;border-radius:50%;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit}
.mnl-upload__preview-remove:hover{background:#ef4444}

/* ════════ MULTISTEP FORM ════════ */
.mnl-multistep{font-family:inherit}
.mnl-multistep__progress{display:flex;align-items:center;gap:0;margin-bottom:32px;position:relative;padding:0 20px}
.mnl-multistep__progress-step{flex:1;text-align:center;position:relative;z-index:1;cursor:default}
.mnl-multistep__progress-step::before{content:"";position:absolute;top:14px;left:calc(-50% + 14px);right:calc(50% + 14px);height:2px;background:#e2e8f0;z-index:-1}
.mnl-multistep__progress-step:first-child::before{display:none}
.mnl-multistep__progress-step.is-done::before,.mnl-multistep__progress-step.is-current::before{background:linear-gradient(90deg,#22c55e,#16a34a)}
.mnl-multistep__progress-num{width:30px;height:30px;border-radius:50%;background:#fff;border:2px solid #e2e8f0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:900;color:#1a1a1a;margin:0 auto 6px;transition:all .25s cubic-bezier(.34,1.56,.64,1)}
.mnl-multistep__progress-step.is-done .mnl-multistep__progress-num{background:linear-gradient(135deg,#22c55e,#16a34a);border-color:#22c55e;color:#fff}
.mnl-multistep__progress-step.is-current .mnl-multistep__progress-num{background:#C2410C;border-color:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;box-shadow:0 0 0 5px rgba(232,78,27,.18)}
.mnl-multistep__progress-label{font-size:11px;font-weight:700;color:#1a1a1a;letter-spacing:.04em;text-transform:uppercase}
.mnl-multistep__progress-step.is-done .mnl-multistep__progress-label,.mnl-multistep__progress-step.is-current .mnl-multistep__progress-label{color:#0f172a}
.mnl-multistep__step{display:none;animation:mnl-tab-fade-in .35s cubic-bezier(.16,.84,.44,1)}
.mnl-multistep__step.is-active{display:block}
.mnl-multistep__nav{display:flex;justify-content:space-between;gap:10px;margin-top:24px;padding-top:18px;border-top:1px solid #f1f5f9}
.mnl-multistep__nav-btn{padding:12px 24px;border:none;border-radius:100px;font-family:inherit;font-size:13px;font-weight:800;cursor:pointer;transition:all .2s ease;letter-spacing:-.005em}
.mnl-multistep__nav-btn--prev{background:#f1f5f9;color:#1a1a1a}
.mnl-multistep__nav-btn--prev:hover{background:#e2e8f0}
.mnl-multistep__nav-btn--next,.mnl-multistep__nav-btn--submit{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;box-shadow:0 8px 18px rgba(232,78,27,.3);margin-left:auto}
.mnl-multistep__nav-btn--next:hover,.mnl-multistep__nav-btn--submit:hover{transform:translateY(-1px)}
.mnl-multistep__nav-btn:disabled{opacity:.5;cursor:not-allowed}
@media (max-width:580px){.mnl-multistep__progress-label{font-size:10px}.mnl-multistep__progress-num{width:26px;height:26px;font-size:12px}}

/* ════════ ACCORDION GROUP (only one open) ════════ */
.mnl-accordion-group [data-mnl-accordion-item] summary,
.mnl-accordion-group [data-mnl-accordion-item] [data-mnl-accordion-header]{cursor:pointer;list-style:none}
.mnl-accordion-group [data-mnl-accordion-item] summary::-webkit-details-marker{display:none}

/* ════════ IMAGE HOTSPOTS (clickable annotations sur image) ════════ */
.mnl-hotspots{position:relative;display:inline-block;font-family:inherit}
.mnl-hotspot{position:absolute;width:32px;height:32px;border-radius:50%;background:rgba(194,65,12,.95);/* V1170 : orange fonce #C2410C (chiffre blanc 14px dessus) — AA */border:3px solid #fff;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:900;box-shadow:0 4px 12px rgba(232,78,27,.4);transform:translate(-50%,-50%);transition:transform .2s ease;font-family:inherit;animation:mnl-hotspot-pulse 2.5s ease-in-out infinite}
@keyframes mnl-hotspot-pulse{0%,100%{box-shadow:0 4px 12px rgba(232,78,27,.4),0 0 0 0 rgba(232,78,27,.5)}50%{box-shadow:0 4px 12px rgba(232,78,27,.4),0 0 0 12px rgba(232,78,27,0)}}
.mnl-hotspot:hover{transform:translate(-50%,-50%) scale(1.15)}
.mnl-hotspot.is-active{background:#0f172a;animation:none}
.mnl-hotspot__popover{position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%) translateY(-4px);background:#fff;color:#0f172a;padding:12px 14px;border-radius:10px;width:240px;box-shadow:0 12px 28px rgba(0,0,0,.18);opacity:0;visibility:hidden;transition:all .2s ease;font-size:12px;line-height:1.5;font-weight:500;z-index:10;text-align:left;border:1px solid rgba(15,23,42,.08)}
.mnl-hotspot__popover::before{content:"";position:absolute;top:-6px;left:50%;transform:translateX(-50%);width:0;height:0;border:6px solid transparent;border-bottom-color:#fff}
.mnl-hotspot__popover-title{font-size:13px;font-weight:900;color:#C93F12;margin:0 0 4px;letter-spacing:-.005em}
.mnl-hotspot.is-active .mnl-hotspot__popover{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}

/* ════════ CARD FLIP (data-mnl-flip) ════════ */
.mnl-flip{perspective:1000px;cursor:pointer;font-family:inherit}
.mnl-flip__inner{position:relative;width:100%;min-height:200px;transition:transform .8s cubic-bezier(.34,1.56,.64,1);transform-style:preserve-3d}
.mnl-flip.is-flipped .mnl-flip__inner{transform:rotateY(180deg)}
.mnl-flip__face{position:absolute;inset:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:14px;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}
.mnl-flip__face--front{background:#fff;/* V1037 : aplat (ex-dégradé neutre) */border:1px solid rgba(15,23,42,.08);color:#0f172a}
.mnl-flip__face--back{background:#101418;/* V1037 : encre V974 (carte entière ≠ surface d'accent orange) */color:#fff;transform:rotateY(180deg)}
.mnl-flip__hint{position:absolute;top:8px;right:10px;font-size:10px;color:rgba(255,255,255,.6);font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.mnl-flip__face--front .mnl-flip__hint{color:rgba(15,23,42,.4)}

/* ════════ TTS BUTTON (text-to-speech) ════════ */
.mnl-tts-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:#f1f5f9;border:1px solid rgba(15,23,42,.08);color:#0f172a;font-size:12px;font-weight:700;border-radius:100px;cursor:pointer;font-family:inherit;transition:all .2s ease}
.mnl-tts-btn:hover{background:#F2F3F5;color:#101418;border-color:rgba(16,20,24,.3)}/* V1037 : charte Coach */
.mnl-tts-btn.is-speaking{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;border-color:transparent;animation:mnl-stock-pulse 1.5s ease-in-out infinite}

/* ════════ REDIRECT COUNTDOWN ════════ */
.mnl-redirect{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.3);color:#1e40af;border-radius:10px;font-size:13px;font-weight:700;font-family:inherit}
.mnl-redirect__count{font-weight:900;color:#2563eb;min-width:18px;text-align:center;font-variant-numeric:tabular-nums}
.mnl-redirect__cancel{background:none;border:none;color:#1e40af;cursor:pointer;font-family:inherit;font-size:12px;font-weight:700;text-decoration:underline;padding:0;margin-left:6px}

/* ════════ SPEED DIAL FAB (mobile quick actions) ════════ */
.mnl-fab{position:fixed;bottom:90px;right:16px;z-index:8400;font-family:inherit}
@media (max-width:720px){.mnl-fab{bottom:140px}}
.mnl-fab__main{width:56px;height:56px;border-radius:50%;background:#E84E1B;color:#fff;border:none;cursor:pointer;font-size:24px;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(232,78,27,.45);transition:transform .25s cubic-bezier(.34,1.56,.64,1);font-family:inherit;position:relative;z-index:2}
.mnl-fab__main:hover{transform:scale(1.08)}
.mnl-fab__main-icon{transition:transform .35s cubic-bezier(.34,1.56,.64,1);display:inline-block}
.mnl-fab.is-open .mnl-fab__main-icon{transform:rotate(135deg)}
.mnl-fab__items{position:absolute;bottom:64px;right:0;display:flex;flex-direction:column;gap:10px;align-items:flex-end}
.mnl-fab__item{opacity:0;visibility:hidden;transform:translateY(10px) scale(.8);transition:all .25s cubic-bezier(.34,1.56,.64,1);display:inline-flex;align-items:center;gap:8px;text-decoration:none;font-family:inherit}
.mnl-fab.is-open .mnl-fab__item{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.mnl-fab.is-open .mnl-fab__item:nth-child(1){transition-delay:.05s}
.mnl-fab.is-open .mnl-fab__item:nth-child(2){transition-delay:.1s}
.mnl-fab.is-open .mnl-fab__item:nth-child(3){transition-delay:.15s}
.mnl-fab.is-open .mnl-fab__item:nth-child(4){transition-delay:.2s}
.mnl-fab__item-label{background:rgba(15,23,42,.92);color:#fff;padding:6px 12px;border-radius:8px;font-size:12px;font-weight:700;letter-spacing:-.005em;white-space:nowrap;backdrop-filter:blur(4px)}
.mnl-fab__item-icon{width:44px;height:44px;border-radius:50%;background:#fff;color:#0f172a;display:flex;align-items:center;justify-content:center;font-size:18px;box-shadow:0 6px 16px rgba(15,23,42,.18);border:1px solid rgba(15,23,42,.06)}
.mnl-fab__item:hover .mnl-fab__item-icon{transform:scale(1.1);color:#C93F12}

/* ════════ STICKY TABLE HEADER ════════ */
.mnl-sticky-table{overflow:auto;max-height:70vh;position:relative;font-family:inherit;border:1px solid #e2e8f0;border-radius:12px}
.mnl-sticky-table table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.mnl-sticky-table thead th{position:sticky;top:0;background:#0f172a;color:#fff;font-weight:800;letter-spacing:-.005em;padding:12px 14px;text-align:left;z-index:1;font-size:12px}
.mnl-sticky-table tbody td{padding:10px 14px;border-bottom:1px solid #f1f5f9;color:#0f172a}
.mnl-sticky-table tbody tr:hover{background:#F2F3F5}/* V1037 : charte Coach */
.mnl-sticky-table tbody tr:last-child td{border-bottom:none}

/* ════════ DATE PICKER (lightweight, native + styling) ════════ */
.mnl-datepicker{position:relative;font-family:inherit}
.mnl-datepicker input[type="date"]{width:100%;padding:12px 16px;background:#fff;border:1.5px solid #e2e8f0;border-radius:10px;font-family:inherit;font-size:14px;color:#0f172a;transition:border-color .2s ease,box-shadow .2s ease;-webkit-appearance:none;appearance:none}
.mnl-datepicker input[type="date"]:focus{outline:none;border-color:#E84E1B;box-shadow:0 0 0 4px rgba(232,78,27,.12)}
.mnl-datepicker__hint{font-size:11px;color:#1a1a1a;margin-top:4px;font-weight:600}
.mnl-datepicker__hint--available{color:#15803d}
.mnl-datepicker__hint--unavailable{color:#dc2626}

/* ════════ MARQUEE ANNOUNCEMENT BAR ════════ */
.mnl-marquee{overflow:hidden;background:linear-gradient(135deg,#0f172a,#1e1b4b);color:#fff;padding:10px 0;position:relative;font-family:inherit;border-bottom:1px solid rgba(255,255,255,.08)}
.mnl-marquee__track{display:flex;gap:48px;animation:mnl-marquee-scroll 30s linear infinite;white-space:nowrap;padding-left:48px}
.mnl-marquee:hover .mnl-marquee__track{animation-play-state:paused}
.mnl-marquee__item{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;letter-spacing:-.005em}
.mnl-marquee__item-icon{font-size:16px}
.mnl-marquee__item strong{color:#fbbf24}
@keyframes mnl-marquee-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.mnl-marquee__track{animation:none;flex-wrap:wrap;justify-content:center}}

/* ════════ SIDEBAR COLLAPSIBLE (mobile filter) ════════ */
.mnl-sidebar-toggle{display:none;width:100%;padding:14px 18px;background:#0f172a;color:#fff;border:none;border-radius:10px;font-family:inherit;font-size:14px;font-weight:800;cursor:pointer;align-items:center;justify-content:space-between;letter-spacing:-.005em;margin-bottom:14px}
.mnl-sidebar-toggle__caret{transition:transform .25s ease;font-size:12px}
.mnl-sidebar-toggle.is-active .mnl-sidebar-toggle__caret{transform:rotate(180deg)}
@media (max-width:768px){.mnl-sidebar-toggle{display:flex}.mnl-sidebar-collapsible{max-height:0;overflow:hidden;transition:max-height .35s cubic-bezier(.16,.84,.44,1)}.mnl-sidebar-collapsible.is-open{max-height:1200px}}

/* ════════ SEARCH HIGHLIGHT ════════ */
mark.mnl-highlight,.mnl-highlight{background:linear-gradient(180deg,transparent 50%,rgba(251,191,36,.5) 50%);color:inherit;padding:0 1px;font-weight:700;border-radius:2px}

/* ════════ DRAWER SYSTEM générique ════════ */
/* V465 fix mobile : safe-area-inset sur header/footer + close button appearance:none Android Chrome.
   Sans safe-area-inset, le cart drawer/menu drawer mobile pouvait avoir header masqué par notch (iPhone X+)
   ou footer masqué par home-bar iOS / nav bar Android = bouton checkout/close inaccessible. */
.mnl-drawer{position:fixed;inset:0;z-index:99993;pointer-events:none;font-family:inherit}
.mnl-drawer__overlay{position:absolute;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);opacity:0;transition:opacity .3s ease}
.mnl-drawer__panel{position:absolute;top:0;bottom:0;background:#fff;width:90%;max-width:420px;display:flex;flex-direction:column;box-shadow:-12px 0 32px rgba(0,0,0,.18);transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-drawer__panel--right{right:0;transform:translateX(100%)}
.mnl-drawer__panel--left{left:0;transform:translateX(-100%);box-shadow:12px 0 32px rgba(0,0,0,.18)}
.mnl-drawer.is-open{pointer-events:auto}
.mnl-drawer.is-open .mnl-drawer__overlay{opacity:1}
.mnl-drawer.is-open .mnl-drawer__panel{transform:translateX(0)}
.mnl-drawer__header{padding:16px 20px;padding-top:max(16px, env(safe-area-inset-top));border-bottom:1px solid #f1f5f9;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
.mnl-drawer__title{font-size:16px;font-weight:900;color:#0f172a;margin:0;letter-spacing:-.01em}
.mnl-drawer__close{width:36px;height:36px;border-radius:50%;background:#f1f5f9;border:none;color:#1a1a1a;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:all .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;padding:0;outline:none;box-sizing:border-box;flex-shrink:0}
.mnl-drawer__close:hover{background:#e2e8f0;color:#0f172a}
.mnl-drawer__close:focus-visible{outline:2px solid #E84E1B;outline-offset:2px}
.mnl-drawer__body{flex:1;overflow-y:auto;padding:20px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.mnl-drawer__footer{padding:16px 20px;padding-bottom:max(16px, env(safe-area-inset-bottom));border-top:1px solid #f1f5f9;flex-shrink:0}

/* ════════ NAV GUARD CONFIRM (form unsaved) ════════ */
/* Géré 100% JS */

/* ════════ QR CODE MODAL (share product/cart) ════════ */
.mnl-qr{position:fixed;inset:0;background:rgba(15,23,42,.7);backdrop-filter:blur(8px);z-index:99996;display:none;align-items:center;justify-content:center;padding:20px;animation:mnl-zoom-fade .25s ease;font-family:inherit}
.mnl-qr.is-open{display:flex}
.mnl-qr__box{background:#fff;border-radius:18px;max-width:340px;width:100%;padding:28px;text-align:center;box-shadow:0 32px 80px rgba(0,0,0,.3);animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-qr__title{font-size:18px;font-weight:900;color:#0f172a;margin:0 0 6px;letter-spacing:-.01em}
.mnl-qr__sub{font-size:12px;color:#1a1a1a;margin:0 0 20px;font-weight:600}
.mnl-qr__svg{width:200px;height:200px;margin:0 auto 16px;background:#fff;padding:14px;border:1px solid rgba(15,23,42,.08);border-radius:14px;display:block}
.mnl-qr__svg svg{width:100%;height:100%;display:block}
.mnl-qr__url{font-size:11px;color:#1a1a1a;font-family:monospace;word-break:break-all;background:#f8fafc;padding:8px 10px;border-radius:6px;margin:0 0 16px;line-height:1.4}
.mnl-qr__actions{display:flex;gap:8px;justify-content:center}
.mnl-qr__btn{padding:10px 16px;border-radius:100px;font-family:inherit;font-size:12px;font-weight:800;cursor:pointer;border:none;letter-spacing:-.005em}
.mnl-qr__btn--copy{background:#f1f5f9;color:#1a1a1a}
.mnl-qr__btn--close{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff}

/* ════════ ACCESSIBILITY ENHANCED MODE ════════ */
html[data-mnl-a11y="large"]{font-size:18px}
html[data-mnl-a11y="large"] body,html[data-mnl-a11y="large"] *{line-height:1.7 !important}
html[data-mnl-a11y="dyslexic"] body,html[data-mnl-a11y="dyslexic"] body *{font-family:Verdana,Geneva,sans-serif !important;letter-spacing:.04em;line-height:1.65}
html[data-mnl-a11y="contrast"] body{filter:contrast(1.25) saturate(1.15)}
html[data-mnl-a11y-underline="true"] a{text-decoration:underline !important;text-underline-offset:3px}
.mnl-a11y-panel{position:fixed;top:80px;right:16px;width:280px;background:#fff;border:1px solid rgba(15,23,42,.1);border-radius:14px;padding:18px;box-shadow:0 24px 60px rgba(15,23,42,.18);z-index:9100;display:none;font-family:inherit}
.mnl-a11y-panel.is-open{display:block;animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-a11y-panel__title{font-size:14px;font-weight:900;color:#0f172a;margin:0 0 4px;display:flex;align-items:center;gap:8px}
.mnl-a11y-panel__sub{font-size:11px;color:#1a1a1a;margin:0 0 14px;font-weight:600}
.mnl-a11y-panel__row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid #f1f5f9;font-size:13px;color:#0f172a;font-weight:700}
.mnl-a11y-panel__row:last-child{border:none}
.mnl-a11y-panel__reset{display:block;width:100%;padding:8px;background:#f1f5f9;border:none;border-radius:8px;font-family:inherit;font-size:12px;font-weight:700;color:#1a1a1a;cursor:pointer;margin-top:10px}

/* ════════ BLUR-UP IMAGE LOADER (LQIP) ════════ */
img[data-mnl-blurup]{transition:filter .55s ease,opacity .35s ease;filter:blur(20px);opacity:.85}
img[data-mnl-blurup].is-loaded{filter:blur(0);opacity:1}

/* ════════ LOYALTY PROGRESS WIDGET ════════ */
.mnl-loyalty{display:inline-flex;align-items:center;gap:12px;padding:12px 16px;background:linear-gradient(135deg,#0f172a,#1e1b4b);color:#fff;border-radius:12px;font-family:inherit;font-size:13px;border:1px solid rgba(251,191,36,.3)}
.mnl-loyalty__icon{font-size:24px;line-height:1}
.mnl-loyalty__body{flex:1;min-width:0}
.mnl-loyalty__head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px;gap:8px}
.mnl-loyalty__tier{font-size:12px;font-weight:900;background:#E84E1B;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:-.005em}
.mnl-loyalty__pts{font-size:11px;color:rgba(255,255,255,.7);font-weight:700}
.mnl-loyalty__bar{height:6px;background:rgba(255,255,255,.1);border-radius:3px;overflow:hidden}
.mnl-loyalty__bar-fill{height:100%;background:#E84E1B;/* V1037 : aplat V974 */border-radius:3px;transition:width .55s cubic-bezier(.16,.84,.44,1)}
.mnl-loyalty__next{font-size:10px;color:rgba(255,255,255,.55);font-weight:600;margin-top:3px;letter-spacing:-.005em}

/* ════════ LOCALE / CURRENCY SWITCHER ════════ */
.mnl-locale-switch{position:relative;display:inline-block;font-family:inherit}
.mnl-locale-switch__btn{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:transparent;border:1px solid rgba(15,23,42,.1);color:#0f172a;font-size:12px;font-weight:700;border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s ease}
.mnl-locale-switch__btn:hover{border-color:#101418;color:#101418}/* V1037 : charte Coach */
.mnl-locale-switch__flag{font-size:14px;line-height:1}
.mnl-locale-switch__panel{position:absolute;top:calc(100% + 6px);right:0;background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:10px;box-shadow:0 12px 28px rgba(15,23,42,.15);min-width:180px;padding:6px;z-index:9000;display:none}
.mnl-locale-switch.is-open .mnl-locale-switch__panel{display:block;animation:mnl-zoom-pop .25s cubic-bezier(.34,1.56,.64,1)}
.mnl-locale-switch__option{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;color:#0f172a;text-decoration:none;transition:background .15s ease}
.mnl-locale-switch__option:hover{background:#FDEDE6}
.mnl-locale-switch__option.is-active{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff}

/* ════════ COMMAND PALETTE (Cmd+Shift+P like) ════════ */
.mnl-cmdp{position:fixed;inset:0;background:rgba(15,23,42,.5);backdrop-filter:blur(8px);z-index:99994;display:none;align-items:flex-start;justify-content:center;padding:80px 20px 20px;font-family:inherit;animation:mnl-zoom-fade .2s ease}
.mnl-cmdp.is-open{display:flex}
.mnl-cmdp__box{background:#fff;border-radius:14px;max-width:560px;width:100%;max-height:60vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 32px 80px rgba(0,0,0,.4);animation:mnl-zoom-pop .25s cubic-bezier(.34,1.56,.64,1)}
.mnl-cmdp__head{padding:14px 16px;border-bottom:1px solid #f1f5f9;display:flex;align-items:center;gap:10px}
.mnl-cmdp__head-icon{color:#1a1a1a;font-size:18px}
.mnl-cmdp__input{flex:1;border:none;outline:none;font-family:inherit;font-size:15px;color:#0f172a;font-weight:600}
.mnl-cmdp__shortcut{padding:3px 8px;background:#f1f5f9;border-radius:4px;font-family:monospace;font-size:10px;font-weight:800;color:#1a1a1a}
.mnl-cmdp__list{overflow-y:auto;flex:1;padding:6px}
.mnl-cmdp__item{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;border-radius:8px;font-size:13px;color:#0f172a;transition:background .15s ease}
.mnl-cmdp__item.is-focused,.mnl-cmdp__item:hover{background:#FDEDE6}
.mnl-cmdp__item-icon{width:28px;height:28px;border-radius:6px;background:#E84E1B;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0}
.mnl-cmdp__item-info{flex:1;min-width:0}
.mnl-cmdp__item-title{font-weight:800;font-size:13px;letter-spacing:-.005em;margin:0}
.mnl-cmdp__item-cat{font-size:10px;color:#1a1a1a;font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin:1px 0 0}
.mnl-cmdp__item-kbd{padding:3px 8px;background:#f1f5f9;border-radius:4px;font-family:monospace;font-size:10px;color:#1a1a1a;font-weight:700}

/* ════════ PAGE READING PROGRESS ════════ */
.mnl-page-progress{position:fixed;top:0;left:0;right:0;height:3px;background:transparent;z-index:99988;pointer-events:none}
.mnl-page-progress__fill{height:100%;width:0;background:#E84E1B;transition:width .1s linear;box-shadow:0 0 8px rgba(232,78,27,.5);border-radius:0 3px 3px 0}/* V985c : aplat (ex-dégradé tricolore) */

/* [V2.0] Bloc .mnl-adblock-msg retiré — CSS mort (jamais rendu en HTML/JS). */

/* ════════ CONFETTI léger (celebration moments rares) ════════ */
.mnl-confetti{position:fixed;inset:0;pointer-events:none;z-index:99999;overflow:hidden}
/* V1266 : `will-change` RETIRÉ (2/11). C'était ici le cumul EXACT de V1213 —
   `will-change` permanent + animation à `forwards` — sur autant d'éléments que
   de confettis. */
.mnl-confetti__piece{position:absolute;width:8px;height:14px;border-radius:1px;animation:mnl-confetti-fall 3.5s linear forwards}
@keyframes mnl-confetti-fall{0%{transform:translateY(-20px) rotate(0);opacity:1}100%{transform:translateY(110vh) rotate(720deg);opacity:0}}

/* ════════ ANIMATED BUTTON SUCCESS (data-mnl-success-on-action) ════════ */
button[data-mnl-success].is-success,a[data-mnl-success].is-success{background:linear-gradient(135deg,#16a34a,#22c55e) !important;color:#fff !important;border-color:transparent !important;pointer-events:none}
button[data-mnl-success].is-success::before,a[data-mnl-success].is-success::before{content:"✓ ";font-weight:900;animation:mnl-btn-check .4s cubic-bezier(.34,1.56,.64,1)}
@keyframes mnl-btn-check{from{transform:scale(0)}to{transform:scale(1)}}

/* ════════ STICKY SHADOW ON STUCK (visual cue) ════════ */
.mnl-sticky-shadow{transition:box-shadow .25s ease,background .2s ease}
.mnl-sticky-shadow.is-stuck{box-shadow:0 6px 20px rgba(15,23,42,.12)}

/* ════════ SCROLL-SNAP CAROUSEL ════════ */
.mnl-carousel{position:relative;font-family:inherit}
.mnl-carousel__viewport{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:14px;padding:4px 0 12px;scroll-padding:0 16px}
.mnl-carousel__viewport::-webkit-scrollbar{display:none}
.mnl-carousel__slide{flex:0 0 auto;scroll-snap-align:start;width:280px}
.mnl-carousel--full .mnl-carousel__slide{width:100%}
.mnl-carousel__nav{display:flex;justify-content:center;gap:6px;margin-top:10px}
.mnl-carousel__dot{width:8px;height:8px;border-radius:50%;background:#e2e8f0;border:none;cursor:pointer;padding:0;transition:all .25s ease;font-family:inherit}
.mnl-carousel__dot.is-active{background:#E84E1B;width:22px;border-radius:100px}
.mnl-carousel__btn{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.95);border:1px solid rgba(15,23,42,.08);color:#0f172a;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(15,23,42,.1);font-family:inherit;z-index:2;backdrop-filter:blur(4px);transition:all .2s ease}
.mnl-carousel__btn:hover{background:#fff;color:#101418;transform:translateY(-50%) scale(1.08)}/* V1037 : charte Coach */
.mnl-carousel__btn--prev{left:-8px}
.mnl-carousel__btn--next{right:-8px}
.mnl-carousel__btn:disabled{opacity:.3;cursor:not-allowed}
@media (max-width:580px){.mnl-carousel__btn{display:none}}

/* ════════ HOVER LINK PREVIEW (desktop only) ════════ */
.mnl-hover-preview{position:fixed;background:#fff;border:1px solid rgba(15,23,42,.1);border-radius:14px;padding:14px;width:280px;box-shadow:0 24px 60px rgba(15,23,42,.18);opacity:0;visibility:hidden;transform:translateY(8px) scale(.96);transition:all .25s cubic-bezier(.34,1.56,.64,1);z-index:9100;pointer-events:none;font-family:inherit}
.mnl-hover-preview.is-visible{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.mnl-hover-preview__img{width:100%;aspect-ratio:1.6;background:#f8fafc;border-radius:8px;object-fit:cover;margin-bottom:10px}
.mnl-hover-preview__title{font-size:14px;font-weight:900;color:#0f172a;margin:0 0 4px;letter-spacing:-.005em;line-height:1.3}
.mnl-hover-preview__sub{font-size:12px;color:#1a1a1a;margin:0;line-height:1.4;font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mnl-hover-preview__url{font-size:10px;color:#1a1a1a;margin-top:6px;font-weight:600;letter-spacing:.04em}

/* ════════ INVENTORY LIVE COUNTDOWN ════════ */
.mnl-inventory{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.4);color:#a16207;font-size:12px;font-weight:800;border-radius:100px;font-family:inherit;letter-spacing:-.005em}
.mnl-inventory--high{background:rgba(34,197,94,.08);border-color:rgba(34,197,94,.3);color:#15803d}
.mnl-inventory--out{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.4);color:#b91c1c}
.mnl-inventory__dot{width:8px;height:8px;border-radius:50%;background:currentColor;animation:mnl-stock-dot-pulse 2s ease-in-out infinite}
.mnl-inventory--out .mnl-inventory__dot{animation:none}
.mnl-inventory__bar{display:inline-flex;width:60px;height:4px;background:rgba(0,0,0,.08);border-radius:2px;overflow:hidden;vertical-align:middle;margin-left:4px}
.mnl-inventory__bar-fill{height:100%;background:currentColor;border-radius:2px;transition:width .55s cubic-bezier(.16,.84,.44,1)}

/* ════════ LOADING DOTS MULTI-STEP ════════ */
.mnl-loading-dots{display:inline-flex;gap:6px;align-items:center;font-family:inherit}
.mnl-loading-dots__dot{width:8px;height:8px;border-radius:50%;background:#E84E1B;animation:mnl-loading-dots-bounce 1.4s ease-in-out infinite}
.mnl-loading-dots__dot:nth-child(1){animation-delay:-.32s}
.mnl-loading-dots__dot:nth-child(2){animation-delay:-.16s}
.mnl-loading-dots__dot:nth-child(3){animation-delay:0s}
@keyframes mnl-loading-dots-bounce{0%,80%,100%{transform:scale(.4);opacity:.5}40%{transform:scale(1);opacity:1}}

/* ════════ STICKY CALLOUT BAR (alt promo, plus discrète) ════════ */
.mnl-callout{position:fixed;bottom:140px;left:16px;right:16px;max-width:380px;margin:0 auto;background:#fff;border:1px solid rgba(15,23,42,.1);border-left:4px solid #E84E1B;border-radius:12px;padding:14px 16px;box-shadow:0 12px 28px rgba(15,23,42,.12);z-index:8200;transform:translateY(20px);opacity:0;visibility:hidden;transition:all .35s cubic-bezier(.34,1.56,.64,1);font-family:inherit;display:flex;align-items:flex-start;gap:12px}
.mnl-callout.is-visible{transform:translateY(0);opacity:1;visibility:visible}
.mnl-callout__icon{font-size:20px;line-height:1;flex-shrink:0}
.mnl-callout__body{flex:1;min-width:0;font-size:12px;color:#1a1a1a;line-height:1.45}
.mnl-callout__title{font-weight:900;color:#0f172a;font-size:13px;margin:0 0 2px}
.mnl-callout__close{background:none;border:none;color:#1a1a1a;cursor:pointer;font-size:18px;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-family:inherit;flex-shrink:0}
.mnl-callout__close:hover{color:#0f172a;background:#f1f5f9}
@media (min-width:768px){.mnl-callout{bottom:24px;right:24px;left:auto;width:380px}}

/* ════════ RATING DISTRIBUTION CHART ════════ */
.mnl-rating-dist{display:flex;flex-direction:column;gap:6px;font-family:inherit;font-size:13px;color:#0f172a}
.mnl-rating-dist__row{display:flex;align-items:center;gap:10px}
.mnl-rating-dist__label{font-weight:700;min-width:32px;display:inline-flex;align-items:center;gap:3px;color:#fbbf24;font-variant-numeric:tabular-nums}
.mnl-rating-dist__bar{flex:1;height:10px;background:#f1f5f9;border-radius:5px;overflow:hidden;position:relative}
.mnl-rating-dist__bar-fill{height:100%;background:#E84E1B;/* V1037 : aplat V974 */border-radius:5px;transition:width .8s cubic-bezier(.16,.84,.44,1);min-width:0}
.mnl-rating-dist__count{font-size:12px;color:#1a1a1a;font-weight:700;min-width:36px;text-align:right;font-variant-numeric:tabular-nums}
.mnl-rating-dist__pct{font-size:11px;color:#1a1a1a;font-weight:600;min-width:36px;text-align:right;font-variant-numeric:tabular-nums}
.mnl-rating-summary{display:flex;align-items:center;gap:16px;padding:18px 20px;background:#F2F3F5;border:1px solid #E5E8EC;border-radius:14px;margin-bottom:14px}/* V1037 : charte Coach */
.mnl-rating-summary__num{font-size:clamp(27px,3.3vw,42px);font-weight:900;line-height:1;letter-spacing:-.03em;color:#101418;font-variant-numeric:tabular-nums}/* V1037 : charte Coach */
.mnl-rating-summary__body{flex:1;min-width:0}
.mnl-rating-summary__stars{font-size:16px;color:#fbbf24;letter-spacing:-1px;margin-bottom:2px}
.mnl-rating-summary__total{font-size:13px;font-weight:700;color:#0f172a}
.mnl-rating-summary__sub{font-size:11px;color:#1a1a1a;font-weight:600;margin-top:2px}/* V1037 : charte Coach */

/* ════════ AGE GATE MODAL (legal compliance) ════════ */
.mnl-age-gate{position:fixed;inset:0;background:rgba(15,23,42,.95);backdrop-filter:blur(12px);z-index:99998;display:none;align-items:center;justify-content:center;padding:20px;font-family:inherit;animation:mnl-zoom-fade .4s ease}
.mnl-age-gate.is-open{display:flex}
.mnl-age-gate__box{background:#fff;border-radius:20px;max-width:440px;width:100%;padding:32px 28px;text-align:center;box-shadow:0 32px 80px rgba(0,0,0,.5);animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-age-gate__logo{font-size:36px;font-weight:900;letter-spacing:-.03em;background:#E84E1B;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin:0 0 8px}
.mnl-age-gate__title{font-size:20px;font-weight:900;color:#0f172a;margin:0 0 12px;letter-spacing:-.01em}
.mnl-age-gate__msg{font-size:14px;color:#1a1a1a;line-height:1.6;margin:0 0 24px}
.mnl-age-gate__msg strong{color:#0f172a}
.mnl-age-gate__actions{display:flex;gap:10px;justify-content:center}
.mnl-age-gate__btn{flex:1;padding:14px 20px;border:none;border-radius:100px;font-family:inherit;font-size:14px;font-weight:800;cursor:pointer;letter-spacing:-.005em;transition:all .2s ease}
.mnl-age-gate__btn--yes{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;box-shadow:0 8px 18px rgba(232,78,27,.3)}
.mnl-age-gate__btn--yes:hover{transform:translateY(-1px)}
.mnl-age-gate__btn--no{background:#f1f5f9;color:#1a1a1a}
.mnl-age-gate__legal{font-size:11px;color:#1a1a1a;margin-top:18px;line-height:1.5}

/* ════════ CART CHECKOUT PROGRESS ════════ */
.mnl-checkout-progress{display:flex;align-items:center;justify-content:center;gap:0;padding:18px 20px;background:#fff;border-bottom:1px solid #f1f5f9;font-family:inherit;flex-wrap:wrap}
.mnl-checkout-progress__step{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:#1a1a1a;letter-spacing:-.005em}
.mnl-checkout-progress__num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#f1f5f9;color:#1a1a1a;font-size:12px;font-weight:900;border:2px solid transparent}
.mnl-checkout-progress__step.is-done .mnl-checkout-progress__num{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}
.mnl-checkout-progress__step.is-done{color:#15803d}
.mnl-checkout-progress__step.is-current .mnl-checkout-progress__num{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;box-shadow:0 0 0 4px rgba(232,78,27,.18)}
.mnl-checkout-progress__step.is-current{color:#0f172a;font-weight:800}
.mnl-checkout-progress__sep{width:32px;height:2px;background:#e2e8f0;margin:0 4px}
.mnl-checkout-progress__step.is-done + .mnl-checkout-progress__sep,.mnl-checkout-progress__step.is-current + .mnl-checkout-progress__sep{background:linear-gradient(90deg,#22c55e,#16a34a)}
@media (max-width:580px){.mnl-checkout-progress__step{font-size:11px}.mnl-checkout-progress__sep{width:18px}}

/* ════════ SUSTAINABILITY TRACKER WIDGET ════════ */
.mnl-sustain{display:flex;flex-direction:column;gap:10px;padding:16px 18px;background:linear-gradient(135deg,#dcfce7,#bbf7d0);border:1px solid rgba(34,197,94,.3);border-radius:14px;font-family:inherit;color:#15803d}
.mnl-sustain__header{display:flex;align-items:center;gap:10px}
.mnl-sustain__icon{font-size:22px;line-height:1}
.mnl-sustain__title{font-size:14px;font-weight:900;letter-spacing:-.005em;margin:0;color:#166534}
.mnl-sustain__sub{font-size:11px;font-weight:600;color:#15803d}
.mnl-sustain__metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mnl-sustain__metric{text-align:center;padding:8px;background:rgba(255,255,255,.6);border-radius:8px}
.mnl-sustain__metric-num{font-size:18px;font-weight:900;color:#166534;line-height:1.1;font-variant-numeric:tabular-nums}
.mnl-sustain__metric-lbl{font-size:10px;font-weight:700;color:#15803d;letter-spacing:.04em;text-transform:uppercase;margin-top:2px}

/* ════════ STREAK COUNTER WIDGET (gamification login/visit) ════════ */
.mnl-streak{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid rgba(251,191,36,.4);border-radius:100px;font-family:inherit;font-size:13px;font-weight:800;color:#92400e}
.mnl-streak__flame{font-size:20px;line-height:1;animation:mnl-streak-flicker 2s ease-in-out infinite}
@keyframes mnl-streak-flicker{0%,100%{transform:scale(1) rotate(-2deg)}50%{transform:scale(1.1) rotate(2deg)}}
.mnl-streak__num{font-size:18px;font-weight:900;font-variant-numeric:tabular-nums}
.mnl-streak__lbl{font-size:11px;font-weight:700;color:#a16207}

/* ════════ Q&A COMMUNITY SECTION ════════ */
.mnl-qna{font-family:inherit}
.mnl-qna__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;flex-wrap:wrap;gap:12px}
.mnl-qna__title{font-size:18px;font-weight:900;color:#0f172a;margin:0;letter-spacing:-.01em}
.mnl-qna__ask{padding:10px 18px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;border:none;border-radius:100px;font-family:inherit;font-size:13px;font-weight:800;cursor:pointer;box-shadow:0 6px 16px rgba(232,78,27,.3)}
.mnl-qna__list{display:flex;flex-direction:column;gap:14px}
.mnl-qna__item{padding:16px 18px;background:#fff;border:1px solid rgba(15,23,42,.06);border-radius:14px}
.mnl-qna__q{font-size:14px;font-weight:800;color:#0f172a;margin:0 0 6px;letter-spacing:-.005em;display:flex;align-items:flex-start;gap:8px}
.mnl-qna__q::before{content:"Q.";color:#C93F12;font-weight:900;flex-shrink:0}
.mnl-qna__meta{font-size:11px;color:#1a1a1a;font-weight:600;margin-bottom:10px}
.mnl-qna__a{padding:12px 14px;background:#f8fafc;border-radius:10px;font-size:13px;color:#1a1a1a;line-height:1.55;display:flex;align-items:flex-start;gap:8px}
.mnl-qna__a::before{content:"R.";color:#22c55e;font-weight:900;flex-shrink:0}
.mnl-qna__a-meta{font-size:11px;color:#1a1a1a;font-weight:600;margin-top:8px}
.mnl-qna__vote{display:inline-flex;align-items:center;gap:4px;background:none;border:1px solid rgba(15,23,42,.1);border-radius:100px;padding:4px 10px;font-family:inherit;font-size:11px;font-weight:700;color:#1a1a1a;cursor:pointer;margin-top:8px;transition:all .15s ease}
.mnl-qna__vote:hover{border-color:#22c55e;color:#15803d}
.mnl-qna__vote.is-voted{background:#22c55e;color:#fff;border-color:#22c55e}

/* ════════ PROGRESSIVE DISCLOSURE (show more layers) ════════ */
.mnl-disclose{position:relative;font-family:inherit}
.mnl-disclose__layer{display:none;animation:mnl-tab-fade-in .35s cubic-bezier(.16,.84,.44,1)}
.mnl-disclose__layer.is-active{display:block}
.mnl-disclose__btn{display:inline-flex;align-items:center;gap:6px;background:#f1f5f9;border:none;color:#1a1a1a;font-family:inherit;font-size:12px;font-weight:700;padding:8px 14px;border-radius:100px;cursor:pointer;margin-top:8px;transition:all .2s ease}
.mnl-disclose__btn:hover{background:#F2F3F5;color:#101418}/* V1037 : charte Coach */
.mnl-disclose__btn::after{content:"+";font-weight:900;font-size:14px;line-height:1}

/* ════════ STICKY FAVS / SHARE FLOATING BUTTONS (rail) ════════ */
.mnl-rail{position:fixed;left:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:8px;z-index:8350;font-family:inherit}
.mnl-rail__btn{width:42px;height:42px;border-radius:50%;background:#fff;border:1px solid rgba(15,23,42,.08);color:#0f172a;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;box-shadow:0 4px 12px rgba(15,23,42,.08);transition:all .25s cubic-bezier(.34,1.56,.64,1);font-family:inherit;text-decoration:none;position:relative}
.mnl-rail__btn:hover{transform:scale(1.1);background:#F2F3F5;color:#101418}/* V1037 : charte Coach */
.mnl-rail__btn-tip{position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%) translateX(-4px);background:#0f172a;color:#fff;padding:5px 10px;border-radius:6px;font-size:11px;font-weight:700;white-space:nowrap;opacity:0;visibility:hidden;transition:all .2s ease;pointer-events:none}
.mnl-rail__btn:hover .mnl-rail__btn-tip{opacity:1;visibility:visible;transform:translateY(-50%) translateX(0)}
@media (max-width:1024px){.mnl-rail{display:none}}

/* ════════ TIP ROTATOR (Did you know?) ════════ */
/* V654c : bandeau « Le savais-tu ? » — fond rose pâle #FDEDE6/#ffe4ec + texte #C93F12 (illisible/hors-charte sur fond clair) → orange-soft plein + filet gauche orange épais + texte ink = ressort nettement. */
.mnl-tip-rotator{display:flex;align-items:center;gap:12px;padding:13px 18px;background:#FDEDE6;border:1px solid rgba(232,78,27,.25);border-radius:12px;font-family:inherit;font-size:13px;color:#0f172a;border-left:4px solid #E84E1B;box-shadow:0 4px 16px rgba(232,78,27,.08)}
.mnl-tip-rotator__icon{font-size:18px;line-height:1;flex-shrink:0}
.mnl-tip-rotator__body{flex:1;min-width:0}
.mnl-tip-rotator__label{font-size:10px;font-weight:800;color:#C93F12;letter-spacing:.08em;text-transform:uppercase;margin:0 0 2px}
.mnl-tip-rotator__text{font-size:12.5px;color:#1f2937;font-weight:600;line-height:1.4;margin:0;animation:mnl-tab-fade-in .35s cubic-bezier(.16,.84,.44,1)}
.mnl-tip-rotator__nav{display:inline-flex;gap:4px;flex-shrink:0}
.mnl-tip-rotator__nav-btn{width:24px;height:24px;border-radius:50%;background:rgba(232,78,27,.15);border:none;color:#C93F12;font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit}
.mnl-tip-rotator__nav-btn:hover{background:#E84E1B;color:#fff}

/* ════════ MULTI-SELECT DROPDOWN (checkboxes) ════════ */
.mnl-multiselect{position:relative;display:inline-block;min-width:200px;font-family:inherit}
.mnl-multiselect__btn{width:100%;padding:12px 16px;background:#fff;border:1.5px solid #e2e8f0;border-radius:10px;cursor:pointer;font-size:14px;font-weight:700;color:#0f172a;text-align:left;display:flex;justify-content:space-between;align-items:center;gap:10px;font-family:inherit;transition:border-color .2s ease,box-shadow .2s ease}
.mnl-multiselect__btn:hover{border-color:#cbd5e1}
.mnl-multiselect.is-open .mnl-multiselect__btn{border-color:#E84E1B;box-shadow:0 0 0 4px rgba(232,78,27,.12)}
.mnl-multiselect__count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;font-size:11px;font-weight:900;border-radius:100px}
.mnl-multiselect__count[data-count="0"]{display:none}
.mnl-multiselect__caret{font-size:10px;color:#1a1a1a;transition:transform .25s ease}
.mnl-multiselect.is-open .mnl-multiselect__caret{transform:rotate(180deg)}
.mnl-multiselect__panel{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:10px;box-shadow:0 16px 40px rgba(15,23,42,.15);z-index:9000;max-height:300px;overflow-y:auto;padding:6px;display:none}
.mnl-multiselect.is-open .mnl-multiselect__panel{display:block;animation:mnl-zoom-pop .25s cubic-bezier(.34,1.56,.64,1)}
.mnl-multiselect__option{display:flex;align-items:center;gap:10px;padding:8px 10px;cursor:pointer;border-radius:6px;font-size:13px;font-weight:600;color:#0f172a;transition:background .15s ease}
.mnl-multiselect__option:hover{background:#FDEDE6}
.mnl-multiselect__option.is-selected{background:rgba(232,78,27,.06);color:#C93F12}
.mnl-multiselect__check{width:18px;height:18px;border:2px solid #cbd5e1;border-radius:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease;background:#fff}
.mnl-multiselect__option.is-selected .mnl-multiselect__check{background:#E84E1B;border-color:transparent}
.mnl-multiselect__check::after{content:"✓";color:#fff;font-weight:900;font-size:12px;line-height:1;opacity:0;transform:scale(0);transition:all .2s cubic-bezier(.34,1.56,.64,1)}
.mnl-multiselect__option.is-selected .mnl-multiselect__check::after{opacity:1;transform:scale(1)}
.mnl-multiselect__divider{height:1px;background:#f1f5f9;margin:4px 0}
.mnl-multiselect__clear{padding:6px 10px;font-size:11px;color:#1a1a1a;font-weight:700;text-align:right;cursor:pointer}
.mnl-multiselect__clear:hover{color:#ef4444}

/* ════════ SPLIT BUTTON (primary action + dropdown) ════════ */
.mnl-split{display:inline-flex;font-family:inherit;position:relative}
.mnl-split__main{padding:12px 20px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;border:none;border-radius:100px 0 0 100px;font-family:inherit;font-size:14px;font-weight:800;cursor:pointer;letter-spacing:-.005em;box-shadow:0 8px 18px rgba(232,78,27,.3);transition:all .2s ease;border-right:1px solid rgba(255,255,255,.2)}
.mnl-split__main:hover{transform:translateY(-1px)}
.mnl-split__caret{padding:12px 14px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;border:none;border-radius:0 100px 100px 0;font-family:inherit;font-size:12px;font-weight:900;cursor:pointer;box-shadow:0 8px 18px rgba(232,78,27,.3);transition:all .2s ease}
.mnl-split__caret:hover{transform:translateY(-1px)}
.mnl-split__menu{position:absolute;top:calc(100% + 6px);right:0;background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:10px;box-shadow:0 16px 40px rgba(15,23,42,.15);min-width:200px;padding:6px;z-index:9000;display:none}
.mnl-split.is-open .mnl-split__menu{display:block;animation:mnl-zoom-pop .25s cubic-bezier(.34,1.56,.64,1)}
.mnl-split__item{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;border-radius:6px;font-size:13px;font-weight:600;color:#0f172a;text-decoration:none;transition:background .15s ease;background:none;border:none;font-family:inherit;width:100%;text-align:left}
.mnl-split__item:hover{background:#FDEDE6}
.mnl-split__item-icon{font-size:14px;flex-shrink:0}

/* ════════ SHAKE ERROR ANIMATION ════════ */
.mnl-shake{animation:mnl-shake-anim .55s cubic-bezier(.36,.07,.19,.97)}
@keyframes mnl-shake-anim{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(3px)}30%,50%,70%{transform:translateX(-7px)}40%,60%{transform:translateX(7px)}}

/* ════════ ANIMATED PRICE CHANGE ════════ */
.mnl-price-change{animation:mnl-price-anim .55s cubic-bezier(.34,1.56,.64,1);display:inline-block}
.mnl-price-change--up{color:#dc2626}
.mnl-price-change--down{color:#16a34a}
@keyframes mnl-price-anim{0%{transform:translateY(8px) scale(.85);opacity:0}60%{transform:translateY(-4px) scale(1.1)}100%{transform:translateY(0) scale(1);opacity:1}}

/* ════════ RETURNING VISITOR WELCOME — V968 refonte niveau marque ════════
   (fondateur : « bonne idée mais la qualité du popup est vraiment mauvaise ; penses toujours UX et UI »)
   Carte blanche + monogramme MNL orange (fini le dégradé indigo hors charte), texte #1a1a1a,
   CTA pill orange, croix zone tactile 36px, safe-area iPhone (référence 17 Pro 402 / Pro Max 440). */
.mnl-welcome-back{position:fixed;bottom:calc(90px + env(safe-area-inset-bottom,0px));left:12px;right:12px;max-width:400px;margin:0 auto;background:#fff;color:#1a1a1a;border:1px solid #ececec;border-radius:16px;padding:16px;box-shadow:0 18px 50px rgba(15,23,42,.16);z-index:8200;transform:translateY(20px);opacity:0;visibility:hidden;transition:transform .35s cubic-bezier(.34,1.56,.64,1),opacity .3s ease,visibility .3s;font-family:inherit;display:flex;align-items:flex-start;gap:12px}
.mnl-welcome-back.is-visible{transform:translateY(0);opacity:1;visibility:visible}
.mnl-welcome-back__logo{width:40px;height:40px;border-radius:12px;background:#E84E1B;display:flex;/* V985c : aplat Fiche Labo (ex-dégradé ea580c→C2410C) */align-items:center;justify-content:center;font-size:11px;font-weight:800;letter-spacing:.03em;color:#fff;flex-shrink:0;font-family:'Space Grotesk',inherit}
.mnl-welcome-back__body{flex:1;min-width:0}
.mnl-welcome-back__title{font-size:15px;font-weight:800;margin:0 0 3px;letter-spacing:-.01em;color:#1a1a1a;font-family:'Space Grotesk',inherit}
.mnl-welcome-back__sub{font-size:13px;color:#1a1a1a;font-weight:500;margin:0;line-height:1.45}
.mnl-welcome-back__cta{display:inline-flex;align-items:center;justify-content:center;margin-top:10px;padding:11px 20px;min-height:40px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;border-radius:999px;font-size:13px;font-weight:800;text-decoration:none;letter-spacing:.01em;transition:background .15s ease}/* V985c : aplat #E84E1B (ex-#ea580c) */
.mnl-welcome-back__cta:hover{background:#C93F12;color:#fff;text-decoration:none}/* V985c : hover #C93F12 (ex vieux-orange) */
.mnl-welcome-back__close{background:none;border:none;color:#1a1a1a;opacity:.45;font-size:20px;line-height:1;cursor:pointer;width:36px;height:36px;margin:-6px -6px 0 0;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:inherit;border-radius:10px;transition:opacity .15s ease,background .15s ease}
.mnl-welcome-back__close:hover{opacity:1;background:#F2F3F5}
@media (min-width:768px){.mnl-welcome-back{bottom:24px;left:24px;right:auto;width:400px}}

/* ════════ ADMIN DEBUG PANEL (Cmd+Shift+D) ════════ */
.mnl-debug{position:fixed;top:16px;right:16px;width:380px;max-height:80vh;overflow:auto;background:#0f172a;color:#22c55e;border-radius:12px;padding:16px;font-family:'DM Sans',monospace;font-size:11px;z-index:99999;display:none;box-shadow:0 24px 60px rgba(0,0,0,.5);border:1px solid #22c55e}
.mnl-debug.is-open{display:block;animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1)}
.mnl-debug__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #22c55e}
.mnl-debug__title{font-weight:900;font-size:13px;color:#fbbf24;margin:0}
.mnl-debug__close{background:none;border:1px solid #22c55e;color:#22c55e;cursor:pointer;font-family:inherit;padding:4px 10px;border-radius:4px;font-size:11px;font-weight:700}
.mnl-debug__section{margin-bottom:12px}
.mnl-debug__section-h{color:#fbbf24;font-weight:900;font-size:10px;letter-spacing:.08em;text-transform:uppercase;margin:0 0 4px}
.mnl-debug__row{display:flex;justify-content:space-between;padding:2px 0;border-bottom:1px solid rgba(34,197,94,.1)}
.mnl-debug__key{color:rgba(34,197,94,.7)}
.mnl-debug__val{color:#fff;font-weight:700;text-align:right;max-width:60%;word-break:break-all}
.mnl-debug__btn{display:block;width:100%;padding:6px;background:#22c55e;color:#0f172a;border:none;border-radius:4px;font-family:inherit;font-size:11px;font-weight:800;cursor:pointer;margin-top:6px}
.mnl-debug__btn:hover{background:#16a34a;color:#fff}

/* ════════ SPEECH-TO-TEXT MIC BUTTON ════════ */
.mnl-mic-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:#f1f5f9;border:none;color:#1a1a1a;font-size:16px;cursor:pointer;font-family:inherit;transition:all .2s ease;flex-shrink:0}
.mnl-mic-btn:hover{background:#FDEDE6;color:#C93F12}
.mnl-mic-btn.is-listening{background:#E84E1B;color:#fff;animation:mnl-stock-pulse 1.2s ease-in-out infinite}

/* ════════ SOUND FX TOGGLE ════════ */
.mnl-sfx-toggle{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:transparent;border:1px solid rgba(15,23,42,.1);color:#1a1a1a;font-size:11px;font-weight:700;border-radius:100px;cursor:pointer;font-family:inherit;transition:all .2s ease}
.mnl-sfx-toggle:hover{border-color:#E84E1B;color:#C93F12}
.mnl-sfx-toggle.is-on{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;border-color:transparent}

/* ════════ ONLINE SYNC INDICATOR ════════ */
.mnl-sync-indicator{position:fixed;top:80px;right:16px;background:rgba(15,23,42,.92);color:#fff;padding:8px 14px;border-radius:100px;font-family:inherit;font-size:12px;font-weight:700;z-index:9100;display:none;align-items:center;gap:8px;box-shadow:0 8px 24px rgba(0,0,0,.3);animation:mnl-zoom-pop .35s cubic-bezier(.34,1.56,.64,1);border:1px solid rgba(34,197,94,.3)}
.mnl-sync-indicator.is-active{display:inline-flex}
.mnl-sync-indicator__dot{width:8px;height:8px;border-radius:50%;background:#22c55e;animation:mnl-stock-dot-pulse 1.2s ease-in-out infinite}
.mnl-sync-indicator--syncing .mnl-sync-indicator__dot{background:#fbbf24}

/* ════════ PARTICLE BURST CONTAINER ════════ */
.mnl-particles{position:fixed;inset:0;pointer-events:none;z-index:99998;overflow:hidden}
/* V1266 : `will-change` RETIRÉ (3/11). Le conteneur `.mnl-particles` est
   réutilisé d'un tir à l'autre : la couche survivait à l'animation. */
.mnl-particle{position:absolute;width:6px;height:6px;border-radius:50%}

/* ════════ OTP INPUT (6-digit verification) ════════ */
.mnl-otp{display:inline-flex;gap:8px;font-family:inherit}
.mnl-otp__input{width:48px;height:56px;border:2px solid #e2e8f0;border-radius:10px;background:#fff;text-align:center;font-family:'DM Sans',monospace;font-size:24px;font-weight:900;color:#0f172a;font-variant-numeric:tabular-nums;-webkit-appearance:none;appearance:none;outline:none;transition:all .2s cubic-bezier(.34,1.56,.64,1)}
.mnl-otp__input:focus{border-color:#E84E1B;box-shadow:0 0 0 4px rgba(232,78,27,.15);transform:translateY(-2px)}
.mnl-otp__input.is-filled{border-color:#22c55e;background:#f0fdf4}
.mnl-otp__input.is-error{border-color:#ef4444;background:#fef2f2;animation:mnl-shake-anim .55s cubic-bezier(.36,.07,.19,.97)}
@media (max-width:580px){.mnl-otp{gap:6px}.mnl-otp__input{width:42px;height:50px;font-size:20px}}

/* ════════ BOTTOM SHEET MOBILE ════════ */
.mnl-sheet{position:fixed;inset:0;z-index:99993;pointer-events:none;font-family:inherit}
.mnl-sheet__overlay{position:absolute;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(6px);opacity:0;transition:opacity .3s ease}
.mnl-sheet__panel{position:absolute;left:0;right:0;bottom:0;background:#fff;border-radius:24px 24px 0 0;max-height:80vh;display:flex;flex-direction:column;transform:translateY(100%);transition:transform .35s cubic-bezier(.34,1.56,.64,1);box-shadow:0 -16px 40px rgba(0,0,0,.18);padding-bottom:env(safe-area-inset-bottom)}
.mnl-sheet.is-open{pointer-events:auto}
.mnl-sheet.is-open .mnl-sheet__overlay{opacity:1}
.mnl-sheet.is-open .mnl-sheet__panel{transform:translateY(0)}
.mnl-sheet__handle{width:48px;height:4px;background:#cbd5e1;border-radius:2px;margin:10px auto 4px;flex-shrink:0}
.mnl-sheet__head{padding:8px 20px 14px;border-bottom:1px solid #f1f5f9;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
.mnl-sheet__title{font-size:17px;font-weight:900;color:#0f172a;margin:0;letter-spacing:-.01em}
.mnl-sheet__close{width:32px;height:32px;border-radius:50%;background:#f1f5f9;border:none;color:#1a1a1a;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit}
.mnl-sheet__body{flex:1;overflow-y:auto;padding:20px;-webkit-overflow-scrolling:touch}
.mnl-sheet__footer{padding:14px 20px;border-top:1px solid #f1f5f9;flex-shrink:0}
.mnl-sheet__panel.is-dragging{transition:none}

/* ════════ CIRCULAR PROGRESS ════════ */
.mnl-circular{position:relative;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;width:80px;height:80px}
.mnl-circular svg{transform:rotate(-90deg);width:100%;height:100%}
.mnl-circular__bg{fill:none;stroke:#f1f5f9;stroke-width:8}
.mnl-circular__fg{fill:none;stroke:url(#mnl-circular-grad);stroke-width:8;stroke-linecap:round;transition:stroke-dashoffset .8s cubic-bezier(.16,.84,.44,1)}
.mnl-circular__label{position:absolute;text-align:center}
.mnl-circular__num{font-size:18px;font-weight:900;color:#0f172a;line-height:1;font-variant-numeric:tabular-nums}
.mnl-circular__sub{font-size:9px;font-weight:700;color:#1a1a1a;letter-spacing:.04em;text-transform:uppercase;margin-top:2px}
.mnl-circular--lg{width:120px;height:120px}
.mnl-circular--lg .mnl-circular__num{font-size:26px}
.mnl-circular--lg .mnl-circular__sub{font-size:10px}

/* ════════ AUTO-SAVE INDICATOR (cloud icon + status) ════════ */
.mnl-autosave{display:inline-flex;align-items:center;gap:6px;font-family:inherit;font-size:11px;font-weight:700;color:#1a1a1a;padding:4px 10px;border-radius:100px;background:#f8fafc;border:1px solid rgba(15,23,42,.06)}
.mnl-autosave--saved{color:#15803d;background:rgba(34,197,94,.08);border-color:rgba(34,197,94,.2)}
.mnl-autosave--saving{color:#a16207;background:rgba(251,191,36,.1);border-color:rgba(251,191,36,.3)}
.mnl-autosave--error{color:#b91c1c;background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.3)}
.mnl-autosave__icon{font-size:12px;line-height:1}
.mnl-autosave--saving .mnl-autosave__icon{animation:mnl-spinner-rot 1s linear infinite}

/* ════════ INLINE CONFIRMATION (button "Are you sure?") ════════ */
button[data-mnl-inline-confirm].is-confirming{background:#ef4444 !important;color:#fff !important;animation:mnl-pulse-confirm .7s ease-in-out infinite;border-color:#ef4444 !important}
@keyframes mnl-pulse-confirm{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,.4)}50%{box-shadow:0 0 0 8px rgba(239,68,68,0)}}

/* ════════ DRAG-TO-DISMISS sheets ════════ */
.mnl-sheet__panel{touch-action:pan-y}

/* ════════ HASH ANCHOR COPY (deep link sections) ════════ */
[data-mnl-anchor]{position:relative;scroll-margin-top:80px}
.mnl-anchor-link{position:absolute;left:-32px;top:50%;transform:translateY(-50%);width:24px;height:24px;border-radius:50%;background:#f1f5f9;border:none;color:#1a1a1a;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease,background .15s ease,color .15s ease;font-family:inherit;text-decoration:none}
[data-mnl-anchor]:hover .mnl-anchor-link,.mnl-anchor-link:focus{opacity:1}
.mnl-anchor-link:hover{background:#101418;color:#fff}/* V1037 : charte Coach */
@media (max-width:1024px){.mnl-anchor-link{position:static;display:inline-flex;margin-left:8px;transform:none;opacity:.4}.mnl-anchor-link:hover{opacity:1}}

/* ════════ INLINE EDIT TEXT (click to edit) ════════ */
.mnl-inline-edit{display:inline-block;position:relative;font-family:inherit;cursor:pointer;border-bottom:1px dashed transparent;padding:2px 6px;margin:-2px -6px;border-radius:4px;transition:all .15s ease}
.mnl-inline-edit:hover{background:rgba(232,78,27,.06);border-bottom-color:rgba(232,78,27,.4)}
.mnl-inline-edit::after{content:" ✎";color:#C93F12;font-size:.8em;opacity:0;transition:opacity .15s ease;font-style:normal}
.mnl-inline-edit:hover::after{opacity:1}
.mnl-inline-edit.is-editing{cursor:text;background:#fff;border:1px solid #E84E1B;box-shadow:0 0 0 3px rgba(232,78,27,.15);outline:none}
.mnl-inline-edit.is-editing::after{display:none}

/* ════════ PULL-TO-REFRESH (mobile) ════════ */
.mnl-ptr{position:relative;overflow-y:auto;-webkit-overflow-scrolling:touch}
.mnl-ptr__indicator{position:absolute;top:-50px;left:50%;transform:translateX(-50%);width:40px;height:40px;border-radius:50%;background:rgba(232,78,27,.95);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;transition:all .25s ease;z-index:5;box-shadow:0 4px 12px rgba(232,78,27,.3);font-family:inherit}
.mnl-ptr__indicator.is-pulling{transform:translateX(-50%) translateY(60px)}
.mnl-ptr__indicator.is-refreshing{transform:translateX(-50%) translateY(60px);animation:mnl-spinner-rot 1s linear infinite}

/* ════════ FLOATING TOC right side (alt to TOC sticky existing) ════════ */
.mnl-toc-float{position:fixed;right:16px;top:50%;transform:translateY(-50%);background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:10px;padding:6px;box-shadow:0 8px 24px rgba(15,23,42,.1);max-width:240px;z-index:8350;display:none;font-family:inherit}
@media (min-width:1340px){.mnl-toc-float{display:block}}/* V953 (audit) : 1280→1340px — le TOC flottant (right:16px) recouvrait ~26px du texte de l'article (centré, max 820px) qui ne se dégage qu'à partir de ~1332px */
.mnl-toc-float__list{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;gap:0}
.mnl-toc-float__item{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:11px;font-weight:700;color:#1a1a1a;text-decoration:none;border-radius:6px;transition:all .15s ease}
.mnl-toc-float__item:hover{color:#101418;background:rgba(16,20,24,.06)}/* V1037 : charte Coach */
.mnl-toc-float__item.is-active{color:#C93F12;background:rgba(232,78,27,.08)}
.mnl-toc-float__dot{width:6px;height:6px;border-radius:50%;background:#cbd5e1;flex-shrink:0;transition:all .2s ease}
.mnl-toc-float__item.is-active .mnl-toc-float__dot{background:#E84E1B;width:14px;border-radius:100px}

/* ════════ PASSWORD STRENGTH METER + SHOW/HIDE ════════ */
.mnl-password{position:relative;font-family:inherit}
.mnl-password__input{padding-right:80px !important}
.mnl-password__toggle{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;color:#1a1a1a;font-size:14px;cursor:pointer;padding:6px 8px;border-radius:6px;font-family:inherit;transition:color .15s ease;line-height:1}
.mnl-password__toggle:hover{color:#101418;background:rgba(16,20,24,.06)}/* V1037 : charte Coach */
.mnl-password__strength{display:flex;gap:3px;margin-top:6px}
.mnl-password__strength-bar{flex:1;height:4px;background:#e2e8f0;border-radius:2px;transition:background .25s ease}
.mnl-password__strength-bar.is-active-1{background:#ef4444}
.mnl-password__strength-bar.is-active-2{background:#f97316}
.mnl-password__strength-bar.is-active-3{background:#fbbf24}
.mnl-password__strength-bar.is-active-4{background:#22c55e}
.mnl-password__strength-label{font-size:11px;font-weight:700;margin-top:4px;color:#1a1a1a}
.mnl-password__strength-label--weak{color:#dc2626}
.mnl-password__strength-label--medium{color:#a16207}
.mnl-password__strength-label--strong{color:#15803d}
.mnl-password__strength-label--excellent{color:#15803d}

/* ════════ INPUT CLEAR BUTTON (× universal) ════════ */
.mnl-input-clear{position:relative;display:inline-block;width:100%}
.mnl-input-clear__btn{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:50%;background:#cbd5e1;color:#fff;border:none;font-size:12px;font-weight:900;cursor:pointer;display:none;align-items:center;justify-content:center;font-family:inherit;line-height:1;transition:background .15s ease}
.mnl-input-clear__btn:hover{background:#ef4444}
.mnl-input-clear.has-value .mnl-input-clear__btn{display:flex}

/* ════════ INTERNATIONAL PHONE INPUT (with flag) ════════ */
.mnl-phone-intl{display:flex;align-items:stretch;border:1.5px solid #e2e8f0;border-radius:10px;background:#fff;overflow:hidden;font-family:inherit;transition:border-color .2s ease,box-shadow .2s ease}
.mnl-phone-intl:focus-within{border-color:#E84E1B;box-shadow:0 0 0 4px rgba(232,78,27,.12)}
.mnl-phone-intl__country{display:flex;align-items:center;gap:6px;padding:0 12px;background:#f8fafc;border:none;border-right:1px solid #e2e8f0;cursor:pointer;font-family:inherit;font-size:13px;font-weight:700;color:#0f172a;flex-shrink:0;transition:background .15s ease}
.mnl-phone-intl__country:hover{background:#F2F3F5}/* V1037 : charte Coach */
.mnl-phone-intl__flag{font-size:18px;line-height:1}
.mnl-phone-intl__caret{font-size:9px;color:#1a1a1a}
.mnl-phone-intl__input{flex:1;border:none;outline:none;padding:12px 14px;font-family:inherit;font-size:15px;color:#0f172a;background:transparent;min-width:0}
.mnl-phone-intl__panel{position:absolute;top:calc(100% + 4px);left:0;background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:10px;box-shadow:0 16px 40px rgba(15,23,42,.15);max-height:240px;overflow-y:auto;width:240px;z-index:9000;padding:6px;display:none}
.mnl-phone-intl.is-open .mnl-phone-intl__panel{display:block;animation:mnl-zoom-pop .25s cubic-bezier(.34,1.56,.64,1)}
.mnl-phone-intl__option{display:flex;align-items:center;gap:10px;padding:8px 10px;cursor:pointer;border-radius:6px;font-size:13px;color:#0f172a;font-weight:600}
.mnl-phone-intl__option:hover{background:#F2F3F5}/* V1037 : charte Coach */
.mnl-phone-intl__option-code{margin-left:auto;color:#1a1a1a;font-weight:700;font-size:12px}

/* ════════ TIMELINE COMPONENT (vertical) ════════ */
.mnl-timeline{position:relative;padding-left:32px;font-family:inherit}
.mnl-timeline::before{content:"";position:absolute;left:11px;top:6px;bottom:6px;width:2px;background:#E84E1B;/* V1037 : aplat V974 */border-radius:2px}
.mnl-timeline__item{position:relative;padding-bottom:28px}
.mnl-timeline__item:last-child{padding-bottom:0}
.mnl-timeline__dot{position:absolute;left:-24px;top:6px;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid #E84E1B;box-shadow:0 0 0 1px #E84E1B,0 4px 12px rgba(232,78,27,.3);transition:all .2s ease}
.mnl-timeline__item:hover .mnl-timeline__dot{transform:scale(1.2)}
.mnl-timeline__date{display:inline-block;padding:3px 10px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;font-size:11px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;border-radius:100px;margin-bottom:6px}
.mnl-timeline__title{font-size:15px;font-weight:900;color:#0f172a;margin:0 0 4px;letter-spacing:-.01em}
.mnl-timeline__desc{font-size:13px;color:#1a1a1a;line-height:1.55;margin:0}
.mnl-timeline__item--milestone .mnl-timeline__dot{background:#E84E1B;border-color:#fbbf24;width:18px;height:18px;left:-26px}

/* ════════ INLINE PAGE FEEDBACK WIDGET ════════ */
/* V556 : widget de feedback « Cette page t'a aidé ? » retiré du site (demande user).
   On masque les conteneurs vides pour éviter que leurs marges inline laissent un trou. */
[data-mnl-feedback]{display:none!important}
.mnl-feedback{padding:18px 20px;background:linear-gradient(135deg,#FDEDE6,#ffe4ec);border:1px solid rgba(232,78,27,.2);border-radius:14px;font-family:inherit;text-align:center}
.mnl-feedback__title{font-size:14px;font-weight:800;color:#C93F12;margin:0 0 12px;letter-spacing:-.005em}
.mnl-feedback__btns{display:inline-flex;gap:8px}
.mnl-feedback__btn{padding:10px 20px;background:#fff;border:1px solid rgba(232,78,27,.25);color:#C93F12;font-size:13px;font-weight:800;border-radius:100px;cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:6px}
.mnl-feedback__btn:hover{transform:translateY(-1px);background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;border-color:transparent;box-shadow:0 6px 16px rgba(232,78,27,.3)}
.mnl-feedback__btn:disabled{opacity:.5;pointer-events:none}
.mnl-feedback__thanks{font-size:14px;font-weight:800;color:#15803d;margin:0;display:none}
.mnl-feedback.is-submitted .mnl-feedback__btns,.mnl-feedback.is-submitted .mnl-feedback__title{display:none}
.mnl-feedback.is-submitted .mnl-feedback__thanks{display:block}
.mnl-feedback__textarea{width:100%;margin-top:10px;padding:10px 12px;border:1px solid rgba(232,78,27,.25);border-radius:8px;font-family:inherit;font-size:13px;resize:vertical;display:none}
.mnl-feedback.is-detail .mnl-feedback__textarea{display:block}

/* ════════ SMART NUMBER INPUT (avec stepper inline) ════════ */
.mnl-num{position:relative;display:inline-block;font-family:inherit}
.mnl-num input[type="number"]{width:100%;padding:10px 36px 10px 14px;border:1.5px solid #e2e8f0;border-radius:10px;font-family:inherit;font-size:14px;font-weight:700;color:#0f172a;text-align:left;-webkit-appearance:none;appearance:none;-moz-appearance:textfield;background:#fff;outline:none}
.mnl-num input[type="number"]:focus{border-color:#E84E1B;box-shadow:0 0 0 4px rgba(232,78,27,.12)}
.mnl-num input[type="number"]::-webkit-outer-spin-button,.mnl-num input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.mnl-num__steppers{position:absolute;right:4px;top:4px;bottom:4px;display:flex;flex-direction:column;gap:1px}
.mnl-num__step{flex:1;width:24px;background:#f1f5f9;border:none;color:#1a1a1a;font-size:9px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;line-height:1;transition:background .15s ease}
.mnl-num__step:first-child{border-radius:6px 6px 0 0}
.mnl-num__step:last-child{border-radius:0 0 6px 6px}
.mnl-num__step:hover{background:#101418;color:#fff}/* V1037 : charte Coach */
.mnl-num__step:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}

/* ════════ COLOR PICKER (simple swatches) ════════ */
.mnl-color-picker{display:flex;gap:8px;flex-wrap:wrap;font-family:inherit}
.mnl-color-picker__swatch{width:36px;height:36px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1.5px rgba(15,23,42,.12),0 4px 10px rgba(0,0,0,.08);cursor:pointer;transition:all .2s cubic-bezier(.34,1.56,.64,1);font-family:inherit;-webkit-appearance:none;appearance:none}
.mnl-color-picker__swatch:hover{transform:scale(1.12)}
.mnl-color-picker__swatch.is-active{box-shadow:0 0 0 2.5px #0f172a,0 4px 10px rgba(0,0,0,.15);transform:scale(1.05)}
.mnl-color-picker__swatch.is-active::after{content:"✓";position:absolute;color:#fff;font-weight:900;font-size:14px;text-shadow:0 0 4px rgba(0,0,0,.3)}

/* ════════ SLIDER SINGLE VALUE ════════ */
.mnl-slider{padding:8px 0;font-family:inherit}
.mnl-slider__label{display:flex;justify-content:space-between;font-size:13px;font-weight:800;color:#0f172a;margin-bottom:10px}
.mnl-slider__value{color:#C93F12;font-variant-numeric:tabular-nums}
.mnl-slider input[type="range"]{width:100%;-webkit-appearance:none;appearance:none;height:6px;background:#e2e8f0;border-radius:3px;outline:none;background-image:linear-gradient(90deg,#E84E1B 0%,#E84E1B 50%,#e2e8f0 50%);background-repeat:no-repeat;cursor:pointer}
.mnl-slider input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:#fff;border:2px solid #E84E1B;box-shadow:0 4px 10px rgba(232,78,27,.3);cursor:pointer;transition:transform .15s ease}
.mnl-slider input[type="range"]::-webkit-slider-thumb:hover{transform:scale(1.15)}
.mnl-slider input[type="range"]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#fff;border:2px solid #E84E1B;box-shadow:0 4px 10px rgba(232,78,27,.3);cursor:pointer}

/* ════════ AUDIO PLAYER WIDGET (mini) ════════ */
.mnl-audio{display:inline-flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:100px;font-family:inherit;box-shadow:0 4px 12px rgba(15,23,42,.06)}
.mnl-audio__play{width:36px;height:36px;border-radius:50%;background:#E84E1B;color:#fff;border:none;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;font-family:inherit;flex-shrink:0;box-shadow:0 4px 10px rgba(232,78,27,.3)}
.mnl-audio__title{font-size:13px;font-weight:700;color:#0f172a;line-height:1.3;margin:0;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mnl-audio__time{font-size:11px;color:#1a1a1a;font-weight:700;font-variant-numeric:tabular-nums;margin:1px 0 0}
.mnl-audio__progress{flex:1;height:4px;background:#f1f5f9;border-radius:2px;overflow:hidden;cursor:pointer;min-width:80px}
.mnl-audio__progress-fill{height:100%;width:0;background:#E84E1B;/* V1037 : aplat V974 */border-radius:2px;transition:width .1s linear}

/* ════════ TEXT SCRAMBLE EFFECT ════════ */
.mnl-scramble{font-family:inherit}
/* Animation handled JS — pas de CSS */
/* V708 : overrides "fond plein coloré" RETIRÉS — les toasts sont maintenant en carte blanche (bord gauche + icône colorés), défini plus haut. */
/* Vague 92 : déclaration L330 (max-width:580px) couvre déjà ce cas. Avant cette dupe à 720px
   créait un conflit imprévisible entre 580 et 720px (bottom:80 vs 90, right:10 vs 12). */

/* [SUPPRIMÉ] 2ᵉ déclaration CSS .mnl-back-top dupliquée — la version active est .mnl-back-to-top (vague 9). */

/* ════════ PAGE TRANSITIONS (turbo-link feel) ════════ */
.mnl-page-leaving{opacity:.85;transition:opacity .2s ease}
.mnl-page-loading-bar{position:fixed;top:0;left:0;right:0;height:3px;z-index:10000;background:transparent;pointer-events:none;display:none}
.mnl-page-loading-bar.is-active{display:block}
.mnl-page-loading-bar::before{content:"";position:absolute;top:0;left:0;height:100%;width:30%;background:#E84E1B;animation:mnl-loading-slide 1s ease-in-out infinite;border-radius:0 3px 3px 0;box-shadow:0 0 8px rgba(232,78,27,.5)}
@keyframes mnl-loading-slide{0%{left:-30%}100%{left:100%}}

/* ════════ LOYALTY POINTS BADGE (header) ════════ */
.mnl-loyalty-badge{position:fixed;top:140px;right:24px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;padding:8px 14px;border-radius:100px;display:none;align-items:center;gap:6px;font-family:inherit;font-size:12px;font-weight:800;cursor:pointer;border:none;z-index:7900;box-shadow:0 8px 22px rgba(232,78,27,.35);transition:all .25s ease;text-decoration:none;letter-spacing:-.005em}
.mnl-loyalty-badge.is-active{display:inline-flex}
.mnl-loyalty-badge:hover{transform:scale(1.05) translateY(-2px);box-shadow:0 12px 28px rgba(251,191,36,.55)}
.mnl-loyalty-badge__icon{font-size:16px;line-height:1}
.mnl-loyalty-badge__pts{font-size:13px;font-weight:900;letter-spacing:-.01em}
@media(max-width:720px){.mnl-loyalty-badge{display:none!important}}

/* ════════ SMART STICKY CTA (context-aware action button) ════════ */
/* V528 : DESKTOP → masqué. Le CTA bottom-CENTER chevauchait les titres pleine largeur ("CALIBRÉ POUR TON SPORT")
   user-reported (×3). Sur desktop, le FAB global "Coach IA" (#mnlGlobalCoachFab, bottom-right corner) assure déjà
   le lancement coach SANS jamais chevaucher le contenu centré → le sticky-cta centré était redondant + buggé.
   On le GARDE sur mobile (≤720px) où il devient une barre full-width bottom (pattern app-store) ET où le FAB est caché.
   Règle de hide ci-dessous dans le @media (min-width:721px). */
.mnl-sticky-cta{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(120%);background:linear-gradient(135deg,#0f172a,#1e1b4b);color:#fff;padding:14px 28px;border-radius:100px;display:inline-flex;align-items:center;gap:12px;font-family:inherit;font-size:14px;font-weight:800;cursor:pointer;border:none;z-index:7500;box-shadow:0 16px 40px rgba(15,23,42,.4),0 0 0 1px rgba(255,255,255,.08);transition:transform .4s cubic-bezier(.34,1.56,.64,1);text-decoration:none;letter-spacing:-.005em}
@media (min-width: 721px) { .mnl-sticky-cta { display: none !important; } }
.mnl-sticky-cta.is-visible{transform:translateX(-50%) translateY(0)}
.mnl-sticky-cta:hover{transform:translateX(-50%) translateY(-3px)}
.mnl-sticky-cta__icon{font-size:18px;line-height:1}
.mnl-sticky-cta__arrow{font-size:16px;font-weight:900}
/* Vague 150 BUG FIX : sticky-cta mobile devient FULL-WIDTH bottom bar (pattern app store) — collée tout en bas, plus de flottement intermédiaire.
   Ajout safe-area iOS. Le scroll-top FAB se réajuste automatiquement au-dessus via la classe body.mnl-has-sticky-cta */
@media(max-width:720px){
  .mnl-sticky-cta{
    bottom:0;left:0;right:0;
    transform:translateX(0) translateY(120%);
    border-radius:0;
    width:100%;max-width:100%;
    font-size:14px;padding:14px 20px calc(14px + env(safe-area-inset-bottom,0px));
    gap:10px;justify-content:center;
    box-shadow:0 -8px 24px rgba(15,23,42,.35);
  }
  .mnl-sticky-cta.is-visible{transform:translateX(0) translateY(0)}
  .mnl-sticky-cta:hover{transform:translateX(0) translateY(0)}
  /* Quand sticky-cta visible, ajoute padding-bottom au body pour pas masquer du contenu */
  body:has(.mnl-sticky-cta.is-visible){padding-bottom:64px}
}

/* ════════ LIVE SALES TICKER (bottom-left subtle) ════════ */
.mnl-sales-ticker{position:fixed;bottom:24px;left:24px;background:#fff;color:#0f172a;padding:10px 14px;border-radius:14px;display:none;align-items:center;gap:10px;z-index:7000;box-shadow:0 12px 28px rgba(15,23,42,.18);max-width:280px;border:1px solid rgba(15,23,42,.06);animation:mnl-sales-slide-in .5s cubic-bezier(.34,1.56,.64,1),mnl-sales-slide-out .5s ease 6s forwards}
.mnl-sales-ticker.is-active{display:inline-flex}
@keyframes mnl-sales-slide-in{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}
@keyframes mnl-sales-slide-out{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-30px);max-height:0;padding:0;margin:0;border:0}}
.mnl-sales-ticker__icon{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#22c55e,#10b981);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;box-shadow:0 4px 10px rgba(34,197,94,.35)}
.mnl-sales-ticker__body{flex:1;min-width:0}
.mnl-sales-ticker__title{font-size:12px;font-weight:800;color:#0f172a;margin:0;letter-spacing:-.005em}
.mnl-sales-ticker__sub{font-size:10px;color:rgba(15,23,42,.55);font-weight:600;margin:2px 0 0}
.mnl-sales-ticker__sub strong{color:#15803d}
@media(max-width:720px){.mnl-sales-ticker{bottom:80px;left:10px;right:10px;max-width:none}}

/* ════════ EMPTY STATES (cart vide, wishlist vide, etc) ════════ */
.mnl-empty{text-align:center;padding:60px 30px;color:#1a1a1a}
.mnl-empty__icon{font-size:64px;line-height:1;margin-bottom:16px;display:inline-block;filter:drop-shadow(0 6px 16px rgba(15,23,42,.15))}
.mnl-empty__title{font-size:22px;font-weight:900;color:#0f172a;letter-spacing:-.02em;margin:0 0 8px}
.mnl-empty__sub{font-size:14px;color:#1a1a1a;margin:0 0 24px;line-height:1.5;font-weight:500}
.mnl-empty__btn{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;text-decoration:none;border-radius:100px;font-weight:800;font-size:14px;letter-spacing:-.005em;box-shadow:0 8px 22px rgba(249,115,22,.3);transition:transform .25s ease,box-shadow .25s ease;border:none;font-family:inherit;cursor:pointer}
.mnl-empty__btn:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(249,115,22,.45)}

/* ════════ PRINT STYLESHEET (impression propre) — Vague 114 : étendu pour cohérence avec print stylesheets locaux (1RM/bodyfat/macro/recettes) ════════ */
@media print{
  /* UI chrome supprimé */
  .mnl-floating-coach,.mnl-bnav,.mnl-wishlist-toggle,.mnl-back-top,.mnl-back-to-top,.mnl-scroll-progress,.mnl-page-loading-bar,.mnl-toast-stack,.mnl-sticky-cta,.mnl-sales-ticker,.mnl-search-overlay,.mnl-news-popup,.mnl-trust-strip,.mnl-hd-promo,header.mnl-hd,.mnl-foot,.mnl-ai-overlay,.mnl-pp3-sticky,.mnl-rv-widget,.mnl-rv-panel,.mnl-cookie,.mnl-net-status,[data-mnl-feedback],iframe,video{display:none!important}
  /* Reset base */
  body{background:#fff!important;color:#000!important;padding:0!important;font-size:11pt!important;line-height:1.5!important}
  *{box-shadow:none!important;text-shadow:none!important;animation:none!important;transition:none!important}
  /* Liens */
  a{color:#000!important;text-decoration:underline}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:.8em;color:#666}
  a[href^="#"]::after,a[href^="mailto:"]::after,a[href^="tel:"]::after,a[href^="javascript:"]::after{content:""}
  /* Vague 114 : aussi clean les inputs/buttons interactifs pour print */
  button,input[type=submit],input[type=button]{background:none!important;color:#000!important;border:1px solid #000!important;padding:4px 8px!important}
  input[type=text],input[type=email],input[type=tel],textarea,select{background:none!important;color:#000!important;border:1px solid #666!important;-webkit-print-color-adjust:exact}
  /* Pictures + figures */
  img{max-width:100%;page-break-inside:avoid;filter:grayscale(.4)}
  /* Headings + paragraphs */
  h1,h2,h3,h4{page-break-after:avoid;color:#000!important;font-weight:700!important}
  h1{font-size:18pt!important}
  h2{font-size:15pt!important}
  h3{font-size:13pt!important}
  p,li{orphans:3;widows:3}
  section{page-break-inside:avoid;margin-bottom:1cm}
  /* Vague 114 : tables impression clean */
  table{border-collapse:collapse!important;width:100%!important}
  th,td{border:1px solid #000!important;padding:4px 8px!important;background:#fff!important;color:#000!important}
  thead{display:table-header-group}
  tr{page-break-inside:avoid}
  /* Vague 114 : URL en bas de page pour traçabilité */
  @page{margin:1.5cm;size:A4}
}

/* ════════ TRUST STRIP STICKY (sous header, toutes pages) ════════ */
.mnl-trust-strip{position:sticky;top:0;z-index:90;background:linear-gradient(90deg,#0f172a 0%,#1e1b4b 50%,#0f172a 100%);color:#fff;border-bottom:1px solid rgba(255,255,255,.08);overflow:hidden;font-family:'DM Sans',-apple-system,sans-serif}
.mnl-trust-strip__track{display:flex;gap:64px;padding:12px 24px;animation:mnl-trust-scroll 80s linear infinite;width:max-content}
.mnl-trust-strip:hover .mnl-trust-strip__track{animation-play-state:paused}
.mnl-trust-strip__item{display:inline-flex;align-items:center;gap:10px;font-size:15px;font-weight:700;letter-spacing:.005em;white-space:nowrap;color:rgba(255,255,255,.92)}
.mnl-trust-strip__item-icon{font-size:18px;line-height:1;display:inline-block}
.mnl-trust-strip__item strong{color:#fff;font-weight:900}/* V1037 : charte Coach (fond sombre → blanc) */
.mnl-trust-strip__close{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.1);border:none;color:#fff;width:28px;height:28px;border-radius:50%;cursor:pointer;font-size:16px;line-height:1;display:grid;place-items:center;transition:background .2s ease;z-index:2}
.mnl-trust-strip__close:hover{background:rgba(255,255,255,.2)}
@keyframes mnl-trust-scroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
@media(max-width:720px){.mnl-trust-strip__track{gap:40px;padding:10px 16px;animation-duration:60s}.mnl-trust-strip__item{font-size:13px}.mnl-trust-strip__close{right:4px;width:22px;height:22px;font-size:13px}}
@media(prefers-reduced-motion:reduce){.mnl-trust-strip__track{animation:none;flex-wrap:wrap;width:auto;justify-content:center}}

/* Masque tous les éléments flottants quand un overlay important est ouvert (visual noise) */
body.mnl-ai-open .mnl-trust-strip,
body.mnl-ai-open .mnl-hd-promo,
body.mnl-ai-open .mnl-floating-coach,
body.mnl-ai-open .mnl-bnav,
body.mnl-ai-open .mnl-back-top,
body.mnl-ai-open .mnl-sticky-cta,
body.mnl-ai-open .mnl-news-popup,
body.mnl-ai-open .mnl-toast-stack,
body.mnl-ai-open .mnl-wishlist-toggle,
body.mnl-ai-open .mnl-sales-ticker,
body.mnl-ai-open .mnl-exit { display: none !important; }
/* P1 (fondateur 2026-06-05) : MÊME masquage quand le CONFIGURATEUR est ouvert (body.mnl-open) — un seul chemin visible, zéro élément flottant qui se superpose. NB : .mnl-toast-stack volontairement NON masqué ici (le configurateur s'en sert pour le feedback « complétez votre formule »). */
body.mnl-open .mnl-trust-strip,
body.mnl-open .mnl-hd-promo,
body.mnl-open .mnl-floating-coach,
body.mnl-open .mnl-global-coach-fab,
body.mnl-open .mnl-bnav,
body.mnl-open .mnl-back-top,
body.mnl-open .mnl-sticky-cta,
body.mnl-open .mnl-pp3-sticky,
body.mnl-open .mnl-news-popup,
body.mnl-open .mnl-wishlist-toggle,
body.mnl-open .mnl-sales-ticker,
body.mnl-open .mnl-exit { display: none !important; }

/* Fallback CSS-only si :has() supporté (browsers modernes) */
body:has(.mnl-ai-overlay.is-open) .mnl-trust-strip,
body:has(.mnl-ai-overlay.is-open) .mnl-hd-promo,
body:has(.mnl-overlay.is-open) .mnl-trust-strip,
body:has(.mnl-pickmod.is-open) .mnl-trust-strip { display: none !important; }

/* ════════ COUNTRY/LANGUAGE BADGE (in trust strip ou header) ════════ */
.mnl-geo-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:rgba(255,255,255,.1);border-radius:100px;font-size:11px;font-weight:700;letter-spacing:.02em}
.mnl-geo-badge-flag{font-size:14px;line-height:1}

/* ════════ COOKIE BANNER (RGPD) ════════ */
/* V904 (fondateur 2026-06-18) : refonte en MODALE CENTRÉE (maquette fondateur). .mnl-cookie = backdrop sombre
   flouté centré ; .mnl-cookie__box = carte premium. Les 3 boutons gardent une prominence ÉGALE (CNIL : refuser
   doit être aussi simple/visible qu'accepter — Refuser & Personnaliser pills sombres, Accepter pill orange). */
/* V905 (fondateur 2026-06-18) : bannière EN BAS (au lieu du centre) et NON bloquante — conteneur ancré en bas,
   fond transparent + pointer-events:none (la page reste utilisable au-dessus), la carte garde le design premium V904. */
.mnl-cookie{position:fixed;inset:0;z-index:99996;display:none;align-items:flex-end;justify-content:center;padding:16px;padding-bottom:max(16px,env(safe-area-inset-bottom,16px));background:transparent;pointer-events:none;font-family:'DM Sans',sans-serif;animation:mnl-cookie-fade .25s ease}/* V953 (audit) : bandeau LÉGAL remonté 9998→99996 (passait sous net-status/promo/age-gate) ; reste sous loading-bar/confetti 99999 */
.mnl-cookie.is-visible{display:flex}
.mnl-cookie__box{pointer-events:auto;width:100%;max-width:600px;background:linear-gradient(180deg,#212126,#161619);color:#fff;border:1px solid rgba(255,255,255,.12);border-radius:22px;padding:clamp(22px,3.4vw,32px);box-shadow:0 24px 70px rgba(0,0,0,.55);animation:mnl-cookie-in .4s cubic-bezier(.34,1.56,.64,1);outline:none}
.mnl-cookie__title{display:flex;align-items:center;gap:13px;font-size:clamp(21px,3.2vw,27px);font-weight:900;margin:0 0 14px;letter-spacing:-.015em;line-height:1.12}
.mnl-cookie__ico{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center}
.mnl-cookie__ico svg{display:block}
.mnl-cookie__text{font-size:clamp(14px,1.7vw,16px);color:rgba(255,255,255,.72);margin:0 0 26px;line-height:1.62;font-weight:500}
.mnl-cookie__text a{color:#fff;text-decoration:underline;text-underline-offset:2px;font-weight:600}/* V1037 : charte Coach */
.mnl-cookie__text--short{display:none} /* V949 : texte court réservé au mobile (≤520px), voir media query */
.mnl-cookie__btns{display:flex;flex-wrap:wrap;gap:12px}
.mnl-cookie__btn{flex:1 1 150px;min-width:150px;padding:15px 22px;border-radius:100px;font-family:inherit;font-size:15px;font-weight:800;border:none;cursor:pointer;transition:transform .18s ease,background .18s ease}
.mnl-cookie__btn--reject{background:rgba(255,255,255,.05);color:#fff;border:1px solid rgba(255,255,255,.2)}
.mnl-cookie__btn--reject:hover{background:rgba(255,255,255,.12)}
.mnl-cookie__btn--custom{background:rgba(255,255,255,.07);color:#fff;border:1px solid rgba(255,255,255,.24)}
.mnl-cookie__btn--custom:hover{background:rgba(255,255,255,.16);transform:translateY(-1px)}
.mnl-cookie__btn--accept{background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;box-shadow:0 10px 26px rgba(232,78,27,.25)} /* V985c : aplat Fiche Labo (ex-dégradé F97316→ea580c) */
.mnl-cookie__btn--accept:hover{background:#C93F12;transform:translateY(-1px)} /* V985c : hover aplat orange sang */
.mnl-cookie__btn:focus-visible{outline:2px solid #F97316;outline-offset:3px}
@media (max-width:520px){
  /* V948/V949 (audit mobile) : bottom-sheet COMPACTE collée en bas — ne couvre plus message/CTA/cartes objectif.
     V949 : texte court + plafond ~48vh + 3 boutons sur 1 ligne = footprint minimal au 1er contact. */
  .mnl-cookie{padding:0;align-items:flex-end}
  .mnl-cookie__box{width:100%;max-width:none;border-radius:18px 18px 0 0;padding:15px 15px max(14px,env(safe-area-inset-bottom,14px));max-height:48vh;overflow-y:auto;box-shadow:0 -14px 40px rgba(0,0,0,.5);animation:mnl-cookie-sheet .32s cubic-bezier(.34,1.56,.64,1)}
  .mnl-cookie__title{font-size:16px;gap:8px;margin:0 0 6px}
  .mnl-cookie__title .mnl-cookie__ico svg{width:22px;height:22px}
  .mnl-cookie__text{font-size:12.5px;line-height:1.45;margin:0 0 12px}
  .mnl-cookie__text--full{display:none}
  .mnl-cookie__text--short{display:inline}
  .mnl-cookie__btns{gap:8px;flex-wrap:nowrap}
  .mnl-cookie__btn{flex:1 1 0;min-width:0;padding:11px 6px;font-size:12.5px}
}
@keyframes mnl-cookie-sheet{from{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}
@keyframes mnl-cookie-fade{from{opacity:0}to{opacity:1}}
@keyframes mnl-cookie-in{0%{opacity:0;transform:translateY(20px) scale(.95)}100%{opacity:1;transform:translateY(0) scale(1)}}

/* ════════ EXIT INTENT POPUP (desktop only, dernière chance) ════════ */
.mnl-exit, .mnl-exit *, .mnl-exit *::before, .mnl-exit *::after{box-sizing:border-box}
/* V906 (fondateur 2026-06-18) : refonte popup de sortie au design maquette — carte 2 colonnes (offre −10€ orange à gauche · formulaire crème à droite), responsive (empilée en mobile), + état succès en colonne unique. */
.mnl-exit{position:fixed;inset:0;background:rgba(0,0,0,.62);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);z-index:99997;display:none;align-items:center;justify-content:center;padding:20px;animation:mnl-exit-in .35s ease}
.mnl-exit.is-visible{display:flex}
.mnl-exit__box{display:flex;width:100%;max-width:760px;background:#fff;border-radius:12px;overflow:hidden;position:relative;box-shadow:0 40px 100px rgba(0,0,0,.5);animation:mnl-exit-pop .5s cubic-bezier(.34,1.56,.64,1) .05s both;text-align:left;font-family:'Manrope',sans-serif}/* V985c : blanc pur + radius 12px + Manrope (crème #fdf6ee/24px/DM Sans morts) */
.mnl-exit__close{position:absolute;top:14px;right:14px;background:rgba(20,20,22,.82);border:none;width:34px;height:34px;border-radius:50%;color:#fff;cursor:pointer;font-size:18px;line-height:1;display:grid;place-items:center;transition:background .2s ease;z-index:3}
.mnl-exit__close:hover{background:#000}
/* colonne gauche (offre) */
/* V1034 (fondateur : gros blocs orange à adoucir) : colonne offre en ENCRE #101418 (comme le footer
   sombre et la carte Coach V642 — le point focal reste fort), le « −10 € » porte l'orange marque. */
.mnl-exit__left{flex:0 0 40%;max-width:300px;background:#101418;color:#fff;padding:34px 30px;display:flex;flex-direction:column;justify-content:center}
.mnl-exit__badge{align-self:flex-start;background:rgba(255,255,255,.12);color:#fff;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:7px 14px;border-radius:100px;margin-bottom:16px}
.mnl-exit__big{font-size:clamp(46px,7vw,62px);font-weight:900;line-height:.95;letter-spacing:-.03em;color:#E84E1B}
.mnl-exit__big-sub{font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;margin-top:6px}
.mnl-exit__big-sub sup{font-size:.6em}
.mnl-exit__chip{align-self:flex-start;margin-top:20px;background:rgba(255,255,255,.10);color:#fff;font-size:12px;font-weight:700;padding:11px 16px;border-radius:12px}/* V1034 : lisible sur encre */
.mnl-exit__note{font-size:12px;color:rgba(255,255,255,.85);line-height:1.45;margin:18px 0 0;font-weight:500}
/* colonne droite (formulaire) */
.mnl-exit__right{flex:1;min-width:0;padding:30px 32px;display:flex;flex-direction:column;color:#0f172a}
.mnl-exit__brand{display:flex;align-items:center;gap:9px;margin-bottom:16px}
.mnl-exit__logo{width:34px;height:34px;border-radius:9px;background:#E84E1B;color:#fff;font-size:11px;font-weight:900;display:grid;place-items:center;letter-spacing:.02em}
.mnl-exit__brand-name{font-size:19px;font-weight:900;color:#0f172a;letter-spacing:-.01em}
.mnl-exit__brand-name em{font-style:normal;color:#F0531A}
.mnl-exit__tag{align-self:flex-start;background:#FDEDE6;color:#C93F12;font-size:11px;font-weight:800;letter-spacing:0;text-transform:none;padding:6px 13px;border:1px solid #F7C4AE;border-radius:8px;margin-bottom:14px}/* V985c : accent-soft + #C93F12 (AA 11px) + casse normale + radius 8px */
.mnl-exit__title{font-size:clamp(22px,2.6vw,28px);font-weight:900;margin:0 0 10px;letter-spacing:-.02em;line-height:1.1;color:#0f172a}
.mnl-exit__title em{font-style:normal}
.mnl-exit__text{font-size:14px;color:#1a1a1a;margin:0 0 18px;line-height:1.5;font-weight:500}
.mnl-exit__form{display:flex;flex-direction:column;gap:12px;margin:0}
.mnl-exit__input{width:100%;padding:14px 16px;background:#fff;border:1.5px solid #DDE0E4;border-radius:13px;/* V985c : filet Fiche Labo (ex-#e4e2de) */color:#0f172a;font-size:16px;font-family:inherit;outline:none;-webkit-appearance:none;appearance:none;transition:border-color .2s ease,box-shadow .2s ease}
.mnl-exit__input::placeholder{color:#9aa3af}
.mnl-exit__input:focus{border-color:#F0531A;box-shadow:0 0 0 4px rgba(240,83,26,.14)}
.mnl-exit__input.is-invalid{border-color:#dc2626;box-shadow:0 0 0 4px rgba(220,38,38,.16)}
.mnl-exit__btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:15px 20px;background:#C2410C;/* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */color:#fff;text-decoration:none;border-radius:100px;font-weight:800;font-size:15px;letter-spacing:.02em;text-transform:uppercase;box-shadow:0 10px 24px rgba(240,83,26,.34);transition:transform .2s ease;text-align:center;border:none;cursor:pointer}
.mnl-exit__btn:hover{transform:translateY(-2px)}
.mnl-exit__secure{font-size:11.5px;color:#1a1a1a;margin:14px 0 0;font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.mnl-exit__secure a{color:#C93F12;text-decoration:underline}/* V985c : #C93F12 (AA petit texte) */
.mnl-exit__msg{min-height:14px;margin:8px 0 0;font-size:12px;font-weight:700;text-align:left;color:#dc2626}
/* état SUCCÈS (après envoi) : colonne unique centrée, fond clair */
.mnl-exit__box.is-reveal{display:block;max-width:430px;background:#fff;text-align:center;padding:38px 34px}
.mnl-exit__icon{margin-bottom:10px;color:#F0531A}
.mnl-exit__box.is-reveal .mnl-exit__title{margin-top:0}
.mnl-exit__code{display:inline-block;padding:12px 22px;background:#FDEDE6;border:2px dashed #F7C4AE;border-radius:12px;font-size:18px;font-weight:900;letter-spacing:.15em;color:#C93F12;margin:6px 0 18px;cursor:pointer;transition:transform .2s ease}/* V985c : accent-soft + bordure orange douce + #C93F12 */
.mnl-exit__code:hover{transform:scale(1.05)}
.mnl-exit__box.is-reveal .mnl-exit__btn{max-width:100%}
.mnl-exit__skip{display:block;margin:14px auto 0;background:none;border:none;color:#1a1a1a;font-size:12px;cursor:pointer;text-decoration:underline;font-family:inherit}
/* mobile : on empile les 2 colonnes */
@media (max-width:640px){
  .mnl-exit__box{flex-direction:column;max-width:430px}
  .mnl-exit__left{flex:none;max-width:none;padding:24px 26px 22px}
  .mnl-exit__big{font-size:48px}
  .mnl-exit__chip{margin-top:16px}
  .mnl-exit__right{padding:24px 26px 28px}
}
@keyframes mnl-exit-in{from{opacity:0}to{opacity:1}}
@keyframes mnl-exit-pop{0%{opacity:0;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}
/* ═══ V907 (fondateur 2026-06-18) : finition maquette — icône cadeau, VRAI logo, icône enveloppe dans le champ, lien « Non merci » sous la carte, lignes déco discrètes, carte élargie ~940px, états chargement + focus, reduced-motion. ═══ */
.mnl-exit__box{max-width:940px}
/* colonne gauche : lignes déco semi-transparentes en background-layering (toujours derrière le contenu, aucun z-index requis) */
.mnl-exit__left{position:relative;overflow:hidden;flex-basis:38%;max-width:360px;background:#101418}/* V1034 : encre (ex-orange plein) */
.mnl-exit__deco{display:none} /* span réservé — déco rendue via background ci-dessus */
.mnl-exit__gift{display:block;margin:2px 0 14px}
.mnl-exit__gift svg{display:block}
/* champ e-mail avec icône enveloppe à gauche */
.mnl-exit__field{position:relative;display:flex;align-items:center}
.mnl-exit__field-ico{position:absolute;left:15px;top:50%;transform:translateY(-50%);color:#9aa3af;display:inline-flex;pointer-events:none}
.mnl-exit__field .mnl-exit__input{padding-left:44px}
/* ═══ V1321b (fondateur 17/08) : les carrés « MNL » du site laissent place au monogramme M-N-L
   vertical de l'étiquette (vectorisé V1318). Ce modificateur neutralise la plaque (fond, ombre,
   rayon, padding) — la hauteur vient du conteneur (tous fixes, sauf le configurateur qui pose la
   sienne en ligne), la couleur est posée par le fill du SVG : noir #101418 sur fond clair,
   blanc sur fond sombre (footer, fin de stories). ═══ */
.mnl-logo-v{background:none !important;box-shadow:none !important;border-radius:0 !important;width:auto !important;padding:0 !important}
.mnl-logo-v svg{display:block;height:100%;width:auto}

/* vrai logo (image settings.logo si uploadée) */
.mnl-exit__logo-img{height:34px;width:auto;max-width:200px;display:block;object-fit:contain}
/* état CHARGEMENT (spinner) + focus visibles */
.mnl-exit__btn.is-loading{opacity:.88;cursor:wait}
.mnl-exit__spin{width:15px;height:15px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;display:inline-block;margin-right:2px;vertical-align:-2px;animation:mnl-exit-spin .7s linear infinite}
@keyframes mnl-exit-spin{to{transform:rotate(360deg)}}
.mnl-exit__close:focus-visible,.mnl-exit__btn:focus-visible{outline:2px solid #fff;outline-offset:2px}
.mnl-exit__input:focus-visible{outline:none}
/* mobile : carte empilée + COMPRESSÉE (V908 fondateur : « tout doit rentrer sans scroll ») + safe-area */
@media (max-width:640px){
  .mnl-exit{padding:12px max(12px,env(safe-area-inset-left,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-right,0px))}
  /* max-height = simple filet de sécurité (la compression ci-dessous fait tenir le contenu SANS scroll sur un téléphone standard) */
  .mnl-exit__box{max-width:calc(100% - 0px);max-height:calc(100dvh - 24px);overflow-y:auto;-webkit-overflow-scrolling:touch}
  /* V907 : la bande orange remplit TOUTE la largeur en mobile (override base max-width:360px / flex-basis:38% = desktop) */
  .mnl-exit__left{max-width:none;flex-basis:auto;padding:15px 22px 13px}
  /* V908 : compression verticale de chaque bloc pour tenir à l'écran */
  .mnl-exit__badge{margin-bottom:9px;padding:6px 12px;font-size:10px}
  .mnl-exit__gift{margin:0 0 5px}
  .mnl-exit__gift svg{width:30px;height:30px}
  .mnl-exit__big{font-size:38px}
  .mnl-exit__big-sub{font-size:11px;margin-top:2px}
  .mnl-exit__chip{margin-top:9px;padding:8px 13px;font-size:11px}
  .mnl-exit__note{margin-top:8px;font-size:11px}
  .mnl-exit__right{padding:14px 22px 16px}
  .mnl-exit__brand{margin-bottom:9px}
  .mnl-exit__brand-name{font-size:17px}
  .mnl-exit__logo{width:30px;height:30px}
  .mnl-exit__logo-img{height:30px}
  .mnl-exit__tag{margin-bottom:8px;padding:5px 11px}
  .mnl-exit__title{font-size:20px;margin-bottom:6px;line-height:1.12}
  .mnl-exit__text{font-size:12.5px;margin-bottom:12px;line-height:1.4}
  .mnl-exit__form{gap:9px}
  .mnl-exit__input{padding:12px 14px;font-size:16px}
  .mnl-exit__field .mnl-exit__input{padding-left:42px}
  .mnl-exit__btn{padding:13px 18px;font-size:14px}
  .mnl-exit__secure{margin-top:9px;font-size:10.5px}
  .mnl-exit__msg{margin-top:5px}
}
/* accessibilité : respect de prefers-reduced-motion */
@media (prefers-reduced-motion:reduce){
  .mnl-exit,.mnl-exit__box,.mnl-exit__spin{animation:none!important}
  .mnl-exit__btn,.mnl-exit__code{transition:none!important}
  .mnl-exit__btn:hover{transform:none!important}
}

/* ════════ STOCK URGENCY BAR (top of product pages) ════════ */
.mnl-stock-urg{position:relative;background:linear-gradient(90deg,#fef3c7,#fde68a);color:#78350f;padding:10px 20px;text-align:center;font-size:13px;font-weight:700;border-bottom:1px solid #fbbf24;font-family:'DM Sans',sans-serif}
.mnl-stock-urg strong{color:#92400e;font-weight:900}
.mnl-stock-urg__pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:#ef4444;margin-right:6px;animation:mnl-pulse-dot 1.5s ease-in-out infinite}
@keyframes mnl-pulse-dot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}

/* ════════ FREE SHIPPING PROGRESS (cart drawer add-on) ════════ */
.mnl-ship-prog{padding:14px 16px;background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1px solid #86efac;border-radius:14px;margin:0 0 16px;font-family:'DM Sans',sans-serif}
.mnl-ship-prog__top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;font-weight:700;color:#166534}
.mnl-ship-prog__bar{width:100%;height:6px;background:rgba(22,101,52,.15);border-radius:100px;overflow:hidden}
.mnl-ship-prog__fill{height:100%;background:linear-gradient(90deg,#22c55e,#16a34a);border-radius:100px;transition:width .5s cubic-bezier(.34,1.56,.64,1)}
.mnl-ship-prog.is-unlocked{background:linear-gradient(135deg,#fef3c7,#fde68a);border-color:#fbbf24;color:#78350f}
.mnl-ship-prog.is-unlocked .mnl-ship-prog__top{color:#92400e}

/* ════════════════════════════════════════════════════════════════
   POLISH GLOBAL (Vague 6) — transitions, hover states, micro-interactions
   ════════════════════════════════════════════════════════════════ */

/* Transitions élégantes par défaut sur tous les liens et boutons interactifs */
a, button, [role="button"], input[type="submit"], input[type="button"], .mnl-cta__btn, .mnl-pp3-cta__btn { transition: color .2s ease, background-color .25s ease, border-color .25s ease, transform .2s cubic-bezier(.34,1.56,.64,1), box-shadow .25s ease, opacity .2s ease; }

/* Image cards hover lift */
.mnl-coll__card, .mnl-blog__card, .mnl-cols__card, .mnl-srch__card, .mnl-ath-card, .mnl-pp3-pck { transition: transform .3s cubic-bezier(.22,1,.36,1), box-shadow .3s ease, border-color .25s ease; }
.mnl-coll__card:hover, .mnl-blog__card:hover, .mnl-cols__card:hover { transform: translateY(-6px); box-shadow: 0 20px 40px rgba(15,23,42,.12); }

/* Inputs : focus ring élégant aux couleurs MNL */
input:not([type="checkbox"]):not([type="radio"]):focus, textarea:focus, select:focus { outline: none; box-shadow: 0 0 0 3px rgba(232,78,27,.2); border-color: var(--mnl-color-accent, #E84E1B) !important; }

/* Scrollbar custom (Webkit) */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: rgba(15,23,42,.04); }
::-webkit-scrollbar-thumb { background: rgba(15,23,42,.18); border-radius: 100px; transition: background .2s ease; }
::-webkit-scrollbar-thumb:hover { background: rgba(16,20,24,.45); } /* V1037 : charte Coach */

/* Selection text aux couleurs MNL */
::selection { background: rgba(232,78,27,.25); color: #0f172a; }

/* Image fade-in à load */
img.mnl-lazy { opacity: 0; transition: opacity .4s ease; }
img.mnl-lazy.is-loaded { opacity: 1; }

/* Typography fluide globale (clamp pour responsive natif) */
h1 { font-size: clamp(28px, 5vw, 48px); line-height: 1.1; letter-spacing: -.025em; }
h2 { font-size: clamp(24px, 3.5vw, 36px); line-height: 1.15; letter-spacing: -.02em; }
h3 { font-size: clamp(20px, 2.5vw, 28px); line-height: 1.2; letter-spacing: -.015em; }

/* Sectional spacing uniforme entre sections */
.shopify-section + .shopify-section { margin-top: 0; }

/* V324 : duplicate body.mnl-page-loading retiré — conflictait avec ligne 66 (opacity:0) + ligne 67 (opacity:1 transition .25s) + ligne 929 (animation mnl-page-enter .35s). 3 règles concurrentes sur body opacity = saccade visible au page transition (notamment notre-histoire/engagements). Source unique de vérité = bloc body fade-in lignes 65-67. */

/* Print styles minimaux */
@media print {
  a[href]::after { content: " (" attr(href) ")"; font-size: 80%; color: #666; }
  body { font-size: 12pt; line-height: 1.4; color: #000; background: #fff; }
}

/* Reduce motion respect (déjà partiel) */
@media (prefers-reduced-motion: reduce) {
  .mnl-coll__card:hover, .mnl-blog__card:hover { transform: none; }
}

/* Container responsive uniforme (utilisable partout) */
.mnl-container { max-width: 1280px; margin: 0 auto; padding: 0 24px; }
@media (max-width: 720px) { .mnl-container { padding: 0 16px; } }

/* Boutons utility globaux (.mnl-btn--primary etc. — réutilisables) */
.mnl-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 14px 28px; border-radius: 8px; font-weight: 800; font-size: 15px; letter-spacing: -.005em; text-decoration: none; cursor: pointer; border: none; font-family: inherit; line-height: 1.2; }/* V985c : radius CTA 8px (ex-pill 100px) */
.mnl-btn--primary { background: #C2410C; /* V1037 : aplat V974 (dernier CTA générique en dégradé) */ /* V1170 : #C2410C (texte blanc dessus) — 3,79:1 → 5,18:1, seuil WCAG AA */ color: #fff; box-shadow: 0 8px 22px rgba(232,78,27,.3); transition: transform .2s ease, box-shadow .2s ease, background .2s ease; }
.mnl-btn--primary:hover { transform: translateY(-2px); background: #C93F12; box-shadow: 0 12px 28px rgba(232,78,27,.4); }
.mnl-btn--ghost { background: transparent; color: var(--mnl-color-text, #0f172a); border: 1.5px solid var(--mnl-color-border, #e5e7eb); }
.mnl-btn--ghost:hover { border-color: var(--mnl-color-accent, #E84E1B); color: var(--mnl-color-accent, #E84E1B); }
.mnl-btn--lg { padding: 18px 36px; font-size: 17px; }
.mnl-btn--sm { padding: 10px 20px; font-size: 13px; }

/* ════════════════════════════════════════════════════════════════════════════
   VAGUE 151 — COORDINATION FIXED/STICKY ELEMENTS (anti-chevauchement)
   Audit a révélé 7 éléments top:0, 7 éléments bottom:90px, + collisions
   FAB/timer/back-to-top. Ce bloc gère les coexistences via :has().
   ════════════════════════════════════════════════════════════════════════════ */

/* PDP V3 : .mnl-back-to-top devient redondante avec .mnl-pp3-top → hide */
body:has(.mnl-pp3) .mnl-back-to-top { display: none !important; }

/* Quand .mnl-sticky-cta visible, push .mnl-timer + .mnl-fab au-dessus pour pas chevaucher */
body:has(.mnl-sticky-cta.is-visible) .mnl-timer {
  bottom: calc(150px + env(safe-area-inset-bottom, 0px)) !important;
}
@media (max-width: 720px) {
  body:has(.mnl-sticky-cta.is-visible) .mnl-timer { bottom: calc(220px + env(safe-area-inset-bottom, 0px)) !important; }
  body:has(.mnl-sticky-cta.is-visible) .mnl-geo-banner,
  body:has(.mnl-sticky-cta.is-visible) .mnl-pwa-install,
  body:has(.mnl-sticky-cta.is-visible) .mnl-error-banner { bottom: calc(140px + env(safe-area-inset-bottom, 0px)) !important; }
}

/* Net-status visible → décaler promo-banner sous lui (sinon empilement invisible top) */
body:has(.mnl-net-status.is-visible) .mnl-promo-banner { top: 36px !important; }

/* Empilement droit desktop — coordonne les FAB top-right pour ne pas se chevaucher */
@media (min-width: 721px) {
  body:has(.mnl-notif-center.is-open) .mnl-loyalty-badge,
  body:has(.mnl-notif-center.is-open) .mnl-wishlist-toggle { visibility: hidden; }
}

/* iPhone safe-area sur tous les fixed bottom éléments restants oubliés */
.mnl-sales-ticker { bottom: max(24px, env(safe-area-inset-bottom, 24px)) !important; }
.mnl-error-banner { bottom: max(90px, calc(70px + env(safe-area-inset-bottom, 0px))) !important; }
.mnl-kbd-seq-indicator { bottom: max(90px, calc(70px + env(safe-area-inset-bottom, 0px))) !important; }

/* PDP V3 — .mnl-pp3-buyer doit respecter safe-area (sinon chevauche .mnl-pp3-sticky) */
@media (max-width: 720px) {
  .mnl-pp3-buyer { bottom: calc(90px + env(safe-area-inset-bottom, 0px)) !important; }
}

/* .mnl-pp3-sticky z-index au-dessus de .mnl-bnav (les 2 étaient à 8500 → tie-break par DOM order) */
.mnl-pp3-sticky { z-index: 8600 !important; }

/* .mnl-pp3-nav (sub-nav scroll) doit passer SOUS .mnl-bnav et drawer, mais AU-DESSUS du contenu */
.mnl-pp3-nav { z-index: 130 !important; }

/* ════════════════════════════════════════════════════════════════════════════
   VAGUE 151 W2 — SAFE-AREA iPhone partout (notch top + home indicator bottom)
   ════════════════════════════════════════════════════════════════════════════ */

/* Banners top : padding-top respecte safe-area-inset-top (iPhone notch) */
.mnl-promo-banner { padding-top: calc(10px + env(safe-area-inset-top, 0px)) !important; }
.mnl-net-status { padding-top: calc(8px + env(safe-area-inset-top, 0px)) !important; }
.mnl-notif-center { top: calc(70px + env(safe-area-inset-top, 0px)) !important; }

/* Banners bottom : bottom respecte safe-area-inset-bottom (home indicator) */
.mnl-pwa-install { bottom: calc(90px + env(safe-area-inset-bottom, 0px)) !important; }
.mnl-geo-banner { bottom: calc(90px + env(safe-area-inset-bottom, 0px)) !important; }
.mnl-error-banner { bottom: calc(90px + env(safe-area-inset-bottom, 0px)) !important; }

/* Tour overlay card : cap width pour pas déborder écrans 320px */
.mnl-tour-card { max-width: min(320px, calc(100vw - 32px)) !important; }

/* Confirm overlay actions : column si écran ultra-étroit */
@media (max-width: 380px) {
  .mnl-confirm-box__actions { flex-direction: column !important; gap: 10px !important; }
  .mnl-confirm-box__actions > * { width: 100% !important; }
}

/* News popup outer padding clamp pour tolérance écrans étroits */
.mnl-news-popup { padding: clamp(12px, 4vw, 24px) !important; }

/* Newsletter popup btn : si texte long uppercase, autorise wrap (sécurité supplémentaire au @media déjà ajouté) */
@media (max-width: 720px) {
  .mnl-news-popup__btn { white-space: normal !important; line-height: 1.25 !important; }
}

/* ════════ V523 PERF MOBILE : pause animations infinite DÉCORATIVES sur mobile ════════
   Audit V520 : ~115 animations infinite drainent CPU/batterie sur Android mid-range.
   On désactive UNIQUEMENT les animations d'ATTENTION purement décoratives (pulse/glow/flicker
   "regarde-moi") sur ≤720px. On PRÉSERVE tous les loaders fonctionnels (spinners, skeletons,
   barres de chargement, dots de typing) qui communiquent un état réel à l'user.
   Gain estimé : ~20-30% charge GPU/CPU idle sur mobile = meilleure autonomie + scroll plus fluide. */
@media (max-width: 720px) {
  .mnl-global-coach-fab,            /* FAB attention pulse 4s */
  .mnl-bnav__btn--coach.is-active .mnl-bnav__icon, /* bottom nav coach pulse */
  .mnl-rv-widget,                   /* recently-viewed attract */
  .mnl-hotspot,                     /* product image hotspots pulse */
  .mnl-streak__flame,               /* streak flame flicker */
  .mnl-stock,                       /* stock indicator pulse (l'info reste lisible sans pulse) */
  .mnl-stock__dot,
  .mnl-inventory__dot,
  .mnl-tracker__step.is-current .mnl-tracker__icon { /* order tracker current pulse */
    animation: none !important;
  }
}

/* ════════ V876 ANTI-JANK SCROLL MOBILE (fondateur : « la page produit saccade ») ════════
   Pattern V585 généralisé : backdrop-filter sur un élément fixe/sticky visible pendant le scroll
   = recalcul du flou à CHAQUE frame (très coûteux iOS/Android) alors que les fonds sont déjà
   opaques à 92-98 %% → à l œil le flou est invisible. Mobile : fond quasi opaque, zéro blur.
   Desktop (GPU) : inchangé. ════════ */
@media (max-width: 749px) {
  .mnl-subnav { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; background: rgba(255,255,255,.98) !important; }
  .mnl-sticky-variants { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; background: rgba(255,255,255,.99) !important; }
  .mnl-wishlist-btn, .mnl-qv-trigger { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; background: rgba(255,255,255,.95) !important; }
}


/* ════════════════════════════════════════════════════════════════════════════
   V974 — DIRECTION 03 « FICHE LABO » (choix fondateur 2026-07-07, maquette validée)
   Géométrie des CTA : angles techniques 8px + casse normale, UNE famille de boutons
   sur tout le site (l'audit V973 avait relevé pill 100px / 8-16px / MAJUSCULES mélangés).
   Les couleurs sont portées par les tokens (#E84E1B aplat) + sed gradients→aplat.
   Sélecteurs inertes tolérés (classe absente = règle sans effet). Dernière couche
   de la cascade — toute évolution du design DOIT passer ici, pas en inline.
   ════════════════════════════════════════════════════════════════════════════ */
.mnl-hero__btn, .mnl-faq__btn, .mnl-how__btn, .mnl-prodcards__btn, .mnl-prod__atc,
.mnl-fbuy__atc, .mnl-fbuy__sticky-btn, .mnl-fhub__cta-btn, .mnl-sport__btn,
.mnl-cart__promo-btn, .mnl-cart__empty-btn, .mnl-foot__nl-btn, .mnl-srch-cta__btn,
.mnl-pp3-cta__btn, .mnl-pp3-persona__btn, .mnl-pp3-cmp__cta-btn, .mnl-exit__btn,
.mnl-welcome-back__cta, .mnl-hd-mega__cta, .mnl-hd-acc-dd__btn, .mnl-hd-cart-preview__cta,
.mnl-hd-cart__checkout, .mnl-hd-cart__empty-btn {
  border-radius: 8px !important;
  text-transform: none !important;
}

/* ════════════════════════════════════════════════════════════════════════════
   V984 — MOTION SYSTEM MNL (demande fondateur « fais un effort design animation »)
   Un seul langage de mouvement, courbe maison cubic-bezier(.22,1,.36,1) :
   ① reveal au scroll en cascade (JS pose data-mnl-reveal + is-in via IntersectionObserver ;
      l'opacité 0 n'est appliquée QUE si html.mnl-motion → no-JS = tout visible, zéro FOUC)
   ② micro-interactions CTA (lift hover + press) ③ badge panier pop ④ zoom doux images.
   Perf 90% mobile : transform/opacity uniquement (composité GPU). prefers-reduced-motion → off.
   ════════════════════════════════════════════════════════════════════════════ */
@keyframes mnlPop { 0%{transform:scale(1)} 35%{transform:scale(1.4)} 70%{transform:scale(.9)} 100%{transform:scale(1)} }

html.mnl-motion [data-mnl-reveal] { opacity: 0; transform: translateY(16px); }
html.mnl-motion [data-mnl-reveal].is-in {
  opacity: 1; transform: none;
  transition: opacity .6s cubic-bezier(.22,1,.36,1), transform .6s cubic-bezier(.22,1,.36,1);
  transition-delay: var(--mnl-reveal-delay, 0ms);
}

/* CTA — lift + press (la famille V974) */
.mnl-hero__btn, .mnl-faq__btn, .mnl-how__btn, .mnl-prodcards__btn, .mnl-prod__atc,
.mnl-fbuy__atc, .mnl-fbuy__sticky-btn, .mnl-fhub__cta-btn, .mnl-sport__btn,
.mnl-cart__promo-btn, .mnl-cart__empty-btn, .mnl-cart__checkout, .mnl-foot__nl-btn,
.mnl-pp3-cta__btn, .mnl-pp3-persona__btn, .mnl-pp3-cmp__cta-btn, .mnl-exit__btn,
.mnl-welcome-back__cta, .mnl-hd-mega__cta, .mnl-hd-desktop-nav__link--featured,
.mnl-wizard-nav__next, .mnl-sticky-atc__btn, .mnl-atc {
  /* V1266 : `translate` et `scale` ajoutés à la liste — les états :hover/:active
     ci-dessous ont changé de propriété (voir leurs commentaires) et seraient
     devenus instantanés sans cette ligne. `transform` est conservé : d'autres
     règles du thème l'animent encore sur ces mêmes éléments. */
  transition: translate .18s cubic-bezier(.22,1,.36,1), scale .18s cubic-bezier(.22,1,.36,1), transform .18s cubic-bezier(.22,1,.36,1), box-shadow .18s ease, background-color .18s ease !important;
}
.mnl-hero__btn:hover, .mnl-faq__btn:hover, .mnl-how__btn:hover, .mnl-prodcards__btn:hover, .mnl-prod__atc:hover,
.mnl-fbuy__atc:hover, .mnl-fbuy__sticky-btn:hover, .mnl-fhub__cta-btn:hover, .mnl-sport__btn:hover,
.mnl-cart__promo-btn:hover, .mnl-cart__empty-btn:hover, .mnl-cart__checkout:hover, .mnl-foot__nl-btn:hover,
.mnl-pp3-cta__btn:hover, .mnl-pp3-persona__btn:hover, .mnl-pp3-cmp__cta-btn:hover, .mnl-exit__btn:hover,
.mnl-welcome-back__cta:hover, .mnl-hd-mega__cta:hover, .mnl-hd-desktop-nav__link--featured:hover,
.mnl-wizard-nav__next:hover, .mnl-sticky-atc__btn:hover, .mnl-atc:hover {
  /* V1266 : `transform: translateY(-1.5px)` → `translate`. Deux raisons.
     ① `transform` est une propriété unique : cette règle ÉCRASE le
        `transform: translateY(-50%)` de tout membre de la famille qui se
        positionne ainsi. `translate` se COMPOSE, il ne peut plus rien casser.
     ② Le socle (mnl-motion.css §2.2) pose lui aussi une élévation, en
        `translate`, à (0,4,0). Tant que les deux propriétés étaient DIFFÉRENTES,
        les deux élévations s'ADDITIONNAIENT (−1,5 + −1 = −2,5 px mesuré au banc
        V1266). Écrites dans la même propriété, elles se départagent par la
        cascade et il n'en reste qu'une : −1 px. C'est l'« échelle unique »
        annoncée en V1261, désormais vraie. */
  translate: 0 -1.5px;
  box-shadow: 0 8px 22px rgba(232,78,27,.24);
}
.mnl-hero__btn:active, .mnl-faq__btn:active, .mnl-how__btn:active, .mnl-prodcards__btn:active, .mnl-prod__atc:active,
.mnl-fbuy__atc:active, .mnl-fbuy__sticky-btn:active, .mnl-fhub__cta-btn:active, .mnl-sport__btn:active,
.mnl-cart__promo-btn:active, .mnl-cart__empty-btn:active, .mnl-cart__checkout:active, .mnl-foot__nl-btn:active,
.mnl-pp3-cta__btn:active, .mnl-pp3-persona__btn:active, .mnl-pp3-cmp__cta-btn:active, .mnl-exit__btn:active,
.mnl-welcome-back__cta:active, .mnl-hd-mega__cta:active, .mnl-hd-desktop-nav__link--featured:active,
.mnl-wizard-nav__next:active, .mnl-sticky-atc__btn:active, .mnl-atc:active {
  /* V1266 : même conversion, même raison. `transform: translateY(0) scale(.975)`
     détruisait le recentrage d'un membre positionné, et se MULTIPLIAIT avec
     l'enfoncement du socle (.975 × .97 = .946). En `scale`, le socle (0,9,0)
     tranche seul : .97. */
  translate: 0 0;
  scale: .975;
  box-shadow: 0 3px 10px rgba(232,78,27,.18);
  transition-duration: .07s !important;
}

/* Badge panier — pop à l'ajout */
.mnl-hd-badge.is-pop { animation: mnlPop .55s cubic-bezier(.22,1,.36,1); }

/* Images de cartes — zoom doux au survol (les conteneurs ont overflow:hidden) */
.mnl-obj__card img, .mnl-formulas__card img, .mnl-prodcards__media img {
  transition: transform .55s cubic-bezier(.22,1,.36,1);
}
.mnl-obj__card:hover img, .mnl-formulas__card:hover img, .mnl-prodcards__media:hover img {
  transform: scale(1.045);
}

@media (prefers-reduced-motion: reduce) {
  html.mnl-motion [data-mnl-reveal] { opacity: 1 !important; transform: none !important; transition: none !important; }
  .mnl-hd-badge.is-pop { animation: none; }
  .mnl-obj__card img, .mnl-formulas__card img, .mnl-prodcards__media img { transition: none; }
}

/* Pages politiques Shopify : tableaux larges scrollables sur mobile (overflow-y:hidden obligatoire — sinon Y auto → micro-scroll qui bloque le swipe) */
.shopify-policy__body table{display:block;max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}

/* ════════════════════════════════════════════════════════════════════════════
   V1170 — ACCESSIBILITÉ MOBILE (audit terrain fiche produit, iPhone 375×812)
   ① Zones tactiles portées à 44×44 px SANS toucher à l'apparence : un
      pseudo-élément transparent, en position:absolute (donc hors flux, aucune
      largeur ajoutée → zéro débordement horizontal), déborde du bouton. Aucun
      pixel visible n'est modifié, les débords restent dans les gouttières
      existantes pour ne jamais voler le clic d'un voisin.
   ② Focus clavier : partout où outline:none supprimait l'anneau sans le
      remplacer, on rétablit un :focus-visible. :focus-visible ne se déclenche
      qu'à la navigation clavier → aucun contour à la souris ni au doigt.
   ③ Champs de saisie < 16 px passés à 16 px en mobile uniquement : sous 16 px
      iOS zoome automatiquement au focus et casse la mise en page.
   ════════════════════════════════════════════════════════════════════════════ */

/* ── ① ZONES TACTILES ─────────────────────────────────────────────────────────
   Base commune du pseudo-élément d'extension (invisible, non peint). */
.mnl-sub-banner__close::after,
.mnl-news-popup__close::after,
.mnl-news-popup__success-copy::after,
.mnl-news-popup__success-close::after,
.mnl-news-popup__no::after,
.mnl-toast__action::after,
.mnl-zoom-overlay__nav::after,
.mnl-rv-panel__close::after,
.mnl-qv__close::after,
.mnl-kbd-help__close::after,
.mnl-notif-center__clear::after,
.mnl-compare-bar__item-remove::after,
.mnl-geo-banner__close::after,
.mnl-cookie-prefs__toggle::before,
.mnl-timer__close::after,
.mnl-recos__nav-btn::after,
.mnl-tour-card__skip::after,
.mnl-promo-strip__close::after,
.mnl-filter-chip__remove::after,
.mnl-filter-chips__clear::after,
.mnl-multiselect__clear::after,
.mnl-error-banner__close::after,
.mnl-upload__preview-remove::after,
.mnl-tts-btn::after,
.mnl-audio__play::after,
.mnl-drawer__close::after,
.mnl-carousel__dot::after,
.mnl-carousel__btn::after,
.mnl-callout__close::after,
.mnl-tip-rotator__nav-btn::after,
.mnl-welcome-back__close::after,
.mnl-mic-btn::after,
.mnl-sfx-toggle::after,
.mnl-sheet__close::after,
.mnl-input-clear__btn::after,
.mnl-qna__vote::after,
.mnl-cd__sfl::after,
.mnl-video__btn::after,
.mnl-trust-strip__close::after,
.mnl-exit__close::after,
.mnl-exit__skip::after { content: ""; position: absolute; display: block; background: none; border: none; pointer-events: auto; }

/* V1170 : les éléments ci-dessous étaient en position statique — position:relative
   ancre le pseudo-élément sans rien déplacer (aucun décalage de mise en page). */
.mnl-sub-banner__close,
.mnl-news-popup__success-copy,
.mnl-news-popup__success-close,
.mnl-news-popup__no,
.mnl-toast__action,
.mnl-notif-center__clear,
.mnl-compare-bar__item-remove,
.mnl-geo-banner__close,
.mnl-recos__nav-btn,
.mnl-tour-card__skip,
.mnl-filter-chip__remove,
.mnl-filter-chips__clear,
.mnl-multiselect__clear,
.mnl-error-banner__close,
.mnl-tts-btn,
.mnl-audio__play,
.mnl-drawer__close,
.mnl-carousel__dot,
.mnl-callout__close,
.mnl-tip-rotator__nav-btn,
.mnl-welcome-back__close,
.mnl-mic-btn,
.mnl-sfx-toggle,
.mnl-sheet__close,
.mnl-qna__vote,
.mnl-cd__sfl,
.mnl-video__btn,
.mnl-exit__skip { position: relative; }

/* V1170 : croix et ronds de 36 px → 44 px (débord 4 px, gouttières ≥ 6 px). */
.mnl-welcome-back__close::after,
.mnl-drawer__close::after,
.mnl-qv__close::after,
.mnl-kbd-help__close::after,
.mnl-mic-btn::after,
.mnl-audio__play::after { inset: -4px; }
/* V1170 : flèches du carrousel « recommandations » — 36 px, gouttière 6 px :
   débord latéral limité à 3 px pour ne pas recouvrir la flèche voisine. */
.mnl-recos__nav-btn::after { inset: -4px -3px; }
/* V1170 : croix de 34 px → 44 px. */
.mnl-exit__close::after { inset: -5px; }
/* V1170 : croix de 32/36 px → ≥ 44 px (la croix newsletter tombe à 32 px en mobile). */
.mnl-news-popup__close::after,
.mnl-news-popup__success-copy::after,
.mnl-sheet__close::after { inset: -6px; }
/* V1170 : croix de 28 px → 44 px. */
.mnl-promo-strip__close::after,
.mnl-trust-strip__close::after { inset: -8px; }
/* V1170 : croix de 26 px (padding 4/8) → 44 px, gouttière 12 px conservée. */
.mnl-sub-banner__close::after { inset: -9px; }
/* V1170 : croix de 24 px → 44 px. */
.mnl-rv-panel__close::after,
.mnl-geo-banner__close::after,
.mnl-timer__close::after,
.mnl-callout__close::after,
.mnl-error-banner__close::after { inset: -10px; }
/* V1170 : croix de 22 px → 44 px. */
.mnl-input-clear__btn::after,
.mnl-upload__preview-remove::after { inset: -11px; }
/* V1170 : ronds de 40 px → 44 px (flèches de galerie mobile + carrousel). */
.mnl-zoom-overlay__nav::after,
.mnl-carousel__btn::after { inset: -2px; }
/* V1170 : bascule cookies 44×24 → 44×44 (::before car ::after porte déjà le curseur). */
.mnl-cookie-prefs__toggle::before { inset: -10px 0; }
/* V1170 : boutons-texte plats (pills et liens) → 44 px de haut, largeur inchangée. */
.mnl-qna__vote::after,
.mnl-cd__sfl::after,
.mnl-sfx-toggle::after { inset: -10px 0; }
.mnl-multiselect__clear::after { inset: -9px 0; }
.mnl-filter-chips__clear::after,
.mnl-tour-card__skip::after,
.mnl-news-popup__success-close::after { inset: -8px 0; }
.mnl-tts-btn::after { inset: -7px 0; }
/* V1170 : liens de refus (« Non merci ») — 44 px de haut, débord latéral prudent. */
.mnl-news-popup__no::after,
.mnl-exit__skip::after { inset: -14px -10px; }
/* V1170 : « Tout effacer » du centre de notifications (texte nu de ~15 px). */
.mnl-notif-center__clear::after { inset: -15px -8px; }
/* V1170 : action de toast — 44 px de haut ; débord latéral 9 px < gouttière 13 px. */
.mnl-toast__action::after { inset: -10px -9px; }
/* V1170 : croix des puces de filtre / de comparaison, dans des pills étroites. */
.mnl-filter-chip__remove::after { inset: -12px -6px; }
.mnl-compare-bar__item-remove::after { inset: -13px -6px; }
/* V1170 : boutons de lecteur vidéo — 44 px de haut, débord latéral 5 px = demi-gouttière. */
.mnl-video__btn::after { inset: -10px -5px; }
/* V1170 : flèches du bandeau « Le savais-tu ? » — 24 px collées (gouttière 4 px) :
   hauteur portée à 44 px, largeur à 28 px seulement pour ne pas se chevaucher. */
.mnl-tip-rotator__nav-btn::after { inset: -10px -2px; }
/* V1170 : puces de carrousel — 8 px, gouttière 6 px : hauteur portée à 44 px
   (le vrai point douloureux au pouce), largeur à 14 px sans chevauchement. */
.mnl-carousel__dot::after { inset: -18px -3px; }

/* ── ② FOCUS CLAVIER ──────────────────────────────────────────────────────────
   V1170 : ces champs/conteneurs posaient outline:none sans anneau de
   remplacement — le focus clavier y était totalement invisible. */
.mnl-search-overlay__input:focus-visible,
.mnl-cmdp__input:focus-visible,
.mnl-select__search input:focus-visible,
.mnl-range input[type="range"]:focus-visible,
.mnl-slider input[type="range"]:focus-visible { outline: 2px solid #C2410C; outline-offset: 2px; }
/* V1170 : la carte cookies est sombre — anneau blanc, en retrait pour rester dans l'arrondi. */
.mnl-cookie__box:focus-visible { outline: 2px solid #fff; outline-offset: -4px; }

/* V1170 : filet de sécurité global — tout élément interactif qui n'a pas de style
   de focus propre reçoit un anneau visible. Spécificité volontairement faible
   (0,1,1) : les composants qui définissent déjà leur focus (0,2,0 et plus)
   gardent le leur, rien n'est écrasé. */
a:focus-visible,
button:focus-visible,
summary:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[role="button"]:focus-visible,
[tabindex]:focus-visible,
[contenteditable="true"]:focus-visible { outline: 2px solid #C2410C; outline-offset: 2px; }

/* ── ③ CHAMPS DE SAISIE 16 px EN MOBILE ───────────────────────────────────────
   V1170 : sous 16 px, iOS zoome au focus et casse la mise en page. Mobile seul :
   le desktop n'est pas alourdi. */
@media (max-width: 600px) {
  .mnl-news-popup__input,
  .mnl-field__input, .mnl-field__textarea, .mnl-field__select,
  .mnl-confirm-box__input,
  .mnl-select__search input,
  .mnl-pagination__jump input,
  .mnl-waitlist__form input,
  .mnl-float input, .mnl-float textarea, .mnl-float select,
  .mnl-datepicker input[type="date"],
  .mnl-cmdp__input,
  .mnl-phone-intl__input,
  .mnl-num input[type="number"],
  .mnl-feedback__textarea { font-size: 16px; }
}


/* V1170 : la règle globale « input:not([type="checkbox"]):not([type="radio"]):focus »
   (spécificité 0,3,1) pose outline:none et ne laisse qu'un halo rgba(232,78,27,.2) =
   1,35:1 sur blanc, donc invisible — et elle écrase au passage les anneaux maison des
   composants (.mnl-field__input:focus etc., 0,2,0). On rétablit donc un anneau net à
   spécificité égale, placé plus loin dans la cascade, en :focus-visible. */
input:not([type="checkbox"]):not([type="radio"]):focus-visible,
textarea:focus-visible,
select:focus-visible { outline: 2px solid #C2410C; outline-offset: 2px; }
