/** Shopify CDN: Minification failed

Line 656:46 Expected "}" to go with "{"

**/
/* ===========================================
   SHONEN SENSATIONS - ANIMATIONS AVANCÉES
   =========================================== */

/* ===========================================
   ANIMATIONS HERO COMPLEXES
   =========================================== */

/* Animation des particules d'énergie */
@keyframes energyParticle {
  0% {
    transform: translateY(100vh) translateX(0) rotate(0deg) scale(0);
    opacity: 0;
  }
  10% {
    opacity: 1;
    transform: translateY(90vh) translateX(10px) rotate(45deg) scale(1);
  }
  50% {
    opacity: 0.8;
    transform: translateY(50vh) translateX(-20px) rotate(180deg) scale(1.2);
  }
  90% {
    opacity: 0.3;
    transform: translateY(10vh) translateX(30px) rotate(315deg) scale(0.8);
  }
  100% {
    transform: translateY(-10vh) translateX(0) rotate(360deg) scale(0);
    opacity: 0;
  }
}

/* Vagues d'énergie pulsantes */
@keyframes energyPulse {
  0% {
    transform: translate(-50%, -50%) scale(0);
    opacity: 1;
    border-width: 4px;
  }
  25% {
    opacity: 0.8;
    border-width: 3px;
  }
  50% {
    opacity: 0.6;
    border-width: 2px;
  }
  75% {
    opacity: 0.3;
    border-width: 1px;
  }
  100% {
    transform: translate(-50%, -50%) scale(6);
    opacity: 0;
    border-width: 0px;
  }
}

/* Animation de typing pour le titre */
@keyframes typewriter {
  from {
    width: 0;
  }
  to {
    width: 100%;
  }
}

@keyframes blinkCursor {
  from, to {
    border-color: transparent;
  }
  50% {
    border-color: var(--primary-color);
  }
}

/* Animation de déploiement du texte héros */
@keyframes heroTextReveal {
  0% {
    opacity: 0;
    transform: translateY(100px) rotateX(-90deg);
  }
  50% {
    opacity: 0.5;
    transform: translateY(50px) rotateX(-45deg);
  }
  100% {
    opacity: 1;
    transform: translateY(0) rotateX(0deg);
  }
}

/* Animation de glitch pour le titre */
@keyframes glitch {
  0%, 100% {
    transform: translate(0);
  }
  20% {
    transform: translate(-2px, 2px);
  }
  40% {
    transform: translate(-2px, -2px);
  }
  60% {
    transform: translate(2px, 2px);
  }
  80% {
    transform: translate(2px, -2px);
  }
}

.hero-title {
  position: relative;
}

.hero-title::before,
.hero-title::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
}

.hero-title::before {
  animation: glitch 0.3s infinite;
  color: #ff0000;
  z-index: -1;
}

.hero-title::after {
  animation: glitch 0.3s infinite reverse;
  color: #00ffff;
  z-index: -2;
}

.hero-title:hover::before,
.hero-title:hover::after {
  opacity: 0.1;
}

/* ===========================================
   ANIMATIONS DE CARTES AVANCÉES
   =========================================== */

/* Animation de flip 3D pour les cartes catégories */
@keyframes cardFlip3D {
  0% {
    transform: perspective(1000px) rotateY(0deg);
  }
  50% {
    transform: perspective(1000px) rotateY(-90deg);
  }
  100% {
    transform: perspective(1000px) rotateY(-180deg);
  }
}

/* Animation de morphing pour les cartes produits */
@keyframes cardMorph {
  0% {
    border-radius: 15px;
    transform: scale(1);
  }
  50% {
    border-radius: 30px;
    transform: scale(1.05);
  }
  100% {
    border-radius: 15px;
    transform: scale(1);
  }
}

/* Animation de particules autour des cartes */
@keyframes cardParticles {
  0% {
    transform: rotate(0deg) translateX(50px) rotate(0deg);
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    transform: rotate(360deg) translateX(50px) rotate(-360deg);
    opacity: 0;
  }
}

.product-card::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 4px;
  height: 4px;
  background: var(--primary-color);
  border-radius: 50%;
  opacity: 0;
  animation: cardParticles 3s infinite linear;
  z-index: 1;
}

.product-card:nth-child(2n)::before {
  animation-delay: 1s;
}

.product-card:nth-child(3n)::before {
  animation-delay: 2s;
}

/* ===========================================
   ANIMATIONS DE SCROLL TRIGGER
   =========================================== */

