/* ================================================================
   A l'Antica — Feuille de style principale
   Palette rouge / or / crème / brun — spirit corso-premium
   Structure :
     1. Tokens (vars) + reset
     2. Primitives (.icon, .container, boutons)
     3. Navbar / Hero / Banner / Trust
     4. Produits (cards, images, recherche, filtres)
     5. Commander / Histoire / Marché / Contact / Footer
     6. Panier (flottant + panneau + formulaire)
     7. Décors (aurora, fougère, feuilles, carte Corse, montagnes)
     8. Animations & micro-interactions
     9. Responsive (XL → 480)
    10. prefers-reduced-motion
================================================================ */


/* ============================================================
   1. TOKENS + RESET
============================================================ */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

:root {
  /* --- Palette (thème clair par défaut) --- */
  --rouge:       #D4580A;
  --rouge-cl:    #E8700F;
  --rouge-dk:    #A8440A;
  --or:          #F4A827;
  --or-cl:       #F7B948;
  --or-dk:       #D68E13;
  --creme:       #FAF6EE;
  --creme-dk:    #F0EADE;
  --brun:        #2C1A0E;
  --brun-cl:     #3F2817;
  --gris:        #6B6B6B;
  --gris-cl:     #9A9088;
  --gris-xcl:    #D5CEC4;
  --blanc:       #FFFFFF;
  --bg-soft:     #FFFCF7;
  /* --on-accent : toujours blanc, JAMAIS inversé en dark.
     À utiliser pour le texte sur les boutons CTA accent (rouge/or/vert/bleu)
     car var(--blanc) s'inverse en dark et casse la lisibilité du texte. */
  --on-accent:   #FFFFFF;
}

/* --- Thème sombre : inversion des variables principales ---
   Activé via data-theme="dark" sur <html> ou <body> (toggle utilisateur ou prefers-color-scheme).
   Garde les accents rouge/or (marchent bien sur fond sombre), inverse les neutres. */
[data-theme="dark"] {
  --creme:       #1B1410;  /* fond principal page (était #FAF6EE) */
  --creme-dk:    #221912;  /* sections plus sombres */
  --brun:        #F4ECE0;  /* texte principal (était #2C1A0E) */
  --brun-cl:     #E8DCC8;
  --gris:        #B5ADA4;  /* texte secondaire */
  --gris-cl:     #948C82;
  --gris-xcl:    #4A4239;
  --blanc:       #2A1F18;  /* cards / fonds clairs (était #FFFFFF) */
  --bg-soft:     #1F1610;  /* fond très clair (était #FFFCF7) */
  /* Légère adaptation des accents pour meilleur contraste sur sombre */
  --rouge-cl:    #F47020;
  --or:          #FFB835;
  --or-cl:       #FFC966;
  /* Alphas neutres réajustés pour ombre sur fond sombre */
  --brun-a04:    rgba(0,0,0,.20);
  --brun-a06:    rgba(0,0,0,.30);
  --brun-a08:    rgba(0,0,0,.40);
  --brun-a12:    rgba(0,0,0,.50);
  color-scheme: dark;
}

/* Restaure le bloc original pour les variables non-thématisées */
:root {

  /* Accents Corse */
  --blu-mare:    #1F5A8A;
  --blu-cielo:   #6FA8D6;
  --verde-maquis:#4A7F3E;
  --granit:      #8A8175;
  --noir-testa:  #1A1A1A;

  /* --- Alphas rouges/or réutilisables (remplacent rgba inline) --- */
  --or-a06:      rgba(244,168,39,.06);
  --or-a10:      rgba(244,168,39,.10);
  --or-a14:      rgba(244,168,39,.14);
  --or-a18:      rgba(244,168,39,.18);
  --or-a22:      rgba(244,168,39,.22);
  --or-a30:      rgba(244,168,39,.30);
  --or-a45:      rgba(244,168,39,.45);
  --rouge-a06:   rgba(212,88,10,.06);
  --rouge-a08:   rgba(212,88,10,.08);
  --rouge-a12:   rgba(212,88,10,.12);
  --rouge-a18:   rgba(212,88,10,.18);
  --rouge-a25:   rgba(212,88,10,.25);
  --rouge-a35:   rgba(212,88,10,.35);
  --rouge-a45:   rgba(212,88,10,.45);
  --brun-a04:    rgba(44,26,14,.04);
  --brun-a06:    rgba(44,26,14,.06);
  --brun-a08:    rgba(44,26,14,.08);
  --brun-a12:    rgba(44,26,14,.12);

  /* --- Elevation (box-shadows en couches) --- */
  --sh-xs:         0 1px 2px var(--brun-a06);
  --sh-sm:         0 2px 4px var(--brun-a06), 0 1px 2px var(--brun-a04);
  --sh-md:         0 4px 12px var(--brun-a08), 0 2px 4px rgba(44,26,14,.05);
  --sh-lg:         0 12px 32px var(--brun-a12), 0 4px 12px var(--brun-a06);
  --sh-xl:         0 24px 64px rgba(44,26,14,.18), 0 8px 24px var(--brun-a08);
  --sh-glow-or:    0 6px 24px var(--rouge-a35);
  --sh-glow-rouge: 0 8px 28px var(--rouge-a35);

  /* --- Rayons --- */
  --r-xs: 4px;
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 16px;
  --r-xl: 24px;
  --r-full: 999px;

  /* --- Easing --- */
  --ease-out:    cubic-bezier(.22, 1, .36, 1);
  --ease-soft:   cubic-bezier(.4, 0, .2, 1);
  --ease-bounce: cubic-bezier(.34, 1.56, .64, 1);

  /* --- Status colors (unifiés) --- */
  --success:     #27ae60;
  --success-cl:  #2ecc71;
  --success-bg:  rgba(39,174,96,.08);
  --success-bd:  rgba(39,174,96,.3);
  --warning:     #f0ad4e;
  --warning-bg:  rgba(240,173,78,.08);
  --warning-bd:  rgba(240,173,78,.3);
  --error:       #e74c3c;
  --error-dk:    #c0392b;
  --error-bg:    rgba(231,76,60,.08);
  --error-bd:    rgba(231,76,60,.3);
  --info:        #3498db;
  --info-bg:     rgba(52,152,219,.08);
  --info-bd:     rgba(52,152,219,.3);

  /* Rétrocompat */
  --ombre: rgba(0,0,0,.18);
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  /* Safe area insets (iPhone notch / home indicator) */
  --safe-top: env(safe-area-inset-top, 0);
  --safe-bottom: env(safe-area-inset-bottom, 0);
  --safe-left: env(safe-area-inset-left, 0);
  --safe-right: env(safe-area-inset-right, 0);
}

body {
  font-family: 'Lato', sans-serif;
  color: var(--brun);
  background: var(--creme);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  line-height: 1.55;
  /* Tap delay éliminé + pas de callout long-press iOS (confort app) */
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none;
  /* Inertie scroll iOS type app native */
  -webkit-overflow-scrolling: touch;
  /* Pull-to-refresh désactivé (évite comportement bizarre sur mobile PWA) */
  overscroll-behavior-y: contain;
}

/* Mobile : font-size ≥ 16px sur inputs pour EMPÊCHER le zoom auto iOS Safari */
@media (max-width: 768px) {
  input, select, textarea {
    font-size: 16px !important;
  }
  /* Boutons hauteur ≥ 48px : confort tactile (WCAG touch target) */
  button, .btn, a.btn {
    min-height: 44px;
    touch-action: manipulation;
  }
  /* Cliquables : feedback visuel au tap (type app native) */
  button:active, .btn:active, a.btn:active, .produit-card:active {
    transform: scale(0.97);
    transition: transform .08s ease-out;
  }
}

/* ─── Images produits : aspect-ratio pour éliminer CLS (Core Web Vitals) */
.produit-img, .produit-no-img {
  aspect-ratio: 4 / 3;
  background: linear-gradient(135deg, var(--creme) 0%, var(--creme-dk) 100%);
}
.produit-img--bouteille { aspect-ratio: 3 / 4; }

/* ─── Skeleton loader (shimmer) : pendant chargement produits */
.skel-card {
  border-radius: var(--r-md);
  overflow: hidden;
  background: #fff;
  box-shadow: 0 2px 10px rgba(44,26,14,.06);
}
.skel-img, .skel-line {
  background: linear-gradient(90deg, var(--creme) 0%, var(--creme-dk) 50%, var(--creme) 100%);
  background-size: 200% 100%;
  animation: skel-shimmer 1.3s ease-in-out infinite;
}
.skel-img { aspect-ratio: 4 / 3; }
.skel-line { height: 14px; border-radius: 7px; margin: 8px 14px; }
.skel-line--short { width: 40%; }
.skel-line--medium { width: 70%; }
@keyframes skel-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ─── Flying add-to-cart (ghost qui vole vers icône panier) */
.cart-ghost {
  position: fixed;
  z-index: 9999;
  pointer-events: none;
  background: var(--rouge);
  border-radius: 8px;
  box-shadow: 0 6px 20px rgba(212, 88, 10, .45);
  will-change: transform, opacity;
  transition: transform .75s cubic-bezier(.22, 1, .36, 1), opacity .6s .15s ease-out;
}
@keyframes panier-badge-pop {
  0% { transform: scale(1); }
  40% { transform: scale(1.45); }
  70% { transform: scale(.92); }
  100% { transform: scale(1); }
}
.panier-badge.pop { animation: panier-badge-pop .45s cubic-bezier(.34, 1.56, .64, 1); }

a { text-decoration: none; color: inherit; }
ul { list-style: none; }
img { max-width: 100%; display: block; }

/* Scrollbar (desktop) */
@media (pointer: fine) {
  ::-webkit-scrollbar        { width: 10px; height: 10px; }
  ::-webkit-scrollbar-track  { background: var(--creme-dk); }
  ::-webkit-scrollbar-thumb  {
    background: var(--or-dk);
    border-radius: var(--r-full);
    border: 2px solid var(--creme-dk);
  }
  ::-webkit-scrollbar-thumb:hover { background: var(--rouge); }
}

::selection { background: var(--or); color: var(--brun); }

/* Focus accessible uniforme (WCAG 2.4.7 — rouge visible sur fond crème) */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--rouge);
  outline-offset: 2px;
  border-radius: var(--r-xs);
}

/* Bloc prix total dans le panier (si client autorisé) */
.panier-prix-box {
  background: linear-gradient(135deg, var(--or-a06) 0%, var(--rouge-a06) 100%);
  border: 1.5px solid var(--or);
  border-radius: var(--r-md);
  padding: 14px 16px;
  margin-top: 10px;
  font-size: .9rem;
  color: var(--brun);
}
.panier-prix-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 0;
  font-size: .88rem;
}
.panier-prix-row--remise {
  color: var(--success);
  font-weight: 600;
}
.panier-prix-row--total {
  border-top: 2px solid var(--or);
  margin-top: 6px;
  padding-top: 10px;
  font-size: 1.1rem;
  font-weight: 700;
}
.panier-prix-row--total strong {
  color: var(--rouge);
  font-size: 1.25rem;
  font-family: 'Playfair Display', serif;
}
.btn-facture-pdf {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  margin-top: 12px;
  padding: 10px 18px;
  background: var(--brun);
  color: var(--or);
  border: 1.5px solid var(--or);
  border-radius: var(--r-sm);
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  font-size: .82rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background .2s var(--ease-out), color .2s var(--ease-out), transform .15s var(--ease-out);
  min-height: 44px;
}
.btn-facture-pdf:hover {
  background: var(--or);
  color: var(--brun);
  transform: translateY(-1px);
}
.btn-facture-pdf:active { transform: translateY(0); }
.panier-prix-hint {
  font-size: .72rem;
  color: var(--gris);
  margin-top: 8px;
  line-height: 1.4;
  font-style: italic;
}

/* Skip link accessibilité — cachée sauf au focus clavier */
.skip-link {
  position: absolute;
  top: -48px;
  left: 12px;
  background: var(--brun);
  color: var(--or);
  padding: 10px 20px;
  border-radius: var(--r-sm);
  font-weight: 700;
  font-size: .86rem;
  letter-spacing: .04em;
  text-decoration: none;
  z-index: 100000;
  transition: top .2s var(--ease-out);
  box-shadow: var(--sh-lg);
  border: 2px solid var(--or);
}
.skip-link:focus-visible {
  top: 12px;
  outline: 3px solid var(--or-cl);
  outline-offset: 2px;
}

.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 32px;
}


/* ============================================================
   2. PRIMITIVES
============================================================ */

/* Icônes SVG (Lucide) */
.icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
  stroke-width: 2;
  flex-shrink: 0;
  overflow: visible;
  color: currentColor;
}
.icon-sm { width: 14px; height: 14px; }
.icon-md { width: 18px; height: 18px; }
.icon-lg { width: 22px; height: 22px; }
.icon-xl { width: 32px; height: 32px; }

/* --- Boutons --- */
.btn-primary {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: linear-gradient(135deg, var(--rouge) 0%, var(--rouge-cl) 100%);
  background-size: 200% 100%;
  background-position: 0% 0%;
  color: var(--blanc);
  padding: 15px 38px;
  border-radius: var(--r-sm);
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  border: none;
  cursor: pointer;
  box-shadow: var(--sh-glow-rouge);
  overflow: hidden;
  transition:
    transform .3s var(--ease-out),
    box-shadow .3s var(--ease-out),
    filter .2s,
    background-position .45s var(--ease-out);
}
.btn-primary::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,.2) 0%, rgba(255,255,255,0) 60%);
  opacity: 0;
  transition: opacity .3s var(--ease-out);
}
.btn-primary:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 40px var(--rouge-a45);
  filter: brightness(1.05);
  background-position: 60% 0%;
}
.btn-primary:hover::after { opacity: 1; }
.btn-primary:active { transform: translateY(-1px); filter: brightness(.98); }

.btn-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: rgba(255,255,255,.08);
  color: var(--blanc);
  padding: 15px 38px;
  border-radius: var(--r-sm);
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  border: 2px solid rgba(255,255,255,.55);
  cursor: pointer;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition:
    background .3s var(--ease-out),
    border-color .3s var(--ease-out),
    transform .3s var(--ease-out);
}
.btn-secondary:hover {
  background: rgba(255,255,255,.18);
  border-color: var(--blanc);
  transform: translateY(-3px);
}
.btn-secondary:active { transform: translateY(-1px); }

.btn-commander {
  margin-top: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 12px 16px;
  background: linear-gradient(135deg, var(--rouge) 0%, var(--rouge-cl) 100%);
  color: var(--blanc);
  border: none;
  border-radius: var(--r-sm);
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  font-size: .86rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
  box-shadow: 0 4px 12px var(--rouge-a25);
  transition:
    box-shadow .25s var(--ease-out),
    transform .15s var(--ease-out),
    filter .2s;
}
.btn-commander:hover {
  box-shadow: 0 8px 22px rgba(212,88,10,.4);
  filter: brightness(1.05);
  transform: translateY(-1px);
}
.btn-commander:active { transform: scale(.97); }
.btn-commander.ajoute {
  background: linear-gradient(135deg, #2e7d32 0%, #43a047 100%);
  box-shadow: 0 4px 12px rgba(46,125,50,.3);
}

.btn-envoyer {
  width: 100%;
  padding: 15px;
  background: linear-gradient(135deg, var(--rouge) 0%, var(--rouge-cl) 100%);
  color: var(--blanc);
  border: none;
  border-radius: var(--r-sm);
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: .04em;
  cursor: pointer;
  box-shadow: 0 6px 20px var(--rouge-a35);
  margin-top: 10px;
  text-transform: uppercase;
  transition:
    box-shadow .25s var(--ease-out),
    transform .2s var(--ease-out),
    filter .2s;
}
.btn-envoyer:hover {
  box-shadow: 0 10px 28px var(--rouge-a45);
  filter: brightness(1.05);
  transform: translateY(-2px);
}
.btn-envoyer:active { transform: translateY(0); }
.btn-envoyer:disabled {
  background: var(--gris-xcl);
  color: var(--gris);
  box-shadow: none;
  cursor: not-allowed;
  filter: none;
  transform: none;
}

/* Boutons — ripple + overflow partagé */
.btn-primary,
.btn-secondary,
.btn-commander,
.btn-envoyer {
  position: relative;
  overflow: hidden;
}

.ripple {
  position: absolute;
  border-radius: 50%;
  background: rgba(255,255,255,.45);
  pointer-events: none;
  transform: scale(0);
  animation: ripple-out .65s ease-out;
  z-index: 2;
}
@keyframes ripple-out {
  to { transform: scale(2.6); opacity: 0; }
}

/* ============================================================
   2bis. UI KIT UNIFIÉ — composants partagés
   (utilisés sur accueil, compte, login, panier, modals)
============================================================ */

/* -----------------------------------------------------------
   BOUTONS — variantes unifiées (btn + modifier)
   Toutes les variantes partagent la géométrie et les transitions
----------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 14px 28px;
  border: 2px solid transparent;
  border-radius: var(--r-sm);
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  font-size: .95rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  min-height: 44px;
  line-height: 1.2;
  position: relative;
  overflow: hidden;
  transition:
    transform .25s var(--ease-out),
    box-shadow .25s var(--ease-out),
    background-color .25s var(--ease-out),
    border-color .25s var(--ease-out),
    color .25s var(--ease-out),
    filter .2s;
  user-select: none;
  white-space: nowrap;
}
.btn:disabled,
.btn[aria-disabled="true"] {
  opacity: .55;
  cursor: not-allowed;
  filter: grayscale(.3);
  transform: none !important;
  box-shadow: none !important;
}
.btn .icon { flex-shrink: 0; }

/* Taille compact */
.btn--sm {
  padding: 9px 18px;
  font-size: .82rem;
  min-height: 38px;
  letter-spacing: .06em;
}
.btn--lg {
  padding: 16px 36px;
  font-size: 1.05rem;
  min-height: 52px;
}
.btn--block {
  width: 100%;
}

/* ── Variante PRIMARY (rouge gradient) ── */
.btn--primary {
  background: linear-gradient(135deg, var(--rouge) 0%, var(--rouge-cl) 100%);
  color: var(--blanc);
  border-color: transparent;
  box-shadow: 0 6px 20px var(--rouge-a35);
}
.btn--primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 28px var(--rouge-a45);
  filter: brightness(1.05);
}
.btn--primary:active { transform: translateY(0); filter: brightness(.98); }

/* ── Variante SECONDARY (contour rouge, fill au hover) ── */
.btn--secondary-rouge {
  background: transparent;
  color: var(--rouge);
  border-color: var(--rouge);
}
.btn--secondary-rouge:hover {
  background: var(--rouge);
  color: var(--blanc);
  transform: translateY(-2px);
  box-shadow: 0 8px 20px var(--rouge-a25);
}
.btn--secondary-rouge:active { transform: translateY(0); }

