@keyframes text-focus-in {
  from { filter: blur(12px); opacity: 0; }
  to { filter: blur(0); opacity: 1; }
}

@keyframes slit-in-vertical {
  0% { transform: translateZ(-800px) rotateY(90deg); opacity: 0; }
  54% { transform: translateZ(-160px) rotateY(87deg); opacity: 1; }
  100% { transform: translateZ(0) rotateY(0); opacity: 1; }
}

@keyframes hero-reveal {
  from { opacity: 0; filter: blur(12px); transform: translateY(20px); }
  to { opacity: 1; filter: blur(0); transform: translateY(0); }
}

.js .animate-on-scroll,
.js [data-animate] { opacity: 0; }

.js .animate-on-scroll.is-visible { animation: text-focus-in 1s cubic-bezier(.55,.085,.68,.53) both; }
.js [data-animate].is-visible { opacity: 1; }
.js .text-focus-in.is-visible { animation: text-focus-in 1s cubic-bezier(.55,.085,.68,.53) both; }
.js .slit-in-vertical.is-visible { animation: slit-in-vertical .6s ease-out both; }

.js .contact-lift-in { opacity: 0; transform: translateY(28px) scale(.97); transition: opacity .9s cubic-bezier(.25,.46,.45,.94), transform .9s cubic-bezier(.25,.46,.45,.94); }
.js .contact-lift-in.is-visible { opacity: 1; transform: translateY(0) scale(1); }
.js .contact-stagger { opacity: 0; transform: translateY(22px); transition: opacity .7s ease-out, transform .7s ease-out; }
.js .contact-stagger.is-visible { opacity: 1; transform: translateY(0); }
.js .contact-stagger.delay-1 { transition-delay: 1s; }
.js .contact-stagger.delay-2 { transition-delay: 1.2s; }
.js .contact-stagger.delay-3 { transition-delay: 1.4s; }

.process-section.process-animations-ready .process-card { opacity: 0; filter: blur(8px); transform: translate3d(0,24px,0); }
.process-section.process-animations-ready .process-card.is-process-visible { opacity: 1; filter: none; transform: translate3d(0,0,0); transition: opacity .5s cubic-bezier(.22,1,.36,1),filter .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1); }

.faq-layout.faq-animations-ready [data-faq-animate] { opacity: 0; filter: blur(9px); transform: translate3d(0,18px,0); }
.faq-layout.faq-animations-ready [data-faq-animate].is-faq-visible { opacity: 1; filter: none; transform: translate3d(0,0,0); transition: opacity .72s cubic-bezier(.22,1,.36,1),filter .72s cubic-bezier(.22,1,.36,1),transform .72s cubic-bezier(.22,1,.36,1); transition-delay: var(--faq-delay,0ms); }

.js .hero [data-hero-animate] { opacity: 0; }
.js .hero.hero-ready [data-hero-animate] { animation: hero-reveal 1s cubic-bezier(.22,1,.36,1) both; }
.js .hero.hero-ready .hero__title { animation-delay: .12s; }
.js .hero.hero-ready .hero__description { animation-delay: .34s; }
.js .hero.hero-ready .hero__actions { animation-delay: .52s; }
.js .hero.hero-ready .hero__visual { animation-delay: .66s; animation-duration: 1.25s; }
.js .hero.hero-ready .hero__proof { animation-delay: .84s; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .js .animate-on-scroll, .js [data-animate], .js .contact-lift-in, .js .contact-stagger, .js .hero [data-hero-animate], .process-section.process-animations-ready .process-card, .faq-layout.faq-animations-ready [data-faq-animate] { opacity: 1; filter: none; transform: none; clip-path: none; }
  .audit-terminal__cursor { animation: none !important; opacity: 1; }
  .integration-flow__beam { animation: none !important; opacity: 0; }
  .hero__parallax-bg { transform: scale(1.04); will-change: auto; }
  .hero__content { transform: none; will-change: auto; }
  .why-fusion__flip-letter { transform: none !important; color: inherit !important; }
  .why-fusion__flip-letter::after { display: none; }
}
