Design Direction
Every interface should commit to a bold aesthetic direction with clear intentionality:Define Purpose
What problem does this interface solve? Who uses it? Understanding the context drives all design decisions.
Choose a Tone
Pick an extreme and commit: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian.
Set Constraints
Technical requirements (framework, performance, accessibility) that shape the design space.
Critical Insight: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work—the key is intentionality, not intensity.
Typography
Typography creates hierarchy and personality. The frontend-design skill emphasizes distinctive, purposeful type choices.Font Selection
Choose Distinctive Fonts
Avoid overused fonts (Inter, Roboto, Arial, Open Sans, system defaults). Choose fonts that are beautiful, unique, and interesting. Pair a distinctive display font with a refined body font.
Use Modular Scales
Use fewer sizes with more contrast. A 5-size system (xs, sm, base, lg, xl+) covers most needs. Pick a ratio (1.25, 1.333, 1.5) and commit.
Hierarchy & Readability
- Vertical Rhythm: Line-height should be the base unit for all vertical spacing
- Measure: Use
chunits for character-based width (max-width: 65ch) - Fluid Type: Use
clamp(min, preferred, max)for responsive typography - OpenType Features: Leverage font features like tabular numbers, proper fractions, and small caps
Use rem/em for font sizes to respect user browser settings. Minimum 16px for body text.
Color & Theme
Modern Color Systems
Palette Strategy
Commit to a cohesive palette. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.- Tint your neutrals toward your brand hue—even subtle hints create subconscious cohesion
- Never use pure black (#000) or pure white (#fff)—always tint them
- Use modern CSS color functions (oklch, color-mix, light-dark) for maintainable palettes
Layout & Space
Create visual rhythm through varied spacing—not the same padding everywhere.Spacing Systems
- Use 4pt base for granularity: 4, 8, 12, 16, 24, 32, 48, 64, 96px
- Name tokens semantically:
--space-sm,--space-lg(not--spacing-8) - Use gap instead of margins for sibling spacing
Composition
Create Visual Rhythm
Use varied spacing—tight groupings, generous separations. Without rhythm, layouts feel monotonous.
Embrace Asymmetry
Break the grid intentionally for emphasis. Left-aligned text with asymmetric layouts feels more designed than centering everything.
Avoid Card Overuse
Not everything needs a container. Never nest cards inside cards—use spacing, typography, and subtle dividers instead.
Use Fluid Spacing
Use
clamp() for spacing that breathes on larger screens.Motion
Focus on high-impact moments. One well-orchestrated page load creates more delight than scattered micro-interactions.Duration & Easing
| Duration | Use Case |
|---|---|
| 100-150ms | Instant feedback (buttons, toggles) |
| 200-300ms | State changes (menus, tooltips) |
| 300-500ms | Layout changes (accordions, modals) |
| 500-800ms | Entrance animations (page loads) |
Use exponential easing (ease-out-quart/quint/expo) for natural deceleration
Best Practices
- Animate only transform and opacity—everything else causes layout recalculation
- Use grid-template-rows transitions for height animations instead of animating height directly
- Always support reduced motion:
@media (prefers-reduced-motion: reduce)
Interaction
Make interactions feel fast. Use optimistic UI—update immediately, sync later.Progressive Disclosure
Start simple, reveal sophistication through interaction:- Basic options first, advanced behind expandable sections
- Hover states that reveal secondary actions
- Empty states that teach the interface, not just say “nothing here”
State Management
Every interactive element needs these states designed:- Default, Hover, Focus, Active, Disabled, Loading, Error, Success
Responsive
Adapt the interface for different contexts—don’t just shrink it.- Use container queries (
@container) for component-level responsiveness - Detect input method, not just screen size: Use
(pointer: coarse)and(hover: hover)queries - Don’t hide critical functionality on mobile—adapt the interface, don’t amputate it
The AI Slop Test
A distinctive interface should make someone ask “how was this made?” not “which AI made this?” Review the anti-patterns (see Anti-Patterns)—they are the fingerprints of AI-generated work.Implementation Principles
Match implementation complexity to the aesthetic vision:- Maximalist designs need elaborate code with extensive animations and effects
- Minimalist designs need restraint, precision, and careful attention to spacing, typography, and subtle details
Never converge on common choices across generations. Each interface should be distinctive and memorable.
Reference Files
The frontend-design skill includes seven domain-specific reference files with deeper expertise:- Typography: Type systems, font pairing, modular scales, OpenType features
- Color & Contrast: OKLCH, tinted neutrals, dark mode, accessibility
- Spatial Design: Spacing systems, grids, visual hierarchy, container queries
- Motion Design: Easing curves, staggering, perceived performance
- Interaction Design: Forms, focus states, loading patterns, keyboard navigation
- Responsive Design: Mobile-first, fluid design, safe areas
- UX Writing: Button labels, error messages, empty states