/* ── Variante SUCCESS (vert) ── */
.btn--success {
  background: linear-gradient(135deg, var(--success) 0%, var(--success-cl) 100%);
  color: var(--blanc);
  border-color: transparent;
  box-shadow: 0 6px 20px rgba(39,174,96,.3);
}
.btn--success:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 28px rgba(39,174,96,.4);
  filter: brightness(1.05);
}
.btn--success:active { transform: translateY(0); }

/* ── Variante DANGER (rouge vif, pour actions destructrices) ── */
.btn--danger {
  background: var(--error);
  color: var(--blanc);
  border-color: transparent;
  box-shadow: 0 4px 14px rgba(231,76,60,.3);
}
.btn--danger:hover {
  background: var(--error-dk);
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(231,76,60,.4);
}
.btn--danger:active { transform: translateY(0); }

/* ── Variante DANGER OUTLINE ── */
.btn--danger-outline {
  background: transparent;
  color: var(--error);
  border-color: var(--error);
}
.btn--danger-outline:hover {
  background: var(--error);
  color: var(--blanc);
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(231,76,60,.25);
}

/* ── Variante NEUTRE (annuler, retour) ── */
.btn--neutral {
  background: var(--blanc);
  color: var(--gris);
  border-color: var(--gris-xcl);
}
.btn--neutral:hover {
  border-color: var(--gris-cl);
  color: var(--brun);
  transform: translateY(-1px);
  box-shadow: var(--sh-sm);
}

/* ── Variante GHOST/LIEN (juste texte) ── */
.btn--ghost {
  background: transparent;
  color: var(--rouge);
  border-color: transparent;
  padding: 8px 14px;
  text-transform: none;
  letter-spacing: .01em;
  font-weight: 600;
  box-shadow: none;
  min-height: auto;
}
.btn--ghost:hover {
  color: var(--rouge-dk);
  background: var(--rouge-a06);
  transform: none;
}

/* -----------------------------------------------------------
   CARDS — conteneur partagé (produit, info, stat, etc.)
----------------------------------------------------------- */
.card {
  background: var(--blanc);
  border: 1px solid rgba(212,88,10,.1);
  border-radius: var(--r-md);
  box-shadow: var(--sh-sm);
  padding: 22px 24px;
  transition:
    transform .25s var(--ease-out),
    box-shadow .25s var(--ease-out),
    border-color .25s var(--ease-out);
}
.card--hover:hover {
  transform: translateY(-3px);
  box-shadow: var(--sh-md);
  border-color: var(--or-a22);
}
.card--accent {
  border-left: 4px solid var(--rouge);
}
.card--muted {
  background: var(--bg-soft);
}

/* -----------------------------------------------------------
   INPUTS / FORMS — cohérence totale
   Classe .ui-input peut être appliquée à <input>, <select>, <textarea>.
   Par défaut, tous les <input>/<select>/<textarea> dans .ui-form partagent ce style.
----------------------------------------------------------- */
.ui-input,
.ui-form input[type="text"],
.ui-form input[type="email"],
.ui-form input[type="password"],
.ui-form input[type="tel"],
.ui-form input[type="search"],
.ui-form input[type="number"],
.ui-form input[type="url"],
.ui-form input[type="date"],
.ui-form input[type="time"],
.ui-form textarea,
.ui-form select {
  width: 100%;
  padding: 12px 16px;
  border: 1.5px solid var(--gris-xcl);
  border-radius: var(--r-sm);
  font-size: 15px;
  font-family: 'Lato', sans-serif;
  color: var(--brun);
  background: var(--bg-soft);
  outline: none;
  transition:
    border-color .2s var(--ease-out),
    box-shadow .2s var(--ease-out),
    background .2s var(--ease-out);
  -webkit-appearance: none;
  appearance: none;
}
.ui-input:hover,
.ui-form input:hover,
.ui-form textarea:hover,
.ui-form select:hover {
  border-color: var(--gris-cl);
}
.ui-input:focus,
.ui-form input:focus,
.ui-form textarea:focus,
.ui-form select:focus {
  border-color: var(--or);
  background: var(--blanc);
  box-shadow: 0 0 0 3px rgba(244,168,39,.15);
}
.ui-input:disabled,
.ui-form input:disabled,
.ui-form textarea:disabled,
.ui-form select:disabled {
  opacity: .6;
  cursor: not-allowed;
  background: var(--creme-dk);
}
.ui-form select {
  cursor: pointer;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23D4580A' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  padding-right: 38px;
}
.ui-form textarea {
  resize: vertical;
  min-height: 88px;
  line-height: 1.55;
}
.ui-form label {
  display: block;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--rouge);
  margin-bottom: 6px;
}
.ui-form .field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 16px;
}
.ui-form .field-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

/* -----------------------------------------------------------
   BADGES / CHIPS — style unique
   Modifiers : --success / --warning / --error / --info / --accent
----------------------------------------------------------- */
.ui-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 12px;
  border-radius: var(--r-full);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  line-height: 1;
  border: 1px solid transparent;
  white-space: nowrap;
}
.ui-badge--sm { padding: 3px 9px; font-size: .66rem; }
.ui-badge--success {
  background: var(--success-bg);
  color: var(--success);
  border-color: var(--success-bd);
}
.ui-badge--warning {
  background: var(--warning-bg);
  color: var(--warning);
  border-color: var(--warning-bd);
}
.ui-badge--error {
  background: var(--error-bg);
  color: var(--error-dk);
  border-color: var(--error-bd);
}
.ui-badge--info {
  background: var(--info-bg);
  color: var(--info);
  border-color: var(--info-bd);
}
.ui-badge--accent {
  background: var(--or-a14);
  color: var(--rouge-dk);
  border-color: var(--or-a30);
}
.ui-badge--rouge {
  background: var(--rouge);
  color: var(--blanc);
  border-color: var(--rouge);
}

/* -----------------------------------------------------------
   ALERTES / MESSAGES — style unifié
   Usage : <div class="ui-alert ui-alert--success">...</div>
----------------------------------------------------------- */
.ui-alert {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 16px;
  border-radius: var(--r-sm);
  font-size: .92rem;
  line-height: 1.5;
  border: 1px solid transparent;
  margin: 0 0 16px;
}
.ui-alert--success {
  background: var(--success-bg);
  color: #1e7a40;
  border-color: var(--success-bd);
}
.ui-alert--warning {
  background: var(--warning-bg);
  color: #8a6116;
  border-color: var(--warning-bd);
}
.ui-alert--error {
  background: var(--error-bg);
  color: var(--error-dk);
  border-color: var(--error-bd);
}
.ui-alert--info {
  background: var(--info-bg);
  color: #1e6fa3;
  border-color: var(--info-bd);
}

/* -----------------------------------------------------------
   MODALS — overlay + container unifiés
   Usage :
     <div class="ui-modal-overlay"><div class="ui-modal" role="dialog">...</div></div>
----------------------------------------------------------- */
.ui-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: rgba(44,26,14,.6);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: ui-modal-fade .25s var(--ease-out);
}
@keyframes ui-modal-fade {
  from { opacity: 0; backdrop-filter: blur(0); }
  to   { opacity: 1; backdrop-filter: blur(4px); }
}
.ui-modal {
  background: var(--blanc);
  border-radius: var(--r-lg);
  box-shadow: var(--sh-xl);
  width: 100%;
  max-width: 440px;
  max-height: 90vh;
  overflow-y: auto;
  padding: 28px 28px 24px;
  position: relative;
  animation: ui-modal-pop .3s var(--ease-out);
}
@keyframes ui-modal-pop {
  from { opacity: 0; transform: scale(.94) translateY(8px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}
.ui-modal__header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--creme-dk);
}
.ui-modal__title {
  font-family: 'Playfair Display', serif;
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--brun);
  flex: 1;
  line-height: 1.2;
}
.ui-modal__close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 34px;
  height: 34px;
  border: none;
  border-radius: var(--r-full);
  background: var(--creme);
  color: var(--gris);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition:
    background .2s,
    color .2s,
    transform .2s;
}
.ui-modal__close:hover {
  background: var(--rouge);
  color: var(--blanc);
  transform: rotate(90deg);
}
.ui-modal__body {
  color: var(--brun);
  font-size: .95rem;
  line-height: 1.6;
}
.ui-modal__actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 20px;
  flex-wrap: wrap;
}
.ui-modal__actions .btn { min-height: 40px; padding: 10px 20px; font-size: .85rem; }
@media (max-width: 480px) {
  .ui-modal { padding: 22px 20px 20px; border-radius: var(--r-md); }
  .ui-modal__title { font-size: 1.15rem; }
  .ui-modal__actions { justify-content: stretch; }
  .ui-modal__actions .btn { flex: 1; }
}

/* -----------------------------------------------------------
   AUTH PAGES — layout partagé (login, inscription, reset)
----------------------------------------------------------- */
.auth-wrap {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px 16px;
  background:
    radial-gradient(ellipse 70% 50% at 50% 0%, var(--or-a14) 0%, transparent 60%),
    radial-gradient(ellipse 70% 50% at 50% 100%, var(--rouge-a12) 0%, transparent 60%),
    var(--brun);
  font-family: 'Lato', sans-serif;
  color: var(--brun);
}
.auth-card {
  background: var(--blanc);
  border-radius: var(--r-lg);
  padding: 40px 36px;
  width: 100%;
  max-width: 420px;
  box-shadow: var(--sh-xl), 0 0 0 1px var(--or-a14);
  position: relative;
}
.auth-card--wide { max-width: 460px; }
.auth-card__logo {
  text-align: center;
  margin-bottom: 26px;
}
.auth-card__logo h1 {
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: 1.9rem;
  font-weight: 900;
  color: var(--rouge);
  letter-spacing: .02em;
  line-height: 1;
  background: linear-gradient(135deg, var(--rouge) 0%, var(--or) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.auth-card__logo p {
  color: var(--gris);
  font-size: .85rem;
  margin-top: 6px;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-weight: 600;
}
.auth-card .ui-form label {
  margin-top: 14px;
}
.auth-card .ui-form label:first-of-type { margin-top: 0; }
.auth-card__link {
  display: block;
  text-align: center;
  margin-top: 14px;
  font-size: .85rem;
  color: var(--gris);
  text-decoration: none;
  transition: color .2s;
}
.auth-card__link:hover { color: var(--rouge); }
.auth-card__link--accent { color: var(--rouge); font-weight: 600; }
.auth-oauth {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 14px;
}
.auth-oauth-sep {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 22px 0 8px;
  color: var(--gris-cl);
  font-size: .78rem;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.auth-oauth-sep::before,
.auth-oauth-sep::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--gris-xcl);
}
.auth-oauth-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 11px 16px;
  border-radius: var(--r-sm);
  font-family: 'Lato', sans-serif;
  font-weight: 600;
  font-size: .9rem;
  text-decoration: none;
  transition:
    transform .2s,
    box-shadow .2s,
    border-color .2s;
  min-height: 44px;
}
.auth-oauth-btn--google {
  background: #FFFFFF;
  color: #3c4043;
  border: 1.5px solid #DADCE0;
}
.auth-oauth-btn--google:hover {
  border-color: #4285F4;
  transform: translateY(-1px);
  box-shadow: var(--sh-sm);
}
.auth-oauth-btn--apple {
  background: #000000;
  color: #FFFFFF;
  border: 1.5px solid #000000;
}
.auth-oauth-btn--apple:hover {
  transform: translateY(-1px);
  box-shadow: var(--sh-md);
  filter: brightness(1.15);
}
@media (max-width: 480px) {
  .auth-card { padding: 30px 22px; }
  .auth-card__logo h1 { font-size: 1.65rem; }
}

/* -----------------------------------------------------------
   ACCOUNT DASHBOARD — styles partagés pour pageCompte
----------------------------------------------------------- */
.acc-layout {
  max-width: 980px;
  margin: 28px auto;
  padding: 0 24px;
}
.acc-hero {
  background: var(--blanc);
  border: 1px solid rgba(212,88,10,.1);
  border-left: 4px solid var(--rouge);
  border-radius: var(--r-md);
  padding: 24px 28px;
  margin-bottom: 24px;
  box-shadow: var(--sh-md);
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
}
.acc-hero h2 {
  font-family: 'Playfair Display', serif;
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--rouge);
  line-height: 1.1;
  margin-bottom: 4px;
}
.acc-hero p {
  color: var(--gris);
  font-size: .9rem;
  margin: 0;
}
.acc-tabs-wrap {
  background: var(--blanc);
  border: 1px solid rgba(212,88,10,.1);
  border-radius: var(--r-md);
  box-shadow: var(--sh-md);
  overflow: hidden;
}
.acc-tabs-bar {
  display: flex;
  padding: 0 20px;
  border-bottom: 2px solid var(--creme-dk);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  gap: 0;
}
.acc-tab {
  background: none;
  border: none;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  padding: 14px 20px;
  font-family: 'Lato', sans-serif;
  font-size: .88rem;
  font-weight: 700;
  color: var(--gris);
  cursor: pointer;
  white-space: nowrap;
  letter-spacing: .04em;
  text-transform: uppercase;
  transition: color .2s, border-color .2s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.acc-tab:hover { color: var(--rouge); }
.acc-tab.active {
  color: var(--rouge);
  border-bottom-color: var(--rouge);
}
.acc-panel {
  display: none;
  padding: 28px;
}
.acc-panel.active { display: block; }
.acc-section-hd {
  font-family: 'Playfair Display', serif;
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--brun);
  margin: 26px 0 14px;
  padding-top: 22px;
  border-top: 1px solid var(--creme-dk);
}
.acc-section-hd:first-child {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}
@media (max-width: 768px) {
  .acc-layout { padding: 0 12px; margin: 14px auto; }
  .acc-hero { padding: 16px 18px; flex-direction: column; align-items: flex-start; }
  .acc-hero h2 { font-size: 1.25rem; }
  .acc-panel { padding: 18px; }
}


/* ============================================================
   3. NAVBAR / HERO / BANNER / TRUST
============================================================ */

/* --- Navbar --- */
.navbar {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 40px;
  transition:
    background .35s var(--ease-out),
    box-shadow .35s var(--ease-out),
    padding .35s var(--ease-out),
    backdrop-filter .35s var(--ease-out);
}
.navbar.scrolled {
  background: rgba(44,26,14,.92);
  backdrop-filter: saturate(180%) blur(14px);
  -webkit-backdrop-filter: saturate(180%) blur(14px);
  box-shadow: 0 4px 24px rgba(0,0,0,.2);
  padding: 12px 40px;
  border-bottom: 1px solid var(--or-a14);
}

.logo {
  font-family: 'Playfair Display', serif;
  font-size: 1.7rem;
  font-weight: 900;
  color: var(--or);
  letter-spacing: .04em;
  text-shadow: 0 2px 12px rgba(0,0,0,.25);
}

.nav-links { display: flex; gap: 36px; }
.nav-links a {
  position: relative;
  color: rgba(255,255,255,.88);
  font-size: .93rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  transition: color .25s var(--ease-out);
  padding: 4px 0;
}
.nav-links a::after {
  content: '';
  position: absolute;
  left: 50%; bottom: -4px;
  width: 0; height: 2px;
  background: var(--or);
  transform: translateX(-50%);
  transition: width .3s var(--ease-out);
  border-radius: var(--r-full);
}
.nav-links a:hover,
.nav-links a.active { color: var(--or); }
.nav-links a:hover::after,
.nav-links a.active::after { width: 100%; }

.nav-toggle {
  display: none;
  background: none;
  border: none;
  color: var(--or);
  font-size: 1.6rem;
  cursor: pointer;
}

/* --- Hero --- */
.hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  background:
    linear-gradient(160deg, rgba(212,88,10,.55) 0%, rgba(44,26,14,.88) 100%),
    url('images/hero_stand.webp') center/cover no-repeat;
  color: var(--blanc);
  overflow: hidden;
}
.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 80% 60% at 50% 30%, var(--or-a14) 0%, transparent 60%),
    radial-gradient(ellipse 100% 80% at 50% 100%, rgba(0,0,0,.5) 0%, transparent 70%);
  z-index: 1;
  pointer-events: none;
}
.hero-overlay {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at center, transparent 35%, rgba(0,0,0,.45) 100%);
}
.hero-content {
  position: relative;
  z-index: 2;
  max-width: 760px;
  padding: 20px;
  animation: hero-fade-up .9s var(--ease-out) both;
}
@keyframes hero-fade-up {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
.hero-sub {
  font-size: .85rem;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--or);
  margin-bottom: 18px;
  display: inline-block;
  padding: 6px 18px;
  background: var(--or-a10);
  border: 1px solid var(--or-a30);
  border-radius: var(--r-full);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.hero h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(3.2rem, 9vw, 7rem);
  font-weight: 900;
  line-height: 1;
  margin-bottom: 26px;
  text-shadow: 0 6px 32px rgba(0,0,0,.5);
  background: linear-gradient(180deg, #fff 0%, #ffeccb 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.hero-desc {
  font-size: 1.18rem;
  font-weight: 300;
  line-height: 1.75;
  margin-bottom: 40px;
  color: rgba(255,255,255,.92);
  text-shadow: 0 2px 12px rgba(0,0,0,.4);
  max-width: 60ch;
  margin-left: auto;
  margin-right: auto;
}
.hero-ctas {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
}

.scroll-indicator {
  position: absolute;
  bottom: 36px;
  left: 50%;
  transform: translateX(-50%);
  color: var(--or);
  font-size: 1.6rem;
  animation: bounce 2s infinite;
  z-index: 2;
  opacity: .85;
}
@keyframes bounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50%      { transform: translateX(-50%) translateY(12px); }
}

/* Hero aurora mesh */
.hero-aurora {
  position: absolute;
  inset: -10%;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse 40% 35% at 18% 28%, rgba(244,168,39,.28) 0%, transparent 60%),
    radial-gradient(ellipse 35% 40% at 82% 22%, rgba(212,88,10,.32) 0%, transparent 60%),
    radial-gradient(ellipse 50% 40% at 50% 85%, rgba(168,68,10,.35) 0%, transparent 60%),
    radial-gradient(ellipse 30% 30% at 72% 62%, rgba(247,185,72,.18) 0%, transparent 60%);
  filter: blur(22px) saturate(1.15);
  mix-blend-mode: screen;
  opacity: .9;
  animation: aurora-shift 22s ease-in-out infinite alternate;
}
@keyframes aurora-shift {
  0%   { transform: translate3d(0, 0, 0) scale(1); }
  50%  { transform: translate3d(-2%, 2%, 0) scale(1.06); }
  100% { transform: translate3d(2%, -2%, 0) scale(1.03); }
}
.hero > .hero-content,
.hero > .scroll-indicator { position: relative; z-index: 2; }
.hero > .navbar { z-index: 100; }

