/* VaultMaster — Animation Choreography (Design Doc Section 8) */

/* Hero entrance */
.hero-headline, .hero-sub, .hero-cta-row, .hero-chips {
  opacity: 0;
  transform: translateY(24px);
  animation: hero-fade-up var(--duration-reveal) var(--ease-reveal) forwards;
}
.hero-headline { animation-delay: 0ms; }
.hero-sub { animation-delay: 80ms; }
.hero-cta-row { animation-delay: 160ms; }
.hero-chips { animation-delay: 220ms; }

.hero-visual {
  opacity: 0;
  transform: scale(0.96);
  animation: hero-scale-in 700ms var(--ease-reveal) forwards;
  animation-delay: 150ms;
}

@keyframes hero-fade-up {
  to { opacity: 1; transform: translateY(0); }
}
@keyframes hero-scale-in {
  to { opacity: 1; transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .hero-headline, .hero-sub, .hero-cta-row, .hero-chips, .hero-visual {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* Stagger utility — JS assigns --stagger-index custom property */
.stagger-child {
  transition-delay: calc(var(--stagger-index, 0) * 80ms);
}

/* Screenshots "breathing" glow — the one deliberately looping ambient animation */
.story-media.is-active::before {
  content: '';
  position: absolute;
  inset: -20px;
  border-radius: var(--radius-xl);
  background: radial-gradient(circle, rgba(var(--primary-rgb), 0.15), transparent 70%);
  animation: breathe 4s ease-in-out infinite;
  z-index: -1;
}
@keyframes breathe {
  0%, 100% { opacity: 0.9; }
  50% { opacity: 0.94; }
}
@media (prefers-reduced-motion: reduce) {
  .story-media.is-active::before { animation: none; }
}

/* Security architecture diagram draw-in */
.arch-node {
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 350ms var(--ease-reveal), transform 350ms var(--ease-reveal);
}
.arch-diagram.is-visible .arch-node {
  opacity: 1;
  transform: translateY(0);
  transition-delay: calc(var(--node-index, 0) * 50ms);
}
