/* =========================================================
   High Santé — feuille de style
   Police : Cairo (latin + arabe)
   Stratégie couleur : Turquoise (#4DA4AB) professionnel/médical — le vert reste un accent
   ponctuel plutôt que la couleur dominante, pour ne pas doubler le vert déjà présent
   dans le logo et donner à la marque un ancrage plus "santé clinique".
   Répartition cible : 60% blanc, 20% turquoise, 10% turquoise clair (accent), 5% vert, 5% gris.
   ========================================================= */

@import url('https://fonts.googleapis.com/css2?family=Cairo:wght@400;500;600;700;800;900&display=swap');

:root{
  --bg:#FFFFFF;
  --surface:#FFFFFF;
  --surface-alt:#EAF7F7;
  --ink:#263238;
  --ink-soft:#55666E;
  --ink-faint:#93A6AC;

  /* Turquoise = couleur principale (menu, titres importants, boutons principaux). */
  --primary:#4DA4AB;
  --primary-dark:#3A7B80;
  --primary-tint:#EAF7F7;

  /* Turquoise = couleur secondaire (icônes, liens, détails, survol des boutons). */
  --accent:#27AEB2;
  --accent-dark:#1B8286;
  --accent-tint:#EAF7F7;

  --border:#CFE7E8;
  --border-soft:#EAF7F7;

  /* Vert = accent ponctuel (petits détails, éléments liés à la santé/au bien-être) —
     volontairement pas la couleur dominante, voir note de stratégie couleur ci-dessus. */
  --success:#65B947;
  --error:#B3261E;
  --white:#FFFFFF;

  --radius-sm:8px;
  --radius-md:14px;
  --radius-lg:22px;

  --shadow-sm:0 1px 2px rgba(38,50,56,.06);
  --shadow-md:0 8px 24px -8px rgba(38,50,56,.18);
  --shadow-lg:0 20px 48px -16px rgba(38,50,56,.28);

  --container:1240px;
  --font:'Cairo', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

*,*::before,*::after{ box-sizing:border-box; }
/* overflow-x:hidden ici est une sécurité globale : sans elle, le moindre élément qui
   déborde légèrement de sa colonne (badge flottant, cercle décoratif, bandeau...) élargit
   <body> au-delà de 100% de la largeur d'écran. Les navigateurs mobiles compensent alors
   en réduisant le zoom pour que tout tienne à l'écran — d'où l'effet "dézoomé" avec une
   bande blanche vide sur le côté (l'espace de défilement horizontal en trop). */
/* overflow-x:clip (pas hidden) : hidden transforme html/body en conteneur de défilement,
   ce qui cassait le position:sticky de .site-header (l'en-tête défilait avec la page au
   lieu de rester fixé en haut). clip supprime le débordement horizontal sans créer ce
   conteneur de défilement — même effet visuel, sticky fonctionne à nouveau. */
html{ scroll-behavior:smooth; overflow-x:clip; max-width:100%; }
body{
  margin:0;
  font-family:var(--font);
  background:var(--bg);
  color:var(--ink);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
  max-width:100%;
  transition:opacity .15s ease;
}
/* Adoucit la navigation entre pages (site multi-pages classique, pas de SPA) : sans ça,
   chaque clic sur un lien interne fait disparaître la page d'un coup avant que la suivante
   apparaisse brutalement. Le fondu de sortie est déclenché en JS (voir js/layout.js) juste
   avant de naviguer. Pas de fondu d'entrée sur la nouvelle page : un essai avec une
   animation sur <main> seul donnait un effet de scintillement — le header/footer
   apparaissaient instantanément pendant que le contenu principal restait terne puis
   s'éclaircissait pendant ~300ms de plus, un décalage à deux vitesses plus gênant que le
   changement brutal d'origine. La page d'arrivée s'affiche donc normalement, à pleine
   opacité dès le rendu — seule la sortie est animée. */
body.hs-leaving{ opacity:0; }
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; cursor:pointer; }
input,textarea,select{ font-family:inherit; font-size:1rem; }
ul{ margin:0; padding:0; list-style:none; }
h1,h2,h3,h4,p{ margin:0; }

.icon{ width:20px; height:20px; flex:none; }

/* Focus visibility (accessibilité) */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{
  outline:2.5px solid var(--accent-dark);
  outline-offset:2px;
  border-radius:4px;
}
@media (prefers-reduced-motion: reduce){
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}

/* ---------- Layout helpers ---------- */
.container{ max-width:var(--container); margin:0 auto; padding:0 24px; }
.section{ padding:72px 0; }
.section-head{ max-width:640px; margin-bottom:40px; }
.section-head.center{ margin-left:auto; margin-right:auto; text-align:center; }
.section-head-row{ display:flex; align-items:baseline; justify-content:space-between; gap:20px; flex-wrap:wrap; margin-bottom:32px; }
.section-head-link{ display:inline-flex; align-items:center; gap:6px; font-weight:700; font-size:.92rem; color:var(--primary-dark); flex:none; white-space:nowrap; }
.section-head-link .icon{ width:16px; height:16px; }
.section-head-link:hover{ color:var(--accent); }
body.is-rtl .section-head-link .icon{ transform:scaleX(-1); }
.eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-size:.8rem; font-weight:700; letter-spacing:.04em;
  color:var(--accent-dark); text-transform:uppercase;
  margin-bottom:12px;
}
.h1{ font-size:clamp(2.1rem,4.4vw,3.4rem); font-weight:800; line-height:1.12; letter-spacing:-.01em; }
.h2{ font-size:clamp(1.6rem,2.8vw,2.3rem); font-weight:800; line-height:1.2; letter-spacing:-.01em; }
.h3{ font-size:1.2rem; font-weight:700; }
.lead{ font-size:1.1rem; color:var(--ink-soft); margin-top:14px; }
.muted{ color:var(--ink-soft); }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:14px 26px; border-radius:999px; border:1.5px solid transparent;
  font-weight:700; font-size:.98rem; transition:transform .15s ease-out, background .2s, border-color .2s, box-shadow .2s;
  white-space:nowrap;
}
.btn:active{ transform:scale(.97); }
.btn-primary{ background:var(--primary); color:var(--white); box-shadow:var(--shadow-sm); }
.btn-primary:hover{ background:var(--accent); }
.btn-outline{ background:transparent; border-color:var(--ink); color:var(--ink); }
.btn-outline:hover{ background:var(--ink); color:var(--white); }
.btn-ghost{ background:var(--primary-tint); color:var(--primary-dark); }
.btn-ghost:hover{ background:var(--border); }
.btn-block{ width:100%; }
.btn-lg{ padding:16px 30px; font-size:1.02rem; }
.btn-sm{ padding:9px 16px; font-size:.85rem; }
.btn[disabled]{ opacity:.5; cursor:not-allowed; }

