get-shit-pretty 0.7.0 → 0.7.1
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/README.md +13 -28
- package/gsp/agents/gsp-accessibility-auditor.md +1 -60
- package/gsp/agents/gsp-brand-auditor.md +1 -61
- package/gsp/agents/gsp-brand-creative-director.md +10 -0
- package/gsp/agents/gsp-brand-engineer.md +1 -122
- package/gsp/agents/gsp-brand-researcher.md +11 -0
- package/gsp/agents/gsp-brand-strategist.md +1 -65
- package/gsp/agents/gsp-project-builder.md +17 -0
- package/gsp/agents/gsp-project-critic.md +11 -0
- package/gsp/agents/gsp-project-designer.md +11 -0
- package/gsp/agents/gsp-project-researcher.md +1 -74
- package/gsp/agents/gsp-project-reviewer.md +12 -0
- package/gsp/hooks/hooks.json +10 -28
- package/gsp/skills/get-shit-pretty/SKILL.md +2 -5
- package/gsp/skills/gsp-accessibility/SKILL.md +0 -1
- package/gsp/skills/gsp-accessibility-audit/SKILL.md +9 -8
- package/gsp/skills/gsp-accessibility-audit/methodology/gsp-accessibility-auditor.md +59 -0
- package/gsp/skills/gsp-add-reference/SKILL.md +0 -1
- package/gsp/skills/gsp-art/SKILL.md +13 -10
- package/gsp/skills/gsp-brand-audit/SKILL.md +4 -2
- package/gsp/skills/gsp-brand-audit/methodology/gsp-brand-auditor.md +61 -0
- package/gsp/skills/gsp-brand-brief/SKILL.md +129 -0
- package/gsp/skills/gsp-brand-guidelines/SKILL.md +13 -11
- package/gsp/skills/gsp-brand-guidelines/methodology/gsp-brand-engineer.md +122 -0
- package/gsp/skills/gsp-brand-identity/SKILL.md +12 -11
- package/gsp/{agents/gsp-creative-director.md → skills/gsp-brand-identity/methodology/gsp-brand-creative-director.md} +0 -9
- package/gsp/skills/gsp-brand-refine/SKILL.md +0 -1
- package/gsp/skills/gsp-brand-research/SKILL.md +13 -13
- package/gsp/{agents/gsp-researcher.md → skills/gsp-brand-research/methodology/gsp-brand-researcher.md} +0 -10
- package/gsp/skills/gsp-brand-strategy/SKILL.md +14 -14
- package/gsp/skills/gsp-brand-strategy/methodology/gsp-brand-strategist.md +65 -0
- package/gsp/skills/gsp-brand-sync/SKILL.md +60 -10
- package/gsp/skills/gsp-color/SKILL.md +0 -1
- package/gsp/skills/gsp-design-system/SKILL.md +0 -1
- package/gsp/skills/gsp-doctor/SKILL.md +0 -1
- package/gsp/skills/gsp-help/SKILL.md +0 -2
- package/gsp/skills/gsp-icons/SKILL.md +0 -1
- package/gsp/skills/gsp-logo/SKILL.md +0 -1
- package/gsp/skills/gsp-phase-transition/SKILL.md +0 -3
- package/gsp/skills/gsp-pretty/SKILL.md +25 -24
- package/gsp/skills/gsp-progress/SKILL.md +0 -1
- package/gsp/skills/gsp-project-brief/SKILL.md +51 -22
- package/gsp/skills/gsp-project-build/SKILL.md +18 -14
- package/gsp/{agents/gsp-builder.md → skills/gsp-project-build/methodology/gsp-project-builder.md} +0 -16
- package/gsp/skills/gsp-project-critique/SKILL.md +13 -13
- package/gsp/{agents/gsp-critic.md → skills/gsp-project-critique/methodology/gsp-project-critic.md} +0 -11
- package/gsp/skills/gsp-project-design/SKILL.md +9 -6
- package/gsp/{agents/gsp-designer.md → skills/gsp-project-design/methodology/gsp-project-designer.md} +0 -11
- package/gsp/skills/gsp-project-research/SKILL.md +4 -2
- package/gsp/skills/gsp-project-research/methodology/gsp-project-researcher.md +73 -0
- package/gsp/skills/gsp-project-review/SKILL.md +8 -5
- package/gsp/{agents/gsp-reviewer.md → skills/gsp-project-review/methodology/gsp-project-reviewer.md} +0 -12
- package/gsp/skills/gsp-scaffold/SKILL.md +0 -1
- package/gsp/skills/gsp-start/SKILL.md +59 -210
- package/gsp/skills/gsp-style/SKILL.md +1 -2
- package/gsp/skills/gsp-style/styles/academia.md +751 -787
- package/gsp/skills/gsp-style/styles/art-deco.md +316 -352
- package/gsp/skills/gsp-style/styles/bauhaus.md +189 -225
- package/gsp/skills/gsp-style/styles/bold-typography.md +433 -469
- package/gsp/skills/gsp-style/styles/botanical.md +141 -177
- package/gsp/skills/gsp-style/styles/claymorphism.md +377 -413
- package/gsp/skills/gsp-style/styles/cyberpunk.md +419 -455
- package/gsp/skills/gsp-style/styles/enterprise.md +224 -260
- package/gsp/skills/gsp-style/styles/flat-design.md +119 -155
- package/gsp/skills/gsp-style/styles/fluent.md +0 -31
- package/gsp/skills/gsp-style/styles/glassmorphism.md +0 -36
- package/gsp/skills/gsp-style/styles/humanist-literary.md +0 -28
- package/gsp/skills/gsp-style/styles/industrial.md +406 -438
- package/gsp/skills/gsp-style/styles/kinetic.md +531 -563
- package/gsp/skills/gsp-style/styles/liquid-glass.md +0 -36
- package/gsp/skills/gsp-style/styles/luxury.md +402 -438
- package/gsp/skills/gsp-style/styles/material.md +555 -591
- package/gsp/skills/gsp-style/styles/maximalism.md +875 -911
- package/gsp/skills/gsp-style/styles/minimal-dark.md +442 -478
- package/gsp/skills/gsp-style/styles/modern-dark.md +390 -426
- package/gsp/skills/gsp-style/styles/monochrome.md +472 -504
- package/gsp/skills/gsp-style/styles/neubrutalism.md +354 -390
- package/gsp/skills/gsp-style/styles/neumorphism.md +195 -231
- package/gsp/skills/gsp-style/styles/newsprint.md +529 -565
- package/gsp/skills/gsp-style/styles/organic.md +177 -213
- package/gsp/skills/gsp-style/styles/playful-geometric.md +211 -247
- package/gsp/skills/gsp-style/styles/professional.md +503 -539
- package/gsp/skills/gsp-style/styles/retro.md +664 -700
- package/gsp/skills/gsp-style/styles/saas.md +490 -526
- package/gsp/skills/gsp-style/styles/sketch.md +189 -225
- package/gsp/skills/gsp-style/styles/swiss-minimalist.md +195 -227
- package/gsp/skills/gsp-style/styles/terminal.md +99 -135
- package/gsp/skills/gsp-style/styles/vaporwave.md +356 -392
- package/gsp/skills/gsp-style/styles/web3.md +337 -373
- package/gsp/skills/gsp-typography/SKILL.md +0 -1
- package/gsp/skills/gsp-update/SKILL.md +0 -1
- package/gsp/skills/gsp-visuals/SKILL.md +0 -1
- package/gsp/templates/branding/config.json +1 -1
- package/gsp/templates/exports-index.md +0 -7
- package/gsp/templates/projects/config.json +1 -1
- package/gsp/templates/projects/roadmap.md +0 -7
- package/gsp/templates/projects/state.md +0 -4
- package/package.json +1 -1
- package/scripts/lint-check.sh +1 -1
- package/gsp/agents/gsp-ascii-artist.md +0 -66
- package/gsp/agents/gsp-brand-syncer.md +0 -126
- package/gsp/agents/gsp-campaign-director.md +0 -79
- package/gsp/agents/gsp-scoper.md +0 -85
- package/gsp/skills/gsp-launch/SKILL.md +0 -97
- package/gsp/skills/gsp-start/questioning.md +0 -87
- package/gsp/templates/phases/launch.md +0 -55
|
@@ -1,426 +1,390 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
**
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
|
127
|
-
|
|
|
128
|
-
|
|
|
129
|
-
|
|
|
130
|
-
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
-
|
|
226
|
-
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
-
|
|
243
|
-
|
|
244
|
-
**
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
-
|
|
256
|
-
- `
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
**
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
-
|
|
288
|
-
-
|
|
289
|
-
|
|
290
|
-
-
|
|
291
|
-
|
|
292
|
-
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
**
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
**
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
-
|
|
339
|
-
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
- Viewport threshold: `15-20%` visibility
|
|
393
|
-
- Once: true (don't re-animate on scroll back)
|
|
394
|
-
|
|
395
|
-
**Parallax (Hero):**
|
|
396
|
-
|
|
397
|
-
- Opacity: Fades from `1 → 0` over first 50% of scroll
|
|
398
|
-
- Scale: Shrinks from `1 → 0.95`
|
|
399
|
-
- Y position: Moves down `0 → 100px`
|
|
400
|
-
|
|
401
|
-
---
|
|
402
|
-
|
|
403
|
-
## Accessibility Considerations
|
|
404
|
-
|
|
405
|
-
**Contrast:**
|
|
406
|
-
|
|
407
|
-
- Primary text (`#EDEDEF` on `#050506`): ~15:1 ratio ✓
|
|
408
|
-
- Muted text (`#8A8F98` on `#050506`): ~6:1 ratio ✓
|
|
409
|
-
- Accent on dark: Ensure 4.5:1 minimum for interactive elements
|
|
410
|
-
|
|
411
|
-
**Focus States:**
|
|
412
|
-
|
|
413
|
-
- Always visible focus rings using accent color
|
|
414
|
-
- `ring-offset` matches background color
|
|
415
|
-
|
|
416
|
-
**Motion:**
|
|
417
|
-
|
|
418
|
-
- Respect `prefers-reduced-motion`
|
|
419
|
-
- Provide fallbacks for parallax and floating animations
|
|
420
|
-
- Essential interactions should work without animation
|
|
421
|
-
|
|
422
|
-
**Color Independence:**
|
|
423
|
-
|
|
424
|
-
- Don't rely solely on accent color for meaning
|
|
425
|
-
- Use icons, labels, and position to reinforce state
|
|
426
|
-
`</design-system>`
|
|
1
|
+
<design-system>
|
|
2
|
+
# Design Style: Linear / Modern
|
|
3
|
+
|
|
4
|
+
## Design Philosophy
|
|
5
|
+
|
|
6
|
+
**Core Principles:** Precision, depth, and fluidity define this design system. Every surface exists in three-dimensional space, illuminated by soft ambient light sources that breathe and move. The design communicates "premium developer tools"—fast, responsive, and obsessively crafted like Linear, Vercel, or Raycast. Nothing is arbitrary: every shadow has three layers, every gradient transitions through multiple colors, every animation uses refined expo-out easing. The goal is software that feels expensive without feeling ostentatious.
|
|
7
|
+
|
|
8
|
+
**Vibe:** Cinematic meets technical minimalism. Imagine a developer's code editor crossed with a Blade Runner interface—deep near-blacks (#050506, never pure black) punctuated by soft pools of indigo light. The aesthetic is sophisticated but never cold, using warmth from accent glows (#5E6AD2 at varying opacities) to create inviting depth. It should feel like looking through frosted glass into a high-end application running at night. Dark, but not oppressive. Technical, but not sterile. Precise, but not rigid.
|
|
9
|
+
|
|
10
|
+
**Differentiation:** The signature of this style is **layered ambient lighting and interactive depth**. Unlike flat dark modes or simple gradient overlays, this creates genuine atmospheric presence through:
|
|
11
|
+
|
|
12
|
+
1. **Multi-layer background system:** Four stacked gradients + noise texture + grid overlay create depth without any single dominant element
|
|
13
|
+
2. **Animated gradient blobs:** Large (900-1400px), heavily blurred shapes float slowly across the canvas, simulating cinematic lighting pools
|
|
14
|
+
3. **Mouse-tracking spotlights:** Interactive surfaces respond to cursor position with radial gradient glows (300px diameter, 15% opacity)
|
|
15
|
+
4. **Scroll-linked parallax:** Hero content fades, scales, and translates based on scroll position for cinematic depth
|
|
16
|
+
5. **Multi-layer shadows:** Every elevated surface uses 3-4 shadow layers: border highlight + soft diffuse + ambient darkness + optional accent glow
|
|
17
|
+
6. **Precision micro-interactions:** All animations are 200-300ms with expo-out easing. Movements are tiny (4-8px max). Scale changes are subtle (0.98-1.02). Nothing bounces or overshoots.
|
|
18
|
+
|
|
19
|
+
**The "Software Feel":** This design should feel like using a desktop application, not a website. Interactions are instant and precise. Hover states are immediate. Focus rings are prominent. Everything responds to the cursor. The aesthetic borrows from native macOS/Windows design systems—subtle transparency, soft glows, refined typography, obsessive attention to 1px details.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Design Token System (The DNA)
|
|
24
|
+
|
|
25
|
+
### Color Strategy: Deep Space with Ambient Light
|
|
26
|
+
|
|
27
|
+
The palette is built on near-black bases with a single saturated indigo accent. Depth comes from layered translucency and soft light sources, not harsh shadows.
|
|
28
|
+
|
|
29
|
+
| Token | Value | Usage |
|
|
30
|
+
| :---------------------- | :------------------------- | :------------------------------------------------- |
|
|
31
|
+
| `background-deep` | `#020203` | Absolute darkest — footer, deepest layers |
|
|
32
|
+
| `background-base` | `#050506` | Primary page canvas |
|
|
33
|
+
| `background-elevated` | `#0a0a0c` | Elevated surfaces, mock interfaces |
|
|
34
|
+
| `surface` | `rgba(255,255,255,0.05)` | Card backgrounds, containers |
|
|
35
|
+
| `surface-hover` | `rgba(255,255,255,0.08)` | Hovered card state |
|
|
36
|
+
| `foreground` | `#EDEDEF` | Primary text — bright but not pure white |
|
|
37
|
+
| `foreground-muted` | `#8A8F98` | Body text, descriptions, metadata |
|
|
38
|
+
| `foreground-subtle` | `rgba(255,255,255,0.60)` | Tertiary text, placeholders |
|
|
39
|
+
| `accent` | `#5E6AD2` | Primary interactive color — buttons, links, glows |
|
|
40
|
+
| `accent-bright` | `#6872D9` | Hover state for accent |
|
|
41
|
+
| `accent-glow` | `rgba(94,106,210,0.3)` | Glow effects, ambient lighting |
|
|
42
|
+
| `border-default` | `rgba(255,255,255,0.06)` | Subtle hairline borders |
|
|
43
|
+
| `border-hover` | `rgba(255,255,255,0.10)` | Border on hover |
|
|
44
|
+
| `border-accent` | `rgba(94,106,210,0.30)` | Accent-tinted borders for emphasis |
|
|
45
|
+
|
|
46
|
+
### Background System: Layered Ambient Lighting
|
|
47
|
+
|
|
48
|
+
The background is never flat. It's a composition of multiple layers:
|
|
49
|
+
|
|
50
|
+
**Layer 1 — Base Gradient:**
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
bg-[radial-gradient(ellipse_at_top,#0a0a0f_0%,#050506_50%,#020203_100%)]
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
A radial gradient emanating from top-center creates vertical depth.
|
|
57
|
+
|
|
58
|
+
**Layer 2 — Noise Texture:**
|
|
59
|
+
A subtle SVG noise pattern at `opacity: 0.015` adds tactile quality and prevents banding.
|
|
60
|
+
|
|
61
|
+
**Layer 3 — Animated Gradient Blobs:**
|
|
62
|
+
Multiple large, heavily blurred shapes create ambient "light pools":
|
|
63
|
+
|
|
64
|
+
- Primary blob: Top-center, `blur-[150px]`, 900×1400px, accent color at 25% opacity
|
|
65
|
+
- Secondary blob: Left side, `blur-[120px]`, 600×800px, purple/pink mix at 15% opacity
|
|
66
|
+
- Tertiary blob: Right side, `blur-[100px]`, 500×700px, indigo/blue mix at 12% opacity
|
|
67
|
+
- Bottom accent: Lower area, pulsing animation, accent at 10% opacity
|
|
68
|
+
|
|
69
|
+
**Blob Animation:** Blobs float slowly using keyframe animations:
|
|
70
|
+
|
|
71
|
+
```css
|
|
72
|
+
@keyframes float {
|
|
73
|
+
0%, 100% { transform: translateY(0) rotate(0deg); }
|
|
74
|
+
50% { transform: translateY(-20px) rotate(1deg); }
|
|
75
|
+
}
|
|
76
|
+
/* Duration: 8-10s, ease-in-out, infinite */
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Layer 4 — Grid Overlay:**
|
|
80
|
+
A subtle 64px grid pattern at `opacity: 0.02` adds technical precision.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
### Typography System
|
|
85
|
+
|
|
86
|
+
**Font Stack:** `"Inter", "Geist Sans", system-ui, sans-serif`
|
|
87
|
+
|
|
88
|
+
**Type Scale & Weights:**
|
|
89
|
+
|
|
90
|
+
| Level | Size | Weight | Tracking | Usage |
|
|
91
|
+
| :--------- | :--------------------------- | :---------------- | :--------------------- | :--------------------- |
|
|
92
|
+
| Display | `text-7xl` to `text-8xl` | `font-semibold` | `tracking-[-0.03em]` | Hero headlines |
|
|
93
|
+
| H1 | `text-5xl` to `text-6xl` | `font-semibold` | `tracking-tight` | Section headers |
|
|
94
|
+
| H2 | `text-3xl` to `text-4xl` | `font-semibold` | `tracking-tight` | Subsection headers |
|
|
95
|
+
| H3 | `text-xl` to `text-2xl` | `font-semibold` | `tracking-tight` | Card titles |
|
|
96
|
+
| Body Large | `text-lg` to `text-xl` | `font-normal` | default | Lead paragraphs |
|
|
97
|
+
| Body | `text-sm` to `text-base` | `font-normal` | default | Standard content |
|
|
98
|
+
| Label | `text-xs` | `font-mono` | `tracking-widest` | Section tags, metadata |
|
|
99
|
+
|
|
100
|
+
**Gradient Text Treatment:**
|
|
101
|
+
Headlines use gradient fills for dimensionality:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
bg-gradient-to-b from-white via-white/95 to-white/70 bg-clip-text text-transparent
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
For accent emphasis, use animated gradient:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
bg-gradient-to-r from-[#5E6AD2] via-indigo-400 to-[#5E6AD2] bg-clip-text text-transparent
|
|
111
|
+
/* With background-size: 200% and animation for shimmer effect */
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Line Heights:**
|
|
115
|
+
|
|
116
|
+
- Headlines: `leading-tight` or `leading-none`
|
|
117
|
+
- Body text: `leading-relaxed`
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### Radius & Border System
|
|
122
|
+
|
|
123
|
+
| Element | Radius | Border |
|
|
124
|
+
| :--------------- | :--------------------- | :----------------------------- |
|
|
125
|
+
| Large containers | `rounded-2xl` (16px) | `border border-white/[0.06]` |
|
|
126
|
+
| Cards | `rounded-2xl` (16px) | `border border-white/[0.06]` |
|
|
127
|
+
| Buttons | `rounded-lg` (8px) | Inset shadow instead of border |
|
|
128
|
+
| Inputs | `rounded-lg` (8px) | `border border-white/10` |
|
|
129
|
+
| Badges/Pills | `rounded-full` | `border border-accent/30` |
|
|
130
|
+
| Icons containers | `rounded-xl` (12px) | `border border-white/10` |
|
|
131
|
+
|
|
132
|
+
**Border Gradients on Hover:**
|
|
133
|
+
Cards can have animated gradient borders that fade in on hover:
|
|
134
|
+
|
|
135
|
+
```css
|
|
136
|
+
background: linear-gradient(to bottom, rgba(94,106,210,0.3), transparent);
|
|
137
|
+
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
138
|
+
mask-composite: exclude;
|
|
139
|
+
padding: 1px;
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
### Shadow & Glow System
|
|
145
|
+
|
|
146
|
+
**Multi-Layer Shadow Formula:**
|
|
147
|
+
Shadows combine multiple layers for realistic depth:
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
/* Card default */
|
|
151
|
+
shadow-[0_0_0_1px_rgba(255,255,255,0.06),0_2px_20px_rgba(0,0,0,0.4),0_0_40px_rgba(0,0,0,0.2)]
|
|
152
|
+
|
|
153
|
+
/* Card hover */
|
|
154
|
+
shadow-[0_0_0_1px_rgba(255,255,255,0.1),0_8px_40px_rgba(0,0,0,0.5),0_0_80px_rgba(94,106,210,0.1)]
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Accent Glow for CTAs:**
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
shadow-[0_0_0_1px_rgba(94,106,210,0.5),0_4px_12px_rgba(94,106,210,0.3),inset_0_1px_0_0_rgba(255,255,255,0.2)]
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Inner Highlight:**
|
|
164
|
+
Buttons and elevated surfaces get a subtle top edge highlight:
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
shadow-[inset_0_1px_0_0_rgba(255,255,255,0.1)]
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Component Styling Principles
|
|
173
|
+
|
|
174
|
+
### Buttons
|
|
175
|
+
|
|
176
|
+
**Primary Button:**
|
|
177
|
+
|
|
178
|
+
- Background: Solid accent color (`bg-[#5E6AD2]`)
|
|
179
|
+
- Text: White
|
|
180
|
+
- Shadow: Multi-layer with accent glow
|
|
181
|
+
- Hover: Slightly brighter (`bg-[#6872D9]`), increased glow
|
|
182
|
+
- Active: `scale-[0.98]`, reduced shadow
|
|
183
|
+
- Shine effect: Pseudo-element gradient sweep on hover
|
|
184
|
+
|
|
185
|
+
**Secondary Button:**
|
|
186
|
+
|
|
187
|
+
- Background: `bg-white/[0.05]`
|
|
188
|
+
- Text: `text-[#EDEDEF]`
|
|
189
|
+
- Border: Inset shadow only
|
|
190
|
+
- Hover: `bg-white/[0.08]`, subtle outer glow
|
|
191
|
+
|
|
192
|
+
**Ghost Button:**
|
|
193
|
+
|
|
194
|
+
- Background: Transparent
|
|
195
|
+
- Text: Muted foreground
|
|
196
|
+
- Hover: `bg-white/[0.05]`, text brightens
|
|
197
|
+
|
|
198
|
+
### Cards & Containers
|
|
199
|
+
|
|
200
|
+
**Base Card:**
|
|
201
|
+
|
|
202
|
+
- Background: `bg-gradient-to-b from-white/[0.08] to-white/[0.02]`
|
|
203
|
+
- Border: 1px at 6% white opacity
|
|
204
|
+
- Radius: `rounded-2xl`
|
|
205
|
+
- Inner glow line: 1px gradient at top edge
|
|
206
|
+
- Mouse-tracking spotlight effect (optional)
|
|
207
|
+
|
|
208
|
+
**Spotlight Effect:**
|
|
209
|
+
Cards track mouse position and render a radial gradient that follows the cursor:
|
|
210
|
+
|
|
211
|
+
```jsx
|
|
212
|
+
// Radial gradient, 300px diameter, accent color at 15% opacity
|
|
213
|
+
// Positioned at mouse coordinates relative to card
|
|
214
|
+
// Opacity transitions on hover
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Card Variants:**
|
|
218
|
+
|
|
219
|
+
- `default`: Standard glass effect
|
|
220
|
+
- `glass`: More translucent with backdrop blur
|
|
221
|
+
- `gradient`: Subtle accent gradient overlay
|
|
222
|
+
|
|
223
|
+
### Form Inputs
|
|
224
|
+
|
|
225
|
+
- Background: `bg-[#0F0F12]`
|
|
226
|
+
- Border: `border-white/10`
|
|
227
|
+
- Focus: `border-[#5E6AD2]` with accent glow ring
|
|
228
|
+
- Text: `text-gray-100`
|
|
229
|
+
- Placeholder: `text-gray-500`
|
|
230
|
+
|
|
231
|
+
### Interactive States
|
|
232
|
+
|
|
233
|
+
**Hover Principles:**
|
|
234
|
+
|
|
235
|
+
- Movement is minimal: `y: -4px` to `y: -8px` maximum
|
|
236
|
+
- Duration: `200-300ms`
|
|
237
|
+
- Easing: `[0.16, 1, 0.3, 1]` (expo out)
|
|
238
|
+
- Changes: Border brightens, glow increases, subtle scale
|
|
239
|
+
|
|
240
|
+
**Focus States:**
|
|
241
|
+
|
|
242
|
+
- Ring: `ring-2 ring-[#5E6AD2]/50 ring-offset-2 ring-offset-[#050506]`
|
|
243
|
+
|
|
244
|
+
**Active States:**
|
|
245
|
+
|
|
246
|
+
- Scale: `scale-[0.98]`
|
|
247
|
+
- Shadow: Reduced depth
|
|
248
|
+
|
|
249
|
+
**Mobile Menu:**
|
|
250
|
+
|
|
251
|
+
- Toggle button appears on screens < 768px
|
|
252
|
+
- Animated dropdown with `opacity` and `y` transform (0.2s duration)
|
|
253
|
+
- Semi-transparent backdrop: `bg-[#050506]/95` with `backdrop-blur-xl`
|
|
254
|
+
- Vertical navigation links with hover states
|
|
255
|
+
- Full-width CTA button at bottom
|
|
256
|
+
- Menu icon transitions between hamburger (`Menu`) and close (`X`) icons
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Layout Principles
|
|
261
|
+
|
|
262
|
+
### Spacing Scale
|
|
263
|
+
|
|
264
|
+
Base unit: 4px. Use Tailwind's default scale consistently.
|
|
265
|
+
|
|
266
|
+
| Context | Spacing |
|
|
267
|
+
| :------------------ | :------------------------------------ |
|
|
268
|
+
| Section padding | `py-24` to `py-32` |
|
|
269
|
+
| Container max-width | `container` with responsive padding |
|
|
270
|
+
| Card padding | `p-6` to `p-8` |
|
|
271
|
+
| Element gaps | `gap-4` to `gap-8` |
|
|
272
|
+
| Between sections | `py-32` (128px) |
|
|
273
|
+
|
|
274
|
+
### Grid Philosophy
|
|
275
|
+
|
|
276
|
+
**Asymmetric Bento Grids:**
|
|
277
|
+
Feature grids should NOT be uniform. Use varying spans:
|
|
278
|
+
|
|
279
|
+
- 6-column base grid on desktop
|
|
280
|
+
- Mix of `col-span-2`, `col-span-3`, `col-span-4`
|
|
281
|
+
- Variable row heights with `auto-rows-[180px]` as baseline
|
|
282
|
+
- One "hero" card spanning 4 columns and 2 rows
|
|
283
|
+
|
|
284
|
+
**Responsive Breakpoints:**
|
|
285
|
+
|
|
286
|
+
- Mobile (`< 768px`): Single column, stacked layout with reduced padding
|
|
287
|
+
- Tablet (`md: 768px`): 2-3 columns, intermediate grid layouts
|
|
288
|
+
- Desktop (`lg: 1024px+`): Full grid expression with asymmetric layouts
|
|
289
|
+
|
|
290
|
+
**Mobile-Specific Adjustments:**
|
|
291
|
+
|
|
292
|
+
- Section padding scales: `py-16` (mobile) → `py-24` (tablet) → `py-32` (desktop)
|
|
293
|
+
- Hero typography: `text-4xl` (mobile) → `text-5xl` (tablet) → `text-7xl`/`text-8xl` (desktop)
|
|
294
|
+
- Body text: `text-base` (mobile) → `text-lg` (tablet) → `text-xl` (desktop)
|
|
295
|
+
- Navigation: Hamburger menu with animated slide-down panel on mobile (`Menu`/`X` icons), inline links on desktop
|
|
296
|
+
- Cards: Full-width on mobile, grid on desktop
|
|
297
|
+
- Bento grids: Single column mobile, full asymmetric layout desktop
|
|
298
|
+
|
|
299
|
+
### Section Flow
|
|
300
|
+
|
|
301
|
+
- Sections separated by subtle `border-t border-white/[0.06]`
|
|
302
|
+
- Gradient line accents: `bg-gradient-to-r from-transparent via-white/10 to-transparent`
|
|
303
|
+
- Occasional overlapping sections using negative margins
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## The "Bold Factor" (Signature Elements)
|
|
308
|
+
|
|
309
|
+
These elements MUST be present for authenticity:
|
|
310
|
+
|
|
311
|
+
1. **Animated Ambient Blobs:** Multiple layered, floating gradient shapes create cinematic lighting. Without these, the design becomes flat and generic.
|
|
312
|
+
2. **Mouse-Tracking Spotlights:** Interactive surfaces respond to cursor position with soft radial glow effects. This creates the "magical" interaction feel.
|
|
313
|
+
3. **Gradient Typography:** Headlines use vertical gradients (white to semi-transparent) and accent gradients with animation for key phrases.
|
|
314
|
+
4. **Multi-Layer Shadows:** Never single shadows. Always combine: border highlight + soft diffuse shadow + optional accent glow.
|
|
315
|
+
5. **Parallax/Scroll Effects:** Hero content fades and scales on scroll. Elements reveal with staggered animations. This adds cinematic depth.
|
|
316
|
+
6. **Precision Micro-Interactions:** All animations are quick (200-300ms), use expo-out easing, and movements are tiny (4-8px). Never bouncy or exaggerated.
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Anti-Patterns (What to Avoid)
|
|
321
|
+
|
|
322
|
+
1. **Flat backgrounds:** Never use a single solid color. Always layer gradients, noise, and ambient light.
|
|
323
|
+
2. **Pure black (`#000000`):** Use near-blacks like `#050506` or `#020203` for softer appearance.
|
|
324
|
+
3. **Pure white text:** Use `#EDEDEF` or similar off-white to reduce harshness.
|
|
325
|
+
4. **Large hover movements:** Keep transforms under 8px. This isn't playful—it's precise.
|
|
326
|
+
5. **Uniform grids:** Bento layouts should have variety in card sizes. Avoid same-size-everything.
|
|
327
|
+
6. **Harsh borders:** Borders should be nearly invisible (`6-10%` white opacity), not prominent.
|
|
328
|
+
7. **Colorful accent overuse:** The accent color is for highlights and interaction, not decoration. Most of the UI is monochromatic.
|
|
329
|
+
8. **Bouncy animations:** Use expo-out easing, not spring physics. Movements should be swift and decisive.
|
|
330
|
+
9. **Missing glow effects:** Accent buttons without glow look incomplete. The soft light emission is part of the language.
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## Animation & Motion
|
|
335
|
+
|
|
336
|
+
**Timing:**
|
|
337
|
+
|
|
338
|
+
- Quick interactions: `200ms`
|
|
339
|
+
- Standard transitions: `300ms`
|
|
340
|
+
- Entrance animations: `600ms`
|
|
341
|
+
- Background blob float: `8000-10000ms`
|
|
342
|
+
|
|
343
|
+
**Easing:**
|
|
344
|
+
|
|
345
|
+
- Primary: `[0.16, 1, 0.3, 1]` (expo-out)
|
|
346
|
+
- Hover: `ease-out`
|
|
347
|
+
|
|
348
|
+
**Entrance Patterns:**
|
|
349
|
+
|
|
350
|
+
- Fade up: `opacity: 0 → 1`, `y: 24px → 0`
|
|
351
|
+
- Scale in: `opacity: 0 → 1`, `scale: 0.95 → 1`
|
|
352
|
+
- Stagger children: `0.08s` delay between items
|
|
353
|
+
|
|
354
|
+
**Scroll-Triggered:**
|
|
355
|
+
|
|
356
|
+
- Viewport threshold: `15-20%` visibility
|
|
357
|
+
- Once: true (don't re-animate on scroll back)
|
|
358
|
+
|
|
359
|
+
**Parallax (Hero):**
|
|
360
|
+
|
|
361
|
+
- Opacity: Fades from `1 → 0` over first 50% of scroll
|
|
362
|
+
- Scale: Shrinks from `1 → 0.95`
|
|
363
|
+
- Y position: Moves down `0 → 100px`
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## Accessibility Considerations
|
|
368
|
+
|
|
369
|
+
**Contrast:**
|
|
370
|
+
|
|
371
|
+
- Primary text (`#EDEDEF` on `#050506`): ~15:1 ratio ✓
|
|
372
|
+
- Muted text (`#8A8F98` on `#050506`): ~6:1 ratio ✓
|
|
373
|
+
- Accent on dark: Ensure 4.5:1 minimum for interactive elements
|
|
374
|
+
|
|
375
|
+
**Focus States:**
|
|
376
|
+
|
|
377
|
+
- Always visible focus rings using accent color
|
|
378
|
+
- `ring-offset` matches background color
|
|
379
|
+
|
|
380
|
+
**Motion:**
|
|
381
|
+
|
|
382
|
+
- Respect `prefers-reduced-motion`
|
|
383
|
+
- Provide fallbacks for parallax and floating animations
|
|
384
|
+
- Essential interactions should work without animation
|
|
385
|
+
|
|
386
|
+
**Color Independence:**
|
|
387
|
+
|
|
388
|
+
- Don't rely solely on accent color for meaning
|
|
389
|
+
- Use icons, labels, and position to reinforce state
|
|
390
|
+
`</design-system>`
|