/* Entrance & Hover Animations */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .8s, transform .8s;
}

.reveal.visible {
  opacity: 1;
  transform: none;
}

.stagger > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .65s, transform .65s;
}

.stagger.visible > * {
  opacity: 1;
  transform: none;
}

.stagger.visible > *:nth-child(2) { transition-delay: .08s; }
.stagger.visible > *:nth-child(3) { transition-delay: .16s; }
.stagger.visible > *:nth-child(4) { transition-delay: .24s; }
.stagger.visible > *:nth-child(5) { transition-delay: .32s; }
.stagger.visible > *:nth-child(6) { transition-delay: .4s; }

@keyframes heroScale {
  from { transform: scale(1.07); }
  to { transform: scale(1); }
}

@keyframes fadeUp {
  to { opacity: 1; transform: translateY(0); }
  from { opacity: 0; transform: translateY(22px); }
}

@keyframes softPulse {
  50% { opacity: .45; }
}
