/* ── Hero entrance animations ── */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes glowPulse {
  0%, 100% {
    text-shadow: 0 0 10px var(--glow-primary), 0 0 30px var(--glow-primary);
  }
  50% {
    text-shadow: 0 0 20px var(--glow-primary), 0 0 50px var(--glow-primary), 0 0 80px var(--glow-primary);
  }
}

@keyframes glitch {
  0%, 88%, 100% {
    clip-path: inset(0);
    transform: translate(0);
  }
  90% {
    clip-path: inset(25% 0 35% 0);
    transform: translate(-3px, 2px);
  }
  92% {
    clip-path: inset(50% 0 15% 0);
    transform: translate(3px, -1px);
  }
  94% {
    clip-path: inset(10% 0 60% 0);
    transform: translate(-2px, 3px);
  }
  96% {
    clip-path: inset(70% 0 5% 0);
    transform: translate(2px, -2px);
  }
}

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}

@keyframes bounceDown {
  0%, 100% { transform: translateY(0); opacity: 0.6; }
  50% { transform: translateY(8px); opacity: 1; }
}

@keyframes tickerScroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

@keyframes btnGlow {
  0%, 100% {
    box-shadow: 0 0 8px var(--glow-primary);
  }
  50% {
    box-shadow: 0 0 16px var(--glow-primary), 0 0 32px rgba(232, 85, 58, 0.1);
  }
}

@keyframes scanLine {
  0% { left: -20%; }
  100% { left: 120%; }
}

@keyframes chickenFall {
  0% {
    transform: translateY(-100px) rotate(0deg);
    opacity: 1;
  }
  100% {
    transform: translateY(110vh) rotate(720deg);
    opacity: 0.3;
  }
}

/* ── Hero stagger ── */
.hero-eyebrow {
  animation: fadeIn 0.8s var(--ease-out) 0.2s both;
}

.hero-title .title-line-1 {
  animation: fadeInUp 0.7s var(--ease-out) 0.5s both;
}

.hero-title .title-line-2 {
  animation: fadeInUp 0.7s var(--ease-out) 0.7s both;
}

.hero-ticker {
  animation: fadeIn 0.6s var(--ease-out) 0.9s both;
}

.hero-tagline {
  animation: fadeIn 0.6s var(--ease-out) 1.1s both;
}

.hero-cta-group {
  animation: fadeInUp 0.6s var(--ease-out) 1.3s both;
}

.hero-scroll-indicator {
  animation: fadeIn 0.6s var(--ease-out) 1.8s both;
}

/* ── Scroll reveal ── */
[data-animate] {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity var(--transition-slow), transform var(--transition-slow);
}

[data-animate].is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── Glitch text ── */
.glitch-text {
  position: relative;
}

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

.glitch-text::before {
  color: var(--accent-cyan);
  animation: glitch 4s infinite linear;
  z-index: -1;
}

.glitch-text::after {
  color: var(--accent-primary);
  animation: glitch 4s infinite linear 0.15s;
  z-index: -1;
}

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  [data-animate] {
    opacity: 1;
    transform: none;
  }
}
