K–INSP–013 · Inspiration
Cursor Savings Calculator
A slider whose visible parts are all drawn beside an invisible real input, and a figure whose digit wheel is solved in CSS rather than script.
View studyKaki catalogue
K–INSP–023 · Inspiration · Interaction
A headline whose last words sit on a turning wheel of platform names, driven by a knurled dial you can click, twist, drag or step with the arrow keys — and above 1280px the same list bows into an arc.
Kaki reconstruction / Live
Drag the platform names up or down and flick them to watch them settle. Click the dial to sweep it, drag it with a mouse, twist it with a finger, or focus it and use the arrow keys, Home and End. Switch to Orbit to see the wide-screen arc.
Ship your own AI app builderTurn or click the dial, or use the arrow keys.
Behaviour verified from the supplied archive, stylesheet and component chunk · source headline and names quoted · original code · synthesised clicks · pause control and reduced-motion stop added
Observed system / 03
These diagrams separate the shared position, the wide-screen arc, and the dial's sweep.
Why it is here
Each row carries one inline custom property: its index minus the current position. That property is registered with @property as a <number>, so the browser can transition it, over 0.9 seconds on cubic-bezier(.22, 1, .36, 1), or a quarter of a second when the visitor caused the step. Everything else is derived from it in CSS: a translate of that many line-heights when stacked, a rotation of that many steps when wide, and the row's opacity while it is being dragged.
Below 1280px the list never ends. The stored position keeps counting up, and CSS folds each distance back with mod(distance + 1, count) - 1, so exactly one row waits above the headline and the rest fall away below it. A row that wraps jumps from the top to the bottom inside the mask, where nobody can see it. Above 1280px the list is bounded, auto-advance stops at the last row, and the dial's click sweeps back.
Because the distance is registered, its computed value is the live, mid-transition one. Grabbing the wheel while it is moving reads that value and starts the drag exactly where the words are, rather than snapping to the row they were heading for. A flick is projected 0.22 seconds ahead to pick the landing row, then closes on it exponentially over a 260ms time constant.
Two quieter details. Below 961px the source drops every name longer than twenty characters so the wheel never clips mid-word, and it also hides the dial, which leaves narrow screens with no keyboard route at all, because the rows themselves are taken out of the tab order. The headline also carries a second prefix, “Build and ship your own”, that its stylesheet hides at every width.
Most rotating headlines are a timer and a fade. This one is a real control: the words sit on a wheel you can grab, the dial beside it clicks through the same positions, and one registered CSS number drives the whole motion, so the list can travel in a straight column or bow along an arc without a second animation.
role="slider" dial built from a thirteen-dot SVG scale across 144 degrees from -162, a recess, a gradient rim, a gradient face and a rotating indicator