No.204 · CTAs
Focus Pull
A closing call to action with a camera's depth of field: whichever action you move toward racks into focus, hunting slightly before it locks, while the rest of the block falls soft.
The prompt
Written for the variant you picked above: Studio
Compose a closing CTA block as three optical planes: an eyebrow + serif headline (Instrument Serif, clamp 2.3–4.1rem, 18ch), a primary action (bone pill, dark text, arrow) and a secondary action (hairline pill). At rest the headline is the subject and everything is sharp. Moving the pointer onto an action (or tabbing to it) racks focus to it like a camera: every other plane falls back — blur(1.6px), 42% opacity, scale 0.985 from its own anchor — over 520–620ms on cubic-bezier(0.16,1,0.3,1). The new subject doesn't just sharpen; it 'hunts' like a lens: a 560ms keyframe goes blurred → sharp at 38% → slightly soft (0.55px) at 58% → locked. Two identical keyframes alternate on each rack so the hunt replays without remounting. Leaving the block (or focus leaving it) racks back to the headline. The primary arrow nudges 3px when it's the subject; the secondary's hairline strengthens. The effect is attention-direction, so it's tuned to be felt rather than noticed. Selected variant — Studio: Studio: on #0c0b0a — eyebrow "Available from March", headline "Have something worth building carefully?" (italic last word), primary "Start a project", secondary "See selected work", note "Hamza Al-Bulushi · Software engineer, Muscat".
Notes
- Interaction
- Hover or tab to an action and focus racks onto it; leave the block and focus returns to the headline.
- Motion
- 520ms filter/opacity + 620ms scale rack on expo-out; 560ms 'hunt' keyframe on the new subject.
- Accessibility
- Real links in a <section> with an h2; nothing is hidden, only softened. Reduced motion swaps blur for a gentle dim with no hunt; keyboard focus behaves exactly like hover.
- Responsive
- Headline scales with clamp(); actions wrap on narrow screens.
- On touch
- On touch devices (hover: none) nothing is ever blurred — the block renders fully sharp.