/* ==========================================================================
   ONECLICKZAVERI ANIMATION SUITE (ODOO 18 REPLICA)
   ========================================================================== */

/* 1. KEYFRAME DEFINITIONS */
@keyframes ozFadeInUp {
  0% {
    opacity: 0;
    transform: translateY(32px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes ozFadeInDown {
  0% {
    opacity: 0;
    transform: translateY(-32px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes ozFadeInLeft {
  0% {
    opacity: 0;
    transform: translateX(-35px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes ozFadeInRight {
  0% {
    opacity: 0;
    transform: translateX(35px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes ozZoomIn {
  0% {
    opacity: 0;
    transform: scale(0.92);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

/* Ambient Floating Animation (Hero badges, cards, orbs) */
@keyframes ozFloat {
  0%, 100% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(-10px);
  }
}

/* Glowing Aura Pulse */
@keyframes ozGlow {
  0%, 100% {
    box-shadow: 0 0 15px rgba(212, 175, 55, 0.25);
  }
  50% {
    box-shadow: 0 0 30px rgba(212, 175, 55, 0.6);
  }
}

/* Premium Metallic Shimmer Sweep */
@keyframes ozShimmer {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}

/* Live Gold/Silver Price Flash Indicator */
@keyframes ozPriceFlash {
  0% {
    background-color: transparent;
  }
  50% {
    background-color: rgba(251, 146, 60, 0.25);
  }
  100% {
    background-color: transparent;
  }
}

/* 2. SCROLL REVEAL UTILITY CLASSES (Managed by IntersectionObserver) */
.oz-reveal {
  opacity: 0;
  will-change: opacity, transform;
  transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), 
              transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}

.oz-reveal-up {
  opacity: 0;
  transform: translateY(35px);
}
.oz-reveal-up.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.oz-reveal-left {
  opacity: 0;
  transform: translateX(-40px);
}
.oz-reveal-left.is-visible {
  opacity: 1;
  transform: translateX(0);
}

.oz-reveal-right {
  opacity: 0;
  transform: translateX(40px);
}
.oz-reveal-right.is-visible {
  opacity: 1;
  transform: translateX(0);
}

.oz-reveal-scale {
  opacity: 0;
  transform: scale(0.92);
}
.oz-reveal-scale.is-visible {
  opacity: 1;
  transform: scale(1);
}

/* 3. STAGGERED DELAYS (For Card Grids & Lists) */
.oz-delay-1 { transition-delay: 0.1s !important; }
.oz-delay-2 { transition-delay: 0.2s !important; }
.oz-delay-3 { transition-delay: 0.3s !important; }
.oz-delay-4 { transition-delay: 0.4s !important; }
.oz-delay-5 { transition-delay: 0.5s !important; }

/* 4. HOVER & INTERACTION UTILITY CLASSES */
.oz-card-hover {
  transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.35s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.35s ease !important;
}
.oz-card-hover:hover {
  transform: translateY(-8px) scale(1.01) !important;
  box-shadow: 0 20px 35px -10px rgba(0, 0, 0, 0.35),
              0 0 15px rgba(212, 175, 55, 0.25) !important;
  border-color: rgba(212, 175, 55, 0.5) !important;
}

/* Button Hover Lift & Tactile Click feedback */
.oz-btn-interactive {
  transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.2s ease !important;
}
.oz-btn-interactive:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 20px rgba(212, 175, 55, 0.3);
}
.oz-btn-interactive:active {
  transform: scale(0.97) translateY(0);
}

/* 5. CONTINUOUS ANIMATIONS */
.oz-float {
  animation: ozFloat 6s ease-in-out infinite;
}

.oz-glow {
  animation: ozGlow 2.5s ease-in-out infinite;
}

.oz-shimmer-badge {
  background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.2) 50%, rgba(255,255,255,0) 100%);
  background-size: 200% 100%;
  animation: ozShimmer 3s infinite linear;
}

.oz-price-updated {
  animation: ozPriceFlash 1.2s ease-out;
}
