Live prefers-reduced-motion match without an animation library. Renders false on the server, so hydration never mismatches, and updates when the setting changes.
pnpm dlx shadcn@latest add "https://hirael.com/r/use-reduced-motion.json"