/* ═══════════════════════════════════════════════════════════════════
   🏷️  HEADER-PREMIUM.CSS — Header / navbar site-wide premium (v1)
   ═══════════════════════════════════════════════════════════════════
   - Fixe le bug de gap au-dessus / en-dessous du header lié à
     .hero { margin-top: 70px } hérité d'une époque où le header était
     position: fixed (retour en position: sticky, gap éliminé).
   - Upgrade de qualité perçue type Nike / Zara / ASOS, adapté à l'ADN
     Tropical Urban : glass backdrop, underline animé sur la nav, icônes
     cercle-hover, cart badge affiné, transitions cohérentes.
   - Palette stricte style.css.
   - Zéro modification HTML / JS / logique (cart-icon click handler,
     burger dropdown, dark-mode toggle, recaptcha, etc. préservés).
   ═══════════════════════════════════════════════════════════════════ */

/* ═════════════════════════════════════════════════════════════════
   1 · GAP FIX — header sticky + annulation du margin-top hérité
   ═════════════════════════════════════════════════════════════════ */
header {
  /* position: sticky = équivalent fixed mais PARTICIPE au flow →
     aucun besoin de padding-top sur body ni de margin-top sur .hero. */
  position: sticky !important;
  top: 0;
  left: 0;
  right: 0;
  z-index: 4000;
  /* Surface légèrement translucide (glass) — rendu desktop premium */
  background: rgba(255, 255, 255, 0.82);
  -webkit-backdrop-filter: saturate(1.35) blur(16px);
  backdrop-filter: saturate(1.35) blur(16px);
  /* Remplace l'ancienne box-shadow large par une bordure fine + hair-shadow */
  box-shadow:
    0 1px 0 rgba(44, 62, 80, 0.06),
    0 6px 24px -18px rgba(44, 62, 80, 0.12);
  border-bottom: 1px solid rgba(44, 62, 80, 0.06);
  transition: background var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              box-shadow var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              border-color var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1));
}
/* Alias html.dark + data-tu-theme="dark" : appliqués SYNCHRONEMENT par le
   bootstrap <head> → header peint en dark dès le premier paint, avant que
   body.dark-mode soit posé par main.js au DOMContentLoaded. Supprime le
   flash blanc causé par la transition bg animée de light vers dark. */
body.dark-mode header,
html.dark header,
html[data-tu-theme="dark"] header {
  background: rgba(10, 10, 10, 0.78) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.06),
    0 6px 24px -16px rgba(0, 0, 0, 0.5);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

/* Annule l'ancien compensateur `.hero { margin-top: 70px }` qui créait
   le gap visible — le header sticky prend sa place dans le flow. */
.hero {
  margin-top: 0 !important;
}

/* ═════════════════════════════════════════════════════════════════
   2 · NAVBAR — alignement & densité premium
   ═════════════════════════════════════════════════════════════════ */
header .navbar {
  padding: 0 !important;
}
header .nav-container {
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
  padding: clamp(0.75rem, 1.4vw, 1.05rem) clamp(1rem, 2.5vw, 2rem) !important;
  max-width: 1400px !important;
  margin: 0 auto !important;
  gap: 1.5rem;
  min-height: 64px;
}

/* ═════════════════════════════════════════════════════════════════
   3 · LOGO — conservé (déjà gradient Pacifico signature)
   On ne touche que le sizing responsive pour la densité.
   ═════════════════════════════════════════════════════════════════ */
header .logo {
  font-size: clamp(1.3rem, 1.9vw, 1.65rem) !important;
  gap: 0.65rem !important;
  align-items: center;
  flex-shrink: 0;
}
header .logo img {
  width: 38px !important;
  height: 38px !important;
  transition: transform var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1));
}
header .logo:hover img {
  transform: rotate(-3deg);
}

/* ═════════════════════════════════════════════════════════════════
   4 · NAV LINKS — minimalisme + underline animé
   ═════════════════════════════════════════════════════════════════ */
header .nav-links {
  display: flex !important;
  align-items: center;
  gap: clamp(0.4rem, 1.2vw, 1.2rem) !important;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none;
}
header .nav-links li {
  list-style: none;
}