/* Animation de révélation en cascade */
@keyframes cascadeReveal {
  0% {
    opacity: 0;
    transform: translateY(100px) rotateX(-90deg);
    filter: blur(10px);
  }
  50% {
    opacity: 0.7;
    transform: translateY(50px) rotateX(-45deg);
    filter: blur(5px);
  }
  100% {
    opacity: 1;
    transform: translateY(0) rotateX(0deg);
    filter: blur(0px);
  }
}

/* Animation de zoom depuis le centre */
@keyframes zoomFromCenter {
  0% {
    opacity: 0;
    transform: scale(0) rotate(-180deg);
  }
  50% {
    opacity: 0.7;
    transform: scale(0.5) rotate(-90deg);
  }
  100% {
    opacity: 1;
    transform: scale(1) rotate(0deg);
  }
}

/* Animation de glissement depuis les côtés */
@keyframes slideFromSides {
  0% {
    opacity: 0;
    transform: translateX(-100px) rotateY(-90deg);
  }
  100% {
    opacity: 1;
    transform: translateX(0) rotateY(0deg);
  }
}

.animate-card:nth-child(even) {
  animation: slideFromSides 0.8s ease forwards;
}

.animate-card:nth-child(odd) {
  animation: cascadeReveal 0.8s ease forwards;
}

/* ===========================================
   ANIMATIONS DE BOUTONS AVANCÉES
   =========================================== */

/* Animation de charge d'énergie */
@keyframes energyCharge {
  0% {
    box-shadow: 0 0 5px var(--primary-color);
  }
  50% {
    box-shadow: 0 0 20px var(--primary-color), 0 0 30px var(--primary-light);
  }
  100% {
    box-shadow: 0 0 40px var(--primary-color), 0 0 60px var(--primary-light), 0 0 80px var(--secondary-color);
  }
}

/* Animation de ripple améliorée */
@keyframes advancedRipple {
  0% {
    transform: scale(0);
    opacity: 1;
  }
  100% {
    transform: scale(4);
    opacity: 0;
  }
}

/* Animation de morphing de bouton */
@keyframes buttonMorph {
  0% {
    border-radius: 50px;
    transform: scale(1);
  }
  50% {
    border-radius: 10px;
    transform: scale(1.1);
  }
  100% {
    border-radius: 50px;
    transform: scale(1);
  }
}

.cta-button:hover {
  animation: energyCharge 0.5s ease forwards;
}

.cta-button:active {
  animation: buttonMorph 0.3s ease;
}

/* ===========================================
   ANIMATIONS DE NAVIGATION
   =========================================== */

/* Animation de dropdown sophistiqué */
@keyframes dropdownSlide {
  0% {
    opacity: 0;
    transform: translateY(-20px) rotateX(-90deg);
    max-height: 0;
  }
  50% {
    opacity: 0.7;
    transform: translateY(-10px) rotateX(-45deg);
  }
  100% {
    opacity: 1;
    transform: translateY(0) rotateX(0deg);
    max-height: 300px;
  }
}

/* Animation de navigation sticky */
@keyframes stickyReveal {
  from {
    transform: translateY(-100%);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

.header.scrolled {
  animation: stickyReveal 0.3s ease forwards;
}

/* Animation de menu hamburger */
@keyframes hamburgerToX {
  0% {
    transform: rotate(0deg);
  }
  50% {
    transform: rotate(45deg) scale(1.2);
  }
  100% {
    transform: rotate(45deg);
  }
}

.mobile-menu-toggle.active .hamburger-line:nth-child(1) {
  animation: hamburgerToX 0.3s ease forwards;
  transform-origin: center;
}

.mobile-menu-toggle.active .hamburger-line:nth-child(2) {
  opacity: 0;
  transform: scale(0);
}

.mobile-menu-toggle.active .hamburger-line:nth-child(3) {
  animation: hamburgerToX 0.3s ease forwards;
  transform: rotate(-45deg);
}

/* ===========================================
   ANIMATIONS DE CHARGEMENT COMPLEXES
   =========================================== */

/* Spinner de chargement anime-style */
@keyframes animeSpinner {
  0% {
    transform: rotate(0deg);
    border-radius: 50%;
  }
  25% {
    transform: rotate(90deg);
    border-radius: 0%;
  }
  50% {
    transform: rotate(180deg);
    border-radius: 50%;
  }
  75% {
    transform: rotate(270deg);
    border-radius: 0%;
  }
  100% {
    transform: rotate(360deg);
    border-radius: 50%;
  }
}

/* Animation de points de chargement */
@keyframes dotPulse {
  0%, 20% {
    color: var(--primary-color);
    transform: scale(1);
  }
  50% {
    color: var(--primary-light);
    transform: scale(1.5);
  }
  80%, 100% {
    color: var(--primary-color);
    transform: scale(1);
  }
}

.loading-dots::after {
  content: '...';
  animation: dotPulse 1.5s infinite;
}

/* Animation de vague de chargement */
@keyframes waveLoading {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}

.loading-wave {
  position: relative;
  overflow: hidden;
}

.loading-wave::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 107, 53, 0.3), transparent);
  animation: waveLoading 1.5s infinite;
}

