/* Motion — scroll reveal + reduced-motion guard. */
.reveal { opacity: 0; transform: translateY(16px); transition: opacity 600ms cubic-bezier(0.22,1,0.36,1), transform 600ms cubic-bezier(0.22,1,0.36,1); }
.reveal.in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  * { transition: none !important; }
}

/* keyframes for looping components (marquee, globe, logo/photo scrollers, map pins) */
@keyframes scroll { to { transform: translateX(-50%); } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes gpulse { 50% { opacity: 0.35; } }
@keyframes lscroll { to { transform: translateX(-50%); } }
@keyframes rscroll { to { transform: translateX(-50%); } }
@keyframes rscrollrev { from { transform: translateX(-50%); } to { transform: translateX(0); } }
@keyframes mpulse { from { transform: scale(0.4); opacity: 0.75; } to { transform: scale(2.4); opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  .marquee-track, .orbit, .gdot, .logo-track, .river-row, .pin .halo { animation: none; }
}