/* --- Scroll progress --- */
.scroll-progress {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: transparent;
  z-index: 1001;
  pointer-events: none;
}
.scroll-progress > span {
  display: block;
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--or) 0%, var(--rouge) 50%, var(--or-cl) 100%);
  box-shadow: 0 1px 8px rgba(244,168,39,.55), 0 0 14px var(--rouge-a35);
  transition: width .1s linear;
  border-radius: 0 var(--r-full) var(--r-full) 0;
}

/* --- Banner défilante --- */
.banner {
  background: linear-gradient(90deg, var(--rouge) 0%, var(--rouge-cl) 50%, var(--rouge) 100%);
  color: var(--blanc);
  padding: 16px 0;
  overflow: hidden;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 2px 12px rgba(0,0,0,.1);
  position: relative;
}
.banner::before,
.banner::after {
  content: '';
  position: absolute;
  top: 0; bottom: 0;
  width: 60px;
  z-index: 2;
  pointer-events: none;
}
.banner::before { left: 0;  background: linear-gradient(90deg, var(--rouge), transparent); }
.banner::after  { right: 0; background: linear-gradient(-90deg, var(--rouge), transparent); }
.banner-items {
  display: flex;
  gap: 56px;
  animation: scroll-banner 28s linear infinite;
  white-space: nowrap;
  width: max-content;
}
.banner-items span {
  font-size: .85rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
@keyframes scroll-banner {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* --- Trust strip --- */
.trust-strip {
  background:
    radial-gradient(ellipse 60% 80% at 0% 50%, var(--or-a10) 0%, transparent 60%),
    radial-gradient(ellipse 60% 80% at 100% 50%, var(--rouge-a08) 0%, transparent 60%),
    var(--bg-soft);
  border-bottom: 1px solid var(--or-a14);
  position: relative;
}
.trust-strip::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, rgba(244,168,39,.4) 50%, transparent 100%);
}
.trust-strip-inner {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  padding: 28px 32px;
}
.trust-item {
  display: flex;
  gap: 14px;
  align-items: center;
  padding: 10px 6px;
  transition: transform .3s var(--ease-out);
}
.trust-item:hover { transform: translateY(-2px); }
.trust-icon {
  font-size: 1.8rem;
  width: 52px; height: 52px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--or-a18) 0%, var(--rouge-a08) 100%);
  border: 1px solid var(--or-a30);
  border-radius: var(--r-md);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.6), 0 2px 8px var(--rouge-a08);
  transition:
    transform .35s var(--ease-out),
    box-shadow .35s var(--ease-out);
}
.trust-item:hover .trust-icon {
  transform: rotate(-6deg) scale(1.05);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.6), 0 6px 18px var(--rouge-a18);
}
.trust-item strong {
  display: block;
  font-family: 'Playfair Display', serif;
  font-size: 1.05rem;
  color: var(--brun);
  letter-spacing: -.005em;
  margin-bottom: 2px;
}
.trust-item p {
  font-size: .82rem;
  color: var(--gris);
  line-height: 1.35;
  margin: 0;
}


/* ============================================================
   4. SECTIONS COMMUNES + PRODUITS
============================================================ */

.section-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2rem, 4vw, 2.9rem);
  font-weight: 700;
  margin-bottom: 14px;
  text-align: center;
  position: relative;
  letter-spacing: -.01em;
  background: linear-gradient(110deg, var(--rouge) 0%, var(--or) 50%, var(--rouge) 100%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: title-shine 6s linear infinite;
}
.section-title::after {
  content: '';
  display: block;
  width: 56px;
  height: 3px;
  background: linear-gradient(90deg, var(--or), var(--rouge));
  margin: 14px auto 0;
  border-radius: var(--r-full);
  box-shadow: 0 0 12px rgba(244,168,39,.25);
}
.section-title.left             { text-align: left; }
.section-title.left::after      { margin-left: 0; margin-right: 0; }
@keyframes title-shine {
  0%   { background-position: 0% center; }
  100% { background-position: 200% center; }
}

.section-sub {
  text-align: center;
  color: var(--gris);
  font-size: 1.06rem;
  margin-bottom: 56px;
  max-width: 65ch;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.65;
}

/* --- Recherche produits --- */
.search-produits-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: 40px;
  gap: 0;
}
.search-produits {
  position: relative;
  width: 100%;
  max-width: 560px;
}
.search-produits::before {
  content: '';
  position: absolute;
  left: 18px;
  top: 50%;
  transform: translateY(-50%);
  width: 20px;
  height: 20px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c8a96e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
  background-size: 20px 20px;
  background-repeat: no-repeat;
  background-position: center;
  pointer-events: none;
  z-index: 1;
}
#recherche-produits {
  width: 100%;
  padding: 15px 48px 15px 50px;
  border: 2px solid var(--or);
  border-radius: var(--r-full);
  background: var(--blanc);
  font-size: 1rem;
  font-family: 'Lato', sans-serif;
  color: var(--brun);
  outline: none;
  box-shadow: 0 2px 12px rgba(200,169,110,.10);
  transition: border-color .2s, box-shadow .2s;
  -webkit-appearance: none;
}
#recherche-produits:focus {
  border-color: var(--or);
  box-shadow: 0 0 0 5px rgba(200,169,110,.18), 0 2px 16px rgba(200,169,110,.14);
}
#recherche-produits::placeholder              { color: #c0b49a; }
#recherche-produits::-webkit-search-cancel-button { display: none; }

.search-clear {
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  width: 28px; height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f0ece4;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  color: #888;
  font-size: 13px;
  line-height: 1;
  transition: background .2s, color .2s;
}
.search-clear:hover { background: var(--or); color: var(--blanc); }

/* Chips filtres */
.search-filtres {
  display: flex;
  gap: 8px;
  margin-top: 16px;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding: 2px 4px;
  max-width: 560px;
  width: 100%;
}
.search-filtres::-webkit-scrollbar { display: none; }
.search-filtres:empty              { display: none; }

.filtre-chip {
  flex-shrink: 0;
  padding: 7px 15px;
  border-radius: var(--r-full);
  border: 1.5px solid rgba(200,169,110,.5);
  background: transparent;
  color: #9a7d4a;
  font-size: .82rem;
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  letter-spacing: .01em;
  cursor: pointer;
  white-space: nowrap;
  transition:
    background .18s,
    color .18s,
    border-color .18s,
    transform .1s;
}
.filtre-chip:hover {
  border-color: var(--or);
  background: rgba(200,169,110,.1);
  color: #7a5f2a;
}
.filtre-chip.actif {
  background: var(--or);
  border-color: var(--or);
  color: var(--blanc);
}
.filtre-chip:active { transform: scale(.95); }

.search-compteur {
  font-size: .82rem;
  color: #b0a080;
  margin: 10px 0 0;
  min-height: 1.2em;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.search-compteur:empty { display: none; }

.search-no-result {
  text-align: center;
  padding: 56px 20px;
}
.search-no-result p {
  color: var(--gris);
  font-size: 1rem;
  margin-bottom: 20px;
}
.search-reset-btn {
  display: inline-block;
  padding: 10px 24px;
  border-radius: 30px;
  border: 1.5px solid var(--or);
  background: transparent;
  color: var(--or);
  font-size: .9rem;
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  cursor: pointer;
  transition: background .2s, color .2s;
}
.search-reset-btn:hover { background: var(--or); color: var(--blanc); }

/* --- Section produits --- */
.produits {
  padding: 96px 0;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  background:
    radial-gradient(ellipse 80% 60% at 20% 0%, var(--or-a06) 0%, transparent 50%),
    radial-gradient(ellipse 80% 60% at 100% 100%, rgba(212,88,10,.04) 0%, transparent 50%),
    var(--creme);
}
.produits > .container { position: relative; z-index: 2; }

.produits-categorie {
  font-family: 'Playfair Display', serif;
  font-size: 1.65rem;
  color: var(--rouge);
  margin: 64px 0 28px;
  padding-bottom: 14px;
  border-bottom: 2px solid var(--or);
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.produits-categorie::before {
  content: '';
  position: absolute;
  left: 0; bottom: -2px;
  width: 120px;
  height: 3px;
  background: linear-gradient(90deg, var(--rouge) 0%, var(--or) 100%);
  border-radius: var(--r-full);
}

.produits-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
}
.produits-grid--3 {
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}

/* --- Carte produit --- */
.produit-card {
  background: var(--blanc);
  border-radius: var(--r-md);
  overflow: hidden;
  padding: 0;
  box-shadow: var(--sh-sm);
  display: flex;
  flex-direction: column;
  border: 1px solid var(--brun-a04);
  position: relative;
  isolation: isolate;
  will-change: transform;
  transition:
    transform .35s var(--ease-out),
    box-shadow .35s var(--ease-out),
    border-color .3s var(--ease-out);
}
.produit-card::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--r-md);
  background: linear-gradient(135deg, rgba(244,168,39,0) 0%, var(--or-a06) 100%);
  opacity: 0;
  pointer-events: none;
  z-index: 0;
  transition: opacity .4s var(--ease-out);
}
.produit-card > * { position: relative; z-index: 1; }
.produit-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--sh-lg);
  border-color: var(--or-a30);
}
.produit-card:hover::before { opacity: 1; }

/* Hover desktop sobre (pas de shimmer diagonal) */
@media (hover: hover) and (pointer: fine) {
  .produit-card:hover {
    box-shadow: 0 30px 60px rgba(44,26,14,.22), 0 10px 20px var(--rouge-a12);
    border-color: rgba(244,168,39,.4);
  }
  .produit-card:hover .produit-img {
    filter: saturate(1.12) brightness(1.03);
  }
}

.produit-card-body {
  padding: 22px 22px 24px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.produit-card h4 {
  font-family: 'Playfair Display', serif;
  font-size: 1.15rem;
  margin-bottom: 8px;
  color: var(--brun);
  line-height: 1.3;
  letter-spacing: -.01em;
}
.produit-card p {
  color: var(--gris);
  line-height: 1.6;
  font-size: .9rem;
  flex: 1;
}

.produit-label {
  display: inline-block;
  margin-top: 14px;
  padding: 4px 11px;
  border: 1.5px solid var(--or);
  border-left: 3px solid var(--verde-maquis);
  color: var(--or-dk);
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  border-radius: var(--r-xs);
  align-self: flex-start;
  background: linear-gradient(90deg, rgba(74,127,62,.08) 0%, var(--or-a06) 20%);
}
.produit-label--lait-cru {
  background: linear-gradient(90deg, rgba(212,88,10,.10) 0%, rgba(212,88,10,.04) 100%);
  border-color: var(--rouge);
  border-left-color: var(--rouge);
  color: var(--rouge);
}
.produit-label--lait-past {
  background: linear-gradient(90deg, rgba(52,152,219,.10) 0%, rgba(52,152,219,.04) 100%);
  border-color: #2980b9;
  border-left-color: #2980b9;
  color: #1f618d;
}
.produit-label--lait-mixte {
  background: linear-gradient(90deg, rgba(155,89,182,.10) 0%, rgba(155,89,182,.04) 100%);
  border-color: #9b59b6;
  border-left-color: #9b59b6;
  color: #7d3c98;
}

/* ─── Wishlist (cœur en haut à droite carte produit) ─── */
.produit-card { position: relative; }
.btn-wishlist {
  position: absolute; top: 10px; right: 10px;
  width: 40px; height: 40px; border-radius: 50%;
  background: rgba(255,255,255,.92); border: none;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; z-index: 5;
  color: #aaa;
  box-shadow: 0 2px 8px rgba(0,0,0,.12);
  transition: color .2s, transform .15s, box-shadow .2s;
}
.btn-wishlist:hover { transform: scale(1.12); box-shadow: 0 4px 14px rgba(0,0,0,.18); }
.btn-wishlist.active { color: var(--rouge); }
.btn-wishlist.active svg { fill: var(--rouge); stroke: var(--rouge); }
.btn-wishlist:active { transform: scale(0.9); }

/* ─── Reviews étoiles ─── */
.produit-reviews {
  display: inline-flex; gap: 5px; align-items: center;
  font-size: .82rem; margin: 2px 0 6px;
  min-height: 18px;
}
.reviews-stars {
  color: #F4A827; letter-spacing: 1px; font-size: .95rem;
}
.reviews-count {
  color: var(--gris); font-size: .76rem;
}
.produit-label--rupture {
  background: linear-gradient(90deg, rgba(231,76,60,.18) 0%, rgba(231,76,60,.06) 100%);
  border-color: #e74c3c;
  border-left-color: #c0392b;
  color: #c0392b;
}
.produit-label--stock-bas {
  background: linear-gradient(90deg, rgba(243,156,18,.14) 0%, rgba(243,156,18,.04) 100%);
  border-color: #f39c12;
  border-left-color: #e67e22;
  color: #9a6100;
}
.produit-nouveaute {
  display: inline-block;
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--rouge);
  margin-bottom: 4px;
  padding: 3px 10px;
  background: var(--rouge-a08);
  border-radius: var(--r-full);
}
.produit-icon {
  font-size: 2.4rem;
  padding: 28px 20px 0;
  filter: drop-shadow(0 2px 6px rgba(212,88,10,.15));
}
.produit-prix {
  display: inline-block;
  background: linear-gradient(135deg, var(--rouge) 0%, var(--rouge-cl) 100%);
  color: var(--blanc);
  font-size: .82rem;
  font-weight: 700;
  padding: 4px 13px;
  border-radius: var(--r-full);
  margin-top: 8px;
  letter-spacing: .03em;
  box-shadow: 0 2px 8px var(--rouge-a25);
}
.produit-badge {
  display: inline-block;
  margin-top: 6px;
  padding: 2px 8px;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .04em;
  color: var(--rouge-dk);
  background: var(--or-a14);
  border-radius: var(--r-full);
}

/* État sans image : placeholder icône */
.produit-no-img {
  width: 100%;
  height: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--gris-cl);
  background: linear-gradient(135deg, var(--creme) 0%, var(--creme-dk) 100%);
}
.produit-no-img .icon {
  width: 48px; height: 48px;
  opacity: .55;
}

/* --- Images produits --- */
.produit-img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  object-position: center;
  display: block;
  will-change: transform;
  transition:
    transform .6s var(--ease-out),
    filter .4s var(--ease-out);
}
.produit-card:hover .produit-img {
  transform: scale(1.06);
  filter: saturate(1.08);
}

.produit-img--fromage {
  height: 240px;
  object-fit: contain;
  background: linear-gradient(135deg, var(--creme) 0%, var(--creme-dk) 100%);
  padding: 14px;
}
.produit-img--pot {
  height: 220px;
  object-fit: contain;
  background: linear-gradient(135deg, var(--creme) 0%, var(--creme-dk) 100%);
  padding: 16px;
}
.produit-img--bouteille {
  height: 300px;
  object-fit: contain;
  background: linear-gradient(135deg, var(--creme) 0%, var(--creme-dk) 100%);
  padding: 20px 32px;
}

/* Variantes */
.produit-variantes {
  margin-top: 12px;
  width: 100%;
}
.produit-variantes .variante-select {
  width: 100%;
  padding: 8px 12px;
  border-radius: 6px;
  border: 1.5px solid var(--gris-xcl);
  font-size: 13px;
  background: var(--bg-soft);
  color: var(--brun);
  font-family: inherit;
  cursor: pointer;
  transition: border-color .15s;
}
.produit-variantes .variante-select:focus {
  outline: none;
  border-color: var(--rouge);
}
.produit-variantes .variante-desc {
  font-size: 12px;
  color: #666;
  margin-top: 6px;
  min-height: 18px;
  line-height: 1.4;
  font-style: italic;
}

/* Carte highlightée */
.produit-card--highlight {
  border: 2px solid var(--or);
  box-shadow: 0 8px 32px rgba(212,88,10,.22), var(--sh-md);
  position: relative;
  animation: highlight-breathe 4.5s ease-in-out infinite;
}
.produit-card--highlight::after {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: var(--r-md);
  padding: 2px;
  background: linear-gradient(135deg, var(--or), var(--rouge), var(--or));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
  opacity: .6;
}
@keyframes highlight-breathe {
  0%, 100% { box-shadow: 0 8px 32px rgba(212,88,10,.22), var(--sh-md); }
  50%      { box-shadow: 0 10px 38px rgba(212,88,10,.32), 0 4px 16px rgba(244,168,39,.2); }
}

/* Prix au kilo (badge dans titre catégorie) */
.prix-kilo {
  font-family: 'Lato', sans-serif;
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--brun);
  background: linear-gradient(135deg, var(--or) 0%, var(--or-cl) 100%);
  padding: 5px 13px;
  border-radius: var(--r-full);
  vertical-align: middle;
  margin-left: 10px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  box-shadow: 0 2px 8px var(--or-a30);
}


/* ============================================================
   5. COMMANDER / HISTOIRE / MARCHÉ / CONTACT / FOOTER
============================================================ */

