No.417 · Text Animations· New
Echo Outline Text
One huge solid word with five hairline copies stacked behind it. With a mouse the copies lean away from the pointer; otherwise they sway slowly on their own.
The prompt
Written for the variant you picked above: Light
Build big poster lettering drawn as hairlines (transparent text with a 1.5px -webkit-text-stroke in the ink colour). Inter 800, uppercase, -0.035em, 0.95 leading, sized from the container width. One huge word ('SIGNAL', 900 weight, up to 260px) in solid ink with five hairline copies stacked behind it, each offset by k × (dx, dy) and fading by 14% per step; the furthest copy's stroke is the accent. dx/dy rest at 6px and sway slowly (±3px, sin 0.8 and cos 0.6 rad/s) on their own; with a mouse they point away from the pointer (up to ±13px per step), easing over 0.55s. Pause the sway offscreen. Palette (light / dark): ink #111214 / #f1f0ec, page #f4f3ef / #0b0b0c, accent signal orange #ff4d1c / acid lime #d4ff3a. In forced-colours mode drop the stroke and show plain text. Selected variant — Light (light): Palette for this theme (Light): --eotx-accent #ff4d1c; --eotx-ink #111214; --eotx-page #f4f3ef. Treat these as the root colour tokens, one value per role, and name them to suit your code. Select it with the theme option set to "light". Keep every dimension, spacing value, state and motion from the brief unchanged, and keep text at 4.5:1 contrast or better on these surfaces. This selection takes precedence over references to other themes or options in the general brief. Implement this selected appearance; do not add a variant picker or alternative appearances unless requested. Implementation requirements: Use React and TypeScript. Keep the component self-contained, with uniquely scoped CSS and no animation libraries. Include required imports, styles and font setup in the result. Interaction: Move the mouse across the word and the echoes lean away. Motion: A 0.55s eased lean and a slow idle sway. Reduced motion holds the echoes still and drops the easing. Accessibility: The section is labelled with the word once; all copies are aria-hidden. Responsive behavior: Type scales with the container and never wraps. Touch: On touch the echoes sway on their own; nothing depends on a pointer. Preserve keyboard access, visible focus and reduced-motion behavior. Keep fictional demo data and simulated service calls in a separate usage example; expose callbacks for real actions and recover from rejected requests. Keep usage-example links inside the demo: use local buttons or prevent navigation. Demonstration links must not navigate to Vitrine routes or open other pages; preserve real URL support in the reusable component itself. Verify the result at narrow and wide viewport sizes, with keyboard input and reduced motion enabled.
Notes
- Interaction
- Move the mouse across the word and the echoes lean away.
- Motion
- A 0.55s eased lean and a slow idle sway. Reduced motion holds the echoes still and drops the easing.
- Accessibility
- The section is labelled with the word once; all copies are aria-hidden.
- Responsive
- Type scales with the container and never wraps.
- On touch
- On touch the echoes sway on their own; nothing depends on a pointer.