/* Motion lives behind prefers-reduced-motion; everything renders correctly without it. */
.reveal { opacity: 1; }
@media (prefers-reduced-motion: no-preference) {
  .reveal { opacity: .12; transform: translateY(22px); transition: opacity .8s var(--ease-out), transform .8s var(--ease-out); }
  .reveal.is-in, body.fullpage .reveal, body.no-motion .reveal { opacity: 1; transform: none; }
  .reveal[data-delay="1"] { transition-delay: .08s; }
  .reveal[data-delay="2"] { transition-delay: .16s; }
  .reveal[data-delay="3"] { transition-delay: .24s; }
  .reveal[data-delay="4"] { transition-delay: .32s; }
  .reveal[data-delay="5"] { transition-delay: .4s; }
  .hero__title .word { opacity: .25; transform: translateY(26px) rotate(1deg); animation: rise .9s var(--ease-out) forwards; animation-delay: calc(.08s + var(--i, 0) * .07s); }
  .hero .lead, .hero__actions, .trust { animation: fade-up .9s var(--ease-out) both; }
  .hero .lead { animation-delay: .45s; }
  .hero__actions { animation-delay: .6s; }
  .trust { animation-delay: .75s; }
  .collage__tile { animation: tile-in 1.1s var(--ease-out) both; }
  .collage__tile--a { animation-delay: .15s; }
  .collage__tile--b { animation-delay: .3s; }
  .collage__tile--c { animation-delay: .45s; }
  .collage__card { animation: fade-up 1s var(--ease-out) .7s both; }
  .collage__cutout { animation: pop 1.1s var(--ease-out) .55s both; }
  .float { animation: float 7s ease-in-out infinite; }
  .float--slow { animation-duration: 10s; }
  .float--delay { animation-delay: -3s; }
  .marquee__track { animation: marquee 42s linear infinite; }
  .marquee:hover .marquee__track { animation-play-state: paused; }
  .route__path { stroke-dasharray: 9 11; animation: dash 1.4s linear infinite; }
  .pulse { animation: pulse 2.4s ease-out infinite; transform-origin: center; transform-box: fill-box; }
  .grow { animation: grow 1.2s var(--ease-out) both; transform-origin: left center; }
  .spin-slow { animation: spin 24s linear infinite; transform-origin: center; transform-box: fill-box; }
  .shimmer { position: relative; overflow: hidden; }
  .shimmer::after { content: ""; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .35) 50%, transparent 70%); transform: translateX(-120%); animation: shimmer 5s ease-in-out 1.5s infinite; }
  .counter__value, .hero-figure__value { transition: color .3s; }
}
@keyframes rise { to { opacity: 1; transform: none; } }
@keyframes fade-up { from { opacity: .2; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes tile-in { from { opacity: .2; transform: translateY(32px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes pop { from { opacity: .2; transform: translateY(20px) scale(.8) rotate(-6deg); } to { opacity: 1; transform: none; } }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
@keyframes marquee { to { transform: translateX(-50%); } }
@keyframes dash { to { stroke-dashoffset: -40; } }
@keyframes pulse { 0% { transform: scale(.6); opacity: .9; } 100% { transform: scale(2.4); opacity: 0; } }
@keyframes grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes slide-up { from { transform: translateY(100%); } to { transform: none; } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes shimmer { 0% { transform: translateX(-120%); } 40%, 100% { transform: translateX(120%); } }
