whileInView + Provider
Card fades in on viewport entry; nested child inherits via m.Provider.
Scroll down. Each card fades in once a small slice intersects the viewport. The label inside each card inherits the parent's animate state through m.Provider — no duplicate gesture wiring.