A slim rail on the left edge of a long page: one segment per chapter, each segment filling as you read through it, the current chapter's title sliding out beside its segment, and a click on any segment gliding you to it.
Progress for chapter c = clamp((viewportMiddle − c.top) / c.height, 0, 1), written to each fill as `transform: scaleY(p)` with `transform-origin: top`; segments heights are proportional to chapter heights (min 24 px) inside a 50vh rail. Labels: `translateX(-8px) → 0` and fade 200 ms on `.on`.
From prompt to a block in your page.
The preview is the shipped block inside a neutral demo page. Scroll, hover, drag: everything is live.
Token sets re-tint the block 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 block's markup, styles and script verbatim with the tokens and the rules that keep it self-contained.
Add the head lines it names, paste the block, replace the placeholder copy. Tokens live on :root.