Public Beta compatibility policy
Minor change
Add splitText(el), which wraps each character of an element’s text in its own inline-block element for letter-by-letter motion with sequence(split.chars, …). Words stay unbreakable so lines still wrap between them, nested markup is kept, characters are split by grapheme, and assistive technology reads a visually hidden copy of the text once instead of letter by letter. revert() restores the original nodes.
Add a y option to every motion call: vertical travel in pixels that replaces the preset’s own movement, so fade with y: 4 fades in with a small rise. It is dropped under reduced motion.