get-shit-pretty 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +15 -9
- package/agents/{gsp-accessibility-auditor.md → gsp-auditor.md} +17 -14
- package/agents/gsp-brand-auditor.md +97 -0
- package/agents/gsp-brand-strategist.md +64 -27
- package/agents/{gsp-design-engineer.md → gsp-builder.md} +12 -9
- package/agents/gsp-campaign-director.md +50 -11
- package/agents/gsp-codebase-scanner.md +171 -0
- package/agents/gsp-critic.md +18 -13
- package/agents/gsp-designer.md +126 -0
- package/agents/gsp-identity-designer.md +90 -0
- package/agents/gsp-project-researcher.md +102 -0
- package/agents/gsp-researcher.md +54 -18
- package/agents/gsp-reviewer.md +66 -0
- package/agents/gsp-scoper.md +103 -0
- package/agents/gsp-system-architect.md +91 -26
- package/agents/gsp-verbal-strategist.md +84 -0
- package/bin/install.js +161 -5
- package/commands/gsp/brand-audit.md +116 -0
- package/commands/gsp/brand-discover.md +17 -0
- package/commands/gsp/brand-identity.md +200 -0
- package/commands/gsp/brand-patterns.md +223 -0
- package/commands/gsp/brand-research.md +99 -0
- package/commands/gsp/brand-strategy.md +140 -0
- package/commands/gsp/brand-system.md +17 -0
- package/commands/gsp/brand-verbal.md +94 -0
- package/commands/gsp/brand.md +9 -83
- package/commands/gsp/brief.md +142 -0
- package/commands/gsp/build.md +49 -41
- package/commands/gsp/critique.md +140 -0
- package/commands/gsp/design.md +65 -50
- package/commands/gsp/discover.md +17 -0
- package/commands/gsp/doctor.md +319 -0
- package/commands/gsp/help.md +85 -38
- package/commands/gsp/identity.md +18 -0
- package/commands/gsp/launch.md +55 -35
- package/commands/gsp/new-project.md +5 -86
- package/commands/gsp/new.md +237 -0
- package/commands/gsp/plan.md +18 -0
- package/commands/gsp/progress.md +58 -26
- package/commands/gsp/research.md +91 -34
- package/commands/gsp/review.md +115 -59
- package/commands/gsp/strategy.md +18 -0
- package/commands/gsp/system.md +8 -65
- package/commands/gsp/update.md +102 -0
- package/commands/gsp/verbal.md +18 -0
- package/package.json +2 -2
- package/prompts/01-design-system-architect.md +35 -3
- package/prompts/03-ui-ux-pattern-master.md +11 -1
- package/prompts/09-design-to-code-translator.md +9 -0
- package/prompts/10-project-scoper.md +51 -0
- package/prompts/11-deliverable-reviewer.md +58 -0
- package/prompts/12-project-researcher.md +57 -0
- package/references/brand-archetypes.md +151 -0
- package/references/brand-prism.md +138 -0
- package/references/chunk-format.md +48 -0
- package/references/design-trends.md +47 -0
- package/references/positioning-frameworks.md +197 -0
- package/references/questioning.md +1 -1
- package/references/trends/aurora-gradients.md +245 -0
- package/references/trends/bento-grid.md +473 -0
- package/references/trends/claymorphism.md +232 -0
- package/references/trends/dark-mode-oled.md +282 -0
- package/references/trends/glassmorphism.md +455 -0
- package/references/trends/kinetic-typography.md +277 -0
- package/references/trends/liquid-glass.md +236 -0
- package/references/trends/micro-interactions.md +307 -0
- package/references/trends/neubrutalism.md +276 -0
- package/references/voice-tone.md +193 -0
- package/scripts/gsp-statusline.js +1 -1
- package/templates/branding/brief.md +74 -0
- package/templates/branding/config.json +26 -0
- package/templates/branding/roadmap.md +43 -0
- package/templates/branding/state.md +29 -0
- package/templates/changelog.md +4 -0
- package/templates/codebase-inventory.md +71 -0
- package/templates/exports-index.md +93 -0
- package/templates/manifest.md +19 -0
- package/templates/phases/brief.md +53 -0
- package/templates/phases/build.md +24 -48
- package/templates/phases/critique.md +68 -0
- package/templates/phases/design.md +54 -32
- package/templates/phases/discover.md +60 -0
- package/templates/phases/identity.md +78 -0
- package/templates/phases/launch.md +48 -55
- package/templates/phases/research.md +75 -47
- package/templates/phases/review.md +27 -75
- package/templates/phases/strategy.md +67 -0
- package/templates/phases/system.md +84 -78
- package/templates/phases/verbal.md +63 -0
- package/templates/{project.md → projects/brief.md} +13 -17
- package/templates/projects/config.json +32 -0
- package/templates/projects/roadmap.md +59 -0
- package/templates/{state.md → projects/state.md} +19 -9
- package/agents/gsp-spec-engineer.md +0 -121
- package/agents/gsp-ui-designer.md +0 -59
- package/commands/gsp/spec.md +0 -88
- package/templates/config.json +0 -26
- package/templates/phases/brand.md +0 -60
- package/templates/phases/spec.md +0 -46
- package/templates/roadmap.md +0 -62
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Positioning Frameworks
|
|
2
|
+
|
|
3
|
+
## 1. The Golden Circle (Simon Sinek)
|
|
4
|
+
|
|
5
|
+
### Structure
|
|
6
|
+
```
|
|
7
|
+
┌─────────┐
|
|
8
|
+
│ WHY │ ← Purpose (start here)
|
|
9
|
+
├─────────┤
|
|
10
|
+
│ HOW │ ← Process
|
|
11
|
+
├─────────┤
|
|
12
|
+
│ WHAT │ ← Product
|
|
13
|
+
└─────────┘
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Why (Purpose)
|
|
17
|
+
- Why does the brand exist beyond making money?
|
|
18
|
+
- What belief drives the organization?
|
|
19
|
+
- What cause does it champion?
|
|
20
|
+
|
|
21
|
+
**Test:** "We believe that..." — if the answer is compelling and unique, it's a strong Why.
|
|
22
|
+
|
|
23
|
+
### How (Process)
|
|
24
|
+
- How does the brand deliver on its purpose?
|
|
25
|
+
- What differentiating actions or values guide the work?
|
|
26
|
+
- What's the unique approach?
|
|
27
|
+
|
|
28
|
+
### What (Product)
|
|
29
|
+
- What does the brand actually offer?
|
|
30
|
+
- Products, services, features
|
|
31
|
+
- This is what most brands lead with — but the strongest brands lead with Why
|
|
32
|
+
|
|
33
|
+
### Example: Apple
|
|
34
|
+
- **Why:** We believe in challenging the status quo and thinking differently
|
|
35
|
+
- **How:** We make beautifully designed, intuitive products
|
|
36
|
+
- **What:** We make computers, phones, and digital services
|
|
37
|
+
|
|
38
|
+
### Common Mistakes
|
|
39
|
+
- Starting with What instead of Why
|
|
40
|
+
- Making Why too generic ("we want to make the world better")
|
|
41
|
+
- Confusing How with features instead of values
|
|
42
|
+
- Having a Why that doesn't connect to What
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 2. Brand Positioning Statement
|
|
47
|
+
|
|
48
|
+
### Formula
|
|
49
|
+
```
|
|
50
|
+
For [TARGET AUDIENCE] who [NEED/WANT],
|
|
51
|
+
[BRAND] is the [CATEGORY/FRAME OF REFERENCE] that [KEY BENEFIT]
|
|
52
|
+
because [REASON TO BELIEVE].
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Components
|
|
56
|
+
|
|
57
|
+
**Target Audience:** Specific, behavioral segment (not just demographics)
|
|
58
|
+
- Bad: "millennials"
|
|
59
|
+
- Good: "health-conscious professionals who want nutritious meals without cooking time"
|
|
60
|
+
|
|
61
|
+
**Need/Want:** The job-to-be-done or unmet need
|
|
62
|
+
- Should be emotional or functional, not feature-based
|
|
63
|
+
- Bad: "need a faster app"
|
|
64
|
+
- Good: "want to feel in control of their finances"
|
|
65
|
+
|
|
66
|
+
**Category:** Where the brand competes (can be redefined strategically)
|
|
67
|
+
- Traditional: "the energy drink"
|
|
68
|
+
- Reframed: "the performance beverage" (broader opportunity)
|
|
69
|
+
|
|
70
|
+
**Key Benefit:** The single most important differentiator
|
|
71
|
+
- Must be ownable (competitors can't easily claim it)
|
|
72
|
+
- Must be relevant (audience actually cares)
|
|
73
|
+
- Must be believable (brand can deliver)
|
|
74
|
+
|
|
75
|
+
**Reason to Believe:** Proof the brand can deliver the benefit
|
|
76
|
+
- Heritage, technology, ingredients, endorsements, track record
|
|
77
|
+
|
|
78
|
+
### Example: Volvo
|
|
79
|
+
For safety-conscious families who want peace of mind, Volvo is the car manufacturer that delivers the safest driving experience because of 90+ years of safety innovation and the most advanced crash-prevention technology.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 3. Brand Pyramid
|
|
84
|
+
|
|
85
|
+
### Structure (bottom to top)
|
|
86
|
+
```
|
|
87
|
+
/\
|
|
88
|
+
/ \ BRAND ESSENCE
|
|
89
|
+
/ \ (2-3 words)
|
|
90
|
+
/──────\
|
|
91
|
+
/ EMOTIONAL\ Emotional benefit
|
|
92
|
+
/ BENEFIT \ (how it makes you feel)
|
|
93
|
+
/──────────────\
|
|
94
|
+
/ FUNCTIONAL \ Functional benefit
|
|
95
|
+
/ BENEFIT \ (what it does for you)
|
|
96
|
+
/────────────────────\
|
|
97
|
+
/ ATTRIBUTES \ Features, facts, proof points
|
|
98
|
+
\────────────────────────/
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Levels
|
|
102
|
+
|
|
103
|
+
**Attributes (base):** Tangible features and facts
|
|
104
|
+
- Product specs, ingredients, processes, certifications
|
|
105
|
+
- "Made with organic ingredients," "24/7 support," "256-bit encryption"
|
|
106
|
+
|
|
107
|
+
**Functional Benefits:** What the attributes do for the user
|
|
108
|
+
- Time saved, money saved, problems solved, tasks simplified
|
|
109
|
+
- "Get meals delivered in 30 minutes," "Manage all accounts in one place"
|
|
110
|
+
|
|
111
|
+
**Emotional Benefits:** How the functional benefits make you feel
|
|
112
|
+
- Confidence, peace of mind, excitement, belonging, pride
|
|
113
|
+
- "Feel in control," "Never worry about security," "Express your creativity"
|
|
114
|
+
|
|
115
|
+
**Brand Essence (peak):** The brand distilled to 2-3 words
|
|
116
|
+
- Must be ownable, memorable, and emotionally resonant
|
|
117
|
+
- Nike: "Authentic Athletic Performance"
|
|
118
|
+
- Disney: "Magical Entertainment"
|
|
119
|
+
- Volvo: "Safety"
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 4. Positioning Map (Perceptual Map)
|
|
124
|
+
|
|
125
|
+
### How to Build
|
|
126
|
+
|
|
127
|
+
**Step 1: Choose 2 strategic axes**
|
|
128
|
+
Pick dimensions that matter to your audience AND where competitors differ:
|
|
129
|
+
- Price ↔ Premium
|
|
130
|
+
- Traditional ↔ Innovative
|
|
131
|
+
- Simple ↔ Complex
|
|
132
|
+
- Mass market ↔ Niche
|
|
133
|
+
- Functional ↔ Emotional
|
|
134
|
+
- Local ↔ Global
|
|
135
|
+
- Serious ↔ Playful
|
|
136
|
+
|
|
137
|
+
**Step 2: Plot competitors**
|
|
138
|
+
Place each competitor on the map based on market perception (not self-image).
|
|
139
|
+
|
|
140
|
+
**Step 3: Identify white space**
|
|
141
|
+
Look for quadrants with few or no competitors — potential positioning opportunities.
|
|
142
|
+
|
|
143
|
+
**Step 4: Validate the white space**
|
|
144
|
+
- Is there demand in this space? (just because no one's there doesn't mean people want it)
|
|
145
|
+
- Can the brand credibly claim this space?
|
|
146
|
+
- Is the space defensible long-term?
|
|
147
|
+
|
|
148
|
+
### Example: Coffee Market
|
|
149
|
+
```
|
|
150
|
+
Premium
|
|
151
|
+
│
|
|
152
|
+
Artisan │ Luxury
|
|
153
|
+
(Blue │ (Nespresso)
|
|
154
|
+
Bottle) │
|
|
155
|
+
│
|
|
156
|
+
Functional──┼──Experiential
|
|
157
|
+
│
|
|
158
|
+
Budget │ Social
|
|
159
|
+
(Folgers)│ (Starbucks)
|
|
160
|
+
│
|
|
161
|
+
Affordable
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Tips
|
|
165
|
+
- Use audience research to validate axis selection
|
|
166
|
+
- Plot based on perception, not reality
|
|
167
|
+
- Update annually — positioning shifts
|
|
168
|
+
- Consider 3D mapping for complex markets (add bubble size for market share)
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 5. Competitive Differentiation Matrix
|
|
173
|
+
|
|
174
|
+
### Template
|
|
175
|
+
|
|
176
|
+
| Dimension | Your Brand | Competitor A | Competitor B | Competitor C |
|
|
177
|
+
|-----------|-----------|-------------|-------------|-------------|
|
|
178
|
+
| Price point | | | | |
|
|
179
|
+
| Core value proposition | | | | |
|
|
180
|
+
| Visual style | | | | |
|
|
181
|
+
| Tone of voice | | | | |
|
|
182
|
+
| Target audience | | | | |
|
|
183
|
+
| Distribution | | | | |
|
|
184
|
+
| Innovation level | | | | |
|
|
185
|
+
| Brand personality | | | | |
|
|
186
|
+
|
|
187
|
+
### Using the Matrix
|
|
188
|
+
1. Fill in honestly (not aspirationally)
|
|
189
|
+
2. Identify where you're the same as everyone (parity — must have but not differentiating)
|
|
190
|
+
3. Identify where you're different (potential differentiators)
|
|
191
|
+
4. Rank differentiators by: relevance to audience + difficulty for competitors to copy
|
|
192
|
+
5. Lead with your top 1-2 true differentiators
|
|
193
|
+
|
|
194
|
+
## Sources
|
|
195
|
+
- Sinek, S. (2009). *Start with Why*. Portfolio.
|
|
196
|
+
- Ries, A. & Trout, J. (2001). *Positioning: The Battle for Your Mind*. McGraw-Hill.
|
|
197
|
+
- Keller, K.L. (2013). *Strategic Brand Management*. Pearson.
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# Aurora / Mesh Gradients
|
|
2
|
+
|
|
3
|
+
> Organic, multi-directional color blends created by layering radial gradients — painterly, atmospheric backgrounds inspired by the northern lights.
|
|
4
|
+
|
|
5
|
+
Last verified: 2026-03-04
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Visual Characteristics
|
|
10
|
+
|
|
11
|
+
- Multiple layered radial gradients creating organic, flowing color
|
|
12
|
+
- Painterly quality that goes beyond simple linear/radial gradients
|
|
13
|
+
- Often combined with subtle grain texture for tactile quality
|
|
14
|
+
- Works best on dark backgrounds (`#0a0a1a` to `#1a1a2e`) where colors pop
|
|
15
|
+
- Slow, breathing animation creates a living, atmospheric feel
|
|
16
|
+
- 3-5 color points at varying opacities produce the most organic results
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## CSS Implementation
|
|
21
|
+
|
|
22
|
+
### Aurora Gradient
|
|
23
|
+
|
|
24
|
+
```css
|
|
25
|
+
.aurora-bg {
|
|
26
|
+
background:
|
|
27
|
+
radial-gradient(ellipse at 20% 50%, rgba(120, 80, 255, 0.4) 0%, transparent 50%),
|
|
28
|
+
radial-gradient(ellipse at 80% 20%, rgba(255, 100, 200, 0.3) 0%, transparent 50%),
|
|
29
|
+
radial-gradient(ellipse at 60% 80%, rgba(80, 200, 255, 0.3) 0%, transparent 50%),
|
|
30
|
+
radial-gradient(ellipse at 40% 30%, rgba(100, 255, 180, 0.2) 0%, transparent 50%);
|
|
31
|
+
background-color: #0a0a1a;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Animated aurora */
|
|
35
|
+
.aurora-animated {
|
|
36
|
+
background-size: 200% 200%;
|
|
37
|
+
animation: aurora-shift 15s ease-in-out infinite alternate;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@keyframes aurora-shift {
|
|
41
|
+
0% { background-position: 0% 50%; }
|
|
42
|
+
50% { background-position: 100% 50%; }
|
|
43
|
+
100% { background-position: 0% 50%; }
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Mesh Gradient (Multi-Point)
|
|
48
|
+
|
|
49
|
+
```css
|
|
50
|
+
.mesh-gradient {
|
|
51
|
+
background:
|
|
52
|
+
radial-gradient(at 0% 0%, #7c3aed 0%, transparent 50%),
|
|
53
|
+
radial-gradient(at 100% 0%, #06b6d4 0%, transparent 50%),
|
|
54
|
+
radial-gradient(at 100% 100%, #f43f5e 0%, transparent 50%),
|
|
55
|
+
radial-gradient(at 0% 100%, #eab308 0%, transparent 50%);
|
|
56
|
+
background-color: #1a1a2e;
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Grain Texture Overlay
|
|
61
|
+
|
|
62
|
+
```css
|
|
63
|
+
.aurora-grain::after {
|
|
64
|
+
content: '';
|
|
65
|
+
position: absolute;
|
|
66
|
+
inset: 0;
|
|
67
|
+
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
|
|
68
|
+
opacity: 0.03;
|
|
69
|
+
mix-blend-mode: overlay;
|
|
70
|
+
pointer-events: none;
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Design Rules
|
|
75
|
+
- Use 3-5 color points for organic feel
|
|
76
|
+
- Keep opacity 0.2-0.4 per layer to avoid muddy blends
|
|
77
|
+
- Grain texture opacity: 0.02-0.05 for subtle tactile quality
|
|
78
|
+
- Animation: slow (10-20s), `ease-in-out`, subtle position shift
|
|
79
|
+
- Dark backgrounds: `#0a0a1a` to `#1a1a2e` for maximum color vibrancy
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Implementation Guide
|
|
84
|
+
|
|
85
|
+
### Step-by-step
|
|
86
|
+
|
|
87
|
+
1. Set a dark base color (`background-color: #0a0a1a`)
|
|
88
|
+
2. Layer 3-5 `radial-gradient` declarations with `ellipse` shape at different positions
|
|
89
|
+
3. Use rgba colors at 0.2-0.4 opacity per gradient layer — too high and colors become muddy
|
|
90
|
+
4. Set each gradient to fade from color to `transparent` at 50%
|
|
91
|
+
5. For animation: set `background-size: 200% 200%` and animate `background-position`
|
|
92
|
+
6. Add grain overlay via `::after` pseudo-element with SVG noise at 0.03 opacity
|
|
93
|
+
7. Ensure the parent has `position: relative` for the grain overlay positioning
|
|
94
|
+
|
|
95
|
+
### Progressive Enhancement
|
|
96
|
+
|
|
97
|
+
```css
|
|
98
|
+
/* Baseline: solid dark background */
|
|
99
|
+
.aurora-bg {
|
|
100
|
+
background-color: #0a0a1a;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* Enhanced: radial gradients (supported everywhere, but expensive) */
|
|
104
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
105
|
+
.aurora-animated {
|
|
106
|
+
background-size: 200% 200%;
|
|
107
|
+
animation: aurora-shift 15s ease-in-out infinite alternate;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* Reduced motion: static gradient, no animation */
|
|
112
|
+
@media (prefers-reduced-motion: reduce) {
|
|
113
|
+
.aurora-animated {
|
|
114
|
+
animation: none;
|
|
115
|
+
background-size: 100% 100%;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Framework Notes
|
|
121
|
+
|
|
122
|
+
#### React + Tailwind CSS
|
|
123
|
+
|
|
124
|
+
```tsx
|
|
125
|
+
export function AuroraBackground({ children }: { children: React.ReactNode }) {
|
|
126
|
+
return (
|
|
127
|
+
<div className="relative min-h-screen bg-[#0a0a1a]">
|
|
128
|
+
{/* Gradient layers */}
|
|
129
|
+
<div className="absolute inset-0 bg-[radial-gradient(ellipse_at_20%_50%,rgba(120,80,255,0.4)_0%,transparent_50%)]" />
|
|
130
|
+
<div className="absolute inset-0 bg-[radial-gradient(ellipse_at_80%_20%,rgba(255,100,200,0.3)_0%,transparent_50%)]" />
|
|
131
|
+
<div className="absolute inset-0 bg-[radial-gradient(ellipse_at_60%_80%,rgba(80,200,255,0.3)_0%,transparent_50%)]" />
|
|
132
|
+
{/* Grain overlay */}
|
|
133
|
+
<div className="absolute inset-0 opacity-[0.03] mix-blend-overlay pointer-events-none" style={{ backgroundImage: 'url(...)' }} />
|
|
134
|
+
<div className="relative z-10">{children}</div>
|
|
135
|
+
</div>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Alternative: use Tailwind's `bg-gradient-*` utilities for simpler linear gradients, but layered radials require arbitrary values `bg-[radial-gradient(...)]`.
|
|
141
|
+
|
|
142
|
+
#### React Native
|
|
143
|
+
|
|
144
|
+
Use `expo-linear-gradient` or `react-native-linear-gradient` for basic gradient backgrounds. True multi-point radial mesh gradients are not natively supported — use `react-native-skia` for custom shader-based aurora effects.
|
|
145
|
+
|
|
146
|
+
#### Vanilla CSS
|
|
147
|
+
|
|
148
|
+
The CSS implementation above is pure vanilla. Use CSS `@property` for smoother gradient animations:
|
|
149
|
+
|
|
150
|
+
```css
|
|
151
|
+
@property --aurora-x {
|
|
152
|
+
syntax: '<percentage>';
|
|
153
|
+
initial-value: 0%;
|
|
154
|
+
inherits: false;
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Common Pitfalls
|
|
159
|
+
|
|
160
|
+
1. **Too many gradient layers**: beyond 5 layers the colors become muddy. Use 3-5 for organic feel.
|
|
161
|
+
2. **High opacity gradients**: above 0.4 opacity per layer causes hard color boundaries instead of blending. Keep at 0.2-0.4.
|
|
162
|
+
3. **Light backgrounds**: aurora gradients lose their vibrancy on light backgrounds. Use dark base colors only.
|
|
163
|
+
4. **Fast animation**: animation speed below 10s feels frantic. Keep at 15-20s for a breathing, natural feel.
|
|
164
|
+
5. **Missing grain**: without subtle grain texture, the gradients look digital/synthetic. Even 0.02 opacity grain adds significant tactile quality.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Examples Gallery
|
|
169
|
+
|
|
170
|
+
| Site | What They Do Well | Screenshot Description |
|
|
171
|
+
|------|-------------------|----------------------|
|
|
172
|
+
| Stripe | Signature mesh gradients on hero sections — smooth, premium, continuously animated | Landing page with flowing purple-blue-pink gradient |
|
|
173
|
+
| Linear | Dark aurora background with gradient borders on glass cards | Homepage with atmospheric gradient behind feature grid |
|
|
174
|
+
| Vercel | Subtle aurora accents behind dark UI — glow effects on borders and highlights | Dashboard with gradient glow accents |
|
|
175
|
+
| Raycast | Aurora-style gradients as app background with glassmorphism overlay panels | Command palette floating over atmospheric gradient |
|
|
176
|
+
| Awwwards — Lusion Lab | Award-winning 3D aurora with WebGL-enhanced gradients and particle effects | Immersive gradient background with interactive depth |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Accessibility
|
|
181
|
+
|
|
182
|
+
- **Text over gradients**: always place text on a semi-opaque surface layer, not directly on the aurora. Use glassmorphism cards or solid overlays.
|
|
183
|
+
- **Contrast**: gradient color variation means contrast ratios change across the viewport. Test at the worst-case position (lightest gradient area).
|
|
184
|
+
- **Reduced motion**: stop animation entirely for `prefers-reduced-motion: reduce` — display static gradient
|
|
185
|
+
- **Color dependence**: don't convey information through gradient color alone — always pair with text or icons
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Performance
|
|
190
|
+
|
|
191
|
+
- **Gradient layers**: each `radial-gradient` layer is composited by the GPU. 3-5 layers are fine; 10+ causes measurable overhead
|
|
192
|
+
- **Animation cost**: `background-position` animation is GPU-accelerated and relatively cheap
|
|
193
|
+
- **Grain overlay**: the SVG noise filter is rendered once and cached — negligible ongoing cost
|
|
194
|
+
- **Optimization**: use `will-change: background-position` on animated aurora elements (but not globally)
|
|
195
|
+
- **Mobile**: reduce to 2-3 gradient layers on mobile for smoother scrolling
|
|
196
|
+
- **Alternative for heavy use**: pre-render the aurora as a static image and use CSS to animate opacity/position of the image layer
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## When to Use / When to Avoid
|
|
201
|
+
|
|
202
|
+
### Use When
|
|
203
|
+
- Hero sections, landing page backgrounds
|
|
204
|
+
- App backgrounds behind glassmorphism cards
|
|
205
|
+
- Brand identity expressing premium, modern aesthetic
|
|
206
|
+
- Dark-mode-first products (developer tools, creative tools)
|
|
207
|
+
|
|
208
|
+
### Avoid When
|
|
209
|
+
- Behind text-heavy content without an overlay surface
|
|
210
|
+
- Data dashboards where the background distracts from data
|
|
211
|
+
- Light-mode-only products — aurora needs dark backgrounds
|
|
212
|
+
- Performance-constrained mobile experiences with heavy UI layers
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Design Tokens
|
|
217
|
+
|
|
218
|
+
```json
|
|
219
|
+
{
|
|
220
|
+
"aurora": {
|
|
221
|
+
"bg-base": "#0a0a1a",
|
|
222
|
+
"bg-alt": "#1a1a2e",
|
|
223
|
+
"color-1": "rgba(120, 80, 255, 0.4)",
|
|
224
|
+
"color-2": "rgba(255, 100, 200, 0.3)",
|
|
225
|
+
"color-3": "rgba(80, 200, 255, 0.3)",
|
|
226
|
+
"color-4": "rgba(100, 255, 180, 0.2)",
|
|
227
|
+
"grain-opacity": "0.03",
|
|
228
|
+
"grain-blend-mode": "overlay",
|
|
229
|
+
"animation-duration": "15s",
|
|
230
|
+
"animation-easing": "ease-in-out",
|
|
231
|
+
"mesh-purple": "#7c3aed",
|
|
232
|
+
"mesh-cyan": "#06b6d4",
|
|
233
|
+
"mesh-rose": "#f43f5e",
|
|
234
|
+
"mesh-amber": "#eab308"
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Related
|
|
242
|
+
|
|
243
|
+
- [Glassmorphism](./glassmorphism.md) — the canonical foreground pairing: frosted glass cards over aurora backgrounds
|
|
244
|
+
- [Liquid Glass](./liquid-glass.md) — advanced foreground with refraction over aurora
|
|
245
|
+
- [Dark Mode OLED](./dark-mode-oled.md) — aurora on true black (#000000) is visually stunning
|