.page-entrance {
  opacity: 0;
  animation: pageEnter 0.5s cubic-bezier(0.16, 1, 0.3, 1) 0.1s forwards;
}

@keyframes pageEnter {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: none; }
}

.animate-in {
  opacity: 0;
  transform: translateY(50px);
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

.animate-in.visible { opacity: 1; transform: translateY(0); }

.animate-delay-1 { transition-delay: 0.08s; }
.animate-delay-2 { transition-delay: 0.16s; }
.animate-delay-3 { transition-delay: 0.24s; }
.animate-delay-4 { transition-delay: 0.32s; }

.hero-animate-in {
  opacity: 0;
  animation: heroEnter 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.hero-animate-in-delay-1 { animation-delay: 0.1s; }
.hero-animate-in-delay-2 { animation-delay: 0.3s; }
.hero-animate-in-delay-3 { animation-delay: 0.5s; }

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

.legal-entrance {
  opacity: 0;
  animation: legalEnter 0.4s cubic-bezier(0.16, 1, 0.3, 1) 0.1s forwards;
}

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

@media (prefers-reduced-motion: reduce) {
  .page-entrance { opacity: 1; animation: none; }
  .animate-in { opacity: 1; transform: none; }
  .hero-animate-in { opacity: 1; animation: none; }
}