header .nav-links a {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding: 0.55rem 0.45rem !important;
  color: var(--dark-color, #2C3E50) !important;
  font-weight: 600 !important;
  font-size: 0.92rem !important;
  letter-spacing: 0.01em !important;
  /* Réinitialise le background-chip hérité pour laisser place à
     l'underline animé premium. */
  background: transparent !important;
  border-radius: 0 !important;
  text-decoration: none !important;
  transition: color var(--tu-dur-fast, 140ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1));
}
body.dark-mode header .nav-links a {
  color: var(--text-primary, #FFFFFF) !important;
}

/* Underline animé (scaleX sous le lien) — signature Nike/Zara */
header .nav-links a::after {
  content: '';
  position: absolute;
  left: 0.45rem;
  right: 0.45rem;
  bottom: 2px;
  height: 2px;
  background: var(--primary-color, #2ECC71);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 280ms cubic-bezier(0.22, 0.61, 0.36, 1);
  border-radius: 1px;
  pointer-events: none;
}
header .nav-links a:hover {
  color: var(--primary-color, #2ECC71) !important;
}
header .nav-links a:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}
/* État actif : underline visible en gradient signature */
header .nav-links a.active {
  color: var(--primary-color, #2ECC71) !important;
}
header .nav-links a.active::after {
  transform: scaleX(1);
  background: linear-gradient(90deg, #2ECC71 0%, #27AE60 50%, #D4A82E 100%);
  height: 2px;
}

body.dark-mode header .nav-links a:hover,
body.dark-mode header .nav-links a.active {
  color: #3DDC84 !important;
}
body.dark-mode header .nav-links a.active::after {
  background: linear-gradient(90deg, #3DDC84 0%, #27AE60 50%, #FFB776 100%);
}

/* ═════════════════════════════════════════════════════════════════
   5 · NAV ACTIONS — icônes premium
   ═════════════════════════════════════════════════════════════════ */
header .nav-actions {
  display: flex !important;
  align-items: center !important;
  gap: 0.35rem !important;
  flex-shrink: 0;
}

header .nav-icon {
  position: relative;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 40px !important;
  height: 40px !important;
  border-radius: 50% !important;
  color: var(--dark-color, #2C3E50) !important;
  font-size: 1.05rem !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  cursor: pointer;
  transition: background var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              color var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              border-color var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1));
  text-decoration: none !important;
}
body.dark-mode header .nav-icon {
  color: var(--text-primary, #FFFFFF) !important;
}
header .nav-icon:hover {
  background: rgba(46, 204, 113, 0.10) !important;
  color: var(--primary-color, #2ECC71) !important;
  border-color: rgba(46, 204, 113, 0.25) !important;
}
body.dark-mode header .nav-icon:hover {
  background: rgba(46, 204, 113, 0.14) !important;
  color: #3DDC84 !important;
}

/* Avatar image injectée dynamiquement dans .nav-icon#nav-account-link */
header .nav-icon .nav-avatar-img {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid rgba(46, 204, 113, 0.35);
}

/* ─── Cart icon + badge ─── */
header .cart-icon {
  position: relative;
  width: 42px !important;
  height: 42px !important;
  border-radius: 50% !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  color: var(--dark-color, #2C3E50) !important;
  font-size: 1.05rem !important;
  padding: 0 !important;
  cursor: pointer;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: background var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              color var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              border-color var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              transform var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1));
}
body.dark-mode header .cart-icon {
  color: var(--text-primary, #FFFFFF) !important;
}
header .cart-icon:hover {
  background: rgba(46, 204, 113, 0.10) !important;
  color: var(--primary-color, #2ECC71) !important;
  border-color: rgba(46, 204, 113, 0.25) !important;
  transform: none !important;
}
body.dark-mode header .cart-icon:hover {
  background: rgba(46, 204, 113, 0.14) !important;
  color: #3DDC84 !important;
}

/* Cart badge : pilule 18px, ring subtle, typo raffinée */
header .cart-icon .cart-badge {
  position: absolute !important;
  top: 3px !important;
  right: 1px !important;
  min-width: 18px !important;
  height: 18px !important;
  padding: 0 5px !important;
  border-radius: 999px !important;
  background: linear-gradient(135deg, #E74C3C 0%, #C0392B 100%) !important;
  color: #FFFFFF !important;
  font-size: 0.68rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.02em !important;
  line-height: 18px !important;
  text-align: center;
  box-shadow:
    0 0 0 2px rgba(255, 255, 255, 0.9),
    0 4px 10px -3px rgba(231, 76, 60, 0.5) !important;
  transition: transform var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1));
}
body.dark-mode header .cart-icon .cart-badge {
  box-shadow:
    0 0 0 2px rgba(10, 10, 10, 0.9),
    0 4px 10px -3px rgba(231, 76, 60, 0.6) !important;
}
header .cart-icon:hover .cart-badge {
  transform: scale(1.08);
}

/* ─── Dark mode toggle ─── */
header .dark-mode-btn {
  width: 40px !important;
  height: 40px !important;
  border-radius: 50% !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  color: var(--dark-color, #2C3E50) !important;
  font-size: 1rem !important;
  cursor: pointer;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: background var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              color var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              border-color var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              transform var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1));
}
body.dark-mode header .dark-mode-btn {
  color: #F39C12 !important; /* accent amber subtle — signature dark mode */
}
header .dark-mode-btn:hover {
  background: rgba(212, 168, 46, 0.12) !important;
  border-color: rgba(212, 168, 46, 0.25) !important;
  color: var(--secondary-color, #D4A82E) !important;
  transform: rotate(-12deg);
}
body.dark-mode header .dark-mode-btn:hover {
  background: rgba(243, 156, 18, 0.14) !important;
  border-color: rgba(243, 156, 18, 0.3) !important;
  color: #F5B23D !important;
  transform: rotate(12deg);
}

/* ─── Burger dropdown ─── */
header .burger-menu-btn {
  width: 40px !important;
  height: 40px !important;
  border-radius: 50% !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  color: var(--dark-color, #2C3E50) !important;
  font-size: 1rem !important;
  cursor: pointer;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: background var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              color var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1)),
              border-color var(--tu-dur-base, 220ms) var(--tu-ease-out, cubic-bezier(0.22, 0.61, 0.36, 1));
}
body.dark-mode header .burger-menu-btn {
  color: var(--text-primary, #FFFFFF) !important;
}
header .burger-menu-btn:hover {
  background: rgba(46, 204, 113, 0.10) !important;
  color: var(--primary-color, #2ECC71) !important;
  border-color: rgba(46, 204, 113, 0.25) !important;
}
body.dark-mode header .burger-menu-btn:hover {
  background: rgba(46, 204, 113, 0.14) !important;
  color: #3DDC84 !important;
}

/* Dropdown content — refinement léger (structure intacte) */
header .dropdown-burger {
  position: relative;
}
header .dropdown-content {
  background: var(--white, #FFFFFF);
  border: 1px solid rgba(44, 62, 80, 0.08);
  border-radius: 16px !important;
  box-shadow:
    0 20px 40px -20px rgba(44, 62, 80, 0.25),
    0 2px 6px -2px rgba(44, 62, 80, 0.1) !important;
  backdrop-filter: blur(10px) saturate(1.2);
  -webkit-backdrop-filter: blur(10px) saturate(1.2);
  padding: 1rem 0.8rem !important;
  margin-top: 0.4rem;
}
body.dark-mode header .dropdown-content {
  background: rgba(20, 20, 20, 0.95) !important;
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow:
    0 24px 48px -18px rgba(0, 0, 0, 0.7),
    0 3px 8px -2px rgba(0, 0, 0, 0.4) !important;
}
header .dropdown-section h4 {
  font-size: 0.7rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: var(--primary-color, #2ECC71) !important;
  margin: 0 0 0.5rem 0.6rem !important;
  opacity: 0.9;
}
body.dark-mode header .dropdown-section h4 {
  color: #3DDC84 !important;
}
header .dropdown-section a {
  display: block;
  padding: 0.55rem 0.6rem !important;
  color: var(--dark-color, #2C3E50) !important;
  text-decoration: none !important;
  font-size: 0.88rem !important;
  border-radius: 8px !important;
  transition: background 200ms ease, color 200ms ease;
}
body.dark-mode header .dropdown-section a {
  color: var(--text-primary, #FFFFFF) !important;
}
header .dropdown-section a:hover {
  background: rgba(46, 204, 113, 0.08) !important;
  color: var(--primary-color, #2ECC71) !important;
}
body.dark-mode header .dropdown-section a:hover {
  background: rgba(46, 204, 113, 0.12) !important;
  color: #3DDC84 !important;
}

/* ═════════════════════════════════════════════════════════════════
   6 · SCROLLED STATE (sans JS) — sticky déjà bien géré par le navigateur
   On n'ajoute rien de spécifique : le glass-blur ci-dessus donne déjà
   un rendu premium en sticky.
   ═════════════════════════════════════════════════════════════════ */

/* ═════════════════════════════════════════════════════════════════
   7 · RESPONSIVE
   ═════════════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {
  header .nav-links {
    /* La nav principale est typiquement masquée sur tablette — géré par
       responsive-premium.css / style.css. On ne force rien ici. */
    gap: 0.3rem !important;
  }
  header .nav-links a {
    font-size: 0.86rem !important;
  }
}
@media (max-width: 768px) {
  header .nav-container {
    padding: clamp(0.6rem, 1.4vw, 0.9rem) clamp(0.85rem, 2.5vw, 1.5rem) !important;
    gap: 0.6rem;
  }
  header .nav-actions {
    gap: 0.1rem !important;
  }
  header .nav-icon,
  header .cart-icon,
  header .dark-mode-btn,
  header .burger-menu-btn {
    width: 38px !important;
    height: 38px !important;
    font-size: 0.95rem !important;
  }
  header .dropdown-content {
    margin-top: 0.3rem;
  }
}
@media (max-width: 480px) {
  header .nav-container { gap: 0.4rem; }
  header .logo { font-size: 1.2rem !important; }
  header .logo img { width: 32px !important; height: 32px !important; }
  header .nav-icon,
  header .cart-icon,
  header .dark-mode-btn,
  header .burger-menu-btn {
    width: 36px !important;
    height: 36px !important;
  }
  /* Sur très petit écran, on masque l'icône recherche (accessible via burger) */
  header .nav-actions > a[href="recherche.html"] { display: none; }
}

/* ═════════════════════════════════════════════════════════════════
   8 · REDUCED MOTION
   ═════════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
  header,
  header .nav-links a,
  header .nav-links a::after,
  header .nav-icon,
  header .cart-icon,
  header .dark-mode-btn,
  header .burger-menu-btn,
  header .logo img {
    transition: none !important;
  }
  header .dark-mode-btn:hover { transform: none !important; }
  header .logo:hover img { transform: none !important; }
  header .cart-icon:hover .cart-badge { transform: none !important; }
}

/* ═════════════════════════════════════════════════════════════════
   9 · NOTES DE SÉCURITÉ / COMPATIBILITÉ
   - position: sticky fonctionne sur tous les navigateurs modernes.
     Si le parent direct du header a un overflow:hidden/auto, le sticky
     est limité à sa hauteur. Comme le header est child direct du body,
     et que body n'a pas d'overflow spécial, ça fonctionne partout.
   - backdrop-filter peut ne pas être supporté sur certains navigateurs
     (ex. Firefox < 103 sans flag). Le background rgba reste visible,
     donc fallback propre sans blur — acceptable.
   ═════════════════════════════════════════════════════════════════ */

/* ═════════════════════════════════════════════════════════════════
   10 · MOBILE-ONLY HEADER REBALANCE
   - Masque le toggle dark mode sur mobile (gain de place, le réglage
     reste accessible via le menu burger / paramètres compte).
   - Re-cale les icônes restantes (search · account · cart · burger)
     avec un gap respirant et un padding-right safe-area iOS.
   - Aucun impact desktop : tout est scopé ≤ 768px.
   - Aucun impact JS : seul l'affichage est masqué (display:none),
     le bouton existe toujours dans le DOM, son listener fonctionne et
     peut être réactivé à tout moment en retirant la règle.
   ═════════════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  /* Masque le toggle dark mode (cible ID + classe pour couvrir toutes
     les variantes du markup site-wide : login.html, signup.html, etc.). */
  header #dark-mode-toggle,
  header .dark-mode-btn {
    display: none !important;
  }

  /* Rebalance des icônes restantes : un gap visiblement respirant
     remplace le 0.1rem trop serré du bloc 7. La main droite reçoit un
     padding safe-area pour iOS (encoche / coin arrondi) tout en gardant
     le burger éloigné du bord. */
  header .nav-actions {
    gap: 0.4rem !important;
    padding-inline-end: max(0.15rem, env(safe-area-inset-right));
  }

  /* Le burger garde 38×38 (hérité du bloc 7) et reste cliquable plein
     conteneur. On lui donne juste un micro coussin à gauche pour qu'il
     ne touche jamais le panier en cas de zoom système large. */
  header .dropdown-burger {
    margin-left: 2px;
  }
}

@media (max-width: 480px) {
  /* Sur très petits écrans, on garde un gap honorable sans casser
     la tenue de la barre (search déjà masquée par le bloc 7). */
  header .nav-actions {
    gap: 0.35rem !important;
  }
}
