/* motion.css — reveal hidden state. Applies ONLY when JS marks motion active
   (html.motion-ready is added by index.js when reduced-motion is not preferred).
   Without this class (no-JS, SSR, reduced-motion) elements are fully visible — no flash. */

html.motion-ready [data-rv] {
  opacity: 0;
  transform: translateY(40px);
  will-change: opacity, transform;
}

html.motion-ready [data-rv].is-in {
  opacity: 1;
  transform: none;
}

/* Custom cursor: hide the native pointer on EVERY element while the reticle is active.
   Global (not component-scoped) because it must reach all descendants of <body>, which
   a scoped rule cannot target. cursor.js toggles body.has-custom-cursor (fine pointer +
   motion allowed); the reticle's own styling is scoped in Components/Layout/Cursor.razor.css. */
body.has-custom-cursor, body.has-custom-cursor * { cursor: none !important; }
