/* =========================================================
   GLOBALE ESTHÉTIQUE — COUCHE ANIMATIONS PREMIUM V2
   Fichier additif : ne modifie aucune règle existante, ajoute
   uniquement les micro-interactions demandées qui manquaient
   (transitions de page, galerie swipe, retour en haut, etc.)
   Toujours transform/opacity, jamais width/height/top/left.
========================================================= */

/* ---------- transition de page (tap produit -> fiche) ---------- */
body{
  transition: opacity .22s cubic-bezier(.4,0,.2,1), transform .22s cubic-bezier(.4,0,.2,1);
}
body.ge-leaving{
  opacity: 0;
  transform: translateY(10px) scale(.99);
}

/* la carte tapée se comprime légèrement avant que la page ne parte */
.product-card.ge-card-leaving{
  transition: transform .18s cubic-bezier(.4,0,.2,1), opacity .18s ease;
  transform: scale(.97);
}
.product-card.ge-card-leaving .product-media img{
  transition: transform .2s ease;
  transform: scale(1.04);
}

/* ---------- retour en haut ---------- */
.ge-back-to-top{
  position: fixed;
  right: 18px;
  bottom: 90px;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: none;
  background: #17151A;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 60;
  opacity: 0;
  transform: translateY(14px) scale(.9);
  pointer-events: none;
  transition: opacity .3s cubic-bezier(.16,1,.3,1), transform .3s cubic-bezier(.16,1,.3,1), background .2s ease;
  box-shadow: 0 6px 18px rgba(23,21,26,.22);
}
.ge-back-to-top.ge-visible{
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: all;
}
.ge-back-to-top:hover{ background:#E62E70; }
.ge-back-to-top:active{ transform: scale(.9); }
@media (min-width: 861px){
  .ge-back-to-top{ bottom: 32px; }
}

/* ---------- whatsapp : entrée douce ---------- */
.ge-whatsapp-enter{
  animation: geWhatsappIn .5s cubic-bezier(.34,1.4,.64,1) both;
  animation-delay: .35s;
}
@keyframes geWhatsappIn{
  from{ opacity: 0; transform: translateY(16px) scale(.85); }
  to{ opacity: 1; transform: translateY(0) scale(1); }
}

/* ---------- footer : colonnes en cascade ---------- */
.site-footer.reveal .ge-footer-col-anim{
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .6s cubic-bezier(.16,1,.3,1), transform .6s cubic-bezier(.16,1,.3,1);
  transition-delay: calc(var(--ge-col-i, 0) * 90ms);
}
.site-footer.reveal.visible .ge-footer-col-anim{
  opacity: 1;
  transform: translateY(0);
}

/* ---------- panier : retour visuel "ajouté" ---------- */
.add-cart-btn{ position: relative; }
.add-cart-btn.ge-just-added svg{
  animation: geCheckPulse .5s cubic-bezier(.34,1.56,.64,1);
}
@keyframes geCheckPulse{
  0%{ transform: scale(1); }
  45%{ transform: scale(.75); opacity: .6; }
  100%{ transform: scale(1); opacity: 1; }
}
#btnAjouterPanier.ge-just-added{ background:#1c8a4c !important; }
#btnAjouterPanier.ge-just-added #btnAjouterTexte::before{ content:"✓ "; }

/* ---------- menu mobile : stagger des liens à l'ouverture ---------- */
.mobile-drawer .drawer-list li{
  opacity: 0;
  transform: translateX(14px);
  transition: opacity .35s ease, transform .35s cubic-bezier(.16,1,.3,1);
}
.mobile-drawer.open .drawer-list li{ opacity: 1; transform: translateX(0); }
.mobile-drawer.open .drawer-list li:nth-child(1){ transition-delay: .05s; }
.mobile-drawer.open .drawer-list li:nth-child(2){ transition-delay: .09s; }
.mobile-drawer.open .drawer-list li:nth-child(3){ transition-delay: .13s; }
.mobile-drawer.open .drawer-list li:nth-child(4){ transition-delay: .17s; }
.mobile-drawer.open .drawer-list li:nth-child(5){ transition-delay: .21s; }
.mobile-drawer.open .drawer-list li:nth-child(6){ transition-delay: .25s; }
.mobile-drawer.open .drawer-list li:nth-child(n+7){ transition-delay: .28s; }

/* ---------- galerie produit : slide fluide entre les photos ---------- */
#ficheImgConteneur{ overflow: hidden; }
#imgPrincipale{
  transition: opacity .28s cubic-bezier(.4,0,.2,1), transform .28s cubic-bezier(.4,0,.2,1);
}
#imgPrincipale.ge-gallery-out-left{ opacity: 0; transform: translateX(-22px) scale(.97); }
#imgPrincipale.ge-gallery-out-right{ opacity: 0; transform: translateX(22px) scale(.97); }
#imgPrincipale.ge-gallery-in{ opacity: 1; transform: translateX(0) scale(1); }