/* --- Commander --- */
.commander {
  padding: 88px 0;
  background:
    radial-gradient(ellipse 60% 50% at 50% 0%, var(--or-a10) 0%, transparent 60%),
    var(--brun);
  color: var(--blanc);
  position: relative;
}
.commander .section-title,
.histoire .section-title {
  background: linear-gradient(110deg, var(--or-cl) 0%, var(--or) 50%, var(--or-cl) 100%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.commander .section-title::after,
.histoire .section-title::after {
  background: linear-gradient(90deg, var(--or), var(--or-cl));
}
.commander .section-sub { color: rgba(255,255,255,.78); margin-bottom: 36px; }

.livraison-info {
  background: linear-gradient(135deg, var(--or-a14) 0%, var(--or-a06) 100%);
  border: 1px solid rgba(244,168,39,.4);
  border-radius: var(--r-md);
  padding: 22px 30px;
  text-align: center;
  margin-bottom: 44px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: 0 4px 24px rgba(0,0,0,.15);
}
.livraison-badge {
  font-family: 'Playfair Display', serif;
  font-size: 1.2rem;
  color: var(--or);
  font-weight: 700;
  margin-bottom: 10px;
  letter-spacing: -.01em;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.livraison-detail {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px;
  color: rgba(255,255,255,.85);
  font-size: .94rem;
}
.livraison-sep           { opacity: .4; }
.livraison-detail strong { color: var(--or); }

.commander-steps {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  flex-wrap: wrap;
}
.step {
  display: flex;
  align-items: flex-start;
  gap: 18px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(244,168,39,.28);
  border-radius: var(--r-md);
  padding: 28px 26px;
  max-width: 260px;
  flex: 1;
  min-width: 200px;
  position: relative;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  transition:
    transform .35s var(--ease-out),
    border-color .35s var(--ease-out),
    background .35s var(--ease-out);
}
.step:hover {
  transform: translateY(-4px);
  border-color: var(--or);
  background: rgba(255,255,255,.09);
}
.step-num {
  width: 46px;
  height: 46px;
  border-radius: var(--r-full);
  background: linear-gradient(135deg, var(--rouge) 0%, var(--rouge-cl) 100%);
  color: var(--blanc);
  font-family: 'Playfair Display', serif;
  font-weight: 900;
  font-size: 1.35rem;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 4px 16px var(--rouge-a35);
}
.step-text {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.step-text strong {
  color: var(--or);
  font-size: .98rem;
  letter-spacing: .02em;
}
.step-text span {
  color: rgba(255,255,255,.75);
  font-size: .88rem;
  line-height: 1.55;
}
.step-arrow {
  font-size: 1.7rem;
  color: var(--or);
  opacity: .55;
  animation: arrow-slide 2.2s ease-in-out infinite;
}
@keyframes arrow-slide {
  0%, 100% { transform: translateX(0);  opacity: .55; }
  50%      { transform: translateX(4px); opacity: .8; }
}
@media (min-width: 769px) {
  .step::before {
    content: '';
    position: absolute;
    left: -14px; top: 50%;
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--or);
    opacity: 0;
    transform: translateY(-50%);
  }
  .step:not(:first-child)::before { opacity: .35; }
}

/* --- Histoire --- */
.histoire {
  padding: 96px 0;
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(ellipse 60% 80% at 0% 50%, rgba(244,168,39,.07) 0%, transparent 50%),
    radial-gradient(ellipse 60% 80% at 100% 50%, var(--rouge-a06) 0%, transparent 50%),
    var(--brun);
  color: var(--blanc);
}

/* ─── Section SEO content "Charcuterie Corse" ─── */
.seo-content {
  padding: 80px 0;
  background:
    radial-gradient(ellipse 60% 50% at 50% 0%, var(--or-a10) 0%, transparent 50%),
    var(--creme);
}
.seo-content--alt {
  background:
    radial-gradient(ellipse 60% 50% at 50% 100%, var(--rouge-a08) 0%, transparent 50%),
    linear-gradient(180deg, var(--creme-dk) 0%, var(--creme) 100%);
}
.seo-grid--3 {
  grid-template-columns: repeat(3, 1fr) !important;
}
@media (max-width: 1024px) {
  .seo-grid--3 { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 768px) {
  .seo-grid--3 { grid-template-columns: 1fr !important; }
}
.seo-content .section-title {
  text-align: center;
  margin-bottom: 14px;
}
.seo-content .section-title strong {
  background: linear-gradient(135deg, var(--rouge) 0%, var(--or) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-style: italic;
}
.seo-content .section-sub {
  text-align: center;
  color: var(--gris);
  font-size: 1rem;
  max-width: 800px;
  margin: 0 auto 50px;
  line-height: 1.6;
}
.seo-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 28px;
  max-width: 1100px;
  margin: 0 auto;
}
.seo-bloc {
  background: var(--blanc);
  border-radius: var(--r-md);
  padding: 28px 30px;
  border-left: 3px solid var(--or);
  box-shadow: var(--sh-sm);
  transition: box-shadow .25s var(--ease-out), transform .25s var(--ease-out);
}
.seo-bloc:hover {
  box-shadow: var(--sh-md);
  transform: translateY(-2px);
}
.seo-bloc h3 {
  font-family: 'Playfair Display', serif;
  font-size: 1.18rem;
  font-weight: 700;
  color: var(--rouge);
  margin-bottom: 14px;
  line-height: 1.3;
  letter-spacing: -.005em;
}
.seo-bloc p {
  color: var(--brun);
  font-size: .94rem;
  line-height: 1.7;
  margin-bottom: 12px;
}
.seo-bloc p:last-child { margin-bottom: 0; }
.seo-bloc strong {
  color: var(--brun);
  font-weight: 700;
}
.seo-bloc em {
  color: var(--rouge);
  font-style: italic;
  font-weight: 600;
}
.seo-bloc ul {
  list-style: none;
  margin: 12px 0;
  padding: 0;
}
.seo-bloc li {
  padding: 6px 0 6px 22px;
  position: relative;
  color: var(--brun);
  font-size: .92rem;
  line-height: 1.65;
  border-bottom: 1px dashed var(--creme-dk);
}
.seo-bloc li:last-child { border-bottom: none; }
.seo-bloc li::before {
  content: '';
  position: absolute;
  left: 0; top: 14px;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--rouge) 0%, var(--or) 100%);
}
.seo-bloc--cta {
  grid-column: 1 / -1;
  background: linear-gradient(135deg, var(--brun) 0%, var(--brun-cl) 100%);
  border-left-color: var(--or);
  text-align: center;
  padding: 36px 32px;
}
.seo-bloc--cta h3 { color: var(--or); font-size: 1.4rem; }
.seo-bloc--cta p { color: rgba(255,255,255,.92); font-size: 1rem; }
.seo-bloc--cta strong { color: var(--or); }
.seo-bloc--cta a {
  color: var(--or);
  text-decoration: none;
  border-bottom: 2px solid var(--or);
  transition: opacity .2s;
}
.seo-bloc--cta a:hover { opacity: .8; }

@media (max-width: 768px) {
  .seo-content { padding: 60px 0; }
  .seo-grid { grid-template-columns: 1fr; gap: 18px; }
  .seo-bloc { padding: 22px 22px; }
  .seo-bloc h3 { font-size: 1.05rem; }
  .seo-bloc p, .seo-bloc li { font-size: .9rem; }
}

/* Dark mode pour la section SEO */
[data-theme="dark"] .seo-content {
  background:
    radial-gradient(ellipse 60% 50% at 50% 0%, rgba(244,168,39,.10) 0%, transparent 50%),
    var(--creme) !important;
}
[data-theme="dark"] .seo-bloc {
  background: var(--blanc) !important;
  border-left-color: var(--or) !important;
}
[data-theme="dark"] .seo-bloc h3 {
  color: var(--rouge-cl) !important;
}
[data-theme="dark"] .seo-bloc p,
[data-theme="dark"] .seo-bloc li {
  color: var(--brun) !important;
}
[data-theme="dark"] .seo-bloc--cta {
  background: linear-gradient(135deg, #2C1A0E 0%, #3F2817 100%) !important;
}
[data-theme="dark"] .seo-bloc--cta h3 { color: var(--or) !important; }
[data-theme="dark"] .seo-bloc--cta p { color: rgba(255,255,255,.92) !important; }
[data-theme="dark"] .seo-bloc--cta a { color: var(--or) !important; border-bottom-color: var(--or) !important; }
.histoire > .container      { position: relative; z-index: 1; }
.histoire-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 72px;
  align-items: start;
}
.histoire-text p {
  margin-top: 18px;
  line-height: 1.85;
  color: rgba(255,255,255,.82);
  font-size: .98rem;
  max-width: 65ch;
}
.histoire-text em     { color: var(--or);    font-style: italic; font-weight: 600; }
.histoire-text strong { color: var(--or-cl); font-weight: 700; }
.histoire-horaires {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 26px;
  padding: 18px 22px;
  background: linear-gradient(135deg, var(--or-a10), var(--rouge-a08));
  border: 1px solid var(--or-a22);
  border-radius: var(--r-md);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.horaire-ligne {
  display: flex;
  align-items: center;
  gap: 12px;
  color: rgba(255,255,255,.9);
  font-size: .95rem;
  letter-spacing: .01em;
}
.horaire-ligne strong { color: var(--or); margin-right: 4px; }
.histoire-quote {
  margin-top: 26px;
  padding: 18px 22px;
  border-left: 3px solid var(--or);
  background: rgba(244,168,39,.05);
  border-radius: 0 var(--r-md) var(--r-md) 0;
  font-size: 1.02rem;
}
.histoire-quote em {
  color: var(--or-cl);
  font-size: 1.05rem;
}
.histoire-visuel {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.enseigne-img {
  width: 100%;
  height: auto;
  object-fit: contain;
  border-radius: var(--r-md);
  box-shadow: 0 16px 48px rgba(0,0,0,.5);
  background: rgba(0,0,0,.15);
  transition: transform .5s var(--ease-out);
}
.enseigne-img:hover { transform: scale(1.02); }

.histoire-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-top: 4px;
}
.visuel-bloc {
  border-left: 3px solid var(--or);
  padding-left: 18px;
  transition: transform .3s var(--ease-out);
}
.visuel-bloc:hover { transform: translateX(4px); }
.visuel-chiffre {
  display: inline-block;
  position: relative;
  font-family: 'Playfair Display', serif;
  font-size: 2.4rem;
  font-weight: 900;
  color: var(--or);
  line-height: 1.2;
  padding: 4px 0 6px;
  background: linear-gradient(180deg, var(--or-cl), var(--or));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.visuel-label {
  color: rgba(255,255,255,.72);
  font-size: .78rem;
  margin-top: 6px;
  letter-spacing: .04em;
}

/* Montagnes corses parallaxe derrière histoire */
.mountains {
  position: absolute;
  left: 0; right: 0;
  bottom: 0;
  height: 300px;
  pointer-events: none;
  z-index: 0;
}
.mountains svg {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  width: 100%; height: 100%;
  will-change: transform;
}
.mountains-back  { animation: mountain-drift 40s linear infinite;         opacity: .7; }
.mountains-mid   { animation: mountain-drift 55s linear infinite reverse; opacity: .8; }
.mountains-front { animation: mountain-drift 70s linear infinite; }
@keyframes mountain-drift {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-30px); }
}

/* --- Marché --- */
.marche {
  padding: 96px 0;
  background: var(--creme);
}
.marche-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: start;
}
.info-bloc {
  display: flex;
  gap: 18px;
  align-items: flex-start;
  margin-bottom: 30px;
  padding: 18px 20px;
  background: var(--blanc);
  border-radius: var(--r-md);
  box-shadow: var(--sh-sm);
  transition:
    transform .3s var(--ease-out),
    box-shadow .3s var(--ease-out);
}
.info-bloc:hover { transform: translateY(-2px); box-shadow: var(--sh-md); }
.info-icon {
  font-size: 1.5rem;
  flex-shrink: 0;
  width: 44px; height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, rgba(244,168,39,.2) 0%, var(--rouge-a08) 100%);
  border-radius: var(--r-sm);
}
.info-bloc strong {
  display: block;
  font-size: .8rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--rouge);
  margin-bottom: 6px;
}
.info-bloc p,
.info-bloc a {
  color: var(--gris);
  line-height: 1.6;
  transition: color .2s;
}
.info-bloc a:hover { color: var(--rouge); }

/* Bloc entièrement cliquable (ex: adresse → ouvre Maps) */
.info-bloc--link,
.coord-bloc--link {
  cursor: pointer;
  text-decoration: none;
  color: inherit;
  position: relative;
  transition:
    transform .3s var(--ease-out),
    box-shadow .3s var(--ease-out),
    border-color .3s var(--ease-out);
  border: 1.5px solid transparent;
}
.info-bloc--link:hover,
.coord-bloc--link:hover {
  transform: translateY(-3px);
  box-shadow: var(--sh-lg);
  border-color: var(--or-a30);
}
.info-bloc--link::after,
.coord-bloc--link::after {
  content: '';
  position: absolute;
  top: 14px; right: 14px;
  width: 14px; height: 14px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23D4580A' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M7 17 17 7'/><path d='M7 7h10v10'/></svg>");
  background-repeat: no-repeat;
  background-size: contain;
  opacity: .45;
  transition: opacity .2s var(--ease-out), transform .2s var(--ease-out);
}
.info-bloc--link:hover::after,
.coord-bloc--link:hover::after {
  opacity: 1;
  transform: translate(2px, -2px);
}
/* Icône ↗ pertinente uniquement pour Maps — cachée sur call/mail */
.info-bloc--link--call::after,
.info-bloc--link--mail::after,
.coord-bloc--link--call::after,
.coord-bloc--link--mail::after {
  display: none;
}
.info-bloc--link:focus-visible,
.coord-bloc--link:focus-visible {
  outline: 3px solid var(--or-cl);
  outline-offset: 3px;
}

.marche-map { height: 100%; min-height: 320px; }

/* --- Citation --- */
.citation {
  background: linear-gradient(135deg, var(--rouge-dk) 0%, var(--rouge) 50%, var(--rouge-cl) 100%);
  padding: 72px 0;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.citation::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 40% 60% at 20% 30%, rgba(244,168,39,.15) 0%, transparent 60%),
    radial-gradient(ellipse 40% 60% at 80% 70%, var(--or-a10) 0%, transparent 60%);
  pointer-events: none;
}
.citation blockquote {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.25rem, 3vw, 1.9rem);
  font-style: italic;
  color: var(--blanc);
  max-width: 760px;
  margin: 0 auto;
  line-height: 1.6;
  position: relative;
  padding: 0 24px;
  text-shadow: 0 2px 16px rgba(0,0,0,.2);
}
.citation blockquote::before {
  content: '\201C';
  font-size: 3.4rem;
  color: var(--or);
  line-height: 0;
  vertical-align: -0.5em;
  margin-right: 6px;
  opacity: .85;
}
.citation-deco {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: min(720px, 70%);
  height: 14px;
  pointer-events: none;
  background-image: radial-gradient(circle, rgba(244,168,39,.55) 0%, rgba(244,168,39,.55) 30%, transparent 32%);
  background-size: 18px 14px;
  background-repeat: repeat-x;
  opacity: .55;
}
.citation-deco--top    { top: 28px; }
.citation-deco--bottom { bottom: 28px; }
.citation-author {
  margin-top: 22px;
  text-align: center;
  font-family: 'Lato', sans-serif;
  font-size: .82rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--or);
  opacity: .82;
}

/* --- Contact --- */
.contact {
  padding: 96px 0;
  background: var(--creme);
}
.contact-coords {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
  max-width: 760px;
  margin: 0 auto;
}
@media (max-width: 560px) {
  .contact-coords { grid-template-columns: 1fr; }
}
.coord-bloc {
  display: flex;
  gap: 18px;
  align-items: flex-start;
  background: var(--blanc);
  padding: 26px 22px;
  border-radius: var(--r-md);
  box-shadow: var(--sh-md);
  border: 1px solid var(--brun-a04);
  transition:
    transform .3s var(--ease-out),
    box-shadow .3s var(--ease-out);
}
.coord-bloc:hover { transform: translateY(-3px); box-shadow: var(--sh-lg); }
.coord-icon {
  font-size: 1.8rem;
  flex-shrink: 0;
  width: 48px; height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--or-a18) 0%, var(--rouge-a08) 100%);
  border-radius: var(--r-sm);
}
.coord-bloc div { display: flex; flex-direction: column; gap: 6px; }
.coord-bloc strong {
  font-size: .78rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--rouge);
}
.coord-bloc a,
.coord-bloc span {
  color: var(--brun);
  font-size: .95rem;
  transition: color .2s;
}
.coord-bloc a:hover { color: var(--rouge); }

/* --- Footer --- */
.footer {
  background:
    radial-gradient(ellipse 70% 50% at 0% 0%, var(--or-a06) 0%, transparent 60%),
    var(--brun);
  color: rgba(255,255,255,.72);
  position: relative;
}
.footer::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, rgba(244,168,39,.5) 20%, rgba(212,88,10,.6) 50%, rgba(244,168,39,.5) 80%, transparent 100%);
  opacity: .8;
}
.footer-inner {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 80px;
  padding: 110px 96px 56px;
  align-items: start;
  max-width: 1200px;
  margin: 0 auto;
}
@media (max-width: 768px) {
  .footer-inner { padding: 110px 32px 48px; }
}
.footer-brand .logo { margin-bottom: 14px; }
.footer-brand p     { font-size: .92rem; line-height: 1.7; }
.footer-google-review {
  display: inline-flex;
  align-items: center;
  background: linear-gradient(135deg, var(--rouge) 0%, var(--rouge-cl) 100%);
  color: #FFFFFF;
  text-decoration: none;
  padding: 10px 16px;
  border-radius: var(--r-sm);
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .04em;
  margin-top: 14px;
  transition: transform .2s, box-shadow .25s;
  box-shadow: 0 4px 14px rgba(160,32,32,.25);
}
.footer-google-review:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 22px rgba(160,32,32,.4);
  color: #FFFFFF;
}
.footer-links {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.footer-links a {
  font-size: .92rem;
  position: relative;
  padding-left: 0;
  display: inline-flex;
  align-items: center;
  transition:
    color .2s var(--ease-out),
    transform .2s var(--ease-out);
}
.footer-links a::before {
  content: '\2192';
  color: var(--or);
  opacity: 0;
  margin-right: 0;
  transition: opacity .2s var(--ease-out), margin-right .2s var(--ease-out);
}
.footer-links a:hover { color: var(--or); transform: translateX(4px); }
.footer-links a:hover::before { opacity: 1; margin-right: 8px; }

.footer-logo-row {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 14px;
}
.footer-brand .footer-logo-row .logo { margin-bottom: 0; }

.footer-social p {
  font-size: .82rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 14px;
  color: var(--or);
}
.social-icons { display: flex; gap: 14px; }
.social-icons a {
  width: 42px; height: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1.5px solid rgba(255,255,255,.2);
  border-radius: var(--r-full);
  font-weight: 700;
  transition:
    border-color .25s var(--ease-out),
    color .25s var(--ease-out),
    background .25s var(--ease-out),
    transform .25s var(--ease-out);
}
.social-icons a:hover {
  border-color: var(--or);
  color: var(--brun);
  background: var(--or);
  transform: translateY(-3px);
}
.footer-bottom {
  border-top: 1px solid rgba(255,255,255,.08);
  text-align: center;
  padding: 20px 96px 24px;
  font-size: .84rem;
  line-height: 1.7;
  position: relative;
  max-width: 1200px;
  margin: 0 auto;
}
.footer-credit {
  text-align: right;
  font-size: 11px;
  opacity: .65;
  margin-top: 10px;
  font-style: italic;
  letter-spacing: .02em;
}
.footer-credit strong {
  color: #F4A827;
  font-weight: 600;
}
@media (max-width: 720px) {
  .footer-credit { text-align: center; }
}


/* ============================================================
   6. PANIER (flottant + panneau + formulaire)
============================================================ */

/* Bouton flottant */
.panier-float {
  position: fixed;
  bottom: 28px;
  right: 28px;
  z-index: 900;
  display: flex;
  align-items: center;
  gap: 10px;
  background: linear-gradient(135deg, var(--rouge) 0%, var(--rouge-cl) 100%);
  color: var(--blanc);
  border: none;
  border-radius: var(--r-full);
  padding: 14px 24px;
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  font-size: .95rem;
  cursor: pointer;
  box-shadow: 0 8px 32px var(--rouge-a45), 0 2px 8px rgba(212,88,10,.2);
  animation: pop-in .45s var(--ease-bounce);
  transition:
    transform .25s var(--ease-out),
    box-shadow .25s var(--ease-out),
    filter .2s;
}
.panier-float::before {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: var(--r-full);
  background: linear-gradient(135deg, var(--rouge), var(--or));
  opacity: 0;
  z-index: -1;
  filter: blur(12px);
  transition: opacity .3s;
}
.panier-float:hover {
  transform: translateY(-3px) scale(1.03);
  box-shadow: 0 14px 40px rgba(212,88,10,.55), 0 4px 16px rgba(212,88,10,.3);
  filter: brightness(1.05);
}
.panier-float:hover::before { opacity: .6; }
.panier-float:active       { transform: translateY(-1px) scale(1); }
.panier-float-icon         { font-size: 1.2rem; }

.panier-float[data-has-items="1"] {
  animation: pop-in .45s var(--ease-bounce), float-breathe 3.6s ease-in-out infinite 1s;
}
@keyframes float-breathe {
  0%, 100% { box-shadow: 0 8px 32px var(--rouge-a45), 0 2px 8px rgba(212,88,10,.2); }
  50%      { box-shadow: 0 14px 44px rgba(212,88,10,.55), 0 0 0 8px rgba(244,168,39,.14); }
}
@keyframes pop-in {
  from { transform: scale(.5) translateY(20px); opacity: 0; }
  to   { transform: scale(1)   translateY(0);   opacity: 1; }
}

.panier-badge {
  background: var(--or);
  color: var(--brun);
  border-radius: var(--r-full);
  min-width: 24px;
  height: 24px;
  padding: 0 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .78rem;
  font-weight: 900;
  box-shadow: 0 2px 6px rgba(0,0,0,.18);
  animation: badge-pulse 2.4s ease-in-out infinite;
}
@keyframes badge-pulse {
  0%, 100% { box-shadow: 0 2px 6px rgba(0,0,0,.18); }
  50%      { box-shadow: 0 2px 6px rgba(0,0,0,.18), 0 0 0 6px rgba(244,168,39,.15); }
}

/* Overlay + panneau */
.panier-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.55);
  z-index: 950;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  animation: overlay-fade .3s var(--ease-out);
}
.panier-overlay.open { display: block; }
@keyframes overlay-fade {
  from { opacity: 0; backdrop-filter: blur(0); }
  to   { opacity: 1; backdrop-filter: blur(4px); }
}

