/* =========================================
   ANIMATIONS & KEYFRAMES
   ========================================= */

/* Blob pulse */
@keyframes blobPulse {
  0%, 100% { transform: scale(1) translate(0, 0); }
  33%       { transform: scale(1.1) translate(2%, -3%); }
  66%       { transform: scale(.95) translate(-2%, 2%); }
}

/* Ticker */
@keyframes ticker {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* Scroll mouse */
@keyframes scrollDown {
  0%   { opacity: 1; transform: translateX(-50%) translateY(0); }
  100% { opacity: 0; transform: translateX(-50%) translateY(14px); }
}

/* Pulse dot */
@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: .5; transform: scale(1.4); }
}

/* Float */
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-12px); }
}

/* Fade In Up */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Fade In */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Scale In */
@keyframes scaleIn {
  from { opacity: 0; transform: scale(.92); }
  to   { opacity: 1; transform: scale(1); }
}

/* Shimmer */
@keyframes shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

/* =========================================
   SCROLL-TRIGGERED ANIMATIONS
   (JS adds .is-visible class)
   ========================================= */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity .7s cubic-bezier(.4,0,.2,1), transform .7s cubic-bezier(.4,0,.2,1);
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.reveal-delay-1 { transition-delay: .1s; }
.reveal-delay-2 { transition-delay: .2s; }
.reveal-delay-3 { transition-delay: .3s; }
.reveal-delay-4 { transition-delay: .4s; }
.reveal-delay-5 { transition-delay: .5s; }

/* Stagger children */
.stagger-children > * {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .6s cubic-bezier(.4,0,.2,1), transform .6s cubic-bezier(.4,0,.2,1);
}
.stagger-children.is-visible > *:nth-child(1)  { transition-delay: 0s;    opacity: 1; transform: none; }
.stagger-children.is-visible > *:nth-child(2)  { transition-delay: .08s;  opacity: 1; transform: none; }
.stagger-children.is-visible > *:nth-child(3)  { transition-delay: .16s;  opacity: 1; transform: none; }
.stagger-children.is-visible > *:nth-child(4)  { transition-delay: .24s;  opacity: 1; transform: none; }
.stagger-children.is-visible > *:nth-child(5)  { transition-delay: .32s;  opacity: 1; transform: none; }
.stagger-children.is-visible > *:nth-child(6)  { transition-delay: .40s;  opacity: 1; transform: none; }
.stagger-children.is-visible > *:nth-child(7)  { transition-delay: .48s;  opacity: 1; transform: none; }
.stagger-children.is-visible > *:nth-child(8)  { transition-delay: .56s;  opacity: 1; transform: none; }

/* Hero specific */
.hero-text > * {
  animation: fadeInUp .8s cubic-bezier(.4,0,.2,1) both;
}
.hero-badge    { animation-delay: .1s; }
.hero-title    { animation-delay: .2s; }
.hero-tagline  { animation-delay: .3s; }
.hero-description { animation-delay: .4s; }
.hero-actions  { animation-delay: .5s; }

.hero-visual {
  animation: scaleIn .9s cubic-bezier(.4,0,.2,1) .3s both;
}

.hero-scroll {
  animation: fadeIn 1.2s ease .8s both;
}

/* Float animation for hero cards */
.hero-card-stack {
  animation: float 6s ease-in-out infinite;
}

/* Gradient text shimmer on hover */
.section-title span:hover {
  background-size: 200% 100%;
  animation: shimmer 1.5s linear;
}
