Letters that ride a wave: each character bobs up and down on a sine, offset from its neighbour, so a crest travels along the word and back. The motion is a pure loop with no script after setup, and hovering the word doubles the amplitude.
`@keyframes wave { 50% { translate: 0 calc(var(--amp) * -1); } }` with `--amp: 0.18em` (0.36em on hover), duration 1.6 s ease-in-out infinite, `animation-delay: calc(var(--i) × -0.09s)`. Spans are `inline-block` so `translate` applies; a 0.08em letter-spacing stops bolds colliding at the crest.
From prompt to a block in your page.
The preview is the shipped element inside a neutral demo page. Hover, click, focus: the one interaction it is about is live.
Token sets re-tint it live. The prompt carries the one you chose.
A paste-in snippet, or a component for Next.js, React, Vue, Astro, WordPress, Shopify or Webflow.
It quotes the markup, styles and script verbatim with the tokens and the rules that keep it self-contained.
It inherits your page's font and width; the tokens live on :root; several instances share one script.