.panier-panel {
  position: fixed;
  top: 0;
  right: 0;
  width: 440px;
  max-width: 100vw;
  height: 100dvh;
  background: var(--blanc);
  z-index: 1000;
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  box-shadow: -12px 0 56px rgba(0,0,0,.22);
  transition: transform .4s var(--ease-soft);
}
.panier-panel.open { transform: translateX(0); }

.panier-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 22px 26px;
  background: linear-gradient(135deg, var(--brun) 0%, var(--brun-cl) 100%);
  color: var(--blanc);
  flex-shrink: 0;
  border-bottom: 2px solid var(--or);
  position: relative;
}
.panier-panel-header::after {
  content: '';
  position: absolute;
  bottom: -2px; left: 0;
  width: 80px;
  height: 2px;
  background: var(--rouge);
}
.panier-panel-header h2 {
  font-family: 'Playfair Display', serif;
  font-size: 1.4rem;
  color: var(--or);
  letter-spacing: -.01em;
}
.panier-close {
  background: rgba(255,255,255,.08);
  border: none;
  color: rgba(255,255,255,.7);
  font-size: 1rem;
  cursor: pointer;
  width: 36px; height: 36px;
  border-radius: var(--r-full);
  display: flex;
  align-items: center;
  justify-content: center;
  transition:
    color .2s,
    background .2s,
    transform .2s;
}
.panier-close:hover {
  color: var(--blanc);
  background: rgba(255,255,255,.15);
  transform: rotate(90deg);
}

.panier-panel-body {
  flex: 1;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 26px;
  display: flex;
  flex-direction: column;
  gap: 26px;
  background: var(--bg-soft);
}

.panier-vide {
  color: var(--gris);
  text-align: center;
  padding: 40px 20px;
  line-height: 1.7;
  font-size: .95rem;
  background: var(--blanc);
  border-radius: var(--r-md);
  border: 2px dashed var(--gris-xcl);
}

.panier-item {
  display: flex;
  flex-direction: column;
  padding: 14px 14px;
  margin: 0 -14px;
  border-radius: var(--r-sm);
  border-bottom: 1px solid #ece8e0;
  transition: background .2s var(--ease-out);
}
.panier-item:hover { background: rgba(244,168,39,.05); }
.panier-item-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.panier-item-nom {
  flex: 1;
  font-size: .92rem;
  color: var(--brun);
  line-height: 1.4;
  font-weight: 600;
}
.panier-item-qty {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.panier-qte-article {
  font-weight: 700;
  color: var(--brun);
  font-size: .92rem;
}
.panier-qte-input {
  width: 52px;
  padding: 4px 6px;
  text-align: center;
  border: 1px solid var(--or);
  border-radius: 6px;
  background: #fff;
  -moz-appearance: textfield;
}
.panier-qte-input::-webkit-outer-spin-button,
.panier-qte-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* Sous vide */
.sv-row { margin-top: 6px; padding-left: 2px; }
.sv-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .82rem;
  color: #2980b9;
  cursor: pointer;
  user-select: none;
}
.sv-label input[type="checkbox"],
.sv-checkbox {
  accent-color: #2980b9;
  width: 14px;
  height: 14px;
  cursor: pointer;
}
.sv-label input[type="checkbox"]:disabled,
.sv-checkbox:disabled {
  cursor: not-allowed;
  opacity: .7;
}
.sv-label .field-hint { color: #888; font-style: italic; }

.panier-poids {
  width: 82px;
  border: 1.5px solid var(--gris-xcl);
  border-radius: var(--r-sm);
  padding: 7px 10px;
  font-family: 'Lato', sans-serif;
  font-size: .88rem;
  color: var(--brun);
  text-align: center;
  font-weight: 600;
  background: var(--blanc);
  transition: border-color .2s, box-shadow .2s, background .2s;
}
.panier-poids:focus {
  outline: none;
  border-color: var(--rouge);
  box-shadow: 0 0 0 3px var(--rouge-a12);
}
.panier-suppr {
  width: 30px; height: 30px;
  border-radius: var(--r-full);
  border: 1.5px solid var(--gris-xcl);
  background: var(--blanc);
  color: #999;
  font-size: .85rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition:
    border-color .2s var(--ease-out),
    color .2s var(--ease-out),
    background .2s var(--ease-out),
    transform .2s var(--ease-out);
}
.panier-suppr:hover {
  border-color: var(--rouge);
  color: var(--blanc);
  background: var(--rouge);
  transform: rotate(90deg);
}

.panier-total {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px 18px;
  background: linear-gradient(135deg, rgba(244,168,39,.12) 0%, rgba(212,88,10,.08) 100%);
  border: 1px solid var(--or-a30);
  border-radius: var(--r-md);
  margin-top: 10px;
  font-size: .92rem;
  color: var(--brun);
}
.panier-total-label { color: var(--gris); font-weight: 600; }
.panier-total strong {
  color: var(--rouge);
  font-size: 1.05rem;
  font-weight: 700;
}

.panier-separateur {
  border: none;
  border-top: 2px dashed var(--or);
  opacity: .4;
  margin: 4px 0;
}

.panier-form h3 {
  font-family: 'Playfair Display', serif;
  font-size: 1.15rem;
  color: var(--brun);
  margin-bottom: 16px;
}
.panier-field {
  display: flex;
  flex-direction: column;
  gap: 7px;
  margin-bottom: 16px;
}
.panier-field label {
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--rouge);
}
.panier-field input,
.panier-field select,
.panier-field textarea {
  border: 1.5px solid var(--gris-xcl);
  border-radius: var(--r-sm);
  padding: 11px 14px;
  font-family: 'Lato', sans-serif;
  font-size: .94rem;
  color: var(--brun);
  background: var(--blanc);
  resize: vertical;
  transition:
    border-color .2s var(--ease-out),
    box-shadow .2s var(--ease-out);
}
.panier-field input:hover,
.panier-field select:hover,
.panier-field textarea:hover { border-color: var(--gris-cl); }
.panier-field input:focus,
.panier-field select:focus,
.panier-field textarea:focus {
  outline: none;
  border-color: var(--rouge);
  box-shadow: 0 0 0 3px rgba(212,88,10,.14);
}
.panier-field select { cursor: pointer; }

.field-hint  { font-size: .72rem; color: #999;    margin-left: 6px; font-weight: normal; }
.field-error { display: block; font-size: .76rem; color: #c0392b; margin-top: 4px; font-weight: 600; }

.panier-radio-group {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.panier-radio {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border: 1.5px solid var(--gris-xcl);
  border-radius: var(--r-sm);
  cursor: pointer;
  font-size: .92rem;
  color: var(--brun);
  background: var(--blanc);
  font-weight: 500;
  transition:
    border-color .2s var(--ease-out),
    background .2s var(--ease-out),
    transform .15s var(--ease-out);
}
.panier-radio:hover { border-color: var(--or); }
.panier-radio:has(input:checked) {
  border-color: var(--rouge);
  background: linear-gradient(135deg, var(--rouge-a08) 0%, var(--or-a06) 100%);
  box-shadow: 0 2px 8px rgba(212,88,10,.1);
}
.panier-radio input[type="radio"] {
  accent-color: var(--rouge);
  width: 18px; height: 18px;
}

.panier-info {
  font-size: .82rem;
  color: var(--gris);
  text-align: center;
  line-height: 1.55;
  margin-top: 12px;
  font-style: italic;
}

.cmd-succes {
  background: linear-gradient(135deg, #e8f5e9 0%, #d4edda 100%);
  border: 1.5px solid #4caf50;
  border-radius: var(--r-md);
  padding: 16px 18px;
  text-align: center;
  color: #2e7d32;
  font-weight: 700;
  font-size: .96rem;
  margin-top: 10px;
  box-shadow: 0 4px 16px rgba(76,175,80,.18);
  animation: success-pop .4s var(--ease-bounce);
}
@keyframes success-pop {
  from { transform: scale(.9); opacity: 0; }
  to   { transform: scale(1);  opacity: 1; }
}

/* Scroll reveal (staggerable) */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity .7s var(--ease-out),
    transform .7s var(--ease-out);
  transition-delay: var(--reveal-delay, 0s);
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}


/* ============================================================
   7. DÉCORS (fougère, feuilles, Corse, coffret)
============================================================ */

/* --- Feuilles olivier flottantes (hero) --- */
.leaves {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 1;
}
.leaf {
  position: absolute;
  width: 26px;
  height: 12px;
  background: radial-gradient(ellipse 60% 100% at 50% 50%, rgba(247,185,72,.92) 0%, rgba(212,88,10,.55) 70%, transparent 100%);
  border-radius: 50% 10% 50% 10%;
  opacity: .7;
  filter: drop-shadow(0 2px 8px rgba(212,88,10,.3)) blur(.3px);
  transform: rotate(25deg);
  will-change: transform, opacity;
}
.leaf::before {
  content: '';
  position: absolute;
  inset: 45% 10% 45% 10%;
  background: rgba(250,246,238,.45);
  border-radius: 50%;
}
.leaf--1 { top: 12%; left: 8%;  width: 30px; height: 13px; animation: leaf-float 14s ease-in-out infinite,      leaf-spin 20s linear infinite; }
.leaf--2 { top: 28%; left: 88%; width: 22px; height: 10px; animation: leaf-float 18s ease-in-out infinite 2s,   leaf-spin 24s linear infinite reverse; }
.leaf--3 { top: 62%; left: 18%; width: 28px; height: 12px; animation: leaf-float 16s ease-in-out infinite 1s,   leaf-spin 22s linear infinite; }
.leaf--4 { top: 78%; left: 72%; width: 24px; height: 11px; animation: leaf-float 13s ease-in-out infinite 3s,   leaf-spin 18s linear infinite reverse; }
.leaf--5 { top: 40%; left: 50%; width: 20px; height: 9px;  animation: leaf-float 20s ease-in-out infinite 1.5s, leaf-spin 26s linear infinite; }
@keyframes leaf-float {
  0%, 100% { transform: translate3d(0, 0, 0) rotate(25deg); }
  25%      { transform: translate3d(18px, -22px, 0) rotate(40deg); }
  50%      { transform: translate3d(-12px, -38px, 0) rotate(-10deg); }
  75%      { transform: translate3d(26px, -18px, 0) rotate(55deg); }
}
@keyframes leaf-spin {
  from { filter: drop-shadow(0 2px 8px rgba(212,88,10,.3)) blur(.3px) hue-rotate(0deg); }
  to   { filter: drop-shadow(0 2px 8px rgba(212,88,10,.3)) blur(.3px) hue-rotate(20deg); }
}

/* --- Silhouette Corse --- */
.corse-badge {
  display: inline-block;
  vertical-align: middle;
  object-fit: contain;
  filter: drop-shadow(0 2px 8px var(--rouge-a45));
}
.corse-badge--hero {
  width: 18px;
  height: 36px;
  margin-right: 12px;
  vertical-align: -11px;
}
.corse-badge--footer {
  width: 28px;
  height: 56px;
  flex-shrink: 0;
  filter: drop-shadow(0 4px 12px var(--rouge-a35));
}

/* Carte Corse avec pin (section marché) */
.corsica-wrap {
  position: relative;
  display: inline-block;
  line-height: 0;
  z-index: 1;
}
.corsica-outline {
  width: 200px;
  height: auto;
  display: block;
  filter: drop-shadow(0 12px 32px rgba(212,88,10,.3));
}
.corsica-pin {
  position: absolute;
  left: 16%;
  top: 74%;
  width: 18px;
  height: 18px;
  z-index: 2;
}
.corsica-pin-pulse {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: rgba(244,168,39,.7);
  animation: pinMapPulse 2.4s ease-out infinite;
}
.corsica-pin-pulse--2 { animation-delay: 1.2s; }
@keyframes pinMapPulse {
  0%   { transform: scale(.4); opacity: .9; }
  80%  { transform: scale(3);  opacity: 0; }
  100% { transform: scale(3);  opacity: 0; }
}
.corsica-pin-dot {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: var(--blanc);
  border: 3px solid var(--rouge);
  box-shadow: 0 2px 8px rgba(0,0,0,.25);
  animation: pinMapBounce 2.4s ease-in-out infinite;
}
@keyframes pinMapBounce {
  0%, 100% { transform: scale(1)    translateY(0); }
  50%      { transform: scale(1.12) translateY(-2px); }
}
.corsica-label {
  position: absolute;
  font-family: 'Lato', sans-serif;
  font-size: .74rem;
  font-weight: 800;
  letter-spacing: .16em;
  /* var(--on-accent) reste TOUJOURS blanc (jamais inversé en dark mode)
     car la carte de la Corse a un fond orange dans les 2 thèmes. */
  color: var(--on-accent);
  text-transform: uppercase;
  text-shadow: 0 2px 6px rgba(0,0,0,.55), 0 0 2px rgba(0,0,0,.8);
  z-index: 3;
  pointer-events: none;
  white-space: nowrap;
}
.corsica-label--ajaccio  { left: 37%; top: 72%; font-size: .82rem; letter-spacing: .2em; }
.corsica-label--bastia   { left: 64%; top: 18%; }
.corsica-label--bonifacio{ left: 38%; bottom: 4%; }

/* Wrapper de la carte (bloc cream) */
.corsica-card {
  position: relative;
  background:
    radial-gradient(ellipse 60% 50% at 50% 0%, rgba(244,168,39,.16) 0%, transparent 60%),
    linear-gradient(180deg, var(--creme) 0%, var(--creme-dk) 100%);
  border: 1.5px solid var(--or);
  border-radius: var(--r-md);
  padding: 26px 24px 24px;
  box-shadow: var(--sh-md);
  overflow: hidden;
  min-height: 360px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 16px;
  transition:
    transform .4s var(--ease-out),
    box-shadow .4s var(--ease-out);
}
.corsica-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 40% 50% at 20% 20%, rgba(247,185,72,.2) 0%, transparent 60%),
    radial-gradient(ellipse 40% 50% at 80% 80%, var(--rouge-a12) 0%, transparent 60%);
  pointer-events: none;
}
.corsica-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--sh-lg);
}
.corsica-legend {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: var(--blanc);
  border: 1px solid var(--or-a30);
  border-radius: var(--r-sm);
  box-shadow: var(--sh-xs);
  position: relative;
  z-index: 1;
  max-width: 100%;
}
.corsica-pin-demo {
  width: 14px; height: 14px;
  border-radius: 50%;
  background: var(--blanc);
  border: 3px solid var(--rouge);
  box-shadow: 0 0 0 4px rgba(244,168,39,.3);
  flex-shrink: 0;
  animation: pin-demo-pulse 2s ease-in-out infinite;
}
@keyframes pin-demo-pulse {
  0%, 100% { box-shadow: 0 0 0 4px rgba(244,168,39,.3); }
  50%      { box-shadow: 0 0 0 8px rgba(244,168,39,.12); }
}
.corsica-legend strong {
  display: block;
  font-family: 'Playfair Display', serif;
  font-size: 1.02rem;
  color: var(--brun);
  line-height: 1.2;
}
.corsica-legend span {
  display: block;
  font-size: .78rem;
  color: var(--gris);
  margin-top: 2px;
}