/* léger effet tactile lors du swipe */
.fiche-img-principale.ge-touch-active{ cursor: grabbing; }

/* ---------- zoom image produit (tap) ---------- */
.fiche-lightbox img{
  transition: transform .35s cubic-bezier(.34,1.1,.64,1);
  transform: scale(1);
}
.fiche-lightbox img.ge-zoomed{ transform: scale(1.55); cursor: zoom-out; }
.fiche-lightbox{
  transition: opacity .25s ease;
}
.fiche-lightbox.ge-closing{ opacity: 0; }

/* ---------- boutons de contenu / filtres : apparition légère ---------- */
.ge-filter-fade{
  animation: geFilterFade .35s cubic-bezier(.16,1,.3,1) both;
}
@keyframes geFilterFade{
  from{ opacity: 0; transform: translateY(10px); }
  to{ opacity: 1; transform: translateY(0); }
}

/* ---------- section "Meilleures ventes" : cascade du header ---------- */
.ge-bestsellers-label.reveal{
  transform: translateY(15px);
  transition: opacity .5s ease, transform .5s cubic-bezier(.22,1,.36,1);
}
.ge-bestsellers-title.reveal{
  transform: translateY(25px);
  transition: opacity .55s ease, transform .55s cubic-bezier(.22,1,.36,1);
  transition-delay: .1s;
}
.ge-bestsellers-seeall.reveal{
  transform: translateX(14px);
  transition: opacity .5s ease, transform .5s cubic-bezier(.22,1,.36,1);
  transition-delay: .18s;
}
.ge-bestsellers-label.reveal.visible,
.ge-bestsellers-title.reveal.visible{ transform: translateY(0); }
.ge-bestsellers-seeall.reveal.visible{ transform: translateX(0); }

/* cartes produits de la sélection : entrée dédiée (animation, pas de
   transition, pour ne jamais entrer en conflit avec le tap rapide) */
.ge-bestsellers-grid .product-card.reveal{
  opacity: 0;
  transform: translateY(45px) scale(.95);
  transition: none;
}
.ge-bestsellers-grid .product-card.reveal.visible{
  animation: geBestsellerIn .68s cubic-bezier(.22,1,.36,1) forwards;
}
@keyframes geBestsellerIn{
  to{ opacity: 1; transform: translateY(0) scale(1); }
}
/* tap net et rapide, sans dérive ni rebond excessif */
.ge-bestsellers-grid .product-card{
  transition: transform .16s ease;
}
.ge-bestsellers-grid .product-card:active{
  transform: scale(.97);
}

/* bouton "Choisir la contenance" : feedback tactile */
.btn-secondaire{
  transition: transform .18s ease, background .2s ease, color .2s ease;
}
.btn-secondaire:active{ transform: scale(.97); }

@media (prefers-reduced-motion: reduce){
  .ge-bestsellers-label.reveal,
  .ge-bestsellers-title.reveal,
  .ge-bestsellers-seeall.reveal,
  .ge-bestsellers-grid .product-card.reveal,
  .btn-secondaire{
    transition: none !important;
    animation: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}

/* bannière "image seule" : le visuel prend toute la largeur */
.hero-slide--image-seule .hero-visual{
  flex:1 1 100%;
  max-width:100%;
}
@media (prefers-reduced-motion: reduce){
  .ge-whatsapp-enter,
  .site-footer.reveal .ge-footer-col-anim,
  .mobile-drawer .drawer-list li,
  #imgPrincipale,
  .fiche-lightbox img,
  body,
  .product-card.ge-card-leaving,
  .product-card.ge-card-leaving .product-media img{
    animation: none !important;
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
  .ge-back-to-top{ transition: opacity .15s ease !important; transform: none !important; }
}
