--- // ScrollReveal — wraps content and fades/rises it into view on scroll. // IntersectionObserver island; fully reduced-motion safe (content is shown // immediately and statically when motion is reduced or JS is absent). interface Props { /** stagger delay in ms (for sequencing sibling reveals) */ delay?: number; /** semantic element to render as (default: div) */ as?: keyof HTMLElementTagNameMap; } const { delay = 0, as = 'div' } = Astro.props; const Tag = as as any; ---