/* ===========================================
   ANIMATIONS DE NOTIFICATION
   =========================================== */

/* Animation de notification toast */
@keyframes toastSlideIn {
  0% {
    transform: translateX(100%) rotateZ(10deg);
    opacity: 0;
  }
  50% {
    transform: translateX(-10px) rotateZ(-5deg);
    opacity: 0.8;
  }
  100% {
    transform: translateX(0) rotateZ(0deg);
    opacity: 1;
  }
}

@keyframes toastBounce {
  0%, 20%, 50%, 80%, 100% {
    transform: translateY(0);
  }
  40% {
    transform: translateY(-10px);
  }
  60% {
    transform: translateY(-5px);
  }
}

.notification {
  animation: toastSlideIn 0.5s ease, toastBounce 0.6s ease 0.5s;
}

/* ===========================================
   ANIMATIONS DE MODAL ET OVERLAY
   =========================================== */

/* Animation de modal avec perspective */
@keyframes modalPerspective {
  0% {
    opacity: 0;
    transform: perspective(1000px) rotateX(-90deg);
  }
  100% {
    opacity: 1;
    transform: perspective(1000px) rotateX(0deg);
  }
}

/* Animation de backdrop blur */
@keyframes backdropBlur {
  0% {
    backdrop-filter: blur(0px);
    background: rgba(0, 0, 0, 0);
  }
  100% {
    backdrop-filter: blur(10px);
    background: rgba(0, 0, 0, 0.8);
  }
}

.modal-overlay {
  animation: backdropBlur 0.3s ease forwards;
}

.modal-content {
  animation: modalPerspective 0.5s ease forwards;
}

/* ===========================================
   ANIMATIONS DE PANIER
   =========================================== */

/* Animation d'ajout au panier */
@keyframes addToCartPulse {
  0% {
    transform: scale(1);
    background: linear-gradient(45deg, var(--primary-color), var(--primary-light));
  }
  50% {
    transform: scale(1.1);
    background: linear-gradient(45deg, var(--primary-light), var(--secondary-color));
  }
  100% {
    transform: scale(1);
    background: linear-gradient(45deg, #4caf50, #66bb6a);
  }
}

.add-to-cart-btn.success {
  animation: addToCartPulse 0.6s ease;
}

/* Animation de compteur de panier */
@keyframes cartCountBounce {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.5) rotate(10deg);
  }
  100% {
    transform: scale(1) rotate(0deg);
  }
}

.cart-count.updated {
  animation: cartCountBounce 0.4s ease;
}

/* ===========================================
   ANIMATIONS DE RECHERCHE
   =========================================== */

/* Animation de barre de recherche */
@keyframes searchExpand {
  0% {
    width: 40px;
    background: transparent;
  }
  100% {
    width: 300px;
    background: rgba(255, 255, 255, 0.1);
  }
}

/* Animation de suggestions */
@keyframes suggestionSlide {
  0% {
    opacity: 0;
    transform: translateY(10px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.search-suggestions .search-tag {
  animation: suggestionSlide 0.3s ease forwards;
}

.search-suggestions .search-tag:nth-child(2) { animation-delay: 0.1s; }
.search-suggestions .search-tag:nth-child(3) { animation-delay: 0.2s; }
.search-suggestions .search-tag:nth-child(4) { animation-delay: 0.3s; }
.search-suggestions .search-tag:nth-child(5) { animation-delay: 0.4s; }

/* ===========================================
   ANIMATIONS DE SCROLL
   =========================================== */

/* Animation de scroll smooth amélioré */
@keyframes smoothScrollIndicator {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  50% {
    opacity: 0.5;
    transform: translateY(10px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.scroll-indicator {
  animation: smoothScrollIndicator 2s infinite ease-in-out;
}

/* Animation de parallax amélioré */
@keyframes parallaxFloat {
  0%, 100% {
    transform: translateY(0px) rotate(0deg);
  }
  33% {
    transform: translateY(-10px) rotate(1deg);
  }
  66% {
    transform: translateY(-5px) rotate(-1deg);