Timeline as layout state
Sections expose progress through CSS variables, so typography, scale, opacity, and masks can all respond without React scroll state.
A StringTune-heavy route that behaves closer to the official promo site: oversized split text, declarative scroll timelines, parallax layers, and cursor-lit controls.
Sections expose progress through CSS variables, so typography, scale, opacity, and masks can all respond without React scroll state.
The headline is split into words and characters, then CSS uses the generated indexes for staggered entrance and scroll-shaped emphasis.
Interactive pills read pointer angle and distance from StringTune, then render a local glare layer entirely in CSS.
StringTune measures an element's travel through the viewport.
The runtime writes an eased CSS variable on the source element.
The design consumes that variable for masks, transforms, and rhythm.
React can keep `string` as a custom DOM attribute. The important part is that StringTune sees `[string]`, while settings can use `string-*` or `data-string-*`.
Because StringParallax writes inline transform, extra CSS transforms sit on children or wrappers instead of the parallax node.
The interaction quality comes from expressive CSS consuming public variables, not from adding more component state.