PROMPT BUILDER / 05 STEPS

BUILD THE
PROMPT.

STEP 01SELECT ONE

WHAT ARE YOU BUILDING?

STEP 02SELECT MULTIPLE

DESIGN VIBE

STEP 03SELECT MULTIPLE

INTERACTIONS

STEP 04SELECT ONE

MOTION INTENSITY

STEP 05SELECT ONE

TOOL

GENERATED PROMPT
Improve the interaction design of this landing page.

DESIGN VIBE
Premium, Dark. Keep the palette disciplined — no purple gradients, no neon, no stock imagery, no generic three-column feature grid.

MOTION LANGUAGE
Standard premium motion: 180/350/700ms tokens, 3-4px hover travel, one looping element maximum per screen.
Use tokens fast 180ms, normal 350ms, slow 700ms, and easing cubic-bezier(0.22, 1, 0.36, 1) everywhere. Animate transform and opacity only.

INTERACTIONS TO IMPLEMENT
- Buttons: Primary buttons lift translateY(-3px) with a soft shadow on hover and settle to -1px on press.
- Card Hover: Cards lift 4px, the 1px border brightens from 10% to 28% white and the surface lightens one step. No tilt.
- Scroll: One shared IntersectionObserver hook reveals section headers and grids from opacity 0 / translateY(14px), unobserving after the first hit.

RULES
- Define every value as a design-system token in the stylesheet; do not scatter hardcoded values across components.
- Build reusable components and hooks; do not duplicate the same pointer or observer logic.
- Disable pointer-based effects when matchMedia('(pointer: fine)') does not match, and disable decorative motion under prefers-reduced-motion.
- Keep everything at 60fps: no animation of width, height, top or left, pause looping animations outside the viewport.
- Do not add new dependencies.

TOOL: Lovable. Apply these changes directly to the existing codebase and reuse the current component structure.