/* --- Décor maquis : branche d'olivier botanique (section produits) --- */
.produits-decors {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
  background:
    radial-gradient(ellipse 50% 35% at 8% 15%, rgba(74,127,62,.06) 0%, transparent 65%),
    radial-gradient(ellipse 45% 30% at 95% 45%, rgba(107,141,82,.05) 0%, transparent 65%),
    radial-gradient(ellipse 55% 35% at 50% 92%, rgba(85,107,62,.04) 0%, transparent 65%);
}
.olive-botanical {
  position: absolute;
  bottom: 0;
  right: 0;
  width: clamp(300px, 42vw, 560px);
  height: auto;
  opacity: .22;
  filter: drop-shadow(0 8px 24px rgba(58,82,42,.18));
  transform-origin: bottom right;
  animation: olive-breathe 22s ease-in-out infinite alternate;
  will-change: transform;
}
@keyframes olive-breathe {
  0%   { transform: scale(1) rotate(0deg); }
  50%  { transform: scale(1.015) rotate(.4deg); }
  100% { transform: scale(1.005) rotate(-.3deg); }
}
@media (max-width: 768px) {
  .olive-botanical {
    width: clamp(220px, 60vw, 380px);
    opacity: .16;
  }
}
/* --- Banner coffret cadeau --- */
.coffret-banner {
  background: linear-gradient(135deg, var(--or-a06) 0%, var(--or-a18) 100%);
  border: 2px solid var(--or);
  border-radius: var(--r-md);
  padding: 12px 16px;
  margin: 14px 0;
  display: flex;
  align-items: center;
  gap: 12px;
  box-shadow: 0 4px 14px var(--or-a18);
}
.coffret-banner .icon { font-size: 28px; flex-shrink: 0; }
.coffret-banner .info {
  flex: 1;
  font-size: 13px;
  color: var(--brun);
  line-height: 1.4;
}
.coffret-banner strong {
  color: var(--rouge);
  display: block;
  font-size: 14px;
  margin-bottom: 2px;
}
.coffret-banner button {
  background: var(--rouge);
  color: var(--blanc);
  border: none;
  border-radius: 8px;
  padding: 9px 14px;
  font-weight: 700;
  font-size: 12px;
  cursor: pointer;
  white-space: nowrap;
  transition: transform .2s, background .2s;
}
.coffret-banner button:hover { transform: translateY(-1px); }
.coffret-banner.active        { background: linear-gradient(135deg, var(--success-bg) 0%, rgba(39,174,96,.18) 100%); border-color: var(--success); }
.coffret-banner.active strong { color: var(--success); }
.coffret-banner.active button { background: var(--success); color: var(--on-accent); }
.coffret-remise-ligne {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: #e8f7ea;
  border: 1.5px solid #27ae60;
  border-radius: 8px;
  padding: 10px 14px;
  margin-top: 8px;
  font-size: 13px;
}
.coffret-remise-ligne .lbl    { font-weight: bold; color: #1e8449; }
.coffret-remise-ligne strong  { color: #1e8449; font-size: 15px; }


/* ============================================================
   8. RESPONSIVE (XL → 480px)
============================================================ */

/* --- Desktop XL (≥1400px) --- */
@media (min-width: 1400px) {
  .container             { max-width: 1320px; padding: 0 40px; }
  .produits,
  .histoire,
  .marche,
  .contact               { padding: 112px 0; }
  .hero-content          { max-width: 820px; }
  .hero h1               { font-size: clamp(4rem, 7vw, 7.5rem); }
  .produits-grid,
  .produits-grid--3      { gap: 32px; }
  .section-sub           { margin-bottom: 64px; }
}

/* --- Desktop small (1025–1199px) --- */
@media (min-width: 1025px) and (max-width: 1199px) {
  .container             { padding: 0 28px; }
  .produits-grid,
  .produits-grid--3      { gap: 22px; }
  .histoire-inner        { gap: 52px; }
  .marche-grid           { gap: 44px; }
}

/* --- Tablette (769–1024px) --- */
@media (min-width: 769px) and (max-width: 1024px) {
  .container             { padding: 0 24px; }
  .navbar                { padding: 16px 28px; }
  .navbar.scrolled       { padding: 12px 28px; }
  .nav-links             { gap: 26px; }

  .produits-grid,
  .produits-grid--3      { grid-template-columns: repeat(3, 1fr); gap: 20px; }

  .produit-img           { height: 180px; }
  .produit-img--fromage  { height: 210px; }
  .produit-img--pot      { height: 200px; }
  .produit-img--bouteille{ height: 260px; }
  .produit-card-body     { padding: 18px 18px 22px; }
  .produit-card h4       { font-size: 1.05rem; }
  .produit-card p        { font-size: .86rem; }

  .hero                  { min-height: 90vh; }
  .hero h1               { font-size: clamp(3rem, 8vw, 5.5rem); }

  .produits,
  .histoire,
  .marche,
  .contact               { padding: 72px 0; }
  .citation              { padding: 56px 0; }
  .commander             { padding: 64px 0; }

  .histoire-inner        { gap: 48px; }
  .marche-grid           { gap: 36px; }
  .footer-inner          { grid-template-columns: 2fr 1fr; gap: 48px; padding: 110px 64px 48px; }

  .produits-categorie    { font-size: 1.45rem; }

  .panier-panel          { width: 480px; }
}

/* --- Tablette large (≤1024px) — ajustements --- */
@media (max-width: 1024px) {
  .footer-inner          { grid-template-columns: 1fr 1fr; gap: 32px; }
  .trust-strip-inner     { grid-template-columns: repeat(2, 1fr); gap: 16px; padding: 22px 24px; }
}

/* --- Mobile (≤768px) --- */
@media (max-width: 768px) {
  /* Hero image mobile dédiée (LCP) */
  .hero {
    background:
      linear-gradient(160deg, rgba(212,88,10,.55) 0%, rgba(44,26,14,.88) 100%),
      url('images/webp/hero_stand_mobile.webp') center/cover no-repeat;
    min-height: 82vh;
  }

  .container             { padding: 0 16px; }

  /* Navbar */
  .navbar                { padding: 10px 14px; }
  .navbar.scrolled       { padding: 8px 14px; }
  .nav-links {
    display: none;
    flex-direction: column;
    position: absolute;
    top: 60px; left: 0; right: 0;
    background: rgba(44,26,14,.98);
    backdrop-filter: saturate(180%) blur(16px);
    -webkit-backdrop-filter: saturate(180%) blur(16px);
    padding: 16px 18px calc(22px + env(safe-area-inset-bottom, 0px));
    gap: 0;
    border-top: 1px solid var(--or-a14);
    border-radius: 0 0 var(--r-lg) var(--r-lg);
    box-shadow: 0 8px 32px rgba(0,0,0,.3);
  }
  .nav-links.open        { display: flex; }
  .nav-links li          { border-bottom: 1px solid var(--or-a10); }
  .nav-links li:last-child { border-bottom: none; }
  .nav-links a {
    display: flex;
    align-items: center;
    min-height: 48px;
    padding: 8px 0;
    font-size: .98rem;
    letter-spacing: .08em;
  }
  .nav-links a::after    { display: none; }
  .logo                  { font-size: 1.35rem; }

  .nav-toggle {
    display: flex;
    min-height: 44px; min-width: 44px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    transition:
      background .2s var(--ease-out),
      transform .2s var(--ease-out);
  }
  .nav-toggle:hover      { background: var(--or-a14); }
  .nav-toggle:active     { transform: scale(.92); }

  /* Scroll anchors offset */
  section[id]            { scroll-margin-top: 72px; }

  /* nav-compte (icône ronde) */
  #nav-compte {
    margin-left: auto;
    width: 42px;
    height: 42px;
    min-width: 42px;
    max-width: 42px;
    padding: 0;
    border-radius: 50%;
    background: rgba(212,88,10,.22);
    border: 1.5px solid rgba(244,168,39,.45);
    box-shadow: 0 2px 10px rgba(0,0,0,.25);
    line-height: 1;
    overflow: hidden;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-right: 6px;
    transition:
      background .2s var(--ease-out),
      transform .2s var(--ease-out),
      border-color .2s var(--ease-out);
  }
  #nav-compte .nc-icon   { font-size: 19px; line-height: 1; display: inline-flex; align-items: center; }
  #nav-compte .nc-text   { display: none; }
  #nav-compte:hover {
    background: rgba(212,88,10,.35);
    border-color: var(--or);
    transform: translateY(-1px);
  }
  #nav-compte:active     { transform: scale(.94); }

  /* Hero mobile */
  .hero-content          { padding: 16px 18px 24px; }
  .hero-sub              { font-size: .72rem; letter-spacing: .24em; padding: 6px 16px; margin-bottom: 14px; }
  .hero h1               { font-size: clamp(2.8rem, 13vw, 4.6rem); line-height: .95; margin-bottom: 18px; letter-spacing: -.01em; }
  .hero-desc             { font-size: .98rem; line-height: 1.65; margin-bottom: 26px; padding: 0 6px; color: rgba(255,255,255,.95); }
  .hero-ctas             { gap: 12px; }
  .scroll-indicator      { bottom: 24px; font-size: 1.3rem; }

  /* Banner */
  .banner                { padding: 12px 0; }
  .banner-items          { gap: 36px; animation-duration: 24s; }
  .banner-items span     { font-size: .78rem; letter-spacing: .12em; }

  /* Trust strip 2×2 */
  .trust-strip-inner     { padding: 22px 14px; gap: 14px 12px; }
  .trust-item {
    padding: 12px 10px;
    background: var(--blanc);
    border: 1px solid rgba(244,168,39,.18);
    border-radius: var(--r-md);
    box-shadow: var(--sh-xs);
    gap: 12px;
  }
  .trust-icon            { width: 40px; height: 40px; font-size: 1.3rem; border-radius: var(--r-sm); }
  .trust-item strong     { font-size: .88rem; line-height: 1.25; }
  .trust-item p          { font-size: .72rem; line-height: 1.3; }

  /* Section titles */
  .section-title         { font-size: 1.85rem; letter-spacing: -.015em; }
  .section-title::after  { width: 48px; margin-top: 10px; }
  .section-sub           { font-size: .95rem; margin-bottom: 28px; line-height: 1.6; padding: 0 8px; }

  /* Catégories */
  .produits-categorie    { font-size: 1.28rem; margin: 36px 0 18px; padding-bottom: 12px; gap: 10px; }
  .produits-categorie::before { width: 80px; }
  .prix-kilo             { font-size: .66rem; padding: 4px 10px; }

  /* Recherche */
  #recherche-produits    { padding: 14px 46px 14px 48px; font-size: 16px; border-radius: var(--r-full); }
  .search-produits::before { left: 16px; width: 18px; height: 18px; background-size: 18px 18px; }
  .search-clear          { right: 12px; width: 40px; height: 40px; }
  .search-produits-wrap  { margin-bottom: 24px; }

  /* Filtres chips (scroll snap) */
  .search-filtres {
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding: 2px 10px;
    margin: 14px -10px 0;
    max-width: none;
  }
  .filtre-chip {
    scroll-snap-align: start;
    min-height: 44px;
    padding: 10px 18px;
    font-size: .84rem;
    display: inline-flex;
    align-items: center;
  }

  /* Produits — grille 2 cols mobile */
  .produits-grid,
  .produits-grid--3      { grid-template-columns: repeat(2, 1fr); gap: 14px; }

  .produit-card {
    border-radius: var(--r-md);
    box-shadow: 0 2px 10px rgba(44,26,14,.06), 0 1px 3px var(--brun-a04);
  }
  .produit-card-body     { padding: 14px 14px 16px; gap: 8px; }
  .produit-card h4 {
    font-size: .98rem;
    line-height: 1.3;
    letter-spacing: -.005em;
    min-height: 2.6em;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .produit-card p {
    font-size: .82rem;
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .produit-icon          { padding: 14px 10px 0; font-size: 1.7rem; }
  .produit-badge         { font-size: .65rem; padding: 3px 8px; }
  .produit-label         { font-size: .64rem; padding: 3px 9px; letter-spacing: .06em; margin-top: 10px; }
  .produit-nouveaute     { font-size: .68rem; padding: 3px 10px; margin-bottom: 2px; }
  .produit-prix          { font-size: .78rem; padding: 4px 12px; }
  .produit-card--highlight { box-shadow: 0 6px 20px var(--rouge-a18), 0 2px 6px var(--rouge-a08); }
  .produit-no-img        { height: 160px; }

  .produit-img           { height: 160px; }
  .produit-img--fromage  { height: 170px; padding: 10px; }
  .produit-img--pot      { height: 165px; padding: 12px; }
  .produit-img--bouteille{ height: 220px; padding: 14px 22px; }

  /* Boutons tactile-friendly */
  .btn-primary,
  .btn-secondary,
  .btn-envoyer,
  .btn-commander {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  .btn-commander {
    min-height: 44px;
    font-size: .82rem;
    padding: 11px 12px;
    letter-spacing: .05em;
    border-radius: var(--r-sm);
  }

  /* Commander steps vertical */
  .commander-steps       { flex-direction: column; gap: 14px; align-items: stretch; }
  .step                  { max-width: none; min-width: 0; width: 100%; padding: 18px 18px; gap: 16px; }
  .step-num              { width: 42px; height: 42px; font-size: 1.2rem; }
  .step-text strong      { font-size: .92rem; }
  .step-text span        { font-size: .84rem; }
  .step-arrow            { display: none; }

  /* Livraison info */
  .livraison-info        { padding: 18px 18px; margin-bottom: 28px; border-radius: var(--r-md); }
  .livraison-badge       { font-size: 1.02rem; }
  .livraison-detail {
    flex-direction: column;
    gap: 8px;
    align-items: flex-start;
    text-align: left;
    font-size: .88rem;
  }
  .livraison-sep         { display: none; }
  .livraison-detail > span {
    display: flex;
    align-items: center;
    gap: 6px;
  }

  /* Histoire */
  .histoire-inner,
  .marche-grid,
  .footer-inner          { grid-template-columns: 1fr; gap: 32px; }
  .produits              { padding: 48px 0; }
  .histoire,
  .marche,
  .contact               { padding: 56px 0; }
  .citation              { padding: 40px 0; }
  .commander             { padding: 48px 0; }
  .histoire-stats        { grid-template-columns: repeat(3, 1fr); gap: 12px; }
  .visuel-chiffre        { font-size: 1.9rem; }
  .visuel-label          { font-size: .68rem; }
  .enseigne-img          { max-height: 280px; border-radius: var(--r-sm); }

  /* Marché info blocs */
  .info-bloc             { padding: 14px 14px; gap: 14px; border-radius: var(--r-sm); margin-bottom: 18px; }
  .info-icon             { width: 42px; height: 42px; font-size: 1.35rem; }
  .info-bloc strong      { font-size: .74rem; }
  .info-bloc p           { font-size: .88rem; line-height: 1.5; }

  /* Citation compact */
  .citation blockquote   { font-size: clamp(1.1rem, 4.5vw, 1.45rem); padding: 0 12px; line-height: 1.55; }
  .citation blockquote::before { font-size: 2.6rem; margin-right: 4px; }
  .citation-author       { font-size: .72rem; letter-spacing: .18em; margin-top: 14px; }
  .citation-deco         { width: 72%; height: 10px; background-size: 14px 10px; }
  .citation-deco--top    { top: 18px; }
  .citation-deco--bottom { bottom: 18px; }

  /* Contact coords */
  .contact-coords        { gap: 12px; }
  .coord-bloc            { padding: 20px 16px; gap: 14px; border-radius: var(--r-sm); }
  .coord-icon            { width: 42px; height: 42px; font-size: 1.4rem; }
  .coord-bloc strong     { font-size: .74rem; }
  .coord-bloc a,
  .coord-bloc span       { font-size: .92rem; }

  /* Footer */
  .footer-inner          { padding: 110px 24px 40px; }
  .footer-bottom         { padding: 14px 24px calc(14px + env(safe-area-inset-bottom, 0px)); }

  /* Panier float safe-area */
  .panier-float {
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    right: calc(16px + env(safe-area-inset-right, 0px));
    padding: 12px 18px;
    font-size: .88rem;
    box-shadow: 0 6px 24px rgba(212,88,10,.4), 0 2px 6px var(--rouge-a18);
  }
  .panier-float-icon     { font-size: 1.1rem; }

  /* ─── Panier = bottom-sheet mobile (style Uber/Deliveroo, app-feel natif) */
  .panier-panel {
    top: auto;
    right: 0; left: 0;
    bottom: 0;
    width: 100vw;
    max-width: 100vw;
    height: auto;
    max-height: 92dvh;
    border-radius: 18px 18px 0 0;
    transform: translateY(100%);
    transition: transform .35s cubic-bezier(.34, 1.56, .64, 1);
    box-shadow: 0 -12px 40px rgba(0,0,0,.22);
    padding-bottom: var(--safe-bottom, 0);
  }
  .panier-panel.open { transform: translateY(0); }
  /* Handle drag-indicator (affordance visuelle "swipe pour fermer") */
  .panier-panel-header {
    padding: 22px 18px 16px;
    border-radius: 18px 18px 0 0;
    position: relative;
  }
  .panier-panel-header::before {
    content: '';
    position: absolute;
    top: 8px; left: 50%;
    transform: translateX(-50%);
    width: 44px; height: 5px;
    background: var(--or);
    border-radius: 3px;
    opacity: .5;
  }
  .panier-panel-body     { padding: 18px; gap: 18px; overscroll-behavior: contain; }
  .panier-panel-header h2{ font-size: 1.2rem; }
  .panier-close          { width: 34px; height: 34px; }
  .panier-radio          { padding: 13px 14px; font-size: .9rem; }
  .panier-radio input[type="radio"] { width: 20px; height: 20px; }

  /* Focus ring plus visible sur tactile */
  *:focus-visible        { outline-width: 3px; }

  /* Anti-zoom iOS sur inputs */
  input,
  select,
  textarea,
  input[type="date"],
  input[type="time"],
  input[type="tel"],
  input[type="email"],
  input[type="text"],
  input[type="search"],
  input[type="password"],
  .panier-field input,
  .panier-field select,
  .panier-field textarea { font-size: 16px; }

  /* Décors */
  .corse-badge--hero     { width: 14px; height: 28px; margin-right: 10px; vertical-align: -8px; }
  .corse-badge--footer   { width: 24px; height: 48px; }
  .corsica-outline       { width: 160px; }
  .corsica-label         { font-size: .64rem; }
  .corsica-label--ajaccio{ font-size: .72rem; }
}

/* --- Petit mobile (≤480px) --- */
@media (max-width: 480px) {
  /* Grille produits plus serrée */
  .produits-grid,
  .produits-grid--3      { grid-template-columns: repeat(2, 1fr); gap: 10px; }

  .produit-card-body     { padding: 10px 10px 12px; gap: 6px; }
  .produit-card h4       { font-size: .88rem; min-height: 2.4em; }
  .produit-card p        { font-size: .74rem; -webkit-line-clamp: 2; line-height: 1.45; }
  .produit-label         { font-size: .6rem;  padding: 3px 8px; margin-top: 8px; }
  .produit-nouveaute     { font-size: .62rem; padding: 2px 8px; }
  .produit-prix          { font-size: .72rem; padding: 3px 10px; }
  .produit-img           { height: 132px; }
  .produit-img--fromage  { height: 145px; padding: 8px; }
  .produit-img--pot      { height: 140px; padding: 10px; }
  .produit-img--bouteille{ height: 188px; padding: 12px 16px; }
  .produit-no-img        { height: 132px; }

  .btn-commander         { font-size: .76rem; padding: 11px 8px; min-height: 44px; letter-spacing: .04em; }

  /* Hero compact */
  .hero h1               { font-size: clamp(2.5rem, 14vw, 3.8rem); margin-bottom: 14px; }
  .hero-desc             { font-size: .92rem; margin-bottom: 20px; }
  .hero-sub              { font-size: .68rem; letter-spacing: .2em; padding: 5px 14px; }
  .hero-ctas             { width: 100%; flex-direction: column; align-items: stretch; }
  .btn-primary,
  .btn-secondary         { width: 100%; text-align: center; }

  /* Titres */
  .section-title         { font-size: 1.6rem; }
  .produits-categorie    { font-size: 1.12rem; margin: 28px 0 14px; }

  .container             { padding: 0 12px; }
  .produits              { padding: 32px 0; }
  .citation              { padding: 32px 0; }
  .histoire,
  .marche,
  .contact               { padding: 32px 0; }
  .commander             { padding: 36px 0; }

  /* Banner rapide */
  .banner-items          { gap: 28px; }
  .banner-items span     { font-size: .72rem; }

  /* Trust strip */
  .trust-strip-inner     { grid-template-columns: 1fr 1fr; gap: 12px; padding: 18px 16px; }

  /* Commander steps petit */
  .step                  { padding: 14px 14px; gap: 12px; }
  .step-num              { width: 38px; height: 38px; font-size: 1.1rem; }

  /* Histoire stats 3 cols compactes */
  .histoire-stats        { gap: 8px; }
  .visuel-chiffre        { font-size: 1.6rem; }
  .visuel-label          { font-size: .62rem; line-height: 1.25; }
  .visuel-bloc           { padding-left: 12px; border-left-width: 2px; }

  /* Floating cart : version COMPACTE sur mobile — juste l'icône + badge,
     discret dans le coin pour pouvoir consulter sa commande sans être envahissant */
  .panier-float          {
    padding: 0 !important;
    width: 52px !important;
    height: 52px !important;
    gap: 0 !important;
    bottom: calc(18px + env(safe-area-inset-bottom, 0px)) !important;
    right: 14px !important;
    justify-content: center !important;
  }
  .panier-float-label    { display: none !important; }
  .panier-float-icon     { font-size: 1.25rem !important; }
  /* Badge en pastille d'angle (comme les notifications iOS) */
  .panier-float .panier-badge {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 20px;
    height: 20px;
    font-size: .68rem;
    padding: 0 5px;
    border: 2px solid var(--blanc);
    background: #1a1a1a;
    color: var(--or);
  }

  /* Navbar compte icône petit */
  #nav-compte {
    width: 40px;
    height: 40px;
    min-width: 40px;
    max-width: 40px;
    margin-right: 4px;
  }
  #nav-compte .nc-icon   { font-size: 18px; }

  /* Footer */
  .footer-inner          { grid-template-columns: 1fr; gap: 24px; }
  .livraison-info        { padding: 14px 16px; }
  .livraison-detail      { font-size: .82rem; }

  /* Recherche pleine largeur */
  .search-produits       { max-width: 100%; }
  .search-filtres        { max-width: 100%; }
  #recherche-produits    { padding: 12px 42px 12px 46px; font-size: 15px; }
  .search-produits-wrap  { margin-bottom: 18px; }

}


/* ============================================================
   9. PREFERS-REDUCED-MOTION (accessibilité + perf)
============================================================ */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
  .hero-aurora              { opacity: .7; }
  .produits-fern--main      { transform: translate(-50%, -50%) rotate(28deg); }
  .ripple                   { opacity: 0; }
  .corsica-pin-pulse,
  .corsica-pin-pulse--2     { opacity: 0; }

  /* backdrop-filter animé coûteux : fallback plein */
  .panier-overlay {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    background: rgba(0,0,0,.65);
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   THÈME SOMBRE — overrides ciblés
   Les variables :root sont déjà inversées plus haut. Ce bloc patche les
   éléments avec couleurs hardcodées (background:#fff, etc.) dans le CSS
   et adapte certains effets (gradients, ombres) qui ne suivent pas les vars.
   ═══════════════════════════════════════════════════════════════════════════ */
[data-theme="dark"] body {
  background: var(--creme);
  color: var(--brun);
}

/* Backgrounds blancs hardcodés (cards, panneaux internes) → utilise --blanc */
[data-theme="dark"] *:not(input):not(textarea):not(select):not(button) {
  /* Pas de modif générique sur tout — trop risqué */
}
[data-theme="dark"] [style*="background:#fff"],
[data-theme="dark"] [style*="background: #fff"],
[data-theme="dark"] [style*="background:#FFFFFF"],
[data-theme="dark"] [style*="background: white"],
[data-theme="dark"] [style*="background:white"] {
  background: var(--blanc) !important;
}
[data-theme="dark"] [style*="background:#FAF6EE"],
[data-theme="dark"] [style*="background: #FAF6EE"],
[data-theme="dark"] [style*="background:#faf6ee"],
[data-theme="dark"] [style*="background:#fafafa"],
[data-theme="dark"] [style*="background:#f8f4ef"],
[data-theme="dark"] [style*="background:#f0e8e0"],
[data-theme="dark"] [style*="background:#fff7f2"] {
  background: var(--bg-soft) !important;
}

/* Texte sombre hardcodé sur fond clair → texte clair */
[data-theme="dark"] [style*="color:#2C1A0E"],
[data-theme="dark"] [style*="color: #2C1A0E"],
[data-theme="dark"] [style*="color:#2c1a0e"],
[data-theme="dark"] [style*="color:#1a1a1a"],
[data-theme="dark"] [style*="color:#1A1A1A"],
[data-theme="dark"] [style*="color:#000"],
[data-theme="dark"] [style*="color: black"],
[data-theme="dark"] [style*="color:black"] {
  color: var(--brun) !important;
}
[data-theme="dark"] [style*="color:#666"],
[data-theme="dark"] [style*="color: #666"],
[data-theme="dark"] [style*="color:#555"],
[data-theme="dark"] [style*="color:#888"],
[data-theme="dark"] [style*="color:#777"],
[data-theme="dark"] [style*="color:#999"],
[data-theme="dark"] [style*="color:#aaa"] {
  color: var(--gris) !important;
}

/* Bordures claires hardcodées → bordures sombres */
[data-theme="dark"] [style*="border:1px solid #f0e8e0"],
[data-theme="dark"] [style*="border:1px solid #ddd"],
[data-theme="dark"] [style*="border:1.5px solid #ddd"],
[data-theme="dark"] [style*="border:1px solid #eee"],
[data-theme="dark"] [style*="border:2px solid #ddd"] {
  border-color: var(--gris-xcl) !important;
}

/* Inputs / textareas / selects : fond clair → fond sombre */
[data-theme="dark"] input[type="text"],
[data-theme="dark"] input[type="email"],
[data-theme="dark"] input[type="tel"],
[data-theme="dark"] input[type="password"],
[data-theme="dark"] input[type="number"],
[data-theme="dark"] input[type="date"],
[data-theme="dark"] input[type="datetime-local"],
[data-theme="dark"] input[type="search"],
[data-theme="dark"] input:not([type]),
[data-theme="dark"] textarea,
[data-theme="dark"] select {
  background: var(--bg-soft);
  color: var(--brun);
  border-color: var(--gris-xcl);
}
[data-theme="dark"] input::placeholder,
[data-theme="dark"] textarea::placeholder {
  color: var(--gris-cl);
  opacity: .7;
}

/* Hero, header, footer du site : conserver fond sombre brun original (déjà sombre, OK) */
[data-theme="dark"] header,
[data-theme="dark"] footer {
  /* Déjà sombres dans le design original, on garde tel quel */
}

/* Cards des produits, panier, sections : utilise les variables */
[data-theme="dark"] .produit-card,
[data-theme="dark"] .panier-panel,
[data-theme="dark"] .panier-item,
[data-theme="dark"] .stat-card,
[data-theme="dark"] .ui-form,
[data-theme="dark"] .auth-card {
  background: var(--blanc);
  color: var(--brun);
}

/* Boutons secondaires (gris/blancs) → fond sombre */
[data-theme="dark"] .btn--secondary,
[data-theme="dark"] .btn-reset {
  background: var(--bg-soft);
  color: var(--brun);
  border-color: var(--gris-xcl);
}

/* Cookie banner et autres bandeaux foncés : déjà sombres */

/* Modal, overlays */
[data-theme="dark"] .panier-overlay,
[data-theme="dark"] [id$="-modal-overlay"] {
  background: rgba(0,0,0,.7);
}
[data-theme="dark"] [id$="-modal"],
[data-theme="dark"] [id$="-modal-content"] {
  background: var(--blanc);
  color: var(--brun);
}

/* Hover sur cards / boutons : version sombre légèrement plus claire */
[data-theme="dark"] .produit-card:hover,
[data-theme="dark"] .stat-card:hover {
  background: #2F2520;
}

/* Toast notifications : si fond clair, basculer en sombre */
[data-theme="dark"] .toast {
  background: var(--brun);
  color: var(--creme);
  border: 1px solid var(--gris-xcl);
}

/* Reviews modal */
[data-theme="dark"] #reviews-modal {
  background: var(--blanc);
  color: var(--brun);
}

/* Bouton toggle theme : s'adapte */
[data-theme="dark"] #theme-toggle {
  background: var(--blanc);
  color: var(--or);
  border-color: rgba(244,168,39,.35);
}

/* Override images / SVG si fond blanc transparent gênant */
[data-theme="dark"] img[src$=".svg"]:not([src*="logo"]):not([src*="icon"]) {
  /* on laisse les SVG tranquilles, ils peuvent être dessinés en sombre déjà */
}

/* Highlights / badges en couleur claire → garder lisibles */
[data-theme="dark"] [style*="background:#e8f6e8"] { background: rgba(39,174,96,.15) !important; }
[data-theme="dark"] [style*="background:#fff4e6"] { background: rgba(244,168,39,.15) !important; }
[data-theme="dark"] [style*="background:#fde8e8"] { background: rgba(231,76,60,.15) !important; }
[data-theme="dark"] [style*="background:#FAF6EE"] { background: var(--bg-soft) !important; }

/* Liens clairs : meilleur contraste */
[data-theme="dark"] a {
  color: var(--rouge-cl);
}
[data-theme="dark"] a:hover {
  color: var(--or);
}

/* ────────────────────────────────────────────────────────────────────────────
   Fixes spécifiques dark theme (sections + composants oubliés)
   ──────────────────────────────────────────────────────────────────────────── */

/* Section "Notre histoire" : conçue comme bande sombre permanente.
   En dark mode, var(--brun) devient clair → texte blanc devient invisible.
   On force le fond brun foncé indépendamment du theme. */
[data-theme="dark"] .histoire {
  background:
    radial-gradient(ellipse 60% 80% at 0% 50%, rgba(244,168,39,.07) 0%, transparent 50%),
    radial-gradient(ellipse 60% 80% at 100% 50%, rgba(212,88,10,.06) 0%, transparent 50%),
    #2C1A0E !important;  /* brun fixe (= var(--brun) light mode) */
  color: #FFFFFF !important;
}
[data-theme="dark"] .histoire .section-title,
[data-theme="dark"] .histoire .section-title::after {
  color: var(--or);
}
[data-theme="dark"] .histoire-text p {
  color: rgba(255,255,255,.82);
}
[data-theme="dark"] .horaire-ligne {
  color: rgba(255,255,255,.9);
}
[data-theme="dark"] .histoire-quote em {
  color: var(--or-cl);
}

/* Section "Pré-commandez vos produits" (.commander) : même problème que .histoire.
   Conçue comme bande sombre permanente avec texte blanc → on force le fond brun
   indépendamment du theme pour préserver la lisibilité. */
[data-theme="dark"] .commander {
  background:
    radial-gradient(ellipse 60% 50% at 50% 0%, rgba(244,168,39,.10) 0%, transparent 60%),
    #2C1A0E !important;
  color: #FFFFFF !important;
}
[data-theme="dark"] .commander .section-sub {
  color: rgba(255,255,255,.78) !important;
}
[data-theme="dark"] .livraison-info {
  background: linear-gradient(135deg, rgba(244,168,39,.14) 0%, rgba(244,168,39,.06) 100%) !important;
  border-color: rgba(244,168,39,.4) !important;
  color: rgba(255,255,255,.85) !important;
}
[data-theme="dark"] .livraison-detail {
  color: rgba(255,255,255,.85) !important;
}
[data-theme="dark"] .livraison-detail strong {
  color: var(--or) !important;
}
[data-theme="dark"] .step {
  background: rgba(255,255,255,.06) !important;
  border-color: rgba(244,168,39,.28) !important;
  color: rgba(255,255,255,.85) !important;
}
[data-theme="dark"] .step:hover {
  background: rgba(255,255,255,.09) !important;
  border-color: var(--or) !important;
}
[data-theme="dark"] .step-text strong {
  color: var(--or) !important;
}
[data-theme="dark"] .step-text span {
  color: rgba(255,255,255,.75) !important;
}
[data-theme="dark"] .step-arrow {
  color: var(--or) !important;
}
[data-theme="dark"] .step-num {
  background: linear-gradient(135deg, #C0392B 0%, #E74C3C 100%) !important;
  color: #FFFFFF !important;
}

/* ════════════════════════════════════════════════════════════════════════════
   AUDIT COMPLET DARK MODE — Sections "bandes sombres permanentes" + inline JS
   Agent audit identifié 6 sections + 8 sélecteurs inline styles manquants.
   ════════════════════════════════════════════════════════════════════════════ */

/* ─── 1. .footer ─── */
[data-theme="dark"] .footer,
[data-theme="dark"] footer {
  background:
    radial-gradient(ellipse 70% 50% at 0% 0%, rgba(244,168,39,.06) 0%, transparent 60%),
    #2C1A0E !important;
  color: rgba(255,255,255,.72) !important;
}
[data-theme="dark"] .footer-bottom {
  border-top-color: rgba(255,255,255,.08) !important;
}
[data-theme="dark"] .social-icons a {
  border-color: rgba(255,255,255,.2) !important;
  color: #FAF6EE !important;
}
[data-theme="dark"] .social-icons a:hover {
  background: var(--or) !important;
  color: #2C1A0E !important;
  border-color: var(--or) !important;
}
[data-theme="dark"] .footer-links a,
[data-theme="dark"] .footer a {
  color: rgba(255,255,255,.72) !important;
}
[data-theme="dark"] .footer-links a:hover,
[data-theme="dark"] .footer a:hover {
  color: var(--or) !important;
}

/* ─── 2. .banner (bandeau défilant rouge) ─── */
[data-theme="dark"] .banner,
[data-theme="dark"] .banner-items,
[data-theme="dark"] .banner-items span,
[data-theme="dark"] .banner-track {
  color: #FFFFFF !important;
}

/* ─── 3. .citation (blockquote rouge) ─── */
[data-theme="dark"] .citation blockquote {
  color: #FFFFFF !important;
  text-shadow: 0 2px 16px rgba(0,0,0,.35);
}
[data-theme="dark"] .citation-author,
[data-theme="dark"] .citation footer {
  color: var(--or) !important;
}

/* ─── 4. .hero (titre / sous-titre / desc invisibles) ─── */
[data-theme="dark"] .hero {
  color: #FFFFFF !important;
}
[data-theme="dark"] .hero h1,
[data-theme="dark"] .hero-title {
  color: #FFFFFF !important;
}
[data-theme="dark"] .hero-sub,
[data-theme="dark"] .hero-subtitle {
  color: var(--or) !important;
}
[data-theme="dark"] .hero-desc,
[data-theme="dark"] .hero p {
  color: rgba(255,255,255,.92) !important;
}

/* ─── 5. .coffret-banner (carte coffret cadeau) ─── */
[data-theme="dark"] .coffret-banner button,
[data-theme="dark"] .coffret-banner .btn {
  color: #FFFFFF !important;
}
[data-theme="dark"] .coffret-banner .info {
  color: var(--brun) !important;
}
[data-theme="dark"] .coffret-banner strong {
  color: var(--or-cl) !important;
}
[data-theme="dark"] .coffret-remise-ligne {
  background: rgba(39,174,96,.15) !important;
  border-color: var(--success) !important;
  color: var(--success-cl) !important;
}
[data-theme="dark"] .coffret-remise-ligne .lbl,
[data-theme="dark"] .coffret-remise-ligne strong {
  color: var(--success-cl) !important;
}

/* ─── 6. Sélecteurs inline styles JS manquants ─── */

/* Vignettes recos panier (#f4ecd8 placeholder image) */
[data-theme="dark"] [style*="background:#f4ecd8"],
[data-theme="dark"] [style*="background: #f4ecd8"] {
  background: var(--bg-soft) !important;
}

/* Bandeau "Retrait uniquement" (#fff3cd + border #ffc107 + color #856404) */
[data-theme="dark"] [style*="border:1px solid #ffc107"],
[data-theme="dark"] [style*="border: 1px solid #ffc107"] {
  border-color: var(--or) !important;
}

/* Encart frais Colissimo (#fff8e1 + border #f0c14b) */
[data-theme="dark"] [style*="border:1.5px solid #f0c14b"],
[data-theme="dark"] [style*="border: 1.5px solid #f0c14b"] {
  border-color: var(--or) !important;
}

/* Cartes profil/adresse renderClientInfoCard (borders #27ae60 / #e74c3c) */
[data-theme="dark"] [style*="border:1.5px solid #27ae60"],
[data-theme="dark"] [style*="border: 1.5px solid #27ae60"] {
  border-color: var(--success) !important;
}
[data-theme="dark"] [style*="border:1.5px solid #e74c3c"],
[data-theme="dark"] [style*="border: 1.5px solid #e74c3c"] {
  border-color: var(--error) !important;
}

/* Reviews list separator (#f0e8d8) + couleur #a02020 */
[data-theme="dark"] [style*="border-bottom:1px solid #f0e8d8"],
[data-theme="dark"] [style*="border-bottom: 1px solid #f0e8d8"],
[data-theme="dark"] [style*="border:1px solid #f0e8d8"],
[data-theme="dark"] [style*="border: 1px solid #f0e8d8"] {
  border-color: rgba(255,255,255,.08) !important;
}
[data-theme="dark"] [style*="color:#a02020"],
[data-theme="dark"] [style*="color: #a02020"] {
  color: var(--rouge-cl) !important;
}

/* Carte fidélité (gradient sans pourcentages dans script.js ligne 1637) */
[data-theme="dark"] [style*="linear-gradient(135deg,#FAF6EE,#F0EADE)"],
[data-theme="dark"] [style*="linear-gradient(135deg, #FAF6EE, #F0EADE)"] {
  background: linear-gradient(135deg, var(--blanc) 0%, var(--bg-soft) 100%) !important;
}

/* ════════════════════════════════════════════════════════════════════════════
   ESPACE CLIENT (/compte) — Inline styles hardcodés à override
   ════════════════════════════════════════════════════════════════════════════ */

/* Cards profil/adresse (renderClientInfoCard / renderClientAdresseCard)
   Texte values en color:#1a1a1a → invisible en dark */
[data-theme="dark"] [style*="color:#1a1a1a"],
[data-theme="dark"] [style*="color: #1a1a1a"] {
  color: var(--brun) !important;
}

/* Bordure séparateur warning #f5c6cb (cards profil) */
[data-theme="dark"] [style*="border-top:1px solid #f5c6cb"],
[data-theme="dark"] [style*="border-top: 1px solid #f5c6cb"] {
  border-top-color: rgba(231,76,60,.3) !important;
}

/* Bandeau "Email pas vérifié" (gradient #fff4e6 → #ffe8c2 + border #f4a827) */
[data-theme="dark"] [style*="linear-gradient(135deg,#fff4e6 0%,#ffe8c2 100%)"],
[data-theme="dark"] [style*="linear-gradient(135deg, #fff4e6 0%, #ffe8c2 100%)"] {
  background: linear-gradient(135deg, rgba(244,168,39,.15) 0%, rgba(244,168,39,.08) 100%) !important;
}
[data-theme="dark"] [style*="border:2px solid #f4a827"],
[data-theme="dark"] [style*="border: 2px solid #f4a827"] {
  border-color: var(--or) !important;
}
[data-theme="dark"] [style*="color:#a85700"],
[data-theme="dark"] [style*="color: #a85700"] {
  color: var(--or) !important;
}
[data-theme="dark"] [style*="color:#7a5500"],
[data-theme="dark"] [style*="color: #7a5500"] {
  color: rgba(244,168,39,.85) !important;
}

/* Toggle Particulier/Entreprise — fond #f4f0e8 + .ptt-label */
[data-theme="dark"] [style*="background:#f4f0e8"],
[data-theme="dark"] [style*="background: #f4f0e8"] {
  background: var(--bg-soft) !important;
}
[data-theme="dark"] .ptt-label {
  color: var(--gris-cl) !important;
}
[data-theme="dark"] .ptt-label[data-active="1"] {
  background: var(--blanc) !important;
  color: var(--or) !important;
  box-shadow: 0 1px 4px rgba(0,0,0,.3) !important;
}
/* Inscription page : .type-toggle (même pattern) */
[data-theme="dark"] .type-toggle {
  background: var(--bg-soft) !important;
}
[data-theme="dark"] .type-toggle label {
  color: var(--gris-cl) !important;
}
[data-theme="dark"] .type-toggle input:checked + span {
  background: var(--blanc) !important;
  color: var(--or) !important;
  box-shadow: 0 1px 4px rgba(0,0,0,.3) !important;
}

/* Bloc B2B (#faf6ee + border dashed #e0d6c2) */
[data-theme="dark"] [style*="background:#faf6ee"],
[data-theme="dark"] [style*="background: #faf6ee"],
[data-theme="dark"] .b2b-fields {
  background: var(--bg-soft) !important;
}
[data-theme="dark"] [style*="border:1.5px dashed #e0d6c2"],
[data-theme="dark"] [style*="border: 1.5px dashed #e0d6c2"] {
  border-color: var(--gris-xcl) !important;
}
[data-theme="dark"] .b2b-fields {
  border-color: var(--gris-xcl) !important;
}

/* Hint B2B (#8b6f50) */
[data-theme="dark"] [style*="color:#8b6f50"],
[data-theme="dark"] [style*="color: #8b6f50"],
[data-theme="dark"] .b2b-hint {
  color: var(--gris-cl) !important;
}

/* Texte "Compte Google connecté" (#1e7a40) */
[data-theme="dark"] [style*="color:#1e7a40"],
[data-theme="dark"] [style*="color: #1e7a40"] {
  color: var(--success-cl) !important;
}

/* Bouton annulation client (.btn-annul-client) — bg #fff hardcodé */
[data-theme="dark"] .btn-annul-client {
  background: var(--blanc) !important;
  color: var(--error-cl) !important;
  border-color: var(--error-cl) !important;
}
[data-theme="dark"] .btn-annul-client:hover {
  background: var(--error) !important;
  color: #FFFFFF !important;
}

/* Card livraison en cours (.background:#fff;border-left:4px solid #D4580A) */
[data-theme="dark"] [style*="background:#fff;border-left:4px solid #D4580A"],
[data-theme="dark"] [style*="background: #fff; border-left: 4px solid #D4580A"] {
  background: var(--blanc) !important;
}

/* Séparateur livraison (#f0ebe3) */
[data-theme="dark"] [style*="border-top:1px solid #f0ebe3"],
[data-theme="dark"] [style*="border-top: 1px solid #f0ebe3"] {
  border-top-color: var(--gris-xcl) !important;
}

/* Cercles timeline livraison (#e0d8d0 / #cdc4ba) */
[data-theme="dark"] [style*="background:#e0d8d0"],
[data-theme="dark"] [style*="background: #e0d8d0"] {
  background: var(--gris-xcl) !important;
}
[data-theme="dark"] [style*="border:2px solid #cdc4ba"],
[data-theme="dark"] [style*="border: 2px solid #cdc4ba"] {
  border-color: var(--gris) !important;
}

/* Texte numéros gris (#999, #aaa) */
[data-theme="dark"] [style*="color:#999"],
[data-theme="dark"] [style*="color: #999"] {
  color: var(--gris-cl) !important;
}

/* ─── Pages auth (.auth-wrap login/inscription) ─── */
/* Fond utilise var(--brun) → en dark devient cream → casse le design.
   On force fond brun foncé permanent (pattern bande sombre comme .histoire). */
[data-theme="dark"] .auth-wrap {
  background:
    radial-gradient(ellipse 70% 50% at 50% 0%, rgba(244,168,39,.12) 0%, transparent 60%),
    radial-gradient(ellipse 70% 50% at 50% 100%, rgba(160,32,32,.10) 0%, transparent 60%),
    #1B1410 !important;
}

/* ─── Header espace client (.acc-header) ─── */
/* Fond rgba(44,26,14,.97) hardcodé = brun foncé → reste OK en dark.
   Mais besoin d'ajuster les links secondaires + ghost button. */
[data-theme="dark"] .acc-header {
  background: rgba(28,18,10,.98) !important;
  border-bottom-color: rgba(244,168,39,.18) !important;
}
[data-theme="dark"] .hdr-link--ghost {
  background: rgba(255,255,255,.08) !important;
  color: rgba(255,255,255,.85) !important;
  border-color: rgba(255,255,255,.15) !important;
}
[data-theme="dark"] .hdr-link--ghost:hover {
  background: rgba(255,255,255,.16) !important;
  border-color: rgba(255,255,255,.28) !important;
}

/* ─── Cartes principales espace client ─── */
[data-theme="dark"] .acc-hero,
[data-theme="dark"] .acc-tabs-wrap {
  background: var(--blanc) !important;
  border-color: rgba(244,168,39,.18) !important;
  box-shadow: 0 4px 16px rgba(0,0,0,.35) !important;
}
[data-theme="dark"] .acc-tabs-bar {
  border-bottom-color: var(--gris-xcl) !important;
}
[data-theme="dark"] .acc-tab {
  color: var(--gris-cl) !important;
}
[data-theme="dark"] .acc-tab:hover,
[data-theme="dark"] .acc-tab.active {
  color: var(--rouge-cl) !important;
}
[data-theme="dark"] .acc-tab.active {
  border-bottom-color: var(--rouge-cl) !important;
}
[data-theme="dark"] .acc-section-hd {
  border-top-color: var(--gris-xcl) !important;
  color: var(--brun) !important;
}

/* ─── Tableau commandes espace client ─── */
[data-theme="dark"] .table-wrap {
  border-color: var(--gris-xcl) !important;
}
[data-theme="dark"] thead th {
  background: var(--bg-soft) !important;
  color: rgba(244,168,39,.85) !important;
}
[data-theme="dark"] tbody tr {
  border-bottom-color: var(--gris-xcl) !important;
}
[data-theme="dark"] tbody tr:hover td {
  background: rgba(244,168,39,.06) !important;
}
[data-theme="dark"] td {
  color: var(--brun) !important;
}

/* ─── Modal suivi colis ─── */
[data-theme="dark"] .suivi-modal {
  background: var(--blanc) !important;
}
[data-theme="dark"] .suivi-no-key {
  background: var(--bg-soft) !important;
  border-color: var(--gris-xcl) !important;
  color: var(--gris-cl) !important;
}

/* ─── Cards Google/Apple liées ─── */
[data-theme="dark"] .google-card.unlinked {
  background: var(--bg-soft) !important;
  border-color: var(--gris-xcl) !important;
}
[data-theme="dark"] .google-card.linked {
  background: rgba(39,174,96,.12) !important;
  border-color: var(--success) !important;
}

/* ─── btn-facture (bouton PDF facture) ─── */
[data-theme="dark"] .btn-facture {
  background: var(--bg-soft) !important;
  color: var(--or) !important;
  border-color: var(--or) !important;
}
[data-theme="dark"] .btn-facture:hover {
  background: var(--or) !important;
  color: #2C1A0E !important;
}

/* Skeleton loader : fond fixe → adapter au dark */
[data-theme="dark"] .skel-card {
  background: var(--blanc);  /* en dark var(--blanc) = #2A1F18 */
  box-shadow: 0 2px 10px rgba(0,0,0,.3);
}

/* Inputs panier : bg fixe #fff → adapter */
[data-theme="dark"] .panier-qte-input {
  background: var(--blanc);
  color: var(--brun);
  border-color: var(--or);
}

/* Bordures panier-item : couleur fixe #ece8e0 → adapter */
[data-theme="dark"] .panier-item {
  border-bottom-color: var(--gris-xcl);
}
[data-theme="dark"] .panier-item:hover {
  background: rgba(244,168,39,.10);
}

/* Page profil/historique commandes : sections cards */
[data-theme="dark"] .profile-section,
[data-theme="dark"] .compte-card,
[data-theme="dark"] .compte-grid > *,
[data-theme="dark"] [class*="compte-"],
[data-theme="dark"] .commande-hist-card,
[data-theme="dark"] .auth-form,
[data-theme="dark"] .auth-tabs,
[data-theme="dark"] .form-section {
  background: var(--blanc);
  color: var(--brun);
}

/* Inputs formulaires sur fond clair → adapter */
[data-theme="dark"] input[type="text"],
[data-theme="dark"] input[type="email"],
[data-theme="dark"] input[type="tel"],
[data-theme="dark"] input[type="password"],
[data-theme="dark"] input[type="number"],
[data-theme="dark"] input[type="date"],
[data-theme="dark"] input[type="time"],
[data-theme="dark"] input[type="search"],
[data-theme="dark"] textarea,
[data-theme="dark"] select {
  background: var(--bg-soft);
  color: var(--brun);
  border-color: var(--gris-xcl);
}
[data-theme="dark"] input:focus,
[data-theme="dark"] textarea:focus,
[data-theme="dark"] select:focus {
  background: var(--blanc);
  border-color: var(--or);
}
[data-theme="dark"] input::placeholder,
[data-theme="dark"] textarea::placeholder {
  color: var(--gris-cl);
}

/* Safari/Chrome autofill : empêche le fond jaune fluo illisible.
   Le shadow inset gigantesque écrase la couleur native du navigateur. */
[data-theme="dark"] input:-webkit-autofill,
[data-theme="dark"] input:-webkit-autofill:hover,
[data-theme="dark"] input:-webkit-autofill:focus,
[data-theme="dark"] textarea:-webkit-autofill,
[data-theme="dark"] select:-webkit-autofill {
  -webkit-text-fill-color: var(--brun) !important;
  -webkit-box-shadow: 0 0 0 1000px var(--bg-soft) inset !important;
  caret-color: var(--brun);
  transition: background-color 9999s ease-in-out 0s;
}

/* Boutons CTA (rouge/or/vert/bleu) : forcer texte blanc en dark.
   Sinon var(--blanc) s'inverse en sombre et le texte devient invisible. */
[data-theme="dark"] .btn-primary,
[data-theme="dark"] .btn-commander,
[data-theme="dark"] .btn-envoyer,
[data-theme="dark"] .auth-submit,
[data-theme="dark"] .filtre-chip.actif,
[data-theme="dark"] .panier-btn-commander,
[data-theme="dark"] [class*="btn-"][class*="primary"],
[data-theme="dark"] .coffret-banner.active button,
[data-theme="dark"] .panier-float,
[data-theme="dark"] .panier-float-label,
[data-theme="dark"] .btn-secondary,
[data-theme="dark"] .btn-secondary--white,
[data-theme="dark"] .btn--secondary-rouge {
  color: var(--on-accent) !important;
}

/* .btn-secondary hover : border var(--blanc) inversé sombre → forcer blanc */
[data-theme="dark"] .btn-secondary:hover {
  border-color: var(--on-accent) !important;
}

/* .nav-links a : déjà rgba(255,255,255,.88) en CSS de base mais le sélecteur
   générique [data-theme="dark"] a les force en rouge-cl. On override pour garder blanc. */
[data-theme="dark"] .nav-links a {
  color: rgba(255,255,255,.88) !important;
}
[data-theme="dark"] .nav-links a:hover,
[data-theme="dark"] .nav-links a.active {
  color: var(--or) !important;
}

/* Logo navbar : reste or doré (déjà var(--or) mais s'assurer en dark) */
[data-theme="dark"] .logo {
  color: var(--or) !important;
}

/* Bordures claires hardcodées additionnelles */
[data-theme="dark"] [style*="border:1px solid #f0e8d8"],
[data-theme="dark"] [style*="border-top:1px solid #f0e8d8"],
[data-theme="dark"] [style*="border:1px solid #f5c6cb"],
[data-theme="dark"] [style*="border-top:1px solid #f5c6cb"],
[data-theme="dark"] [style*="border:1.5px solid #e0d6c2"] {
  border-color: var(--gris-xcl) !important;
}

/* Cards d'erreur/succès générées en JS (renderClientInfoCard, promo, etc.) */
[data-theme="dark"] [style*="background:#fdf0ee"],
[data-theme="dark"] [style*="background: #fdf0ee"],
[data-theme="dark"] [style*="background:#fde8e8"] {
  background: rgba(231,76,60,.12) !important;
}
[data-theme="dark"] [style*="background:#f0fff4"],
[data-theme="dark"] [style*="background: #f0fff4"],
[data-theme="dark"] [style*="background:#e8f6e8"] {
  background: rgba(39,174,96,.12) !important;
}
[data-theme="dark"] [style*="background:#fff8e1"],
[data-theme="dark"] [style*="background:#fff4e6"] {
  background: rgba(244,168,39,.12) !important;
}

/* Couleurs de texte hardcodées (avertissements, hint, etc.) */
[data-theme="dark"] [style*="color:#7a6a5a"],
[data-theme="dark"] [style*="color: #7a6a5a"],
[data-theme="dark"] [style*="color:#5a4a3a"],
[data-theme="dark"] [style*="color:#5a4500"],
[data-theme="dark"] [style*="color:#856404"],
[data-theme="dark"] [style*="color:#1a1a1a"],
[data-theme="dark"] [style*="color:#1A1A1A"] {
  color: var(--brun) !important;
}

/* Cards produits hover : ajuster pour mieux contraster en dark */
[data-theme="dark"] .produit-card {
  border: 1px solid var(--gris-xcl);
}

/* Footer : si fond clair → bg sombre cohérent */
[data-theme="dark"] footer,
[data-theme="dark"] .footer {
  background: var(--creme-dk);
  color: var(--brun);
}

/* Bandeaux d'info contextuel (fond clair pastel) */
[data-theme="dark"] .info-banner,
[data-theme="dark"] .alert-info,
[data-theme="dark"] [style*="background:#fff3cd"],
[data-theme="dark"] [style*="background: #fff3cd"] {
  background: rgba(244,168,39,.15) !important;
  color: var(--or-cl);
}

/* Modal panier : background overlay + content */
[data-theme="dark"] .panier-overlay-content,
[data-theme="dark"] .panier-content,
[data-theme="dark"] #panier-modal,
[data-theme="dark"] .modal-content {
  background: var(--blanc);
  color: var(--brun);
}

/* Headers H1/H2/H3 dans modals/cards : utiliser var(--brun) cohérent */
[data-theme="dark"] .modal h1,
[data-theme="dark"] .modal h2,
[data-theme="dark"] .modal h3,
[data-theme="dark"] .panier-content h1,
[data-theme="dark"] .panier-content h2,
[data-theme="dark"] .panier-content h3 {
  color: var(--brun);
}

/* Cartes dashboard / panneaux admin (mais admin n'a pas data-theme="dark", donc OK) */

/* ────────────────────────────────────────────────────────────────────────────
   FIX PANIER : header + bloc recos (régression dark mode)
   ──────────────────────────────────────────────────────────────────────────── */

/* Le .panier-panel-header utilise linear-gradient(var(--brun), var(--brun-cl))
   En dark mode, var(--brun) devient clair (#F4ECE0) → header devient cream.
   On force un brun sombre fixe pour que le header reste sombre.
   On laisse aussi var(--or) pour le titre (lisible sur fond brun).  */
[data-theme="dark"] .panier-panel-header {
  background: linear-gradient(135deg, #2C1A0E 0%, #3F2817 100%) !important;
  color: #FAF6EE !important;
  border-bottom: 2px solid var(--or) !important;
}
[data-theme="dark"] .panier-panel-header h2 {
  color: var(--or) !important;
}
[data-theme="dark"] .panier-close {
  background: rgba(255,255,255,.08) !important;
  color: rgba(255,255,255,.7) !important;
}
[data-theme="dark"] .panier-close:hover {
  background: rgba(255,255,255,.18) !important;
  color: #FFFFFF !important;
}

/* .panier-panel et .panier-panel-body : fond sombre cohérent */
[data-theme="dark"] .panier-panel {
  background: var(--creme) !important;
}
[data-theme="dark"] .panier-panel-body {
  background: var(--creme) !important;
}

/* .panier-vide : carte vide doit aussi s'adapter */
[data-theme="dark"] .panier-vide {
  background: var(--blanc) !important;
  color: var(--gris-cl) !important;
  border-color: var(--gris-xcl) !important;
}

/* .panier-item : séparateurs invisibles en dark */
[data-theme="dark"] .panier-item {
  border-bottom-color: rgba(255,255,255,.08) !important;
}
[data-theme="dark"] .panier-item:hover {
  background: rgba(244,168,39,.08) !important;
}

/* Bloc recos "Souvent achetés ensemble" — inline style avec gradient cream
   Le sélecteur [style*="..."] doit matcher la chaîne exacte de l'inline style. */
[data-theme="dark"] #panier-recos {
  background: linear-gradient(135deg, var(--blanc) 0%, var(--bg-soft) 100%) !important;
  border-color: rgba(244,168,39,.25) !important;
}
[data-theme="dark"] #panier-recos > div:first-child {
  /* Le titre "🛒 Souvent achetés ensemble" — couleur orange OK, on garde */
  color: var(--or) !important;
}
[data-theme="dark"] #panier-recos-list > div {
  border-top-color: rgba(244,168,39,.18) !important;
}
/* Texte des produits dans le bloc recos (color:#2C1A0E hardcodé en dark = invisible) */
[data-theme="dark"] #panier-recos-list [style*="color:#2C1A0E"],
[data-theme="dark"] #panier-recos-list [style*="color: #2C1A0E"] {
  color: var(--brun) !important;
}
[data-theme="dark"] #panier-recos-list [style*="color:#7a6a5a"],
[data-theme="dark"] #panier-recos-list [style*="color: #7a6a5a"] {
  color: var(--gris-cl) !important;
}

/* Frame du bloc recos quand panier vide ou autre conteneur similaire */
[data-theme="dark"] [style*="linear-gradient(135deg,#FAF6EE"],
[data-theme="dark"] [style*="linear-gradient(135deg, #FAF6EE"],
[data-theme="dark"] [style*="linear-gradient(135deg,#FAF6EE 0%,#F0EADE 100%)"] {
  background: linear-gradient(135deg, var(--blanc) 0%, var(--bg-soft) 100%) !important;
}
