@layer animations {
  /* Reading never depends on a reveal: elements remain visible without JavaScript. */
  @keyframes settle {
    from { opacity: .75; transform: translateY(16px); }
    to { opacity: 1; transform: none; }
  }
  @keyframes photo-settle {
    from { transform: scale(1.035); }
    to { transform: scale(1); }
  }
  .hero-main { animation: photo-settle 1.1s ease-out both; }
  .hero-copy h1 { animation: settle .65s ease-out both; }
  .hero-copy > p { animation: settle .65s .08s ease-out both; }
  .hero-actions { animation: settle .65s .16s ease-out both; }
  .reveal.is-revealed { animation: settle .45s ease-out both; }
  .stage-panel.is-selected { animation: settle .3s ease-out; }
  @media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  }
}
