/* Finite optional motion; reading never waits for an animation. */
@media(prefers-reduced-motion:no-preference){
 .hero-copy{animation:archive-arrive 520ms ease-out}.archive-hero-visual{animation:archive-arrive 680ms ease-out}
 .grid .card,.journey-card{transition:transform 220ms ease,border-color 220ms ease,box-shadow 220ms ease}
 .text-link span,.primary-btn span{transition:transform 180ms ease}.text-link:hover span,.primary-btn:hover span{transform:translateX(-4px)}
 @media(hover:hover) and (pointer:fine){.grid .card:hover,.journey-card:hover{transform:translateY(-4px)}}
}
@keyframes archive-arrive{from{opacity:.65;transform:translateY(12px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{*,*::before,*::after{animation:none!important;transition:none!important}}
