@keyframes text-arrival {
  from { opacity: 0; transform: translateX(-46px); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes picture-arrival {
  from { opacity: 0; transform: translateY(24px) scale(.98); }
  to { opacity: 1; transform: none; }
}
@keyframes cover-drift {
  from { transform: scale(1); }
  to { transform: scale(1.045); }
}
@media (prefers-reduced-motion: no-preference) {
  .campaign-copy > * { animation: text-arrival .85s ease-out backwards; }
  .campaign-copy h1 { animation-delay: .1s; }
  .campaign-copy .lead { animation-delay: .2s; }
  .campaign-copy .actions { animation-delay: .3s; }
  .campaign .cover { animation: cover-drift 4.8s ease-out both; }
  .reveal-copy { animation: text-arrival .8s ease-out backwards; }
  .reveal-picture { animation: picture-arrival .85s ease-out backwards; }
  .gallery .tile img { transition: transform .55s ease; }
  .gallery .tile:is(:hover,:focus-visible) img { transform: scale(1.035); }
}