/* ---------- Topbar ---------- */
.topbar{ background:var(--primary-dark); color:#D0E2F1; font-size:.83rem; direction:ltr; }
.topbar .container{ display:flex; align-items:center; justify-content:space-between; height:38px; gap:16px; }
.topbar-msg{ display:flex; align-items:center; gap:8px; opacity:.92; }
.topbar-msg .icon{ width:15px;height:15px; }
.topbar-msg span[data-i18n]{ unicode-bidi:plaintext; }
.topbar-right{ display:flex; align-items:center; gap:18px; }
/* unicode-bidi:isolate est indispensable ici, pas seulement direction:ltr : sans lui, en
   arabe (document dir="rtl"), l'algorithme bidi ré-ordonne quand même les groupes de
   chiffres séparés par des espaces selon le paragraphe RTL ambiant ("64 09 15 53 6 212+"
   au lieu de "+212 6 53 15 09 64") — même pattern que .wave-marquee-phone ci-dessous,
   qui a toujours eu les deux propriétés et n'a jamais eu ce bug. */
.topbar-phone{ display:flex; align-items:center; gap:6px; font-weight:600; direction:ltr; unicode-bidi:isolate; }
.lang-switch{ display:flex; gap:4px; background:rgba(255,255,255,.1); border-radius:999px; padding:2px; }
.lang-switch button{ border:none; background:transparent; color:#D0E2F1; padding:4px 10px; border-radius:999px; font-size:.78rem; font-weight:700; }
.lang-switch button.is-active{ background:var(--accent-dark); color:#fff; }

/* ---------- Header ---------- */
.site-header{ position:sticky; top:0; z-index:50; background:var(--bg); border-bottom:1px solid var(--border); }
.header-inner{ display:flex; align-items:center; justify-content:space-between; gap:28px; height:78px; }
.logo{ display:flex; align-items:center; gap:10px; font-weight:800; font-size:1.28rem; color:var(--primary-dark); flex:none; }
.logo-badge{ width:44px; height:44px; border-radius:12px; background:#fff; padding:5px; display:flex; align-items:center; justify-content:center; flex:none; overflow:hidden; box-shadow:0 0 0 1px var(--border); }
.logo-badge img{ width:100%; height:100%; object-fit:contain; border-radius:6px; }
.footer-brand .logo-badge{ box-shadow:0 0 0 1px rgba(255,255,255,.18); }
.logo-sub{ display:block; font-size:.62rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--accent-dark); }

.main-nav{ display:flex; align-items:center; gap:28px; flex:1; }
.main-nav a{ font-weight:800; font-size:.82rem; text-transform:uppercase; letter-spacing:.03em; color:var(--ink); padding:8px 0; position:relative; transition:color .15s; }
.main-nav a:hover{ color:var(--primary); }
.main-nav a.is-active{ color:var(--primary-dark); }
.main-nav a.is-active::after{ content:""; position:absolute; left:0; right:0; bottom:-2px; height:2.5px; background:var(--accent); border-radius:2px; }

/* Menu déroulant "Acheter par catégorie" dans la navbar */
.nav-dropdown{ position:relative; }
.nav-dropdown-toggle{ display:flex; align-items:center; gap:6px; background:none; border:none; font-family:var(--font); font-weight:800; font-size:.82rem; text-transform:uppercase; letter-spacing:.03em; color:var(--ink); padding:8px 0; cursor:pointer; }
.nav-dropdown-toggle:hover{ color:var(--primary); }
.nav-dropdown-toggle .nav-chevron{ width:11px; height:11px; transform:rotate(90deg); transition:transform .15s; flex:none; }
.nav-dropdown.is-open .nav-dropdown-toggle .nav-chevron{ transform:rotate(-90deg); }
.nav-dropdown-panel{ position:absolute; top:100%; inset-inline-start:0; margin-top:14px; background:#fff; border:1px solid var(--border); border-radius:var(--radius-md); box-shadow:var(--shadow-md); padding:10px; display:none; flex-direction:column; gap:2px; min-width:260px; max-height:70vh; overflow-y:auto; z-index:60; }
.nav-dropdown.is-open .nav-dropdown-panel{ display:flex; }
.nav-dropdown-panel a{ padding:9px 12px; border-radius:8px; font-size:.86rem; font-weight:600; text-transform:none; letter-spacing:0; color:var(--ink); }
.nav-dropdown-panel a:hover{ background:var(--surface-alt); color:var(--accent); }
.nav-dropdown-panel a.nav-dropdown-viewall{ margin-top:6px; padding-top:12px; border-top:1px solid var(--border-soft); font-weight:800; font-size:.8rem; text-transform:uppercase; letter-spacing:.02em; color:var(--primary-dark); }

.header-search{ position:relative; display:flex; align-items:center; gap:8px; background:var(--surface-alt); border:1px solid var(--border); border-radius:999px; padding:9px 16px; flex:1; max-width:280px; }
.header-search input{ border:none; background:transparent; outline:none; width:100%; font-size:.9rem; color:var(--ink); }
.header-search .icon{ width:17px; height:17px; color:var(--ink-faint); flex:none; }

.header-search-results{ position:absolute; top:100%; inset-inline-start:0; inset-inline-end:0; margin-top:10px; background:#fff; border:1px solid var(--border); border-radius:var(--radius-md); box-shadow:var(--shadow-md); padding:8px; display:none; flex-direction:column; gap:2px; max-height:70vh; overflow-y:auto; z-index:80; min-width:320px; }
.header-search-results.is-open{ display:flex; }
.header-search-item{ display:flex; align-items:center; gap:12px; padding:8px; border-radius:8px; }
.header-search-item:hover{ background:var(--surface-alt); }
.header-search-thumb{ width:44px; height:44px; flex:none; border-radius:8px; background:var(--primary-tint); display:flex; align-items:center; justify-content:center; overflow:hidden; }
.header-search-thumb img{ width:100%; height:100%; object-fit:cover; }
.header-search-thumb .icon{ width:24px; height:24px; color:var(--accent); }
.header-search-info{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.header-search-name{ font-size:.87rem; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.header-search-price{ font-size:.8rem; font-weight:700; color:var(--primary-dark); }
.header-search-empty{ padding:16px 10px; text-align:center; font-size:.85rem; color:var(--ink-faint); }
.header-search-viewall{ margin-top:4px; padding:10px 12px 4px; border-top:1px solid var(--border-soft); text-align:center; font-weight:800; font-size:.78rem; text-transform:uppercase; letter-spacing:.02em; color:var(--primary-dark); }
.header-search-viewall:hover{ color:var(--primary); }

.header-actions{ display:flex; align-items:center; gap:10px; flex:none; }
.icon-btn{ position:relative; width:38px; height:38px; display:flex; align-items:center; justify-content:center; border-radius:999px; background:transparent; border:none; color:var(--ink); }
.icon-btn:hover{ color:var(--primary); }
.icon-btn .icon{ width:21px; height:21px; }
.cart-count{ position:absolute; top:-2px; inset-inline-end:-2px; background:var(--primary-dark); color:#fff; font-size:.64rem; font-weight:800; min-width:18px; height:18px; border-radius:999px; display:flex; align-items:center; justify-content:center; padding:0 4px; border:2px solid var(--bg); }
.nav-toggle{ display:none; }

/* ---------- Footer ---------- */
.site-footer{ background:var(--primary-dark); color:#D0E2F1; padding:64px 0 28px; margin-top:80px; }
.footer-grid{ display:grid; grid-template-columns:1.6fr 1fr 1fr 1.2fr; gap:40px; }
.footer-brand .logo{ color:#fff; margin-bottom:14px; }
.footer-brand p{ color:#B0CFE8; font-size:.92rem; line-height:1.7; max-width:280px; }
/* Titre de colonne = bouton d'accordéon sur mobile (voir media query plus bas), mais
   garde exactement l'apparence d'un simple titre h4 en desktop : pas de curseur pointeur,
   chevron caché, contenu toujours visible quel que soit l'état .is-open. */
.footer-col-toggle{
  display:flex; align-items:center; justify-content:space-between; width:100%;
  background:none; border:none; padding:0; margin-bottom:18px;
  color:#fff; font-size:.85rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  text-align:start; cursor:default; font-family:inherit;
}
.footer-col-chevron{ display:none; }
.footer-col-body{ display:block; }
.footer-col ul{ display:flex; flex-direction:column; gap:12px; }
.footer-col a{ color:#B0CFE8; font-size:.92rem; }
.footer-col a:hover{ color:#fff; }
.footer-contact li{ display:flex; align-items:flex-start; gap:10px; color:#B0CFE8; font-size:.92rem; margin-bottom:12px; }
.footer-contact .icon{ width:17px; height:17px; margin-top:2px; color:#57C5DB; flex:none; }
/* Même correctif bidi que .topbar-phone (voir plus haut) : un numéro affiché tel quel en
   arabe sans ces deux propriétés se retrouve avec ses groupes de chiffres ré-ordonnés. */
.tel-ltr{ direction:ltr; unicode-bidi:isolate; }
.footer-bottom{ border-top:1px solid rgba(255,255,255,.12); margin-top:48px; padding-top:22px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px; font-size:.82rem; color:#B0CFE8; }
.footer-social{ display:flex; gap:10px; }
.footer-social a{ width:36px; height:36px; border-radius:999px; background:rgba(255,255,255,.08); display:flex; align-items:center; justify-content:center; }
.footer-social .icon{ width:16px; height:16px; }

/* ---------- Hero ---------- */
.hero{ padding:56px 0 76px; position:relative; overflow:hidden; }
.hero-grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:56px; align-items:center; }
.hero-actions{ display:flex; gap:14px; margin-top:32px; flex-wrap:wrap; }
.hero-stats{ display:flex; gap:36px; margin-top:44px; padding-top:32px; border-top:1px solid var(--border); }
.hero-stat-value{ font-size:1.5rem; font-weight:800; color:var(--primary-dark); }
.hero-stat-label{ font-size:.82rem; color:var(--ink-soft); margin-top:2px; }

.hero-visual{ position:relative; }
.hero-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:36px; box-shadow:var(--shadow-lg); position:relative; z-index:2; }
.hero-card-icon{ width:64px; height:64px; border-radius:18px; background:var(--primary); color:#fff; display:flex; align-items:center; justify-content:center; margin-bottom:20px; }
.hero-card-icon .icon{ width:32px; height:32px; }
/* Note de confiance intégrée à la carte (pas une deuxième carte flottante en plus) : évite
   la superposition de deux badges qui débordent des coins opposés — un motif de maquette
   très reconnaissable qui n'apporte rien de spécifique à High Santé. Le second badge
   ("Paiement à la livraison") a été retiré car son contenu double déjà la première case de
   la rangée de confiance juste en dessous du hero. */
.hero-card-rating{ display:flex; align-items:center; gap:8px; margin-top:20px; padding-top:20px; border-top:1px solid var(--border-soft); font-size:.82rem; color:var(--ink-soft); }
.hero-card-rating .stars .icon{ width:14px; height:14px; }
.hero-card-rating b{ color:var(--ink); font-size:.88rem; }
.hero-shape{ position:absolute; inset-inline-end:-120px; top:-80px; width:480px; height:480px; border-radius:50%; background:radial-gradient(circle at 30% 30%, var(--accent-tint), transparent 70%); z-index:0; }
.hero-illustration{ position:absolute; inset:0; width:100%; height:100%; z-index:1; opacity:.95; }

/* ---------- Wave marquee banner ---------- */
.wave-marquee{ position:relative; height:78px; overflow:hidden; margin-bottom:20px; }
.wave-marquee-bg{ position:absolute; inset:0; width:100%; height:100%; display:block; }
.wave-marquee-track{
  position:absolute; left:0; top:0; height:100%; width:max-content;
  display:flex; align-items:center; direction:ltr;
  animation:wave-marquee-scroll 26s linear infinite;
  will-change:transform;
}
body.is-rtl .wave-marquee-track{ animation-direction:reverse; }
.wave-marquee-set{ display:flex; align-items:center; flex:none; padding-inline-end:0; }
.wave-marquee-item{
  display:inline-flex; align-items:center; gap:36px;
  font-weight:800; font-size:1.12rem; color:#fff; letter-spacing:.01em;
  padding-inline-end:36px; white-space:nowrap;
}
.wave-marquee-item .dot{ width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,.6); flex:none; }
.wave-marquee-phone{ direction:ltr; unicode-bidi:isolate; }
@keyframes wave-marquee-scroll{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}
@media (max-width:640px){
  .wave-marquee{ height:60px; }
  .wave-marquee-item{ font-size:.92rem; gap:24px; padding-inline-end:24px; }
}

/* ---------- Trust bar ---------- */
.trust-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; }
.trust-item{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md); padding:26px; }
.trust-icon{ width:46px; height:46px; border-radius:12px; background:var(--primary-tint); color:var(--primary-dark); display:flex; align-items:center; justify-content:center; margin-bottom:16px; }
.trust-item h3{ font-size:1.02rem; margin-bottom:6px; }
.trust-item p{ font-size:.88rem; color:var(--ink-soft); line-height:1.6; }

/* ---------- Categories ---------- */
.cat-grid{ display:grid; grid-template-columns:repeat(7,1fr); justify-items:center; gap:30px 12px; }
.cat-card{ display:flex; flex-direction:column; align-items:center; gap:12px; width:100%; max-width:110px; text-align:center; flex:none; }
.cat-icon{
  width:84px; height:84px; border-radius:50%; flex:none;
  background:var(--primary-tint); color:var(--primary);
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 0 0 1px var(--border) inset;
  transition:transform .2s ease, box-shadow .2s ease;
}
.cat-icon .icon{ width:32px; height:32px; }
.cat-card:hover .cat-icon{ transform:translateY(-4px); box-shadow:0 0 0 1px var(--border) inset, var(--shadow-md); }
.cat-card.is-promo .cat-icon{ background:#D93B3B; color:#fff; box-shadow:none; }
.cat-label{ font-size:.84rem; font-weight:600; color:var(--ink); line-height:1.3; }

@media (max-width:1080px){
  .cat-grid{ grid-template-columns:repeat(5,1fr); gap:26px 10px; }
}
@media (max-width:860px){
  .cat-grid{
    display:flex; overflow-x:auto; overflow-y:hidden; justify-content:flex-start;
    gap:20px; padding-bottom:6px; margin:0 -24px; padding-inline:24px;
    scroll-snap-type:x proximity; -webkit-overflow-scrolling:touch; scrollbar-width:none;
  }
  .cat-grid::-webkit-scrollbar{ display:none; }
  .cat-card{ width:76px; max-width:none; flex:none; scroll-snap-align:start; }
  .cat-icon{ width:68px; height:68px; }
  .cat-icon .icon{ width:27px; height:27px; }
  .cat-label{ font-size:.78rem; }
}

/* ---------- Chargement fluide : le temps que le catalogue réel arrive (window.hsCatalogReady),
   les grilles restent vides plutôt que d'afficher puis corriger des données obsolètes (voir
   js/products.js). Un shimmer occupe l'espace le temps du chargement pour éviter un vide brut
   et un saut de mise en page une fois le contenu injecté. */
@keyframes hs-shimmer{ 0%{ background-position:-400px 0; } 100%{ background-position:400px 0; } }
.product-grid:empty, .cat-grid:empty{
  min-height:220px; border-radius:var(--radius-lg);
  background:linear-gradient(90deg, var(--surface-alt) 25%, var(--border-soft) 37%, var(--surface-alt) 63%);
  background-size:800px 100%; animation:hs-shimmer 1.4s ease-in-out infinite;
}

/* ---------- Product cards / grid ---------- */
.product-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; }
.product-card{ position:relative; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; display:flex; flex-direction:column; transition:box-shadow .2s, transform .2s; }
.product-wish-remove{ position:absolute; top:12px; inset-inline-end:12px; z-index:2; width:30px; height:30px; border-radius:50%; background:#fff; border:none; display:flex; align-items:center; justify-content:center; color:var(--ink-soft); box-shadow:0 1px 5px rgba(0,0,0,.18); cursor:pointer; transition:color .15s, transform .15s; }
.product-wish-remove:hover{ color:var(--danger,#dc3545); transform:scale(1.08); }
.product-wish-remove .icon{ width:15px; height:15px; }
.product-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); }
.product-media{ aspect-ratio:1/1; background:var(--primary-tint); display:flex; align-items:center; justify-content:center; position:relative; overflow:hidden; }
.product-media .icon{ width:64px; height:64px; color:var(--accent); stroke-width:1.3; }
.product-media.has-photo{ background:#fff; }
.product-media img{ width:100%; height:100%; object-fit:contain; }
.product-badge{ position:absolute; top:12px; inset-inline-start:12px; background:var(--accent-dark); color:#fff; font-size:.7rem; font-weight:800; padding:5px 11px; border-radius:999px; text-transform:uppercase; letter-spacing:.03em; }
.product-badge.is-outofstock{ background:var(--error); }
.product-body{ padding:18px 18px 20px; display:flex; flex-direction:column; gap:8px; flex:1; }
.product-cat{ font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); }
.product-name{ font-size:1.02rem; font-weight:700; line-height:1.35; }
.product-name a{ color:var(--ink); }
.product-short{ font-size:.85rem; color:var(--ink-soft); line-height:1.5; flex:1; }
.product-footer{ display:flex; align-items:center; justify-content:space-between; margin-top:8px; gap:10px; }
.product-price{ display:flex; align-items:baseline; gap:8px; }
.price-current{ font-weight:900; font-size:1.12rem; color:#000; }
.price-old{ font-size:.82rem; color:var(--ink-faint); text-decoration:line-through; }
.add-btn{ width:42px; height:42px; border-radius:999px; background:var(--primary); color:#fff; display:flex; align-items:center; justify-content:center; flex:none; border:none; transition:background .2s, transform .15s; }
.add-btn:hover{ background:var(--accent); }
.add-btn.is-added{ background:var(--success); }
.add-btn:disabled{ background:var(--ink-faint); cursor:not-allowed; }
.add-btn:disabled:hover{ background:var(--ink-faint); }
.add-btn .icon{ width:19px; height:19px; }

.section-cta-row{ display:flex; justify-content:center; margin-top:44px; }

/* ---------- Blog ---------- */
.blog-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-top:28px; }
.blog-card{ display:flex; flex-direction:column; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; transition:box-shadow .2s, transform .2s; color:var(--ink); }
.blog-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); }
.blog-card-media{ aspect-ratio:16/10; background:var(--accent-tint); display:flex; align-items:center; justify-content:center; overflow:hidden; }
.blog-card-media .icon{ width:48px; height:48px; color:var(--accent); stroke-width:1.3; }
.blog-card-media.has-photo{ background:#fff; }
.blog-card-media img{ width:100%; height:100%; object-fit:cover; }
.blog-card-body{ padding:18px 20px 20px; display:flex; flex-direction:column; gap:8px; flex:1; }
.blog-card-cat{ font-size:.72rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:var(--accent-dark); }
.blog-card-title{ font-size:1.08rem; font-weight:800; line-height:1.35; }
.blog-card-excerpt{ font-size:.87rem; color:var(--ink-soft); line-height:1.55; flex:1; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.blog-card-foot{ display:flex; align-items:center; justify-content:space-between; margin-top:6px; padding-top:12px; border-top:1px solid var(--border-soft); font-size:.78rem; }
.blog-card-date{ color:var(--ink-faint); }
.blog-card-read{ font-weight:800; color:var(--primary-dark); text-transform:uppercase; letter-spacing:.03em; font-size:.74rem; }

.article-hero{ width:100%; aspect-ratio:21/9; border-radius:var(--radius-lg); background:var(--accent-tint); display:flex; align-items:center; justify-content:center; overflow:hidden; margin-bottom:28px; }
.article-hero .icon{ width:64px; height:64px; color:var(--accent); stroke-width:1.2; }
.article-hero.has-photo{ background:#fff; }
.article-hero img{ width:100%; height:100%; object-fit:cover; }
.article-meta{ display:flex; align-items:center; gap:12px; margin-bottom:10px; font-size:.82rem; }
.article-meta .blog-card-cat{ font-size:.74rem; }
.article-meta-date{ color:var(--ink-faint); }
.article-title{ font-size:clamp(1.6rem,3.2vw,2.3rem); font-weight:800; line-height:1.25; margin-bottom:24px; max-width:760px; }
.article-body{ max-width:760px; font-size:1.02rem; line-height:1.85; color:var(--ink); }
.article-body p{ margin-bottom:22px; }
.article-body p:last-child{ margin-bottom:0; }
.article-body h2{ font-size:1.28rem; font-weight:800; line-height:1.35; margin:36px 0 16px; color:var(--ink); }
.article-body h2:first-child{ margin-top:0; }
.article-faq{ max-width:760px; margin-top:40px; }
.article-faq h2{ font-size:1.15rem; font-weight:800; margin-bottom:14px; }
.article-faq-item{ border:1px solid var(--border); border-radius:var(--radius-md); padding:16px 18px; margin-bottom:10px; }
.article-faq-item summary{ font-weight:700; cursor:pointer; list-style:none; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.article-faq-item summary::-webkit-details-marker{ display:none; }
.article-faq-item summary::after{ content:"+"; font-size:1.3rem; font-weight:400; color:var(--ink-faint); flex:none; }
.article-faq-item[open] summary::after{ content:"–"; }
.article-faq-item p{ margin:12px 0 0; color:var(--ink-soft); line-height:1.7; font-size:.94rem; }
.article-cta{ max-width:760px; margin-top:40px; padding:28px; background:var(--primary-tint); border-radius:var(--radius-lg); display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.article-cta p{ font-weight:700; color:var(--primary-dark); margin:0; font-size:1rem; }
.article-related{ margin-top:56px; }
.article-related h2{ font-size:1.3rem; font-weight:800; margin-bottom:20px; }
.article-related-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
@media (max-width:900px){
  .blog-grid{ grid-template-columns:1fr 1fr; }
  .article-related-grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:640px){
  .blog-grid{ grid-template-columns:1fr; }
  .article-related-grid{ grid-template-columns:1fr; }
  .article-hero{ aspect-ratio:16/10; }
  .article-cta{ flex-direction:column; align-items:flex-start; }
}

/* ---------- Testimonials ---------- */
.tst-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.tst-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:28px; }
.tst-stars{ display:flex; gap:2px; font-size:.95rem; letter-spacing:1px; margin-bottom:14px; }
/* Étoiles pleines et dorées (pas de simples contours) : c'est la convention universellement
   reconnue pour une note, plus lisible en un coup d'œil qu'un contour fin de la couleur du
   texte environnant. */
.stars .icon{ fill:#F5A623; color:#F5A623; }
.tst-stars .icon{ width:14px; height:14px; }
.tst-text{ font-size:.95rem; line-height:1.7; color:var(--ink); margin-bottom:18px; }
.tst-name{ font-size:.85rem; font-weight:700; color:var(--ink-soft); }
.tst-head{ display:flex; align-items:center; gap:12px; }
.avatar-circle{ width:42px; height:42px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; font-weight:800; font-size:.85rem; flex:none; letter-spacing:.02em; }

/* ---------- Bundles ---------- */
.bundle-card{ position:relative; }
.bundle-card .product-media{ background:var(--accent-tint); }
.bundle-card .product-media .icon{ color:var(--accent-dark); }
/* Réserve toujours 2 lignes pour le nom du pack : certains titres tiennent sur une
   ligne, d'autres sur deux, ce qui décalait le badge "Vous économisez" d'une carte
   à l'autre. Hauteur fixe = badges alignés quel que soit le nombre de lignes réel. */
.bundle-card .product-name{ min-height:calc(1.35em * 2); }
.bundle-includes{ display:flex; flex-wrap:wrap; gap:6px; margin-top:2px; }
.bundle-chip{ display:inline-flex; align-items:center; gap:6px; background:var(--surface-alt); border:1px solid var(--border); border-radius:999px; padding-block:6px; padding-inline:6px 12px; font-size:.82rem; color:var(--ink-soft); }
.bundle-chip .chip-icon{ width:24px; height:24px; border-radius:50%; background:var(--accent-tint); color:var(--accent); display:flex; align-items:center; justify-content:center; flex:none; }
.bundle-chip .chip-icon .icon{ width:13px; height:13px; }
.bundle-chip-more{ padding-inline:12px; font-weight:700; color:var(--primary-dark); }
/* Résumé compact ("N produits inclus") affiché à la place des puces sur mobile/tablette
   — voir le breakpoint 1080px plus bas, qui bascule laquelle des deux versions est visible. */
.bundle-includes-summary{ display:none; align-items:center; gap:8px; font-size:.83rem; font-weight:600; color:var(--ink-soft); margin-top:2px; }
.bundle-includes-summary .icon{ width:16px; height:16px; color:var(--accent); flex:none; }
.bundle-savings{ display:inline-flex; align-items:center; gap:6px; background:var(--primary-tint); color:var(--primary-dark); font-weight:700; font-size:.85rem; padding:8px 14px; border-radius:999px; margin-top:6px; }
.bundle-savings .icon{ width:15px; height:15px; }
.bundle-includes-block{ margin-bottom:24px; }
.bundle-includes-block .bundle-chip{ padding-inline:6px 14px; }
.bundle-includes-block .bundle-chip:hover{ border-color:var(--accent); color:var(--accent-dark); }

/* ---------- Newsletter ---------- */
.newsletter{ background:var(--primary); border-radius:var(--radius-lg); padding:52px; display:flex; align-items:center; justify-content:space-between; gap:32px; flex-wrap:wrap; color:#fff; }
.newsletter h2{ color:#fff; }
.newsletter p{ color:#F1F5F9; margin-top:8px; }
.newsletter-form{ display:flex; gap:10px; flex:none; }
.newsletter-form input{ border:none; border-radius:999px; padding:14px 20px; width:260px; font-size:.92rem; outline:none; }

/* ---------- Breadcrumb ---------- */
.breadcrumb{ display:flex; align-items:center; gap:6px; font-size:.85rem; color:var(--ink-soft); padding:22px 0; flex-wrap:wrap; }
.breadcrumb a:hover{ color:var(--accent); }
.breadcrumb .icon{ width:13px; height:13px; }
.breadcrumb .current{ color:var(--ink); font-weight:600; }

/* ---------- Page header (shop, about, contact) ---------- */
.page-head{ padding:16px 0 44px; border-bottom:1px solid var(--border); margin-bottom:44px; }

/* ---------- Shop filters ---------- */
.shop-layout{ display:flex; gap:16px; align-items:flex-start; flex-wrap:wrap; justify-content:space-between; margin-bottom:32px; }
.filter-pills{ display:flex; gap:10px; flex-wrap:wrap; }
.filter-pill{ padding:10px 18px; border-radius:999px; border:1.5px solid var(--border); background:var(--surface); font-size:.87rem; font-weight:600; color:var(--ink-soft); }
.filter-pill.is-active{ background:var(--primary); border-color:var(--primary); color:#fff; }
.shop-tools{ display:flex; align-items:center; gap:12px; font-size:.87rem; }
.shop-tools select{ border:1.5px solid var(--border); border-radius:999px; padding:9px 14px; background:var(--surface); color:var(--ink); }
.shop-count{ color:var(--ink-soft); margin-bottom:20px; font-size:.9rem; }
.shop-search-banner{ display:flex; align-items:center; gap:14px; background:var(--primary-tint); border-radius:var(--radius-md); padding:12px 18px; margin-bottom:18px; font-size:.9rem; color:var(--primary-dark); font-weight:600; }
.shop-search-banner button{ background:#fff; border:1px solid var(--border); border-radius:999px; padding:6px 14px; font-size:.8rem; font-weight:700; color:var(--ink-soft); }
.shop-search-banner button:hover{ color:var(--accent); border-color:var(--accent); }

/* ---------- Product detail ---------- */
.pd-reference{ display:inline-block; background:var(--primary-tint); color:var(--primary-dark); font-weight:700; font-size:.78rem; padding:4px 10px; border-radius:6px; margin:6px 0 10px; }
.pd-trustline{ display:flex; align-items:center; flex-wrap:wrap; gap:8px; font-size:.82rem; font-weight:600; color:var(--ink-soft); margin-bottom:14px; }
.pd-trustline-item{ display:inline-flex; align-items:center; gap:5px; }
.pd-trustline-item .icon{ width:14px; height:14px; color:var(--success); flex:none; }
.pd-trustline-sep{ color:var(--border); }
.pd-instock{ display:inline-flex; align-items:center; gap:7px; color:var(--success); font-weight:700; font-size:.88rem; margin-bottom:26px; }
.pd-instock .icon{ width:16px; height:16px; }

/* ---------- Quantity tiers: "Achetez plus, économisez plus" ---------- */
.qty-tiers{ margin-bottom:22px; }
.qty-tiers-title{ display:flex; align-items:center; gap:8px; font-weight:800; font-size:.92rem; color:var(--ink); margin-bottom:12px; }
.qty-tiers-title .icon{ width:17px; height:17px; color:var(--accent); flex:none; }
.tier-options{ display:flex; flex-direction:column; gap:10px; }
.tier-option{
  position:relative; display:flex; align-items:center; gap:14px;
  border:1.5px solid var(--border); background:var(--surface); border-radius:var(--radius-sm);
  padding:13px 16px; cursor:pointer; transition:border-color .15s, background .15s;
}
.tier-option:hover{ border-color:var(--accent); }
.tier-option.is-selected{ border-color:var(--primary); background:var(--primary-tint); box-shadow:0 0 0 1px var(--primary) inset; }
.tier-radio{ position:absolute; opacity:0; pointer-events:none; }
.tier-radio-dot{
  width:20px; height:20px; border-radius:50%; border:2px solid var(--border-soft); background:var(--surface);
  flex:none; position:relative; transition:border-color .15s;
}
.tier-option.is-selected .tier-radio-dot{ border-color:var(--primary); }
.tier-option.is-selected .tier-radio-dot::after{
  content:""; position:absolute; inset:3px; border-radius:50%; background:var(--primary);
}
.tier-info{ flex:1; min-width:0; }
.tier-name-row{ display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
.tier-name{ font-weight:800; font-size:.95rem; color:var(--ink); }
.tier-ribbon{
  display:inline-flex; align-items:center; gap:3px;
  font-size:.66rem; font-weight:800; text-transform:uppercase; letter-spacing:.03em;
  padding:3px 9px; border-radius:999px; color:#fff; background:var(--accent-dark);
}
.tier-ribbon .icon{ width:10px; height:10px; flex:none; }
.tier-ribbon.best{ background:var(--primary-dark); }
.tier-save{ display:block; font-size:.8rem; font-weight:700; color:var(--success); margin-top:3px; }
.tier-price{ text-align:end; flex:none; }
.tier-price-current{ display:block; font-weight:900; font-size:1.05rem; color:#000; }
.tier-price-old{ display:block; font-size:.78rem; color:var(--ink-faint); text-decoration:line-through; }

/* ---------- Quick COD order form (product page) ---------- */
.quick-order{ border:1.5px solid var(--primary); background:var(--primary-tint); border-radius:var(--radius-md); overflow:hidden; margin-bottom:26px; }
.quick-order-toggle{ width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 18px; background:transparent; border:none; text-align:start; }
.quick-order-toggle .qo-label{ display:flex; align-items:center; gap:10px; font-weight:700; color:var(--primary-dark); font-size:.95rem; }
.quick-order-toggle .qo-label .icon{ width:19px; height:19px; }
.quick-order-toggle .qo-chevron{ width:16px; height:16px; color:var(--primary-dark); transition:transform .2s; flex:none; }
.quick-order.is-open .qo-chevron{ transform:rotate(90deg); }
body.is-rtl .quick-order.is-open .qo-chevron{ transform:rotate(-90deg); }
.pd-desc{ margin-top:52px; border-top:1px solid var(--border); padding-top:36px; }
.pd-desc h2{ margin-bottom:14px; }
.pd-desc p{ color:var(--ink-soft); line-height:1.8; }
.pd-related{ margin-top:64px; }

/* ---------- Cart ---------- */
.cart-layout{ display:grid; grid-template-columns:1.7fr 1fr; gap:40px; align-items:flex-start; }
.cart-table{ width:100%; border-collapse:collapse; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; }
.cart-mobile-list{ display:none; } /* visible uniquement sur mobile, voir la media query plus bas */
/* Les recommandations sont un 3e item de la grille (toujours pleine largeur, sous le
   tableau + résumé) — voir la media query mobile plus bas pour l'ordre d'affichage,
   qui les place avant le résumé/bouton de commande sur petit écran.
   min-width:0 est essentiel : un item de grille avec overflow:visible (par défaut) hérite
   sinon de la taille min-content de son contenu — ici la bande de recommandations, dont
   les 4 cartes mises bout à bout dépassent largement un écran de téléphone. Cette taille
   minimale remontait à toute la piste de la grille et forçait TOUTE la page (résumé,
   prix…) à déborder horizontalement sur mobile. */
.cart-reco{ grid-column:1 / -1; min-width:0; }
.cart-table thead th{ text-align:start; font-size:.78rem; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); padding:16px 20px; border-bottom:1px solid var(--border); font-weight:700; }
.cart-table tbody td{ padding:18px 20px; border-bottom:1px solid var(--border-soft); vertical-align:middle; }
.cart-table tbody tr:last-child td{ border-bottom:none; }
/* Stepper +/- classique en pastille, avec un bouton papelera séparé toujours visible
   à côté (option retenue après comparatif de 3 maquettes) — réutilisé dans le panier
   (desktop + mobile) et le tiroir. */
.qty-remove-row{ display:flex; align-items:center; gap:12px; }
.qty-stepper{ display:flex; align-items:center; border:1.5px solid var(--border); border-radius:999px; overflow:hidden; flex:none; }
.qty-stepper button{ width:34px; height:34px; background:var(--surface-alt); border:none; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.qty-stepper button .icon{ width:13px; height:13px; }
.qty-stepper span{ width:30px; text-align:center; font-weight:700; font-size:.85rem; }
.line-trash-btn{ width:34px; height:34px; border-radius:999px; border:1.5px solid var(--border); background:var(--surface); color:var(--error); display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none; transition:background .15s; }
.line-trash-btn:hover{ background:var(--surface-alt); }
.line-trash-btn .icon{ width:14px; height:14px; }
.cart-prod{ display:flex; align-items:center; gap:18px; }
.cart-prod-media{ width:88px; height:88px; border-radius:14px; background:var(--primary-tint); display:flex; align-items:center; justify-content:center; flex:none; overflow:hidden; }
.cart-prod-media.has-photo{ background:#fff; border:1px solid var(--border); }
.cart-prod-media .icon{ width:40px; height:40px; color:var(--accent); }
.cart-prod-media img{ width:100%; height:100%; object-fit:contain; }
.cart-prod-info{ flex:1; min-width:0; }
.cart-prod-name{ font-weight:700; font-size:1.05rem; line-height:1.35; }
.cart-prod-cat{ font-size:.83rem; color:var(--ink-faint); margin-top:4px; }
.cart-line-total{ font-weight:700; }
.cart-summary{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:28px; position:sticky; top:100px; }
.summary-row{ display:flex; justify-content:space-between; padding:10px 0; font-size:.92rem; color:var(--ink-soft); }
.summary-row.total{ border-top:1px solid var(--border); margin-top:8px; padding-top:16px; font-size:1.1rem; font-weight:800; color:var(--ink); }
.summary-row .free{ color:var(--success); font-weight:700; }
.cart-empty{ text-align:center; padding:80px 20px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); }
.cart-empty-icon{ display:flex; justify-content:center; }
.cart-empty-icon .icon{ width:56px; height:56px; color:var(--ink-faint); }

/* Recommandations en bas du panier, style "cart upsell" Shopify : rangée de vignettes
   carrées qui défile horizontalement, bouton "+" flottant sur l'image (pas de liste ni
   de grande product-card) — look reconnaissable des widgets "You may also like". */
.cart-reco-strip{ display:flex; gap:16px; overflow-x:auto; padding-bottom:4px; scrollbar-width:none; }
.cart-reco-strip::-webkit-scrollbar{ display:none; }
.cart-reco-card{ flex:0 0 132px; }
.cart-reco-card-media{ position:relative; width:132px; height:132px; border-radius:var(--radius-md); background:var(--primary-tint); display:flex; align-items:center; justify-content:center; overflow:hidden; }
.cart-reco-card-media.has-photo{ background:#fff; border:1px solid var(--border); }
/* Sélecteur d'enfant direct (>) important ici : l'icône de secours (catégorie) est un
   enfant direct de cette div, alors que l'icône du bouton "+" est nichée plus profond
   (dans le <button>). Sans le >, cette règle repeignait aussi l'icône du bouton dans le
   même bleu que son propre fond — un cercle plein sans "+" visible dessus. */
.cart-reco-card-media > .icon{ width:44px; height:44px; color:var(--accent); }
.cart-reco-card-media img{ width:100%; height:100%; object-fit:contain; }
.cart-reco-card-add{ position:absolute; bottom:8px; inset-inline-end:8px; width:30px; height:30px; box-shadow:var(--shadow-sm); }
.cart-reco-card-add .icon{ width:15px; height:15px; color:#fff; }
.cart-reco-card-name{
  font-size:.83rem; font-weight:600; margin-top:10px; line-height:1.3;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.cart-reco-card-price{ font-size:.83rem; font-weight:800; color:var(--ink); margin-top:4px; }

/* ---------- Tiroir panier (auto-ouvert à l'ajout) ---------- */
.cd-overlay{ position:fixed; inset:0; background:rgba(15,30,45,.5); display:none; z-index:300; }
.cd-overlay.is-open{ display:block; }
.cd-drawer{
  position:fixed; top:0; inset-inline-end:0; height:100%; width:420px; max-width:92vw;
  background:var(--surface); display:flex; flex-direction:column; transform:translateX(100%);
  transition:transform .3s ease; box-shadow:var(--shadow-md);
}
body.is-rtl .cd-drawer{ transform:translateX(-100%); }
.cd-overlay.is-open .cd-drawer{ transform:translateX(0); }
.cd-header{ display:flex; align-items:center; justify-content:space-between; padding:20px 22px; border-bottom:1px solid var(--border); flex:none; }
.cd-header h2{ font-size:1.1rem; font-weight:800; margin:0; }
.cd-close{ background:none; border:none; width:30px; height:30px; display:flex; align-items:center; justify-content:center; color:var(--ink); cursor:pointer; flex:none; }
.cd-close .icon{ width:18px; height:18px; }
.cd-lines{ flex:1; overflow-y:auto; padding:8px 22px; }
.cd-line{ display:flex; gap:16px; padding:16px 0; border-bottom:1px solid var(--border-soft); }
.cd-line:last-child{ border-bottom:none; }
.cd-line-media{ width:78px; height:78px; border-radius:12px; background:var(--primary-tint); display:flex; align-items:center; justify-content:center; flex:none; overflow:hidden; }
.cd-line-media.has-photo{ background:#fff; border:1px solid var(--border); }
.cd-line-media .icon{ width:34px; height:34px; color:var(--accent); }
.cd-line-media img{ width:100%; height:100%; object-fit:contain; }
.cd-line-info{ flex:1; min-width:0; }
.cd-line-name{ font-weight:700; font-size:.94rem; line-height:1.35; margin-bottom:4px; }
.cd-line-price{ font-size:.85rem; color:var(--ink-faint); margin-bottom:10px; }
.cd-line-controls{ display:flex; align-items:center; gap:10px; }
.cd-line-controls .qty-remove-row{ gap:9px; }
.cd-line-controls .qty-stepper button{ width:28px; height:28px; }
.cd-line-controls .qty-stepper button .icon{ width:11px; height:11px; }
.cd-line-controls .qty-stepper span{ width:26px; font-size:.8rem; }
.cd-line-controls .line-trash-btn{ width:28px; height:28px; }
.cd-line-controls .line-trash-btn .icon{ width:12px; height:12px; }
.cd-line-total{ font-weight:800; font-size:.84rem; flex:none; white-space:nowrap; }
.cd-empty{ padding:70px 20px; text-align:center; }
.cd-empty-icon{ display:flex; justify-content:center; margin-bottom:14px; }
.cd-empty-icon .icon{ width:44px; height:44px; color:var(--ink-faint); }
.cd-empty p{ color:var(--ink-soft); margin-bottom:18px; font-size:.9rem; }
.cd-footer{ border-top:1px solid var(--border); padding:18px 22px 22px; flex:none; }
.cd-total-row{ display:flex; justify-content:space-between; align-items:baseline; font-weight:800; font-size:1.05rem; margin-bottom:10px; }
.cd-note{ display:flex; align-items:center; gap:7px; font-size:.78rem; color:var(--ink-soft); margin-bottom:16px; }
.cd-note .icon{ width:14px; height:14px; color:var(--accent); flex:none; }
.cd-cta{ display:block; width:100%; background:var(--primary-dark); color:#fff; border:none; border-radius:999px; padding:15px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; font-size:.86rem; margin-bottom:10px; cursor:pointer; }
.cd-cta:hover{ background:var(--primary); }
.cd-viewcart{ display:block; text-align:center; font-size:.82rem; font-weight:700; color:var(--ink-soft); text-decoration:underline; }
.cd-modal-lines{ display:flex; flex-direction:column; gap:8px; margin-bottom:16px; max-height:260px; overflow-y:auto; }

/* ---------- Popup d'abandon de panier (offre de dernière chance) ---------- */
.cd-exit-overlay{ position:fixed; inset:0; background:rgba(15,30,45,.6); display:none; align-items:center; justify-content:center; z-index:400; padding:20px; }
.cd-exit-overlay.is-open{ display:flex; }
.cd-exit-card{ background:#fff; border-radius:var(--radius-lg); max-width:380px; width:100%; padding:38px 28px 28px; text-align:center; position:relative; box-shadow:var(--shadow-md); }
.cd-exit-close{ position:absolute; top:14px; inset-inline-end:14px; background:none; border:none; width:28px; height:28px; display:flex; align-items:center; justify-content:center; color:var(--ink-faint); cursor:pointer; }
.cd-exit-close .icon{ width:16px; height:16px; }
.cd-exit-emoji{ width:72px; height:72px; border-radius:50%; background:var(--primary-tint); color:var(--primary-dark); display:flex; align-items:center; justify-content:center; margin:0 auto 16px; font-size:44px; line-height:1; }
.cd-exit-emoji .icon{ width:24px; height:24px; }
.cd-exit-card h3{ font-size:1.3rem; font-weight:800; margin-bottom:10px; }
.cd-exit-card p{ font-size:.92rem; color:var(--ink-soft); line-height:1.6; margin-bottom:20px; }
.cd-exit-badge{ display:inline-block; background:var(--accent-tint); color:var(--accent-dark); font-weight:800; font-size:1.7rem; padding:8px 24px; border-radius:999px; margin-bottom:24px; }
.cd-exit-cta{ display:block; width:100%; background:var(--primary-dark); color:#fff; border:none; border-radius:999px; padding:15px; font-weight:800; font-size:.88rem; margin-bottom:12px; cursor:pointer; }
.cd-exit-cta:hover{ background:var(--primary); }
.cd-exit-dismiss{ display:block; width:100%; background:none; border:none; color:var(--ink-soft); font-size:.85rem; font-weight:600; text-decoration:underline; cursor:pointer; padding:6px; }

/* ---------- Toast "Ajouté au panier" (notification légère, pas le tiroir complet) ---------- */
/* Position par défaut dans le coin (repli si l'icône panier est introuvable) — mais
   positionnée dynamiquement juste sous l'icône panier du header par JS (voir
   positionToastNearCartIcon dans cart-drawer.js), avec un transform-origin réglé au même
   endroit pour que l'ouverture donne l'impression que la notification "sort" de l'icône. */
.cart-toast{
  position:fixed; top:16px; inset-inline-end:16px; width:440px; max-width:calc(100vw - 24px);
  background:#fff; border:1px solid var(--border); border-radius:0; box-shadow:var(--shadow-lg);
  z-index:260; overflow:hidden;
  transform-origin:top center;
  opacity:0; visibility:hidden; transform:scale(.4) translateY(-8px);
  transition:opacity .24s ease, transform .24s cubic-bezier(.34,1.56,.64,1), visibility 0s linear .24s;
}
.cart-toast.is-open{ opacity:1; visibility:visible; transform:scale(1) translateY(0); transition-delay:0s; }
/* Bandeau teinté + icône panier à droite, panier compact avec bouton inline à côté du
   produit (pas empilé en dessous) — reprend la structure du popover d'Atida Mifarma. */
.cart-toast-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding-block:13px; padding-inline:18px; background:var(--primary-tint); color:var(--primary-dark); font-weight:800; font-size:.85rem; }
.cart-toast-head-icon{ width:20px; height:20px; flex:none; opacity:.85; }
.cart-toast-body{ display:flex; align-items:center; gap:14px; padding:16px 18px; }
.cart-toast-media{ width:52px; height:52px; border-radius:10px; background:var(--primary-tint); display:flex; align-items:center; justify-content:center; flex:none; overflow:hidden; }
.cart-toast-media.has-photo{ background:#fff; border:1px solid var(--border); }
.cart-toast-media img{ width:100%; height:100%; object-fit:contain; }
.cart-toast-media .icon{ width:24px; height:24px; color:var(--accent); }
.cart-toast-info{ flex:1; min-width:0; }
.cart-toast-name{ font-weight:700; font-size:.86rem; line-height:1.3; margin-bottom:3px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.cart-toast-price{ font-size:.8rem; color:var(--ink-soft); font-weight:600; }
/* Bouton neutre (noir/blanc), pas coloré en vert de marque — fidèle au bouton "Ver Cesta"
   de la référence, qui reste sobre pendant que la couleur reste réservée au bandeau. */
.cart-toast-viewcart{ flex:none; background:#fff; border:1.5px solid var(--ink); color:var(--ink); border-radius:999px; padding:10px 18px; font-weight:800; font-size:.8rem; cursor:pointer; white-space:nowrap; }
.cart-toast-viewcart:hover{ background:var(--surface-alt); }
@media (max-width:480px){
  .cart-toast{ top:12px; inset-inline-end:12px; }
  .cart-toast-body{ flex-wrap:wrap; }
  .cart-toast-viewcart{ flex:1 1 100%; text-align:center; }
}

/* ---------- Modal "Commande avec paiement à la livraison" (fiche produit + panier global) ---------- */
.pd2-modal-overlay{ position:fixed; inset:0; background:rgba(15,30,45,.55); display:none; align-items:flex-start; justify-content:center; padding:40px 16px; overflow-y:auto; z-index:200; }
.pd2-modal-overlay.is-open{ display:flex; }
.pd2-modal{ background:#fff; border-radius:var(--radius-md); width:100%; max-width:920px; overflow:hidden; }
.pd2-modal-header{ display:flex; align-items:center; gap:12px; padding:18px 24px; border-bottom:1px solid var(--border); }
.pd2-modal-header .icon{ width:20px; height:20px; color:var(--ink); flex:none; }
.pd2-modal-header h2{ flex:1; font-size:.95rem; font-weight:800; letter-spacing:.03em; text-transform:uppercase; margin:0; }
.pd2-modal-close{ background:none; border:none; width:28px; height:28px; display:flex; align-items:center; justify-content:center; color:var(--ink); flex:none; cursor:pointer; }
.pd2-modal-close .icon{ width:18px; height:18px; }
.pd2-modal-body{ display:grid; grid-template-columns:1.1fr .9fr; gap:32px; padding:26px 24px 30px; }
.pd2-modal-form-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
.pd2-modal-field label{ display:block; font-size:.85rem; font-weight:700; margin-bottom:7px; color:var(--ink); }
.pd2-modal-field .req{ color:var(--error); }
.pd2-modal-input-wrap{ position:relative; }
.pd2-modal-input-wrap .icon{ position:absolute; top:50%; inset-inline-start:14px; transform:translateY(-50%); width:16px; height:16px; color:var(--ink-faint); }
.pd2-modal-input-wrap input, .pd2-modal-input-wrap select{ width:100%; padding:13px 14px 13px 40px; border:1.5px solid var(--border); border-radius:var(--radius-sm); background:var(--surface-alt); color:var(--ink); font:inherit; }
body.is-rtl .pd2-modal-input-wrap input, body.is-rtl .pd2-modal-input-wrap select{ padding:13px 40px 13px 14px; }
body.is-rtl .pd2-modal-input-wrap .icon{ inset-inline-start:auto; inset-inline-end:14px; }
.pd2-modal-input-wrap input:focus, .pd2-modal-input-wrap select:focus{ border-color:var(--primary); background:#fff; }
.pd2-modal-input-wrap input.has-error, .pd2-modal-input-wrap select.has-error{ border-color:var(--error); }
.pd2-modal-textarea{ width:100%; padding:12px 14px; border:1.5px solid var(--border); border-radius:var(--radius-sm);
  background:var(--surface-alt); color:var(--ink); resize:vertical; font:inherit; }
.pd2-modal-textarea:focus{ border-color:var(--primary); background:#fff; }
.pd2-modal-body > div > .pd2-modal-field{ margin-bottom:16px; }
.pd2-modal-field-error{ color:var(--error); font-size:.8rem; margin-top:6px; display:none; }
.pd2-modal-field-error.show{ display:block; }
.pd2-modal-delivery-title{ font-size:.9rem; font-weight:800; margin:20px 0 10px; }
.pd2-modal-delivery-option{ display:flex; align-items:center; gap:12px; border:1.5px solid var(--primary); background:var(--primary-tint); border-radius:var(--radius-sm); padding:14px 16px; }
.pd2-modal-delivery-option input{ accent-color:var(--primary); width:17px; height:17px; flex:none; }
.pd2-modal-delivery-option span{ flex:1; font-size:.88rem; font-weight:600; }
.pd2-modal-delivery-price{ font-weight:800; flex:none !important; }

.pd2-modal-summary-box{ background:var(--surface-alt); border-radius:var(--radius-sm); padding:18px; margin-bottom:18px; }
.pd2-modal-summary-row{ display:flex; align-items:baseline; justify-content:space-between; padding:9px 0; font-size:.9rem; color:var(--ink-soft); }
.pd2-modal-summary-row.total{ border-top:1px solid var(--border); margin-top:4px; padding-top:13px; font-weight:800; color:var(--ink); font-size:1rem; }
.pd2-modal-summary-row.discount span:last-child{ color:var(--success); font-weight:700; }
.pd2-modal-discount{ display:flex; gap:10px; margin-top:14px; }
.pd2-modal-discount input{ flex:1; padding:11px 14px; border:1px solid var(--border); border-radius:var(--radius-sm); background:#fff; }
.pd2-modal-discount button{ background:var(--ink); color:#fff; border:none; border-radius:var(--radius-sm); padding:0 18px; font-weight:700; font-size:.85rem; flex:none; cursor:pointer; }
.pd2-modal-cta{ display:block; width:100%; background:var(--ink); color:#fff; border:none; border-radius:var(--radius-sm); padding:15px; font-weight:800; font-size:.92rem; margin-bottom:18px; cursor:pointer; }
.pd2-modal-cta:hover{ background:var(--accent); }
.pd2-modal-line{ display:flex; align-items:center; gap:14px; border:1px solid var(--border); background:var(--surface-alt); border-radius:var(--radius-sm); padding:14px; margin-bottom:16px; }
.pd2-modal-line-media{ width:72px; height:72px; border-radius:8px; background:#fff; border:1px solid var(--border); display:flex; align-items:center; justify-content:center; flex:none; overflow:hidden; }
.pd2-modal-line-media .icon{ width:32px; height:32px; color:var(--accent); }
.pd2-modal-line-media img{ width:100%; height:100%; object-fit:contain; }
.pd2-modal-line-info{ flex:1; min-width:0; }
.pd2-modal-line-name{ font-size:.83rem; font-weight:700; margin-bottom:2px; line-height:1.3; }
.pd2-modal-line-price{ font-size:.83rem; color:var(--ink-soft); }
.pd2-modal-line-qty{ font-size:.8rem; font-weight:700; color:var(--ink-soft); background:#fff; border:1px solid var(--border); border-radius:999px; padding:4px 10px; flex:none; }

@media (max-width:760px){
  /* Bottom-sheet compact plutôt qu'un formulaire plein écran : ne prend que la place nécessaire */
  .pd2-modal-overlay{ padding:0; align-items:flex-end; background:rgba(15,30,45,.7); }
  /* Un petit espace fixe (pas un pourcentage) : juste de quoi voir les coins arrondis,
     sans laisser un grand pan de la page derrière visible au-dessus du formulaire. */
  .pd2-modal{ max-width:none; width:100%; height:calc(100% - 28px); max-height:calc(100% - 28px); border-radius:20px 20px 0 0; overflow-y:auto; }
  .pd2-modal-header{ padding:14px 18px; position:sticky; top:0; background:#fff; z-index:1; }
  .pd2-modal-header h2{ font-size:.78rem; }
  .pd2-modal-body{ grid-template-columns:1fr; gap:22px; padding:18px 18px 26px; }
  .pd2-modal-form-row{ grid-template-columns:1fr; gap:14px; }
}

/* ---------- Forms ---------- */
.form-group{ margin-bottom:18px; }
.form-group label{ display:block; font-size:.87rem; font-weight:700; margin-bottom:7px; color:var(--ink); }
.form-group .req{ color:var(--accent-dark); }
.form-control{ width:100%; padding:13px 16px; border:1.5px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); color:var(--ink); transition:border-color .15s; }
.form-control:focus{ border-color:var(--primary); }
.form-control.has-error{ border-color:var(--error); }
.field-error{ color:var(--error); font-size:.8rem; margin-top:6px; display:none; }
.field-error.show{ display:block; }
textarea.form-control{ resize:vertical; min-height:96px; }
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }

/* ---------- Checkout ---------- */
.checkout-layout{ display:grid; grid-template-columns:1.5fr 1fr; gap:40px; align-items:flex-start; }
.checkout-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:30px; margin-bottom:24px; }
.checkout-card h2{ font-size:1.15rem; margin-bottom:20px; display:flex; align-items:center; gap:10px; }
.checkout-card h2 .icon{ width:20px; height:20px; color:var(--accent); }
.payment-option{ display:flex; align-items:flex-start; gap:14px; border:1.5px solid var(--primary); background:var(--primary-tint); border-radius:var(--radius-md); padding:18px; }
.payment-option .icon{ width:24px; height:24px; color:var(--accent-dark); margin-top:2px; flex:none; }
.payment-option b{ display:block; margin-bottom:4px; }
.payment-option p{ font-size:.85rem; color:var(--ink-soft); }
.summary-mini-item{ display:flex; justify-content:space-between; gap:10px; font-size:.87rem; padding:8px 0; color:var(--ink-soft); }
.summary-mini-item b{ color:var(--ink); font-weight:600; }
.disclaimer{ font-size:.78rem; color:var(--ink-faint); margin-top:14px; line-height:1.6; }

/* ---------- Confirmation ---------- */
.confirm-box{ max-width:560px; margin:60px auto; text-align:center; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:56px 40px; }
.confirm-icon{ width:84px; height:84px; border-radius:50%; background:var(--primary-tint); color:var(--success); display:flex; align-items:center; justify-content:center; margin:0 auto 26px; }
.confirm-icon .icon{ width:40px; height:40px; }
.confirm-number{ display:inline-block; background:var(--surface-alt); border:1px dashed var(--border); border-radius:999px; padding:10px 22px; font-weight:800; letter-spacing:.03em; margin:20px 0 30px; color:var(--primary-dark); }
.confirm-actions{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }

/* ---------- About / values ---------- */
.about-hero{ display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center; }
.about-visual{ background:var(--primary); border-radius:var(--radius-lg); aspect-ratio:4/3; display:flex; align-items:center; justify-content:center; position:relative; overflow:hidden; }
.about-visual .icon{ width:120px; height:120px; color:#fff; opacity:.9; }
.values-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-top:20px; }
.value-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:28px; }
.value-icon{ width:48px; height:48px; border-radius:12px; background:var(--accent-tint); color:var(--accent-dark); display:flex; align-items:center; justify-content:center; margin-bottom:16px; }

/* ---------- Contact ---------- */
.contact-layout{ display:grid; grid-template-columns:1.3fr 1fr; gap:48px; align-items:flex-start; }
.contact-info-card{ background:var(--primary); color:#fff; border-radius:var(--radius-lg); padding:32px; }
.contact-info-card h3{ color:#fff; margin-bottom:20px; }
.contact-info-card ul{ display:flex; flex-direction:column; gap:18px; }
.contact-info-card li{ display:flex; align-items:flex-start; gap:12px; font-size:.92rem; color:#F1F5F9; }
.contact-info-card .icon{ width:19px; height:19px; color:#96DBE9; margin-top:2px; flex:none; }
.contact-info-card b{ display:block; color:#fff; margin-bottom:2px; }

/* ---------- Badges / misc ---------- */
.form-success{ display:none; align-items:center; gap:10px; background:var(--primary-tint); color:var(--primary-dark); padding:16px 18px; border-radius:var(--radius-sm); margin-top:18px; font-weight:600; font-size:.9rem; }
.form-success.show{ display:flex; }
.form-success .icon{ width:18px; height:18px; }

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width: 1080px){
  .footer-grid{ grid-template-columns:1fr 1fr; }
  .product-grid{ grid-template-columns:repeat(3,1fr); }
  .trust-grid{ grid-template-columns:repeat(2,1fr); }
  /* Tablette et mobile : la liste détaillée des articles inclus dans un pack prend trop
     de place — remplacée par un résumé compact sur une ligne. */
  .bundle-includes{ display:none; }
  .bundle-includes-summary{ display:flex; }
  .tst-grid{ grid-template-columns:1fr; }
  .about-hero{ grid-template-columns:1fr; }
  .cart-layout, .checkout-layout, .contact-layout{ grid-template-columns:1fr; }
  .values-grid{ grid-template-columns:1fr 1fr; }
  /* Le résumé n'est plus à côté du tableau une fois la mise en page empilée :
     un position:sticky resterait collé en haut de l'écran pendant le défilement. */
  .cart-summary{ position:static; top:auto; }
  /* Une fois le panier empilé sur une colonne, les recommandations passent avant le
     résumé/bouton "Passer la commande" — on incite à compléter le panier avant de
     pousser vers le paiement, plutôt qu'après (où elles seraient ignorées). */
  .cart-table, .cart-mobile-list{ order:1; }
  .cart-reco{ order:2; }
  .cart-summary{ order:3; }
}
/* Recherche en-tête cachée sur mobile (place limitée) — une icône loupe dédiée dans les
   icônes d'en-tête ouvre un bandeau de recherche plein largeur à la place, voir plus bas. */
.mobile-search-toggle{ display:none; }
.mobile-search-bar{ display:none; background:var(--surface); border-bottom:1px solid var(--border); }
.mobile-search-bar.is-open{ display:block; }
.mobile-search-bar-inner{ display:flex; align-items:center; gap:8px; padding:12px 24px; }
.mobile-search-bar .mobile-search{ width:100%; max-width:none; flex:1; }
.mobile-search-close{ flex:none; }
@media (max-width: 860px){
  .header-search:not(.mobile-search){ display:none; }
  .mobile-search-toggle{ display:flex; }
  .main-nav{ position:fixed; inset-inline-start:0; top:116px; width:100%; height:calc(100% - 116px); background:var(--bg); flex-direction:column; align-items:flex-start; padding:28px 24px; gap:6px; transform:translateX(-105%); transition:transform .25s ease; z-index:40; overflow-y:auto; }
  body.is-rtl .main-nav{ transform:translateX(105%); }
  body.is-rtl .main-nav.is-open,
  .main-nav.is-open{ transform:translateX(0); }
  .main-nav a{ width:100%; padding:14px 0; border-bottom:1px solid var(--border); }
  /* Le menu déroulant devient un accordéon en pleine largeur dans le menu mobile */
  .nav-dropdown{ width:100%; }
  .nav-dropdown-toggle{ width:100%; justify-content:space-between; padding:14px 0; border-bottom:1px solid var(--border); }
  .nav-dropdown-panel{ position:static; box-shadow:none; border:none; margin-top:0; padding:4px 0 4px 14px; min-width:0; max-height:none; }
  .nav-dropdown-panel a{ padding:11px 0; border-radius:0; }
  .nav-toggle{ display:flex; }
  .hero-grid{ grid-template-columns:1fr; }
  .hero-visual{ order:-1; }
  .newsletter{ flex-direction:column; align-items:flex-start; padding:36px; }
  .newsletter-form{ width:100%; }
  .newsletter-form input{ flex:1; width:auto; }
}
@media (max-width: 640px){
  .section{ padding:52px 0; }
  /* Les 2 boutons du hero ("Voir la boutique" / "Notre engagement") s'empilaient sur
     mobile faute de place à taille normale — réduits et mis à largeur égale (flex:1)
     pour tenir côte à côte sur une seule ligne, comme en desktop. */
  .hero-actions{ flex-wrap:nowrap; gap:10px; }
  .hero-actions .btn{ flex:1 1 0; padding:13px 10px; font-size:.88rem; text-align:center; white-space:normal; }
  /* Les 3 stats (10 000+ / 12 / 4.8/5) se répartissaient en flex avec un grand gap fixe :
     les 2 premières tenaient sur la ligne, la 3e était rejetée seule sur la ligne
     suivante avec un espacement incohérent. Une grille à 3 colonnes égales les garde
     toujours sur une seule ligne, comme en desktop. */
  .hero-stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
  /* Les filtres de catégorie passent en bandeau défilant horizontalement plutôt que de
     s'empiler en grille à 2 colonnes déséquilibrée (même traitement que .cat-grid).
     flex:1 1 100% force les pastilles sur leur propre ligne pleine largeur dans
     .shop-layout (qui reste en flex-wrap:wrap), ce qui repousse naturellement le tri
     ("Trier par") sur la ligne suivante. */
  .filter-pills{
    flex:1 1 100%; flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch;
    scrollbar-width:none; margin:0 -24px; padding:2px 24px 6px;
    scroll-snap-type:x proximity;
  }
  .filter-pills::-webkit-scrollbar{ display:none; }
  .filter-pill{ flex:none; white-space:nowrap; scroll-snap-align:start; }
  .trust-grid, .product-grid{ grid-template-columns:1fr 1fr; align-items:stretch; }
  /* La description courte alourdit les cartes en 2 colonnes sur mobile — masquée pour
     garder des fiches produit compactes (nom + prix suffisent en aperçu). Sans elle, le
     footer (prix + bouton) suivait directement le nom : deux cartes côte à côte avec des
     noms de longueurs différentes (1 vs 2 lignes) désalignaient le prix entre elles.
     margin-top:auto le rescolle en bas de chaque carte, peu importe la longueur du nom. */
  .product-short{ display:none; }
  .product-footer{ margin-top:auto; }
  .values-grid{ grid-template-columns:1fr; }
  .form-row{ grid-template-columns:1fr; }
  .topbar-msg span:not(.icon){ display:none; }
  /* Option 2 : grid compact à 2 colonnes — tout reste visible (pas de pli/dépli), mais
     Navigation/Aide/Contact se répartissent sur 2 colonnes au lieu d'empiler chaque
     section en pleine largeur, ce qui réduit la hauteur sans rien cacher. Les boutons
     .footer-col-toggle redeviennent de simples titres non cliquables, comme en desktop. */
  .footer-grid{ grid-template-columns:1fr 1fr; gap:28px 20px; }
  .footer-brand{ grid-column:1 / -1; margin-bottom:8px; }
  .footer-col-toggle{ cursor:default; }
  .footer-col-chevron{ display:none; }
  .footer-col-body{ display:block; }
  .footer-bottom{ flex-direction:column; align-items:flex-start; }
  /* Sur mobile, le tableau cède la place à une liste de cartes compactes (même style
     que le tiroir panier) — plus lisible qu'un tableau reconverti en blocs empilés. */
  .cart-table{ display:none; }
  .cart-mobile-list{ display:flex; flex-direction:column; gap:12px; }
  .cart-mobile-list .cd-line{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:16px; }
  /* La bande défile horizontalement quelle que soit la taille d'écran — juste des cartes
     un peu plus petites sur mobile pour en laisser entrevoir plus à la fois. */
  .cart-reco-strip{ gap:10px; }
  .cart-reco-card{ flex-basis:108px; }
  .cart-reco-card-media{ width:108px; height:108px; }
  .newsletter{ padding:28px 22px; border-radius:var(--radius-md); }
  .newsletter-form{ flex-direction:column; }
  .newsletter-form input{ width:100%; }
  .newsletter-form .btn{ width:100%; }
}
@media (max-width: 460px){
  /* Les 4 cartes "Pourquoi choisir High Santé" retombaient à 1 colonne sur très petit
     écran : chaque carte prenait toute la largeur et il fallait beaucoup scroller pour
     les voir toutes. Gardées à 2 colonnes, comme les fiches produit juste en dessous. */
  .trust-grid{ grid-template-columns:1fr 1fr; gap:12px; }
  .trust-item{ padding:18px 14px; }
  .trust-icon{ width:38px; height:38px; margin-bottom:10px; }
  .trust-item h3{ font-size:.92rem; }
  .trust-item p{ font-size:.82rem; }
  /* Les fiches produit restent sur 2 colonnes même sur les très petits écrans (demande
     explicite), avec un peu moins de marge intérieure pour rester lisibles. */
  .product-grid{ grid-template-columns:1fr 1fr; gap:12px; }
  .product-body{ padding:12px 12px 14px; gap:6px; }
  .product-name{ font-size:.88rem; }
  .price-current{ font-size:.98rem; }
  .add-btn{ width:36px; height:36px; }
  /* Le badge "Vous économisez" gardait sa taille desktop et paraissait disproportionné
     à côté du reste de la carte, déjà réduit pour le format 2 colonnes. */
  .bundle-savings{ padding:5px 10px; font-size:.72rem; gap:4px; margin-top:4px; }
  .bundle-savings .icon{ width:12px; height:12px; }
  .bundle-includes-summary{ font-size:.72rem; gap:5px; }
  .bundle-includes-summary .icon{ width:13px; height:13px; }
  .cd-drawer{ width:100%; max-width:100%; }
  /* Encore un cran plus compact sur très petit écran — la bande de recommandations ne
     doit pas dominer visuellement une page déjà étroite. */
  .cart-reco-card{ flex-basis:92px; }
  .cart-reco-card-media{ width:92px; height:92px; }
  .cart-reco-card-add{ width:26px; height:26px; bottom:6px; }
  .cart-reco-card-add .icon{ width:13px; height:13px; }
  .cart-reco-card-name{ font-size:.78rem; margin-top:8px; }
  .cart-reco-card-price{ font-size:.78rem; }
}
@media (max-width: 480px){
  /* Sur téléphone, logo + 5 icônes d'action (recherche, favoris, compte, panier, menu)
     dépassaient la largeur de l'écran : le bouton menu (le dernier de la liste, donc
     celui qui dépassait le plus) se retrouvait poussé hors champ — invisible, impossible
     à toucher, et le menu de navigation principal devenait totalement inaccessible sur
     mobile (aucun autre moyen d'atteindre "Catégorie" ou "Suivi commande"). Tout est
     réduit ici pour que l'ensemble tienne sur les écrans les plus étroits (~360-390px). */
  .header-inner{ gap:12px; }
  .logo{ gap:6px; font-size:1.05rem; }
  .logo-badge{ width:38px; height:38px; }
  .header-actions{ gap:4px; }
  .icon-btn{ width:32px; height:32px; }
  .icon-btn .icon{ width:18px; height:18px; }
}
@media (max-width: 520px){
  /* Le bloc prix passait à la ligne (flex-wrap) en dessous du nom/badge, ce qui doublait
     la hauteur de chaque carte. On garde le prix aligné à droite sur la même ligne que le
     nom, comme sur desktop, avec des tailles/marges réduites pour que ça tienne. */
  .tier-option{ gap:10px; padding:11px 14px; }
  .tier-radio-dot{ width:18px; height:18px; }
  .tier-name{ font-size:.86rem; }
  .tier-ribbon{ font-size:.6rem; padding:3px 7px; }
  .tier-save{ font-size:.74rem; margin-top:2px; }
  .tier-price-current{ font-size:.92rem; }
  .tier-price-old{ font-size:.72rem; }
}

/* ---------- RTL fine-tuning ---------- */
body.is-rtl .breadcrumb .icon{ transform:scaleX(-1); }
