Distinctive Design
Bold typography, cohesive colors, orchestrated motion.
# Distinctive Frontend Design
Create visually distinctive, high-impact frontend interfaces that avoid generic "AI slop" aesthetics. This skill applies the four-vector approach: typography, color/theme, motion, and backgrounds.
## Core Principles
**Avoid distributional convergence**: Reject default choices (Inter/Roboto fonts, purple gradients, minimal animations). Instead, make bold, cohesive design decisions that create memorable interfaces.
**Think in systems**: Use CSS variables, design tokens, and coordinated choices across all four dimensions rather than isolated tweaks.
## 1. Typography - Use Extremes
### Font Weight Strategy
- **Go to extremes**: Use 100-200 (thin) vs 800-900 (black), not safe 400 vs 600
- **Create hierarchy through weight contrast**, not just size
- **Example combinations**:
- Headers: 900 weight, body: 200 weight
- Headers: 100 weight (elegant), body: 500 weight
### Font Pairing
Avoid generic system fonts. Use distinctive pairings:
```css
/* Option 1: Geometric Sans + Monospace */
--font-display: 'Space Grotesk', sans-serif;
--font-body: 'Inter', sans-serif;
--font-mono: 'JetBrains Mono', monospace;
/* Option 2: Serif Display + Sans Body */
--font-display: 'Playfair Display', serif;
--font-body: 'Source Sans 3', sans-serif;
/* Option 3: Condensed + Wide */
--font-display: 'Bebas Neue', cursive;
--font-body: 'DM Sans', sans-serif;
/* Option 4: Variable Font Extremes */
--font-main: 'Recursive', sans-serif;
/* Then use font-weight: 300-1000 range */
```
### Implementation Pattern
```css
:root {
--font-display: 'Space Grotesk', sans-serif;
--font-body: 'Inter', sans-serif;
/* Use extreme weights */
--weight-thin: 100;
--weight-light: 200;
--weight-bold: 800;
--weight-black: 900;
}
h1, h2, h3 {
font-family: var(--font-display);
font-weight: var(--weight-black);
letter-spacing: -0.03em; /* Tight tracking for bold weights */
}
body, p {
font-family: var(--font-body);
font-weight: var(--weight-light);
letter-spacing: 0.01em; /* Slight tracking for readability */
}
```
## 2. Color & Theme - Commit to Cohesion
### Strategy
- **Draw from cultural references**: Movies, art movements, IDE themes, nature
- **Use CSS variables** for systematic color application
- **Avoid**: Safe blues/purples, low-contrast pastels
### Theme Examples
```css
/* Theme 1: Cyberpunk (Blade Runner inspired) */
:root {
--bg-primary: #0a0e27;
--bg-secondary: #1a1f3a;
--accent-1: #ff2e97; /* Hot pink */
--accent-2: #00d9ff; /* Cyan */
--accent-3: #ffd700; /* Gold */
--text-primary: #e4f1ff;
--text-secondary: #8b9dc3;
}
/* Theme 2: Brutalist (Raw concrete) */
:root {
--bg-primary: #f5f5f0;
--bg-secondary: #ffffff;
--accent-1: #ff0000;
--accent-2: #000000;
--text-primary: #1a1a1a;
--border: 3px solid #000000;
}
/* Theme 3: Vaporwave */
:root {
--bg-primary: #1a0033;
--bg-secondary: #2d1b4e;
--accent-1: #ff71ce; /* Pink */
--accent-2: #01cdfe; /* Cyan */
--accent-3: #b967ff; /* Purple */
--accent-4: #05ffa1; /* Mint */
--text-primary: #fffb96;
}
/* Theme 4: Nordic Minimalism */
:root {
--bg-primary: #2e3440;
--bg-secondary: #3b4252;
--accent-1: #88c0d0; /* Frost blue */
--accent-2: #bf616a; /* Aurora red */
--accent-3: #a3be8c; /* Aurora green */
--text-primary: #eceff4;
--text-secondary: #d8dee9;
}
```
### Application Pattern
```css
body {
background: var(--bg-primary);
color: var(--text-primary);
}
.card {
background: var(--bg-secondary);
border: 1px solid var(--accent-1);
}
.cta-button {
background: var(--accent-1);
color: var(--bg-primary);
}
.highlight {
color: var(--accent-2);
}
```
## 3. Motion - Orchestrated Page Load
### Strategy
- **Prioritize page-load choreography** over scattered micro-interactions
- **Use staggered reveals** to guide attention
- **Create entrance sequences** that feel intentional
### Implementation Patterns
```css
/* Base setup: Elements start invisible */
.fade-in {
opacity: 0;
animation: fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
/* Stagger delays */
.stagger-1 { animation-delay: 0.1s; }
.stagger-2 { animation-delay: 0.2s; }
.stagger-3 { animation-delay: 0.3s; }
.stagger-4 { animation-delay: 0.4s; }
.stagger-5 { animation-delay: 0.5s; }
/* Smooth easing curve */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Alternative: Slide from side */
@keyframes slideInRight {
from {
opacity: 0;
transform: translateX(-40px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* Scale entrance for hero elements */
@keyframes scaleIn {
from {
opacity: 0;
transform: scale(0.9);
}
to {
opacity: 1;
transform: scale(1);
}
}
```
### React/JavaScript Pattern
```javascript
// Add classes progressively
useEffect(() => {
const elements = document.querySelectorAll('.animate-on-load');
elements.forEach((el, index) => {
el.classList.add('fade-in', `stagger-${index + 1}`);
});
}, []);
// Or use Framer Motion
import { motion } from 'framer-motion';
const container = {
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: {
staggerChildren: 0.1
}
}
};
const item = {
hidden: { opacity: 0, y: 20 },
show: { opacity: 1, y: 0 }
};
Supporting text with extreme weight contrast
Bold typography, cohesive colors, orchestrated motion.