--- name: design-excellence description: > Design system and anti-patterns for professional UI. Ensures apps don't look "AI generated". Defines color palettes, typography, spacing, animations, and common anti-patterns to avoid. Used by Design Reviewer sub-agent to polish UI. Triggers: design review, polish UI, improve aesthetics, looks like AI made it, design system, style guide, make it beautiful. --- # Design Excellence Make AI-built apps look human-crafted. No generic templates. No obvious patterns. ## The Craft Standard If someone can tell it was AI-generated, we failed. Good design is invisible. Users should feel the app is professional, not notice it follows a template. ## Color Philosophy ### The Problem with AI Color Choices AI tends to pick: - Purple gradients on white (Lovable default look) - Overly saturated accent colors - Too many colors in one interface - Gradients where solid colors work better ### Our Approach: Restraint **Base Palette (Default)** ```css /* Use Tailwind's slate scale for neutrals */ --background: slate-50 /* Page background */ --surface: white /* Cards, modals */ --border: slate-200 /* Dividers, borders */ --text-primary: slate-900 /* Headlines */ --text-secondary: slate-600 /* Body text */ --text-muted: slate-400 /* Placeholders, hints */ ``` **Accent Colors (Pick ONE per app)** ```css /* Default: Blue (professional, trustworthy) */ --accent: blue-600 --accent-hover: blue-700 --accent-light: blue-50 /* Alternative by app type: */ /* Finance/Banking → Green (money) */ /* Health/Wellness → Teal (calm) */ /* Food/Restaurant → Orange (appetite) */ /* Creative/Design → Purple (creativity) */ /* Urgent/Alert → Red (attention) */ ``` **Rules** 1. ONE accent color per app, no exceptions 2. Use accent sparingly - buttons, links, highlights only 3. Never gradient on primary buttons 4. Background is white or near-white, not colored 5. Dark mode: invert properly, don't just make it gray ## Typography Rules ### The Font Stack ```css /* Don't specify Inter everywhere - use system fonts */ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; /* This looks native on every platform */ ``` ### Type Scale (Tailwind classes) ``` Page Title: text-2xl font-semibold (24px) Section Title: text-lg font-medium (18px) Card Title: text-base font-medium (16px) Body: text-sm (14px) Small/Caption: text-xs text-slate-500 (12px) ``` ### Anti-Patterns ❌ Don't use `font-bold` on everything ❌ Don't mix too many font sizes in one card ❌ Don't use ALL CAPS for long text ❌ Don't center-align body paragraphs ❌ Don't use pure black (#000) - use slate-900 ### Good Patterns ✅ Headlines: semibold or medium, never regular ✅ Body: regular weight, good line-height (1.5-1.6) ✅ Keep hierarchy: max 3 sizes per component ✅ Left-align most text (except headings in centered layouts) ## Spacing & Layout ### Spacing Scale Use Tailwind's default scale consistently: ``` 4 (1rem/16px) - Small gaps, inline elements 6 (1.5rem/24px) - Medium gaps, between components 8 (2rem/32px) - Large gaps, between sections 12 (3rem/48px) - XL gaps, page sections ``` ### Page Layout ```tsx // Standard page container
{/* Page title */}

Dashboard

{/* Content sections with consistent spacing */}
{/* Section content */}
``` ### Card Internal Spacing ```tsx {/* Reduce default padding */} Title {/* Content with vertical gaps */} ``` ### Anti-Patterns ❌ Inconsistent padding (p-3 here, p-5 there) ❌ Too little whitespace (cramped feel) ❌ Too much whitespace (disconnected feel) ❌ Different gap sizes for same-level elements
## Motion & Animation ### Philosophy Animation should: - Feel natural, not flashy - Provide feedback, not distraction - Be fast (150-300ms), not slow - Be subtle, not dramatic ### Standard Transitions ```tsx // Hover states - use transition-colors or transition-all
// Card hover - subtle lift // Button hover - built into shadcn, don't override ``` ### Framer Motion Patterns ```tsx // Page transitions // List stagger {items.map(item => ( {item.content} ))} // Micro-interaction - button tap Click me ``` ### Animation Timing - Hover effects: 150ms - Small transitions: 200ms - Page transitions: 300ms - Complex animations: 400-500ms max ### Anti-Patterns ❌ Bounce effects (feels cheap) ❌ Slow animations (>500ms feels sluggish) ❌ Animation on every element (overwhelming) ❌ Spinning loaders everywhere (use skeleton instead) ❌ Dramatic entrance animations ## Component Design Patterns ### Cards ```tsx // Clean card - no excessive decoration {/* Content */} // DO NOT: rounded-3xl, heavy shadows, gradient borders ``` ### Buttons ```tsx // Primary action // Secondary action // Destructive action // Icon button // DO NOT: gradient buttons, 3D effects, icons in primary buttons (usually) ``` ### Forms ```tsx // Clean form layout
// DO NOT: inline labels, floating labels (unless requested), icons inside inputs ``` ### Tables ```tsx // Clean table Name Status Actions John Smith Active
// DO NOT: zebra stripes (outdated), heavy borders, centered content ```
## AI-Generated Red Flags ### The "Lovable Look" (Avoid) - Purple/violet as primary color - Gradient backgrounds on white cards - Rounded-3xl on everything - Emoji in headers - "Welcome back, User! 👋" - Generic stock-photo-style illustrations ### The "Bootstrap Look" (Avoid) - Heavy drop shadows - Rounded pill buttons - Blue links on everything - Card decks with equal heights - Jumbotron-style headers ### The "Material Look" (Avoid, unless requested) - Floating action buttons - Raised cards everywhere - Ripple effects on everything - Hamburger menu on desktop ### What Makes It Look "Human-Made" 1. **Restraint** - Not every feature is highlighted 2. **Hierarchy** - Clear primary, secondary, tertiary 3. **Whitespace** - Room to breathe 4. **Consistency** - Same patterns repeated 5. **Subtle details** - Tiny touches that don't scream 6. **Real content** - No placeholder text visible ## Design Review Checklist ### Color Check - [ ] Only ONE accent color used - [ ] No gradients on white backgrounds - [ ] No pure black text - [ ] Sufficient contrast for accessibility ### Typography Check - [ ] Max 3 font sizes per component - [ ] Proper hierarchy (semibold titles, regular body) - [ ] No ALL CAPS paragraphs - [ ] Line height is readable (1.5+) ### Spacing Check - [ ] Consistent padding throughout - [ ] Enough whitespace between sections - [ ] Content doesn't feel cramped - [ ] Mobile spacing is proportional ### Animation Check - [ ] Transitions are subtle (150-300ms) - [ ] No bounce/spring effects - [ ] Loading uses skeleton, not spinner - [ ] Hover states provide feedback ### Component Check - [ ] Cards don't have excessive decoration - [ ] Buttons follow hierarchy (primary/secondary) - [ ] Forms are cleanly laid out - [ ] Tables are readable and interactive ### Final Check - [ ] Would a user know this is AI-made? (Should be NO) - [ ] Does it look like a real product? (Should be YES) - [ ] Is it consistent with modern SaaS apps? (Should be YES)