/* Hero text reveal — same feel as the editions hero (slide-in from left + fade) */
@keyframes heroReveal {
    from { opacity: 0; transform: translateX(-50px); }
    to   { opacity: 1; transform: translateX(0); }
}
.hero-text {
    animation: heroReveal 0.9s cubic-bezier(0.22, 1, 0.36, 1) both;
}
/* On pages with a preloader, hold the animation until loading finishes */
body.is-loading .hero-text { animation-play-state: paused; }

@media (prefers-reduced-motion: reduce) {
    .hero-text { animation: none; opacity: 1; transform: none; }
}
