/* AP Tile — animations.css
   One orchestrated moment: the hero mosaic tiles settle into place on load.
   Everything else only moves in response to the visitor. */
@keyframes tile-in { from { opacity: 0; transform: translateY(16px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes fade-up { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
.js .hero-copy > * { animation: fade-up .7s cubic-bezier(.2,.7,.2,1) both; }
.js .hero-copy > *:nth-child(2) { animation-delay: .08s; }
.js .hero-copy > *:nth-child(3) { animation-delay: .16s; }
.js .hero-copy > *:nth-child(4) { animation-delay: .24s; }
.js .hero-copy > *:nth-child(5) { animation-delay: .32s; }
.js .mosaic .m-photo { animation: tile-in .9s cubic-bezier(.2,.7,.2,1) .2s both; }
.js .float-card { animation: tile-in .7s cubic-bezier(.2,.7,.2,1) both; }
.js .float-card.fc-1 { animation-delay: .55s; }
.js .float-card.fc-2 { animation-delay: .7s; }
.js .float-card.fc-3 { animation-delay: .85s; }
.faq-a[hidden] { display: none; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  .carousel-track { scroll-behavior: auto; }
}
