/* Motion (MOTION-PROFILE.md, approved 2 Nov 2026): subtle, key moments only, opacity and transform only.
   Loaded after the other stylesheets. Section reveals live in styles.css (.js-motion .reveal), the stagger and
   counters in scripts/motion.js. Nothing here runs for visitors who ask for reduced motion. */
@media (prefers-reduced-motion: no-preference) {
  @keyframes rise-in { from { opacity: 0; transform: translateY(12px) } to { opacity: 1; transform: none } }
  @keyframes fade-in { from { opacity: 0 } to { opacity: 1 } }

  /* Homepage hero only: headline, intro, action, then the image. Headline readable within 300ms, all done by 900ms.
     Inner pages have no load animation above the fold. */
  .home-v4 #home .eyebrow { animation: fade-in .5s var(--curve) both }
  .home-v4 #home h1 { animation: rise-in .6s var(--curve) .05s both }
  .home-v4 #home .hero-intro { animation: rise-in .6s var(--curve) .15s both }
  .home-v4 #home .hero-actions { animation: rise-in .6s var(--curve) .25s both }
  .home-v4 #home .v4-free-note,
  .home-v4 #home .sg-chat-note { animation: fade-in .6s var(--curve) .3s both }
  .home-v4 #home .hero-visual { animation: rise-in .7s var(--curve) .2s both }

  /* Partner logos: opacity-only cascade, 40ms apart, finished within 600ms. */
  .js-motion .logo-grid li { opacity: 0 }
  .js-motion .logo-grid.visible li, .js-motion .reveal.visible .logo-grid li {
    opacity: 1;
    transition: opacity .32s var(--curve), border-color .2s var(--curve);
    transition-delay: min(calc(var(--i, 0) * 40ms), 280ms), 0s;
  }
}
.glance-grid strong { font-variant-numeric: tabular-nums }
