@media (prefers-reduced-motion: no-preference) {

  /* ---------- Hero entrance ---------- */
  .hero .eyebrow,
  .hero h1,
  .hero .lede,
  .hero .btn-row,
  .hero-meta {
    animation: rise-in .9s cubic-bezier(.2,.7,.2,1) both;
  }
  .hero .eyebrow { animation-delay: .15s; }
  .hero h1       { animation-delay: .3s; }
  .hero .lede    { animation-delay: .5s; }
  .hero .btn-row { animation-delay: .65s; }
  .hero-meta     { animation-delay: .9s; }

  /* The orange "Great Times." line flickers on like a neon sign */
  .hero h1 .accent { animation: neon-on 1.6s ease-out .9s both; }

  /* ---------- Inner page banner entrance ---------- */
  .page-hero .crumbs,
  .page-hero .eyebrow,
  .page-hero h1,
  .page-hero .rule,
  .page-hero .lede,
  .page-hero-cta {
    animation: rise-in .9s cubic-bezier(.2,.7,.2,1) both;
  }
  .page-hero .crumbs  { animation-delay: .05s; }
  .page-hero .eyebrow { animation-delay: .15s; }
  .page-hero h1       { animation-delay: .28s; }
  .page-hero .rule    { animation-delay: .42s; }
  .page-hero .lede    { animation-delay: .5s; }
  .page-hero-cta      { animation-delay: .62s; }
  .page-hero h1 .accent { animation: neon-on 1.6s ease-out .8s both; }

  /* ---------- Scroll reveal ---------- */
  .reveal-ready [data-reveal] {
    opacity: 0;
    transition:
      opacity .8s ease,
      transform .9s cubic-bezier(.2,.7,.2,1);
    transition-delay: var(--delay, 0s);
  }
  .reveal-ready [data-reveal="up"]    { transform: translateY(36px); }
  .reveal-ready [data-reveal="left"]  { transform: translateX(-48px); }
  .reveal-ready [data-reveal="right"] { transform: translateX(48px); }
  .reveal-ready [data-reveal="zoom"]  { transform: scale(.9); }
  /* Wipe clips the children, not the observed element itself — a fully clipped
     element never counts as "on screen", so it would never be revealed. */
  .reveal-ready [data-reveal="wipe"]  { opacity: 1; }
  .reveal-ready [data-reveal="wipe"] > * {
    clip-path: inset(0 100% 0 0);
    transition: clip-path 1.2s cubic-bezier(.65,0,.35,1) var(--delay, 0s);
  }
  .reveal-ready [data-reveal="wipe"].is-visible > * { clip-path: inset(0 0 0 0); }
  .reveal-ready [data-reveal="rule"]  { opacity: 1; transform: scaleX(0); transform-origin: left center; }
  .reveal-ready .center [data-reveal="rule"] { transform-origin: center; }

  .reveal-ready [data-reveal].is-visible {
    opacity: 1;
    transform: none;
  }
}

/* Slow zoom on the hero / page-banner photos (hero.css, page-hero.css) */
@keyframes hero-drift {
  from { transform: scale(1.12); }
  to   { transform: scale(1); }
}
@keyframes rise-in {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: none; }
}
@keyframes neon-on {
  0%, 18%, 26%, 40% { opacity: .15; text-shadow: none; }
  14%, 22%, 32%     { opacity: 1;   text-shadow: 0 0 28px rgba(242,138,30,.6); }
  100%              { opacity: 1;   text-shadow: 0 0 28px rgba(242,138,30,.35); }
}
