Frontend Design
Production-grade UI design skill combining design system thinking with bold aesthetic execution. Covers web (HTML/CSS/JS, React, Vue, etc.) and mobile (Flutter, React Native, SwiftUI, etc.).
MODE DETECTION (FIRST STEP)
Analyze the user's request to determine platform:
| Request Pattern |
Mode |
Focus |
| HTML, CSS, JS, React, Vue, Next.js, landing page, dashboard, web app |
WEB |
Browser viewport, responsive breakpoints, CSS animations |
| Flutter, React Native, SwiftUI, Kotlin, mobile app, iOS, Android |
MOBILE |
Touch targets, safe areas, platform depth, native patterns |
| Unspecified |
WEB |
Default to web unless context suggests mobile |
DESIGN PROCESS (BEFORE CODING)
Before writing any code, commit to a BOLD aesthetic direction by answering four questions:
- Purpose: What problem does this interface solve? Who uses it?
- Tone: Pick a clear direction — brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian. Commit fully.
- Constraints: Technical requirements (framework, performance, accessibility)
- Differentiation: What is the ONE thing someone will remember about this interface?
CRITICAL: Choose a clear conceptual direction and execute with precision. Bold maximalism and refined minimalism both work — the key is intentionality, not intensity.
Then implement working code that is:
- Production-grade and functional
- Visually striking and memorable
- Cohesive with a clear aesthetic point-of-view
- Meticulously refined in every detail
Design-First Workflow
- Design the actual piece of functionality first — not the shell, navigation, or chrome
- Work in grayscale first — add color after hierarchy is clear
- Establish systems (spacing, type, color) before detailed design
- Details come later — work in cycles
DESIGN SYSTEMS
Spacing Scale
Constrain to a fixed set. Values should never be closer than ~25% apart.
Web (px):
| Token |
Size |
Use Case |
| 1 |
4 |
Micro gaps |
| 2 |
8 |
Tight, within components |
| 3 |
12 |
Related elements |
| 4 |
16 |
Section padding |
| 6 |
24 |
Between sections |
| 8 |
32 |
Major separation |
| 12 |
48 |
Large gaps |
| 16 |
64 |
Hero spacing |
| 24 |
96 |
Maximum separation |
Mobile (dp/pt):
| Token |
Size |
Use Case |
| xs |
4 |
Micro gaps, icon padding |
| sm |
8 |
Within components |
| md |
12 |
Related elements |
| base |
16 |
Standard screen padding |
| lg |
24 |
Between sections |
| xl |
32 |
Major separation |
| 2xl |
48 |
Tablets, hero areas |
Type Scale
Web (px):
| Size |
Role |
| 12 |
Labels, meta, fine print |
| 14 |
Body text, default |
| 16 |
Emphasis, large body |
| 18 |
Subheadings |
| 20-24 |
Card/section titles |
| 30-36 |
Page headings |
| 48-72 |
Hero/display text |
Mobile (sp/pt):
| Size |
Role |
| 11-12 |
Captions, labels |
| 14 |
Body text, default |
| 16 |
Emphasized body |
| 18-20 |
Subheadings |
| 24 |
Screen titles |
| 28-34 |
Large titles (iOS style) |
Shadow Scale
| Level |
Use Case |
Web CSS |
Mobile Elevation |
| 1 |
Buttons, subtle lift |
0 1px 2px rgba(0,0,0,0.05) |
1-2dp |
| 2 |
Cards, inputs |
0 2px 4px rgba(0,0,0,0.1) |
4dp |
| 3 |
Dropdowns, popovers |
0 4px 8px rgba(0,0,0,0.1) |
8dp |
| 4 |
Sticky headers, drawers |
0 8px 16px rgba(0,0,0,0.1) |
16dp |
| 5 |
Modals, dialogs |
0 16px 32px rgba(0,0,0,0.15) |
24dp |
Premium shadows: Combine two shadows — a large soft one (direct light) and a tight dark one (ambient occlusion).
box-shadow:
0 10px 25px rgba(0, 0, 0, 0.15), /* direct light */
0 2px 4px rgba(0, 0, 0, 0.12); /* ambient */
VISUAL HIERARCHY
Every element sits at one of three levels:
- Primary: Dark color, bold weight — headlines, key actions (one per section)
- Secondary: Grey — supporting text, dates, descriptions
- Tertiary: Light grey — metadata, copyright, timestamps
Key Principles
- Size isn't everything — use weight and color before increasing size
- Emphasize by de-emphasizing: Make competing elements softer instead of making the target louder
- Labels are a last resort — combine with values ("12 left in stock" > "Stock: 12")
- Semantics are secondary to hierarchy (h1 doesn't have to be the biggest element)
- Icons are visually "heavy" — give them softer colors to balance with text
Button Hierarchy
| Level |
Style |
Rule |
| Primary |
Solid, high-contrast background |
One per section maximum |
| Secondary |
Outline or low-contrast fill |
Clear but not competing |
| Tertiary |
Styled like links |
Discoverable but unobtrusive |
Destructive actions: Not always big/red/bold. On confirmation dialogs, yes. On regular pages where delete is secondary, use tertiary styling.
COLOR SYSTEM
Use HSL
HSL (Hue, Saturation, Lightness) is intuitive for palette creation. Avoid hex for design decisions.
Build Complete Palettes
| Category |
Shades |
Purpose |
| Greys |
8-10 |
Text, backgrounds, panels, borders |
| Primary |
5-10 |
Actions, active states, links |
| Accents |
5-10 each |
Success, warning, error, feature highlights |
Shade Definition Process
- Pick base (500): Works as button background
- Pick edges: 100 (tinted background), 900 (text on light bg)
- Fill gaps: 700, 300 → 800, 600, 400, 200
Saturation & Hue Adjustments
- Increase saturation as lightness moves away from 50% (extremes look washed out otherwise)
- To lighten: Rotate hue toward 60°, 180°, or 300° (perceived bright hues)
- To darken: Rotate hue toward 0°, 120°, or 240° (perceived dark hues)
- Don't rotate more than 20-30° (looks like different color)
Grey Temperature
- Cool greys: Saturate with blue
- Warm greys: Saturate with yellow/orange
- True black looks unnatural — start with really dark grey
Accessibility Requirements
| Text Type |
Minimum Contrast Ratio |
| Normal text (<18px) |
4.5:1 |
| Large text (18px+ bold or 24px+) |
3:1 |
Never rely on color alone for meaning. Add icons, text, or patterns.
TYPOGRAPHY
Font Selection
Choose distinctive, characterful fonts. Pair a bold display font with a refined body font.
Filtering quality fonts: Ignore typefaces with less than 5 weights (10+ styles including italics). This eliminates 85% of poor choices.
NEVER use: Arial, Inter, Roboto, system-ui, Space Grotesk. These produce forgettable, generic output.
Line-Height Rules
- Small text → taller line-height (1.5-2.0)
- Large headlines → shorter line-height (1.0-1.2)
- Wider content → increase line-height (easier to track to next line)
Line Length
Optimal: 45-75 characters per line (20-35em width). Wider = harder to read.
Letter-Spacing
- Tighten for headlines (fonts optimized for body have wider spacing)
- Increase for ALL-CAPS text (improves readability)
- Trust the typeface designer for body text
Alignment
- Default: Left-aligned
- Center: Only for headlines and short blocks (under 2-3 lines)
- Right-align numbers for column comparison
- Baseline-align mixed font sizes on a single line (not center)
LAYOUT & SPACING
Start with Too Much White Space
Start with generous spacing, then remove until satisfied. "A little too much" in isolation = "just enough" in context.
Don't Fill the Whole Screen
1400px available doesn't mean use 1400px. If content needs 600px, use 600px.
Grids Are Overrated
12-column grids cause more harm than good:
- Sidebars at 25% get too wide on large screens, too narrow on small
- Use fixed-width sidebar + flexible content area
- Use
max-width on components, only shrink when necessary
Avoid Ambiguous Spacing
More space between groups than within groups. Applies to:
- Form labels and inputs
- Section headings in articles
- List items and groups
- Horizontal component layouts
Responsive Sizing
Large elements shrink faster than small elements across breakpoints. Don't use fixed ratios.
DEPTH & MOTION
Emulating Light
Light comes from above:
- Raised elements (buttons, cards): Lighter top edge + shadow below
- Inset elements (inputs, wells): Lighter bottom edge + shadow above
Interactive Shadows
- Drag: Increase shadow (element pops above others)
- Press: Decrease shadow (pressed into surface)
Flat Design with Depth
Depth without shadows: lighter than background = raised, darker = inset. Solid shadows (no blur) maintain flat aesthetic.
Platform-Aware Depth (Mobile)
| Platform |
Approach |
| iOS |
Subtle shadows, blur/frosted glass, less elevation |
| Android |
Material elevation system, layered surfaces |
Motion
Focus on high-impact moments:
- One well-orchestrated page load with staggered reveals (
animation-delay) > scattered micro-interactions
- Scroll-triggered animations and hover states that surprise
- Prioritize CSS-only solutions for web
- Use Motion library for React when available
- Match complexity to aesthetic: maximalist → elaborate effects, minimalist → subtle precision
SPATIAL COMPOSITION
Create unexpected layouts:
- Asymmetry and overlap
- Diagonal flow and grid-breaking elements
- Generous negative space OR controlled density
- Cross-background elements for depth without shadows
VISUAL DETAILS
Create atmosphere and depth rather than defaulting to solid colors:
- Gradient meshes, noise textures, geometric patterns
- Layered transparencies, dramatic shadows
- Decorative borders, custom cursors, grain overlays
- Accent borders on cards, nav items, alerts, headlines
- Background variety: subtle gradients (hues within 30°), repeating patterns, geometric shapes
MOBILE-SPECIFIC PATTERNS
Touch Targets
| Platform |
Minimum |
Comfortable |
| iOS |
44×44 pt |
48×48 pt |
| Android |
48×48 dp |
56×56 dp |
Add invisible padding if icon is smaller than minimum target.
Safe Areas
Respect device notches and home indicators. Never place interactive elements in unsafe areas.
Navigation Patterns
| Pattern |
Use Case |
| Bottom navigation |
3-5 primary destinations, icons + labels |
| Tab bar (top) |
Content categories |
| Navigation drawer |
Many destinations |
| Bottom sheet |
Contextual actions |
Mobile Forms
- Full-width inputs with horizontal padding
- Label above or floating
- Helper text below, error state with red border + message
- Primary button: Full width at bottom or FAB
Loading States
- Skeleton screens (preferred over spinners)
- Shimmer effect for content placeholders
- Pull to refresh for list content
Empty States
Design empty states as first impressions:
- Illustration or icon to grab attention
- Clear title and helpful description
- Call-to-action button
- Hide irrelevant UI (tabs, filters that don't work yet)
FINISHING TOUCHES
Supercharge Defaults
- Bulleted lists → contextual icons (checkmarks, arrows, padlocks)
- Blockquotes → oversized quote marks with accent color
- Links → custom thick/colorful underlines
- Form controls → brand-colored selected states
Fewer Borders
Too many borders = busy design. Alternatives:
- Box shadow:
0 0 0 1px rgba(0,0,0,0.05)
- Different background colors for adjacent sections
- Extra spacing between elements
Working with Images
- Text on images: Semi-transparent overlay, lower contrast, colorize, or text shadow
- Don't scale icons beyond intended size (16-24px) — enclose in shape instead
- User content: Fixed containers +
object-fit: cover + subtle inner shadow
ANTI-PATTERNS
| Anti-Pattern |
Fix |
| Generic fonts (Inter, Roboto, Arial, system-ui) |
Choose distinctive, characterful typefaces |
| Purple gradients on white backgrounds |
Commit to a cohesive, context-specific palette |
| Predictable layouts and component patterns |
Use asymmetry, overlap, unexpected composition |
| Grey text on colored backgrounds |
Hand-pick colors based on background hue |
| Filling the whole screen when content needs less |
Use max-width, let content breathe |
| Ambiguous spacing between groups |
More space between groups than within |
| Relative sizing across breakpoints |
Large elements shrink faster than small ones |
| Touch targets under 44pt/48dp |
Add invisible padding to meet minimums |
| Ignoring safe areas (notch, home indicator) |
Respect platform safe area insets |
| Color as sole communication channel |
Add icons, text, or patterns alongside color |
| Cookie-cutter design across generations |
Every design must be unique and context-specific |
| Converging on common font/color choices |
Vary themes, fonts, and aesthetics deliberately |
Output Guidance
When generating frontend code, structure output as:
- Design direction — 1-2 sentences on aesthetic approach and key decisions
- Code — complete, working implementation (HTML/CSS/JS, React, Flutter, etc.)
- Responsive notes — breakpoint behavior if applicable
Lead with code, not explanation. Show the design, don't describe it.
REFERENCE FILES
For detailed guidance on specific topics, read references/ when needed:
| Topic |
File |
When to Read |
| Visual hierarchy deep-dive |
hierarchy.md |
Balancing element importance, label strategies |
| Color system details |
color-system.md |
HSL shade generation, accessibility, grey temperature |
| Mobile components |
mobile-components.md |
Navigation, lists, forms, feedback, loading patterns |
1---2name: frontend-design3description: Production-grade UI for web and mobile — design systems, visual hierarchy, distinctive aesthetics. Use for frontend implementation and design decisions.4---56# Frontend Design78Production-grade UI design skill combining design system thinking with bold aesthetic execution. Covers web (HTML/CSS/JS, React, Vue, etc.) and mobile (Flutter, React Native, SwiftUI, etc.).910---1112## MODE DETECTION (FIRST STEP)1314Analyze the user's request to determine platform:1516| Request Pattern | Mode | Focus |17|----------------|------|-------|18| HTML, CSS, JS, React, Vue, Next.js, landing page, dashboard, web app | `WEB` | Browser viewport, responsive breakpoints, CSS animations |19| Flutter, React Native, SwiftUI, Kotlin, mobile app, iOS, Android | `MOBILE` | Touch targets, safe areas, platform depth, native patterns |20| Unspecified | `WEB` | Default to web unless context suggests mobile |2122---2324## DESIGN PROCESS (BEFORE CODING)2526Before writing any code, commit to a **BOLD aesthetic direction** by answering four questions:27281. **Purpose**: What problem does this interface solve? Who uses it?292. **Tone**: Pick a clear direction — brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian. Commit fully.303. **Constraints**: Technical requirements (framework, performance, accessibility)314. **Differentiation**: What is the ONE thing someone will remember about this interface?3233CRITICAL: Choose a clear conceptual direction and execute with precision. Bold maximalism and refined minimalism both work — the key is intentionality, not intensity.3435Then implement working code that is:3637- Production-grade and functional38- Visually striking and memorable39- Cohesive with a clear aesthetic point-of-view40- Meticulously refined in every detail4142### Design-First Workflow43441. Design the actual piece of functionality first — not the shell, navigation, or chrome452. Work in grayscale first — add color after hierarchy is clear463. Establish systems (spacing, type, color) before detailed design474. Details come later — work in cycles4849---5051## DESIGN SYSTEMS5253### Spacing Scale5455Constrain to a fixed set. Values should never be closer than ~25% apart.5657**Web (px):**5859| Token | Size | Use Case |60|-------|------|----------|61| 1 | 4 | Micro gaps |62| 2 | 8 | Tight, within components |63| 3 | 12 | Related elements |64| 4 | 16 | Section padding |65| 6 | 24 | Between sections |66| 8 | 32 | Major separation |67| 12 | 48 | Large gaps |68| 16 | 64 | Hero spacing |69| 24 | 96 | Maximum separation |7071**Mobile (dp/pt):**7273| Token | Size | Use Case |74|-------|------|----------|75| xs | 4 | Micro gaps, icon padding |76| sm | 8 | Within components |77| md | 12 | Related elements |78| base | 16 | Standard screen padding |79| lg | 24 | Between sections |80| xl | 32 | Major separation |81| 2xl | 48 | Tablets, hero areas |8283### Type Scale8485**Web (px):**8687| Size | Role |88|------|------|89| 12 | Labels, meta, fine print |90| 14 | Body text, default |91| 16 | Emphasis, large body |92| 18 | Subheadings |93| 20-24 | Card/section titles |94| 30-36 | Page headings |95| 48-72 | Hero/display text |9697**Mobile (sp/pt):**9899| Size | Role |100|------|------|101| 11-12 | Captions, labels |102| 14 | Body text, default |103| 16 | Emphasized body |104| 18-20 | Subheadings |105| 24 | Screen titles |106| 28-34 | Large titles (iOS style) |107108### Shadow Scale109110| Level | Use Case | Web CSS | Mobile Elevation |111|-------|----------|---------|-----------------|112| 1 | Buttons, subtle lift | `0 1px 2px rgba(0,0,0,0.05)` | 1-2dp |113| 2 | Cards, inputs | `0 2px 4px rgba(0,0,0,0.1)` | 4dp |114| 3 | Dropdowns, popovers | `0 4px 8px rgba(0,0,0,0.1)` | 8dp |115| 4 | Sticky headers, drawers | `0 8px 16px rgba(0,0,0,0.1)` | 16dp |116| 5 | Modals, dialogs | `0 16px 32px rgba(0,0,0,0.15)` | 24dp |117118**Premium shadows:** Combine two shadows — a large soft one (direct light) and a tight dark one (ambient occlusion).119120```css121box-shadow:122 0 10px 25px rgba(0, 0, 0, 0.15), /* direct light */123 0 2px 4px rgba(0, 0, 0, 0.12); /* ambient */124```125126---127128## VISUAL HIERARCHY129130Every element sits at one of three levels:131132- **Primary**: Dark color, bold weight — headlines, key actions (one per section)133- **Secondary**: Grey — supporting text, dates, descriptions134- **Tertiary**: Light grey — metadata, copyright, timestamps135136### Key Principles137138- Size isn't everything — use weight and color before increasing size139- **Emphasize by de-emphasizing**: Make competing elements softer instead of making the target louder140- Labels are a last resort — combine with values ("12 left in stock" > "Stock: 12")141- Semantics are secondary to hierarchy (h1 doesn't have to be the biggest element)142- Icons are visually "heavy" — give them softer colors to balance with text143144### Button Hierarchy145146| Level | Style | Rule |147|-------|-------|------|148| **Primary** | Solid, high-contrast background | One per section maximum |149| **Secondary** | Outline or low-contrast fill | Clear but not competing |150| **Tertiary** | Styled like links | Discoverable but unobtrusive |151152Destructive actions: Not always big/red/bold. On confirmation dialogs, yes. On regular pages where delete is secondary, use tertiary styling.153154---155156## COLOR SYSTEM157158### Use HSL159160HSL (Hue, Saturation, Lightness) is intuitive for palette creation. Avoid hex for design decisions.161162### Build Complete Palettes163164| Category | Shades | Purpose |165|----------|--------|---------|166| Greys | 8-10 | Text, backgrounds, panels, borders |167| Primary | 5-10 | Actions, active states, links |168| Accents | 5-10 each | Success, warning, error, feature highlights |169170### Shade Definition Process1711721. **Pick base (500)**: Works as button background1732. **Pick edges**: 100 (tinted background), 900 (text on light bg)1743. **Fill gaps**: 700, 300 → 800, 600, 400, 200175176### Saturation & Hue Adjustments177178- Increase saturation as lightness moves away from 50% (extremes look washed out otherwise)179- To lighten: Rotate hue toward 60°, 180°, or 300° (perceived bright hues)180- To darken: Rotate hue toward 0°, 120°, or 240° (perceived dark hues)181- Don't rotate more than 20-30° (looks like different color)182183### Grey Temperature184185- **Cool greys**: Saturate with blue186- **Warm greys**: Saturate with yellow/orange187- True black looks unnatural — start with really dark grey188189### Accessibility Requirements190191| Text Type | Minimum Contrast Ratio |192|-----------|----------------------|193| Normal text (<18px) | 4.5:1 |194| Large text (18px+ bold or 24px+) | 3:1 |195196Never rely on color alone for meaning. Add icons, text, or patterns.197198---199200## TYPOGRAPHY201202### Font Selection203204Choose distinctive, characterful fonts. Pair a bold display font with a refined body font.205206**Filtering quality fonts**: Ignore typefaces with less than 5 weights (10+ styles including italics). This eliminates 85% of poor choices.207208**NEVER use**: Arial, Inter, Roboto, system-ui, Space Grotesk. These produce forgettable, generic output.209210### Line-Height Rules211212- Small text → taller line-height (1.5-2.0)213- Large headlines → shorter line-height (1.0-1.2)214- Wider content → increase line-height (easier to track to next line)215216### Line Length217218Optimal: 45-75 characters per line (20-35em width). Wider = harder to read.219220### Letter-Spacing221222- Tighten for headlines (fonts optimized for body have wider spacing)223- Increase for ALL-CAPS text (improves readability)224- Trust the typeface designer for body text225226### Alignment227228- Default: Left-aligned229- Center: Only for headlines and short blocks (under 2-3 lines)230- Right-align numbers for column comparison231- Baseline-align mixed font sizes on a single line (not center)232233---234235## LAYOUT & SPACING236237### Start with Too Much White Space238239Start with generous spacing, then remove until satisfied. "A little too much" in isolation = "just enough" in context.240241### Don't Fill the Whole Screen2422431400px available doesn't mean use 1400px. If content needs 600px, use 600px.244245### Grids Are Overrated24624712-column grids cause more harm than good:248249- Sidebars at 25% get too wide on large screens, too narrow on small250- Use fixed-width sidebar + flexible content area251- Use `max-width` on components, only shrink when necessary252253### Avoid Ambiguous Spacing254255More space **between** groups than **within** groups. Applies to:256257- Form labels and inputs258- Section headings in articles259- List items and groups260- Horizontal component layouts261262### Responsive Sizing263264Large elements shrink faster than small elements across breakpoints. Don't use fixed ratios.265266---267268## DEPTH & MOTION269270### Emulating Light271272Light comes from above:273274- **Raised elements** (buttons, cards): Lighter top edge + shadow below275- **Inset elements** (inputs, wells): Lighter bottom edge + shadow above276277### Interactive Shadows278279- Drag: Increase shadow (element pops above others)280- Press: Decrease shadow (pressed into surface)281282### Flat Design with Depth283284Depth without shadows: lighter than background = raised, darker = inset. Solid shadows (no blur) maintain flat aesthetic.285286### Platform-Aware Depth (Mobile)287288| Platform | Approach |289|----------|----------|290| **iOS** | Subtle shadows, blur/frosted glass, less elevation |291| **Android** | Material elevation system, layered surfaces |292293### Motion294295Focus on high-impact moments:296297- One well-orchestrated page load with staggered reveals (`animation-delay`) > scattered micro-interactions298- Scroll-triggered animations and hover states that surprise299- Prioritize CSS-only solutions for web300- Use Motion library for React when available301- Match complexity to aesthetic: maximalist → elaborate effects, minimalist → subtle precision302303---304305## SPATIAL COMPOSITION306307Create unexpected layouts:308309- Asymmetry and overlap310- Diagonal flow and grid-breaking elements311- Generous negative space OR controlled density312- Cross-background elements for depth without shadows313314---315316## VISUAL DETAILS317318Create atmosphere and depth rather than defaulting to solid colors:319320- Gradient meshes, noise textures, geometric patterns321- Layered transparencies, dramatic shadows322- Decorative borders, custom cursors, grain overlays323- Accent borders on cards, nav items, alerts, headlines324- Background variety: subtle gradients (hues within 30°), repeating patterns, geometric shapes325326---327328## MOBILE-SPECIFIC PATTERNS329330### Touch Targets331332| Platform | Minimum | Comfortable |333|----------|---------|-------------|334| iOS | 44×44 pt | 48×48 pt |335| Android | 48×48 dp | 56×56 dp |336337Add invisible padding if icon is smaller than minimum target.338339### Safe Areas340341Respect device notches and home indicators. Never place interactive elements in unsafe areas.342343### Navigation Patterns344345| Pattern | Use Case |346|---------|----------|347| Bottom navigation | 3-5 primary destinations, icons + labels |348| Tab bar (top) | Content categories |349| Navigation drawer | Many destinations |350| Bottom sheet | Contextual actions |351352### Mobile Forms353354- Full-width inputs with horizontal padding355- Label above or floating356- Helper text below, error state with red border + message357- Primary button: Full width at bottom or FAB358359### Loading States360361- Skeleton screens (preferred over spinners)362- Shimmer effect for content placeholders363- Pull to refresh for list content364365### Empty States366367Design empty states as first impressions:368369- Illustration or icon to grab attention370- Clear title and helpful description371- Call-to-action button372- Hide irrelevant UI (tabs, filters that don't work yet)373374---375376## FINISHING TOUCHES377378### Supercharge Defaults379380- Bulleted lists → contextual icons (checkmarks, arrows, padlocks)381- Blockquotes → oversized quote marks with accent color382- Links → custom thick/colorful underlines383- Form controls → brand-colored selected states384385### Fewer Borders386387Too many borders = busy design. Alternatives:388389- Box shadow: `0 0 0 1px rgba(0,0,0,0.05)`390- Different background colors for adjacent sections391- Extra spacing between elements392393### Working with Images394395- Text on images: Semi-transparent overlay, lower contrast, colorize, or text shadow396- Don't scale icons beyond intended size (16-24px) — enclose in shape instead397- User content: Fixed containers + `object-fit: cover` + subtle inner shadow398399---400401## ANTI-PATTERNS402403| Anti-Pattern | Fix |404|-------------|-----|405| Generic fonts (Inter, Roboto, Arial, system-ui) | Choose distinctive, characterful typefaces |406| Purple gradients on white backgrounds | Commit to a cohesive, context-specific palette |407| Predictable layouts and component patterns | Use asymmetry, overlap, unexpected composition |408| Grey text on colored backgrounds | Hand-pick colors based on background hue |409| Filling the whole screen when content needs less | Use max-width, let content breathe |410| Ambiguous spacing between groups | More space between groups than within |411| Relative sizing across breakpoints | Large elements shrink faster than small ones |412| Touch targets under 44pt/48dp | Add invisible padding to meet minimums |413| Ignoring safe areas (notch, home indicator) | Respect platform safe area insets |414| Color as sole communication channel | Add icons, text, or patterns alongside color |415| Cookie-cutter design across generations | Every design must be unique and context-specific |416| Converging on common font/color choices | Vary themes, fonts, and aesthetics deliberately |417418---419420## Output Guidance421422When generating frontend code, structure output as:4234241. **Design direction** — 1-2 sentences on aesthetic approach and key decisions4252. **Code** — complete, working implementation (HTML/CSS/JS, React, Flutter, etc.)4263. **Responsive notes** — breakpoint behavior if applicable427428Lead with code, not explanation. Show the design, don't describe it.429430---431432## REFERENCE FILES433434For detailed guidance on specific topics, read `references/` when needed:435436| Topic | File | When to Read |437|-------|------|--------------|438| Visual hierarchy deep-dive | [hierarchy.md](references/hierarchy.md) | Balancing element importance, label strategies |439| Color system details | [color-system.md](references/color-system.md) | HSL shade generation, accessibility, grey temperature |440| Mobile components | [mobile-components.md](references/mobile-components.md) | Navigation, lists, forms, feedback, loading patterns |